{"version":3,"sources":["webpack:///./node_modules/moment/moment-exposed.js","webpack:///./src/core/router/router-helper.provider.ts","webpack:///./node_modules/tslib/tslib.es6.js","webpack:///./src/core/services/filter-util.js","webpack:///./node_modules/core-js/internals/export.js","webpack:///./src/core/data-utils.js","webpack:///./node_modules/@herbjoy/apex-api-models/dist/index.js","webpack:///./node_modules/core-js/internals/fails.js","webpack:///./node_modules/core-js/internals/global.js","webpack:///./node_modules/core-js/internals/is-object.js","webpack:///./node_modules/core-js/internals/descriptors.js","webpack:///./node_modules/core-js/internals/well-known-symbol.js","webpack:///./node_modules/@sentry/utils/esm/is.js","webpack:///./node_modules/core-js/internals/to-object.js","webpack:///./src/core/services/data-services/icd-office.service.ts","webpack:///./src/core/enum/site-module.ts","webpack:///./src/apex-main-app/leads/policy/marker-icons.js","webpack:///./src/core/feature-flags/feature-flag-options.js","webpack:///./node_modules/core-js/internals/to-length.js","webpack:///./src/core/services/data-services/leads.service.ts","webpack:///./node_modules/@sentry/utils/esm/misc.js","webpack:///./node_modules/core-js/internals/object-define-property.js","webpack:///./src/core/enum/job-status.js","webpack:///./node_modules/core-js/internals/has.js","webpack:///./node_modules/core-js/internals/array-method-uses-to-length.js","webpack:///./node_modules/core-js/internals/to-indexed-object.js","webpack:///./node_modules/@sentry/utils/esm/object.js","webpack:///./node_modules/core-js/internals/object-get-own-property-descriptor.js","webpack:///./node_modules/core-js/internals/an-object.js","webpack:///./node_modules/core-js/internals/path.js","webpack:///./node_modules/core-js/internals/a-function.js","webpack:///./node_modules/lodash/_root.js","webpack:///./node_modules/@herbjoy/sheet-hotkeys/dist/index.js","webpack:///./node_modules/core-js/internals/create-non-enumerable-property.js","webpack:///./node_modules/core-js/internals/redefine.js","webpack:///./src/core/services/data-services/division.service.ts","webpack:///./src/core/services/data-services/icd-corporation.service.ts","webpack:///./src/env/debug.config.js","webpack:///./src/env/environment.module.ts","webpack:///./src/core/interceptors/apex-auth.interceptor.ts","webpack:///./src/core/interceptors/apex-warning.interceptor.ts","webpack:///./src/core/interceptors/x-http-method-override.interceptor.ts","webpack:///./src/core/blocks/parse-dates.helper.js","webpack:///./src/core/interceptors/retry-503.interceptor.ts","webpack:///./src/core/blocks/http-provider.config.ts","webpack:///./node_modules/@sentry/utils/esm/logger.js","webpack:///./node_modules/@sentry/utils/esm/syncpromise.js","webpack:///./node_modules/@sentry/hub/esm/scope.js","webpack:///./node_modules/@sentry/hub/esm/hub.js","webpack:///./node_modules/@sentry/apm/esm/spanstatus.js","webpack:///./node_modules/@sentry/apm/esm/span.js","webpack:///./node_modules/@sentry/apm/esm/transaction.js","webpack:///./node_modules/@sentry/apm/esm/hubextensions.js","webpack:///./node_modules/@sentry/apm/esm/integrations/express.js","webpack:///./node_modules/@sentry/types/esm/severity.js","webpack:///./node_modules/@sentry/utils/esm/supports.js","webpack:///./node_modules/@sentry/utils/esm/instrument.js","webpack:///./node_modules/@sentry/apm/esm/integrations/tracing.js","webpack:///./node_modules/@sentry/integrations/esm/captureconsole.js","webpack:///./src/core/sentry/sentry-integration.ts","webpack:///./src/core/blocks/sentry.config.ts","webpack:///./src/core/feature-flags/feature-manager.service.ts","webpack:///./src/core/feature-flags/feature-flags.module.ts","webpack:///./src/core/sentry/sentry-exception-handler.decorator.ts","webpack:///./src/core/sentry/sentry-hub.provider.ts","webpack:///./src/core/sentry/sentry-log.decorator.ts","webpack:///./src/core/sentry/sentry.module.ts","webpack:///./src/core/services/api-client.service.ts","webpack:///./src/core/services/data-services/bank-account.service.ts","webpack:///./src/core/services/data-services/data-service.module.ts","webpack:///./src/core/services/data-services/permission-grant.service.ts","webpack:///./src/core/services/instance-db.service.ts","webpack:///./src/core/services/payroll-manual-calculation.service.js","webpack:///./src/core/services/utility.service.ts","webpack:///./src/core/core.module.ts","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/core-js/internals/classof-raw.js","webpack:///./node_modules/core-js/internals/require-object-coercible.js","webpack:///./node_modules/core-js/internals/to-primitive.js","webpack:///./node_modules/core-js/internals/is-pure.js","webpack:///./node_modules/core-js/internals/array-method-is-strict.js","webpack:///./node_modules/lodash/isObject.js","webpack:///./node_modules/core-js/internals/to-integer.js","webpack:///./node_modules/core-js/internals/array-iteration.js","webpack:///./node_modules/core-js/internals/add-to-unscopables.js","webpack:///./node_modules/lodash/cloneDeep.js","webpack:///./src/core/interceptors/http-interceptor.factory.ts","webpack:///./src/core/services/password-validator.service.js","webpack:///./src/common/components/color/color-utils.js","webpack:///./node_modules/core-js/internals/get-built-in.js","webpack:///./node_modules/core-js/internals/is-array.js","webpack:///./node_modules/core-js/internals/set-to-string-tag.js","webpack:///./node_modules/core-js/internals/function-bind-context.js","webpack:///./node_modules/core-js/internals/create-property.js","webpack:///./node_modules/lodash/_getNative.js","webpack:///./node_modules/ng-file-upload/index.js","webpack:///./node_modules/lodash/debounce.js","webpack:///./node_modules/@sentry/utils/esm/string.js","webpack:///./src/core/router/transition-errors.js","webpack:///./node_modules/core-js/internals/internal-state.js","webpack:///./node_modules/core-js/internals/object-create.js","webpack:///./node_modules/lodash/isArray.js","webpack:///./node_modules/lodash/isObjectLike.js","webpack:///./src/core/services/data-services/rotations.service.ts","webpack:///./src/core/cache/template-cache.module.ts","webpack:///./src/core/services/data-services/payroll.service.ts","webpack:///./src/core/interceptors/apex-api-response.interceptor.ts","webpack:///./src/core/router/hard-reload.service.ts","webpack:///./src/core/router/routing.config.ts","webpack:///./src/core/router/router.module.ts","webpack:///./src/core/enum/compliance-report-output-format.ts","webpack:///./src/core/services/job-tracker.service.js","webpack:///./node_modules/core-js/internals/create-property-descriptor.js","webpack:///./node_modules/core-js/internals/indexed-object.js","webpack:///./node_modules/core-js/internals/hidden-keys.js","webpack:///./node_modules/core-js/internals/to-absolute-index.js","webpack:///./node_modules/core-js/internals/object-keys.js","webpack:///./node_modules/core-js/internals/array-species-create.js","webpack:///./node_modules/core-js/internals/internal-metadata.js","webpack:///./node_modules/core-js/internals/iterate.js","webpack:///./node_modules/core-js/internals/iterators.js","webpack:///./node_modules/core-js/internals/object-get-prototype-of.js","webpack:///./node_modules/core-js/internals/array-method-has-species-support.js","webpack:///./node_modules/core-js/internals/entry-unbind.js","webpack:///(webpack)/buildin/module.js","webpack:///./node_modules/lodash/_baseGetTag.js","webpack:///./node_modules/core-js/internals/object-property-is-enumerable.js","webpack:///./node_modules/core-js/internals/shared-key.js","webpack:///./node_modules/core-js/internals/uid.js","webpack:///./node_modules/core-js/internals/object-get-own-property-names.js","webpack:///./node_modules/core-js/internals/is-forced.js","webpack:///./node_modules/core-js/internals/freezing.js","webpack:///./node_modules/core-js/modules/es.object.to-string.js","webpack:///./node_modules/core-js/internals/object-prototype-accessors-forced.js","webpack:///./node_modules/core-js/modules/es.string.iterator.js","webpack:///./node_modules/core-js/internals/string-trim.js","webpack:///./node_modules/core-js/internals/whitespaces.js","webpack:///./node_modules/core-js/modules/web.dom-collections.iterator.js","webpack:///./node_modules/lodash/isSymbol.js","webpack:///./node_modules/lodash/_Symbol.js","webpack:///./node_modules/lodash/_nativeCreate.js","webpack:///./node_modules/lodash/_ListCache.js","webpack:///./node_modules/lodash/_assocIndexOf.js","webpack:///./node_modules/lodash/_getMapData.js","webpack:///./node_modules/lodash/_copyObject.js","webpack:///./node_modules/oclazyload/dist/ocLazyLoad.js","webpack:///./src/core/services/bank-account-creation-policy.service.ts","webpack:///./src/core/services/data-services/audit-log.service.js","webpack:///./src/core/services/data-services/auditor.service.js","webpack:///./src/core/services/data-services/commission-policy.service.js","webpack:///./src/core/services/data-services/dashboard.service.js","webpack:///./src/core/services/data-services/employee.service.js","webpack:///./src/core/services/data-services/employment-processing.service.js","webpack:///./src/core/services/data-services/event-host.service.js","webpack:///./src/core/services/data-services/home.service.js","webpack:///./src/core/services/data-services/hub.service.js","webpack:///./src/core/services/data-services/icd-commissions.service.js","webpack:///./src/core/services/data-services/icd-corporation-report.service.ts","webpack:///./src/core/services/data-services/lead-batch.service.ts","webpack:///./src/core/services/data-services/lead-office-team.service.js","webpack:///./src/core/services/data-services/leads-policy.service.ts","webpack:///./src/core/services/data-services/legal-notice.service.js","webpack:///./src/core/services/data-services/message.service.js","webpack:///./src/core/services/data-services/multi-play-commission-policy.service.js","webpack:///./src/core/services/data-services/national-consultant.service.ts","webpack:///./src/core/services/data-services/navigation.service.ts","webpack:///./src/core/services/data-services/onboarding-application.service.ts","webpack:///./src/core/services/data-services/onboarding-division.service.js","webpack:///./src/core/services/data-services/onboarding-policy.service.js","webpack:///./src/core/services/data-services/onboarding-status.service.ts","webpack:///./src/core/services/data-services/pay-stub.service.js","webpack:///./src/core/services/data-services/payout-policy.service.js","webpack:///./src/core/services/data-services/payroll-dashboard.service.js","webpack:///./src/core/services/data-services/payroll-entry.service.js","webpack:///./src/core/services/data-services/payroll-financials.service.js","webpack:///./src/core/services/data-services/payroll-invoice-policy.service.js","webpack:///./src/core/services/data-services/payroll-invoice.service.ts","webpack:///./src/core/services/data-services/posted-payout.service.js","webpack:///./src/core/services/data-services/product-commission-policy.service.js","webpack:///./src/core/services/data-services/product-line.service.js","webpack:///./src/core/services/data-services/product-order-adjustment.service.js","webpack:///./src/core/services/data-services/product.service.js","webpack:///./src/core/services/data-services/program.service.js","webpack:///./src/core/services/data-services/promoting-owner.service.ts","webpack:///./src/core/services/data-services/regional-consultant.service.ts","webpack:///./src/core/services/data-services/retailer.service.js","webpack:///./src/core/services/data-services/rogers-dashboard.service.js","webpack:///./src/core/services/data-services/rogers-leads-statistics.service.js","webpack:///./src/core/services/data-services/rogers-payout-report.service.js","webpack:///./src/core/services/data-services/role.service.js","webpack:///./src/core/services/data-services/rs-payout-transfers.service.js","webpack:///./src/core/services/data-services/rs-schedule.service.js","webpack:///./src/core/services/data-services/schedule-event-time-slot.service.js","webpack:///./src/core/services/data-services/schedule-event.service.ts","webpack:///./src/core/services/data-services/site-feature.service.ts","webpack:///./src/core/services/data-services/site-module.service.ts","webpack:///./src/core/services/data-services/state-province.service.ts","webpack:///./src/core/services/data-services/team.service.ts","webpack:///./src/core/services/data-services/time-card.service.js","webpack:///./src/core/services/data-services/time-entry-compliance.service.js","webpack:///./src/core/services/data-services/time-entry.service.ts","webpack:///./src/core/services/data-services/wage-policy.service.js","webpack:///./src/core/services/data-services/work-order-manual-claim.service.js","webpack:///./src/core/services/data-services/work-order.service.js","webpack:///./src/core/services/file.service.js","webpack:///./src/core/services/lead-batch-job-tracker.service.js","webpack:///./src/core/services/locale.service.ts","webpack:///./src/core/services/report-job-tracker.service.ts","webpack:///./src/core/services/session-v1.service.ts","webpack:///./src/core/services/time-zone-detector.service.js","webpack:///./src/core/enum/compliance-report.ts","webpack:///./src/core/services/data-services/report-job.service.ts","webpack:///./vendor/WinxnetCommon/Winxnet.Utility.js","webpack:///./src/core/services/data-services/adp-config.service.ts","webpack:///./src/core/router/app-update-transitions.ts","webpack:///./src/apex-main-app/blocks/auth-guard.config.js","webpack:///./src/common/components/activity-stepper/activity-stepper.component.js","webpack:///./src/common/components/address/address-snippet.component.js","webpack:///./src/common/components/address/AddressController.js","webpack:///./src/common/components/checkbox-list/CheckboxList.js","webpack:///./src/common/components/checkbox-list/checkbox-list.component.js","webpack:///./src/common/components/loading-spinner/loading-spinner.component.js","webpack:///./src/common/components/loading-spinner/loading-spinner.js","webpack:///./src/common/components/transclude.component.js","webpack:///./src/common/components/collapsible-sidebar/collapsible-sidebar-shell.component.js","webpack:///./src/common/components/collapsible-sidebar/collapsible-sidebar.module.ts","webpack:///./src/common/components/color/android-hue-preview.component.js","webpack:///./src/common/components/color/color.module.ts","webpack:///./src/common/components/color/color-preview.component.js","webpack:///./src/common/components/components.module.ts","webpack:///./src/flex-table/flex-table.js","webpack:///./src/flex-table/util.js","webpack:///./src/flex-table/extensions/carousel-scrolling.js","webpack:///./src/flex-table/extensions/excel-hotkeys.js","webpack:///./src/flex-table/extensions/fixed-header.js","webpack:///./src/flex-table/extensions/frozen-columns.js","webpack:///./src/common/directives/flex-table/flex-table.directive.js","webpack:///./src/common/directives/flex-table/flex-cell-model.directive.js","webpack:///./src/common/directives/flex-table/flex-table.module.ts","webpack:///./src/common/directives/flex-table/flex-select-cell.directive.js","webpack:///./src/common/directives/locale.directive.js","webpack:///./src/common/directives/masked-secret.directive.js","webpack:///./src/common/directives/partial-src.directive.js","webpack:///./src/common/directives/standby-input.directive.js","webpack:///./src/common/directives/state-preserve-focus.directive.js","webpack:///./src/common/directives/sticky.js","webpack:///./src/common/directives/directives.module.ts","webpack:///./src/common/directives/drag-drop/drag-drop-container.directive.js","webpack:///./src/common/directives/drag-drop/drag-drop-payload.directive.js","webpack:///./src/common/directives/file-model.directive.js","webpack:///./src/common/directives/indeterminate-checkbox.directive.js","webpack:///./src/common/directives/isolate-form.directive.js","webpack:///./src/common/directives/no-dirty-check.directive.js","webpack:///./src/common/directives/trix-wysiwyg.directive.js","webpack:///./src/common/directives/virtual-limit.directive.js","webpack:///./src/common/filters/locale-translate.filter.js","webpack:///./src/common/common.module.ts","webpack:///./src/common/filters/capitalize.filter.js","webpack:///./src/common/filters/join.filter.js","webpack:///./src/common/filters/paginate.filter.js","webpack:///./src/common/filters/permission-grant.filter.ts","webpack:///./src/common/filters/props-filter.filter.js","webpack:///./src/common/filters/start-from.filter.js","webpack:///./src/common/filters/table-column.filter.js","webpack:///./node_modules/lodash/set.js","webpack:///./node_modules/process/browser.js","webpack:///./node_modules/core-js/internals/document-create-element.js","webpack:///./node_modules/core-js/internals/set-global.js","webpack:///./node_modules/core-js/internals/inspect-source.js","webpack:///./node_modules/core-js/internals/shared.js","webpack:///./node_modules/core-js/internals/array-includes.js","webpack:///./node_modules/core-js/internals/enum-bug-keys.js","webpack:///./node_modules/core-js/internals/object-get-own-property-symbols.js","webpack:///./node_modules/core-js/internals/native-symbol.js","webpack:///./node_modules/core-js/internals/to-string-tag-support.js","webpack:///./node_modules/core-js/internals/object-set-prototype-of.js","webpack:///./node_modules/core-js/internals/define-iterator.js","webpack:///./node_modules/core-js/internals/check-correctness-of-iteration.js","webpack:///./node_modules/core-js/internals/engine-v8-version.js","webpack:///./node_modules/core-js/internals/set-species.js","webpack:///./node_modules/core-js/internals/an-instance.js","webpack:///./node_modules/core-js/internals/new-promise-capability.js","webpack:///./node_modules/core-js/internals/not-a-regexp.js","webpack:///./node_modules/core-js/internals/correct-is-regexp-logic.js","webpack:///./node_modules/lodash/_Map.js","webpack:///./node_modules/lodash/_assignValue.js","webpack:///./node_modules/lodash/keys.js","webpack:///./node_modules/lodash/_baseUnary.js","webpack:///./node_modules/lodash/_nodeUtil.js","webpack:///./node_modules/lodash/_isPrototype.js","webpack:///./node_modules/lodash/keysIn.js","webpack:///./node_modules/lodash/_getSymbols.js","webpack:///./node_modules/lodash/_getTag.js","webpack:///./node_modules/lodash/_cloneArrayBuffer.js","webpack:///./node_modules/@herbjoy/sheet-hotkeys/dist/browser/table-dom-traversal.js","webpack:///./node_modules/lodash/get.js","webpack:///./node_modules/lodash/throttle.js","webpack:///./src/polyfills.ts","webpack:///./node_modules/core-js/internals/ie8-dom-define.js","webpack:///./node_modules/core-js/internals/shared-store.js","webpack:///./node_modules/core-js/internals/own-keys.js","webpack:///./node_modules/core-js/internals/object-keys-internal.js","webpack:///./node_modules/core-js/internals/use-symbol-as-uid.js","webpack:///./node_modules/core-js/internals/object-define-properties.js","webpack:///./node_modules/core-js/internals/html.js","webpack:///./node_modules/core-js/internals/object-get-own-property-names-external.js","webpack:///./node_modules/core-js/internals/well-known-symbol-wrapped.js","webpack:///./node_modules/core-js/internals/object-to-array.js","webpack:///./node_modules/core-js/internals/is-array-iterator-method.js","webpack:///./node_modules/core-js/internals/get-iterator-method.js","webpack:///./node_modules/core-js/internals/classof.js","webpack:///./node_modules/core-js/internals/call-with-safe-iteration-closing.js","webpack:///./node_modules/core-js/internals/correct-prototype-getter.js","webpack:///./node_modules/core-js/internals/iterators-core.js","webpack:///./node_modules/core-js/internals/engine-user-agent.js","webpack:///./node_modules/core-js/internals/flatten-into-array.js","webpack:///./node_modules/core-js/internals/array-for-each.js","webpack:///./node_modules/core-js/modules/es.array.iterator.js","webpack:///./node_modules/core-js/internals/array-reduce.js","webpack:///./node_modules/core-js/internals/inherit-if-required.js","webpack:///./node_modules/core-js/internals/is-integer.js","webpack:///./node_modules/core-js/internals/this-number-value.js","webpack:///./node_modules/core-js/internals/string-repeat.js","webpack:///./node_modules/core-js/internals/dom-iterables.js","webpack:///./node_modules/core-js/internals/native-promise-constructor.js","webpack:///./node_modules/core-js/internals/redefine-all.js","webpack:///./node_modules/core-js/internals/species-constructor.js","webpack:///./node_modules/core-js/internals/task.js","webpack:///./node_modules/core-js/internals/engine-is-ios.js","webpack:///./node_modules/core-js/internals/promise-resolve.js","webpack:///./node_modules/core-js/internals/perform.js","webpack:///./node_modules/core-js/internals/collection.js","webpack:///./node_modules/core-js/internals/collection-strong.js","webpack:///./node_modules/expose-loader/dist/runtime/getGlobalThis.js","webpack:///./node_modules/angular-moment/angular-moment.js","webpack:///./vendor/WinxnetCommon/Winxnet.Directives.js","webpack:///./node_modules/lodash/_castPath.js","webpack:///./node_modules/lodash/_freeGlobal.js","webpack:///./node_modules/lodash/_MapCache.js","webpack:///./node_modules/lodash/isFunction.js","webpack:///./node_modules/lodash/_toSource.js","webpack:///./node_modules/lodash/eq.js","webpack:///./node_modules/lodash/_toKey.js","webpack:///./node_modules/lodash/_baseAssignValue.js","webpack:///./node_modules/lodash/_isIndex.js","webpack:///./node_modules/lodash/_arrayLikeKeys.js","webpack:///./node_modules/lodash/isBuffer.js","webpack:///./node_modules/lodash/isLength.js","webpack:///./node_modules/lodash/_overArg.js","webpack:///./node_modules/lodash/isArrayLike.js","webpack:///./node_modules/lodash/stubArray.js","webpack:///./node_modules/lodash/_getSymbolsIn.js","webpack:///./node_modules/lodash/_arrayPush.js","webpack:///./node_modules/lodash/_getPrototype.js","webpack:///./node_modules/lodash/_baseGetAllKeys.js","webpack:///./node_modules/@herbjoy/sheet-hotkeys/dist/virtual-worksheet.js","webpack:///./node_modules/@herbjoy/sheet-hotkeys/dist/workspace/selection.js","webpack:///./node_modules/@sentry/utils/esm/memo.js","webpack:///./src/common/components/activity-stepper/activity-stepper-template.html","webpack:///./src/common/components/address/address-snippet.html","webpack:///./src/common/components/checkbox-list/checkbox-list.html","webpack:///./src/common/components/loading-spinner/loading-spinner.html","webpack:///./src/common/components/collapsible-sidebar/collapsible-sidebar-shell.html","webpack:///./node_modules/core-js/es/object/index.js","webpack:///./node_modules/core-js/modules/es.symbol.js","webpack:///./node_modules/core-js/internals/native-weak-map.js","webpack:///./node_modules/core-js/internals/copy-constructor-properties.js","webpack:///./node_modules/core-js/internals/define-well-known-symbol.js","webpack:///./node_modules/core-js/modules/es.object.assign.js","webpack:///./node_modules/core-js/internals/object-assign.js","webpack:///./node_modules/core-js/modules/es.object.create.js","webpack:///./node_modules/core-js/modules/es.object.define-property.js","webpack:///./node_modules/core-js/modules/es.object.define-properties.js","webpack:///./node_modules/core-js/modules/es.object.entries.js","webpack:///./node_modules/core-js/modules/es.object.freeze.js","webpack:///./node_modules/core-js/modules/es.object.from-entries.js","webpack:///./node_modules/core-js/modules/es.object.get-own-property-descriptor.js","webpack:///./node_modules/core-js/modules/es.object.get-own-property-descriptors.js","webpack:///./node_modules/core-js/modules/es.object.get-own-property-names.js","webpack:///./node_modules/core-js/modules/es.object.get-prototype-of.js","webpack:///./node_modules/core-js/modules/es.object.is.js","webpack:///./node_modules/core-js/internals/same-value.js","webpack:///./node_modules/core-js/modules/es.object.is-extensible.js","webpack:///./node_modules/core-js/modules/es.object.is-frozen.js","webpack:///./node_modules/core-js/modules/es.object.is-sealed.js","webpack:///./node_modules/core-js/modules/es.object.keys.js","webpack:///./node_modules/core-js/modules/es.object.prevent-extensions.js","webpack:///./node_modules/core-js/modules/es.object.seal.js","webpack:///./node_modules/core-js/modules/es.object.set-prototype-of.js","webpack:///./node_modules/core-js/internals/a-possible-prototype.js","webpack:///./node_modules/core-js/modules/es.object.values.js","webpack:///./node_modules/core-js/internals/object-to-string.js","webpack:///./node_modules/core-js/modules/es.object.define-getter.js","webpack:///./node_modules/core-js/modules/es.object.define-setter.js","webpack:///./node_modules/core-js/modules/es.object.lookup-getter.js","webpack:///./node_modules/core-js/modules/es.object.lookup-setter.js","webpack:///./node_modules/core-js/modules/es.math.to-string-tag.js","webpack:///./node_modules/core-js/modules/es.json.to-string-tag.js","webpack:///./node_modules/core-js/es/array/index.js","webpack:///./node_modules/core-js/internals/string-multibyte.js","webpack:///./node_modules/core-js/internals/create-iterator-constructor.js","webpack:///./node_modules/core-js/modules/es.array.from.js","webpack:///./node_modules/core-js/internals/array-from.js","webpack:///./node_modules/core-js/modules/es.array.is-array.js","webpack:///./node_modules/core-js/modules/es.array.of.js","webpack:///./node_modules/core-js/modules/es.array.concat.js","webpack:///./node_modules/core-js/modules/es.array.copy-within.js","webpack:///./node_modules/core-js/internals/array-copy-within.js","webpack:///./node_modules/core-js/modules/es.array.every.js","webpack:///./node_modules/core-js/modules/es.array.fill.js","webpack:///./node_modules/core-js/internals/array-fill.js","webpack:///./node_modules/core-js/modules/es.array.filter.js","webpack:///./node_modules/core-js/modules/es.array.find.js","webpack:///./node_modules/core-js/modules/es.array.find-index.js","webpack:///./node_modules/core-js/modules/es.array.flat.js","webpack:///./node_modules/core-js/modules/es.array.flat-map.js","webpack:///./node_modules/core-js/modules/es.array.for-each.js","webpack:///./node_modules/core-js/modules/es.array.includes.js","webpack:///./node_modules/core-js/modules/es.array.index-of.js","webpack:///./node_modules/core-js/modules/es.array.join.js","webpack:///./node_modules/core-js/modules/es.array.last-index-of.js","webpack:///./node_modules/core-js/internals/array-last-index-of.js","webpack:///./node_modules/core-js/modules/es.array.map.js","webpack:///./node_modules/core-js/modules/es.array.reduce.js","webpack:///./node_modules/core-js/modules/es.array.reduce-right.js","webpack:///./node_modules/core-js/modules/es.array.reverse.js","webpack:///./node_modules/core-js/modules/es.array.slice.js","webpack:///./node_modules/core-js/modules/es.array.some.js","webpack:///./node_modules/core-js/modules/es.array.sort.js","webpack:///./node_modules/core-js/modules/es.array.species.js","webpack:///./node_modules/core-js/modules/es.array.splice.js","webpack:///./node_modules/core-js/modules/es.array.unscopables.flat.js","webpack:///./node_modules/core-js/modules/es.array.unscopables.flat-map.js","webpack:///./node_modules/core-js/es/number/index.js","webpack:///./node_modules/core-js/modules/es.number.constructor.js","webpack:///./node_modules/core-js/modules/es.number.epsilon.js","webpack:///./node_modules/core-js/modules/es.number.is-finite.js","webpack:///./node_modules/core-js/internals/number-is-finite.js","webpack:///./node_modules/core-js/modules/es.number.is-integer.js","webpack:///./node_modules/core-js/modules/es.number.is-nan.js","webpack:///./node_modules/core-js/modules/es.number.is-safe-integer.js","webpack:///./node_modules/core-js/modules/es.number.max-safe-integer.js","webpack:///./node_modules/core-js/modules/es.number.min-safe-integer.js","webpack:///./node_modules/core-js/modules/es.number.parse-float.js","webpack:///./node_modules/core-js/internals/number-parse-float.js","webpack:///./node_modules/core-js/modules/es.number.parse-int.js","webpack:///./node_modules/core-js/internals/number-parse-int.js","webpack:///./node_modules/core-js/modules/es.number.to-fixed.js","webpack:///./node_modules/core-js/modules/es.number.to-precision.js","webpack:///./node_modules/core-js/es/date/index.js","webpack:///./node_modules/core-js/modules/es.date.now.js","webpack:///./node_modules/core-js/modules/es.date.to-json.js","webpack:///./node_modules/core-js/modules/es.date.to-iso-string.js","webpack:///./node_modules/core-js/internals/date-to-iso-string.js","webpack:///./node_modules/core-js/internals/string-pad.js","webpack:///./node_modules/core-js/modules/es.date.to-string.js","webpack:///./node_modules/core-js/modules/es.date.to-primitive.js","webpack:///./node_modules/core-js/internals/date-to-primitive.js","webpack:///./node_modules/core-js/es/promise/index.js","webpack:///./node_modules/core-js/modules/es.promise.js","webpack:///./node_modules/core-js/internals/microtask.js","webpack:///./node_modules/core-js/internals/host-report-errors.js","webpack:///./node_modules/core-js/modules/es.promise.all-settled.js","webpack:///./node_modules/core-js/modules/es.promise.finally.js","webpack:///./node_modules/core-js/es/map/index.js","webpack:///./node_modules/core-js/modules/es.map.js","webpack:///./node_modules/core-js/es/set/index.js","webpack:///./node_modules/core-js/modules/es.set.js","webpack:///./node_modules/core-js/es/function/name.js","webpack:///./node_modules/core-js/modules/es.function.name.js","webpack:///./node_modules/core-js/es/function/bind.js","webpack:///./node_modules/core-js/modules/es.function.bind.js","webpack:///./node_modules/core-js/internals/function-bind.js","webpack:///./node_modules/core-js/es/string/includes.js","webpack:///./node_modules/core-js/modules/es.string.includes.js","webpack:///./node_modules/core-js/internals/is-regexp.js","webpack:///./node_modules/core-js/es/string/starts-with.js","webpack:///./node_modules/core-js/modules/es.string.starts-with.js","webpack:///./node_modules/core-js/es/string/ends-with.js","webpack:///./node_modules/core-js/modules/es.string.ends-with.js","webpack:///./node_modules/core-js/es/string/trim.js","webpack:///./node_modules/core-js/modules/es.string.trim.js","webpack:///./node_modules/core-js/internals/string-trim-forced.js","webpack:///./node_modules/core-js/es/math/trunc.js","webpack:///./node_modules/core-js/modules/es.math.trunc.js","webpack:///./node_modules/core-js/web/dom-collections.js","webpack:///./node_modules/core-js/modules/web.dom-collections.for-each.js","webpack:///./node_modules/moment/moment.js","webpack:///./node_modules/ng-file-upload/dist/ng-file-upload-all.js","webpack:///(webpack)/buildin/harmony-module.js","webpack:///./node_modules/lodash/_baseGet.js","webpack:///./node_modules/lodash/_isKey.js","webpack:///./node_modules/lodash/_getRawTag.js","webpack:///./node_modules/lodash/_objectToString.js","webpack:///./node_modules/lodash/_stringToPath.js","webpack:///./node_modules/lodash/_memoizeCapped.js","webpack:///./node_modules/lodash/memoize.js","webpack:///./node_modules/lodash/_mapCacheClear.js","webpack:///./node_modules/lodash/_Hash.js","webpack:///./node_modules/lodash/_hashClear.js","webpack:///./node_modules/lodash/_baseIsNative.js","webpack:///./node_modules/lodash/_isMasked.js","webpack:///./node_modules/lodash/_coreJsData.js","webpack:///./node_modules/lodash/_getValue.js","webpack:///./node_modules/lodash/_hashDelete.js","webpack:///./node_modules/lodash/_hashGet.js","webpack:///./node_modules/lodash/_hashHas.js","webpack:///./node_modules/lodash/_hashSet.js","webpack:///./node_modules/lodash/_listCacheClear.js","webpack:///./node_modules/lodash/_listCacheDelete.js","webpack:///./node_modules/lodash/_listCacheGet.js","webpack:///./node_modules/lodash/_listCacheHas.js","webpack:///./node_modules/lodash/_listCacheSet.js","webpack:///./node_modules/lodash/_mapCacheDelete.js","webpack:///./node_modules/lodash/_isKeyable.js","webpack:///./node_modules/lodash/_mapCacheGet.js","webpack:///./node_modules/lodash/_mapCacheHas.js","webpack:///./node_modules/lodash/_mapCacheSet.js","webpack:///./node_modules/lodash/toString.js","webpack:///./node_modules/lodash/_baseToString.js","webpack:///./node_modules/lodash/_arrayMap.js","webpack:///./node_modules/lodash/_baseSet.js","webpack:///./node_modules/lodash/_defineProperty.js","webpack:///./node_modules/@herbjoy/apex-api-models/dist/generated/models.js","webpack:///./node_modules/@herbjoy/apex-api-models/dist/paging.js","webpack:///./node_modules/lodash/_baseClone.js","webpack:///./node_modules/lodash/_Stack.js","webpack:///./node_modules/lodash/_stackClear.js","webpack:///./node_modules/lodash/_stackDelete.js","webpack:///./node_modules/lodash/_stackGet.js","webpack:///./node_modules/lodash/_stackHas.js","webpack:///./node_modules/lodash/_stackSet.js","webpack:///./node_modules/lodash/_arrayEach.js","webpack:///./node_modules/lodash/_baseAssign.js","webpack:///./node_modules/lodash/_baseTimes.js","webpack:///./node_modules/lodash/isArguments.js","webpack:///./node_modules/lodash/_baseIsArguments.js","webpack:///./node_modules/lodash/stubFalse.js","webpack:///./node_modules/lodash/isTypedArray.js","webpack:///./node_modules/lodash/_baseIsTypedArray.js","webpack:///./node_modules/lodash/_baseKeys.js","webpack:///./node_modules/lodash/_nativeKeys.js","webpack:///./node_modules/lodash/_baseAssignIn.js","webpack:///./node_modules/lodash/_baseKeysIn.js","webpack:///./node_modules/lodash/_nativeKeysIn.js","webpack:///./node_modules/lodash/_cloneBuffer.js","webpack:///./node_modules/lodash/_copyArray.js","webpack:///./node_modules/lodash/_copySymbols.js","webpack:///./node_modules/lodash/_arrayFilter.js","webpack:///./node_modules/lodash/_copySymbolsIn.js","webpack:///./node_modules/lodash/_getAllKeys.js","webpack:///./node_modules/lodash/_getAllKeysIn.js","webpack:///./node_modules/lodash/_DataView.js","webpack:///./node_modules/lodash/_Promise.js","webpack:///./node_modules/lodash/_Set.js","webpack:///./node_modules/lodash/_WeakMap.js","webpack:///./node_modules/lodash/_initCloneArray.js","webpack:///./node_modules/lodash/_initCloneByTag.js","webpack:///./node_modules/lodash/_Uint8Array.js","webpack:///./node_modules/lodash/_cloneDataView.js","webpack:///./node_modules/lodash/_cloneRegExp.js","webpack:///./node_modules/lodash/_cloneSymbol.js","webpack:///./node_modules/lodash/_cloneTypedArray.js","webpack:///./node_modules/lodash/_initCloneObject.js","webpack:///./node_modules/lodash/_baseCreate.js","webpack:///./node_modules/lodash/isMap.js","webpack:///./node_modules/lodash/_baseIsMap.js","webpack:///./node_modules/lodash/isSet.js","webpack:///./node_modules/lodash/_baseIsSet.js","webpack:///./node_modules/moment-timezone/index.js","webpack:///./node_modules/moment-timezone/moment-timezone.js","webpack:///./node_modules/lodash/now.js","webpack:///./node_modules/lodash/toNumber.js","webpack:///./node_modules/@herbjoy/sheet-hotkeys/dist/sheet-hotkeys.js","webpack:///./node_modules/@herbjoy/sheet-hotkeys/dist/browser/keyboard-events.js","webpack:///./node_modules/@herbjoy/sheet-hotkeys/dist/clipboard/clipboard-reducers.js","webpack:///./node_modules/@herbjoy/sheet-hotkeys/dist/clipboard/clipboard-events.js","webpack:///./node_modules/@herbjoy/sheet-hotkeys/dist/workspace/selection-events.js","webpack:///./node_modules/@herbjoy/sheet-hotkeys/dist/workspace/workspace-reducers.js","webpack:///./node_modules/@herbjoy/sheet-hotkeys/dist/standby-input.js"],"names":["___EXPOSE_LOADER_IMPORT___","___EXPOSE_LOADER_GLOBAL_THIS___","module","exports","RouterHelperProvider","$stateProvider","$urlRouterProvider","$state","this","hasOtherwise","configureStates","states","otherwisePath","forEach","state","config","otherwise","getStates","get","routerHelper","addChildExtensions","childBase","parents","map","name","lazyLoad","modulePromiseFn","$transition$","$ocLazyLoad","injector","then","mod","load","rerun","lazyLoadModule","lazyChild","url","redirectTo","resolveFromParam","paramName","res","params","$inject","extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__extends","__","constructor","prototype","create","__assign","assign","t","s","i","n","arguments","length","call","apply","__rest","e","indexOf","getOwnPropertySymbols","propertyIsEnumerable","__values","o","m","Symbol","iterator","next","value","done","__read","r","ar","push","error","__spread","concat","containsInvariant","wholeString","instance","toLowerCase","allContainsInvariant","obj","filters","fields","comparer","reduce","all","field","allFilter","global","getOwnPropertyDescriptor","f","createNonEnumerableProperty","redefine","setGlobal","copyConstructorProperties","isForced","options","source","target","key","targetProperty","sourceProperty","descriptor","TARGET","GLOBAL","STATIC","stat","noTargetGet","forced","undefined","sham","getExceptionMessage","ex","prop","transform","identity","getInnerExceptionMessage","messages","join","status","pattern","message","evalInChildScope","scope","args","evalString","$new","$eval","readNumber","Number","toString","replace","isNumeric","strippedNumeric","convertedNumeric","parseFloat","test","isNaN","isFinite","dropStackFrames","stack","frames","split","topIndex","findIndex","newTopIndex","Math","min","slice","InnerException","ExceptionMessage","Message","__createBinding","k","k2","defineProperty","enumerable","__exportStar","exec","it","check","globalThis","window","self","Function","fails","shared","has","uid","NATIVE_SYMBOL","USE_SYMBOL_AS_UID","WellKnownSymbolsStore","createWellKnownSymbol","withoutSetter","isError","wat","isInstanceOf","Error","isString","isPrimitive","isPlainObject","isEvent","Event","isElement","Element","isRegExp","isThenable","Boolean","isSyntheticEvent","base","_e","requireObjectCoercible","argument","IcdOfficeService","$http","apexApiUrl","meridianOfficeID","data","method","headers","Accept","response","query","icdOfficeID","office","lastDate","request","sortIcdOfficeByOwner","a","OwnerName","IcdCorporationName","OfficeName","SiteModuleEnum","ApplicationAdministration","TimeEntry","Roster","Payroll","RsScheduling","ShowLocations","SalesTeams","Users","Commission","Reports","Auditing","Invoicing","Financials","Onboarding","Leads","ProgramAdministration","Payout","RogersReports","EventsCoordination","EventsScheduling","markerIcons","DefaultPin","ColoredPin","TwoTonedCircle","markerIconsEnum","defaultPin","text","description","coloredPin","twoTonedCircle","getMarkerIcon","markerIconEnum","FeatureFlagOptions","enabled","disabled","optIn","optOut","noPref","toInteger","StatusTypeEnum","LeadsService","statusTypeEnum","hydrateLeadMarkerList","leads","lead","mapLeadSnapshotVM","leadID","leadCreateRequest","leadCreateRequests","leadPatchRequest","TerritoriesLeadsCount","TerritoriesLeadsCounts","divisionID","keys","DivisionEnum","Rogers","label","employeeID","leadMarkerList","currentStatus","LeadStatuses","find","LeadStatusID","declaredStatus","DeclaredStatusID","LeadStatusName","Name","Color","Hue","DeclarationStatusID","DeclarationStatusName","DeclarationStatusColor","DeclarationStatusHue","LeadID","AssignedOwners","AssignedReps","LeadActivity","LeadActivityHistory","LeadGroupID","CurrentStatus","DeclarationStatus","Latitude","Longitude","isNodeEnv","process","fallbackGlobalObject","getGlobalObject","uuid4","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","random","consoleSandbox","callback","originalConsole","console","wrappedLevels","level","__sentry_original__","result","htmlTreeAsString","elem","currentElem","out","height","len","sepLength","nextStr","_htmlElementAsString","parentNode","reverse","_oO","el","className","classes","attr","tagName","id","allowedAttrs","getAttribute","INITIAL_TIME","Date","now","prevNow","performanceFallback","timeOrigin","crossPlatformPerformance","require","performance","_","timing","navigationStart","timestampWithMs","getFunctionName","fn","DESCRIPTORS","IE8_DOM_DEFINE","anObject","toPrimitive","nativeDefineProperty","O","P","Attributes","TypeError","jobStatuses","jobStatusNames","JobStatus","jobStatus","Queued","Processing","Failed","Succeeded","cache","thrower","METHOD_NAME","ACCESSORS","argument0","argument1","IndexedObject","fill","replacement","original","wrapped","defineProperties","_Oo","dropUndefinedKeys","val","e_1","_a","rv","_b","_c","e_1_1","return","isArray","propertyIsEnumerableModule","createPropertyDescriptor","toIndexedObject","nativeGetOwnPropertyDescriptor","isObject","String","freeGlobal","freeSelf","root","sheet_hotkeys_1","attachToTable","detachFromTable","table_dom_traversal_1","TableDomTraverser","virtual_worksheet_1","VirtualWorksheet","standby_input_1","StandbyInput","StandbyInputMode","definePropertyModule","object","inspectSource","InternalStateModule","getInternalState","enforceInternalState","enforce","TEMPLATE","unsafe","simple","RoadShow","Dtv","DivisionService","retrieveDivision","divisionProfileID","IcdCorporationStatus","IcdCorporationService","icdOfficeService","pageIndex","moduleName","icdCorporationID","moduleID","icdOffices","moduleAdminID","retrieveIcdOffices","responseType","results","log","icdCorporation","sortIcdCorporationByOwner","Owner","ClientName","sortIcdCorporationByAccess","q","Access","CanUpdate","configureDebug","$compileProvider","apexDebugInfoEnabled","debugInfoEnabled","EnvironmentModule","angular","unauthorizedStatus","statusName","ApexAuthInterceptor","$log","$q","$injector","disableApexAuthInterceptor","resolve","apiClientService","sessionService","isAuthorized","retrieveAccessToken","token","Authorization","info","signOut","rejection","originalAuth","auth","payload","claims","JSON","parse","atob","warn","retryWithNewerToken","apexAuthInterceptorFactory","HttpInterceptorFactory","ApexWarningInterceptor","includes","warning","apexWarningInterceptorFactory","cacheKey","XHttpMethodOverrideInterceptor","svc","methods","cached","localStorage","getItem","canUseMethod","reject","XMLHttpRequest","addEventListener","success","open","send","GET","POST","setItem","stringify","activate","toUpperCase","regexIso8601","convertDateStringsToDates","input","match","momentDate","parseDateString","toDate","__moment","dateString","moment","isValid","milliseconds","RetryServiceUnavailableInterceptor","retryConfig","tryCount","maxRetries","$timeout","retryServiceUnavailableInterceptorFactory","configureHttpProvider","$httpProvider","defaults","withCredentials","common","transformResponse","interceptors","apexApiResponseInterceptorFactory","PREFIX","Logger","_enabled","disable","enable","_i","__SENTRY__","States","logger","SyncPromise","executor","_this","_state","PENDING","_handlers","_resolve","_setResult","RESOLVED","_reject","reason","REJECTED","is","_value","_executeHandlers","_attachHandler","handler","cachedHandlers","onfulfilled","onrejected","collection","counter","resolvedCollection","item","index","catch","finally","onfinally","isRejected","Scope","_notifyingListeners","_scopeListeners","_eventProcessors","_breadcrumbs","_user","_tags","_extra","_contexts","clone","newScope","_level","_span","_transactionName","_fingerprint","addScopeListener","addEventProcessor","setUser","user","_notifyScopeListeners","setTags","tags","setTag","setExtras","extras","setExtra","extra","setFingerprint","fingerprint","setLevel","setTransactionName","setTransaction","setContext","context","setSpan","span","getSpan","getTransaction","spanRecorder","spans","update","captureContext","updatedScope","contexts","clear","addBreadcrumb","breadcrumb","maxBreadcrumbs","mergedBreadcrumb","timestamp","clearBreadcrumbs","applyToEvent","event","hint","transaction","trace","getTraceContext","_applyFingerprint","breadcrumbs","_notifyEventProcessors","getGlobalEventProcessors","processors","processor","final","setTimeout","globalEventProcessors","Hub","client","_version","_stack","bindClient","isOlderThan","version","getStackTop","setupIntegrations","pushScope","getStack","parentScope","getClient","popScope","pop","withScope","getScope","captureException","exception","eventId","_lastEventId","finalHint","syntheticException","originalException","_invokeClient","event_id","captureMessage","captureEvent","lastEventId","top","getOptions","beforeBreadcrumb","finalBreadcrumb","configureScope","run","oldHub","makeMain","getIntegration","integration","startSpan","_callExtensionMethod","startTransaction","traceHeaders","carrier","getMainCarrier","sentry","extensions","hub","registry","getHubFromCarrier","setHubOnCarrier","hasHubOnCarrier","activeDomain","active","registryHubTopStack","getHubFromActiveDomain","SpanStatus","fromHttpCode","httpStatus","Ok","Unauthenticated","PermissionDenied","NotFound","AlreadyExists","FailedPrecondition","ResourceExhausted","InvalidArgument","Unimplemented","Unavailable","DeadlineExceeded","InternalError","UnknownError","TRACEPARENT_REGEXP","RegExp","Span","spanContext","traceId","spanId","substring","startTimestamp","parentSpanId","sampled","op","endTimestamp","fromTraceparent","traceparent","matches","child","startChild","add","setData","setStatus","setHttpStatus","spanStatus","isSuccess","finish","toTraceparent","sampledString","parent_span_id","span_id","trace_id","toJSON","start_timestamp","SpanRecorder","maxlen","_maxlen","_super","Transaction","transactionContext","_hub","_trimEnd","trimEnd","setName","initSpanRecorder","finishedSpans","filter","prev","current","type","sampleRate","tracesSampleRate","experimentsOptions","_experiments","maxSpans","parentSpan","Severity","Express","_app","app","setupOnce","originalAppUse","use","wrapUseArgs","wrap","arity","_req","__sentry_transaction","span_1","once","req","err","from","arg","fromString","Debug","Info","Warning","Fatal","Critical","Log","supportsFetch","Headers","Request","Response","isNativeFetch","func","supportsNativeFetch","fetch","doc","document","createElement","sandbox","hidden","head","appendChild","contentWindow","removeChild","lastHref","handlers","instrumented","instrument","originalConsoleLevel","triggerHandlers","instrumentConsole","domEventHandler","bind","keypressEventHandler","proto","eventName","handleEvent","innerOriginal","__sentry_wrapped__","instrumentDOM","xhrproto","originalOpen","xhr","__sentry_xhr__","__sentry_own_request__","onreadystatechangeHandler","readyState","status_code","onreadystatechange","readyStateArgs","originalSend","instrumentXHR","originalFetch","commonHandlerData","fetchData","getFetchMethod","getFetchUrl","instrumentFetch","chrome","isChromePackagedApp","runtime","hasHistoryApi","history","pushState","replaceState","oldOnPopState","onpopstate","historyReplacementFunction","originalHistoryFunction","to","location","href","instrumentHistory","_oldOnErrorHandler","onerror","msg","line","column","_oldOnUnhandledRejectionHandler","onunhandledrejection","addInstrumentationHandler","fetchArgs","keypressTimeout","lastCapturedEvent","debounceTimer","debounce","clearTimeout","isContentEditable","defaultTracingOrigins","Tracing","_options","_emitOptionsWarning","mark","_trackLCP","beforeNavigate","pathname","debug","spanDebugTimingInfo","writeAsBreadcrumbs","idleTimeout","markBackgroundTransactions","maxTransactionDuration","shouldCreateSpanForRequest","tracingOrigins","some","origin","startTransactionOnLocationChange","startTransactionOnPageLoad","traceFetch","traceXHR","_activeTransaction","pushActivity","activeTransaction","_log","_getCurrentHub","_activities","_currentIndex","autoPopAfter","index_1","popActivity","autoPop","spanData","activity","_addSpanDebugInfo","count","timeout","end_1","finishIdleTransaction","getActivitySpan","setTransactionStatus","startIdleTransaction","_getNewTransaction","toISOString","_addPerformanceEntries","Cancelled","keepSpan","_resetActiveTransaction","header","_getMeta","metaName","querySelector","_pingHeartbeat","_heartbeatTimer","_beat","heartbeatString","_prevHeartbeatString","_heartbeatCounter","category","transactionSpan","getEntries","_forceLCP","_lcp","LCP","entryScriptSrc","entryScriptStartEndTime","tracingInitMarkStartTime","_msToSec","scripts","dataset","entry","src","_performanceCursor","startTime","duration","entryType","addPerformanceNavigationTiming","parent","_startChild","responseEnd","requestStart","responseStart","addRequest","resourceName","initiatorType","resource","max","firstHiddenTime_1","visibilityState","Infinity","timeStamp","updateLCP_1","elementId","size","elementSize","po_1","PerformanceObserver","entryList","observe","buffered","takeRecords","time","debugData","addGlobalEventProcessor","getCurrentHub","_setupXHRTracing","_setupFetchTracing","_setupHistory","_setupErrorHandling","_setupBackgroundTabDetection","isOutdatedTransaction","maxTransactionDurationExceeded","historyCallback","fetchCallback","xhrCallback","errorCallback","handlerData","__sentry_xhr_activity_id__","setRequestHeader","__activity","append","ctx","CaptureConsole","_levels","levels","AngularSentryIntegration","sentryLogHubProvider","sentryExceptionHandlerHubProvider","$get","ignoreErrors","configureSentry","sentryOptions","Sentry","integrations","ApmIntegrations","attachStacktrace","configureSentryUser","employeeService","apexIsAuthenticated","retrieveIdentity","EmployeeID","FeatureManager","siteFeatureService","instanceDb","feature","option","getFeatureFlagOption","saveBetaParticipation","getBetaParticipation","featurePrefs","featurePref","set","_saveLocalPreferences","isSync","featuresLoaded","_loadServerFeatures","localPrefs","sessionStorage","retrieveFeatures","features","_mergePrefs","getFeatureFlagOptionApi","payroll","remotePrefs","featureFlag","remoteValue","localValue","FeatureFlagsModule","service","logError","angularPattern","sentryExceptionHandlerDecorator","$delegate","cause","notifySentryHubError","handled","values","mechanism","angularDocs","substr","HttpResponseError","statusText","SentryHubProvider","pristineConsole","HandledError","sentryLogDecorator","methodMap","originals","notifySentryIfException","shouldCallDelegate","SentryModule","provider","decorator","ApiClientService","apexClientOptions","isValidToken","cachedToken","deferredToken","clientId","clientSecret","accessToken","exp","nbf","iat","diff","BankAccountService","accountID","formData","FormData","DepositAmount","DepositAmountTypeID","VoidCheck","AdpDirectDeposit","createDirectDepositRequestFormData","transformRequest","DataServiceModule","ngFileUpload","TemplateCacheModule","AdpConfigService","factory","AuditLogService","AuditorService","CommissionPolicyService","DashboardService","EmployeeService","EmploymentProcessingService","EventHostService","HubService","IcdCommissionsService","IcdCorporationReportService","HomeService","LeadsPolicyService","LeadBatchServiceFactory","LeadOfficeTeamService","LegalNoticeService","MessageService","MultiPlayCommissionPolicyService","NationalConsultantService","NavigationService","OnboardingApplicationService","OnboardingDivisionService","OnboardingPolicyService","OnboardingStatusService","PayStubService","PayrollService","PayrollDashboardService","PayrollEntryService","PayrollFinancialsService","PayrollInvoiceService","PayrollInvoicePolicyService","PayoutPolicyService","PostedPayoutService","ProductService","ProductCommissionPolicyService","ProductLineService","ProductOrderAdjustmentService","ProgramService","PromotingOwnerService","RegionalConsultantService","ReportJobService","RetailerService","RogersDashboardService","RogersLeadsStatisticsService","RogersPayoutReportService","RoleService","RotationsService","RSScheduleService","ScheduleEventService","RsPayoutTransfersService","ScheduleEventTimeSlotService","SiteModuleService","SiteFeatureService","StateProvinceService","TeamService","TimeCardService","TimeEntryComplianceService","TimeEntryService","WagePolicyService","WorkOrderService","WorkOrderManualClaimService","PermissionGrantService","$window","fileService","deferredPermissionGrants","csvString","claimPermissions","trim","csvLine","ClaimType","ClaimValue","PermissionKey","Value","permissionKey","permissionGrants","retrievePermissionGrants","keyGrants","Description","Key","userID","btoa","claimType","claimValue","InstanceDb","apexInstancePrefix","InstancedStorage","prefix","storage","startsWith","removeItem","supportedDifferences","isCurrency","caption","visible","ShowDT","canBeIndirectlyAffected","ShowSalary","ShowSick","ShowReportingTime","ShowSplit","ShowMealPeriodPremium","ShowHolidayPay","ShowTravel","ShowCell","ShowTip","ShowMinimumWageAdvance","ShowChargeback","ShowTrainingPay","differablePayStubEarnings","rate","RegularRate","units","RegularHours","amount","RegularAmount","combineWeeks","unit","TrainingPayHours","TrainingPay","OvertimeRate","OvertimeHours","OvertimeAmount","DoubleTimeRate","DoubleTimeHours","DoubleTimeAmount","TotalCommissionAmount","Chargeback","Bonus","CommissionBonus","Salary","CellAllowance","Tip","TravelAllowance","MealPeriodPremiumTime","MealPeriodPremiumAmount","SickPay","SickPayAmount","SplitTime","SplitTimeAmount","HolidayPay","ReportingTime","ReportingTimeAmount","PayrollManualCalculationService","extraShowHours","rsCommissions","cloneDeep","RSCommissionAmounts","showHour","commission","ProgramID","StoreID","EventHostID","ScheduleDate","isSame","totalHours","TotalDuration","asHours","ManHoursWorked","CommissionAmount","SalesAmount","SalesNetPayout","TierRate","DailyNCRThreshold","payrollEntry","PayDateDurations","extraHour","DivisionID","Divisions","TotalHours","PayRate","EmployeePayRate","left","right","employeeGroups","payPeriod","updated","PayPeriodID","employeeGroup","employee","Employee","payPeriodChanges","hasDifference","payPeriodChange","payPeriodID","weekNumber","WeekNumber","differences","difference","getNumberDifference","fullPayStub","periodEarnings","pieceEarnings","payPeriods","CommissionPieces","piece","PieceQty","PieceRate","dict","PieceNumber","functions","_piece","earnings","leftAmount","enumerateEarnings","rightAmount","earningsDifferences","subtractEarnings","flat","earningsLines","period","earningsLine","rightLine","baseline","manualSubmission","comparePayStubs","updatedGrossPay","sum","GrossPay","currentGrossPay","updatedNetPayAddition","NetPayAddition","differenceGrossPay","differenceNetPayAddition","Earnings","Caption","Rate","round","Units","Amount","IsCurrency","rightValue","leftValue","UtilityServiceFactory","$rootScope","loadingCount","utilitySvc","globalBroadcast","$broadcast","showLoading","hideLoading","apiUrl","siaaApiUrl","utility","transmitData","settings","isUndefined","dataType","$","extend","apexToken","__jquery_xdomain__","httpPromise","_successFunc","_errorFunc","successFunc","isFunction","errorFunc","ajax","textStatus","jqXHR","getResponseHeader","$apply","fail","getData","postData","contentType","safeApply","$scope","phase","$root","$$phase","showLoadingUntilResolved","promise","alertOnError","alertTitle","alert","equalsInvariant","wait","immediate","later","callNow","queryStringify","qs","encodeURIComponent","moveItem","items","movedItem","itemsCopy","splice","getModelStateErrors","modelState","modelStateArray","Set","CoreModule","BankAccountCreationPolicyService","FileService","LeadBatchJobTracker","LocaleService","PasswordValidatorService","ReportJobTracker","SessionServiceV1","TimeZoneDetectorService","g","PREFERRED_STRING","valueOf","ceil","floor","toObject","toLength","arraySpeciesCreate","createMethod","TYPE","IS_MAP","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","NO_HOLES","$this","callbackfn","that","specificCreate","boundFunction","every","wellKnownSymbol","UNSCOPABLES","ArrayPrototype","configurable","baseClone","CLONE_DEEP_FLAG","tclass","requestError","responseError","cachedValidator","rules","validationRules","CheckPasswordContainsNameRule","CheckPasswordContainName","MinValToCheckName","MaxLength","MaxLengthRule","MinLengthRule","RequiredLength","RequireDigitRule","RequireDigit","RequireLowercaseRule","RequireLowercase","RequireUppercaseRule","RequireUppercase","RequireSpecialCharacterRule","RequireNonLetterOrDigit","mapRules","PasswordValidator","PasswordValidationRule","required","_required","password","minimumNameLength","FirstName","LastName","rule","isRequired","isSatisfiedBy","getHexColorByHue","hue","androidHues","HUE_AZURE","HUE_BLUE","HUE_CYAN","HUE_GREEN","HUE_MAGENTA","HUE_ORANGE","HUE_RED","HUE_ROSE","HUE_VIOLET","HUE_YELLOW","path","aFunction","variable","namespace","classof","TO_STRING_TAG","TAG","propertyKey","baseIsNative","getValue","toNumber","nativeMax","nativeMin","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","invokeFunc","thisArg","leadingEdge","timerExpired","shouldInvoke","timeSinceLastCall","trailingEdge","timeWaiting","remainingWait","debounced","isInvoking","cancel","flush","truncate","str","snipLine","colno","newLine","ll","start","end","safeJoin","delimiter","output","isMatchingPattern","REJECT_TYPE","SUPERSEDED","ERROR","NATIVE_WEAK_MAP","objectHas","sharedKey","hiddenKeys","WeakMap","store","wmget","wmhas","wmset","metadata","STATE","getterFor","activeXDocument","enumBugKeys","html","documentCreateElement","IE_PROTO","EmptyConstructor","scriptTag","content","LT","NullProtoObject","domain","ActiveXObject","iframeDocument","iframe","write","close","temp","parentWindow","NullProtoObjectViaActiveX","style","display","F","Properties","sortRotationDesc","StartDate","isAfter","isBefore","EndDate","mapRotationToDateString","rotation","format","adjustments","DivisionProfileID","AdjustedRotations","adjustment","CurrentRotation","NewRotation","NewRotations","DeletedRotations","RetainedTimeEntries","IgnoreLockedPayrolls","PayrollTypeEnum","AdvanceWage","CommissionAboveThreshold","CommissionExceedingGuaranteed","PieceBased","apiHeaders","pageSize","payrollID","when","payrollInput","PayPeriods","ManualSubmission","ExtraShowHours","calculations","PayrollEntries","Employees","dto","IsPaidGuaranteed","IsPaidCommission","ExtraHoursWorked","ManualCommissionAmount","DefaultSalary","CommissionThreshold","ContractorPayment","DefaultContractorPayment","NetPayDeduction","Comments","mapPayrollEntryToDTO","memo","manualRequests","IsProcessedByAdp","savePayrollLocked","locked","disclosed","pending","completed","post","programID","storeID","filteredEmployeeID","startDate","endDate","retailerID","owner","AbortedXhrError","detail","ApexApiResponseInterceptor","xhrStatus","HardReloadService","currentNavigation","isReady","deferredReloadRequested","reload","transition","requireReload","$from","$to","endsWith","treeChanges","fromChanges","toChanges","fromID","paramValues","toID","configureRouting","$locationProvider","$urlServiceProvider","html5Mode","caseInsensitive","strictMode","RouterModule","uiRouter","ocLazyLoad","attachAppUpdateTransitions","complianceReportOutputFormatEnum","1","ComplianceReportOutputFormatEnum","MultipleWorksheets","2","SingleMergedWorksheet","parseComplianceReportOutputFormat","complianceReportOutputFormatList","Id","LocalStorageJobStore","jobIDs","JobTracker","$interval","jobStore","trackingInterval","callbacks","retrieveJobs","jobs","_initializePeriodicCheck","cb","_cb","jobID","updateJobs","job","stopTrackingJob","isRunning","_notifySubscribersOnJobChange","Messages","retrieveTrackedJobs","_jobs","modifiedJobs","_jobsEqual","bitmap","writable","integer","internalObjectKeys","SPECIES","originalArray","C","FREEZING","METADATA","isExtensible","setMetadata","objectID","weakData","meta","REQUIRED","fastKey","getWeakData","onFreeze","isArrayIteratorMethod","getIteratorMethod","callWithSafeIterationClosing","Result","stopped","iterable","AS_ENTRIES","IS_ITERATOR","iterFn","step","stop","CORRECT_PROTOTYPE_GETTER","ObjectPrototype","getPrototypeOf","V8_VERSION","array","foo","CONSTRUCTOR","METHOD","webpackPolyfill","deprecate","paths","children","l","getRawTag","objectToString","symToStringTag","toStringTag","nativePropertyIsEnumerable","NASHORN_BUG","V","postfix","getOwnPropertyNames","detection","normalize","POLYFILL","NATIVE","string","preventExtensions","TO_STRING_TAG_SUPPORT","IS_PURE","__defineSetter__","charAt","defineIterator","setInternalState","iterated","point","whitespace","ltrim","rtrim","DOMIterables","ArrayIteratorMethods","ITERATOR","ArrayValues","COLLECTION_NAME","Collection","CollectionPrototype","baseGetTag","isObjectLike","nativeCreate","getNative","listCacheClear","listCacheDelete","listCacheGet","listCacheHas","listCacheSet","ListCache","entries","eq","isKeyable","__data__","assignValue","baseAssignValue","props","customizer","isNew","newValue","regModules","regInvokes","regConfigs","modulesToLoad","realModules","recordDeclarations","broadcast","noop","runBlocks","justLoaded","$controllerProvider","$provide","$filterProvider","$animateProvider","modules","providers","events","moduleCache","modulePromises","isDefined","moduleConfig","_init","element","elements","names","NG_APP_CLASS_REGEXP","elm","getElementById","querySelectorAll","attributes","jasmine","mocha","mock","addReg","mainModule","_invokeQueue","_configBlocks","requires","hashCode","hash","charCodeAt","_register","registerModules","moduleFn","tempRunBlocks","getModuleName","newModule","ngModuleFct","_runBlocks","shift","reconfig","instanceInjector","getInstanceInjector","invoke","_registerInvokeList","invokeList","newInvoke","onInvoke","invokeName","potentialNew","invokes","newHash","signature","checkHashes","queue","callInvoke","fct","invoked","j","jlen","moduleExists","$rootElement","$cacheFactory","filesCache","deferred","defer","_broadcast","_$log","_getFilesCache","toggleWatch","watch","getModuleConfig","copy","setModuleConfig","getModules","isLoaded","modulesNames","moduleLoaded","_getModuleName","_getModule","_loadDependencies","localParams","loadedModule","promisesList","getRequires","requireEntry","files","filesLoader","inject","real","_addToLoadList","loadNext","requireModule","_unregister","bootstrapFct","bootstrap","force","configFn","directive","$compile","$animate","$parse","restrict","terminal","priority","compile","attrs","innerHTML","$element","$attr","model","$watch","enter","contents","useCssLoadPatch","anchor","getElementsByTagName","buildElement","loaded","cacheBuster","dc","getTime","put","rel","remove","onload","async","serie","insertBeforeElem","lastChild","insertBefore","jQuery","ua","navigator","userAgent","platform","appVersion","iOSVersion","parseInt","androidVersion","versionMatch","tries","interval","sheet","cssRules","cssFiles","templatesFiles","jsFiles","promises","cachePromise","pushFile","file_type","jsLoader","cssDeferred","cssLoader","templatesDeferred","templatesLoader","jsDeferred","originalModule","errText","originalParams","deferredList","template","ocLazyLoadLoader","$templateCache","node","nodeName","searchElement","fromIndex","abs","POLICIES","CountryID","routingNumberLength","institutionNumberLength","requireInstitutionNumber","supportAdpDirectDepositForm","routingNumberLabel","institutionNumberLabel","voidCheckLabel","countryID","policy","retrieveEmployeeTimekeepingAuditLogs","retrieveEmployeeTimekeepingAuditLog","retrieveTimeEntryModificationsAuditLogs","retrieveTimeEntryModificationsAuditLog","retrieveAcknowledgedModifiedTimeEntryAuditLogs","retrieveAcknowledgedModifiedTimeEntryAuditLog","acknowledgedEmployeeID","retrieveEmployeeTimekeepingAuditLogsPage","retrieveTimeEntryModificationsAuditLogsPage","retrieveAuditors","retrieveAuditor","auditorID","saveAuditor","auditor","IsNew","deleteAuditor","retrieveCommissionPolicies","retrieveCommissionPolicy","retrieveCommissionPermissions","createCommissionPolicy","commissionPolicy","requestModel","IcdCorporationID","RetailerID","Archives","createArchiveDTO","updateCommissionPolicy","commissionPolicyID","archive","IsDeleted","deleteCommissionPolicy","duplicateCommissionPolicyExists","commissionPolicies","anyDuplicates","Program","Retailer","any","other","archives","CommissionPolicyArchiveID","ActiveStart","kendo","ActiveEnd","Tiers","tier","CommissionPolicyTierID","StartAmount","EndAmount","DailyDollarGuaranteeAmt","utilityService","retrieveDashboards","dashboards","exclude","dashboard","matchedDashboards","dashboardsMatch","retrieveDashboardData","dataUrl","retrieveModifiedTimeEntries","modification","StartTime","convertTimeTo12h","EndTime","retrieveTimeEntryModifications","acknowledgeTimeEntryModification","timeEntryModificationID","dismissTimeEntryModification","dashboardTemplate","ModuleID","title","Title","dashboardID","DashboardID","retrieveEmployees","retrieveEmployeesPage","retrieveEmployeesByRoleName","roleName","retrieveEmployeesByModuleAdmin","retrieveEmployeesByRosterAdmin","rosterAdminID","retrieveNewEmployeeModel","retrieveEmployee","retrieveEmployeeSecuritySettings","retrieveEmployeeByUsername","username","saveEmployee","employeeDTO","MiddleName","UserName","EmailAddress","Password","Inactive","InactiveDate","GlobalSiteID","UniqueID","ADPEmployeeID","MeridianEmployeeID","IcdOffices","mapIcdOfficeEmployeeToDTO","GlobalRoles","globalRole","RoleID","IsInRole","SendWelcomeEmail","mapEmployeeToDTO","createEmployee","updateEmployee","updateEmployeeProfile","profile","updateEmployeeSecuritySettings","securitySettings","updateEmployeeProfileImage","profileImage","patchEmployeeProfile","retrieveEmployeeProfile","retrieveTerminationReasons","retrieveProfileImageUrl","employeeImage","file","Blob","fileReader","FileReader","readAsDataURL","Url","retrieveGenders","retrieveEmployeeBankInfo","retrieveEmployeeStatuses","retrieveEmployeeAssignableRoles","retrieveJobTitles","retrieveCompensationProfiles","retrieveAdministeredModules","retrieveMaritalStatuses","retrieveWithHolding","updateEmployeeBankInfo","employeeBankInfo","isEmailAddressAvailable","emailAddress","sendPasswordReminder","userName","queryString","retrievePermissions","EmployeeStatusID","PayFrequencyID","HireDate","TerminationDate","EmployeeStatus","AllowPortalAccess","TerminationReasonID","TerminationReasonExtra","IcdOfficeID","JobTitleID","CompensationProfileID","DefaultHours","Garnishment","TimeClock","RequireBreak","IsOnPayroll","TrackRealTime","division","Roles","AdministeredModules","IsModuleAdmin","OnboardingApplicationID","Upload","upload","adpImportNumbers","uploadedNumbers","employees","eventHostID","eventHost","Type","HostTypeID","firstname","lastname","passwordContainsUsername","firstNameMatches","lastNameMatches","hasRequiredLength","hasMaxRequiredLength","hasLower","hasUpper","hasDigit","hasSpecial","validationErrors","errors","retrieveHubs","retrieveHub","hubID","saveHub","deleteHub","createIcdCommissions","commissions","stripIcdCommissionTimezones","retrieveIcdCommissions","updateIcdCommissions","deleteIcdCommissions","icdCommissions","createIcdCommissionsAsSingleTier","icdCommissionsAsSingleTier","createTiersFromSingleTierIcdCommission","createicdCommissions","flattenIcdCommission","retrieveIcdCommissionsAsSingleTier","updateIcdCommissionsAsSingleTier","icdCommission","IcdCommissionTiers","primaryTier","icdCommissionAsSingleTier","TierNo","retrieveLeadBatches","retrieveLeadBatchJob","retrieveLeadBatch","leadBatchID","createLeadBatch","retrieveLeadGroups","containsDate","retrieveLeadGroup","leadGroupID","patchLeadGroup","deleteLeadBatch","removeLeadGroupGeography","LeadGroupGeographyID","createLeadGroupGeography","updateLeadGroupGeography","createLeadTerritory","updateLeadTerritory","LeadTerritoryID","removeLeadTerritory","retrieveLeadGroupTerritories","retrieveLeadGroupLeadsReport","retrieveLeadGroupLeads","retrieveLeadTerritoryOffices","leadTerritoryID","retrieveLeadGroupGeographiesOffices","retrieveLeadTerritories","retrieveLeadTerritory","retrieveTerritoryOfficeHistory","retrieveTerritoriesLeadsCount","retrieveTerritoriesOfficeHistory","updateLeadGroupTerritoriesOffices","createLeadOfficeTeam","retrieveLeadOfficeTeams","updateLeadOfficeTeam","leadOfficeTeam","deleteLeadOfficeTeam","leadsPolicyID","legalNoticeID","legalNoticeContentID","notice","bulletinID","sendEmailCopy","bulletin","retrieveMultiPlayCommissionPolicies","retrieveMultiPlayCommissionPolicy","multiPlayCommissionPolicyID","createMultiPlayCommissionPolicy","multiPlayCommissionPolicy","updateMultiPlayCommissionPolicy","deleteMultiPlayCommissionPolicy","duplicateMultiPlayCommissionPolicyExists","Product","ProductLine","ProductID","ProductLineID","nationalConsultantID","nationalConsultant","onboardingApplication","IsSelfSignUp","Applicant","CellPhone","PhoneNumber","Extension","dob","DateOfBirth","OnboardingDocuments","onboardingDocument","InitialOnboardingApplicationStatusID","patch","fileUrl","transfer","onboardingApplicationID","icdofficeID","retrieveOnboardingDivisions","retrieveOnboardingPolicy","setOnboardingPolicyReferences","createOnboardingPolicy","mapOnboardingPolicyCreateRequestToFormData","retrieveDivisionOnboardingPolicy","defineDivisionOnboardingPolicy","onboardingPolicy","removeDivisionOnboardingPolicy","patchOnboardingPolicy","onboardingPolicyID","updateContactEmails","contactEmails","addApplicationStatus","updateApplicationStatus","addReferenceField","updateReferenceField","addDocumentGroup","appendAddDocumentGroupRequestToFormData","SortIndex","updateDocumentGroup","uploadDocumentGroupRequirementsFile","requirementsFile","removeDocumentGroupRequirementsFile","addDocument","appendAddDocumentRequestToFormData","updateDocument","uploadDocumentBlankForm","blankForm","removeDocumentBlankForm","ContactEmails","contactEmail","ApplicationStatuses","StatusType","ReferenceFields","referenceField","RequiredAtStatus","IsSensitive","InputMask","ValueType","ShowInGrid","OnboardingDocumentGroups","group","DocumentGroup","EnableSelfSignUp","documentGroup","RequirementsFileUpload","DocumentGroupID","IsRequired","UseImageCropper","AllowedFileTypes","BlankFormUpload","OnboardingPolicyDocumentGroupID","reference","OnboardingApplicationStatusID","isPayStub","retrieveDivisionPayoutPolicies","retrieveDivisionPayoutPolicy","updateDivisionPayoutPolicy","createDivisionPayoutPolicy","updatePayoutPolicyCommissions","retrieveIcdCorporationPayoutPolicies","retrieveIcdCorporationPayoutPolicy","updateIcdCorporationPayoutPolicy","createIcdCorporationPayoutPolicy","retrievePayrollCorporationsV2","retrievePayrollCorporations","retrievePayrollRotations","retrievePayrollRotationsV2","retrievePayrollDivisions","retrieveNCRSummary","retrievePayChequeInquiryReports","retrievePayrollOfficeDivision","manualRequest","isPending","isWorkingOn","retrievePayrollFinancials","retrievePayrollFinancialsProgramSummary","retrievePayrollInvoicePolicies","retrievePayrollInvoicePolicy","payrollInvoicePolicyID","savePayrollInvoicePolicy","payrollInvoicePolicy","PayrollInvoicePolicyID","updatePayrollInvoicePolicy","createPayrollInvoicePolicy","deletePayrollInvoicePolicy","invoiceDate","payrollInvoice","invoiceDTO","StatusID","Adjustment","AdjustmentComments","PaymentMethodID","HJComments","HubComments","OwnerComments","IsDismissed","retrievePostedPayouts","retrieveIcdPayouts","retrieveIcdPayout","icdPayoutID","retrieveIcdPayoutHistory","postPayouts","patchIcdPayout","deleteIcdPayout","retrieveProductCommissionPolicies","retrieveProductCommissionPolicy","productCommissionPolicyID","createProductCommissionPolicy","productCommissionPolicy","updateProductCommissionPolicy","deleteProductCommissionPolicy","duplicateProductCommissionPolicyExists","bulkUpsetProductCommision","policies","createProductLines","retrieveProductLines","updateProductLine","productLine","deleteProductLine","getRogersCategories","CategoryID","CategoryDescription","sort","productOrderAdjustmentID","createProduct","retrieveProducts","updateProduct","deleteProduct","retrievePrograms","promotingOwnerID","promotingOwner","regionalConsultantID","regionalConsultant","retrieveRetailers","retrieveRogersDailyProductionReport","retrieveRogersEmployeesTsuReport","retrieveRogersOwnersTsuReport","retrieveRogersTrendReports","retrieveRogersSlippageSummaryReport","retrieveRogersSlippageReport","retrieveRogersRecruitingBonusReport","retrieveRogersRecruitingBonusBreakdownReport","retrieveTotalStatistics","mapQueryToParams","retrieveOfficeStatistics","retrieveRepStatistics","PostedDate","localeService","translator","_descriptionTranslator","roles","translate","roleID","role","retrieveCurrentLocaleTranslations","translations","TranslatedDescription","createRSPayoutTransfer","retrieveRSPayoutTransfers","updateRSPayoutTransfer","deleteRSPayoutTransfer","retrieveRSSchedules","retrieveRSSchedulesPaged","retrieveRSSchedule","rsScheduleID","updateRSSchedule","rsSchedule","RSScheduleID","RSScheduleSales","sales","RSScheduleSalesID","AnonymousHours","retrieveRSScheduleEmployees","retrieveQualifyingEmployees","saveRSScheduleEmployees","employeeIDs","retrieveEmployeeSchedules","scheduleDate","retrieveEmployeePrograms","selectedProgramID","showAll","program","Text","IsPinned","retrieveEmployeeLocations","selectedLocationID","retrieveEmployeeDepartments","selectedDepartmentID","dept","retrieveRotationByDate","rsDate","scheduleEventID","ScheduleEventAssignedStatus","Pending","Accepted","Rejected","Unassigned","officeID","scheduleEvent","betaOpt","_appStates","_loadingAppStates","stateProvinceID","stateProvince","TaxRate1","TaxRate2","TaxRate3","retrieveStateProvince","teamLeaderEmpId","teamID","TeamID","leader","retrievePayPeriods","approvePayPeriod","approved","PageIndex","unapprovedOnly","timeEntryID","timeEntry","updateTimeEntry","createTimeEntry","offset","utcOffset","createRequestBase","TimeEntryTypeID","ProgramId","LocationId","IsRealTime","TimeZoneOffset","requests","WorkStartEndTime","Start","End","IsBreak","BreakStartEndTime","AdditionalTimeEntries","additional","StartEndTime","TimeEntryType","postRequest","ParentTimeEntryID","timentryID","updateRequest","createRequest","updateInterval","createInterval","patchRequest","wagePolicyID","wagePolicy","_createWagePolicy","_updateWagePolicy","WagePolicyID","retrieveWagePolicy","retrieveWagePolicies","wagePolicies","currentPolicy","History","isSameOrAfter","isSameOrBefore","MinimumWage","retrieveWorkOrderMaualClaims","retrieveWorkOrderMaualClaim","workOrderClaimID","createWorkOrderManualClaim","workOrderManualClaim","updateWorkOrderManualClaim","patchWorkOrderManualClaim","deleteWorkOrderManualClaim","retrieveWorkOrders","retrieveWorkOrder","workOrderID","createWorkOrder","workOrderCreateRequest","bulkCreateWorkOrders","workOrdersCreateRequests","patchWorkOrder","workOrderPatchRequest","retrieveProductOrderStatuses","createWorkOrderEmployeeClaim","sendWorkOrderUpdateAlert","bulkRemoveProductOrderStatus","productOrderStausRemoveRequests","Promise","reader","readAsText","fileName","mimeType","arrayBuffer","buf","File","leadBatchService","ProcessedCount","FailedCount","LocatedCount","LocatedUnsureCount","NoResultsCount","MultipleResultsCount","ErrorCount","LOCALES","localeID","languageCode","countryCode","PRIMARY_LOCALE","locale","retrieveCurrentLocale","retrieveLocaleTranslations","retrieveLocaleByLocaleID","languageBase","retrieveFileContents","countryTranslations","setCurrentLocale","reportJobService","retrieveReportJob","apexProxyUserID","isAuthenticated","rememberMe","loginForm","Input_Email","Input_Password","Input_RememberMe","submit","logoutForm","go","loginProvider","providerKey","form","proxySignInForm","action","proxySignOutForm","refreshSignInForm","TimezoneAbbreviations","EST","EDT","CST","CDT","MST","MDT","PST","PDT","NST","NDT","AST","ADT","AKST","AKDT","HAST","HADT","WhiteListCities","date","timeZoneOffset","timezones","tz","zones","zoneName","zone","abbr","ZoneName","Offset","Abbr","ComplianceReport","reportFlags","reportDescriptions","reports","allowManualDateRange","_allowManualDateRange","ComplianceReportEnum","SplitPay","NoMealBreak","MealBreakBelow30Min","SecondMealBreak","RecordedTimeSecondShiftBelow2Hour","MealBreakTooEarlyOrLate","SeventhDayOfRest","RecordedTimeLapseBelow5Min","RecordedTimeLapse5to60Min","RecordedTimeLapseAbove60Min","Worked7WorkDaysInRow","NoWorkHoursWithMealBreak","OverlappingTimeEntries","IncompleteTimeEntries","FirstMealBreakReport","AllTimeRecordsReport","RSCostcoReport","AdditionalHoursReport","routePrefix","descriptions","retrieveComplianceReportDescriptions","mapJobToVM","ReportType","ExecutiveReportType","Compliance","OutputFormat","ReportOutputFormat","WinxnetUtility","ajaxUrl","_url","_ajaxUrl","_modifiedItems","getAllModifiedItems","modifiedItems","getModifiedItems","itemType","shouldBeArray","thing","convertToArray","convert","idx","storeModifiedItem","triggerDirty","itemIdx","newGuid","each","makeDirty","registerSave","selector","save","getSave","registerSaveModifiedItems","formSelector","createFormKeyItemDictionary","collectionName","keyProperty","logWarn","navigateToUrl","controller","querystring","constructUrl","useApi","api","_baseApiUrl","_baseUrl","addClass","closest","first","form1","createFormForObject","indexArrays","ctemplate","postAs","removeKendoModelProperties","util","dictionary","createKeyItemDictionary","property","iterateObject","parentProp","arrayIdx","newKey","createModifiedItemsFormElementCollection","allModifiedItems","formElements","calculateDateOffset","offSet","calculateLastDateOfRange","convertTimeTo24h","timeString","setAlternateSaveFunction","fcn","alternateSaveFunction","getLookupProperty","getLookupSupplementalText","getLookupText","getNameForGridLookup","returnValue","populateGridDropdownItems","editEvent","inputName","gridName","columnName","dataSource","includeEmpty","existingInput","container","grid","kendoGrid","currentId","dataItem","availableItems","itm","ddl","kendoDropDownList","dataTextField","dataValueField","select","trigger","AdpExportFormat","FORMATS","Default","apiExtension","defaultConfigName","DefaultWithSsn","Canada","Pivoted","baseUrl","definitions","$transitions","onError","isChunkLoadError","targetState","code","configureAuthGuard","permissionGrantService","onStart","routeRequiresAuth","returnUrl","route","ignoreRole","stateName","getRoutePermissionKey","$$state","hasAccess","hasPermission","access","CanRead","controlAccess","skipAuthGuard","allowAnonymous","ActivityStepperComponent","bindings","activities","templateUrl","controllerAs","vm","selected","toggleListItems","expanded","init","AddressSnippetComponent","address","oneLine","AddressController","$filter","stateProvinceLabel","postalCodeLabel","changeCountry","addressID","change","retrieveLocales","locales","StateProvince","PostalCode","CheckboxListController","onInit","listNum","selectedItem","valueField","SupplementalText","checked","isDeleted","canBeNew","canDelete","checkboxes","checkboxListChange","$onInit","readOnly","selectItem","CheckboxListComponent","class","LoadingSpinnerComponent","showSpinner","$on","TranscludeComponent","transclude","CollapsibleSidebarShellComponent","body","sidebar","showSidebar","sidebarExpandedClass","sidebarCollapsedClass","bodyExpandedClass","bodyCollapsedClass","CollapsibleSidebarModule","component","AndroidHuePreviewComponent","color","changesObj","ColorModule","ComponentsModule","FlexTableContext","table","compilers","extensionOptions","horizontalContainer","verticalContainer","classList","scrollContainer","parentElement","extension","attach","reduceRight","detach","cell","cellHandlers","cellMapper","mappers","mapper","specificHandlers","FlexTableExtension","flexTableContext","isAttached","getClientRects","rect","getBoundingClientRect","win","ownerDocument","defaultView","pageYOffset","pageXOffset","CarouselScrollingExtension","momentum","carousel","scrollingContainer","leftScroll","scrollLeft","clientWidth","rightScroll","stickyToolbar","updateDisabled","scrollWidth","initCarouselScrolling","validFocusable","ExcelHotkeysExtension","worksheet","inputSelector","inputValidator","FixedHeaderExtension","isHeaderAffixed","scrollingHeaderTable","createScrollingHeaderTable","tHead","background","scrollContainerScroll","throttle","shouldAffixHeader","affixHeader","detachHeader","horizontalContainerScroll","originalSize","keepDimensionsSynced","setInterval","newSize","removeEventListener","clearInterval","scrollTop","scrollY","tableTop","tableBottom","scrollHeight","minHeight","verticalScrollHeight","marginTop","fixedHeaderTop","marginLeft","offsetLeft","width","offsetWidth","position","backgroundColor","offsetHeight","tableClone","cloneNode","tHeadClone","cloneTheadContents","compiler","elementTr","cellClone","cellContents","cellStyle","paddingLeft","paddingRight","paddingTop","paddingBottom","maxWidth","tr","freezeLeft","freezeRight","trClone","cells","getComputedStyle","minWidth","FrozenColumnsExtension","leftOffset","leftFrozenColumns","colOffsetWidth","td","setFrozenColumnWidths","rows","rowsLen","row","rowStyle","rowOffsetHeight","verticalAlign","flexDirection","justifyContent","setFrozenColumnHeights","overflowX","padding","unsetFrozenColumnHeights","borderTop","unsetFrozenColumnWidths","FlexTableDirective","link","apexExcelHotkeys","enableExcelHotkeys","getVerticalScrollContainer","$flex","cursor","getCellValue","getCellMapper","innerText","setCellValue","setValue","onSelectionChanged","getCellHandlers","$event","deselected","onCursorMoved","unsafeDirectives","selectorAttribute","hasAttribute","removeAttribute","directiveEl","attachToContext","watchAndRebind","reAttach","evaluateAttributeValues","detachFromContext","FlexCellModelDirective","flexTable","apexFlexCellModel","apexChange","$setDirty","registerCellMapper","FlexTableModule","apexFlexSelectCell","addCellHandler","removeCellHandler","LocaleDirective","apexLocale","defaultLocale","setDefaultLocale","MaskedSecretDirective","ngModel","unmaskSecret","viewValue","actualValue","$modelValue","unmaskedValue","secretChar","conformToMask","mask","maskChar","isMaskCharacterPlaceholder","added","textChar","promptChar","isCharacterAllowedByMask","formatModelIntoMask","modelValue","currentTextChar","reveal","setInputValue","maskedValue","cursorPosition","leftHalf","remainingMask","nextPlaceholder","placeholderChars","$setViewValue","char","on","ctrlKey","altKey","currentViewValue","keyCode","lastEmptyPrompt","unfilledPart","preventDefault","stopPropagation","anyDeletedFilledPlaceholders","handleDeleteInput","filledMask","handleBackspaceInput","$setValidity","$parsers","$formatters","$render","$viewValue","PartialSrcDirective","$templateRequest","srcUrl","apexPartialSrc","StandbyInputDirective","standbyHtml","activeHtml","mode","getMode","getDisabled","onActivating","getOnActivating","onActivated","getOnActivated","onDeactivating","getOnDeactivating","onDeactivated","getOnDeactivated","onFocusing","getOnFocusing","standbyInputOptions","addActiveStyles","addInactiveStyles","focusTarget","focus","compilerOptions","Active","getElement","changeMode","StatePreserveFocusDirective","focusedElement","unregisterOnCreate","onCreate","activeElement","selectionStart","selectionEnd","blur","unregisterRestore","onSuccess","newElement","StickyDirective","$win","_stickyElements","pos","isStuck","placeholder","css","outerHeight","removeClass","recheckPositions","usePlaceholder","DirectivesModule","disableDragDrop","dropPayload","dragEnter","dragOver","dragLeave","bindToController","$ctrl","apexDragDropContainer","ev","dataTransfer","dropEffect","draggable","payloadModel","spillPayload","dragStart","dragEnd","dragDropContainer","effectAllowed","updateValidity","multiple","ctrl","forms","$removeControl","ngChange","ngFocus","ngBlur","trixInitialize","trixSelectionChange","trixFileAccept","trixAttachmentAdd","trixAttachmentRemove","trixEditorEl","siblings","trixEvent","ngEvent","preventTrixFileAccept","editor","loadHTML","render","apexVirtualLimit","limitActivationDistance","offscreenHeight","LocaleTranslateFilter","translateFilter","currentLocaleTranslations","$stateful","lookupTable","CommonModule","ngAnimate","ngAria","ngMessages","ngSanitize","pageNumber","grants","grant","found","itemMatches","columns","col","colId","orderBy","searchBy","fetchFromObject","_index","baseSet","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","fun","currentQueue","draining","queueIndex","cleanUpNextTick","drainQueue","marker","runClearTimeout","Item","nextTick","browser","env","argv","versions","addListener","off","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","listeners","binding","cwd","chdir","dir","umask","EXISTS","functionToString","copyright","toAbsoluteIndex","IS_INCLUDES","aPossiblePrototype","setter","CORRECT_SETTER","createIteratorConstructor","setToStringTag","Iterators","IteratorsCore","IteratorPrototype","BUGGY_SAFARI_ITERATORS","returnThis","Iterable","NAME","IteratorConstructor","DEFAULT","IS_SET","FORCED","CurrentIteratorPrototype","KEY","getIterationMethod","KIND","defaultIterator","IterablePrototype","INCORRECT_VALUES_NAME","nativeIterator","anyNativeIterator","SAFE_CLOSING","called","iteratorWithReturn","SKIP_CLOSING","ITERATION_SUPPORT","v8","getBuiltIn","CONSTRUCTOR_NAME","Constructor","PromiseCapability","$$resolve","$$reject","MATCH","regexp","Map","objValue","arrayLikeKeys","baseKeys","isArrayLike","freeExports","nodeType","freeModule","freeProcess","nodeUtil","types","objectProto","Ctor","baseKeysIn","arrayFilter","stubArray","nativeGetSymbols","getSymbols","symbol","DataView","toSource","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","getTag","ArrayBuffer","ctorString","Uint8Array","byteLength","validator","cellBelow","toUnitTable","cellAddress","findCellAddress","cellAddressBelow","cellAbove","cellAddressAbove","cellLeft","cellAddressLeft","cellRight","cellAddressRight","rowSpan","colSpan","e_2","cellBuffer","_d","_f","expires","e_2_1","rowIndex","skip","thead","getBodyRowIndex","cellIndex","baseGet","defaultValue","baseURI","getOwnPropertyNamesModule","getOwnPropertySymbolsModule","objectKeys","nativeGetOwnPropertyNames","windowNames","getWindowNames","TO_ENTRIES","classofRaw","CORRECT_ARGUMENTS","tag","tryGet","callee","ENTRIES","returnMethod","PrototypeOfArrayIteratorPrototype","arrayIterator","flattenIntoArray","sourceLen","depth","targetIndex","sourceIndex","mapFn","$forEach","arrayMethodIsStrict","arrayMethodUsesToLength","STRICT_METHOD","USES_TO_LENGTH","addToUnscopables","kind","Arguments","IS_RIGHT","argumentsLength","dummy","Wrapper","NewTarget","NewTargetPrototype","repeat","RangeError","CSSRuleList","CSSStyleDeclaration","CSSValueList","ClientRectList","DOMRectList","DOMStringList","DOMTokenList","DataTransferItemList","FileList","HTMLAllCollection","HTMLCollection","HTMLFormElement","HTMLSelectElement","MediaList","MimeTypeArray","NamedNodeMap","NodeList","PaintRequestList","Plugin","PluginArray","SVGLengthList","SVGNumberList","SVGPathSegList","SVGPointList","SVGStringList","SVGTransformList","SourceBufferList","StyleSheetList","TextTrackCueList","TextTrackList","TouchList","defaultConstructor","S","channel","port","IS_IOS","setImmediate","clearImmediate","MessageChannel","Dispatch","runner","listener","postMessage","protocol","host","port2","port1","onmessage","importScripts","newPromiseCapability","x","promiseCapability","InternalMetadataModule","iterate","anInstance","checkCorrectnessOfIteration","inheritIfRequired","wrapper","IS_WEAK","ADDER","NativeConstructor","NativePrototype","exported","fixMethod","nativeMethod","getConstructor","HASNT_CHAINING","THROWS_ON_PRIMITIVES","ACCEPT_ITERABLES","BUGGY_ZERO","$instance","setStrong","redefineAll","setSpecies","internalStateGetterFor","last","define","previous","getEntry","removed","ITERATOR_NAME","getInternalCollectionState","getInternalIteratorState","isUndefinedOrNull","requireMoment","constant","preprocess","timezone","statefulFilters","withoutSuffix","serverTime","titleFormat","fullDateThreshold","fullDateFormat","fullDateThresholdUnit","amMoment","amTimeAgoConfig","currentValue","currentFrom","activeTimeout","localDate","modelName","amTimeAgo","isTimeElement","setTitleTime","getNow","nowMillis","cancelTimer","updateDateTimeAttr","updateMoment","momentValue","preprocessDate","updateTime","momentInstance","timeAgo","showFullDate","howOld","secondsUntilUpdate","amFrom","amWithoutSuffix","$observe","angularMomentConfig","defaultTimezone","changeLocale","customization","changeTimezone","setDefault","unix","utc","isMoment","local","aMoment","amCalendarFilter","referenceTime","formats","calendar","amDifferenceFilter","otherValue","usePrecision","date2","amDateFormatFilter","amDurationFormatFilter","suffix","humanize","amTimeAgoFilter","dateFrom","fromNow","amSubtractFilter","subtract","amAddFilter","amStartOfFilter","startOf","amEndOfFilter","endOf","grids","registerGrid","registerScope","scopeName","viewDataElement","viewData","fromJson","datasourcename","itemList","selectedItemList","cssclass","valueProperty","checkboxdata","elementData","submitFunction","unbind","isKey","stringToPath","mapCacheClear","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","MapCache","funcToString","isSymbol","reIsUint","baseTimes","isArguments","isBuffer","isIndex","isTypedArray","inherited","isArr","isArg","isBuff","isType","skipIndexes","stubFalse","Buffer","isLength","arrayPush","getPrototype","getSymbolsIn","overArg","keysFunc","symbolsFunc","keyboard_events_1","clipboard_reducers_1","selection_1","selection_events_1","workspace_reducers_1","traverser","selection","handleChangeCellKeyPress","createKeyPressHandler","handleFocus","createFocusHandler","handleCopy","createCopyEventHandler","handlePaste","createPasteEventHandler","defaultSetCellValue","workspace","pastSelection","NoSelection","activeSelection","tabIndex","dataSelector","CompositeSelection","reduceClipboardAction","events_1","events_1_1","event_1","serializePatternData","clipboardData","e_3","processPatternData","events_2","events_2_1","event_2","cellValueChanges","e_3_1","deleteSelection","e_4","e_5","events_3","events_3_1","event_3","e_5_1","e_4_1","validInput","button","textbox","stopImmediatePropagation","selectionType","getSelectionType","selectionReducer","handleCursorMoved","createCursorMovedEvent","handleSelectionChanged","createSelectionChangeEvent","updatedSelection","shiftKey","Keys","Delete","handleCardinalMovementKeyEvent","clearSelection","newCell","movementType","Tab","getMovementType","direction","Enter","ArrowDown","ArrowUp","ArrowLeft","ArrowRight","getKeyDirection","sourceCell","newInput","__generator","y","sent","trys","ops","verb","WorkspaceSelection","SingleCell","containsCell","enumerateCells","RangeSelection","inclusive","maxI","minI","maxJ","minJ","bounds","getBounds","changeEnd","subtracted","getAddedSelections","getSubtractedSelections","cellCount","_g","_h","_j","_k","_l","_m","_o","_p","_q","e_6","_r","_s","_t","_u","e_6_1","addSelection","subtractSelection","isContiguous","e_7","contiguousChildCount","e_7_1","Memo","_hasWeakSet","WeakSet","_inner","memoize","unmemoize","delete","nativeObjectCreate","getOwnPropertyNamesExternal","getOwnPropertyDescriptorModule","wrappedWellKnownSymbolModule","defineWellKnownSymbol","HIDDEN","TO_PRIMITIVE","$Symbol","$stringify","AllSymbols","ObjectPrototypeSymbols","StringToSymbolRegistry","SymbolToStringRegistry","QObject","USE_SETTER","findChild","setSymbolDescriptor","ObjectPrototypeDescriptor","$defineProperty","$defineProperties","properties","$getOwnPropertySymbols","$propertyIsEnumerable","$getOwnPropertyDescriptor","$getOwnPropertyNames","IS_OBJECT_PROTOTYPE","keyFor","sym","useSetter","useSimple","replacer","space","$replacer","ownKeys","nativeAssign","A","B","chr","T","$entries","nativeFreeze","freeze","createProperty","fromEntries","FAILS_ON_PRIMITIVES","getOwnPropertyDescriptors","nativeGetPrototypeOf","nativeIsExtensible","nativeIsFrozen","isFrozen","nativeIsSealed","isSealed","nativeKeys","nativePreventExtensions","nativeSeal","seal","$values","__defineGetter__","getter","__lookupGetter__","desc","__lookupSetter__","CONVERT_TO_STRING","second","codeAt","arrayLike","mapfn","mapping","iteratorMethod","of","arrayMethodHasSpeciesSupport","IS_CONCAT_SPREADABLE","IS_CONCAT_SPREADABLE_SUPPORT","SPECIES_SUPPORT","isConcatSpreadable","spreadable","E","copyWithin","inc","$every","endPos","HAS_SPECIES_SUPPORT","$find","SKIPS_HOLES","$findIndex","depthArg","flatMap","$includes","$indexOf","nativeIndexOf","NEGATIVE_ZERO","nativeJoin","ES3_STRINGS","separator","lastIndexOf","nativeLastIndexOf","$map","$reduce","$reduceRight","nativeReverse","0","nativeSlice","fin","$some","nativeSort","FAILS_ON_UNDEFINED","FAILS_ON_NULL","comparefn","deleteCount","insertCount","actualDeleteCount","actualStart","NativeNumber","NumberPrototype","BROKEN_CLASSOF","third","radix","maxCode","digits","NaN","NumberWrapper","EPSILON","pow","globalIsFinite","isInteger","number","isSafeInteger","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","whitespaces","$parseFloat","trimmedString","$parseInt","hex","thisNumberValue","nativeToFixed","toFixed","acc","fractionDigits","z","fractDigits","sign","multiply","c2","divide","dataToString","x2","nativeToPrecision","toPrecision","precision","pv","padStart","DatePrototype","nativeDateToISOString","year","getUTCFullYear","getUTCMilliseconds","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","IS_END","maxLength","fillString","fillLen","stringFiller","stringLength","fillStr","intMaxLength","nativeDateToString","dateToPrimitive","Internal","OwnPromiseCapability","PromiseWrapper","nativeThen","NativePromise","speciesConstructor","task","microtask","promiseResolve","hostReportErrors","newPromiseCapabilityModule","perform","PROMISE","getInternalPromiseState","PromiseConstructor","$fetch","newGenericPromiseCapability","IS_NODE","DISPATCH_EVENT","createEvent","dispatchEvent","PromiseRejectionEvent","FakePromise","INCORRECT_ITERATION","notify","isReject","notified","chain","reactions","ok","exited","reaction","onHandleUnhandled","exit","onUnhandled","initEvent","isUnhandled","unwrap","internalReject","internalResolve","onFulfilled","onRejected","capability","$promiseResolve","remaining","alreadyCalled","race","toggle","macrotask","MutationObserver","WebKitMutationObserver","queueMicrotaskDescriptor","queueMicrotask","createTextNode","characterData","allSettled","onFinally","collectionStrong","FunctionPrototype","FunctionPrototypeToString","nameRE","entryUnbind","factories","construct","argsLength","list","partArgs","notARegExp","correctIsRegExpLogic","searchString","nativeStartsWith","CORRECT_IS_REGEXP_LOGIC","search","nativeEndsWith","endPosition","$trim","forcedStringTrimMethod","trunc","hookCallback","hooks","hasOwnProp","isObjectEmpty","isNumber","isDate","createUTC","strict","createLocalOrUTC","getParsingFlags","_pf","empty","unusedTokens","unusedInput","overflow","charsLeftOver","nullInput","invalidEra","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","era","meridiem","rfc2822","weekdayMismatch","_isValid","flags","parsedParts","isNowValid","invalidWeekday","_strict","bigHour","createInvalid","momentProperties","updateInProgress","copyConfig","_isAMomentObject","_tzm","_isUTC","_offset","_locale","Moment","updateOffset","suppressDeprecationWarnings","firstTime","deprecationHandler","deprecations","deprecateSimple","mergeConfigs","parentConfig","childConfig","Locale","zeroFill","targetLength","forceSign","absNumber","zerosToFill","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","addFormatToken","padded","ordinal","localeData","formatMoment","expandFormat","mom","makeFormatFunction","invalidDate","replaceLongDateFormatTokens","longDateFormat","lastIndex","aliases","addUnitAlias","shorthand","lowerCase","normalizeUnits","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","priorities","addUnitPriority","isLeapYear","absFloor","toInt","argumentForCoercion","coercedNumber","makeGetSet","keepTime","set$1","month","daysInMonth","regexes","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchOffset","matchShortOffset","matchWord","addRegexToken","regex","strictRegex","isStrict","getParseRegexForToken","regexEscape","matched","p1","p2","p3","p4","tokens","addParseToken","addWeekParseToken","_w","addTimeToArrayFromToken","modMonth","monthsShort","months","monthsShortRegex","monthsRegex","monthsParse","defaultLocaleMonths","defaultLocaleMonthsShort","MONTHS_IN_FORMAT","defaultMonthsShortRegex","defaultMonthsRegex","handleStrictParse","monthName","ii","llc","toLocaleLowerCase","_monthsParse","_longMonthsParse","_shortMonthsParse","setMonth","dayOfMonth","getSetMonth","computeMonthsParse","cmpLenRev","shortPieces","longPieces","mixedPieces","_monthsRegex","_monthsShortRegex","_monthsStrictRegex","_monthsShortStrictRegex","daysInYear","parseTwoDigitYear","getSetYear","createDate","h","M","ms","getFullYear","setFullYear","createUTCDate","UTC","setUTCFullYear","firstWeekOffset","dow","doy","fwd","getUTCDay","dayOfYearFromWeeks","week","weekday","resYear","resDayOfYear","dayOfYear","weekOfYear","resWeek","weekOffset","weeksInYear","weekOffsetNext","shiftWeekdays","ws","weekdaysMin","weekdaysShort","weekdays","weekdaysMinRegex","weekdaysShortRegex","weekdaysRegex","weekdaysParse","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","defaultWeekdaysRegex","defaultWeekdaysShortRegex","defaultWeekdaysMinRegex","handleStrictParse$1","weekdayName","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","day","computeWeekdaysParse","minp","shortp","longp","minPieces","_weekdaysRegex","_weekdaysShortRegex","_weekdaysMinRegex","_weekdaysStrictRegex","_weekdaysShortStrictRegex","_weekdaysMinStrictRegex","hFormat","hours","lowercase","minutes","matchMeridiem","_meridiemParse","seconds","kInput","_isPm","isPM","_meridiem","pos1","pos2","globalLocale","getSetHour","baseConfig","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","LTS","L","LL","LLL","LLLL","dayOfMonthOrdinalParse","relativeTime","future","past","ss","mm","hh","dd","w","ww","MM","yy","meridiemParse","localeFamilies","commonPrefix","arr1","arr2","minl","normalizeLocale","loadLocale","oldLocale","_abbr","getSetGlobalLocale","getLocale","defineLocale","_config","parentLocale","chooseLocale","checkOverflow","_overflowDayOfYear","_overflowWeeks","_overflowWeekday","extendedIsoRegex","basicIsoRegex","tzRegex","isoDates","isoTimes","aspNetJsonRegex","obsOffsets","UT","GMT","configFromISO","allowTime","dateFormat","timeFormat","tzFormat","configFromStringAndFormat","untruncateYear","yearStr","configFromRFC2822","parsedArray","monthStr","dayStr","hourStr","minuteStr","secondStr","weekdayStr","parsedInput","getDay","checkWeekday","obsOffset","militaryOffset","numOffset","hm","calculateOffset","setUTCMinutes","configFromArray","currentDate","expectedWeekday","yearToUse","nowValue","_useUTC","getMonth","getDate","currentDateArray","weekYear","weekdayOverflow","curWeek","GG","W","createLocal","_week","gg","_dayOfYear","dayOfYearFromWeekInfo","_nextDay","ISO_8601","RFC_2822","skipped","totalParsedInputLength","hour","isPm","meridiemHour","meridiemFixWrap","erasConvertYear","prepareConfig","preparse","tempConfig","bestMoment","scoreToBeat","currentScore","validFormatFound","bestFormatIsValid","score","configFromStringAndArray","createFromInputFallback","configFromString","dayOrDate","minute","millisecond","configFromObject","configFromInput","isUTC","prototypeMin","prototypeMax","pickBy","moments","ordering","Duration","years","quarters","quarter","weeks","isoWeek","days","unitHasDecimal","isDurationValid","_milliseconds","_days","_months","_data","_bubble","isDuration","absRound","offsetFromString","chunkOffset","matcher","parts","cloneWithOffset","setTime","getDateOffset","getTimezoneOffset","isUtc","aspNetRegex","isoRegex","createDuration","ret","diffRes","parseIso","positiveMomentsDifference","inp","createAdder","tmp","addSubtract","isAdding","invalid","isMomentInput","arrayTest","dataTypeTest","isNumberOrStringArray","objectTest","propertyTest","isMomentInputObject","isCalendarSpec","monthDiff","wholeMonthDiff","newLocaleData","defaultFormat","defaultFormatUtc","lang","mod$1","dividend","divisor","localStartOfDate","utcStartOfDate","matchEraAbbr","erasAbbrRegex","computeErasParse","abbrPieces","namePieces","narrowPieces","eras","narrow","_erasRegex","_erasNameRegex","_erasAbbrRegex","_erasNarrowRegex","addWeekYearFormatToken","getSetWeekYearHelper","weeksTarget","setWeekAll","dayOfYearData","erasNameRegex","erasNarrowRegex","erasParse","_eraYearOrdinalRegex","eraYearOrdinalParse","isoWeekYear","_dayOfMonthOrdinalParse","_ordinalParse","_dayOfMonthOrdinalParseLenient","getSetDayOfMonth","getSetMinute","getSetMillisecond","getSetSecond","parseMs","preParsePostFormat","sod","calendarFormat","asFloat","zoneDelta","startOfDate","isoWeekday","inputString","postformat","toNow","invalidAt","localInput","isBetween","inclusivity","localFrom","localTo","inputMs","parsingFlags","prioritized","unitsObj","u","getPrioritizedUnits","toArray","keepOffset","inspect","isLocal","for","creationData","eraName","since","until","eraNarrow","eraAbbr","eraYear","isoWeeks","weekInfo","weeksInWeekYear","isoWeeksInYear","isoWeeksInISOWeekYear","parseWeekday","parseIsoWeekday","keepLocalTime","keepMinutes","localAdjust","_changeInProgress","parseZone","tZone","hasAlignedHourOffset","isDST","isUtcOffset","zoneAbbr","dates","isDSTShifted","_isDSTShifted","array1","array2","dontConvert","lengthDiff","diffs","compareArrays","proto$1","get$1","listMonthsImpl","listWeekdaysImpl","localeSorted","_calendar","_longDateFormat","formatUpper","tok","_invalidDate","_ordinal","isFuture","_relativeTime","pastFuture","_eras","isFormat","_monthsShort","_monthsParseExact","firstDayOfYear","firstDayOfWeek","_weekdays","_weekdaysMin","_weekdaysShort","_weekdaysParseExact","_fullWeekdaysParse","isLower","langData","mathAbs","addSubtract$1","absCeil","daysToMonths","monthsToDays","makeAs","alias","as","asMilliseconds","asSeconds","asMinutes","asDays","asWeeks","asMonths","asQuarters","asYears","makeGetter","thresholds","substituteTimeAgo","abs$1","toISOString$1","totalSign","ymSign","daysSign","hmsSign","total","proto$2","monthsFromDays","argWithSuffix","argThresholds","withSuffix","th","posNegDuration","relativeTime$1","toIsoString","updateLocale","tmpLocale","relativeTimeRounding","roundingFunction","relativeTimeThreshold","threshold","limit","myMoment","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","DATE","TIME","TIME_SECONDS","TIME_MS","WEEK","MONTH","orig","patchXHR","fnName","newFn","redefineProp","FileAPI","shouldLoad","forceLoad","initializeUploadListener","__listeners","origAddEventListener","__url","__origError","__fileApiXHR","getAllResponseHeaders","abort","__requestHeaders","__isFileAPIShim","jsonp","complete","fileApiXHR","__completed","__loaded","__total","lengthComputable","loadend","resp","responseText","progress","noContentTimeout","hasFlash","__isFileAPIBlobShim","mimeTypes","getOffset","offsetParent","offsetTop","html5","jsUrl","basePath","script","allScripts","jsPath","staticPath","setAttribute","ngfFixIE","fileElem","changeFn","evt","fileApiChangeFn","isInputTypeFile","getFiles","__files_","disableFileInput","loadStarted","onabort","onloadstart","onloadend","onprogress","constructEvent","promisesCount","isResumeSupported","resumeSupported","sendHttp","_deferred","notifyProgress","progressFunc","getNotifyEvent","_start","_file","uploadWithAngular","_chunkSize","_finished","fileSize","_end","disableProgress","__setXHR_","__XHR","xhrFn","resumeSizeUrl","resumeSizeResponseReader","resumeSize","pause","origXhrFn","isUploadInProgress","rename","ngfName","jsonBlob","blob","_ngfBlob","json","toJson","isFile","flashId","internal","addFieldToFormData","toResumeFile","_fileKey","$$ngfCircularDetection","objectKey","arrayKey","_isDigested","translateScalars","resumeChunkSize","formDataAppender","http","urlToBlob","arrayBufferView","setDefaults","UploadExif","resizeWithParams","emptyPromise","handleFile","validatePattern","resizeIf","attrGetter","$width","$height","$file","resize","resizedFile","$error","$errorMessages","$errorParam","$ngfValidations","valid","applyModelValidation","getAttrWithDefaults","def","attrVal","shouldUpdateOn","modelOptions","updateOn","rejectPromise","happyPromise","updateModel","fileChange","noDelay","invalidFiles","newFiles","dupFiles","isSingleModel","$$ngfPrevValidFiles","$$ngfPrevInvalidFiles","invalidFile","$files","$newFiles","$duplicateFiles","$invalidFiles","$invalidFile","invalidModel","allNewFiles","prevValidFiles","prevInvalidFiles","invalids","valids","resizeAndUpdate","keep","resizingFiles","validateAfterResize","resizeVal","isResizeSupported","resizeFile","validate","validationResult","validsFiles","invalidsFiles","equals","f1","f2","$ngfOrigSize","isInPrevFiles","removeDuplicates","allowInvalid","validFiles","isExifSupported","applyExifRotation","fixedFile","applyExifRotations","generatedElems","linkFileSelect","fileChangeAttr","fileList","registerModelChangeValidator","unwatches","initialTouchStartY","initialTouchStartX","resetModel","updateId","attribute","bindAttrToFileInput","ref","createFileInput","touches","changedTouches","originalEvent","clientX","clientY","currentX","currentY","detectSwipe","contains","androidFixMinorVersion","isDelayedClickSupported","click","ie10SameFileSelectFix","replaceWith","removeAttr","unwatch","linkFileDirective","directiveName","resizeParams","isBackground","constructDataUrl","disallowObjectUrl","$ngfDataUrl","$ngfBlobUrl","naturalWidth","naturalHeight","clientHeight","UploadBase","base64DataUrl","urls","ff","$$ngfDataUrlPromise","$$ngfBlobUrlPromise","URL","webkitURL","createObjectURL","blobUrls","blobUrlsTotalSize","maxMemory","blobUrlsMaxMemory","blobUrlsMaxQueueSize","revokeObjectURL","imgSrcSanitizationWhitelist","aHrefSanitizationWhitelist","UploadDataUrl","$sce","trustedUrl","trustAsResourceUrl","$ngfDataUrlFilterInProgress","globStringToRegex","excludes","ratioToFloat","xIndex","$dirty","filesArray","markModelAsDirty","validation","getValidationAttr","validationName","dName","prevLength","ignoredErrors","runAllValidation","validateSync","totalSize","validateAsync","asyncFn","resolveResult","resolveInternal","imageDimensions","mediaDuration","$duration","deffer","$ngfWidth","$ngfHeight","$ngfDimensionPromise","img","secondsCounter","checkLoadErrorInCaseOfNoCallback","$ngfDuration","$ngfDurationPromise","checkLoadError","UploadValidate","imagen","quality","ratio","centerCrop","canvasElement","imageElement","imgWidth","imgHeight","ratioFloat","dimensions","srcWidth","srcHeight","maxHeight","marginX","marginY","calculateAspectRatioFit","getContext","drawImage","toDataURL","dataUrltoBlob","dataurl","origSize","mime","bstr","u8arr","$ngfName","restoreExif","dropAvailable","div","available","isDisabled","actualDragOverClass","leaveTimeout","dragOverDelay","dClass","delay","accept","calculateDragOverClass","clazz","$isDragging","$class","extractFilesAndUpdateModel","metaKey","updateOnType","allowDir","maxFiles","MAX_VALUE","maxTotalSize","includeDir","traverseFileTree","isDirectory","dirReader","createReader","readEntries","webkitGetAsEntry","getAsFile","extractFiles","extractFilesFromHtml","linkDrop","UploadResize","readAsArrayBuffer","readOrientation","slicedFile","orientation","view","getUint16","getUint32","little","setUint16","fixedArrayBuffer","canvas","applyTransform","buffer","binary","bytes","fromCharCode","arrayBufferToBase64","resized","ExifRestorer","chr1","chr2","enc1","enc2","enc3","chr3","enc4","KEY_STR","origFileBase64","resizedFileBase64","rawImage","decode64","segments","slice2Segments","image","exifManipulation","encode64","exifArray","getExifArray","newImageArray","insertExif","seg","imageData","separatePoint","mae","ato","rawImageArray","endPoint","restore","castPath","toKey","reIsDeepProp","reIsPlainProp","nativeObjectToString","isOwn","unmasked","memoizeCapped","rePropName","reEscapeChar","quote","subString","resolver","memoized","Cache","Hash","hashClear","hashDelete","hashGet","hashHas","hashSet","isMasked","reIsHostCtor","funcProto","reIsNative","coreJsData","maskSrcKey","assocIndexOf","getMapData","baseToString","arrayMap","symbolProto","symbolToString","iteratee","nested","ScheduleEventAssignedStatusEnum","RoleScope","GrantType","PayoutComparisonEnum","ProductOrderStatusType","WorkOrderSalesChannel","TemplateEnum","PaymentMethod","PayrollInvoiceStatus","PayrollManualSortEnum","ProductOrderAdjustmentType","CompensationProfileEnum","PayrollSortEnum","SplittingModifierType","OnboardingApplicationStatusType","ReferenceValueType","MessageTypeEnum","CRSType","GeoJSONObjectType","IcdCorporationStatusEnum","FeatureFlagOption","HostTypeEnum","EmployeeStatusEnum","ParameterAttributes","SecurityRuleSet","MemberTypes","CallingConventions","MethodAttributes","MethodImplAttributes","OvertimeType","ModuleEnum","MarkerIcon","Stack","arrayEach","baseAssign","baseAssignIn","cloneBuffer","copyArray","copySymbols","copySymbolsIn","getAllKeys","getAllKeysIn","initCloneArray","initCloneByTag","initCloneObject","isMap","isSet","keysIn","cloneableTags","bitmask","isDeep","isFlat","isFull","isFunc","stacked","subValue","stackClear","stackDelete","stackGet","stackHas","stackSet","pairs","LARGE_ARRAY_SIZE","copyObject","baseIsArguments","baseIsTypedArray","baseUnary","nodeIsTypedArray","typedArrayTags","isPrototype","nativeKeysIn","isProto","allocUnsafe","predicate","resIndex","baseGetAllKeys","cloneArrayBuffer","cloneDataView","cloneRegExp","cloneSymbol","cloneTypedArray","dataView","byteOffset","reFlags","symbolValueOf","typedArray","baseCreate","objectCreate","baseIsMap","nodeIsMap","baseIsSet","nodeIsSet","default","cachedGuess","links","countries","guesses","momentVersion","major","minor","charCodeToInt","charCode","unpackBase60","whole","fractional","multiplier","arrayToInt","mapIndices","indices","unpack","offsets","untils","intToUntil","abbrs","population","Zone","packedString","_set","Country","country_name","zone_names","OffsetAt","at","toTimeString","ZoneScore","offsetScore","abbrScore","findChange","low","high","mid","sortZoneScores","localeCompare","addToGuesses","guessesForUserOffsets","guessesOffset","offsetsLength","filteredGuesses","rebuildGuess","intlName","Intl","DateTimeFormat","resolvedOptions","timeZone","normalizeName","zoneScore","startYear","userOffsets","zoneScores","getZone","scoreOffsetAt","addZone","packed","normalized","caller","addLink","normal0","normal1","needsOffset","isUnixTimestamp","unpacked","zone_name","country_code","offsetNext","offsetPrev","moveAmbiguousForward","moveInvalidForward","offsetAt","dataVersion","_zones","_links","_names","_countries","country_zones","addCountries","zoneExists","didShowError","guess","ignoreCache","zonesForCountry","country","with_offset","old","abbrWrap","_z","resetZoneWrap","defaultZone","reTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","isBinary","isHidden","isVisible","defaultOptions","validInputSelector","inputValidators","tableContexts","idWarned","worksheetOptions","keyboardEvent","Escape","clipboard_events_1","validateSelectionForCopy","dispatchCopyEvents","errorEvents","createError","processedTDs","_loop_1","dispatchPasteEvents","getChangedCellValues","changes","composite","getChangedRangeCellValues","patternRow","patternRepetitions","cellIndexKey","currentCursor","updatedCursor","currentSelection","existingDict","moveSelection","extendSelection","currentRange","updatedState","pastComposite","isContained","cellRange","toggleMove","defaultCompiler","onChange","standbyElement","dispose","showStandbyInput","showActiveInput","recompile","createActiveElement","focusActiveElement","createStandbyElement","onFocus","handleActivation","childInput","onBlur","blurTarget","relatedTarget","handleDeactivation","shouldActivate","shouldDeactivate","activatingEvent","deactivatingEvent"],"mappings":"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","file":"commons.6f3ce8ed45887270aa68.chunk.min.js","sourcesContent":["var ___EXPOSE_LOADER_IMPORT___ = require(\"-!./moment.js\");\nvar ___EXPOSE_LOADER_GET_GLOBAL_THIS___ = require(\"../expose-loader/dist/runtime/getGlobalThis.js\");\nvar ___EXPOSE_LOADER_GLOBAL_THIS___ = ___EXPOSE_LOADER_GET_GLOBAL_THIS___;\nif (typeof ___EXPOSE_LOADER_GLOBAL_THIS___[\"moment\"] === 'undefined') ___EXPOSE_LOADER_GLOBAL_THIS___[\"moment\"] = ___EXPOSE_LOADER_IMPORT___;\nmodule.exports = ___EXPOSE_LOADER_IMPORT___;\n","import { IServiceProvider } from \"angular\";\r\nimport { StateDeclaration, StateProvider, StateService, UrlRouterProvider, Ng1StateDeclaration, Transition } from \"angular-ui-router\";\r\n\r\n// Apply a suffix to certain states to indicate that they will redirect to a state\r\n// that is lazy-loaded.\r\nconst LAZY_STATE_SUFFIX = \"lazy\";\r\n\r\nexport interface RouteDeclaration {\r\n state: string;\r\n config: Ng1StateDeclaration;\r\n}\r\n\r\nexport interface RouterHelper {\r\n configureStates(states: RouteDeclaration[], otherwisePath?: string): void;\r\n getStates(): StateDeclaration[];\r\n}\r\n\r\n// Source: https://github.com/johnpapa/angular-styleguide/blob/master/a1/README.md#style-y270\r\nexport class RouterHelperProvider implements IServiceProvider {\r\n\r\n constructor(private $stateProvider: StateProvider, private $urlRouterProvider: UrlRouterProvider) {\r\n 'ngInject';\r\n }\r\n\r\n $get($state: StateService): RouterHelper {\r\n 'ngInject';\r\n const { $stateProvider, $urlRouterProvider } = this;\r\n let hasOtherwise = false;\r\n return {\r\n configureStates(states, otherwisePath) {\r\n states.forEach((state: RouteDeclaration) => {\r\n $stateProvider.state(state.state, state.config);\r\n });\r\n if (otherwisePath && !hasOtherwise) {\r\n hasOtherwise = true;\r\n $urlRouterProvider.otherwise(otherwisePath);\r\n }\r\n },\r\n getStates() {\r\n return $state.get();\r\n }\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Return a function that calls a router helper to configure the given list of states.\r\n * @param {any} states The list of states to be configured.\r\n * @returns {function} The decorated configureStates method.\r\n */\r\nexport function configureStates(states: RouteDeclaration[], otherwise: string = null) {\r\n /**\r\n * Call configureStates from the injected provider on the states in scope.\r\n * @param routerHelper A router helper instance.\r\n */\r\n return function (routerHelper: RouterHelper) {\r\n 'ngInject'\r\n routerHelper.configureStates(states, otherwise);\r\n }\r\n}\r\n\r\n/**\r\n * Generate a list of route declarations where the child is intended to be accessed through an extension\r\n * to a list of parent states. Useful for defining many identical states that are commonly reachable\r\n * from various other states, such as modal popups.\r\n * @param childBase The base state declaration for the child state.\r\n * @param parents The list of parent state names that will be extended to add the child as a substate.\r\n */\r\nexport function addChildExtensions(childBase: Partial, parents: string[]): RouteDeclaration[] {\r\n return parents.map(state => ({\r\n state: `${state}.${childBase.name}`,\r\n config: {\r\n ...childBase,\r\n name: `${state}.${childBase.name}`\r\n }\r\n }));\r\n}\r\n\r\n/**\r\n * Return a ui-router lazy load function to initialize a module\r\n * with the name returned from the module promise function.\r\n * @param {any} modulePromiseFn A function returning a module name\r\n * @returns {any} The function that resolves when the module has finished loading.\r\n */\r\nexport function lazyLoad(modulePromiseFn) {\r\n return function ($transition$: Transition) {\r\n const $ocLazyLoad: oc.ILazyLoad = $transition$.injector().get(\"$ocLazyLoad\");\r\n return modulePromiseFn().then(mod => lazyLoadModule($ocLazyLoad, mod));\r\n }\r\n}\r\n\r\n/**\r\n * Return a state deriving from a lazy-loaded state, which redirects to the\r\n * lazy-loaded state upon entry.\r\n */\r\nexport function lazyChild(state: string, url: string) {\r\n return {\r\n state: state + LAZY_STATE_SUFFIX,\r\n config: {\r\n url: url,\r\n redirectTo: state\r\n }\r\n }\r\n}\r\n\r\nexport function resolveFromParam(paramName) {\r\n const res = function ($transition$: Transition) {\r\n return $transition$.params()[paramName];\r\n };\r\n // Manually annotate since ngAnnotate seems to return this as [\"$transition$\", function() { }] for some reason.\r\n res.$inject = [\"$transition$\"];\r\n return res;\r\n}\r\n\r\n/**\r\n * Load the module that was lazy loaded based on the given name using\r\n * the $ocLazyLoad service.\r\n * @param $ocLazyLoad An instance of the $ocLazyLoad service.\r\n * @param name The name of the module that was lazy loaded\r\n */\r\nfunction lazyLoadModule($ocLazyLoad: oc.ILazyLoad, name: string) {\r\n return $ocLazyLoad.load([\r\n { name: name },\r\n // Load the template cache with \"rerun\" to process the template urls\r\n // loaded along with the module.\r\n { name: \"apex.core.templateCache\" }\r\n ], { rerun: true })\r\n}\r\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n","// A module containing utilities used for filtering logic.\r\n\r\n/**\r\n * Return whether the given whole string instance contains an instance\r\n * of the search term within it, ignoring any differences in case.\r\n * @param {string} wholeString The whole string to search within\r\n * @param {string} instance A string instance used as the search term.\r\n * @returns {boolean} Whether the instance appears in the whole string.\r\n */\r\nexport function containsInvariant(wholeString, instance) {\r\n return !instance || (wholeString || \"\").toLowerCase().indexOf((instance || \"\").toLowerCase()) > -1;\r\n}\r\n\r\n/**\r\n * Return whether the two strings are equal, ignoring any differences in case.\r\n * @param {string} wholeString The left string instance\r\n * @param {string} instance The right string instance\r\n * @returns {boolean} Whether the strings are equal.\r\n */\r\nexport function equalsInvariant(wholeString, instance) {\r\n return (wholeString || \"\").toLowerCase() === (instance || \"\").toLowerCase();\r\n}\r\n\r\n/**\r\n * Return whether the given object contains an instance of all strings given\r\n * in the filter object, specified by the list of specific fields.\r\n * @param {any} obj The object being compared.\r\n * @param {any} filters An object representing filters on the given object.\r\n * @param {string[]} fields The list of field names which must all match or be\r\n * left blank in order for the filter to return true.\r\n * @returns {boolean} Whether the object contains all fields in the filter object.\r\n */\r\nexport function allContainsInvariant(obj, filters, fields) {\r\n return allFilter(obj, filters, fields, containsInvariant);\r\n}\r\n\r\nexport function allFilter(obj, filters, fields, comparer) {\r\n return fields.reduce((all, field) => all &&\r\n // If the filtered value is falsy, do not perform the filter.\r\n (!filters[field] || comparer(obj[field], filters[field])), true);\r\n}\r\n\r\n","var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar setGlobal = require('../internals/set-global');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.noTargetGet - prevent calling a getter on target\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) {\n target = global;\n } else if (STATIC) {\n target = global[TARGET] || setGlobal(TARGET, {});\n } else {\n target = (global[TARGET] || {}).prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.noTargetGet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contained in target\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty === typeof targetProperty) continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n // add a flag to not completely full polyfills\n if (options.sham || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(sourceProperty, 'sham', true);\n }\n // extend global\n redefine(target, key, sourceProperty, options);\n }\n};\n","/**\r\n * Get the exception message from the $http exception object.\r\n */\r\nexport function getExceptionMessage(ex) {\r\n // Make a list of patterns to match, in order, on the exception object.\r\n const patterns = [\r\n { prop: \"data\", transform: getExceptionMessage },\r\n { prop: \"message\", transform: identity },\r\n { prop: \"InnerException\", transform: getInnerExceptionMessage },\r\n { prop: \"Message\", transform: identity },\r\n { prop: \"Messages\", transform: messages => messages.join(\", \") },\r\n { prop: \"statusText\", transform: identity },\r\n {\r\n prop: \"status\",\r\n transform: status => status <= 0\r\n ? \"The connection was reset or blocked\"\r\n : ex\r\n }\r\n ]\r\n\r\n // If the object is falsy, return it.\r\n if (!ex) return ex;\r\n for (const pattern of patterns) {\r\n if (ex[pattern.prop] !== undefined) {\r\n const message = pattern.transform(ex[pattern.prop]);\r\n if (message) {\r\n // If the message is empty, skip to the next field.\r\n return message;\r\n }\r\n }\r\n }\r\n // if the object doesn't match any patterns, return it directly\r\n return ex\r\n}\r\n\r\n/**\r\n * Create a new scope with the given args injected, and evaluate the bound string\r\n * in that child scope.\r\n * @param {any} scope The parent scope.\r\n * @param {any} args A generic object of arguments representing scope values to be included.\r\n * @param {string} evalString Code to be evaluated in the child scope.\r\n */\r\nexport function evalInChildScope(scope, args, evalString) {\r\n // Don't pass args to $new since creating an isolate scope means changes\r\n // won't execute in the parent scope as expected.\r\n const childScope = Object.assign(scope.$new(), args || {});\r\n return childScope.$eval(evalString);\r\n}\r\n\r\n/**\r\n * Strip the thousands separator from the string number and return it as a number.\r\n * @param {String} n String to be converted to a number.\r\n * @returns {Number} The input string converted to a Number.\r\n */\r\nexport function readNumber(n) {\r\n if (!n) return 0;\r\n // Strip formatting characters like $, %, thousands separators.\r\n // Treat left parenthesis as a negative sign and strip right parenthensis, since (number) means -number.\r\n return Number(n.toString().replace(/[$,%\\s)]/g, \"\").replace(\"(\", \"-\")) || 0;\r\n}\r\n\r\n/**\r\n * Return whether the given object can be parsed as a finite number.\r\n * @param {any} n The value being checked.\r\n * @returns {boolean} Whether the input number is a numeric value.\r\n */\r\nexport function isNumeric(n) {\r\n const strippedNumeric = n.toString().replace(/[$,%\\s)]/g, \"\").replace(\"(\", \"-\");\r\n const convertedNumeric = parseFloat(strippedNumeric);\r\n // The regex isn't nearly comprehensive, but is a quick way to disqualify leftover non-numeric characters.\r\n return /^[\\d\\-.]+$/.test(strippedNumeric) && !isNaN(convertedNumeric) && isFinite(convertedNumeric);\r\n}\r\n\r\n/**\r\n * Drop a certain number of stack frames from the given stack trace.\r\n * @param stack The stack trace whose top n frames will be dropped.\r\n * @param n The number of frames to drop.\r\n */\r\nexport function dropStackFrames(stack, n) {\r\n // Frames typically come in two formats: Error preamble at the top, followed by \" at ...\"\r\n // or no preamble with an ampersand between the function name and the location.\r\n const framePredicate = p => /@http/.test(p) || /\\s+at/.test(p);\r\n const frames = stack.split(\"\\n\");\r\n const topIndex = frames.findIndex(framePredicate);\r\n const newTopIndex = Math.min(topIndex + n, frames.length);\r\n return frames.slice(0, topIndex).concat(frames.slice(newTopIndex)).join(\"\\n\");\r\n}\r\n\r\n/**\r\n * A function that returns its parameter.\r\n * @param {any} i The value to be returned\r\n * @returns {any} The object i by value.\r\n */\r\nfunction identity(i) {\r\n return i;\r\n}\r\n\r\n/**\r\n * Get the exception message for the .NET exception instance or\r\n * the message for its innermost InnerException.\r\n * @param {import(\"./data-utils\").DotNetException} ex A .NET System.Exception instance.\r\n */\r\nfunction getInnerExceptionMessage(ex) {\r\n return ex.InnerException ? getInnerExceptionMessage(ex.InnerException)\r\n : ex.ExceptionMessage || ex.Message;\r\n}\r\n","\"use strict\";\r\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}));\r\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n__exportStar(require(\"./generated/models\"), exports);\r\n__exportStar(require(\"./paging\"), exports);\r\n//# sourceMappingURL=index.js.map","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n","var check = function (it) {\n return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line no-undef\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n // eslint-disable-next-line no-new-func\n Function('return this')();\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","var fails = require('../internals/fails');\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !fails(function () {\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n});\n","var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar has = require('../internals/has');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar WellKnownSymbolsStore = shared('wks');\nvar Symbol = global.Symbol;\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!has(WellKnownSymbolsStore, name)) {\n if (NATIVE_SYMBOL && has(Symbol, name)) WellKnownSymbolsStore[name] = Symbol[name];\n else WellKnownSymbolsStore[name] = createWellKnownSymbol('Symbol.' + name);\n } return WellKnownSymbolsStore[name];\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n/**\n * Checks whether given value's type is one of a few Error or Error-like\n * {@link isError}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isError(wat) {\n switch (Object.prototype.toString.call(wat)) {\n case '[object Error]':\n return true;\n case '[object Exception]':\n return true;\n case '[object DOMException]':\n return true;\n default:\n return isInstanceOf(wat, Error);\n }\n}\n/**\n * Checks whether given value's type is ErrorEvent\n * {@link isErrorEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isErrorEvent(wat) {\n return Object.prototype.toString.call(wat) === '[object ErrorEvent]';\n}\n/**\n * Checks whether given value's type is DOMError\n * {@link isDOMError}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isDOMError(wat) {\n return Object.prototype.toString.call(wat) === '[object DOMError]';\n}\n/**\n * Checks whether given value's type is DOMException\n * {@link isDOMException}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isDOMException(wat) {\n return Object.prototype.toString.call(wat) === '[object DOMException]';\n}\n/**\n * Checks whether given value's type is a string\n * {@link isString}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isString(wat) {\n return Object.prototype.toString.call(wat) === '[object String]';\n}\n/**\n * Checks whether given value's is a primitive (undefined, null, number, boolean, string)\n * {@link isPrimitive}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isPrimitive(wat) {\n return wat === null || (typeof wat !== 'object' && typeof wat !== 'function');\n}\n/**\n * Checks whether given value's type is an object literal\n * {@link isPlainObject}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isPlainObject(wat) {\n return Object.prototype.toString.call(wat) === '[object Object]';\n}\n/**\n * Checks whether given value's type is an Event instance\n * {@link isEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isEvent(wat) {\n return typeof Event !== 'undefined' && isInstanceOf(wat, Event);\n}\n/**\n * Checks whether given value's type is an Element instance\n * {@link isElement}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isElement(wat) {\n return typeof Element !== 'undefined' && isInstanceOf(wat, Element);\n}\n/**\n * Checks whether given value's type is an regexp\n * {@link isRegExp}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isRegExp(wat) {\n return Object.prototype.toString.call(wat) === '[object RegExp]';\n}\n/**\n * Checks whether given value has a then function.\n * @param wat A value to be checked.\n */\nexport function isThenable(wat) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return Boolean(wat && wat.then && typeof wat.then === 'function');\n}\n/**\n * Checks whether given value's type is a SyntheticEvent\n * {@link isSyntheticEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isSyntheticEvent(wat) {\n return isPlainObject(wat) && 'nativeEvent' in wat && 'preventDefault' in wat && 'stopPropagation' in wat;\n}\n/**\n * Checks whether given value's type is an instance of provided constructor.\n * {@link isInstanceOf}.\n *\n * @param wat A value to be checked.\n * @param base A constructor to be used in a check.\n * @returns A boolean representing the result.\n */\nexport function isInstanceOf(wat, base) {\n try {\n return wat instanceof base;\n }\n catch (_e) {\n return false;\n }\n}\n//# sourceMappingURL=is.js.map","var requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `ToObject` abstract operation\n// https://tc39.github.io/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return Object(requireObjectCoercible(argument));\n};\n","import { IHttpService, IPromise } from \"angular\";\r\nimport { IcdOfficeModel, IcdOfficeCreateDTO, IcdOfficeUpdateDTO, IcdOfficeListResponse, IcdCorporationStatusEnum, ICDOfficeDivisionModel } from \"@herbjoy/apex-api-models\";\r\n\r\ninterface IcdOfficeGetRequest {\r\n icdOfficeID?: number;\r\n officeName?: string;\r\n inactive?: boolean;\r\n icdCorporationID?: number;\r\n icdCorporationName?: string;\r\n icdCorporationStatus?: IcdCorporationStatusEnum;\r\n officeCity?: string;\r\n officeState?: string;\r\n moveInDate?: Date;\r\n moveOutDate?: Date;\r\n moduleAdminID?: number;\r\n moduleID?: number;\r\n addedAfter?: number;\r\n modifiedSince?: Date;\r\n divisionID?: number;\r\n employeeID?: number;\r\n employmentDate?: number;\r\n}\r\n\r\nexport interface IcdOfficeResponse extends Omit {\r\n OfficeId?: number;\r\n OfficeDivisions: {\r\n Divisions: { [divisionID: number]: ICDOfficeDivisionModel };\r\n };\r\n}\r\n\r\nexport class IcdOfficeService {\r\n constructor(private $http: IHttpService, private apexApiUrl: string) {\r\n 'ngInject'\r\n }\r\n\r\n triggerTelemapperSync(meridianOfficeID: number) {\r\n var data = {\r\n \"teleMapperEntryID\": null,\r\n \"meridianOfficeID\": meridianOfficeID\r\n }\r\n return this.$http({\r\n method: \"POST\",\r\n headers: { Accept: \"application/json\" },\r\n url: this.apexApiUrl + \"payrolls/create-meridian-job\",\r\n params: data\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n /**\r\n * Get all ICD offices matching the given query requirements.\r\n * @param query The filter parameters for the office list.\r\n * @returns The resolved list of ICD offices\r\n */\r\n\r\n retrieveIcdOffices(query: IcdOfficeGetRequest = null) {\r\n return this.$http({\r\n method: \"GET\",\r\n headers: { Accept: \"application/json\" },\r\n url: this.apexApiUrl + \"icd-offices\",\r\n params: query\r\n })\r\n .then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n retrieveIcdOffice(icdOfficeID: number) {\r\n return this.$http({\r\n method: \"GET\",\r\n url: this.apexApiUrl + \"icd-offices/\" + icdOfficeID,\r\n headers: { Accept: \"application/json \" }\r\n }).then(function (response) {\r\n return response.data;\r\n })\r\n }\r\n\r\n createIcdOffice(office: IcdOfficeCreateDTO) {\r\n return this.$http<{ Id: number }>({\r\n method: \"POST\",\r\n url: this.apexApiUrl + \"icd-offices\",\r\n data: office,\r\n headers: { Accept: \"application/json\", \"Content-Type\": \"application/json\" }\r\n }).then(function (response) {\r\n return response.data;\r\n })\r\n }\r\n\r\n updateIcdOffice(icdOfficeID: number, office: IcdOfficeUpdateDTO): IPromise {\r\n return this.$http({\r\n method: \"PUT\",\r\n url: this.apexApiUrl + \"icd-offices/\" + icdOfficeID,\r\n data: office,\r\n headers: { \"Content-Type\": \"application/json\" }\r\n }).then(() => null);\r\n }\r\n\r\n /**\r\n * Create a roster sync job for the given office. The roster sync job will\r\n * perform an import of the office's roster from third-part sources, where available.\r\n * @param {number} icdOfficeID The office whose roster will be synced\r\n * @param {Date} lastDate The cutoff date for updates to the roster.\r\n */\r\n createIcdOfficeRosterSyncJob(icdOfficeID: number, lastDate: Date): IPromise {\r\n return this.$http({\r\n method: \"POST\",\r\n url: `${this.apexApiUrl}/icd-offices/${icdOfficeID}/roster-sync-job`,\r\n data: {\r\n lastDate\r\n }\r\n }).then(() => null);\r\n }\r\n\r\n /**\r\n * Move the Meridian Office ID from the given office to a new office.\r\n * @param icdOfficeID The office currently owning the Meridan Office ID\r\n * @param request The details of the request, including the new target office.\r\n */\r\n moveMeridianOfficeID(icdOfficeID: number, request: { icdOfficeID: number }) {\r\n return this.$http({\r\n method: \"POST\",\r\n url: `${this.apexApiUrl}/icd-offices/${icdOfficeID}/meridian-office-id/movement`,\r\n data: request\r\n }).then(response => response.data);\r\n }\r\n\r\n deleteIcdOffice(icdOfficeID: number): IPromise {\r\n return this.$http({\r\n method: \"DELETE\",\r\n url: this.apexApiUrl + \"icd-offices/\" + icdOfficeID\r\n }).then(() => null);\r\n }\r\n}\r\n\r\nexport function sortIcdOfficeByOwner(a, b) {\r\n if (a.OwnerName < b.OwnerName) {\r\n return -1;\r\n } else if (a.OwnerName > b.OwnerName) {\r\n return 1;\r\n }\r\n if (a.IcdCorporationName < b.IcdCorporationName) {\r\n return -1;\r\n } else if (a.IcdCorporationName < b.IcdCorporationName) {\r\n return 1;\r\n }\r\n\r\n if (a.OfficeName < b.OfficeName) {\r\n return -1;\r\n } else if (a.OfficeName > b.OfficeName) {\r\n return 1;\r\n }\r\n\r\n return 0;\r\n}\r\n","/**\r\n * An enumeration of all apex site feature modules.\r\n */\r\nexport const SiteModuleEnum = {\r\n ApplicationAdministration: 1,\r\n TimeEntry: 2,\r\n Roster: 3,\r\n Payroll: 4,\r\n RsScheduling: 8,\r\n ShowLocations: 14,\r\n SalesTeams: 15,\r\n Users: 16,\r\n Commission: 17,\r\n Reports: 18, // Mainly ADP Reports.\r\n Auditing: 19,\r\n Invoicing: 20,\r\n Financials: 21,\r\n Onboarding: 22,\r\n Leads: 23,\r\n ProgramAdministration: 24,\r\n Payout: 25,\r\n RogersReports: 26,\r\n EventsCoordination: 27,\r\n EventsScheduling: 28\r\n};\r\n","/** An enum of marker icon values. */\r\nexport const markerIcons = {\r\n DefaultPin: \"DefaultPin\",\r\n ColoredPin: \"ColoredPin\",\r\n TwoTonedCircle: \"TwoTonedCircle\"\r\n}\r\n\r\nexport const markerIconsEnum = {\r\n [markerIcons.DefaultPin]: 1,\r\n [markerIcons.ColoredPin]: 2,\r\n [markerIcons.TwoTonedCircle]: 3\r\n}\r\n\r\nexport const defaultPin = {\r\n value: markerIcons.DefaultPin,\r\n text: \"Pin (monochrome)\",\r\n description: \"Default marker settings (pin icon, cannot be colourized)\"\r\n}\r\n\r\nexport const coloredPin = {\r\n value: markerIcons.ColoredPin,\r\n text: \"Pin (coloured)\",\r\n description: \"Pin icon that uses the Current status colour\"\r\n}\r\n\r\nexport const twoTonedCircle = {\r\n value: markerIcons.TwoTonedCircle,\r\n text: \"Two-toned Circle\",\r\n description: \"Circle marker with Declaration status colour on outside and Current status on inside\"\r\n}\r\n\r\n/**\r\n * Return the corresponding marker icon value given the enum value.\r\n * @param {any} markerIconEnum\r\n */\r\nexport function getMarkerIcon(markerIconEnum) {\r\n // Map either the enum string value or numerical value to the object.\r\n switch (markerIconEnum) {\r\n case markerIcons.DefaultPin:\r\n case markerIconsEnum[markerIcons.DefaultPin]:\r\n return defaultPin;\r\n case markerIcons.ColoredPin:\r\n case markerIconsEnum[markerIcons.ColoredPin]:\r\n return coloredPin;\r\n case markerIcons.TwoTonedCircle:\r\n case markerIconsEnum[markerIcons.TwoTonedCircle]:\r\n return twoTonedCircle;\r\n default:\r\n return null;\r\n }\r\n}\r\n","/**\r\n * An enumeration of options for representing user feature flag settings.\r\n */\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nexport const FeatureFlagOptions = {\r\n /** Indicates that the feature is always enabled */\r\n enabled: \"enabled\",\r\n /** Indicates that the feature is always disabled */\r\n disabled: \"disabled\",\r\n /** Indicates that the user has opted into a feature. The user can opt out of the feature. */\r\n optIn: \"optIn\",\r\n /** Indicates that the user has opted out of a feature. The user can opt back into the feature. */\r\n optOut: \"optOut\",\r\n /** Indicates that the user has made no preference known for the feature. */\r\n noPref: \"noPref\"\r\n};\r\n","var toInteger = require('../internals/to-integer');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.github.io/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","import { LeadCreateRequest, LeadGroupLeadsMarkersResponse, LeadMarkerListResponse, LeadMarkerResponse, LeadPatchRequest, LeadResponse, LeadStatusChangeResponse, RepLastLeadPositionRM, RogersLeadsConversionDetailReport, RogersLeadsConversionReport, RogersLeadsRepStatisticsRM } from '@herbjoy/apex-api-models';\r\nimport { IHttpService } from 'angular';\r\nimport { DivisionEnum } from './division.service';\r\n\r\n/**\r\n * An enumeration of types that can describe a lead status. Statuses are flags,\r\n * and can be combined in any way.\r\n */\r\nexport enum StatusTypeEnum {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n Interaction = 1,\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n Observation = 2,\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n Declaration = 4\r\n}\r\n\r\nexport type LeadMarker = LeadMarkerResponse & { Color: string };\r\n\r\nexport class LeadsService {\r\n statusTypeEnum: typeof StatusTypeEnum;\r\n constructor(private $http: IHttpService, private apexApiUrl: string) {\r\n 'ngInject';\r\n this.statusTypeEnum = StatusTypeEnum;\r\n }\r\n\r\n /**\r\n * Retrieve leads that match the filters provided in the given query object.\r\n * @param {any} query The filter parameters for the query\r\n * @returns {Promise} The list of leads.\r\n */\r\n retrieveLeads(query) {\r\n return this.$http({\r\n method: \"GET\",\r\n url: this.apexApiUrl + \"leads\",\r\n params: query,\r\n headers: { Accept: \"application/json\" }\r\n })\r\n .then(response => {\r\n return response.data;\r\n })\r\n }\r\n\r\n retrieveLeadMarkers(query) {\r\n return this.$http({\r\n method: \"GET\",\r\n url: this.apexApiUrl + \"lead-markers\",\r\n params: query,\r\n headers: { Accept: \"application/json\" }\r\n })\r\n .then(response => {\r\n const leadMarkerList = response.data;\r\n return hydrateLeadMarkerList(leadMarkerList)\r\n })\r\n .then(leads => {\r\n // Map the response data into VM format.\r\n return leads.map(lead => {\r\n const marker = mapLeadSnapshotVM(lead);\r\n return marker;\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Retrieve the lead with the given ID.\r\n * @param leadID The primary key for the lead.\r\n * @returns The promise resolving to the lead.\r\n */\r\n retrieveLead(leadID: number) {\r\n return this.$http({\r\n method: \"GET\",\r\n url: this.apexApiUrl + \"leads/\" + leadID,\r\n headers: { Accept: \"application/json\" }\r\n })\r\n .then(function (response) {\r\n return response.data;\r\n })\r\n }\r\n\r\n /**\r\n * Create a new lead from the given request.\r\n * @param leadCreateRequest The request body\r\n * @returns The result of the create request.\r\n */\r\n createLead(leadCreateRequest: LeadCreateRequest) {\r\n return this.$http({\r\n method: \"POST\",\r\n url: this.apexApiUrl + \"leads\",\r\n data: leadCreateRequest,\r\n headers: { \"Content-Type\": \"application/json\", Accept: \"application/json\" }\r\n });\r\n }\r\n\r\n /**\r\n * Bulk create or update all leads for each request in the list.\r\n * @param {any} leadCreateRequests The request body\r\n * @returns {Promise} The result of the create request\r\n */\r\n bulkCreateLeads(leadCreateRequests: LeadCreateRequest) {\r\n return this.$http({\r\n method: \"POST\",\r\n url: this.apexApiUrl + \"leads/bulk\",\r\n data: leadCreateRequests,\r\n headers: { \"Content-Type\": \"application/json\" }\r\n });\r\n }\r\n\r\n /**\r\n * Patch the lead with the given ID with the provided patch data.\r\n * @param leadID The lead being updated.\r\n * @param leadPatchRequest The request body\r\n * @returns The result of the patch request.\r\n */\r\n patchLead(leadID, leadPatchRequest: LeadPatchRequest) {\r\n return this.$http({\r\n method: \"PATCH\",\r\n url: this.apexApiUrl + \"leads/\" + leadID,\r\n data: leadPatchRequest,\r\n headers: { \"Content-Type\": \"application/json\" }\r\n });\r\n }\r\n\r\n /**\r\n * Patch the given leads with the provided patch data.\r\n * @param {any} leadPatchRequest The request body\r\n * @returns {Promise} The result of the patch.\r\n */\r\n bulkPatchLead(leadPatchRequest: LeadPatchRequest) {\r\n return this.$http({\r\n method: \"PATCH\",\r\n url: this.apexApiUrl + \"leads/bulk\",\r\n data: leadPatchRequest,\r\n headers: { \"Content-Type\": \"application/json\" }\r\n });\r\n }\r\n\r\n // return {\r\n // retrieveRepLastLeadPositionsReport: retrieveRepLastLeadPositionsReport,\r\n // retrieveRepLeadsActivity: retrieveRepLeadsActivity,\r\n // };\r\n retrieveLeadsConversionReport(query) {\r\n return this.$http({\r\n method: \"GET\",\r\n url: this.apexApiUrl + \"reports/leads-conversion\",\r\n params: query,\r\n headers: { Accept: \"application/json\" }\r\n })\r\n .then(function (response) {\r\n return response.data;\r\n })\r\n }\r\n\r\n retrieveLeadsConversionDetailReport(query) {\r\n return this.$http({\r\n method: \"GET\",\r\n url: this.apexApiUrl + \"reports/leads-conversion-detail\",\r\n params: query,\r\n headers: { Accept: \"application/json\" }\r\n })\r\n .then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n retrieveLeadsActivityReport(query) {\r\n return this.$http({\r\n method: \"GET\",\r\n url: this.apexApiUrl + \"reports/rogers/lead-group-rep-statistics\",\r\n params: query,\r\n headers: { Accept: \"application/json\" }\r\n })\r\n .then(function (response) {\r\n return response.data;\r\n })\r\n }\r\n\r\n retrieveLeadGroupLeads(query) {\r\n return this.$http({\r\n method: \"GET\",\r\n url: this.apexApiUrl + \"lead-territories/lead-markers\",\r\n params: query,\r\n headers: { Accept: \"application/json\" }\r\n })\r\n .then(function (response) {\r\n const leadMarkerList = response.data;\r\n const leads = hydrateLeadMarkerList(leadMarkerList);\r\n const markers = leads.map(function (lead) {\r\n const marker = mapLeadSnapshotVM(lead);\r\n return marker;\r\n });\r\n return {\r\n Leads: markers,\r\n TerritoriesLeadsCount: response.data.TerritoriesLeadsCounts\r\n };\r\n });\r\n }\r\n\r\n /**\r\n * Get the list of special data keys to be displayed prominently for leads\r\n * under the given division.\r\n * @param {number} divisionID The division for which the list of data keys will be loaded.\r\n */\r\n getLeadDataKeysByDivision(divisionID: number) {\r\n let keys: { field: string, label: string }[];\r\n switch (divisionID) {\r\n case DivisionEnum.Rogers: {\r\n const promoCodeFields = [\"New Offer\", \"New\"]\r\n keys = promoCodeFields.map(field => ({ field, label: \"Promo Code\" }))\r\n break;\r\n }\r\n default:\r\n keys = [];\r\n }\r\n return keys;\r\n }\r\n\r\n retrieveRepLastLeadPositionsReport(params) {\r\n return this.$http({\r\n method: \"GET\",\r\n url: `${this.apexApiUrl}/reports/rep-last-lead-positions`,\r\n params\r\n }).then(response => response.data)\r\n }\r\n\r\n retrieveRepLeadsActivity(employeeID, params) {\r\n return this.$http({\r\n method: \"GET\",\r\n url: `${this.apexApiUrl}/employees/${employeeID}/leads-activity`,\r\n params: params\r\n }).then(response => response.data)\r\n }\r\n}\r\n\r\n/**\r\n * Hydrate the list of leads within the normalized lead marker list response.\r\n * @param {any} leadMarkerList A lead marker list response.\r\n */\r\nexport function hydrateLeadMarkerList(leadMarkerList: LeadMarkerListResponse) {\r\n for (const lead of leadMarkerList.Leads) {\r\n const currentStatus = leadMarkerList.LeadStatuses.find(p => p.LeadStatusID === lead.LeadStatusID)\r\n const declaredStatus = leadMarkerList.LeadStatuses.find(p => p.LeadStatusID === lead.DeclaredStatusID)\r\n if (currentStatus) {\r\n Object.assign(lead, {\r\n LeadStatusID: lead.LeadStatusID,\r\n LeadStatusName: currentStatus.Name,\r\n Color: currentStatus.Color,\r\n Hue: currentStatus.Hue\r\n })\r\n }\r\n if (declaredStatus) {\r\n Object.assign(lead, {\r\n DeclarationStatusID: declaredStatus.LeadStatusID,\r\n DeclarationStatusName: declaredStatus.Name,\r\n DeclarationStatusColor: declaredStatus.Color,\r\n DeclarationStatusHue: declaredStatus.Hue\r\n })\r\n }\r\n }\r\n return leadMarkerList.Leads\r\n}\r\n\r\n/**\r\n * Map the given lead snapshot response data into a lead snapshot VM.\r\n * @param {any} lead A lead snapshot response from the lead group leads API\r\n * @returns {any} The lead snapshot mapped into view model format.\r\n */\r\nexport function mapLeadSnapshotVM(lead) {\r\n const vm = {\r\n LeadID: lead.LeadID,\r\n AssignedOwners: [],\r\n AssignedReps: [],\r\n LeadActivity: lead.LeadActivityHistory,\r\n LeadGroupID: lead.LeadGroupID,\r\n CurrentStatus: lead.LeadStatusID ? {\r\n LeadStatusID: lead.LeadStatusID,\r\n Name: lead.LeadStatusName,\r\n Color: lead.Color\r\n } : null,\r\n DeclarationStatus: lead.DeclarationStatusID ? {\r\n LeadStatusID: lead.DeclarationStatusID,\r\n Name: lead.DeclarationStatusName,\r\n Color: lead.DeclarationStatusColor\r\n } : null,\r\n Latitude: lead.Latitude,\r\n Longitude: lead.Longitude,\r\n Color: lead.CurrentStatus ? lead.CurrentStatus.Color : null\r\n }\r\n\r\n return vm\r\n}\r\n","import { isString } from './is';\nimport { snipLine } from './string';\n/**\n * Requires a module which is protected against bundler minification.\n *\n * @param request The module path to resolve\n */\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport function dynamicRequire(mod, request) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return mod.require(request);\n}\n/**\n * Checks whether we're in the Node.js or Browser environment\n *\n * @returns Answer to given question\n */\nexport function isNodeEnv() {\n return Object.prototype.toString.call(typeof process !== 'undefined' ? process : 0) === '[object process]';\n}\nvar fallbackGlobalObject = {};\n/**\n * Safely get global scope object\n *\n * @returns Global scope object\n */\nexport function getGlobalObject() {\n return (isNodeEnv()\n ? global\n : typeof window !== 'undefined'\n ? window\n : typeof self !== 'undefined'\n ? self\n : fallbackGlobalObject);\n}\n/**\n * UUID4 generator\n *\n * @returns string Generated UUID4.\n */\nexport function uuid4() {\n var global = getGlobalObject();\n var crypto = global.crypto || global.msCrypto;\n if (!(crypto === void 0) && crypto.getRandomValues) {\n // Use window.crypto API if available\n var arr = new Uint16Array(8);\n crypto.getRandomValues(arr);\n // set 4 in byte 7\n // eslint-disable-next-line no-bitwise\n arr[3] = (arr[3] & 0xfff) | 0x4000;\n // set 2 most significant bits of byte 9 to '10'\n // eslint-disable-next-line no-bitwise\n arr[4] = (arr[4] & 0x3fff) | 0x8000;\n var pad = function (num) {\n var v = num.toString(16);\n while (v.length < 4) {\n v = \"0\" + v;\n }\n return v;\n };\n return (pad(arr[0]) + pad(arr[1]) + pad(arr[2]) + pad(arr[3]) + pad(arr[4]) + pad(arr[5]) + pad(arr[6]) + pad(arr[7]));\n }\n // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523\n return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n // eslint-disable-next-line no-bitwise\n var r = (Math.random() * 16) | 0;\n // eslint-disable-next-line no-bitwise\n var v = c === 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n}\n/**\n * Parses string form of URL into an object\n * // borrowed from https://tools.ietf.org/html/rfc3986#appendix-B\n * // intentionally using regex and not href parsing trick because React Native and other\n * // environments where DOM might not be available\n * @returns parsed URL object\n */\nexport function parseUrl(url) {\n if (!url) {\n return {};\n }\n var match = url.match(/^(([^:/?#]+):)?(\\/\\/([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?$/);\n if (!match) {\n return {};\n }\n // coerce to undefined values to empty string so we don't get 'undefined'\n var query = match[6] || '';\n var fragment = match[8] || '';\n return {\n host: match[4],\n path: match[5],\n protocol: match[2],\n relative: match[5] + query + fragment,\n };\n}\n/**\n * Extracts either message or type+value from an event that can be used for user-facing logs\n * @returns event's description\n */\nexport function getEventDescription(event) {\n if (event.message) {\n return event.message;\n }\n if (event.exception && event.exception.values && event.exception.values[0]) {\n var exception = event.exception.values[0];\n if (exception.type && exception.value) {\n return exception.type + \": \" + exception.value;\n }\n return exception.type || exception.value || event.event_id || '';\n }\n return event.event_id || '';\n}\n/** JSDoc */\nexport function consoleSandbox(callback) {\n var global = getGlobalObject();\n var levels = ['debug', 'info', 'warn', 'error', 'log', 'assert'];\n if (!('console' in global)) {\n return callback();\n }\n var originalConsole = global.console;\n var wrappedLevels = {};\n // Restore all wrapped console methods\n levels.forEach(function (level) {\n if (level in global.console && originalConsole[level].__sentry_original__) {\n wrappedLevels[level] = originalConsole[level];\n originalConsole[level] = originalConsole[level].__sentry_original__;\n }\n });\n // Perform callback manipulations\n var result = callback();\n // Revert restoration to wrapped state\n Object.keys(wrappedLevels).forEach(function (level) {\n originalConsole[level] = wrappedLevels[level];\n });\n return result;\n}\n/**\n * Adds exception values, type and value to an synthetic Exception.\n * @param event The event to modify.\n * @param value Value of the exception.\n * @param type Type of the exception.\n * @hidden\n */\nexport function addExceptionTypeValue(event, value, type) {\n event.exception = event.exception || {};\n event.exception.values = event.exception.values || [];\n event.exception.values[0] = event.exception.values[0] || {};\n event.exception.values[0].value = event.exception.values[0].value || value || '';\n event.exception.values[0].type = event.exception.values[0].type || type || 'Error';\n}\n/**\n * Adds exception mechanism to a given event.\n * @param event The event to modify.\n * @param mechanism Mechanism of the mechanism.\n * @hidden\n */\nexport function addExceptionMechanism(event, mechanism) {\n if (mechanism === void 0) { mechanism = {}; }\n // TODO: Use real type with `keyof Mechanism` thingy and maybe make it better?\n try {\n // @ts-ignore Type 'Mechanism | {}' is not assignable to type 'Mechanism | undefined'\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n event.exception.values[0].mechanism = event.exception.values[0].mechanism || {};\n Object.keys(mechanism).forEach(function (key) {\n // @ts-ignore Mechanism has no index signature\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n event.exception.values[0].mechanism[key] = mechanism[key];\n });\n }\n catch (_oO) {\n // no-empty\n }\n}\n/**\n * A safe form of location.href\n */\nexport function getLocationHref() {\n try {\n return document.location.href;\n }\n catch (oO) {\n return '';\n }\n}\n/**\n * Given a child DOM element, returns a query-selector statement describing that\n * and its ancestors\n * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz]\n * @returns generated DOM path\n */\nexport function htmlTreeAsString(elem) {\n // try/catch both:\n // - accessing event.target (see getsentry/raven-js#838, #768)\n // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly\n // - can throw an exception in some circumstances.\n try {\n var currentElem = elem;\n var MAX_TRAVERSE_HEIGHT = 5;\n var MAX_OUTPUT_LEN = 80;\n var out = [];\n var height = 0;\n var len = 0;\n var separator = ' > ';\n var sepLength = separator.length;\n var nextStr = void 0;\n // eslint-disable-next-line no-plusplus\n while (currentElem && height++ < MAX_TRAVERSE_HEIGHT) {\n nextStr = _htmlElementAsString(currentElem);\n // bail out if\n // - nextStr is the 'html' element\n // - the length of the string that would be created exceeds MAX_OUTPUT_LEN\n // (ignore this limit if we are on the first iteration)\n if (nextStr === 'html' || (height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN)) {\n break;\n }\n out.push(nextStr);\n len += nextStr.length;\n currentElem = currentElem.parentNode;\n }\n return out.reverse().join(separator);\n }\n catch (_oO) {\n return '';\n }\n}\n/**\n * Returns a simple, query-selector representation of a DOM element\n * e.g. [HTMLElement] => input#foo.btn[name=baz]\n * @returns generated DOM path\n */\nfunction _htmlElementAsString(el) {\n var elem = el;\n var out = [];\n var className;\n var classes;\n var key;\n var attr;\n var i;\n if (!elem || !elem.tagName) {\n return '';\n }\n out.push(elem.tagName.toLowerCase());\n if (elem.id) {\n out.push(\"#\" + elem.id);\n }\n // eslint-disable-next-line prefer-const\n className = elem.className;\n if (className && isString(className)) {\n classes = className.split(/\\s+/);\n for (i = 0; i < classes.length; i++) {\n out.push(\".\" + classes[i]);\n }\n }\n var allowedAttrs = ['type', 'name', 'title', 'alt'];\n for (i = 0; i < allowedAttrs.length; i++) {\n key = allowedAttrs[i];\n attr = elem.getAttribute(key);\n if (attr) {\n out.push(\"[\" + key + \"=\\\"\" + attr + \"\\\"]\");\n }\n }\n return out.join('');\n}\nvar INITIAL_TIME = Date.now();\nvar prevNow = 0;\nvar performanceFallback = {\n now: function () {\n var now = Date.now() - INITIAL_TIME;\n if (now < prevNow) {\n now = prevNow;\n }\n prevNow = now;\n return now;\n },\n timeOrigin: INITIAL_TIME,\n};\nexport var crossPlatformPerformance = (function () {\n if (isNodeEnv()) {\n try {\n var perfHooks = dynamicRequire(module, 'perf_hooks');\n return perfHooks.performance;\n }\n catch (_) {\n return performanceFallback;\n }\n }\n var performance = getGlobalObject().performance;\n if (!performance || !performance.now) {\n return performanceFallback;\n }\n // Polyfill for performance.timeOrigin.\n //\n // While performance.timing.navigationStart is deprecated in favor of performance.timeOrigin, performance.timeOrigin\n // is not as widely supported. Namely, performance.timeOrigin is undefined in Safari as of writing.\n if (performance.timeOrigin === undefined) {\n // As of writing, performance.timing is not available in Web Workers in mainstream browsers, so it is not always a\n // valid fallback. In the absence of a initial time provided by the browser, fallback to INITIAL_TIME.\n // @ts-ignore ignored because timeOrigin is a readonly property but we want to override\n // eslint-disable-next-line deprecation/deprecation\n performance.timeOrigin = (performance.timing && performance.timing.navigationStart) || INITIAL_TIME;\n }\n return performance;\n})();\n/**\n * Returns a timestamp in seconds with milliseconds precision since the UNIX epoch calculated with the monotonic clock.\n */\nexport function timestampWithMs() {\n return (crossPlatformPerformance.timeOrigin + crossPlatformPerformance.now()) / 1000;\n}\n// https://semver.org/#is-there-a-suggested-regular-expression-regex-to-check-a-semver-string\nvar SEMVER_REGEXP = /^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$/;\n/**\n * Parses input into a SemVer interface\n * @param input string representation of a semver version\n */\nexport function parseSemver(input) {\n var match = input.match(SEMVER_REGEXP) || [];\n var major = parseInt(match[1], 10);\n var minor = parseInt(match[2], 10);\n var patch = parseInt(match[3], 10);\n return {\n buildmetadata: match[5],\n major: isNaN(major) ? undefined : major,\n minor: isNaN(minor) ? undefined : minor,\n patch: isNaN(patch) ? undefined : patch,\n prerelease: match[4],\n };\n}\nvar defaultRetryAfter = 60 * 1000; // 60 seconds\n/**\n * Extracts Retry-After value from the request header or returns default value\n * @param now current unix timestamp\n * @param header string representation of 'Retry-After' header\n */\nexport function parseRetryAfterHeader(now, header) {\n if (!header) {\n return defaultRetryAfter;\n }\n var headerDelay = parseInt(\"\" + header, 10);\n if (!isNaN(headerDelay)) {\n return headerDelay * 1000;\n }\n var headerDate = Date.parse(\"\" + header);\n if (!isNaN(headerDate)) {\n return headerDate - now;\n }\n return defaultRetryAfter;\n}\nvar defaultFunctionName = '';\n/**\n * Safely extract function name from itself\n */\nexport function getFunctionName(fn) {\n try {\n if (!fn || typeof fn !== 'function') {\n return defaultFunctionName;\n }\n return fn.name || defaultFunctionName;\n }\n catch (e) {\n // Just accessing custom props in some Selenium environments\n // can cause a \"Permission denied\" exception (see raven-js#495).\n return defaultFunctionName;\n }\n}\n/**\n * This function adds context (pre/post/line) lines to the provided frame\n *\n * @param lines string[] containing all lines\n * @param frame StackFrame that will be mutated\n * @param linesOfContext number of context lines we want to add pre/post\n */\nexport function addContextToFrame(lines, frame, linesOfContext) {\n if (linesOfContext === void 0) { linesOfContext = 5; }\n var lineno = frame.lineno || 0;\n var maxLines = lines.length;\n var sourceLine = Math.max(Math.min(maxLines, lineno - 1), 0);\n frame.pre_context = lines\n .slice(Math.max(0, sourceLine - linesOfContext), sourceLine)\n .map(function (line) { return snipLine(line, 0); });\n frame.context_line = snipLine(lines[Math.min(maxLines - 1, sourceLine)], frame.colno || 0);\n frame.post_context = lines\n .slice(Math.min(sourceLine + 1, maxLines), sourceLine + 1 + linesOfContext)\n .map(function (line) { return snipLine(line, 0); });\n}\n/**\n * Strip the query string and fragment off of a given URL or path (if present)\n *\n * @param urlPath Full URL or path, including possible query string and/or fragment\n * @returns URL or path without query string or fragment\n */\nexport function stripUrlQueryAndFragment(urlPath) {\n // eslint-disable-next-line no-useless-escape\n return urlPath.split(/[\\?#]/, 1)[0];\n}\n//# sourceMappingURL=misc.js.map","var DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar anObject = require('../internals/an-object');\nvar toPrimitive = require('../internals/to-primitive');\n\nvar nativeDefineProperty = Object.defineProperty;\n\n// `Object.defineProperty` method\n// https://tc39.github.io/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? nativeDefineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return nativeDefineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","const jobStatuses = {\r\n Queued: 1,\r\n Processing: 2,\r\n Failed: 3,\r\n Succeeded: 4\r\n}\r\n\r\nconst jobStatusNames = {\r\n [jobStatuses.Queued]: \"Queued\",\r\n [jobStatuses.Processing]: \"Processing\",\r\n [jobStatuses.Failed]: \"Failed\",\r\n [jobStatuses.Succeeded]: \"Succeeded\",\r\n}\r\n\r\nexport class JobStatus {\r\n constructor(jobStatus) {\r\n this.jobStatus = jobStatus;\r\n this.text = jobStatusNames[this.jobStatus];\r\n }\r\n}\r\n\r\nJobStatus.Queued = new JobStatus(jobStatuses.Queued);\r\nJobStatus.Processing = new JobStatus(jobStatuses.Processing);\r\nJobStatus.Failed = new JobStatus(jobStatuses.Failed);\r\nJobStatus.Succeeded = new JobStatus(jobStatuses.Succeeded);\r\n\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nexport const Queued = JobStatus.Queued;\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nexport const Processing = JobStatus.Processing;\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nexport const Failed = JobStatus.Failed;\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nexport const Succeeded = JobStatus.Succeeded;\r\n","var hasOwnProperty = {}.hasOwnProperty;\n\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar has = require('../internals/has');\n\nvar defineProperty = Object.defineProperty;\nvar cache = {};\n\nvar thrower = function (it) { throw it; };\n\nmodule.exports = function (METHOD_NAME, options) {\n if (has(cache, METHOD_NAME)) return cache[METHOD_NAME];\n if (!options) options = {};\n var method = [][METHOD_NAME];\n var ACCESSORS = has(options, 'ACCESSORS') ? options.ACCESSORS : false;\n var argument0 = has(options, 0) ? options[0] : thrower;\n var argument1 = has(options, 1) ? options[1] : undefined;\n\n return cache[METHOD_NAME] = !!method && !fails(function () {\n if (ACCESSORS && !DESCRIPTORS) return true;\n var O = { length: -1 };\n\n if (ACCESSORS) defineProperty(O, 1, { enumerable: true, get: thrower });\n else O[1] = 1;\n\n method.call(O, argument0, argument1);\n });\n};\n","// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n","import { __values } from \"tslib\";\nimport { isElement, isError, isEvent, isInstanceOf, isPlainObject, isPrimitive, isSyntheticEvent } from './is';\nimport { Memo } from './memo';\nimport { getFunctionName, htmlTreeAsString } from './misc';\nimport { truncate } from './string';\n/**\n * Wrap a given object method with a higher-order function\n *\n * @param source An object that contains a method to be wrapped.\n * @param name A name of method to be wrapped.\n * @param replacement A function that should be used to wrap a given method.\n * @returns void\n */\nexport function fill(source, name, replacement) {\n if (!(name in source)) {\n return;\n }\n var original = source[name];\n var wrapped = replacement(original);\n // Make sure it's a function first, as we need to attach an empty prototype for `defineProperties` to work\n // otherwise it'll throw \"TypeError: Object.defineProperties called on non-object\"\n if (typeof wrapped === 'function') {\n try {\n wrapped.prototype = wrapped.prototype || {};\n Object.defineProperties(wrapped, {\n __sentry_original__: {\n enumerable: false,\n value: original,\n },\n });\n }\n catch (_Oo) {\n // This can throw if multiple fill happens on a global object like XMLHttpRequest\n // Fixes https://github.com/getsentry/sentry-javascript/issues/2043\n }\n }\n source[name] = wrapped;\n}\n/**\n * Encodes given object into url-friendly format\n *\n * @param object An object that contains serializable values\n * @returns string Encoded\n */\nexport function urlEncode(object) {\n return Object.keys(object)\n .map(function (key) { return encodeURIComponent(key) + \"=\" + encodeURIComponent(object[key]); })\n .join('&');\n}\n/**\n * Transforms any object into an object literal with all it's attributes\n * attached to it.\n *\n * @param value Initial source that we have to transform in order to be usable by the serializer\n */\nfunction getWalkSource(value) {\n if (isError(value)) {\n var error = value;\n var err = {\n message: error.message,\n name: error.name,\n stack: error.stack,\n };\n for (var i in error) {\n if (Object.prototype.hasOwnProperty.call(error, i)) {\n err[i] = error[i];\n }\n }\n return err;\n }\n if (isEvent(value)) {\n var event_1 = value;\n var source = {};\n source.type = event_1.type;\n // Accessing event.target can throw (see getsentry/raven-js#838, #768)\n try {\n source.target = isElement(event_1.target)\n ? htmlTreeAsString(event_1.target)\n : Object.prototype.toString.call(event_1.target);\n }\n catch (_oO) {\n source.target = '';\n }\n try {\n source.currentTarget = isElement(event_1.currentTarget)\n ? htmlTreeAsString(event_1.currentTarget)\n : Object.prototype.toString.call(event_1.currentTarget);\n }\n catch (_oO) {\n source.currentTarget = '';\n }\n if (typeof CustomEvent !== 'undefined' && isInstanceOf(value, CustomEvent)) {\n source.detail = event_1.detail;\n }\n for (var i in event_1) {\n if (Object.prototype.hasOwnProperty.call(event_1, i)) {\n source[i] = event_1;\n }\n }\n return source;\n }\n return value;\n}\n/** Calculates bytes size of input string */\nfunction utf8Length(value) {\n // eslint-disable-next-line no-bitwise\n return ~-encodeURI(value).split(/%..|./).length;\n}\n/** Calculates bytes size of input object */\nfunction jsonSize(value) {\n return utf8Length(JSON.stringify(value));\n}\n/** JSDoc */\nexport function normalizeToSize(object, \n// Default Node.js REPL depth\ndepth, \n// 100kB, as 200kB is max payload size, so half sounds reasonable\nmaxSize) {\n if (depth === void 0) { depth = 3; }\n if (maxSize === void 0) { maxSize = 100 * 1024; }\n var serialized = normalize(object, depth);\n if (jsonSize(serialized) > maxSize) {\n return normalizeToSize(object, depth - 1, maxSize);\n }\n return serialized;\n}\n/** Transforms any input value into a string form, either primitive value or a type of the input */\nfunction serializeValue(value) {\n var type = Object.prototype.toString.call(value);\n // Node.js REPL notation\n if (typeof value === 'string') {\n return value;\n }\n if (type === '[object Object]') {\n return '[Object]';\n }\n if (type === '[object Array]') {\n return '[Array]';\n }\n var normalized = normalizeValue(value);\n return isPrimitive(normalized) ? normalized : type;\n}\n/**\n * normalizeValue()\n *\n * Takes unserializable input and make it serializable friendly\n *\n * - translates undefined/NaN values to \"[undefined]\"/\"[NaN]\" respectively,\n * - serializes Error objects\n * - filter global objects\n */\nfunction normalizeValue(value, key) {\n if (key === 'domain' && value && typeof value === 'object' && value._events) {\n return '[Domain]';\n }\n if (key === 'domainEmitter') {\n return '[DomainEmitter]';\n }\n if (typeof global !== 'undefined' && value === global) {\n return '[Global]';\n }\n if (typeof window !== 'undefined' && value === window) {\n return '[Window]';\n }\n if (typeof document !== 'undefined' && value === document) {\n return '[Document]';\n }\n // React's SyntheticEvent thingy\n if (isSyntheticEvent(value)) {\n return '[SyntheticEvent]';\n }\n if (typeof value === 'number' && value !== value) {\n return '[NaN]';\n }\n if (value === void 0) {\n return '[undefined]';\n }\n if (typeof value === 'function') {\n return \"[Function: \" + getFunctionName(value) + \"]\";\n }\n return value;\n}\n/**\n * Walks an object to perform a normalization on it\n *\n * @param key of object that's walked in current iteration\n * @param value object to be walked\n * @param depth Optional number indicating how deep should walking be performed\n * @param memo Optional Memo class handling decycling\n */\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport function walk(key, value, depth, memo) {\n if (depth === void 0) { depth = +Infinity; }\n if (memo === void 0) { memo = new Memo(); }\n // If we reach the maximum depth, serialize whatever has left\n if (depth === 0) {\n return serializeValue(value);\n }\n /* eslint-disable @typescript-eslint/no-unsafe-member-access */\n // If value implements `toJSON` method, call it and return early\n if (value !== null && value !== undefined && typeof value.toJSON === 'function') {\n return value.toJSON();\n }\n /* eslint-enable @typescript-eslint/no-unsafe-member-access */\n // If normalized value is a primitive, there are no branches left to walk, so we can just bail out, as theres no point in going down that branch any further\n var normalized = normalizeValue(value, key);\n if (isPrimitive(normalized)) {\n return normalized;\n }\n // Create source that we will use for next itterations, either objectified error object (Error type with extracted keys:value pairs) or the input itself\n var source = getWalkSource(value);\n // Create an accumulator that will act as a parent for all future itterations of that branch\n var acc = Array.isArray(value) ? [] : {};\n // If we already walked that branch, bail out, as it's circular reference\n if (memo.memoize(value)) {\n return '[Circular ~]';\n }\n // Walk all keys of the source\n for (var innerKey in source) {\n // Avoid iterating over fields in the prototype if they've somehow been exposed to enumeration.\n if (!Object.prototype.hasOwnProperty.call(source, innerKey)) {\n continue;\n }\n // Recursively walk through all the child nodes\n acc[innerKey] = walk(innerKey, source[innerKey], depth - 1, memo);\n }\n // Once walked through all the branches, remove the parent from memo storage\n memo.unmemoize(value);\n // Return accumulated values\n return acc;\n}\n/**\n * normalize()\n *\n * - Creates a copy to prevent original input mutation\n * - Skip non-enumerablers\n * - Calls `toJSON` if implemented\n * - Removes circular references\n * - Translates non-serializeable values (undefined/NaN/Functions) to serializable format\n * - Translates known global objects/Classes to a string representations\n * - Takes care of Error objects serialization\n * - Optionally limit depth of final output\n */\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport function normalize(input, depth) {\n try {\n return JSON.parse(JSON.stringify(input, function (key, value) { return walk(key, value, depth); }));\n }\n catch (_oO) {\n return '**non-serializable**';\n }\n}\n/**\n * Given any captured exception, extract its keys and create a sorted\n * and truncated list that will be used inside the event message.\n * eg. `Non-error exception captured with keys: foo, bar, baz`\n */\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport function extractExceptionKeysForMessage(exception, maxLength) {\n if (maxLength === void 0) { maxLength = 40; }\n var keys = Object.keys(getWalkSource(exception));\n keys.sort();\n if (!keys.length) {\n return '[object has no keys]';\n }\n if (keys[0].length >= maxLength) {\n return truncate(keys[0], maxLength);\n }\n for (var includedKeys = keys.length; includedKeys > 0; includedKeys--) {\n var serialized = keys.slice(0, includedKeys).join(', ');\n if (serialized.length > maxLength) {\n continue;\n }\n if (includedKeys === keys.length) {\n return serialized;\n }\n return truncate(serialized, maxLength);\n }\n return '';\n}\n/**\n * Given any object, return the new object with removed keys that value was `undefined`.\n * Works recursively on objects and arrays.\n */\nexport function dropUndefinedKeys(val) {\n var e_1, _a;\n if (isPlainObject(val)) {\n var obj = val;\n var rv = {};\n try {\n for (var _b = __values(Object.keys(obj)), _c = _b.next(); !_c.done; _c = _b.next()) {\n var key = _c.value;\n if (typeof obj[key] !== 'undefined') {\n rv[key] = dropUndefinedKeys(obj[key]);\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return rv;\n }\n if (Array.isArray(val)) {\n return val.map(dropUndefinedKeys);\n }\n return val;\n}\n//# sourceMappingURL=object.js.map","var DESCRIPTORS = require('../internals/descriptors');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPrimitive = require('../internals/to-primitive');\nvar has = require('../internals/has');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\nvar nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? nativeGetOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return nativeGetOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (has(O, P)) return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]);\n};\n","var isObject = require('../internals/is-object');\n\nmodule.exports = function (it) {\n if (!isObject(it)) {\n throw TypeError(String(it) + ' is not an object');\n } return it;\n};\n","var global = require('../internals/global');\n\nmodule.exports = global;\n","module.exports = function (it) {\n if (typeof it != 'function') {\n throw TypeError(String(it) + ' is not a function');\n } return it;\n};\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar sheet_hotkeys_1 = require(\"./sheet-hotkeys\");\r\nexports.attachToTable = sheet_hotkeys_1.attachToTable;\r\nexports.detachFromTable = sheet_hotkeys_1.detachFromTable;\r\nvar table_dom_traversal_1 = require(\"./browser/table-dom-traversal\");\r\nexports.TableDomTraverser = table_dom_traversal_1.TableDomTraverser;\r\nvar virtual_worksheet_1 = require(\"./virtual-worksheet\");\r\nexports.VirtualWorksheet = virtual_worksheet_1.VirtualWorksheet;\r\nvar standby_input_1 = require(\"./standby-input\");\r\nexports.StandbyInput = standby_input_1.StandbyInput;\r\nexports.StandbyInputMode = standby_input_1.StandbyInputMode;\r\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","var global = require('../internals/global');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar has = require('../internals/has');\nvar setGlobal = require('../internals/set-global');\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar getInternalState = InternalStateModule.get;\nvar enforceInternalState = InternalStateModule.enforce;\nvar TEMPLATE = String(String).split('String');\n\n(module.exports = function (O, key, value, options) {\n var unsafe = options ? !!options.unsafe : false;\n var simple = options ? !!options.enumerable : false;\n var noTargetGet = options ? !!options.noTargetGet : false;\n if (typeof value == 'function') {\n if (typeof key == 'string' && !has(value, 'name')) createNonEnumerableProperty(value, 'name', key);\n enforceInternalState(value).source = TEMPLATE.join(typeof key == 'string' ? key : '');\n }\n if (O === global) {\n if (simple) O[key] = value;\n else setGlobal(key, value);\n return;\n } else if (!unsafe) {\n delete O[key];\n } else if (!noTargetGet && O[key]) {\n simple = true;\n }\n if (simple) O[key] = value;\n else createNonEnumerableProperty(O, key, value);\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, 'toString', function toString() {\n return typeof this == 'function' && getInternalState(this).source || inspectSource(this);\n});\n","import { DivisionListModel, DivisionModel, DivisionPayoutPolicyRM, DivisionProfileListResponse } from \"@herbjoy/apex-api-models\";\r\nimport { IHttpService } from \"angular\";\r\n\r\n/** An enum of divisions that have unique behaviour defined. */\r\nexport const DivisionEnum = {\r\n RoadShow: 29,\r\n Dtv: 31,\r\n Rogers: 35\r\n}\r\n\r\nexport class DivisionService {\r\n divisionIDs = DivisionEnum;\r\n constructor(private $http: IHttpService, private apexApiUrl: string) {\r\n 'ngInject'\r\n }\r\n\r\n retrieveDivisions(query?) {\r\n return this.$http({\r\n method: \"GET\",\r\n headers: { Accept: \"application/json\" },\r\n url: this.apexApiUrl + \"divisions\",\r\n params: query\r\n })\r\n .then(response => {\r\n return response.data;\r\n });\r\n }\r\n\r\n retrieveDivision(divisionID) {\r\n return this.$http({\r\n method: \"GET\",\r\n headers: { Accept: \"application/json\" },\r\n url: this.apexApiUrl + \"v2/divisions/\" + divisionID\r\n }).then(response => {\r\n return response.data;\r\n });\r\n }\r\n\r\n retrieveIcdOfficeDivisions(icdOfficeID) {\r\n return this.$http({\r\n method: \"GET\",\r\n url: this.apexApiUrl + \"icd-offices/\" + icdOfficeID + \"/divisions\"\r\n }).then(response => {\r\n return response.data;\r\n });\r\n }\r\n\r\n createDivision(request) {\r\n return this.$http({\r\n method: \"POST\",\r\n url: this.apexApiUrl + \"divisions\",\r\n data: request,\r\n headers: { \"Content-Type\": \"application/json\", Accept: \"application/json\" }\r\n })\r\n .then(response => {\r\n return response.data;\r\n });\r\n }\r\n\r\n updateDivision(divisionID, request) {\r\n return this.$http({\r\n method: \"PUT\",\r\n url: this.apexApiUrl + \"divisions/\" + divisionID,\r\n data: request,\r\n headers: { \"Content-Type\": \"application/json\", Accept: \"application/json\" }\r\n }).then(() => {\r\n return this.retrieveDivision(divisionID);\r\n });\r\n }\r\n\r\n\r\n deleteDivision(divisionID) {\r\n return this.$http({\r\n method: \"DELETE\",\r\n url: this.apexApiUrl + \"divisions/\" + divisionID\r\n });\r\n }\r\n\r\n retrieveDivisionProfiles(query?) {\r\n return this.$http({\r\n method: \"GET\",\r\n url: this.apexApiUrl + \"division-profiles\",\r\n params: query,\r\n headers: { Accept: \"application/json\" }\r\n }).then(response => {\r\n return response.data;\r\n });\r\n }\r\n\r\n updateDivisionProfilePayrollPolicyHistory(divisionProfileID, request) {\r\n return this.$http({\r\n method: \"PUT\",\r\n url: this.apexApiUrl + \"division-profiles/\" + divisionProfileID + \"/payroll-policy-history\",\r\n data: request,\r\n headers: { \"Content-Type\": \"application/json\" }\r\n });\r\n }\r\n}\r\n","import { IHttpService, IPromise } from \"angular\";\r\nimport { IcdOfficeService } from \"./icd-office.service\";\r\nimport {\r\n ICDCorporationListRM, IcdCorporationResponse,\r\n IcdCorporationManager, OrganizationModuleModel,\r\n IcdCorporationUpdateRequest, IcdCorporationStatusRM, PagedEntityList\r\n} from \"@herbjoy/apex-api-models\";\r\n\r\nexport enum IcdCorporationStatus {\r\n Active = 1,\r\n Inactive = 2\r\n}\r\n\r\nexport class IcdCorporationService {\r\n constructor(private $http: IHttpService, private apexApiUrl: string, private icdOfficeService: IcdOfficeService) {\r\n 'ngInject'\r\n }\r\n\r\n retrieveIcdCorporations(query) {\r\n return this.$http({\r\n method: \"GET\",\r\n headers: { Accept: \"application/json\", \"Content-Type\": \"application/json\" },\r\n url: this.apexApiUrl + \"corporations\",\r\n params: query || {}\r\n }).then(response => {\r\n return response.data;\r\n });\r\n }\r\n\r\n retrieveIcdCorporationsPage(pageIndex: number, query) {\r\n return this.$http>({\r\n method: \"GET\",\r\n headers: { Accept: \"application/json\" },\r\n url: this.apexApiUrl + \"corporations\" + \"/page/\" + pageIndex || \"0\",\r\n params: query,\r\n })\r\n .then(response => {\r\n return response.data;\r\n });\r\n }\r\n\r\n retrieveIcdCorporationsByModuleAdmin(moduleName: string, query?) {\r\n return this.$http({\r\n method: \"GET\",\r\n headers: { Accept: \"application/json\" },\r\n url: this.apexApiUrl + \"corporations/module/\" + moduleName,\r\n params: query || {}\r\n }).then(response => {\r\n return response.data;\r\n })\r\n }\r\n\r\n /**\r\n * Retrieve icd corporations that are managed by the current user.\r\n * @returns {any} The list of corporations\r\n */\r\n retrieveManagedIcdCorporations(query) {\r\n return this.$http({\r\n method: \"GET\",\r\n headers: { Accept: \"application/json\" },\r\n url: this.apexApiUrl + \"corporations/managed\",\r\n params: query || {}\r\n }).then(response => {\r\n return response.data;\r\n })\r\n }\r\n\r\n /**\r\n * Retrieve the icd corporation with the given ID.\r\n * @param {number} icdCorporationID The corporationID\r\n * @returns {any} The specified corporation.\r\n */\r\n retrieveIcdCorporation(icdCorporationID: number): IPromise {\r\n return this.$http({\r\n method: \"GET\",\r\n url: this.apexApiUrl + \"corporations/\" + icdCorporationID,\r\n headers: { Accept: \"application/json\" }\r\n })\r\n .then(response => {\r\n return response.data;\r\n });\r\n }\r\n\r\n retrieveModuleAdminIcdOffices(employeeID, moduleID) {\r\n const icdOffices: any = {};\r\n icdOffices.moduleAdminID = employeeID;\r\n icdOffices.moduleID = moduleID;\r\n return this.icdOfficeService.retrieveIcdOffices(icdOffices);\r\n }\r\n\r\n retrieveIcdOffices(icdCorporationID, moduleAdminID, moduleID) {\r\n // TODO: Replace all references to this service method with the icd office service.\r\n const icdOffices: any = {};\r\n icdOffices.icdCorporationID = icdCorporationID;\r\n icdOffices.moduleAdminID = moduleAdminID;\r\n icdOffices.moduleID = moduleID;\r\n return this.icdOfficeService.retrieveIcdOffices(icdOffices);\r\n }\r\n\r\n /**\r\n * Retrieve a list of all auditors for the corporation.\r\n * @param {number} icdCorporationID The corporation whose data will be loaded\r\n * @returns {any} The list of auditors for the corporation.\r\n */\r\n retrieveIcdCorporationAuditors(icdCorporationID: number): IPromise {\r\n return this.$http.get(this.apexApiUrl + \"corporations/\" + icdCorporationID + \"/auditors\", { headers: { Accept: \"applicationCache/json\" } })\r\n .then(response => {\r\n return response.data;\r\n });\r\n }\r\n\r\n retrieveIcdCompanyLogo(icdCorporationID) {\r\n return this.$http.get(this.apexApiUrl + \"corporations/\" + icdCorporationID + \"/logo\", { responseType: 'blob' }\r\n ).then(results => {\r\n return results;\r\n }, results => {\r\n console.log(results);\r\n });\r\n }\r\n\r\n retrieveIcdModules(): IPromise {\r\n return this.$http({\r\n method: \"GET\",\r\n url: this.apexApiUrl + \"icd-Modules\",\r\n headers: { Accept: \"application/json\" }\r\n })\r\n .then(response => {\r\n return response.data;\r\n });\r\n }\r\n\r\n updateIcdCorporationService(icdCorporationID: number, icdCorporation: IcdCorporationUpdateRequest) {\r\n return this.$http({\r\n method: \"PUT\",\r\n url: this.apexApiUrl + \"corporations/\" + icdCorporationID,\r\n data: icdCorporation,\r\n headers: { \"Content-Type\": \"application/json\" }\r\n });\r\n }\r\n\r\n createIcdCorporationService(icdCorporation: IcdCorporationUpdateRequest) {\r\n return this.$http({\r\n method: \"POST\",\r\n url: this.apexApiUrl + \"corporations\",\r\n data: icdCorporation,\r\n headers: { \"Content-Type\": \"application/json\" }\r\n }).then(response => {\r\n return response.data;\r\n });\r\n }\r\n\r\n retrieveIcdCorporationStatus(): IPromise {\r\n return this.$http({\r\n method: \"GET\",\r\n headers: { Accept: \"application/json\" },\r\n url: this.apexApiUrl + \"corporation-statuses\"\r\n })\r\n .then(response => {\r\n return response.data;\r\n });\r\n }\r\n\r\n deleteIcdCorporation(icdCorporationID: number) {\r\n return this.$http({\r\n method: \"DELETE\",\r\n url: this.apexApiUrl + \"corporations/\" + icdCorporationID\r\n });\r\n }\r\n}\r\n\r\nexport function sortIcdCorporationByOwner(a, b) {\r\n if (a.Owner < b.Owner) {\r\n return -1;\r\n } else if (a.Owner > b.Owner) {\r\n return 1;\r\n }\r\n if (a.ClientName < b.ClientName) {\r\n return -1;\r\n } else if (a.ClientName < b.ClientName) {\r\n return 1;\r\n }\r\n return 0;\r\n}\r\n\r\n\r\nexport function sortIcdCorporationByAccess(p, q) {\r\n // Show updateable companies before read-only companies.\r\n if (p.Access.CanUpdate !== q.Access.CanUpdate) {\r\n return q.Access.CanUpdate - p.Access.CanUpdate;\r\n }\r\n return sortIcdCorporationByOwner(p, q);\r\n}\r\n","export function configureDebug($compileProvider, apexDebugInfoEnabled) {\r\n 'ngInject';\r\n $compileProvider.debugInfoEnabled(apexDebugInfoEnabled);\r\n}\r\n","import angular from \"angular\"\r\nimport { configureDebug } from \"./debug.config\";\r\n\r\n/** A module that will be used to configure the web app externally. */\r\nexport const EnvironmentModule = angular.module(\"apex.environment\", [])\r\n .config(configureDebug)\r\n .name;\r\n","import { IHttpInterceptor, IHttpResponse, IHttpService, ILogService, IPromise, IQService, IRequestConfig } from \"angular\";\r\nimport { $InjectorLike } from \"angular-ui-router\";\r\nimport { ApiClientService } from \"../services/api-client.service\";\r\nimport { containsInvariant } from \"../services/filter-util\";\r\nimport { SessionService } from \"../services/session.service\";\r\nimport { HttpInterceptorFactory } from \"./http-interceptor.factory\";\r\n\r\nconst unauthorizedStatus = { status: 401, statusName: \"Unauthorized\" };\r\n\r\n/**\r\n * An Http interceptor that adds the user's Apex Access Token from the session to\r\n * all requests being sent to the API.\r\n */\r\nexport class ApexAuthInterceptor implements IHttpInterceptor {\r\n /**\r\n * Create a new ApexAuthInterceptor.\r\n * @param $log The AngularJS logging service.\r\n * @param $q The AngularJS promise service.\r\n * @param $injector The AngularJS injector service used to lazy-inject dependencies that use $http.\r\n */\r\n constructor(private $log: ILogService, private $q: IQService, private $injector: $InjectorLike) {\r\n 'ngInject'\r\n }\r\n\r\n\r\n // Use arrow function syntax to avoid losing bindings to object context.\r\n request(config: IRequestConfig) {\r\n // Strip trailing slash(es) from the URL used for comparison.\r\n const apexApiUrl = this.$injector.get(\"apexApiUrl\").replace(/\\/+$/, \"\");\r\n if ((config as any).disableApexAuthInterceptor) {\r\n // Allow $http requests to opt-out of injecting the access token.\r\n return this.$q.resolve(config);\r\n } else if (!containsInvariant(config.url, apexApiUrl)) {\r\n // Only attach the access token to API-bound requests.\r\n return this.$q.resolve(config);\r\n }\r\n\r\n const apiClientService: ApiClientService = this.$injector.get(\"apiClientService\");\r\n const sessionService: SessionService = this.$injector.get(\"sessionService\");\r\n const addJwtAuthentication = () => {\r\n return apiClientService.retrieveAccessToken()\r\n .then(token => {\r\n config.headers.Authorization = \"Bearer \" + token;\r\n return config;\r\n })\r\n .catch(ex => {\r\n if (ex.status === 401) {\r\n // The rejection will be handled, but log the original error\r\n // and indicate failure by throwing the unauthorized status error.\r\n this.$log.info(\"Request for access token returned 401 Unauthorized\", ex);\r\n return this.signOut().then(() => {\r\n throw unauthorizedStatus\r\n });\r\n }\r\n throw ex;\r\n });\r\n };\r\n return sessionService.isAuthorized()\r\n .then(isAuthorized => {\r\n if (isAuthorized) {\r\n return addJwtAuthentication();\r\n }\r\n return config;\r\n });\r\n }\r\n\r\n private signOut() {\r\n const sessionService = this.$injector.get(\"sessionService\");\r\n if (sessionService.isAuthorized()) {\r\n // Only sign out if the user is in a session. Otherwise, this could result in\r\n // running the user through a loop of reloading the page.\r\n return sessionService.signOut();\r\n }\r\n }\r\n\r\n private retryWithNewerToken(rejection: IHttpResponse): IPromise> {\r\n const apiClientService: ApiClientService = this.$injector.get(\"apiClientService\");\r\n const $http = this.$injector.get(\"$http\");\r\n const originalAuth = rejection.config.headers.Authorization;\r\n return apiClientService.retrieveAccessToken()\r\n .then(token => {\r\n const auth = `Bearer ${token}`;\r\n if (auth !== originalAuth) {\r\n // Retry the request.\r\n const config = { ...rejection.config };\r\n config.headers.Authorization = auth;\r\n return $http(config);\r\n }\r\n const [, payload] = token.split(\".\");\r\n const claims = JSON.parse(atob(payload));\r\n this.$log.warn(\"Auth token was not accepted for authentication.\", claims, rejection.config);\r\n // Otherwise, the rejection still stands.\r\n throw rejection;\r\n }, () => {\r\n // Upon failure to obtain the new access token itself, rethrow the original rejection.\r\n throw rejection\r\n });\r\n }\r\n\r\n responseError(rejection: IHttpResponse): IPromise> | IHttpResponse {\r\n if (rejection.status === 401 && !(rejection.config as any).disableApexAuthInterceptor) {\r\n this.$log.info(\"Endpoint returned 401 Unauthorized\", rejection.config.url);\r\n return this.retryWithNewerToken(rejection);\r\n } else {\r\n throw rejection;\r\n }\r\n }\r\n}\r\n\r\nexport const apexAuthInterceptorFactory = HttpInterceptorFactory(ApexAuthInterceptor);\r\n","import { IHttpInterceptor, ILogService } from \"angular\";\r\nimport { $InjectorLike } from \"angular-ui-router\";\r\nimport { HttpInterceptorFactory } from \"./http-interceptor.factory\";\r\n\r\n/**\r\n * An Http interceptor that logs a warning to the console if the HTTP response contains\r\n * a warning.\r\n * @implements {IHttpInterceptor}\r\n */\r\nexport class ApexWarningInterceptor implements IHttpInterceptor {\r\n // response?(response: IHttpResponse): IPromise> | IHttpResponse;\r\n /**\r\n * Create a new ApexWarningInterceptor.\r\n * @param {any} $injector The AngularJS injector service used to lazy-inject dependencies that use $http.\r\n */\r\n constructor(private $injector: $InjectorLike, private $log: ILogService) {\r\n 'ngInject'\r\n\r\n }\r\n\r\n /**\r\n * Log a warning if the response contains a Warning header\r\n * @param {IHttpResponse} response The response in the pipeline\r\n */\r\n response(response) {\r\n const apexApiUrl = this.$injector.get(\"apexApiUrl\");\r\n const debug = this.$injector.get(\"apexDebugInfoEnabled\");\r\n if (!debug || !response.config.url.includes(apexApiUrl)) {\r\n return response;\r\n }\r\n\r\n const warning = response.headers(\"warning\");\r\n if (warning) {\r\n this.$log.warn(`Apex API warning: ${warning}`, response.config);\r\n }\r\n return response;\r\n }\r\n}\r\n\r\nexport const apexWarningInterceptorFactory = HttpInterceptorFactory(ApexWarningInterceptor);\r\n","import { IQService, IHttpInterceptor } from \"angular\";\r\n\r\nconst cacheKey = \"apexCompatibleHttpMethods\";\r\n\r\n/**\r\n * An interceptor that tests for ability to make PUT/PATCH/DELETE requests\r\n * and transforms requests into POST requests with the X-HTTP-Method-Override\r\n * header set if the connection is blocked.\r\n * @param $q An instance of a service with deferred capabilities.\r\n * @param apexApiUrl The root URL to the Apex API\r\n * @returns An interceptor that transforms unsupported methods\r\n * into POST methods and adds an X-HTTP-Method-Override header.\r\n */\r\nexport function XHttpMethodOverrideInterceptor($q: IQService, apexApiUrl: string): IHttpInterceptor {\r\n 'ngInject'\r\n const svc: any = {};\r\n const methods = [\"PUT\", \"PATCH\", \"DELETE\"];\r\n\r\n activate();\r\n\r\n return {\r\n request: function (config) {\r\n const method = config.method.toUpperCase();\r\n if (methods.find(p => p === method) && svc.canUseMethod && !svc.canUseMethod[method]) {\r\n // Override the method with POST.\r\n config.headers[\"X-HTTP-Method-Override\"] = method;\r\n config.method = \"POST\";\r\n }\r\n return config;\r\n }\r\n };\r\n\r\n function activate() {\r\n const cached = localStorage.getItem(cacheKey);\r\n if (cached) {\r\n svc.canUseMethod = JSON.parse(cached);\r\n return $q.resolve(svc.canUseMethod);\r\n }\r\n\r\n // This is instantiated during $http's configuration, so $http itself won't be available.\r\n // Use XHR instead.\r\n $q.all(methods.map(function (method) {\r\n return $q((resolve, reject) => {\r\n const request = new XMLHttpRequest();\r\n\r\n request.addEventListener(\"load\", function () {\r\n // eslint-disable-next-line no-invalid-this,@typescript-eslint/no-this-alias\r\n const request = this;\r\n\r\n // Always resolve, but resolve to success: false if the request failed.\r\n resolve({\r\n method: method,\r\n success: request.status >= 200 && request.status < 300\r\n });\r\n });\r\n request.open(method, apexApiUrl + \"services/shim-tests/http-\" + method.toLowerCase(), true);\r\n request.send();\r\n });\r\n })).then(function (v: { method: string, success: boolean }[]) {\r\n svc.canUseMethod = v.reduce(function (methods, test) {\r\n methods[test.method] = test.success;\r\n return methods;\r\n }, { GET: true, POST: true });\r\n localStorage.setItem(cacheKey, JSON.stringify(svc.canUseMethod));\r\n });\r\n }\r\n}\r\n","import moment from 'moment'\r\n\r\n// Source: http://aboutcode.net/2013/07/27/json-date-parsing-angularjs.html#comment-2572707274\r\n// eslint-disable-next-line no-useless-escape\r\nconst regexIso8601 = /^([\\+-]?\\d{4}(?!\\d{2}\\b))((-?)((0[1-9]|1[0-2])(\\3([12]\\d|0[1-9]|3[01]))?|W([0-4]\\d|5[0-2])(-?[1-7])?|(00[1-9]|0[1-9]\\d|[12]\\d{2}|3([0-5]\\d|6[1-6])))([T\\s]((([01]\\d|2[0-3])((:?)[0-5]\\d)?|24\\:?00)([\\.,]\\d+(?!:))?)?(\\17[0-5]\\d([\\.,]\\d+)?)?([zZ]|([\\+-])([01]\\d|2[0-3]):?([0-5]\\d)?)?)?)?$/;\r\n\r\nexport function convertDateStringsToDates(input) {\r\n // Ignore things that aren't objects.\r\n if (typeof input !== \"object\") return input;\r\n\r\n for (const key in input) {\r\n if (!Object.prototype.hasOwnProperty.call(input, key)) continue;\r\n\r\n const value = input[key];\r\n let match;\r\n // Check for string properties which look like dates.\r\n // The regex identifies 4-digit numbers as dates, so explicitly reject it in this case.\r\n if (typeof value === \"string\" && !/^\\d+$/.test(value) && (match = value.match(regexIso8601))) {\r\n const momentDate = parseDateString(match[0]);\r\n input[key] = momentDate.toDate();\r\n // Allow the moment date to be accessed directly, in order to allow data not supported by JS dates\r\n // to be accessed (eg, DateTimeOffset)\r\n input.__moment = input.__moment || {};\r\n input.__moment[key] = momentDate;\r\n } else if (typeof value === \"object\") {\r\n // Recurse into object\r\n convertDateStringsToDates(value);\r\n }\r\n }\r\n return input\r\n}\r\n\r\nfunction parseDateString(dateString) {\r\n // Use moment to parse ISO 8601 strings\r\n const momentDate = moment(dateString);\r\n if (momentDate.isValid()) {\r\n return momentDate;\r\n }\r\n // Fall back to Date.parse. In most cases this shouldn't be used since Apex API uses ISO 8601 format.\r\n // Note: date.js overrides the parse method for cross-browser consistency and can be fairly slow.\r\n const milliseconds = Date.parse(dateString)\r\n if (milliseconds !== null && !isNaN(milliseconds)) {\r\n return moment(new Date(milliseconds));\r\n }\r\n // Just try to wrap it in a date object anyway. Eg, yyyy-MM-ddThh:mm:ss.sssZ doesn't work with Date.parse for some reason.\r\n return moment(new Date(dateString));\r\n}\r\n","import { IHttpInterceptor, IPromise, IHttpResponse, IHttpService, IRequestConfig, ITimeoutService, ILogService } from \"angular\";\r\nimport { $InjectorLike } from \"angular-ui-router\";\r\nimport { HttpInterceptorFactory } from \"./http-interceptor.factory\";\r\n\r\nconst httpServiceUnavailable = 503;\r\nconst maxRetries = 3;\r\nconst retryIntervalMs = 20000;\r\n\r\ninterface RetryRequestConfig extends IRequestConfig {\r\n tryCount: number;\r\n maxRetries: number;\r\n}\r\n\r\n/**\r\n * An HTTP interceptor that retries HTTP requests that return 503 Service Unavailable.\r\n */\r\nexport class RetryServiceUnavailableInterceptor implements IHttpInterceptor {\r\n constructor(private $injector: $InjectorLike, private $log: ILogService) {\r\n 'ngInject';\r\n }\r\n responseError(response: any): IPromise> | IHttpResponse {\r\n if (response.status !== httpServiceUnavailable || !response.config) {\r\n // Rethrow to continue with next interceptor.\r\n throw response;\r\n }\r\n const retryConfig = { ...response.config } as RetryRequestConfig;\r\n if (retryConfig.tryCount === undefined) {\r\n retryConfig.tryCount = 1;\r\n retryConfig.maxRetries = maxRetries;\r\n } else {\r\n retryConfig.tryCount++;\r\n }\r\n if (retryConfig.tryCount >= retryConfig.maxRetries) {\r\n this.$log.warn(\"HTTP 503: request exceeded the maximum number of retries\", retryConfig)\r\n throw response;\r\n }\r\n this.$log.info(`HTTP 503: service was unavailable. Attempt ${retryConfig.tryCount}/` +\r\n `${retryConfig.maxRetries} failed.`, retryConfig);\r\n const $http = this.$injector.get(\"$http\");\r\n const $timeout = this.$injector.get(\"$timeout\");\r\n\r\n return $timeout(() => {\r\n return $http(retryConfig);\r\n }, retryIntervalMs);\r\n }\r\n}\r\n\r\nexport const retryServiceUnavailableInterceptorFactory = HttpInterceptorFactory(RetryServiceUnavailableInterceptor);\r\n","import { IHttpProvider, IHttpResponseTransformer } from 'angular';\r\nimport { apexApiResponseInterceptorFactory } from '../interceptors/apex-api-response.interceptor';\r\nimport { apexAuthInterceptorFactory } from '../interceptors/apex-auth.interceptor';\r\nimport { apexWarningInterceptorFactory } from '../interceptors/apex-warning.interceptor';\r\nimport { XHttpMethodOverrideInterceptor } from '../interceptors/x-http-method-override.interceptor';\r\nimport { convertDateStringsToDates } from './parse-dates.helper';\r\nimport { retryServiceUnavailableInterceptorFactory } from '../interceptors/retry-503.interceptor';\r\n\r\n/**\r\n * Configure the given $http service provider.\r\n * @param $httpProvider The angular $http service provider being configured.\r\n */\r\nexport function configureHttpProvider($httpProvider: IHttpProvider) {\r\n 'ngInject'\r\n // Allow $http to make cross-domain calls to the API.\r\n $httpProvider.defaults.withCredentials = true;\r\n delete $httpProvider.defaults.headers.common[\"X-Requested-With\"];\r\n\r\n // Parse date strings in ISO 8601 format into date objects.\r\n ($httpProvider.defaults.transformResponse as IHttpResponseTransformer[]).push(convertDateStringsToDates);\r\n\r\n // Add an interceptor in order to support environments where PUT/PATCH/DELETE verbs are blocked.\r\n $httpProvider.interceptors.push(XHttpMethodOverrideInterceptor);\r\n // Automatically add auth-related headers to the request.\r\n $httpProvider.interceptors.push(apexAuthInterceptorFactory);\r\n // Log warnings returned in the Warning header from the API.\r\n $httpProvider.interceptors.push(apexWarningInterceptorFactory);\r\n // Handle request errors and boxing into specific errors.\r\n $httpProvider.interceptors.push(apexApiResponseInterceptorFactory);\r\n // Automatically retry requests that return 503, since it's normal to have some downtime when deploying updates.\r\n $httpProvider.interceptors.push(retryServiceUnavailableInterceptorFactory);\r\n}\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { consoleSandbox, getGlobalObject } from './misc';\n// TODO: Implement different loggers for different environments\nvar global = getGlobalObject();\n/** Prefix for logging strings */\nvar PREFIX = 'Sentry Logger ';\n/** JSDoc */\nvar Logger = /** @class */ (function () {\n /** JSDoc */\n function Logger() {\n this._enabled = false;\n }\n /** JSDoc */\n Logger.prototype.disable = function () {\n this._enabled = false;\n };\n /** JSDoc */\n Logger.prototype.enable = function () {\n this._enabled = true;\n };\n /** JSDoc */\n Logger.prototype.log = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (!this._enabled) {\n return;\n }\n consoleSandbox(function () {\n global.console.log(PREFIX + \"[Log]: \" + args.join(' '));\n });\n };\n /** JSDoc */\n Logger.prototype.warn = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (!this._enabled) {\n return;\n }\n consoleSandbox(function () {\n global.console.warn(PREFIX + \"[Warn]: \" + args.join(' '));\n });\n };\n /** JSDoc */\n Logger.prototype.error = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (!this._enabled) {\n return;\n }\n consoleSandbox(function () {\n global.console.error(PREFIX + \"[Error]: \" + args.join(' '));\n });\n };\n return Logger;\n}());\n// Ensure we only have a single logger instance, even if multiple versions of @sentry/utils are being used\nglobal.__SENTRY__ = global.__SENTRY__ || {};\nvar logger = global.__SENTRY__.logger || (global.__SENTRY__.logger = new Logger());\nexport { logger };\n//# sourceMappingURL=logger.js.map","/* eslint-disable @typescript-eslint/explicit-function-return-type */\n/* eslint-disable @typescript-eslint/typedef */\n/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { isThenable } from './is';\n/** SyncPromise internal states */\nvar States;\n(function (States) {\n /** Pending */\n States[\"PENDING\"] = \"PENDING\";\n /** Resolved / OK */\n States[\"RESOLVED\"] = \"RESOLVED\";\n /** Rejected / Error */\n States[\"REJECTED\"] = \"REJECTED\";\n})(States || (States = {}));\n/**\n * Thenable class that behaves like a Promise and follows it's interface\n * but is not async internally\n */\nvar SyncPromise = /** @class */ (function () {\n function SyncPromise(executor) {\n var _this = this;\n this._state = States.PENDING;\n this._handlers = [];\n /** JSDoc */\n this._resolve = function (value) {\n _this._setResult(States.RESOLVED, value);\n };\n /** JSDoc */\n this._reject = function (reason) {\n _this._setResult(States.REJECTED, reason);\n };\n /** JSDoc */\n this._setResult = function (state, value) {\n if (_this._state !== States.PENDING) {\n return;\n }\n if (isThenable(value)) {\n value.then(_this._resolve, _this._reject);\n return;\n }\n _this._state = state;\n _this._value = value;\n _this._executeHandlers();\n };\n // TODO: FIXME\n /** JSDoc */\n this._attachHandler = function (handler) {\n _this._handlers = _this._handlers.concat(handler);\n _this._executeHandlers();\n };\n /** JSDoc */\n this._executeHandlers = function () {\n if (_this._state === States.PENDING) {\n return;\n }\n var cachedHandlers = _this._handlers.slice();\n _this._handlers = [];\n cachedHandlers.forEach(function (handler) {\n if (handler.done) {\n return;\n }\n if (_this._state === States.RESOLVED) {\n if (handler.onfulfilled) {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n handler.onfulfilled(_this._value);\n }\n }\n if (_this._state === States.REJECTED) {\n if (handler.onrejected) {\n handler.onrejected(_this._value);\n }\n }\n handler.done = true;\n });\n };\n try {\n executor(this._resolve, this._reject);\n }\n catch (e) {\n this._reject(e);\n }\n }\n /** JSDoc */\n SyncPromise.resolve = function (value) {\n return new SyncPromise(function (resolve) {\n resolve(value);\n });\n };\n /** JSDoc */\n SyncPromise.reject = function (reason) {\n return new SyncPromise(function (_, reject) {\n reject(reason);\n });\n };\n /** JSDoc */\n SyncPromise.all = function (collection) {\n return new SyncPromise(function (resolve, reject) {\n if (!Array.isArray(collection)) {\n reject(new TypeError(\"Promise.all requires an array as input.\"));\n return;\n }\n if (collection.length === 0) {\n resolve([]);\n return;\n }\n var counter = collection.length;\n var resolvedCollection = [];\n collection.forEach(function (item, index) {\n SyncPromise.resolve(item)\n .then(function (value) {\n resolvedCollection[index] = value;\n counter -= 1;\n if (counter !== 0) {\n return;\n }\n resolve(resolvedCollection);\n })\n .then(null, reject);\n });\n });\n };\n /** JSDoc */\n SyncPromise.prototype.then = function (onfulfilled, onrejected) {\n var _this = this;\n return new SyncPromise(function (resolve, reject) {\n _this._attachHandler({\n done: false,\n onfulfilled: function (result) {\n if (!onfulfilled) {\n // TODO: ¯\\_(ツ)_/¯\n // TODO: FIXME\n resolve(result);\n return;\n }\n try {\n resolve(onfulfilled(result));\n return;\n }\n catch (e) {\n reject(e);\n return;\n }\n },\n onrejected: function (reason) {\n if (!onrejected) {\n reject(reason);\n return;\n }\n try {\n resolve(onrejected(reason));\n return;\n }\n catch (e) {\n reject(e);\n return;\n }\n },\n });\n });\n };\n /** JSDoc */\n SyncPromise.prototype.catch = function (onrejected) {\n return this.then(function (val) { return val; }, onrejected);\n };\n /** JSDoc */\n SyncPromise.prototype.finally = function (onfinally) {\n var _this = this;\n return new SyncPromise(function (resolve, reject) {\n var val;\n var isRejected;\n return _this.then(function (value) {\n isRejected = false;\n val = value;\n if (onfinally) {\n onfinally();\n }\n }, function (reason) {\n isRejected = true;\n val = reason;\n if (onfinally) {\n onfinally();\n }\n }).then(function () {\n if (isRejected) {\n reject(val);\n return;\n }\n resolve(val);\n });\n });\n };\n /** JSDoc */\n SyncPromise.prototype.toString = function () {\n return '[object SyncPromise]';\n };\n return SyncPromise;\n}());\nexport { SyncPromise };\n//# sourceMappingURL=syncpromise.js.map","import { __assign, __read, __spread } from \"tslib\";\nimport { getGlobalObject, isPlainObject, isThenable, SyncPromise, timestampWithMs } from '@sentry/utils';\n/**\n * Holds additional event information. {@link Scope.applyToEvent} will be\n * called by the client before an event will be sent.\n */\nvar Scope = /** @class */ (function () {\n function Scope() {\n /** Flag if notifiying is happening. */\n this._notifyingListeners = false;\n /** Callback for client to receive scope changes. */\n this._scopeListeners = [];\n /** Callback list that will be called after {@link applyToEvent}. */\n this._eventProcessors = [];\n /** Array of breadcrumbs. */\n this._breadcrumbs = [];\n /** User */\n this._user = {};\n /** Tags */\n this._tags = {};\n /** Extra */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this._extra = {};\n /** Contexts */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this._contexts = {};\n }\n /**\n * Inherit values from the parent scope.\n * @param scope to clone.\n */\n Scope.clone = function (scope) {\n var newScope = new Scope();\n if (scope) {\n newScope._breadcrumbs = __spread(scope._breadcrumbs);\n newScope._tags = __assign({}, scope._tags);\n newScope._extra = __assign({}, scope._extra);\n newScope._contexts = __assign({}, scope._contexts);\n newScope._user = scope._user;\n newScope._level = scope._level;\n newScope._span = scope._span;\n newScope._transactionName = scope._transactionName;\n newScope._fingerprint = scope._fingerprint;\n newScope._eventProcessors = __spread(scope._eventProcessors);\n }\n return newScope;\n };\n /**\n * Add internal on change listener. Used for sub SDKs that need to store the scope.\n * @hidden\n */\n Scope.prototype.addScopeListener = function (callback) {\n this._scopeListeners.push(callback);\n };\n /**\n * @inheritDoc\n */\n Scope.prototype.addEventProcessor = function (callback) {\n this._eventProcessors.push(callback);\n return this;\n };\n /**\n * @inheritDoc\n */\n Scope.prototype.setUser = function (user) {\n this._user = user || {};\n this._notifyScopeListeners();\n return this;\n };\n /**\n * @inheritDoc\n */\n Scope.prototype.setTags = function (tags) {\n this._tags = __assign(__assign({}, this._tags), tags);\n this._notifyScopeListeners();\n return this;\n };\n /**\n * @inheritDoc\n */\n Scope.prototype.setTag = function (key, value) {\n var _a;\n this._tags = __assign(__assign({}, this._tags), (_a = {}, _a[key] = value, _a));\n this._notifyScopeListeners();\n return this;\n };\n /**\n * @inheritDoc\n */\n Scope.prototype.setExtras = function (extras) {\n this._extra = __assign(__assign({}, this._extra), extras);\n this._notifyScopeListeners();\n return this;\n };\n /**\n * @inheritDoc\n */\n Scope.prototype.setExtra = function (key, extra) {\n var _a;\n this._extra = __assign(__assign({}, this._extra), (_a = {}, _a[key] = extra, _a));\n this._notifyScopeListeners();\n return this;\n };\n /**\n * @inheritDoc\n */\n Scope.prototype.setFingerprint = function (fingerprint) {\n this._fingerprint = fingerprint;\n this._notifyScopeListeners();\n return this;\n };\n /**\n * @inheritDoc\n */\n Scope.prototype.setLevel = function (level) {\n this._level = level;\n this._notifyScopeListeners();\n return this;\n };\n /**\n * @inheritDoc\n */\n Scope.prototype.setTransactionName = function (name) {\n this._transactionName = name;\n this._notifyScopeListeners();\n return this;\n };\n /**\n * Can be removed in major version.\n * @deprecated in favor of {@link this.setTransactionName}\n */\n Scope.prototype.setTransaction = function (name) {\n return this.setTransactionName(name);\n };\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Scope.prototype.setContext = function (key, context) {\n var _a;\n this._contexts = __assign(__assign({}, this._contexts), (_a = {}, _a[key] = context, _a));\n this._notifyScopeListeners();\n return this;\n };\n /**\n * @inheritDoc\n */\n Scope.prototype.setSpan = function (span) {\n this._span = span;\n this._notifyScopeListeners();\n return this;\n };\n /**\n * @inheritDoc\n */\n Scope.prototype.getSpan = function () {\n return this._span;\n };\n /**\n * @inheritDoc\n */\n Scope.prototype.getTransaction = function () {\n var span = this.getSpan();\n if (span && span.spanRecorder && span.spanRecorder.spans[0]) {\n return span.spanRecorder.spans[0];\n }\n return undefined;\n };\n /**\n * @inheritDoc\n */\n Scope.prototype.update = function (captureContext) {\n if (!captureContext) {\n return this;\n }\n if (typeof captureContext === 'function') {\n var updatedScope = captureContext(this);\n return updatedScope instanceof Scope ? updatedScope : this;\n }\n if (captureContext instanceof Scope) {\n this._tags = __assign(__assign({}, this._tags), captureContext._tags);\n this._extra = __assign(__assign({}, this._extra), captureContext._extra);\n this._contexts = __assign(__assign({}, this._contexts), captureContext._contexts);\n if (captureContext._user) {\n this._user = captureContext._user;\n }\n if (captureContext._level) {\n this._level = captureContext._level;\n }\n if (captureContext._fingerprint) {\n this._fingerprint = captureContext._fingerprint;\n }\n }\n else if (isPlainObject(captureContext)) {\n // eslint-disable-next-line no-param-reassign\n captureContext = captureContext;\n this._tags = __assign(__assign({}, this._tags), captureContext.tags);\n this._extra = __assign(__assign({}, this._extra), captureContext.extra);\n this._contexts = __assign(__assign({}, this._contexts), captureContext.contexts);\n if (captureContext.user) {\n this._user = captureContext.user;\n }\n if (captureContext.level) {\n this._level = captureContext.level;\n }\n if (captureContext.fingerprint) {\n this._fingerprint = captureContext.fingerprint;\n }\n }\n return this;\n };\n /**\n * @inheritDoc\n */\n Scope.prototype.clear = function () {\n this._breadcrumbs = [];\n this._tags = {};\n this._extra = {};\n this._user = {};\n this._contexts = {};\n this._level = undefined;\n this._transactionName = undefined;\n this._fingerprint = undefined;\n this._span = undefined;\n this._notifyScopeListeners();\n return this;\n };\n /**\n * @inheritDoc\n */\n Scope.prototype.addBreadcrumb = function (breadcrumb, maxBreadcrumbs) {\n var mergedBreadcrumb = __assign({ timestamp: timestampWithMs() }, breadcrumb);\n this._breadcrumbs =\n maxBreadcrumbs !== undefined && maxBreadcrumbs >= 0\n ? __spread(this._breadcrumbs, [mergedBreadcrumb]).slice(-maxBreadcrumbs)\n : __spread(this._breadcrumbs, [mergedBreadcrumb]);\n this._notifyScopeListeners();\n return this;\n };\n /**\n * @inheritDoc\n */\n Scope.prototype.clearBreadcrumbs = function () {\n this._breadcrumbs = [];\n this._notifyScopeListeners();\n return this;\n };\n /**\n * Applies the current context and fingerprint to the event.\n * Note that breadcrumbs will be added by the client.\n * Also if the event has already breadcrumbs on it, we do not merge them.\n * @param event Event\n * @param hint May contain additional informartion about the original exception.\n * @hidden\n */\n Scope.prototype.applyToEvent = function (event, hint) {\n if (this._extra && Object.keys(this._extra).length) {\n event.extra = __assign(__assign({}, this._extra), event.extra);\n }\n if (this._tags && Object.keys(this._tags).length) {\n event.tags = __assign(__assign({}, this._tags), event.tags);\n }\n if (this._user && Object.keys(this._user).length) {\n event.user = __assign(__assign({}, this._user), event.user);\n }\n if (this._contexts && Object.keys(this._contexts).length) {\n event.contexts = __assign(__assign({}, this._contexts), event.contexts);\n }\n if (this._level) {\n event.level = this._level;\n }\n if (this._transactionName) {\n event.transaction = this._transactionName;\n }\n // We want to set the trace context for normal events only if there isn't already\n // a trace context on the event. There is a product feature in place where we link\n // errors with transaction and it relys on that.\n if (this._span) {\n event.contexts = __assign({ trace: this._span.getTraceContext() }, event.contexts);\n }\n this._applyFingerprint(event);\n event.breadcrumbs = __spread((event.breadcrumbs || []), this._breadcrumbs);\n event.breadcrumbs = event.breadcrumbs.length > 0 ? event.breadcrumbs : undefined;\n return this._notifyEventProcessors(__spread(getGlobalEventProcessors(), this._eventProcessors), event, hint);\n };\n /**\n * This will be called after {@link applyToEvent} is finished.\n */\n Scope.prototype._notifyEventProcessors = function (processors, event, hint, index) {\n var _this = this;\n if (index === void 0) { index = 0; }\n return new SyncPromise(function (resolve, reject) {\n var processor = processors[index];\n if (event === null || typeof processor !== 'function') {\n resolve(event);\n }\n else {\n var result = processor(__assign({}, event), hint);\n if (isThenable(result)) {\n result\n .then(function (final) { return _this._notifyEventProcessors(processors, final, hint, index + 1).then(resolve); })\n .then(null, reject);\n }\n else {\n _this._notifyEventProcessors(processors, result, hint, index + 1)\n .then(resolve)\n .then(null, reject);\n }\n }\n });\n };\n /**\n * This will be called on every set call.\n */\n Scope.prototype._notifyScopeListeners = function () {\n var _this = this;\n if (!this._notifyingListeners) {\n this._notifyingListeners = true;\n setTimeout(function () {\n _this._scopeListeners.forEach(function (callback) {\n callback(_this);\n });\n _this._notifyingListeners = false;\n });\n }\n };\n /**\n * Applies fingerprint from the scope to the event if there's one,\n * uses message if there's one instead or get rid of empty fingerprint\n */\n Scope.prototype._applyFingerprint = function (event) {\n // Make sure it's an array first and we actually have something in place\n event.fingerprint = event.fingerprint\n ? Array.isArray(event.fingerprint)\n ? event.fingerprint\n : [event.fingerprint]\n : [];\n // If we have something on the scope, then merge it with event\n if (this._fingerprint) {\n event.fingerprint = event.fingerprint.concat(this._fingerprint);\n }\n // If we have no data at all, remove empty array default\n if (event.fingerprint && !event.fingerprint.length) {\n delete event.fingerprint;\n }\n };\n return Scope;\n}());\nexport { Scope };\n/**\n * Retruns the global event processors.\n */\nfunction getGlobalEventProcessors() {\n var global = getGlobalObject();\n global.__SENTRY__ = global.__SENTRY__ || {};\n global.__SENTRY__.globalEventProcessors = global.__SENTRY__.globalEventProcessors || [];\n return global.__SENTRY__.globalEventProcessors;\n}\n/**\n * Add a EventProcessor to be kept globally.\n * @param callback EventProcessor to add\n */\nexport function addGlobalEventProcessor(callback) {\n getGlobalEventProcessors().push(callback);\n}\n//# sourceMappingURL=scope.js.map","import { __assign, __read, __spread } from \"tslib\";\nimport { consoleSandbox, getGlobalObject, isNodeEnv, logger, timestampWithMs, uuid4 } from '@sentry/utils';\nimport { Scope } from './scope';\n/**\n * API compatibility version of this hub.\n *\n * WARNING: This number should only be increased when the global interface\n * changes and new methods are introduced.\n *\n * @hidden\n */\nexport var API_VERSION = 3;\n/**\n * Default maximum number of breadcrumbs added to an event. Can be overwritten\n * with {@link Options.maxBreadcrumbs}.\n */\nvar DEFAULT_BREADCRUMBS = 100;\n/**\n * Absolute maximum number of breadcrumbs added to an event. The\n * `maxBreadcrumbs` option cannot be higher than this value.\n */\nvar MAX_BREADCRUMBS = 100;\n/**\n * @inheritDoc\n */\nvar Hub = /** @class */ (function () {\n /**\n * Creates a new instance of the hub, will push one {@link Layer} into the\n * internal stack on creation.\n *\n * @param client bound to the hub.\n * @param scope bound to the hub.\n * @param version number, higher number means higher priority.\n */\n function Hub(client, scope, _version) {\n if (scope === void 0) { scope = new Scope(); }\n if (_version === void 0) { _version = API_VERSION; }\n this._version = _version;\n /** Is a {@link Layer}[] containing the client and scope */\n this._stack = [];\n this._stack.push({ client: client, scope: scope });\n this.bindClient(client);\n }\n /**\n * @inheritDoc\n */\n Hub.prototype.isOlderThan = function (version) {\n return this._version < version;\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.bindClient = function (client) {\n var top = this.getStackTop();\n top.client = client;\n if (client && client.setupIntegrations) {\n client.setupIntegrations();\n }\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.pushScope = function () {\n // We want to clone the content of prev scope\n var stack = this.getStack();\n var parentScope = stack.length > 0 ? stack[stack.length - 1].scope : undefined;\n var scope = Scope.clone(parentScope);\n this.getStack().push({\n client: this.getClient(),\n scope: scope,\n });\n return scope;\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.popScope = function () {\n return this.getStack().pop() !== undefined;\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.withScope = function (callback) {\n var scope = this.pushScope();\n try {\n callback(scope);\n }\n finally {\n this.popScope();\n }\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.getClient = function () {\n return this.getStackTop().client;\n };\n /** Returns the scope of the top stack. */\n Hub.prototype.getScope = function () {\n return this.getStackTop().scope;\n };\n /** Returns the scope stack for domains or the process. */\n Hub.prototype.getStack = function () {\n return this._stack;\n };\n /** Returns the topmost scope layer in the order domain > local > process. */\n Hub.prototype.getStackTop = function () {\n return this._stack[this._stack.length - 1];\n };\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n Hub.prototype.captureException = function (exception, hint) {\n var eventId = (this._lastEventId = uuid4());\n var finalHint = hint;\n // If there's no explicit hint provided, mimick the same thing that would happen\n // in the minimal itself to create a consistent behavior.\n // We don't do this in the client, as it's the lowest level API, and doing this,\n // would prevent user from having full control over direct calls.\n if (!hint) {\n var syntheticException = void 0;\n try {\n throw new Error('Sentry syntheticException');\n }\n catch (exception) {\n syntheticException = exception;\n }\n finalHint = {\n originalException: exception,\n syntheticException: syntheticException,\n };\n }\n this._invokeClient('captureException', exception, __assign(__assign({}, finalHint), { event_id: eventId }));\n return eventId;\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.captureMessage = function (message, level, hint) {\n var eventId = (this._lastEventId = uuid4());\n var finalHint = hint;\n // If there's no explicit hint provided, mimick the same thing that would happen\n // in the minimal itself to create a consistent behavior.\n // We don't do this in the client, as it's the lowest level API, and doing this,\n // would prevent user from having full control over direct calls.\n if (!hint) {\n var syntheticException = void 0;\n try {\n throw new Error(message);\n }\n catch (exception) {\n syntheticException = exception;\n }\n finalHint = {\n originalException: message,\n syntheticException: syntheticException,\n };\n }\n this._invokeClient('captureMessage', message, level, __assign(__assign({}, finalHint), { event_id: eventId }));\n return eventId;\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.captureEvent = function (event, hint) {\n var eventId = (this._lastEventId = uuid4());\n this._invokeClient('captureEvent', event, __assign(__assign({}, hint), { event_id: eventId }));\n return eventId;\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.lastEventId = function () {\n return this._lastEventId;\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.addBreadcrumb = function (breadcrumb, hint) {\n var top = this.getStackTop();\n if (!top.scope || !top.client) {\n return;\n }\n // eslint-disable-next-line @typescript-eslint/unbound-method\n var _a = (top.client.getOptions && top.client.getOptions()) || {}, _b = _a.beforeBreadcrumb, beforeBreadcrumb = _b === void 0 ? null : _b, _c = _a.maxBreadcrumbs, maxBreadcrumbs = _c === void 0 ? DEFAULT_BREADCRUMBS : _c;\n if (maxBreadcrumbs <= 0) {\n return;\n }\n var timestamp = timestampWithMs();\n var mergedBreadcrumb = __assign({ timestamp: timestamp }, breadcrumb);\n var finalBreadcrumb = beforeBreadcrumb\n ? consoleSandbox(function () { return beforeBreadcrumb(mergedBreadcrumb, hint); })\n : mergedBreadcrumb;\n if (finalBreadcrumb === null) {\n return;\n }\n top.scope.addBreadcrumb(finalBreadcrumb, Math.min(maxBreadcrumbs, MAX_BREADCRUMBS));\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.setUser = function (user) {\n var top = this.getStackTop();\n if (!top.scope) {\n return;\n }\n top.scope.setUser(user);\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.setTags = function (tags) {\n var top = this.getStackTop();\n if (!top.scope) {\n return;\n }\n top.scope.setTags(tags);\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.setExtras = function (extras) {\n var top = this.getStackTop();\n if (!top.scope) {\n return;\n }\n top.scope.setExtras(extras);\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.setTag = function (key, value) {\n var top = this.getStackTop();\n if (!top.scope) {\n return;\n }\n top.scope.setTag(key, value);\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.setExtra = function (key, extra) {\n var top = this.getStackTop();\n if (!top.scope) {\n return;\n }\n top.scope.setExtra(key, extra);\n };\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Hub.prototype.setContext = function (name, context) {\n var top = this.getStackTop();\n if (!top.scope) {\n return;\n }\n top.scope.setContext(name, context);\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.configureScope = function (callback) {\n var top = this.getStackTop();\n if (top.scope && top.client) {\n callback(top.scope);\n }\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.run = function (callback) {\n var oldHub = makeMain(this);\n try {\n callback(this);\n }\n finally {\n makeMain(oldHub);\n }\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.getIntegration = function (integration) {\n var client = this.getClient();\n if (!client) {\n return null;\n }\n try {\n return client.getIntegration(integration);\n }\n catch (_oO) {\n logger.warn(\"Cannot retrieve integration \" + integration.id + \" from the current Hub\");\n return null;\n }\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.startSpan = function (context) {\n return this._callExtensionMethod('startSpan', context);\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.startTransaction = function (context) {\n return this._callExtensionMethod('startTransaction', context);\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.traceHeaders = function () {\n return this._callExtensionMethod('traceHeaders');\n };\n /**\n * Internal helper function to call a method on the top client if it exists.\n *\n * @param method The method to call on the client.\n * @param args Arguments to pass to the client function.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Hub.prototype._invokeClient = function (method) {\n var _a;\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n var top = this.getStackTop();\n if (top && top.client && top.client[method]) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-explicit-any\n (_a = top.client)[method].apply(_a, __spread(args, [top.scope]));\n }\n };\n /**\n * Calls global extension method and binding current instance to the function call\n */\n // @ts-ignore Function lacks ending return statement and return type does not include 'undefined'. ts(2366)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Hub.prototype._callExtensionMethod = function (method) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n var carrier = getMainCarrier();\n var sentry = carrier.__SENTRY__;\n if (sentry && sentry.extensions && typeof sentry.extensions[method] === 'function') {\n return sentry.extensions[method].apply(this, args);\n }\n logger.warn(\"Extension method \" + method + \" couldn't be found, doing nothing.\");\n };\n return Hub;\n}());\nexport { Hub };\n/** Returns the global shim registry. */\nexport function getMainCarrier() {\n var carrier = getGlobalObject();\n carrier.__SENTRY__ = carrier.__SENTRY__ || {\n extensions: {},\n hub: undefined,\n };\n return carrier;\n}\n/**\n * Replaces the current main hub with the passed one on the global object\n *\n * @returns The old replaced hub\n */\nexport function makeMain(hub) {\n var registry = getMainCarrier();\n var oldHub = getHubFromCarrier(registry);\n setHubOnCarrier(registry, hub);\n return oldHub;\n}\n/**\n * Returns the default hub instance.\n *\n * If a hub is already registered in the global carrier but this module\n * contains a more recent version, it replaces the registered version.\n * Otherwise, the currently registered hub will be returned.\n */\nexport function getCurrentHub() {\n // Get main carrier (global for every environment)\n var registry = getMainCarrier();\n // If there's no hub, or its an old API, assign a new one\n if (!hasHubOnCarrier(registry) || getHubFromCarrier(registry).isOlderThan(API_VERSION)) {\n setHubOnCarrier(registry, new Hub());\n }\n // Prefer domains over global if they are there (applicable only to Node environment)\n if (isNodeEnv()) {\n return getHubFromActiveDomain(registry);\n }\n // Return hub that lives on a global object\n return getHubFromCarrier(registry);\n}\n/**\n * Try to read the hub from an active domain, and fallback to the registry if one doesn't exist\n * @returns discovered hub\n */\nfunction getHubFromActiveDomain(registry) {\n try {\n var property = 'domain';\n var carrier = getMainCarrier();\n var sentry = carrier.__SENTRY__;\n if (!sentry || !sentry.extensions || !sentry.extensions[property]) {\n return getHubFromCarrier(registry);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var domain = sentry.extensions[property];\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n var activeDomain = domain.active;\n // If there's no active domain, just return global hub\n if (!activeDomain) {\n return getHubFromCarrier(registry);\n }\n // If there's no hub on current domain, or it's an old API, assign a new one\n if (!hasHubOnCarrier(activeDomain) || getHubFromCarrier(activeDomain).isOlderThan(API_VERSION)) {\n var registryHubTopStack = getHubFromCarrier(registry).getStackTop();\n setHubOnCarrier(activeDomain, new Hub(registryHubTopStack.client, Scope.clone(registryHubTopStack.scope)));\n }\n // Return hub that lives on a domain\n return getHubFromCarrier(activeDomain);\n }\n catch (_Oo) {\n // Return hub that lives on a global object\n return getHubFromCarrier(registry);\n }\n}\n/**\n * This will tell whether a carrier has a hub on it or not\n * @param carrier object\n */\nfunction hasHubOnCarrier(carrier) {\n if (carrier && carrier.__SENTRY__ && carrier.__SENTRY__.hub) {\n return true;\n }\n return false;\n}\n/**\n * This will create a new {@link Hub} and add to the passed object on\n * __SENTRY__.hub.\n * @param carrier object\n * @hidden\n */\nexport function getHubFromCarrier(carrier) {\n if (carrier && carrier.__SENTRY__ && carrier.__SENTRY__.hub) {\n return carrier.__SENTRY__.hub;\n }\n carrier.__SENTRY__ = carrier.__SENTRY__ || {};\n carrier.__SENTRY__.hub = new Hub();\n return carrier.__SENTRY__.hub;\n}\n/**\n * This will set passed {@link Hub} on the passed object's __SENTRY__.hub attribute\n * @param carrier object\n * @param hub Hub\n */\nexport function setHubOnCarrier(carrier, hub) {\n if (!carrier) {\n return false;\n }\n carrier.__SENTRY__ = carrier.__SENTRY__ || {};\n carrier.__SENTRY__.hub = hub;\n return true;\n}\n//# sourceMappingURL=hub.js.map","/** The status of an Span. */\n// eslint-disable-next-line import/export\nexport var SpanStatus;\n(function (SpanStatus) {\n /** The operation completed successfully. */\n SpanStatus[\"Ok\"] = \"ok\";\n /** Deadline expired before operation could complete. */\n SpanStatus[\"DeadlineExceeded\"] = \"deadline_exceeded\";\n /** 401 Unauthorized (actually does mean unauthenticated according to RFC 7235) */\n SpanStatus[\"Unauthenticated\"] = \"unauthenticated\";\n /** 403 Forbidden */\n SpanStatus[\"PermissionDenied\"] = \"permission_denied\";\n /** 404 Not Found. Some requested entity (file or directory) was not found. */\n SpanStatus[\"NotFound\"] = \"not_found\";\n /** 429 Too Many Requests */\n SpanStatus[\"ResourceExhausted\"] = \"resource_exhausted\";\n /** Client specified an invalid argument. 4xx. */\n SpanStatus[\"InvalidArgument\"] = \"invalid_argument\";\n /** 501 Not Implemented */\n SpanStatus[\"Unimplemented\"] = \"unimplemented\";\n /** 503 Service Unavailable */\n SpanStatus[\"Unavailable\"] = \"unavailable\";\n /** Other/generic 5xx. */\n SpanStatus[\"InternalError\"] = \"internal_error\";\n /** Unknown. Any non-standard HTTP status code. */\n SpanStatus[\"UnknownError\"] = \"unknown_error\";\n /** The operation was cancelled (typically by the user). */\n SpanStatus[\"Cancelled\"] = \"cancelled\";\n /** Already exists (409) */\n SpanStatus[\"AlreadyExists\"] = \"already_exists\";\n /** Operation was rejected because the system is not in a state required for the operation's */\n SpanStatus[\"FailedPrecondition\"] = \"failed_precondition\";\n /** The operation was aborted, typically due to a concurrency issue. */\n SpanStatus[\"Aborted\"] = \"aborted\";\n /** Operation was attempted past the valid range. */\n SpanStatus[\"OutOfRange\"] = \"out_of_range\";\n /** Unrecoverable data loss or corruption */\n SpanStatus[\"DataLoss\"] = \"data_loss\";\n})(SpanStatus || (SpanStatus = {}));\n// eslint-disable-next-line @typescript-eslint/no-namespace, import/export\n(function (SpanStatus) {\n /**\n * Converts a HTTP status code into a {@link SpanStatus}.\n *\n * @param httpStatus The HTTP response status code.\n * @returns The span status or {@link SpanStatus.UnknownError}.\n */\n function fromHttpCode(httpStatus) {\n if (httpStatus < 400) {\n return SpanStatus.Ok;\n }\n if (httpStatus >= 400 && httpStatus < 500) {\n switch (httpStatus) {\n case 401:\n return SpanStatus.Unauthenticated;\n case 403:\n return SpanStatus.PermissionDenied;\n case 404:\n return SpanStatus.NotFound;\n case 409:\n return SpanStatus.AlreadyExists;\n case 413:\n return SpanStatus.FailedPrecondition;\n case 429:\n return SpanStatus.ResourceExhausted;\n default:\n return SpanStatus.InvalidArgument;\n }\n }\n if (httpStatus >= 500 && httpStatus < 600) {\n switch (httpStatus) {\n case 501:\n return SpanStatus.Unimplemented;\n case 503:\n return SpanStatus.Unavailable;\n case 504:\n return SpanStatus.DeadlineExceeded;\n default:\n return SpanStatus.InternalError;\n }\n }\n return SpanStatus.UnknownError;\n }\n SpanStatus.fromHttpCode = fromHttpCode;\n})(SpanStatus || (SpanStatus = {}));\n//# sourceMappingURL=spanstatus.js.map","import { __assign } from \"tslib\";\nimport { dropUndefinedKeys, timestampWithMs, uuid4 } from '@sentry/utils';\nimport { SpanStatus } from './spanstatus';\nexport var TRACEPARENT_REGEXP = new RegExp('^[ \\\\t]*' + // whitespace\n '([0-9a-f]{32})?' + // trace_id\n '-?([0-9a-f]{16})?' + // span_id\n '-?([01])?' + // sampled\n '[ \\\\t]*$');\n/**\n * Span contains all data about a span\n */\nvar Span = /** @class */ (function () {\n /**\n * You should never call the constructor manually, always use `hub.startSpan()`.\n * @internal\n * @hideconstructor\n * @hidden\n */\n function Span(spanContext) {\n /**\n * @inheritDoc\n */\n this.traceId = uuid4();\n /**\n * @inheritDoc\n */\n this.spanId = uuid4().substring(16);\n /**\n * Timestamp in seconds when the span was created.\n */\n this.startTimestamp = timestampWithMs();\n /**\n * @inheritDoc\n */\n this.tags = {};\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.data = {};\n if (!spanContext) {\n return this;\n }\n if (spanContext.traceId) {\n this.traceId = spanContext.traceId;\n }\n if (spanContext.spanId) {\n this.spanId = spanContext.spanId;\n }\n if (spanContext.parentSpanId) {\n this.parentSpanId = spanContext.parentSpanId;\n }\n // We want to include booleans as well here\n if ('sampled' in spanContext) {\n this.sampled = spanContext.sampled;\n }\n if (spanContext.op) {\n this.op = spanContext.op;\n }\n if (spanContext.description) {\n this.description = spanContext.description;\n }\n if (spanContext.data) {\n this.data = spanContext.data;\n }\n if (spanContext.tags) {\n this.tags = spanContext.tags;\n }\n if (spanContext.status) {\n this.status = spanContext.status;\n }\n if (spanContext.startTimestamp) {\n this.startTimestamp = spanContext.startTimestamp;\n }\n if (spanContext.endTimestamp) {\n this.endTimestamp = spanContext.endTimestamp;\n }\n }\n /**\n * Continues a trace from a string (usually the header).\n * @param traceparent Traceparent string\n */\n Span.fromTraceparent = function (traceparent, spanContext) {\n var matches = traceparent.match(TRACEPARENT_REGEXP);\n if (matches) {\n var sampled = void 0;\n if (matches[3] === '1') {\n sampled = true;\n }\n else if (matches[3] === '0') {\n sampled = false;\n }\n return new Span(__assign(__assign({}, spanContext), { parentSpanId: matches[2], sampled: sampled, traceId: matches[1] }));\n }\n return undefined;\n };\n /**\n * @inheritDoc\n * @deprecated\n */\n Span.prototype.child = function (spanContext) {\n return this.startChild(spanContext);\n };\n /**\n * @inheritDoc\n */\n Span.prototype.startChild = function (spanContext) {\n var span = new Span(__assign(__assign({}, spanContext), { parentSpanId: this.spanId, sampled: this.sampled, traceId: this.traceId }));\n span.spanRecorder = this.spanRecorder;\n if (span.spanRecorder) {\n span.spanRecorder.add(span);\n }\n return span;\n };\n /**\n * @inheritDoc\n */\n Span.prototype.setTag = function (key, value) {\n var _a;\n this.tags = __assign(__assign({}, this.tags), (_a = {}, _a[key] = value, _a));\n return this;\n };\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-explicit-any\n Span.prototype.setData = function (key, value) {\n var _a;\n this.data = __assign(__assign({}, this.data), (_a = {}, _a[key] = value, _a));\n return this;\n };\n /**\n * @inheritDoc\n */\n Span.prototype.setStatus = function (value) {\n this.status = value;\n return this;\n };\n /**\n * @inheritDoc\n */\n Span.prototype.setHttpStatus = function (httpStatus) {\n this.setTag('http.status_code', String(httpStatus));\n var spanStatus = SpanStatus.fromHttpCode(httpStatus);\n if (spanStatus !== SpanStatus.UnknownError) {\n this.setStatus(spanStatus);\n }\n return this;\n };\n /**\n * @inheritDoc\n */\n Span.prototype.isSuccess = function () {\n return this.status === SpanStatus.Ok;\n };\n /**\n * @inheritDoc\n */\n Span.prototype.finish = function (endTimestamp) {\n this.endTimestamp = typeof endTimestamp === 'number' ? endTimestamp : timestampWithMs();\n };\n /**\n * @inheritDoc\n */\n Span.prototype.toTraceparent = function () {\n var sampledString = '';\n if (this.sampled !== undefined) {\n sampledString = this.sampled ? '-1' : '-0';\n }\n return this.traceId + \"-\" + this.spanId + sampledString;\n };\n /**\n * @inheritDoc\n */\n Span.prototype.getTraceContext = function () {\n return dropUndefinedKeys({\n data: Object.keys(this.data).length > 0 ? this.data : undefined,\n description: this.description,\n op: this.op,\n parent_span_id: this.parentSpanId,\n span_id: this.spanId,\n status: this.status,\n tags: Object.keys(this.tags).length > 0 ? this.tags : undefined,\n trace_id: this.traceId,\n });\n };\n /**\n * @inheritDoc\n */\n Span.prototype.toJSON = function () {\n return dropUndefinedKeys({\n data: Object.keys(this.data).length > 0 ? this.data : undefined,\n description: this.description,\n op: this.op,\n parent_span_id: this.parentSpanId,\n span_id: this.spanId,\n start_timestamp: this.startTimestamp,\n status: this.status,\n tags: Object.keys(this.tags).length > 0 ? this.tags : undefined,\n timestamp: this.endTimestamp,\n trace_id: this.traceId,\n });\n };\n return Span;\n}());\nexport { Span };\n//# sourceMappingURL=span.js.map","import { __extends } from \"tslib\";\nimport { getCurrentHub, Hub } from '@sentry/hub';\nimport { isInstanceOf, logger } from '@sentry/utils';\nimport { Span as SpanClass } from './span';\n/**\n * Keeps track of finished spans for a given transaction\n * @internal\n * @hideconstructor\n * @hidden\n */\nvar SpanRecorder = /** @class */ (function () {\n function SpanRecorder(maxlen) {\n if (maxlen === void 0) { maxlen = 1000; }\n this.spans = [];\n this._maxlen = maxlen;\n }\n /**\n * This is just so that we don't run out of memory while recording a lot\n * of spans. At some point we just stop and flush out the start of the\n * trace tree (i.e.the first n spans with the smallest\n * start_timestamp).\n */\n SpanRecorder.prototype.add = function (span) {\n if (this.spans.length > this._maxlen) {\n span.spanRecorder = undefined;\n }\n else {\n this.spans.push(span);\n }\n };\n return SpanRecorder;\n}());\nexport { SpanRecorder };\n/** JSDoc */\nvar Transaction = /** @class */ (function (_super) {\n __extends(Transaction, _super);\n /**\n * This constructor should never be called manually. Those instrumenting tracing should use\n * `Sentry.startTransaction()`, and internal methods should use `hub.startTransaction()`.\n * @internal\n * @hideconstructor\n * @hidden\n */\n function Transaction(transactionContext, hub) {\n var _this = _super.call(this, transactionContext) || this;\n /**\n * The reference to the current hub.\n */\n _this._hub = getCurrentHub();\n if (isInstanceOf(hub, Hub)) {\n _this._hub = hub;\n }\n if (transactionContext.name) {\n _this.name = transactionContext.name;\n }\n _this._trimEnd = transactionContext.trimEnd;\n return _this;\n }\n /**\n * JSDoc\n */\n Transaction.prototype.setName = function (name) {\n this.name = name;\n };\n /**\n * Attaches SpanRecorder to the span itself\n * @param maxlen maximum number of spans that can be recorded\n */\n Transaction.prototype.initSpanRecorder = function (maxlen) {\n if (maxlen === void 0) { maxlen = 1000; }\n if (!this.spanRecorder) {\n this.spanRecorder = new SpanRecorder(maxlen);\n }\n this.spanRecorder.add(this);\n };\n /**\n * @inheritDoc\n */\n Transaction.prototype.finish = function (endTimestamp) {\n var _this = this;\n // This transaction is already finished, so we should not flush it again.\n if (this.endTimestamp !== undefined) {\n return undefined;\n }\n if (!this.name) {\n logger.warn('Transaction has no name, falling back to ``.');\n this.name = '';\n }\n _super.prototype.finish.call(this, endTimestamp);\n if (this.sampled !== true) {\n // At this point if `sampled !== true` we want to discard the transaction.\n logger.warn('Discarding transaction because it was not chosen to be sampled.');\n return undefined;\n }\n var finishedSpans = this.spanRecorder ? this.spanRecorder.spans.filter(function (s) { return s !== _this && s.endTimestamp; }) : [];\n if (this._trimEnd && finishedSpans.length > 0) {\n this.endTimestamp = finishedSpans.reduce(function (prev, current) {\n if (prev.endTimestamp && current.endTimestamp) {\n return prev.endTimestamp > current.endTimestamp ? prev : current;\n }\n return prev;\n }).endTimestamp;\n }\n return this._hub.captureEvent({\n contexts: {\n trace: this.getTraceContext(),\n },\n spans: finishedSpans,\n start_timestamp: this.startTimestamp,\n tags: this.tags,\n timestamp: this.endTimestamp,\n transaction: this.name,\n type: 'transaction',\n });\n };\n return Transaction;\n}(SpanClass));\nexport { Transaction };\n//# sourceMappingURL=transaction.js.map","import { getMainCarrier } from '@sentry/hub';\nimport { logger } from '@sentry/utils';\nimport { Span } from './span';\nimport { Transaction } from './transaction';\n/** Returns all trace headers that are currently on the top scope. */\nfunction traceHeaders() {\n var scope = this.getScope();\n if (scope) {\n var span = scope.getSpan();\n if (span) {\n return {\n 'sentry-trace': span.toTraceparent(),\n };\n }\n }\n return {};\n}\n/**\n * {@see Hub.startTransaction}\n * @deprecated Please use the @sentry/tracing package instead\n */\nfunction startTransaction(context) {\n var transaction = new Transaction(context, this);\n var client = this.getClient();\n // Roll the dice for sampling transaction, all child spans inherit the sampling decision.\n if (transaction.sampled === undefined) {\n var sampleRate = (client && client.getOptions().tracesSampleRate) || 0;\n // if true = we want to have the transaction\n // if false = we don't want to have it\n // Math.random (inclusive of 0, but not 1)\n transaction.sampled = Math.random() < sampleRate;\n }\n // We only want to create a span list if we sampled the transaction\n // If sampled == false, we will discard the span anyway, so we can save memory by not storing child spans\n if (transaction.sampled) {\n var experimentsOptions = (client && client.getOptions()._experiments) || {};\n transaction.initSpanRecorder(experimentsOptions.maxSpans);\n }\n return transaction;\n}\n/**\n * {@see Hub.startSpan}\n */\nfunction startSpan(context) {\n /**\n * @deprecated\n * TODO: consider removing this in a future release.\n *\n * This is for backwards compatibility with releases before startTransaction\n * existed, to allow for a smoother transition.\n */\n {\n // The `TransactionContext.name` field used to be called `transaction`.\n var transactionContext = context;\n if (transactionContext.transaction !== undefined) {\n transactionContext.name = transactionContext.transaction;\n }\n // Check for not undefined since we defined it's ok to start a transaction\n // with an empty name.\n if (transactionContext.name !== undefined) {\n logger.warn('Deprecated: Use startTransaction to start transactions and Transaction.startChild to start spans.');\n return this.startTransaction(transactionContext);\n }\n }\n var scope = this.getScope();\n if (scope) {\n // If there is a Span on the Scope we start a child and return that instead\n var parentSpan = scope.getSpan();\n if (parentSpan) {\n return parentSpan.startChild(context);\n }\n }\n // Otherwise we return a new Span\n return new Span(context);\n}\n/**\n * This patches the global object and injects the APM extensions methods\n */\nexport function addExtensionMethods() {\n var carrier = getMainCarrier();\n if (carrier.__SENTRY__) {\n carrier.__SENTRY__.extensions = carrier.__SENTRY__.extensions || {};\n if (!carrier.__SENTRY__.extensions.startTransaction) {\n // eslint-disable-next-line deprecation/deprecation\n carrier.__SENTRY__.extensions.startTransaction = startTransaction;\n }\n if (!carrier.__SENTRY__.extensions.startSpan) {\n carrier.__SENTRY__.extensions.startSpan = startSpan;\n }\n if (!carrier.__SENTRY__.extensions.traceHeaders) {\n carrier.__SENTRY__.extensions.traceHeaders = traceHeaders;\n }\n }\n}\n//# sourceMappingURL=hubextensions.js.map","import { logger } from '@sentry/utils';\n/**\n * Express integration\n *\n * Provides an request and error handler for Express framework\n * as well as tracing capabilities\n */\nvar Express = /** @class */ (function () {\n /**\n * @inheritDoc\n */\n function Express(options) {\n if (options === void 0) { options = {}; }\n /**\n * @inheritDoc\n */\n this.name = Express.id;\n this._app = options.app;\n }\n /**\n * @inheritDoc\n */\n Express.prototype.setupOnce = function () {\n if (!this._app) {\n logger.error('ExpressIntegration is missing an Express instance');\n return;\n }\n instrumentMiddlewares(this._app);\n };\n /**\n * @inheritDoc\n */\n Express.id = 'Express';\n return Express;\n}());\nexport { Express };\n/**\n * Wraps original middleware function in a tracing call, which stores the info about the call as a span,\n * and finishes it once the middleware is done invoking.\n *\n * Express middlewares have 3 various forms, thus we have to take care of all of them:\n * // sync\n * app.use(function (req, res) { ... })\n * // async\n * app.use(function (req, res, next) { ... })\n * // error handler\n * app.use(function (err, req, res, next) { ... })\n */\n// eslint-disable-next-line @typescript-eslint/ban-types\nfunction wrap(fn) {\n var arity = fn.length;\n switch (arity) {\n case 2: {\n return function (_req, res) {\n var transaction = res.__sentry_transaction;\n if (transaction) {\n var span_1 = transaction.startChild({\n description: fn.name,\n op: 'middleware',\n });\n res.once('finish', function () {\n span_1.finish();\n });\n }\n return fn.apply(this, arguments);\n };\n }\n case 3: {\n return function (req, res, next) {\n var transaction = res.__sentry_transaction;\n var span = transaction &&\n transaction.startChild({\n description: fn.name,\n op: 'middleware',\n });\n fn.call(this, req, res, function () {\n if (span) {\n span.finish();\n }\n return next.apply(this, arguments);\n });\n };\n }\n case 4: {\n return function (err, req, res, next) {\n var transaction = res.__sentry_transaction;\n var span = transaction &&\n transaction.startChild({\n description: fn.name,\n op: 'middleware',\n });\n fn.call(this, err, req, res, function () {\n if (span) {\n span.finish();\n }\n return next.apply(this, arguments);\n });\n };\n }\n default: {\n throw new Error(\"Express middleware takes 2-4 arguments. Got: \" + arity);\n }\n }\n}\n/**\n * Takes all the function arguments passed to the original `app.use` call\n * and wraps every function, as well as array of functions with a call to our `wrap` method.\n * We have to take care of the arrays as well as iterate over all of the arguments,\n * as `app.use` can accept middlewares in few various forms.\n *\n * app.use([], )\n * app.use([], , ...)\n * app.use([], ...[])\n */\nfunction wrapUseArgs(args) {\n return Array.from(args).map(function (arg) {\n if (typeof arg === 'function') {\n return wrap(arg);\n }\n if (Array.isArray(arg)) {\n return arg.map(function (a) {\n if (typeof a === 'function') {\n return wrap(a);\n }\n return a;\n });\n }\n return arg;\n });\n}\n/**\n * Patches original app.use to utilize our tracing functionality\n */\nfunction instrumentMiddlewares(app) {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n var originalAppUse = app.use;\n app.use = function () {\n return originalAppUse.apply(this, wrapUseArgs(arguments));\n };\n return app;\n}\n//# sourceMappingURL=express.js.map","/** JSDoc */\n// eslint-disable-next-line import/export\nexport var Severity;\n(function (Severity) {\n /** JSDoc */\n Severity[\"Fatal\"] = \"fatal\";\n /** JSDoc */\n Severity[\"Error\"] = \"error\";\n /** JSDoc */\n Severity[\"Warning\"] = \"warning\";\n /** JSDoc */\n Severity[\"Log\"] = \"log\";\n /** JSDoc */\n Severity[\"Info\"] = \"info\";\n /** JSDoc */\n Severity[\"Debug\"] = \"debug\";\n /** JSDoc */\n Severity[\"Critical\"] = \"critical\";\n})(Severity || (Severity = {}));\n// eslint-disable-next-line @typescript-eslint/no-namespace, import/export\n(function (Severity) {\n /**\n * Converts a string-based level into a {@link Severity}.\n *\n * @param level string representation of Severity\n * @returns Severity\n */\n function fromString(level) {\n switch (level) {\n case 'debug':\n return Severity.Debug;\n case 'info':\n return Severity.Info;\n case 'warn':\n case 'warning':\n return Severity.Warning;\n case 'error':\n return Severity.Error;\n case 'fatal':\n return Severity.Fatal;\n case 'critical':\n return Severity.Critical;\n case 'log':\n default:\n return Severity.Log;\n }\n }\n Severity.fromString = fromString;\n})(Severity || (Severity = {}));\n//# sourceMappingURL=severity.js.map","import { logger } from './logger';\nimport { getGlobalObject } from './misc';\n/**\n * Tells whether current environment supports ErrorEvent objects\n * {@link supportsErrorEvent}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsErrorEvent() {\n try {\n new ErrorEvent('');\n return true;\n }\n catch (e) {\n return false;\n }\n}\n/**\n * Tells whether current environment supports DOMError objects\n * {@link supportsDOMError}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsDOMError() {\n try {\n // Chrome: VM89:1 Uncaught TypeError: Failed to construct 'DOMError':\n // 1 argument required, but only 0 present.\n // @ts-ignore It really needs 1 argument, not 0.\n new DOMError('');\n return true;\n }\n catch (e) {\n return false;\n }\n}\n/**\n * Tells whether current environment supports DOMException objects\n * {@link supportsDOMException}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsDOMException() {\n try {\n new DOMException('');\n return true;\n }\n catch (e) {\n return false;\n }\n}\n/**\n * Tells whether current environment supports Fetch API\n * {@link supportsFetch}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsFetch() {\n if (!('fetch' in getGlobalObject())) {\n return false;\n }\n try {\n new Headers();\n new Request('');\n new Response();\n return true;\n }\n catch (e) {\n return false;\n }\n}\n/**\n * isNativeFetch checks if the given function is a native implementation of fetch()\n */\n// eslint-disable-next-line @typescript-eslint/ban-types\nfunction isNativeFetch(func) {\n return func && /^function fetch\\(\\)\\s+\\{\\s+\\[native code\\]\\s+\\}$/.test(func.toString());\n}\n/**\n * Tells whether current environment supports Fetch API natively\n * {@link supportsNativeFetch}.\n *\n * @returns true if `window.fetch` is natively implemented, false otherwise\n */\nexport function supportsNativeFetch() {\n if (!supportsFetch()) {\n return false;\n }\n var global = getGlobalObject();\n // Fast path to avoid DOM I/O\n // eslint-disable-next-line @typescript-eslint/unbound-method\n if (isNativeFetch(global.fetch)) {\n return true;\n }\n // window.fetch is implemented, but is polyfilled or already wrapped (e.g: by a chrome extension)\n // so create a \"pure\" iframe to see if that has native fetch\n var result = false;\n var doc = global.document;\n // eslint-disable-next-line deprecation/deprecation\n if (doc && typeof doc.createElement === \"function\") {\n try {\n var sandbox = doc.createElement('iframe');\n sandbox.hidden = true;\n doc.head.appendChild(sandbox);\n if (sandbox.contentWindow && sandbox.contentWindow.fetch) {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n result = isNativeFetch(sandbox.contentWindow.fetch);\n }\n doc.head.removeChild(sandbox);\n }\n catch (err) {\n logger.warn('Could not create sandbox iframe for pure fetch check, bailing to window.fetch: ', err);\n }\n }\n return result;\n}\n/**\n * Tells whether current environment supports ReportingObserver API\n * {@link supportsReportingObserver}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsReportingObserver() {\n return 'ReportingObserver' in getGlobalObject();\n}\n/**\n * Tells whether current environment supports Referrer Policy API\n * {@link supportsReferrerPolicy}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsReferrerPolicy() {\n // Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default\n // https://caniuse.com/#feat=referrer-policy\n // It doesn't. And it throw exception instead of ignoring this parameter...\n // REF: https://github.com/getsentry/raven-js/issues/1233\n if (!supportsFetch()) {\n return false;\n }\n try {\n new Request('_', {\n referrerPolicy: 'origin',\n });\n return true;\n }\n catch (e) {\n return false;\n }\n}\n/**\n * Tells whether current environment supports History API\n * {@link supportsHistory}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsHistory() {\n // NOTE: in Chrome App environment, touching history.pushState, *even inside\n // a try/catch block*, will cause Chrome to output an error to console.error\n // borrowed from: https://github.com/angular/angular.js/pull/13945/files\n var global = getGlobalObject();\n /* eslint-disable @typescript-eslint/no-unsafe-member-access */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var chrome = global.chrome;\n var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime;\n /* eslint-enable @typescript-eslint/no-unsafe-member-access */\n var hasHistoryApi = 'history' in global && !!global.history.pushState && !!global.history.replaceState;\n return !isChromePackagedApp && hasHistoryApi;\n}\n//# sourceMappingURL=supports.js.map","import { __assign, __values } from \"tslib\";\nimport { isInstanceOf, isString } from './is';\nimport { logger } from './logger';\nimport { getFunctionName, getGlobalObject } from './misc';\nimport { fill } from './object';\nimport { supportsHistory, supportsNativeFetch } from './supports';\nvar global = getGlobalObject();\n/**\n * Instrument native APIs to call handlers that can be used to create breadcrumbs, APM spans etc.\n * - Console API\n * - Fetch API\n * - XHR API\n * - History API\n * - DOM API (click/typing)\n * - Error API\n * - UnhandledRejection API\n */\nvar handlers = {};\nvar instrumented = {};\n/** Instruments given API */\nfunction instrument(type) {\n if (instrumented[type]) {\n return;\n }\n instrumented[type] = true;\n switch (type) {\n case 'console':\n instrumentConsole();\n break;\n case 'dom':\n instrumentDOM();\n break;\n case 'xhr':\n instrumentXHR();\n break;\n case 'fetch':\n instrumentFetch();\n break;\n case 'history':\n instrumentHistory();\n break;\n case 'error':\n instrumentError();\n break;\n case 'unhandledrejection':\n instrumentUnhandledRejection();\n break;\n default:\n logger.warn('unknown instrumentation type:', type);\n }\n}\n/**\n * Add handler that will be called when given type of instrumentation triggers.\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nexport function addInstrumentationHandler(handler) {\n if (!handler || typeof handler.type !== 'string' || typeof handler.callback !== 'function') {\n return;\n }\n handlers[handler.type] = handlers[handler.type] || [];\n handlers[handler.type].push(handler.callback);\n instrument(handler.type);\n}\n/** JSDoc */\nfunction triggerHandlers(type, data) {\n var e_1, _a;\n if (!type || !handlers[type]) {\n return;\n }\n try {\n for (var _b = __values(handlers[type] || []), _c = _b.next(); !_c.done; _c = _b.next()) {\n var handler = _c.value;\n try {\n handler(data);\n }\n catch (e) {\n logger.error(\"Error while triggering instrumentation handler.\\nType: \" + type + \"\\nName: \" + getFunctionName(handler) + \"\\nError: \" + e);\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n}\n/** JSDoc */\nfunction instrumentConsole() {\n if (!('console' in global)) {\n return;\n }\n ['debug', 'info', 'warn', 'error', 'log', 'assert'].forEach(function (level) {\n if (!(level in global.console)) {\n return;\n }\n fill(global.console, level, function (originalConsoleLevel) {\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n triggerHandlers('console', { args: args, level: level });\n // this fails for some browsers. :(\n if (originalConsoleLevel) {\n Function.prototype.apply.call(originalConsoleLevel, global.console, args);\n }\n };\n });\n });\n}\n/** JSDoc */\nfunction instrumentFetch() {\n if (!supportsNativeFetch()) {\n return;\n }\n fill(global, 'fetch', function (originalFetch) {\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var commonHandlerData = {\n args: args,\n fetchData: {\n method: getFetchMethod(args),\n url: getFetchUrl(args),\n },\n startTimestamp: Date.now(),\n };\n triggerHandlers('fetch', __assign({}, commonHandlerData));\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return originalFetch.apply(global, args).then(function (response) {\n triggerHandlers('fetch', __assign(__assign({}, commonHandlerData), { endTimestamp: Date.now(), response: response }));\n return response;\n }, function (error) {\n triggerHandlers('fetch', __assign(__assign({}, commonHandlerData), { endTimestamp: Date.now(), error: error }));\n // NOTE: If you are a Sentry user, and you are seeing this stack frame,\n // it means the sentry.javascript SDK caught an error invoking your application code.\n // This is expected behavior and NOT indicative of a bug with sentry.javascript.\n throw error;\n });\n };\n });\n}\n/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/** Extract `method` from fetch call arguments */\nfunction getFetchMethod(fetchArgs) {\n if (fetchArgs === void 0) { fetchArgs = []; }\n if ('Request' in global && isInstanceOf(fetchArgs[0], Request) && fetchArgs[0].method) {\n return String(fetchArgs[0].method).toUpperCase();\n }\n if (fetchArgs[1] && fetchArgs[1].method) {\n return String(fetchArgs[1].method).toUpperCase();\n }\n return 'GET';\n}\n/** Extract `url` from fetch call arguments */\nfunction getFetchUrl(fetchArgs) {\n if (fetchArgs === void 0) { fetchArgs = []; }\n if (typeof fetchArgs[0] === 'string') {\n return fetchArgs[0];\n }\n if ('Request' in global && isInstanceOf(fetchArgs[0], Request)) {\n return fetchArgs[0].url;\n }\n return String(fetchArgs[0]);\n}\n/* eslint-enable @typescript-eslint/no-unsafe-member-access */\n/** JSDoc */\nfunction instrumentXHR() {\n if (!('XMLHttpRequest' in global)) {\n return;\n }\n var xhrproto = XMLHttpRequest.prototype;\n fill(xhrproto, 'open', function (originalOpen) {\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var xhr = this;\n var url = args[1];\n xhr.__sentry_xhr__ = {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n method: isString(args[0]) ? args[0].toUpperCase() : args[0],\n url: args[1],\n };\n // if Sentry key appears in URL, don't capture it as a request\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (isString(url) && xhr.__sentry_xhr__.method === 'POST' && url.match(/sentry_key/)) {\n xhr.__sentry_own_request__ = true;\n }\n var onreadystatechangeHandler = function () {\n if (xhr.readyState === 4) {\n try {\n // touching statusCode in some platforms throws\n // an exception\n if (xhr.__sentry_xhr__) {\n xhr.__sentry_xhr__.status_code = xhr.status;\n }\n }\n catch (e) {\n /* do nothing */\n }\n triggerHandlers('xhr', {\n args: args,\n endTimestamp: Date.now(),\n startTimestamp: Date.now(),\n xhr: xhr,\n });\n }\n };\n if ('onreadystatechange' in xhr && typeof xhr.onreadystatechange === 'function') {\n fill(xhr, 'onreadystatechange', function (original) {\n return function () {\n var readyStateArgs = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n readyStateArgs[_i] = arguments[_i];\n }\n onreadystatechangeHandler();\n return original.apply(xhr, readyStateArgs);\n };\n });\n }\n else {\n xhr.addEventListener('readystatechange', onreadystatechangeHandler);\n }\n return originalOpen.apply(xhr, args);\n };\n });\n fill(xhrproto, 'send', function (originalSend) {\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n triggerHandlers('xhr', {\n args: args,\n startTimestamp: Date.now(),\n xhr: this,\n });\n return originalSend.apply(this, args);\n };\n });\n}\nvar lastHref;\n/** JSDoc */\nfunction instrumentHistory() {\n if (!supportsHistory()) {\n return;\n }\n var oldOnPopState = global.onpopstate;\n global.onpopstate = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var to = global.location.href;\n // keep track of the current URL state, as we always receive only the updated state\n var from = lastHref;\n lastHref = to;\n triggerHandlers('history', {\n from: from,\n to: to,\n });\n if (oldOnPopState) {\n return oldOnPopState.apply(this, args);\n }\n };\n /** @hidden */\n function historyReplacementFunction(originalHistoryFunction) {\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var url = args.length > 2 ? args[2] : undefined;\n if (url) {\n // coerce to string (this is what pushState does)\n var from = lastHref;\n var to = String(url);\n // keep track of the current URL state, as we always receive only the updated state\n lastHref = to;\n triggerHandlers('history', {\n from: from,\n to: to,\n });\n }\n return originalHistoryFunction.apply(this, args);\n };\n }\n fill(global.history, 'pushState', historyReplacementFunction);\n fill(global.history, 'replaceState', historyReplacementFunction);\n}\n/** JSDoc */\nfunction instrumentDOM() {\n if (!('document' in global)) {\n return;\n }\n // Capture breadcrumbs from any click that is unhandled / bubbled up all the way\n // to the document. Do this before we instrument addEventListener.\n global.document.addEventListener('click', domEventHandler('click', triggerHandlers.bind(null, 'dom')), false);\n global.document.addEventListener('keypress', keypressEventHandler(triggerHandlers.bind(null, 'dom')), false);\n // After hooking into document bubbled up click and keypresses events, we also hook into user handled click & keypresses.\n ['EventTarget', 'Node'].forEach(function (target) {\n /* eslint-disable @typescript-eslint/no-unsafe-member-access */\n var proto = global[target] && global[target].prototype;\n // eslint-disable-next-line no-prototype-builtins\n if (!proto || !proto.hasOwnProperty || !proto.hasOwnProperty('addEventListener')) {\n return;\n }\n /* eslint-enable @typescript-eslint/no-unsafe-member-access */\n fill(proto, 'addEventListener', function (original) {\n return function (eventName, fn, options) {\n if (fn && fn.handleEvent) {\n if (eventName === 'click') {\n fill(fn, 'handleEvent', function (innerOriginal) {\n return function (event) {\n domEventHandler('click', triggerHandlers.bind(null, 'dom'))(event);\n return innerOriginal.call(this, event);\n };\n });\n }\n if (eventName === 'keypress') {\n fill(fn, 'handleEvent', function (innerOriginal) {\n return function (event) {\n keypressEventHandler(triggerHandlers.bind(null, 'dom'))(event);\n return innerOriginal.call(this, event);\n };\n });\n }\n }\n else {\n if (eventName === 'click') {\n domEventHandler('click', triggerHandlers.bind(null, 'dom'), true)(this);\n }\n if (eventName === 'keypress') {\n keypressEventHandler(triggerHandlers.bind(null, 'dom'))(this);\n }\n }\n return original.call(this, eventName, fn, options);\n };\n });\n fill(proto, 'removeEventListener', function (original) {\n return function (eventName, fn, options) {\n try {\n original.call(this, eventName, fn.__sentry_wrapped__, options);\n }\n catch (e) {\n // ignore, accessing __sentry_wrapped__ will throw in some Selenium environments\n }\n return original.call(this, eventName, fn, options);\n };\n });\n });\n}\nvar debounceDuration = 1000;\nvar debounceTimer = 0;\nvar keypressTimeout;\nvar lastCapturedEvent;\n/**\n * Wraps addEventListener to capture UI breadcrumbs\n * @param name the event name (e.g. \"click\")\n * @param handler function that will be triggered\n * @param debounce decides whether it should wait till another event loop\n * @returns wrapped breadcrumb events handler\n * @hidden\n */\nfunction domEventHandler(name, handler, debounce) {\n if (debounce === void 0) { debounce = false; }\n return function (event) {\n // reset keypress timeout; e.g. triggering a 'click' after\n // a 'keypress' will reset the keypress debounce so that a new\n // set of keypresses can be recorded\n keypressTimeout = undefined;\n // It's possible this handler might trigger multiple times for the same\n // event (e.g. event propagation through node ancestors). Ignore if we've\n // already captured the event.\n if (!event || lastCapturedEvent === event) {\n return;\n }\n lastCapturedEvent = event;\n if (debounceTimer) {\n clearTimeout(debounceTimer);\n }\n if (debounce) {\n debounceTimer = setTimeout(function () {\n handler({ event: event, name: name });\n });\n }\n else {\n handler({ event: event, name: name });\n }\n };\n}\n/**\n * Wraps addEventListener to capture keypress UI events\n * @param handler function that will be triggered\n * @returns wrapped keypress events handler\n * @hidden\n */\nfunction keypressEventHandler(handler) {\n // TODO: if somehow user switches keypress target before\n // debounce timeout is triggered, we will only capture\n // a single breadcrumb from the FIRST target (acceptable?)\n return function (event) {\n var target;\n try {\n target = event.target;\n }\n catch (e) {\n // just accessing event properties can throw an exception in some rare circumstances\n // see: https://github.com/getsentry/raven-js/issues/838\n return;\n }\n var tagName = target && target.tagName;\n // only consider keypress events on actual input elements\n // this will disregard keypresses targeting body (e.g. tabbing\n // through elements, hotkeys, etc)\n if (!tagName || (tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable)) {\n return;\n }\n // record first keypress in a series, but ignore subsequent\n // keypresses until debounce clears\n if (!keypressTimeout) {\n domEventHandler('input', handler)(event);\n }\n clearTimeout(keypressTimeout);\n keypressTimeout = setTimeout(function () {\n keypressTimeout = undefined;\n }, debounceDuration);\n };\n}\nvar _oldOnErrorHandler = null;\n/** JSDoc */\nfunction instrumentError() {\n _oldOnErrorHandler = global.onerror;\n global.onerror = function (msg, url, line, column, error) {\n triggerHandlers('error', {\n column: column,\n error: error,\n line: line,\n msg: msg,\n url: url,\n });\n if (_oldOnErrorHandler) {\n // eslint-disable-next-line prefer-rest-params\n return _oldOnErrorHandler.apply(this, arguments);\n }\n return false;\n };\n}\nvar _oldOnUnhandledRejectionHandler = null;\n/** JSDoc */\nfunction instrumentUnhandledRejection() {\n _oldOnUnhandledRejectionHandler = global.onunhandledrejection;\n global.onunhandledrejection = function (e) {\n triggerHandlers('unhandledrejection', e);\n if (_oldOnUnhandledRejectionHandler) {\n // eslint-disable-next-line prefer-rest-params\n return _oldOnUnhandledRejectionHandler.apply(this, arguments);\n }\n return true;\n };\n}\n//# sourceMappingURL=instrument.js.map","import { __assign, __read, __rest, __spread } from \"tslib\";\nimport { Severity } from '@sentry/types';\nimport { addInstrumentationHandler, getGlobalObject, isInstanceOf, isMatchingPattern, logger, safeJoin, supportsNativeFetch, timestampWithMs, } from '@sentry/utils';\nimport { Span as SpanClass } from '../span';\nimport { SpanStatus } from '../spanstatus';\nvar global = getGlobalObject();\nvar defaultTracingOrigins = ['localhost', /^\\//];\n/**\n * Tracing Integration\n *\n * @deprecated Please use the `BrowserTracing` integration from\n * the `@sentry/tracing` package.\n */\nvar Tracing = /** @class */ (function () {\n /**\n * Constructor for Tracing\n *\n * @param _options TracingOptions\n */\n function Tracing(_options) {\n /**\n * @inheritDoc\n */\n this.name = Tracing.id;\n this._emitOptionsWarning = false;\n if (global.performance) {\n if (global.performance.mark) {\n global.performance.mark('sentry-tracing-init');\n }\n Tracing._trackLCP();\n }\n var defaults = {\n beforeNavigate: function (location) {\n return location.pathname;\n },\n debug: {\n spanDebugTimingInfo: false,\n writeAsBreadcrumbs: false,\n },\n idleTimeout: 500,\n markBackgroundTransactions: true,\n maxTransactionDuration: 600,\n shouldCreateSpanForRequest: function (url) {\n var origins = (_options && _options.tracingOrigins) || defaultTracingOrigins;\n return (origins.some(function (origin) { return isMatchingPattern(url, origin); }) &&\n !isMatchingPattern(url, 'sentry_key'));\n },\n startTransactionOnLocationChange: true,\n startTransactionOnPageLoad: true,\n traceFetch: true,\n traceXHR: true,\n tracingOrigins: defaultTracingOrigins,\n };\n // NOTE: Logger doesn't work in contructors, as it's initialized after integrations instances\n if (!_options || !Array.isArray(_options.tracingOrigins) || _options.tracingOrigins.length === 0) {\n this._emitOptionsWarning = true;\n }\n Tracing.options = __assign(__assign({}, defaults), _options);\n }\n /**\n * Returns the current active idle transaction if there is one\n */\n Tracing.getTransaction = function () {\n return Tracing._activeTransaction;\n };\n /**\n * Starts tracking for a specifc activity\n *\n * @param name Name of the activity, can be any string (Only used internally to identify the activity)\n * @param spanContext If provided a Span with the SpanContext will be created.\n * @param options _autoPopAfter_ | Time in ms, if provided the activity will be popped automatically after this timeout. This can be helpful in cases where you cannot gurantee your application knows the state and calls `popActivity` for sure.\n */\n Tracing.pushActivity = function (name, spanContext, options) {\n var activeTransaction = Tracing._activeTransaction;\n if (!activeTransaction) {\n Tracing._log(\"[Tracing] Not pushing activity \" + name + \" since there is no active transaction\");\n return 0;\n }\n var _getCurrentHub = Tracing._getCurrentHub;\n if (spanContext && _getCurrentHub) {\n var hub = _getCurrentHub();\n if (hub) {\n var span = activeTransaction.startChild(spanContext);\n Tracing._activities[Tracing._currentIndex] = {\n name: name,\n span: span,\n };\n }\n }\n else {\n Tracing._activities[Tracing._currentIndex] = {\n name: name,\n };\n }\n Tracing._log(\"[Tracing] pushActivity: \" + name + \"#\" + Tracing._currentIndex);\n Tracing._log('[Tracing] activies count', Object.keys(Tracing._activities).length);\n if (options && typeof options.autoPopAfter === 'number') {\n Tracing._log(\"[Tracing] auto pop of: \" + name + \"#\" + Tracing._currentIndex + \" in \" + options.autoPopAfter + \"ms\");\n var index_1 = Tracing._currentIndex;\n setTimeout(function () {\n Tracing.popActivity(index_1, {\n autoPop: true,\n status: SpanStatus.DeadlineExceeded,\n });\n }, options.autoPopAfter);\n }\n // eslint-disable-next-line no-plusplus\n return Tracing._currentIndex++;\n };\n /**\n * Removes activity and finishes the span in case there is one\n * @param id the id of the activity being removed\n * @param spanData span data that can be updated\n *\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Tracing.popActivity = function (id, spanData) {\n // The !id is on purpose to also fail with 0\n // Since 0 is returned by push activity in case there is no active transaction\n if (!id) {\n return;\n }\n var activity = Tracing._activities[id];\n if (activity) {\n Tracing._log(\"[Tracing] popActivity \" + activity.name + \"#\" + id);\n var span_1 = activity.span;\n if (span_1) {\n if (spanData) {\n Object.keys(spanData).forEach(function (key) {\n span_1.setData(key, spanData[key]);\n if (key === 'status_code') {\n span_1.setHttpStatus(spanData[key]);\n }\n if (key === 'status') {\n span_1.setStatus(spanData[key]);\n }\n });\n }\n if (Tracing.options && Tracing.options.debug && Tracing.options.debug.spanDebugTimingInfo) {\n Tracing._addSpanDebugInfo(span_1);\n }\n span_1.finish();\n }\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete Tracing._activities[id];\n }\n var count = Object.keys(Tracing._activities).length;\n Tracing._log('[Tracing] activies count', count);\n if (count === 0 && Tracing._activeTransaction) {\n var timeout = Tracing.options && Tracing.options.idleTimeout;\n Tracing._log(\"[Tracing] Flushing Transaction in \" + timeout + \"ms\");\n // We need to add the timeout here to have the real endtimestamp of the transaction\n // Remeber timestampWithMs is in seconds, timeout is in ms\n var end_1 = timestampWithMs() + timeout / 1000;\n setTimeout(function () {\n Tracing.finishIdleTransaction(end_1);\n }, timeout);\n }\n };\n /**\n * Get span based on activity id\n */\n Tracing.getActivitySpan = function (id) {\n if (!id) {\n return undefined;\n }\n var activity = Tracing._activities[id];\n if (activity) {\n return activity.span;\n }\n return undefined;\n };\n /**\n * Sets the status of the current active transaction (if there is one)\n */\n Tracing.setTransactionStatus = function (status) {\n var active = Tracing._activeTransaction;\n if (active) {\n Tracing._log('[Tracing] setTransactionStatus', status);\n active.setStatus(status);\n }\n };\n /**\n * Starts a Transaction waiting for activity idle to finish\n */\n Tracing.startIdleTransaction = function (transactionContext) {\n Tracing._log('[Tracing] startIdleTransaction');\n var _getCurrentHub = Tracing._getCurrentHub;\n if (!_getCurrentHub) {\n return undefined;\n }\n var hub = _getCurrentHub();\n if (!hub) {\n return undefined;\n }\n Tracing._activeTransaction = Tracing._getNewTransaction(hub, transactionContext);\n // We set the transaction here on the scope so error events pick up the trace context and attach it to the error\n hub.configureScope(function (scope) { return scope.setSpan(Tracing._activeTransaction); });\n // The reason we do this here is because of cached responses\n // If we start and transaction without an activity it would never finish since there is no activity\n var id = Tracing.pushActivity('idleTransactionStarted');\n setTimeout(function () {\n Tracing.popActivity(id);\n }, (Tracing.options && Tracing.options.idleTimeout) || 100);\n return Tracing._activeTransaction;\n };\n /**\n * Finishes the current active transaction\n */\n Tracing.finishIdleTransaction = function (endTimestamp) {\n var active = Tracing._activeTransaction;\n if (active) {\n Tracing._log('[Tracing] finishing IdleTransaction', new Date(endTimestamp * 1000).toISOString());\n Tracing._addPerformanceEntries(active);\n if (active.spanRecorder) {\n active.spanRecorder.spans = active.spanRecorder.spans.filter(function (span) {\n // If we are dealing with the transaction itself, we just return it\n if (span.spanId === active.spanId) {\n return span;\n }\n // We cancel all pending spans with status \"cancelled\" to indicate the idle transaction was finished early\n if (!span.endTimestamp) {\n span.endTimestamp = endTimestamp;\n span.setStatus(SpanStatus.Cancelled);\n Tracing._log('[Tracing] cancelling span since transaction ended early', JSON.stringify(span, undefined, 2));\n }\n // We remove all spans that happend after the end of the transaction\n // This is here to prevent super long transactions and timing issues\n var keepSpan = span.startTimestamp < endTimestamp;\n if (!keepSpan) {\n Tracing._log('[Tracing] discarding Span since it happened after Transaction was finished', JSON.stringify(span, undefined, 2));\n }\n return keepSpan;\n });\n }\n Tracing._log('[Tracing] flushing IdleTransaction');\n active.finish();\n Tracing._resetActiveTransaction();\n }\n else {\n Tracing._log('[Tracing] No active IdleTransaction');\n }\n };\n /**\n * Returns a new Transaction either continued from sentry-trace meta or a new one\n */\n Tracing._getNewTransaction = function (hub, transactionContext) {\n var traceId;\n var parentSpanId;\n var sampled;\n var header = Tracing._getMeta('sentry-trace');\n if (header) {\n var span = SpanClass.fromTraceparent(header);\n if (span) {\n traceId = span.traceId;\n parentSpanId = span.parentSpanId;\n sampled = span.sampled;\n Tracing._log(\"[Tracing] found 'sentry-meta' '' continuing trace with: trace_id: \" + traceId + \" span_id: \" + parentSpanId);\n }\n }\n return hub.startTransaction(__assign({ parentSpanId: parentSpanId,\n sampled: sampled,\n traceId: traceId, trimEnd: true }, transactionContext));\n };\n /**\n * Returns the value of a meta tag\n */\n Tracing._getMeta = function (metaName) {\n var el = document.querySelector(\"meta[name=\" + metaName + \"]\");\n return el ? el.getAttribute('content') : null;\n };\n /**\n * Pings the heartbeat\n */\n Tracing._pingHeartbeat = function () {\n Tracing._heartbeatTimer = setTimeout(function () {\n Tracing._beat();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n }, 5000);\n };\n /**\n * Checks when entries of Tracing._activities are not changing for 3 beats. If this occurs we finish the transaction\n *\n */\n Tracing._beat = function () {\n clearTimeout(Tracing._heartbeatTimer);\n var keys = Object.keys(Tracing._activities);\n if (keys.length) {\n var heartbeatString = keys.reduce(function (prev, current) { return prev + current; });\n if (heartbeatString === Tracing._prevHeartbeatString) {\n // eslint-disable-next-line no-plusplus\n Tracing._heartbeatCounter++;\n }\n else {\n Tracing._heartbeatCounter = 0;\n }\n if (Tracing._heartbeatCounter >= 3) {\n if (Tracing._activeTransaction) {\n Tracing._log(\"[Tracing] Transaction: \" + SpanStatus.Cancelled + \" -> Heartbeat safeguard kicked in since content hasn't changed for 3 beats\");\n Tracing._activeTransaction.setStatus(SpanStatus.DeadlineExceeded);\n Tracing._activeTransaction.setTag('heartbeat', 'failed');\n Tracing.finishIdleTransaction(timestampWithMs());\n }\n }\n Tracing._prevHeartbeatString = heartbeatString;\n }\n Tracing._pingHeartbeat();\n };\n /**\n * Unsets the current active transaction + activities\n */\n Tracing._resetActiveTransaction = function () {\n // We want to clean up after ourselves\n // If there is still the active transaction on the scope we remove it\n var _getCurrentHub = Tracing._getCurrentHub;\n if (_getCurrentHub) {\n var hub = _getCurrentHub();\n var scope = hub.getScope();\n if (scope) {\n if (scope.getSpan() === Tracing._activeTransaction) {\n scope.setSpan(undefined);\n }\n }\n }\n // ------------------------------------------------------------------\n Tracing._activeTransaction = undefined;\n Tracing._activities = {};\n };\n /**\n * Uses logger.log to log things in the SDK or as breadcrumbs if defined in options\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Tracing._log = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (Tracing.options && Tracing.options.debug && Tracing.options.debug.writeAsBreadcrumbs) {\n var _getCurrentHub = Tracing._getCurrentHub;\n if (_getCurrentHub) {\n _getCurrentHub().addBreadcrumb({\n category: 'tracing',\n level: Severity.Debug,\n message: safeJoin(args, ' '),\n type: 'debug',\n });\n }\n }\n logger.log.apply(logger, __spread(args));\n };\n /**\n * This uses `performance.getEntries()` to add additional spans to the active transaction.\n * Also, we update our timings since we consider the timings in this API to be more correct than our manual\n * measurements.\n *\n * @param transactionSpan The transaction span\n */\n Tracing._addPerformanceEntries = function (transactionSpan) {\n if (!global.performance || !global.performance.getEntries) {\n // Gatekeeper if performance API not available\n return;\n }\n Tracing._log('[Tracing] Adding & adjusting spans using Performance API');\n // FIXME: depending on the 'op' directly is brittle.\n if (transactionSpan.op === 'pageload') {\n // Force any pending records to be dispatched.\n Tracing._forceLCP();\n if (Tracing._lcp) {\n // Set the last observed LCP score.\n transactionSpan.setData('_sentry_web_vitals', { LCP: Tracing._lcp });\n }\n }\n var timeOrigin = Tracing._msToSec(performance.timeOrigin);\n // eslint-disable-next-line jsdoc/require-jsdoc\n function addPerformanceNavigationTiming(parent, entry, event) {\n _startChild(parent, {\n description: event,\n endTimestamp: timeOrigin + Tracing._msToSec(entry[event + \"End\"]),\n op: 'browser',\n startTimestamp: timeOrigin + Tracing._msToSec(entry[event + \"Start\"]),\n });\n }\n // eslint-disable-next-line jsdoc/require-jsdoc\n function addRequest(parent, entry) {\n _startChild(parent, {\n description: 'request',\n endTimestamp: timeOrigin + Tracing._msToSec(entry.responseEnd),\n op: 'browser',\n startTimestamp: timeOrigin + Tracing._msToSec(entry.requestStart),\n });\n _startChild(parent, {\n description: 'response',\n endTimestamp: timeOrigin + Tracing._msToSec(entry.responseEnd),\n op: 'browser',\n startTimestamp: timeOrigin + Tracing._msToSec(entry.responseStart),\n });\n }\n var entryScriptSrc;\n if (global.document) {\n // eslint-disable-next-line @typescript-eslint/prefer-for-of\n for (var i = 0; i < document.scripts.length; i++) {\n // We go through all scripts on the page and look for 'data-entry'\n // We remember the name and measure the time between this script finished loading and\n // our mark 'sentry-tracing-init'\n if (document.scripts[i].dataset.entry === 'true') {\n entryScriptSrc = document.scripts[i].src;\n break;\n }\n }\n }\n var entryScriptStartEndTime;\n var tracingInitMarkStartTime;\n /* eslint-disable @typescript-eslint/no-unsafe-member-access */\n performance\n .getEntries()\n .slice(Tracing._performanceCursor)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .forEach(function (entry) {\n var startTime = Tracing._msToSec(entry.startTime);\n var duration = Tracing._msToSec(entry.duration);\n if (transactionSpan.op === 'navigation' && timeOrigin + startTime < transactionSpan.startTimestamp) {\n return;\n }\n switch (entry.entryType) {\n case 'navigation':\n addPerformanceNavigationTiming(transactionSpan, entry, 'unloadEvent');\n addPerformanceNavigationTiming(transactionSpan, entry, 'domContentLoadedEvent');\n addPerformanceNavigationTiming(transactionSpan, entry, 'loadEvent');\n addPerformanceNavigationTiming(transactionSpan, entry, 'connect');\n addPerformanceNavigationTiming(transactionSpan, entry, 'domainLookup');\n addRequest(transactionSpan, entry);\n break;\n case 'mark':\n case 'paint':\n case 'measure': {\n var mark = _startChild(transactionSpan, {\n description: entry.name,\n endTimestamp: timeOrigin + startTime + duration,\n op: entry.entryType,\n startTimestamp: timeOrigin + startTime,\n });\n if (tracingInitMarkStartTime === undefined && entry.name === 'sentry-tracing-init') {\n tracingInitMarkStartTime = mark.startTimestamp;\n }\n break;\n }\n case 'resource': {\n var resourceName = entry.name.replace(window.location.origin, '');\n // we already instrument based on fetch and xhr, so we don't need to\n // duplicate spans here.\n if (entry.initiatorType !== 'xmlhttprequest' && entry.initiatorType !== 'fetch') {\n var resource = _startChild(transactionSpan, {\n description: entry.initiatorType + \" \" + resourceName,\n endTimestamp: timeOrigin + startTime + duration,\n op: \"resource\",\n startTimestamp: timeOrigin + startTime,\n });\n // We remember the entry script end time to calculate the difference to the first init mark\n if (entryScriptStartEndTime === undefined && (entryScriptSrc || '').indexOf(resourceName) > -1) {\n entryScriptStartEndTime = resource.endTimestamp;\n }\n }\n break;\n }\n default:\n // Ignore other entry types.\n }\n });\n /* eslint-enable @typescript-eslint/no-unsafe-member-access */\n if (entryScriptStartEndTime !== undefined && tracingInitMarkStartTime !== undefined) {\n _startChild(transactionSpan, {\n description: 'evaluation',\n endTimestamp: tracingInitMarkStartTime,\n op: \"script\",\n startTimestamp: entryScriptStartEndTime,\n });\n }\n Tracing._performanceCursor = Math.max(performance.getEntries().length - 1, 0);\n };\n /**\n * Starts tracking the Largest Contentful Paint on the current page.\n */\n Tracing._trackLCP = function () {\n // Based on reference implementation from https://web.dev/lcp/#measure-lcp-in-javascript.\n // Use a try/catch instead of feature detecting `largest-contentful-paint`\n // support, since some browsers throw when using the new `type` option.\n // https://bugs.webkit.org/show_bug.cgi?id=209216\n try {\n // Keep track of whether (and when) the page was first hidden, see:\n // https://github.com/w3c/page-visibility/issues/29\n // NOTE: ideally this check would be performed in the document \n // to avoid cases where the visibility state changes before this code runs.\n var firstHiddenTime_1 = document.visibilityState === 'hidden' ? 0 : Infinity;\n document.addEventListener('visibilitychange', function (event) {\n firstHiddenTime_1 = Math.min(firstHiddenTime_1, event.timeStamp);\n }, { once: true });\n var updateLCP_1 = function (entry) {\n // Only include an LCP entry if the page wasn't hidden prior to\n // the entry being dispatched. This typically happens when a page is\n // loaded in a background tab.\n if (entry.startTime < firstHiddenTime_1) {\n // NOTE: the `startTime` value is a getter that returns the entry's\n // `renderTime` value, if available, or its `loadTime` value otherwise.\n // The `renderTime` value may not be available if the element is an image\n // that's loaded cross-origin without the `Timing-Allow-Origin` header.\n Tracing._lcp = __assign(__assign(__assign({}, (entry.id && { elementId: entry.id })), (entry.size && { elementSize: entry.size })), { value: entry.startTime });\n }\n };\n // Create a PerformanceObserver that calls `updateLCP` for each entry.\n var po_1 = new PerformanceObserver(function (entryList) {\n entryList.getEntries().forEach(updateLCP_1);\n });\n // Observe entries of type `largest-contentful-paint`, including buffered entries,\n // i.e. entries that occurred before calling `observe()` below.\n po_1.observe({\n buffered: true,\n // @ts-ignore not assignable, so have to ignore\n type: 'largest-contentful-paint',\n });\n Tracing._forceLCP = function () {\n if (po_1.takeRecords) {\n po_1.takeRecords().forEach(updateLCP_1);\n }\n };\n }\n catch (e) {\n // Do nothing if the browser doesn't support this API.\n }\n };\n /**\n * Converts from milliseconds to seconds\n * @param time time in ms\n */\n Tracing._msToSec = function (time) {\n return time / 1000;\n };\n /* eslint-disable @typescript-eslint/no-unsafe-member-access */\n /**\n * Adds debug data to the span\n */\n Tracing._addSpanDebugInfo = function (span) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var debugData = {};\n if (global.performance) {\n debugData.performance = true;\n debugData['performance.timeOrigin'] = global.performance.timeOrigin;\n debugData['performance.now'] = global.performance.now();\n // eslint-disable-next-line deprecation/deprecation\n if (global.performance.timing) {\n // eslint-disable-next-line deprecation/deprecation\n debugData['performance.timing.navigationStart'] = performance.timing.navigationStart;\n }\n }\n else {\n debugData.performance = false;\n }\n debugData['Date.now()'] = Date.now();\n span.setData('sentry_debug', debugData);\n };\n /* eslint-enable @typescript-eslint/no-unsafe-member-access */\n /**\n * @inheritDoc\n */\n Tracing.prototype.setupOnce = function (addGlobalEventProcessor, getCurrentHub) {\n Tracing._getCurrentHub = getCurrentHub;\n if (this._emitOptionsWarning) {\n logger.warn('[Tracing] You need to define `tracingOrigins` in the options. Set an array of urls or patterns to trace.');\n logger.warn(\"[Tracing] We added a reasonable default for you: \" + defaultTracingOrigins);\n }\n // Starting pageload transaction\n if (global.location && Tracing.options && Tracing.options.startTransactionOnPageLoad) {\n Tracing.startIdleTransaction({\n name: Tracing.options.beforeNavigate(window.location),\n op: 'pageload',\n });\n }\n this._setupXHRTracing();\n this._setupFetchTracing();\n this._setupHistory();\n this._setupErrorHandling();\n this._setupBackgroundTabDetection();\n Tracing._pingHeartbeat();\n // This EventProcessor makes sure that the transaction is not longer than maxTransactionDuration\n addGlobalEventProcessor(function (event) {\n var self = getCurrentHub().getIntegration(Tracing);\n if (!self) {\n return event;\n }\n var isOutdatedTransaction = event.timestamp &&\n event.start_timestamp &&\n (event.timestamp - event.start_timestamp > Tracing.options.maxTransactionDuration ||\n event.timestamp - event.start_timestamp < 0);\n if (Tracing.options.maxTransactionDuration !== 0 && event.type === 'transaction' && isOutdatedTransaction) {\n Tracing._log(\"[Tracing] Transaction: \" + SpanStatus.Cancelled + \" since it maxed out maxTransactionDuration\");\n if (event.contexts && event.contexts.trace) {\n event.contexts.trace = __assign(__assign({}, event.contexts.trace), { status: SpanStatus.DeadlineExceeded });\n event.tags = __assign(__assign({}, event.tags), { maxTransactionDurationExceeded: 'true' });\n }\n }\n return event;\n });\n };\n /**\n * Discards active transactions if tab moves to background\n */\n Tracing.prototype._setupBackgroundTabDetection = function () {\n if (Tracing.options && Tracing.options.markBackgroundTransactions && global.document) {\n document.addEventListener('visibilitychange', function () {\n if (document.hidden && Tracing._activeTransaction) {\n Tracing._log(\"[Tracing] Transaction: \" + SpanStatus.Cancelled + \" -> since tab moved to the background\");\n Tracing._activeTransaction.setStatus(SpanStatus.Cancelled);\n Tracing._activeTransaction.setTag('visibilitychange', 'document.hidden');\n Tracing.finishIdleTransaction(timestampWithMs());\n }\n });\n }\n };\n /**\n * Registers to History API to detect navigation changes\n */\n Tracing.prototype._setupHistory = function () {\n if (Tracing.options.startTransactionOnLocationChange) {\n addInstrumentationHandler({\n callback: historyCallback,\n type: 'history',\n });\n }\n };\n /**\n * Attaches to fetch to add sentry-trace header + creating spans\n */\n Tracing.prototype._setupFetchTracing = function () {\n if (Tracing.options.traceFetch && supportsNativeFetch()) {\n addInstrumentationHandler({\n callback: fetchCallback,\n type: 'fetch',\n });\n }\n };\n /**\n * Attaches to XHR to add sentry-trace header + creating spans\n */\n Tracing.prototype._setupXHRTracing = function () {\n if (Tracing.options.traceXHR) {\n addInstrumentationHandler({\n callback: xhrCallback,\n type: 'xhr',\n });\n }\n };\n /**\n * Configures global error listeners\n */\n Tracing.prototype._setupErrorHandling = function () {\n // eslint-disable-next-line jsdoc/require-jsdoc\n function errorCallback() {\n if (Tracing._activeTransaction) {\n /**\n * If an error or unhandled promise occurs, we mark the active transaction as failed\n */\n Tracing._log(\"[Tracing] Transaction: \" + SpanStatus.InternalError + \" -> Global error occured\");\n Tracing._activeTransaction.setStatus(SpanStatus.InternalError);\n }\n }\n addInstrumentationHandler({\n callback: errorCallback,\n type: 'error',\n });\n addInstrumentationHandler({\n callback: errorCallback,\n type: 'unhandledrejection',\n });\n };\n /**\n * @inheritDoc\n */\n Tracing.id = 'Tracing';\n Tracing._activities = {};\n Tracing._currentIndex = 1;\n Tracing._performanceCursor = 0;\n Tracing._heartbeatTimer = 0;\n Tracing._heartbeatCounter = 0;\n /** Force any pending LargestContentfulPaint records to be dispatched. */\n Tracing._forceLCP = function () {\n /* No-op, replaced later if LCP API is available. */\n };\n return Tracing;\n}());\nexport { Tracing };\n/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/**\n * Creates breadcrumbs from XHR API calls\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction xhrCallback(handlerData) {\n if (!Tracing.options.traceXHR) {\n return;\n }\n if (!handlerData || !handlerData.xhr || !handlerData.xhr.__sentry_xhr__) {\n return;\n }\n var xhr = handlerData.xhr.__sentry_xhr__;\n if (!Tracing.options.shouldCreateSpanForRequest(xhr.url)) {\n return;\n }\n // We only capture complete, non-sentry requests\n if (handlerData.xhr.__sentry_own_request__) {\n return;\n }\n if (handlerData.endTimestamp && handlerData.xhr.__sentry_xhr_activity_id__) {\n Tracing.popActivity(handlerData.xhr.__sentry_xhr_activity_id__, handlerData.xhr.__sentry_xhr__);\n return;\n }\n handlerData.xhr.__sentry_xhr_activity_id__ = Tracing.pushActivity('xhr', {\n data: __assign(__assign({}, xhr.data), { type: 'xhr' }),\n description: xhr.method + \" \" + xhr.url,\n op: 'http',\n });\n // Adding the trace header to the span\n var activity = Tracing._activities[handlerData.xhr.__sentry_xhr_activity_id__];\n if (activity) {\n var span = activity.span;\n if (span && handlerData.xhr.setRequestHeader) {\n try {\n handlerData.xhr.setRequestHeader('sentry-trace', span.toTraceparent());\n }\n catch (_) {\n // Error: InvalidStateError: Failed to execute 'setRequestHeader' on 'XMLHttpRequest': The object's state must be OPENED.\n }\n }\n }\n}\n/**\n * Creates breadcrumbs from fetch API calls\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction fetchCallback(handlerData) {\n if (!Tracing.options.traceFetch) {\n return;\n }\n if (!Tracing.options.shouldCreateSpanForRequest(handlerData.fetchData.url)) {\n return;\n }\n if (handlerData.endTimestamp && handlerData.fetchData.__activity) {\n Tracing.popActivity(handlerData.fetchData.__activity, handlerData.fetchData);\n }\n else {\n handlerData.fetchData.__activity = Tracing.pushActivity('fetch', {\n data: __assign(__assign({}, handlerData.fetchData), { type: 'fetch' }),\n description: handlerData.fetchData.method + \" \" + handlerData.fetchData.url,\n op: 'http',\n });\n var activity = Tracing._activities[handlerData.fetchData.__activity];\n if (activity) {\n var span = activity.span;\n if (span) {\n var request = (handlerData.args[0] = handlerData.args[0]);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var options = (handlerData.args[1] = handlerData.args[1] || {});\n var headers = options.headers;\n if (isInstanceOf(request, Request)) {\n headers = request.headers;\n }\n if (headers) {\n if (typeof headers.append === 'function') {\n headers.append('sentry-trace', span.toTraceparent());\n }\n else if (Array.isArray(headers)) {\n headers = __spread(headers, [['sentry-trace', span.toTraceparent()]]);\n }\n else {\n headers = __assign(__assign({}, headers), { 'sentry-trace': span.toTraceparent() });\n }\n }\n else {\n headers = { 'sentry-trace': span.toTraceparent() };\n }\n options.headers = headers;\n }\n }\n }\n}\n/* eslint-enable @typescript-eslint/no-unsafe-member-access */\n/**\n * Creates transaction from navigation changes\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction historyCallback(_) {\n if (Tracing.options.startTransactionOnLocationChange && global && global.location) {\n Tracing.finishIdleTransaction(timestampWithMs());\n Tracing.startIdleTransaction({\n name: Tracing.options.beforeNavigate(window.location),\n op: 'navigation',\n });\n }\n}\n/**\n * Helper function to start child on transactions. This function will make sure that the transaction will\n * use the start timestamp of the created child span if it is earlier than the transactions actual\n * start timestamp.\n */\nexport function _startChild(parent, _a) {\n var startTimestamp = _a.startTimestamp, ctx = __rest(_a, [\"startTimestamp\"]);\n if (startTimestamp && parent.startTimestamp > startTimestamp) {\n parent.startTimestamp = startTimestamp;\n }\n return parent.startChild(__assign({ startTimestamp: startTimestamp }, ctx));\n}\n//# sourceMappingURL=tracing.js.map","import { Severity } from '@sentry/types';\nimport { fill, getGlobalObject, safeJoin } from '@sentry/utils';\nvar global = getGlobalObject();\n/** Send Console API calls as Sentry Events */\nvar CaptureConsole = /** @class */ (function () {\n /**\n * @inheritDoc\n */\n function CaptureConsole(options) {\n if (options === void 0) { options = {}; }\n /**\n * @inheritDoc\n */\n this.name = CaptureConsole.id;\n /**\n * @inheritDoc\n */\n this._levels = ['log', 'info', 'warn', 'error', 'debug', 'assert'];\n if (options.levels) {\n this._levels = options.levels;\n }\n }\n /**\n * @inheritDoc\n */\n CaptureConsole.prototype.setupOnce = function (_, getCurrentHub) {\n if (!('console' in global)) {\n return;\n }\n this._levels.forEach(function (level) {\n if (!(level in global.console)) {\n return;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n fill(global.console, level, function (originalConsoleLevel) { return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var hub = getCurrentHub();\n if (hub.getIntegration(CaptureConsole)) {\n hub.withScope(function (scope) {\n scope.setLevel(Severity.fromString(level));\n scope.setExtra('arguments', args);\n scope.addEventProcessor(function (event) {\n event.logger = 'console';\n return event;\n });\n var message = safeJoin(args, ' ');\n if (level === 'assert') {\n if (args[0] === false) {\n message = \"Assertion failed: \" + (safeJoin(args.slice(1), ' ') || 'console.assert');\n scope.setExtra('arguments', args.slice(1));\n hub.captureMessage(message);\n }\n }\n else {\n hub.captureMessage(message);\n }\n });\n }\n // this fails for some browsers. :(\n if (originalConsoleLevel) {\n Function.prototype.apply.call(originalConsoleLevel, global.console, args);\n }\n }; });\n });\n };\n /**\n * @inheritDoc\n */\n CaptureConsole.id = 'CaptureConsole';\n return CaptureConsole;\n}());\nexport { CaptureConsole };\n//# sourceMappingURL=captureconsole.js.map","import { EventProcessor, Hub, Integration } from \"@sentry/types\";\r\nimport { SentryHubProvider } from \"./sentry-hub.provider\";\r\nexport class AngularSentryIntegration implements Integration {\r\n static id = \"ApexAngularJS\";\r\n name = AngularSentryIntegration.id;\r\n\r\n constructor(private sentryLogHubProvider: SentryHubProvider,\r\n private sentryExceptionHandlerHubProvider: SentryHubProvider) {\r\n }\r\n\r\n getCurrentHub: () => Hub;\r\n addGlobalEventProcessor: (callback: EventProcessor) => void;\r\n setupOnce(addGlobalEventProcessor: (callback: EventProcessor) => void, getCurrentHub: () => Hub): void {\r\n this.addGlobalEventProcessor = addGlobalEventProcessor;\r\n this.sentryLogHubProvider.$get = () => {\r\n const hub = getCurrentHub && getCurrentHub();\r\n return hub && hub.getIntegration(AngularSentryIntegration) && hub;\r\n };\r\n this.sentryExceptionHandlerHubProvider.$get = () => {\r\n const hub = getCurrentHub && getCurrentHub();\r\n return hub && hub.getIntegration(AngularSentryIntegration) && hub;\r\n };\r\n }\r\n}\r\n","import { Integrations as ApmIntegrations } from '@sentry/apm';\r\nimport * as Sentry from \"@sentry/browser\";\r\nimport { CaptureConsole } from '@sentry/integrations';\r\nimport { Options as SentryOptions } from \"@sentry/types\";\r\nimport { SentryHubProvider } from '../sentry/sentry-hub.provider';\r\nimport { AngularSentryIntegration } from '../sentry/sentry-integration';\r\nimport { EmployeeService } from \"../services\";\r\n\r\nconst ignoreErrors = [\r\n // Ignore the common conventions for closing modals\r\n /^Possibly unhandled rejection: (cancel|close|escape|backdrop click)/,\r\n /^(cancel|close|escape|backdrop click|escape key press)$/,\r\n // Ignore messages logged by Webpack Dev Server while debugging\r\n /^\\[WDS\\]/,\r\n // Similarly, ignore Hot Module Reload errors.\r\n /^\\[HMR\\]/,\r\n // Ignore build errors while debugging.\r\n /Module build failed/,\r\n /^(webpack)/,\r\n // Ignore browsers that are incompatible with this metric.\r\n \"Ignoring unsupported entryTypes: largest-contentful-paint.\",\r\n // Ignore errors that result from xhrStatus=abort\r\n \"AbortedXhrError\",\r\n \"The connection was aborted\",\r\n // This error is benign: https://stackoverflow.com/questions/49384120/resizeobserver-loop-limit-exceeded\r\n \"ResizeObserver loop limit exceeded\",\r\n // This is logged in between releases, when a user is on an old build and tries to lazy load a module.\r\n // It's already handled by a ui-router transition, so ignore it.\r\n \"SyntaxError: Unexpected token '<'\"\r\n]\r\n\r\nexport function configureSentry(sentryOptions: SentryOptions,\r\n sentryLogHubProvider: SentryHubProvider,\r\n sentryExceptionHandlerHubProvider: SentryHubProvider) {\r\n 'ngInject';\r\n if (sentryOptions.enabled) {\r\n try {\r\n Sentry.init({\r\n // Extend the partial Sentry authentication and environment options.\r\n ...sentryOptions,\r\n integrations: [\r\n new AngularSentryIntegration(sentryLogHubProvider, sentryExceptionHandlerHubProvider),\r\n new CaptureConsole({ levels: [\"warn\", \"error\"] }),\r\n new ApmIntegrations.Tracing()\r\n ],\r\n ignoreErrors,\r\n // Attaching the stack trace can be extremely useful for areas that just call console.error on errors,\r\n // which wouldn't hit our AngularJS error wrapper to attach a stack trace closer to the error.\r\n attachStacktrace: true\r\n });\r\n } catch (ex) {\r\n console.warn(ex, \"Could not initialize Sentry.\");\r\n }\r\n }\r\n}\r\n\r\nexport function configureSentryUser(employeeService: EmployeeService, apexIsAuthenticated: boolean) {\r\n 'ngInject';\r\n if (!apexIsAuthenticated) {\r\n return;\r\n }\r\n employeeService.retrieveIdentity()\r\n .then(identity => {\r\n try {\r\n Sentry.setUser({\r\n id: `${identity.EmployeeID}`\r\n })\r\n } catch (ex) {\r\n console.warn(ex, \"Could not set Sentry user.\");\r\n }\r\n })\r\n .catch(() => {})\r\n}\r\n","import { FeatureFlagOption } from \"@herbjoy/apex-api-models\";\r\nimport { ILogService, IPromise, IQService } from \"angular\";\r\nimport get from \"lodash/get\";\r\nimport set from \"lodash/set\";\r\nimport { SiteFeatureService } from \"../services/data-services/site-feature.service\";\r\nimport { InstanceDb } from \"../services/instance-db.service\";\r\nimport { FeatureFlagOptions } from \"./feature-flag-options\";\r\nimport { SessionService } from \"../services/session.service\";\r\n\r\ntype FeaturePrefs = { [key: string]: FeatureFlagOption };\r\n\r\n/**\r\n * A local store used to persist feature preferences for the session.\r\n */\r\nexport class FeatureManager {\r\n featurePrefs: FeaturePrefs | null;\r\n isSync = false;\r\n featuresLoaded: IPromise;\r\n isAuthorized = false;\r\n\r\n constructor(private $log: ILogService, private $q: IQService, private sessionService: SessionService,\r\n private siteFeatureService: SiteFeatureService, private instanceDb: InstanceDb) {\r\n 'ngInject';\r\n sessionService.isAuthorized().then(isAuthorized => {\r\n this.isAuthorized = isAuthorized;\r\n });\r\n }\r\n\r\n /**\r\n * Return whether the feature is enabled in the app.\r\n * @param feature The feature key name\r\n */\r\n isEnabled(feature: string) {\r\n const option = this.getFeatureFlagOption(feature);\r\n //TODO: A/B-testing logic when option is noPref.\r\n return option === FeatureFlagOptions.enabled || option === FeatureFlagOptions.optIn;\r\n }\r\n /**\r\n * Saves the beta opt in feature at server side\r\n * @param optIn A boolean indicating if beta payroll entry is opted In\r\n */\r\n saveFeatureFlagOption(optIn: boolean) {\r\n return this.siteFeatureService.saveBetaParticipation(optIn)\r\n }\r\n /**\r\n * Saves the beta opt in feature at server side\r\n * @param optIn A boolean indicating if beta payroll entry is opted In\r\n */\r\n getFeatureFlagOptionApi() {\r\n return this.siteFeatureService.getBetaParticipation();\r\n }\r\n /**\r\n * Return the feature flag option for the given feature.\r\n * @param feature The feature key name.\r\n */\r\n getFeatureFlagOption(feature: keyof FeaturePrefs) {\r\n if (!this.featurePrefs) {\r\n // Return undefined to indicate no data is available\r\n this.$log.warn(`Attempted to get feature preference for \"${feature}\",`\r\n + ` but the feature prefs were not loaded.`);\r\n return;\r\n }\r\n // Use lodash to get the feature flag by string chain expression.\r\n // If the full preferences are known and have no value set, default to No Preference.\r\n return get(this.featurePrefs, feature, FeatureFlagOptions.noPref);\r\n }\r\n\r\n /**\r\n * Return the list of all feature flags along with their settings.\r\n */\r\n getFeatureFlags() {\r\n return this.featurePrefs;\r\n }\r\n\r\n /**\r\n * Opt the user into the feature with the given name.\r\n * @param feature The feature key name.\r\n */\r\n optIn(feature: string) {\r\n const featurePref = this.getFeatureFlagOption(feature);\r\n if (featurePref === FeatureFlagOptions.enabled\r\n || featurePref === FeatureFlagOptions.disabled) {\r\n // If the feature is forcibly enabled or disabled, settings preferences is not possible.\r\n return featurePref;\r\n }\r\n set(this.featurePrefs, feature, FeatureFlagOptions.optIn)\r\n this._saveLocalPreferences();\r\n }\r\n\r\n /**\r\n * Opt the user out of the feature with the given name.\r\n * @param feature The feature key name.\r\n */\r\n optOut(feature: string) {\r\n const featurePref = this.getFeatureFlagOption(feature);\r\n if (featurePref === FeatureFlagOptions.enabled\r\n || featurePref === FeatureFlagOptions.disabled) {\r\n // If the feature is forcibly enabled or disabled, settings preferences is not possible.\r\n return featurePref;\r\n }\r\n set(this.featurePrefs, feature, FeatureFlagOptions.optOut);\r\n this._saveLocalPreferences();\r\n }\r\n\r\n ensureLoaded(): IPromise {\r\n if (this.isSync) {\r\n return this.$q.resolve(this);\r\n }\r\n this.featuresLoaded = this.featuresLoaded || this._loadServerFeatures().then(() => this.featurePrefs);\r\n return this.featuresLoaded.then(() => this);\r\n }\r\n\r\n _loadServerFeatures() {\r\n const localPrefs = this.instanceDb.sessionStorage.getItem(\"apexFeaturePrefStore\");\r\n if (localPrefs) {\r\n this.featurePrefs = JSON.parse(localPrefs);\r\n this.isSync = true;\r\n // Continue to load the remote features in order to purge stale flags.\r\n }\r\n return this.siteFeatureService.retrieveFeatures()\r\n .then(features => {\r\n // Get the feature preferences that are forcibly enabled\r\n // or disabled at the server level.\r\n this.featurePrefs = this._mergePrefs(this.featurePrefs || {}, features)\r\n // Indicate that the services is loaded and safe to use synchronously.\r\n this.isSync = true;\r\n if (this.isAuthorized) {\r\n if (!localPrefs) {\r\n this.getFeatureFlagOptionApi().then(data => {\r\n if (data) {\r\n this.featurePrefs.payroll['v2PayrollEntry'] = \"optIn\";\r\n } else {\r\n this.featurePrefs.payroll['v2PayrollEntry'] = \"optOut\";\r\n }\r\n this._saveLocalPreferences();\r\n });\r\n } else {\r\n this._saveLocalPreferences();\r\n }\r\n }\r\n });\r\n }\r\n\r\n _saveLocalPreferences() {\r\n this.instanceDb.sessionStorage.setItem(\"apexFeaturePrefStore\", JSON.stringify(this.featurePrefs));\r\n }\r\n\r\n _mergePrefs(localPrefs, remotePrefs) {\r\n for (const featureFlag of remotePrefs) {\r\n const remoteValue = featureFlag.option;\r\n const localValue = get(localPrefs, featureFlag.feature);\r\n if (remoteValue === \"enabled\" || remoteValue === \"disabled\" || !localValue\r\n || localValue === FeatureFlagOptions.noPref) {\r\n // Enabled and disabled features can never be overridden. Also, if the local pref\r\n // has no value or is marked as having no preference, use whatever value is specified.\r\n set(localPrefs, featureFlag.feature, remoteValue);\r\n }\r\n }\r\n return localPrefs\r\n }\r\n}\r\n","import angular from \"angular\";\r\nimport { FeatureManager } from \"./feature-manager.service\";\r\n\r\nexport const FeatureFlagsModule = angular\r\n .module(\"apex.core.featureFlags\", [])\r\n .service(\"featureManager\", FeatureManager)\r\n .name\r\n","import { Event, Hub, Severity } from \"@sentry/types\";\r\nimport { IExceptionHandlerService } from \"angular\";\r\nimport { $InjectorLike } from \"angular-ui-router\";\r\nimport { HttpResponseError } from \"../interceptors/apex-api-response.interceptor\";\r\n\r\nconst logError = console.error.bind(console);\r\n\r\n// Sentry decorator adapted from https://github.com/getsentry/sentry-javascript/blob/master/packages/integrations/src/angular.ts\r\n// See https://github.com/angular/angular.js/blob/v1.4.7/src/minErr.js\r\nconst angularPattern = /^\\[((?:[$a-zA-Z0-9]+:)?(?:[$a-zA-Z0-9]+))\\] (.*?)\\n?(\\S+)$/;\r\nexport function sentryExceptionHandlerDecorator($delegate: IExceptionHandlerService, $injector: $InjectorLike) {\r\n 'ngInject';\r\n return (exception: any, cause: string) => {\r\n const hub = $injector.get(\"sentryExceptionHandlerHub\");\r\n if (hub) {\r\n // Don't mark errors that make it to the exception handler as \"handled\".\r\n // This is to distinguish from errors that are logged to $log.error.\r\n notifySentryHubError(hub, exception, cause, false);\r\n // Stop processing additional handlers, since that will eventually\r\n // send output to the $log service and submit a duplicate error to Sentry.\r\n logError(exception);\r\n return;\r\n }\r\n // Otherwise, let Sentry logic fall through to the logger.\r\n $delegate(exception, cause);\r\n };\r\n}\r\n\r\nexport function notifySentryHubError(hub: Hub, error: Error, cause: string,\r\n handled = true, ...extra: any[]) {\r\n\r\n hub.withScope(scope => {\r\n if (cause) {\r\n scope.setExtra('cause', cause);\r\n }\r\n if (extra && extra.length) {\r\n scope.setExtra('messages', extra);\r\n }\r\n\r\n scope.addEventProcessor((event: Event) => {\r\n const ex = event.exception && event.exception.values && event.exception.values[0];\r\n\r\n event.logger = \"angularjs\";\r\n if (ex) {\r\n ex.mechanism.handled = handled;\r\n const matches = angularPattern.exec(ex.value || '');\r\n\r\n if (matches) {\r\n // This type now becomes something like: $rootScope:inprog\r\n ex.type = matches[1];\r\n ex.value = matches[2];\r\n event.message = `${ex.type}: ${ex.value}`;\r\n // auto set a new tag specifically for the angular error url\r\n event.extra = {\r\n ...event.extra,\r\n angularDocs: matches[3].substr(0, 250),\r\n };\r\n }\r\n if (error instanceof HttpResponseError && error.status === 400) {\r\n // Provide config and response data as extra data for 400 Bad Request events.\r\n const data = error.data;\r\n // Bad Request is typically user error, so downgrade the severity to Warning.\r\n event.level = Severity.Warning;\r\n event.extra = {\r\n ...event.extra,\r\n status: error.status,\r\n statusText: error.statusText,\r\n // Attempt to serialize response data.\r\n data: JSON.stringify(data)\r\n }\r\n }\r\n }\r\n\r\n return event;\r\n });\r\n\r\n hub.captureException(error);\r\n });\r\n}\r\n","import { Hub } from \"@sentry/types\";\r\nimport { IServiceProvider } from \"angular\";\r\n\r\nexport class SentryHubProvider implements IServiceProvider {\r\n $get: () => Hub = () => null;\r\n}\r\n","import { Hub } from \"@sentry/browser\";\r\nimport { ILogService } from \"angular\";\r\nimport { $InjectorLike } from \"angular-ui-router\";\r\nimport { getExceptionMessage, dropStackFrames } from \"../data-utils\";\r\nimport { notifySentryHubError } from \"./sentry-exception-handler.decorator\";\r\n\r\nconst pristineConsole = {\r\n debug: console.debug.bind(console),\r\n log: console.log.bind(console),\r\n info: console.info.bind(console),\r\n warn: console.warn.bind(console),\r\n error: console.error.bind(console),\r\n};\r\n\r\nclass HandledError extends Error {\r\n // Manually provide the name for minification safety\r\n name = \"HandledError\";\r\n}\r\n\r\nexport function sentryLogDecorator($delegate: ILogService, $injector: $InjectorLike) {\r\n 'ngInject';\r\n const methodMap: [\"debug\", \"log\", \"warn\", \"error\"] = [\"debug\", \"log\", \"warn\", \"error\"];\r\n const originals = methodMap.reduce((originals, method) => {\r\n originals[method] = $delegate[method];\r\n return originals;\r\n }, {});\r\n for (const method of methodMap) {\r\n switch (method) {\r\n case \"error\":\r\n $delegate[method] = (...messages) => notifySentryIfException(method, ...messages);\r\n break;\r\n default:\r\n $delegate[method] = (...messages) => originals[method].apply($delegate, messages);\r\n\r\n }\r\n }\r\n return $delegate;\r\n\r\n function notifySentryIfException(method: string, ...messages: any[]) {\r\n // Compute a stack trace from the current frame. Drop the current frame (local)\r\n // and the immediate parent (anonymous function) since they will never be relevant.\r\n const stack = dropStackFrames(new Error().stack, 2);\r\n let shouldCallDelegate = true;\r\n const hub = $injector.get(\"sentryLogHub\");\r\n if (hub !== null) {\r\n shouldCallDelegate = false;\r\n if (messages && messages[0] && messages[0].stack) {\r\n // This is an Error, so include extra details.\r\n // This branch is followed if a caught exception calls `$log.error(ex)`,\r\n // which won't go through the exception handler, but we probably still want to know about.\r\n const [exception, ...extra] = messages as [Error, ...any[]];\r\n // Include the current trace in the exception trace to make it easier to find\r\n // where exceptions were logged.\r\n exception.stack += \"\\n\" + stack;\r\n notifySentryHubError(hub, exception, null, true, ...extra);\r\n } else {\r\n const message = getExceptionMessage(messages[0]);\r\n // Build an error from the first argument so that this produces a stack trace.\r\n const exception = new HandledError(message);\r\n notifySentryHubError(hub, exception, null, true, ...messages);\r\n }\r\n }\r\n if (shouldCallDelegate) {\r\n // If the message is not handled by Sentry, continue through the AngularJS $log service\r\n originals[method].apply($delegate, messages);\r\n } else {\r\n // Call a pristine log method so that the message is logged to console, but not appended to Sentry.\r\n pristineConsole[method].apply($delegate, messages);\r\n }\r\n }\r\n}\r\n","import angular from \"angular\";\r\nimport { sentryExceptionHandlerDecorator } from \"./sentry-exception-handler.decorator\";\r\nimport { SentryHubProvider } from \"./sentry-hub.provider\";\r\nimport { sentryLogDecorator } from \"./sentry-log.decorator\";\r\n\r\nexport const SentryModule = angular\r\n .module(\"apex.ext.sentry\", [])\r\n .provider(\"sentryExceptionHandlerHub\", SentryHubProvider)\r\n .provider(\"sentryLogHub\", SentryHubProvider)\r\n .decorator(\"$exceptionHandler\", sentryExceptionHandlerDecorator)\r\n .decorator(\"$log\", sentryLogDecorator)\r\n .name;\r\n","import moment from \"moment\";\r\nimport { IHttpService, IQService, IPromise, ILogService } from \"angular\";\r\nimport { ClientOptions } from \"../../env/client-options\";\r\n\r\n/**\r\n * A service that configures the client-side application to communicate with\r\n * the Apex API.\r\n */\r\nexport class ApiClientService {\r\n cachedToken: string;\r\n deferredToken: IPromise\r\n\r\n constructor(private $http: IHttpService, private $log: ILogService,\r\n private $q: IQService, private apexApiUrl: string,\r\n private apexClientOptions: ClientOptions) {\r\n 'ngInject';\r\n this.$http = $http;\r\n this.$q = $q;\r\n this.apexApiUrl = apexApiUrl;\r\n }\r\n\r\n /**\r\n * Get an access token using the given refresh token. If another token is available,\r\n * it will be returned instead.\r\n * @returns The refresh token to be used when there is no usable access token.\r\n */\r\n retrieveAccessToken(): IPromise {\r\n if (this.isValidToken(this.cachedToken)) {\r\n return this.$q.resolve(this.cachedToken);\r\n }\r\n if (this.deferredToken) {\r\n // Prevent multiple async calls to this method from all triggering the\r\n // logic for loading the access token.\r\n return this.deferredToken;\r\n }\r\n this.$log.info(\"Requesting a new auth token\");\r\n const deferredToken = this.$http({\r\n method: \"POST\",\r\n url: `${this.apexApiUrl}/auth/token`,\r\n data: {\r\n clientId: this.apexClientOptions.clientId,\r\n clientSecret: this.apexClientOptions.clientSecret\r\n },\r\n disableApexAuthInterceptor: true\r\n } as any).then(response => this.cachedToken = response.data)\r\n .finally(() => {\r\n this.deferredToken = null\r\n return this.cachedToken;\r\n });\r\n this.deferredToken = deferredToken;\r\n return deferredToken;\r\n }\r\n\r\n isValidToken(token) {\r\n if (!token || !token.split) {\r\n // Ensure token is a non-null string.\r\n return false;\r\n }\r\n const [, payload] = token.split(\".\");\r\n try {\r\n const accessToken: any = JSON.parse(atob(payload));\r\n if (accessToken.exp && accessToken.exp * 1000 < Date.now()) {\r\n // Past the expiry date.\r\n return false;\r\n }\r\n if (accessToken.nbf && accessToken.nbf * 1000 > Date.now()) {\r\n // Before the \"not-before\" date.\r\n return false;\r\n }\r\n if (accessToken.iat && moment(accessToken.iat * 1000).diff(moment(), \"minutes\") > 15) {\r\n // Self-impose an expiry date of 15 minutes.\r\n return false;\r\n }\r\n return true;\r\n } catch (ex) {\r\n console.error(\"Decoding token failed\", token, ex);\r\n return false;\r\n }\r\n\r\n }\r\n}\r\n","import {\r\n AddBankAccountRequest,\r\n BankAccountResponse,\r\n ConfigureDirectDepositRequest as ConfigureDirectDepositRequestBase\r\n} from \"@herbjoy/apex-api-models\";\r\nimport { IHttpService, IPromise } from \"angular\";\r\nimport { DepositAmountType } from \"../../../apex-main-app/roster/bank-accounts/deposit-amount-type\";\r\n\r\n/**\r\n * A service exposing data operations for interacting with an employee's bank accounts.\r\n */\r\nexport class BankAccountService {\r\n constructor(private $http: IHttpService, private apexApiUrl: string) {\r\n 'ngInject';\r\n }\r\n\r\n /**\r\n * Get all bank accounts for the specific employee.\r\n * @param employeeID The API's identifier for the employee.\r\n */\r\n retrieveBankAccounts(employeeID: number): IPromise {\r\n return this.$http({\r\n method: \"GET\",\r\n url: `${this.apexApiUrl}/employees/${employeeID}/bank-accounts`\r\n }).then(p => p.data);\r\n }\r\n\r\n retrieveBankAccount(employeeID: number, accountID: number): IPromise {\r\n return this.$http({\r\n method: \"GET\",\r\n url: `${this.apexApiUrl}/employees/${employeeID}/bank-accounts/${accountID}`\r\n }).then(p => p.data);\r\n }\r\n\r\n /**\r\n * Create a new bank account and return the resulting bank account ID.\r\n */\r\n createBankAccount(employeeID: number, request: AddBankAccountRequest): IPromise {\r\n return this.$http({\r\n method: \"POST\",\r\n url: `${this.apexApiUrl}/employees/${employeeID}/bank-accounts`,\r\n data: request\r\n }).then(p => p.data);\r\n }\r\n\r\n /**\r\n * Enable and configure direct deposit for the given employee bank account.\r\n */\r\n configureDirectDeposit(employeeID: number, accountID: number, request: ConfigureDirectDepositRequest):\r\n IPromise {\r\n const formData = createDirectDepositRequestFormData(request);\r\n return this.$http({\r\n method: \"PUT\",\r\n url: `${this.apexApiUrl}/employees/${employeeID}/bank-accounts/${accountID}/direct-deposit`,\r\n data: formData,\r\n // The following two lines are required to submit the request as multipart/form-data.\r\n transformRequest: id => id,\r\n headers: { \"Content-Type\": undefined }\r\n }).then(() => null);\r\n }\r\n\r\n /**\r\n * Cancel direct deposit for the given employee bank account.\r\n */\r\n cancelDirectDeposit(employeeID: number, accountID: number): IPromise {\r\n return this.$http({\r\n method: \"DELETE\",\r\n url: `${this.apexApiUrl}/employees/${employeeID}/bank-accounts/${accountID}/direct-deposit`,\r\n }).then(() => null);\r\n }\r\n\r\n /**\r\n * Remove the bank account from the employee.\r\n */\r\n removeBankAccount(employeeID: number, accountID: number): IPromise {\r\n return this.$http({\r\n method: \"DELETE\",\r\n url: `${this.apexApiUrl}/employees/${employeeID}/bank-accounts/${accountID}`,\r\n }).then(() => null);\r\n }\r\n\r\n /**\r\n * Return the list of deposit amount types that can be selected when configuring direct deposit.\r\n * @param employeeID The employee whose bank accounts can specify the deposit amount types\r\n */\r\n retrieveDepositAmountTypes(employeeID: number): IPromise {\r\n return this.$http({\r\n method: \"GET\",\r\n url: `${this.apexApiUrl}/employees/${employeeID}/deposit-amount-types`\r\n }).then(p => p.data);\r\n }\r\n}\r\n\r\ntype Omit = Pick>\r\nexport type ConfigureDirectDepositRequest = Omit & {\r\n VoidCheck?: File;\r\n AdpDirectDeposit?: File;\r\n};\r\n\r\nfunction createDirectDepositRequestFormData(request: ConfigureDirectDepositRequest): FormData {\r\n const formData = new FormData();\r\n formData.append(\"DepositAmount\", request.DepositAmount?.toString() ?? \"\")\r\n formData.append(\"DepositAmountTypeID\", request.DepositAmountTypeID?.toString() ?? \"\")\r\n if (request.VoidCheck) {\r\n formData.append(\"VoidCheck\", request.VoidCheck);\r\n }\r\n if (request.AdpDirectDeposit) {\r\n formData.append(\"AdpDirectDeposit\", request.AdpDirectDeposit);\r\n }\r\n return formData;\r\n}\r\n","import angular from \"angular\";\r\nimport ngFileUpload from \"ng-file-upload\";\r\n\r\nimport { EnvironmentModule } from \"../../../env/environment.module\";\r\nimport { TemplateCacheModule } from \"../../cache/template-cache.module\";\r\nimport { FeatureFlagsModule } from \"../../feature-flags/feature-flags.module\";\r\n\r\nimport { ApiClientService } from \"../api-client.service\";\r\nimport { AuditLogService } from \"./audit-log.service\";\r\nimport { AuditorService } from \"./auditor.service\";\r\nimport { CommissionPolicyService } from \"./commission-policy.service\";\r\nimport { DashboardService } from './dashboard.service';\r\nimport { DivisionService } from './division.service';\r\nimport { EmployeeService } from './employee.service';\r\nimport { EmploymentProcessingService } from './employment-processing.service';\r\nimport { EventHostService } from './event-host.service';\r\nimport { HomeService } from './home.service';\r\nimport { HubService } from './hub.service';\r\nimport { IcdCommissionsService } from './icd-commissions.service';\r\nimport { IcdCorporationReportService } from './icd-corporation-report.service';\r\nimport { IcdCorporationService } from './icd-corporation.service';\r\nimport { IcdOfficeService } from './icd-office.service';\r\nimport { LeadBatchServiceFactory } from './lead-batch.service';\r\nimport { LeadOfficeTeamService } from './lead-office-team.service';\r\nimport { LeadsPolicyService } from './leads-policy.service';\r\nimport { LeadsService } from './leads.service';\r\nimport { LegalNoticeService } from './legal-notice.service';\r\nimport { MessageService } from './message.service';\r\nimport { MultiPlayCommissionPolicyService } from './multi-play-commission-policy.service';\r\nimport { NationalConsultantService } from './national-consultant.service';\r\nimport { NavigationService } from './navigation.service';\r\nimport { OnboardingApplicationService } from './onboarding-application.service';\r\nimport { OnboardingDivisionService } from './onboarding-division.service';\r\nimport { OnboardingPolicyService } from './onboarding-policy.service';\r\nimport { OnboardingStatusService } from './onboarding-status.service';\r\nimport { PayStubService } from './pay-stub.service';\r\nimport { PayoutPolicyService } from './payout-policy.service';\r\nimport { PayrollDashboardService } from './payroll-dashboard.service';\r\nimport { PayrollEntryService } from './payroll-entry.service';\r\nimport { PayrollFinancialsService } from './payroll-financials.service';\r\nimport { PayrollInvoicePolicyService } from './payroll-invoice-policy.service';\r\nimport { PayrollInvoiceService } from './payroll-invoice.service';\r\nimport { PayrollService } from './payroll.service';\r\nimport { PostedPayoutService } from './posted-payout.service';\r\nimport { ProductCommissionPolicyService } from './product-commission-policy.service';\r\nimport { ProductLineService } from './product-line.service';\r\nimport { ProductOrderAdjustmentService } from './product-order-adjustment.service';\r\nimport { ProductService } from './product.service';\r\nimport { ProgramService } from './program.service';\r\nimport { PromotingOwnerService } from './promoting-owner.service';\r\nimport { RegionalConsultantService } from './regional-consultant.service';\r\nimport { ReportJobService } from './report-job.service';\r\nimport { RetailerService } from './retailer.service';\r\nimport { RogersDashboardService } from './rogers-dashboard.service';\r\nimport { RogersLeadsStatisticsService } from './rogers-leads-statistics.service';\r\nimport { RogersPayoutReportService } from './rogers-payout-report.service';\r\nimport { RoleService } from './role.service';\r\nimport { RotationsService } from './rotations.service';\r\nimport { RsPayoutTransfersService } from './rs-payout-transfers.service';\r\nimport { RSScheduleService } from './rs-schedule.service';\r\nimport { ScheduleEventTimeSlotService } from './schedule-event-time-slot.service';\r\nimport { ScheduleEventService } from './schedule-event.service';\r\nimport { SiteFeatureService } from './site-feature.service';\r\nimport { SiteModuleService } from './site-module.service';\r\nimport { StateProvinceService } from './state-province.service';\r\nimport { TeamService } from './team.service';\r\nimport { TimeCardService } from './time-card.service';\r\nimport { TimeEntryComplianceService } from './time-entry-compliance.service';\r\nimport { TimeEntryService } from './time-entry.service';\r\nimport { WagePolicyService } from './wage-policy.service';\r\nimport { WorkOrderManualClaimService } from './work-order-manual-claim.service';\r\nimport { WorkOrderService } from './work-order.service';\r\nimport { BankAccountService } from \"./bank-account.service\";\r\nimport { AdpConfigService } from \"./adp-config.service\";\r\n\r\nexport const DataServiceModule = angular\r\n .module(\"apex.core.data\", [\r\n ngFileUpload,\r\n // Use the environment defined in the EnvironmentModule\r\n EnvironmentModule,\r\n FeatureFlagsModule,\r\n TemplateCacheModule\r\n ])\r\n .service(\"adpConfigService\", AdpConfigService)\r\n .service(\"apiClientService\", ApiClientService)\r\n .factory(\"auditLogService\", AuditLogService)\r\n .factory(\"auditorService\", AuditorService)\r\n .service(\"bankAccountService\", BankAccountService)\r\n .factory(\"commissionPolicyService\", CommissionPolicyService)\r\n .factory(\"dashboardService\", DashboardService)\r\n .service(\"divisionService\", DivisionService)\r\n .factory(\"employeeService\", EmployeeService)\r\n .service(\"employmentProcessingService\", EmploymentProcessingService)\r\n .service(\"eventHostService\", EventHostService)\r\n .service(\"hubService\", HubService)\r\n .factory(\"icdCommissionsService\", IcdCommissionsService)\r\n .service(\"icdCorporationService\", IcdCorporationService)\r\n .service(\"icdCorporationReportService\", IcdCorporationReportService)\r\n .service(\"icdOfficeService\", IcdOfficeService)\r\n .service(\"homeService\", HomeService)\r\n .service(\"leadsService\", LeadsService)\r\n .service(\"leadsPolicyService\", LeadsPolicyService)\r\n .factory(\"leadBatchService\", LeadBatchServiceFactory)\r\n .factory(\"leadOfficeTeamService\", LeadOfficeTeamService)\r\n .service(\"legalNoticeService\", LegalNoticeService)\r\n .service(\"messageService\", MessageService)\r\n .factory(\"multiPlayCommissionPolicyService\", MultiPlayCommissionPolicyService)\r\n .service(\"nationalConsultantService\", NationalConsultantService)\r\n .service(\"navigationService\", NavigationService)\r\n .service(\"onboardingApplicationService\", OnboardingApplicationService)\r\n .factory(\"onboardingDivisionService\", OnboardingDivisionService)\r\n .factory(\"onboardingPolicyService\", OnboardingPolicyService)\r\n .service(\"onboardingStatusService\", OnboardingStatusService)\r\n .service(\"payStubService\", PayStubService)\r\n .service(\"payrollService\", PayrollService)\r\n .factory(\"payrollDashboardService\", PayrollDashboardService)\r\n .service(\"payrollEntryService\", PayrollEntryService)\r\n .factory(\"payrollFinancialsService\", PayrollFinancialsService)\r\n .service(\"payrollInvoiceService\", PayrollInvoiceService)\r\n .factory(\"payrollInvoicePolicyService\", PayrollInvoicePolicyService)\r\n .factory(\"payoutPolicyService\", PayoutPolicyService)\r\n .factory(\"postedPayoutService\", PostedPayoutService)\r\n .factory(\"productsService\", ProductService)\r\n .factory(\"productCommissionPolicyService\", ProductCommissionPolicyService)\r\n .factory(\"productLinesService\", ProductLineService)\r\n .service(\"productOrderAdjustmentService\", ProductOrderAdjustmentService)\r\n .factory(\"programService\", ProgramService)\r\n .service(\"promotingOwnerService\", PromotingOwnerService)\r\n .service(\"regionalConsultantService\", RegionalConsultantService)\r\n .service(\"reportJobService\", ReportJobService)\r\n .factory(\"retailerService\", RetailerService)\r\n .factory(\"rogersDashboardService\", RogersDashboardService)\r\n .factory(\"rogersLeadsStatisticsService\", RogersLeadsStatisticsService)\r\n .service(\"rogersPayoutReportService\", RogersPayoutReportService)\r\n .service(\"roleService\", RoleService)\r\n .service(\"rotationsService\", RotationsService)\r\n .factory(\"rsScheduleService\", RSScheduleService)\r\n .service(\"scheduleEventService\", ScheduleEventService)\r\n .factory(\"rsPayoutTransfersService\", RsPayoutTransfersService)\r\n .service(\"scheduleEventTimeSlotService\", ScheduleEventTimeSlotService)\r\n .service(\"siteModuleService\", SiteModuleService)\r\n .service(\"siteFeatureService\", SiteFeatureService)\r\n .service(\"stateProvinceService\", StateProvinceService)\r\n .service(\"teamService\", TeamService)\r\n .factory(\"timeCardService\", TimeCardService)\r\n .service(\"timeEntryComplianceService\", TimeEntryComplianceService)\r\n .service(\"timeEntryService\", TimeEntryService)\r\n .service(\"wagePolicyService\", WagePolicyService)\r\n .factory(\"workOrderService\", WorkOrderService)\r\n .factory(\"workOrderManualClaimService\", WorkOrderManualClaimService)\r\n .name;\r\n","import { IQService, IHttpService, IWindowService, IPromise } from \"angular\";\r\nimport { FileService } from \"../file.service\";\r\nimport { PermissionGrant, PermissionDescription } from \"@herbjoy/apex-api-models\";\r\n\r\n/**\r\n * A service used to get or modify permissions defined or granted in the system.\r\n */\r\nexport class PermissionGrantService {\r\n private cache: { permissionGrants?: PermissionGrant[] }\r\n private deferredPermissionGrants: IPromise;\r\n constructor(private $http: IHttpService, private $q: IQService,\r\n private $window: IWindowService, private fileService: FileService,\r\n private apexApiUrl: string) {\r\n 'ngInject';\r\n // Allow multiple concurrent requests to wait on the same HTTP request for permissions.\r\n this.deferredPermissionGrants = null;\r\n this.cache = {};\r\n }\r\n\r\n /**\r\n * Get the list of all permissions described for use in Apex.\r\n */\r\n retrievePermissionDescriptions() {\r\n return this.$http({\r\n method: \"GET\",\r\n url: `${this.apexApiUrl}/permissions`\r\n }).then(response => response.data);\r\n }\r\n\r\n /**\r\n * Get the list of all permissions granted to the authenticated user.\r\n * @param {{ icdOfficeID?: number, divisionID?: number }} params Optionally check permission in the context\r\n * of a specific division or office.\r\n */\r\n retrievePermissionGrants(params?: { icdOfficeID?: number, divisionID?: number}) {\r\n return this.$http({\r\n method: \"GET\",\r\n url: `${this.apexApiUrl}/auth/permissions`,\r\n params\r\n }).then(response => response.data);\r\n }\r\n\r\n exportAllClaimPermissionsCsv() {\r\n return this.$q(resolve => {\r\n this.$window.location.href = `${this.apexApiUrl}/claims/all/permissions.csv`;\r\n resolve();\r\n });\r\n }\r\n\r\n importAllClaimPermissionsCsv(csvString) {\r\n const claimPermissions = csvString.trim().split(\"\\n\")\r\n .slice(1) // Omit the header line.\r\n .map(csvLine => csvLine.trim().split(\",\"))\r\n .map(([claimType, claimValue, permissionKey, value]) => ({\r\n ClaimType: claimType,\r\n ClaimValue: claimValue,\r\n PermissionKey: permissionKey,\r\n Value: value\r\n }));\r\n return this.$http({\r\n method: \"PUT\",\r\n url: `${this.apexApiUrl}/claims/all/permissions`,\r\n data: claimPermissions\r\n });\r\n }\r\n\r\n /**\r\n * Return whether the user has a specific permission\r\n * @param {string} permissionKey The permission to be checked.\r\n * @param {{ icdOfficeID?: number, divisionID?: number }} params Optionally check permission in the context\r\n * of a specific division or office.\r\n */\r\n hasPermission(permissionKey, params) {\r\n let permissionGrants = null;\r\n if (!params && this.cache.permissionGrants) {\r\n //TODO: Cache expiration.\r\n permissionGrants = this.$q.resolve(this.cache.permissionGrants);\r\n } else if (params) {\r\n // For now, if params are given, perform an HTTP requet each time.\r\n permissionGrants = this.retrievePermissionGrants(params);\r\n } else if (this.deferredPermissionGrants) {\r\n permissionGrants = this.deferredPermissionGrants;\r\n } else {\r\n this.deferredPermissionGrants = this.retrievePermissionGrants()\r\n .then(permissionGrants => {\r\n this.deferredPermissionGrants = null;\r\n this.cache.permissionGrants = permissionGrants;\r\n return permissionGrants;\r\n });\r\n permissionGrants = this.deferredPermissionGrants;\r\n }\r\n return permissionGrants.then(permissionGrants => {\r\n const keyGrants = permissionGrants.filter(p => p.Description.Key === permissionKey);\r\n // Permission is granted if the permission appears and the last appearance is \"true\". A permission grant\r\n // can appear multiple times, and still be revoked if the final appearance is \"false\".\r\n return keyGrants.length && keyGrants[keyGrants.length - 1].Value === \"true\";\r\n });\r\n }\r\n\r\n /**\r\n * Get the expanded collection of claims that would be generated when signing\r\n * in the given user.\r\n * @param {number} userID The user ID\r\n */\r\n retrieveUserClaims(userID) {\r\n return this.$http({\r\n method: \"GET\",\r\n url: `${this.apexApiUrl}/employees/${userID}/claims`\r\n }).then(response => response.data)\r\n }\r\n\r\n /**\r\n * Get the list of user permission grants given to the user.\r\n * @param {number} userID The user ID\r\n */\r\n retrieveUserPermissions(userID) {\r\n return this.$http({\r\n method: \"GET\",\r\n url: `${this.apexApiUrl}/employees/${userID}/permissions`\r\n }).then(response => response.data)\r\n }\r\n\r\n /**\r\n * Create or update an overriding permission grant for a specific user on a specific\r\n * permission.\r\n * @param {number} userID The user ID owning the permission grant\r\n * @param {string} permissionKey The key identifying the permission that was granted.\r\n * @param {any} request The details of the permission grant request.\r\n */\r\n setUserPermission(userID, permissionKey, request) {\r\n return this.$http({\r\n method: \"PUT\",\r\n url: `${this.apexApiUrl}/employees/${userID}/permissions/${btoa(permissionKey)}`,\r\n data: request\r\n })\r\n }\r\n\r\n /**\r\n * Delete the custom value given to the user for a specific permission. This does not\r\n * affect permissions granted by other means.\r\n * @param {number} userID The user ID owning the permission grant\r\n * @param {string} permissionKey The key identifying the permission that was granted.\r\n */\r\n deleteUserPermission(userID, permissionKey) {\r\n return this.$http({\r\n method: \"DELETE\",\r\n url: `${this.apexApiUrl}/employees/${userID}/permissions/${btoa(permissionKey)}`\r\n })\r\n }\r\n\r\n /**\r\n * Simulate what kind of permissions would be granted to a user who had\r\n * the provided list of claims granted to them.\r\n * @param {any} claims The list of claims from which permissions should be generated\r\n */\r\n simulationPermissionGrantsForClaims(claims) {\r\n return this.$http({\r\n method: \"POST\",\r\n url: `${this.apexApiUrl}/services/permissions`,\r\n data: claims\r\n }).then(response => response.data)\r\n }\r\n\r\n /**\r\n * Get list of permissions granted for that claimType and claimValue\r\n * @param {number} claimType The Claim Type of the permission grant\r\n * @param {string} claimValue The Claim Type of the permission grant\r\n */\r\n getClaimPermissionGrants(claimType, claimValue) {\r\n return this.$http({\r\n method: \"GET\",\r\n url: `${this.apexApiUrl}/claims/${btoa(claimType)}/${claimValue}/permissions`\r\n })\r\n .then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n /**\r\n * Upsert the value of permission based on claim type,value and permission key\r\n * @param {number} claimType The Claim Type of the permission grant\r\n * @param {string} claimValue The Claim Type of the permission grant\r\n * @param {string} permissionKey The Permission Key of the permission grant\r\n * @param {string} request The value(boolean) of the permission grant\r\n */\r\n putClaimPermissionGrant(claimType, claimValue, permissionKey, request) {\r\n const url = claimValue\r\n ? `claims/${btoa(claimType)}/${claimValue}/permissions/${btoa(permissionKey)}`\r\n : `claims/${btoa(claimType)}/permissions/${btoa(permissionKey)}`\r\n return this.$http({\r\n method: \"PUT\",\r\n url: `${this.apexApiUrl}/${url}`,\r\n data: request\r\n })\r\n .then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n /**\r\n * Clear the permissions set for claimType and claimValue permission\r\n * @param {number} claimType The Claim Type of the permission grant\r\n * @param {string} claimValue The Claim Type of the permission grant\r\n * @param {string} permissionKey The Permission Key of the permission grant\r\n */\r\n clearClaimPermissionGrant(claimType, claimValue, permissionKey) {\r\n return this.$http({\r\n method: \"DELETE\",\r\n url: `${this.apexApiUrl}/claims/${btoa(claimType)}/${claimValue}/permissions/${btoa(permissionKey)}`\r\n })\r\n .then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n /**\r\n * Get list of all claim permission grants\r\n */\r\n getAllClaimPermissions() {\r\n return this.$http({\r\n method: \"GET\",\r\n url: `${this.apexApiUrl}/claims/all/permissions`\r\n })\r\n .then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n}\r\n","import { IWindowService } from \"angular\";\r\n\r\n/**\r\n * An abstraction over the browser storage API that allows keys to\r\n * be localized to a specific instance of the site (eg, training)\r\n */\r\nexport class InstanceDb {\r\n localStorage: Omit;\r\n sessionStorage: Omit;\r\n\r\n constructor(apexInstancePrefix: string, $window: IWindowService) {\r\n 'ngInject';\r\n this.localStorage = new InstancedStorage(apexInstancePrefix, $window.localStorage);\r\n this.sessionStorage = new InstancedStorage(apexInstancePrefix, $window.sessionStorage);\r\n }\r\n}\r\n\r\nclass InstancedStorage implements Omit {\r\n constructor(private prefix: string, private storage: Storage) {\r\n }\r\n\r\n clear(): void {\r\n for (let i = 0; i < this.storage.length; i++) {\r\n const key = this.storage.key(i);\r\n\r\n if (key.startsWith(this.prefix)) {\r\n this.storage.removeItem(key);\r\n }\r\n }\r\n }\r\n getItem(key: string): string {\r\n return this.storage.getItem(this.prefix + key);\r\n }\r\n removeItem(key: string): void {\r\n this.storage.removeItem(this.prefix + key);\r\n }\r\n setItem(key: string, value: string): void {\r\n this.storage.setItem(this.prefix + key, value);\r\n }\r\n\r\n}\r\n","import moment from \"moment\";\r\nimport cloneDeep from \"lodash/cloneDeep\";\r\n\r\n// Only certain columns are relevant for comparison.\r\nexport const supportedDifferences = [{\r\n field: \"RegularHours\",\r\n isCurrency: false,\r\n caption: \"Regular Hours\"\r\n}, {\r\n field: \"RegularAmount\",\r\n isCurrency: true,\r\n caption: \"Regular Hours Amount\"\r\n}, {\r\n field: \"OvertimeHours\",\r\n isCurrency: false,\r\n caption: \"Overtime Hours\"\r\n}, {\r\n field: \"OvertimeAmount\",\r\n isCurrency: true,\r\n caption: \"Overtime Amount\"\r\n}, {\r\n field: \"DoubleTimeHours\",\r\n isCurrency: false,\r\n caption: \"Double Time Hours\",\r\n visible: p => p.ShowDT\r\n}, {\r\n field: \"DoubleTimeAmount\",\r\n isCurrency: true,\r\n caption: \"Double Time Amount\",\r\n visible: p => p.ShowDT\r\n}, {\r\n field: \"ExtraHoursWorked\",\r\n isCurrency: false,\r\n caption: \"Extra Hours Worked\"\r\n}, {\r\n field: \"TotalHoursWorked\",\r\n isCurrency: false,\r\n caption: \"Total Hours Worked\"\r\n}, {\r\n field: \"TotalGuaranteed\",\r\n isCurrency: true,\r\n caption: \"Total Guaranteed\",\r\n}, {\r\n field: \"RegularCommission\",\r\n isCurrency: true,\r\n caption: \"Regular Commission\",\r\n canBeIndirectlyAffected: true\r\n}, {\r\n field: \"TotalCommissionAmount\",\r\n isCurrency: true,\r\n caption: \"Total Paid Commission\",\r\n canBeIndirectlyAffected: true\r\n}, {\r\n field: \"MealPeriodPremiumAmount\",\r\n isCurrency: true,\r\n caption: \"Meal Period Premium Amount\"\r\n}, {\r\n field: \"Salary\",\r\n isCurrency: true,\r\n caption: \"Salary\",\r\n visible: p => p.ShowSalary\r\n}, {\r\n field: \"ExtraCommission\",\r\n isCurrency: true,\r\n caption: \"Extra Commission\"\r\n}, {\r\n field: \"CommissionBonus\",\r\n isCurrency: true,\r\n caption: \"Commission Bonus\"\r\n}, {\r\n field: \"SickPayAmount\",\r\n isCurrency: false,\r\n caption: \"Paid Sick Leave\",\r\n visible: p => p.ShowSick\r\n}, {\r\n field: \"ReportingTimeAmount\",\r\n isCurrency: false,\r\n caption: \"Reporting Time\",\r\n visible: p => p.ShowReportingTime\r\n}, {\r\n field: \"SplitTimeAmount\",\r\n isCurrency: true,\r\n caption: \"Split Shift Premium\",\r\n visible: p => p.ShowSplit\r\n}, {\r\n field: \"MealPeriodPremium\",\r\n isCurrency: true,\r\n caption: \"Meal Period Premium\",\r\n visible: p => p.ShowMealPeriodPremium\r\n}, {\r\n field: \"HolidayPay\",\r\n isCurrency: true,\r\n caption: \"Holiday Pay\",\r\n visible: p => p.ShowHolidayPay\r\n}, {\r\n field: \"TravelAllowance\",\r\n isCurrency: true,\r\n caption: \"Travel Allowance\",\r\n visible: p => p.ShowTravel\r\n}, {\r\n field: \"CellAllowance\",\r\n isCurrency: true,\r\n caption: \"Cell Allowance\",\r\n visible: p => p.ShowCell\r\n}, {\r\n field: \"Tip\",\r\n isCurrency: true,\r\n caption: \"Tip\",\r\n visible: p => p.ShowTip\r\n}, {\r\n field: \"MinimumWageAdvance\",\r\n isCurrency: true,\r\n caption: \"Minimum Wage Advance\",\r\n canBeIndirectlyAffected: true,\r\n visible: p => p.ShowMinimumWageAdvance\r\n}, {\r\n field: \"Chargeback\",\r\n isCurrency: true,\r\n caption: \"Chargeback\",\r\n canBeIndirectlyAffected: true,\r\n visible: p => p.ShowChargeback\r\n}, {\r\n field: \"TrainingPay\",\r\n isCurrency: true,\r\n caption: \"Training Pay\",\r\n visible: p => p.ShowTrainingPay\r\n}, {\r\n field: \"GrossPay\",\r\n isCurrency: true,\r\n caption: \"Gross Pay\",\r\n canBeIndirectlyAffected: true\r\n}, {\r\n field: \"NetPayAddition\",\r\n isCurrency: true,\r\n caption: \"Net Pay Addition\"\r\n}, {\r\n field: \"NetPayDeduction\",\r\n isCurrency: true,\r\n caption: \"Net Pay Deduction\"\r\n}]\r\n\r\n// Earning definitions that are compared between the whole pay stub.\r\nconst differablePayStubEarnings = [{\r\n rate: p => p.RegularRate,\r\n units: p => p.RegularHours,\r\n amount: p => p.RegularAmount,\r\n combineWeeks: true, // Even if there are differences in multiple weeks, combine both into one line.\r\n unit: \"hour\",\r\n caption: \"Regular\"\r\n}, {\r\n rate: p => p.RegularRate,\r\n units: p => p.TrainingPayHours,\r\n amount: p => p.TrainingPay,\r\n unit: \"hour\",\r\n combineWeeks: true,\r\n caption: \"Training Pay\"\r\n}, {\r\n rate: p => p.OvertimeRate,\r\n units: p => p.OvertimeHours,\r\n amount: p => p.OvertimeAmount,\r\n unit: \"hour\",\r\n caption: \"Overtime\"\r\n}, {\r\n rate: p => p.DoubleTimeRate,\r\n units: p => p.DoubleTimeHours,\r\n amount: p => p.DoubleTimeAmount,\r\n unit: \"hour\",\r\n caption: \"Double Time\"\r\n}, {\r\n amount: p => p.TotalCommissionAmount || 0,\r\n caption: \"Commissions\"\r\n}, {\r\n amount: p => p.Chargeback || 0,\r\n caption: \"Chargeback\"\r\n}, {\r\n amount: p => p.Bonus,\r\n caption: \"Discretionary Bonus\"\r\n}, {\r\n amount: p => p.CommissionBonus,\r\n caption: \"Bonus\"\r\n}, {\r\n amount: p => p.Salary,\r\n caption: \"Salary\"\r\n}, {\r\n amount: p => p.CellAllowance,\r\n caption: \"Cell Allowance\",\r\n combineWeeks: true\r\n}, {\r\n amount: p => p.Tip,\r\n caption: \"Tip\",\r\n combineWeeks: true\r\n}, {\r\n amount: p => p.TravelAllowance,\r\n caption: \"Travel Allowance\",\r\n combineWeeks: true\r\n}, {\r\n rate: p => p.RegularRate,\r\n units: p => p.MealPeriodPremiumTime,\r\n amount: p => p.MealPeriodPremiumAmount,\r\n unit: \"hour\",\r\n combineWeeks: true,\r\n caption: \"Meal Period Premium\"\r\n}, {\r\n rate: p => p.RegularRate,\r\n units: p => p.SickPay,\r\n amount: p => p.SickPayAmount,\r\n combineWeeks: true,\r\n unit: \"hour\",\r\n caption: \"Paid Sick Leave\"\r\n}, {\r\n rate: p => p.RegularRate,\r\n units: p => p.SplitTime,\r\n amount: p => p.SplitTimeAmount,\r\n unit: \"hour\",\r\n combineWeeks: true,\r\n caption: \"Split Shift Premium\"\r\n}, {\r\n amount: p => p.HolidayPay,\r\n caption: \"Statutory Holiday Pay\"\r\n}, {\r\n rate: p => p.RegularRate,\r\n units: p => p.ReportingTime,\r\n amount: p => p.ReportingTimeAmount,\r\n unit: \"hour\",\r\n combineWeeks: true,\r\n caption: \"Reporting Time\"\r\n}];\r\n\r\n/**\r\n * A service implementing calculations for processing manual submissions.\r\n */\r\nexport class PayrollManualCalculationService {\r\n constructor() {\r\n 'ngInject';\r\n this.supportedDifferences = supportedDifferences;\r\n }\r\n\r\n /**\r\n * Return an altered RS Commission Amounts array that adds to or updates the RS\r\n * Commission list to include the extra show hours.\r\n * @param {any} input The base payroll input\r\n * @param {any[]} extraShowHours The extra show hours array.\r\n */\r\n addExtraHourRSCommissionAmounts(input, extraShowHours) {\r\n\r\n const rsCommissions = cloneDeep(input.RSCommissionAmounts);\r\n return extraShowHours.reduce((rsCommissions, showHour) => {\r\n // eslint-disable-next-line eqeqeq\r\n const commission = rsCommissions.find(p => p.ProgramID == showHour.ProgramID\r\n // eslint-disable-next-line eqeqeq\r\n && p.StoreID == showHour.EventHostID\r\n && moment(p.ScheduleDate).isSame(showHour.Date, \"day\"));\r\n const totalHours = moment.duration(showHour.TotalDuration).asHours();\r\n if (commission) {\r\n commission.ManHoursWorked += totalHours;\r\n } else {\r\n rsCommissions.push({\r\n ProgramID: showHour.ProgramID,\r\n StoreID: showHour.EventHostID,\r\n ScheduleDate: showHour.Date,\r\n CommissionAmount: 0,\r\n ManHoursWorked: totalHours,\r\n SalesAmount: 0,\r\n SalesNetPayout: 0,\r\n TierRate: 0,\r\n DailyNCRThreshold: 0\r\n });\r\n }\r\n\r\n return rsCommissions;\r\n }, rsCommissions);\r\n }\r\n\r\n /**\r\n * Return an altered pay date durations array consisting of the original\r\n * input combined with the extra show hours from a manual request.\r\n * @param {any} input The base payroll input.\r\n * @param {any[]} extraShowHours The extra show hours array.\r\n */\r\n addExtraHourPayDateDurations(input, payrollEntry, extraShowHours) {\r\n // Send extra hours in as input. The commission amount will override any\r\n // proportional\r\n return input.PayDateDurations.concat(\r\n extraShowHours.map(extraHour => ({\r\n Date: extraHour.Date,\r\n ProgramID: extraHour.ProgramID,\r\n StoreID: extraHour.EventHostID,\r\n DivisionID: payrollEntry.Divisions[0],\r\n TotalHours: moment.duration(extraHour.TotalDuration).asHours(),\r\n EmployeeID: payrollEntry.EmployeeID,\r\n PayRate: payrollEntry.EmployeePayRate,\r\n CommissionAmount: extraHour.CommissionAmount\r\n })))\r\n }\r\n\r\n /**\r\n * Generate a list of differences between two sets of payroll calculations.\r\n * @param {any[]} left The list of current payroll entry calculations\r\n * @param {any[]} right The list of updated payroll entry calculations\r\n */\r\n enumerateDifferences(left, right) {\r\n return left.reduce((employeeGroups, payPeriod) => {\r\n const updated = right.find(p => p.PayPeriodID === payPeriod.PayPeriodID);\r\n if (!updated) {\r\n return employeeGroups;\r\n }\r\n let employeeGroup = employeeGroups.find(p => p.employee.EmployeeID === payPeriod.Employee.EmployeeID);\r\n if (!employeeGroup) {\r\n employeeGroup = {\r\n employee: payPeriod.Employee,\r\n payPeriodChanges: [],\r\n hasDifference: false\r\n }\r\n\r\n employeeGroups.push(employeeGroup);\r\n }\r\n\r\n const payPeriodChange = {\r\n payPeriodID: payPeriod.PayPeriodID,\r\n employee: payPeriod.Employee,\r\n weekNumber: payPeriod.WeekNumber,\r\n differences: []\r\n };\r\n\r\n for (const column of supportedDifferences.filter(p => !p.visible || p.visible(payPeriod))) {\r\n const difference = getNumberDifference(column.field, payPeriod, updated) || {\r\n ...column\r\n };\r\n difference.caption = column.caption;\r\n difference.isCurrency = column.isCurrency;\r\n payPeriodChange.differences.push(difference);\r\n if (difference.difference) {\r\n employeeGroup.hasDifference = true;\r\n }\r\n }\r\n\r\n employeeGroup.payPeriodChanges.push(payPeriodChange);\r\n\r\n return employeeGroups;\r\n\r\n }, [])\r\n // Group by employee so that both weeks can be returned.\r\n .filter(p => p.hasDifference)\r\n .reduce((payPeriodChanges, employeeGroup) =>\r\n payPeriodChanges.concat(employeeGroup.payPeriodChanges), []);\r\n\r\n }\r\n\r\n comparePayStubs(left, right) {\r\n const fullPayStub = [];\r\n const differences = [];\r\n const periodEarnings = differablePayStubEarnings\r\n .concat([left, right].reduce((pieceEarnings, payPeriods) => {\r\n // Define earnings for each commission piece.\r\n // Note: due to how commission pieces are not archived, there will never be a\r\n // difference in commission piece count directly. However, this can still be used\r\n // when generating the earnings for a full pay stub.\r\n for (const period of payPeriods) {\r\n for (const piece of period.CommissionPieces) {\r\n if ((piece.PieceQty || piece.PieceRate) && !pieceEarnings.dict[piece.PieceNumber]) {\r\n pieceEarnings.dict[piece.PieceNumber] = true;\r\n // Note that the piece in scope right now is for a specific pay period. To use the\r\n // pay period as passed in, access the commission piece by its index.\r\n pieceEarnings.functions.push({\r\n rate: p => p.CommissionPieces[piece.PieceNumber - 1].PieceRate || null,\r\n units: p => p.CommissionPieces[piece.PieceNumber - 1].PieceQty || null,\r\n amount: p => {\r\n const _piece = p.CommissionPieces[piece.PieceNumber - 1];\r\n return _piece.PieceRate * _piece.PieceQty || 0;\r\n },\r\n combineWeeks: true,\r\n caption: `Commission Piece #${piece.PieceNumber}`,\r\n unit: \"qty\",\r\n });\r\n }\r\n }\r\n }\r\n return pieceEarnings;\r\n }, { functions: [], dict: {} }).functions);\r\n\r\n for (const earnings of periodEarnings) {\r\n const leftAmount = this.enumerateEarnings(earnings, left);\r\n const rightAmount = this.enumerateEarnings(earnings, right);\r\n const earningsDifferences = this.subtractEarnings(rightAmount, leftAmount); // Subtract original from updated, so reverse the argument order.\r\n differences.push(...earningsDifferences);\r\n fullPayStub.push(...rightAmount);\r\n }\r\n // If there is no difference, assume that if the manual was requested,\r\n // the manual pay stub is being produced for the first time,\r\n // and therefore all amounts on the pay stub should appear on the manual submission's pay stub.\r\n const res = differences.length ? differences : fullPayStub;\r\n return res.flat().filter(p => p.amount || p.units);\r\n }\r\n\r\n /**\r\n * Produce a list of earnings lines for a particular type of earnings given the pay periods\r\n * comprising the pay stub.\r\n * @param {any} earnings A specific earning being enumerated.\r\n * @param {any} payPeriods The list of pay periods in the enumerated pay stub.\r\n * @param {boolean} isMultiWeek Indicates if the pay stub is multi-week.\r\n */\r\n enumerateEarnings(earnings, payPeriods) {\r\n return payPeriods.reduce((earningsLines, period) => {\r\n let earningsLine = earningsLines[0];\r\n if (!earningsLine) {\r\n earningsLine = {\r\n caption: earnings.caption,\r\n rate: earnings.rate ? earnings.rate(period) : null,\r\n units: earnings.units ? 0 : null, // Either null or 0 base depending on if units are used.\r\n amount: 0\r\n };\r\n earningsLines.push(earningsLine);\r\n }\r\n if (earnings.units) {\r\n earningsLine.units += earnings.units(period);\r\n }\r\n earningsLine.amount += earnings.amount(period);\r\n return earningsLines;\r\n }, []).flat();\r\n }\r\n\r\n /**\r\n * Subtract earnings in the right operand from earnings in the left operand, and return\r\n * the result.\r\n * @param {any[]} left The left operand, the amount to be added.\r\n * @param {any[]} right The right operand, the amount to be subtracted.\r\n */\r\n subtractEarnings(left, right) {\r\n const differences = [];\r\n for (const earningsLine of left) {\r\n const rightLine = right.find(p => p.caption === earningsLine.caption);\r\n const leftAmount = earningsLine.amount || 0;\r\n const rightAmount = rightLine ? rightLine.amount || 0 : 0;\r\n if (!rightLine || leftAmount !== rightAmount) {\r\n differences.push({\r\n ...earningsLine,\r\n units: earningsLine.units !== null\r\n ? earningsLine.units - (rightLine ? rightLine.units || 0 : 0) : null,\r\n amount: leftAmount - rightAmount\r\n });\r\n }\r\n }\r\n return differences;\r\n }\r\n\r\n getBaselineTotal(payPeriod) {\r\n const baseline = {\r\n PayPeriodID: payPeriod.PayPeriodID,\r\n WeekNumber: payPeriod.WeekNumber,\r\n Employee: payPeriod.Employee\r\n\r\n };\r\n\r\n return supportedDifferences.reduce((baseline, difference) => {\r\n // Ensure the field value is a number. Otherwise, the comparison\r\n // will be rejected outright.\r\n baseline[difference.field] = 0;\r\n return baseline;\r\n\r\n }, baseline)\r\n\r\n }\r\n\r\n /**\r\n * Return an initial list of pay stub earnings for a particular manual submission.\r\n * @param {any} manualSubmission The manual submission being initialized.\r\n * @param {any} left The current payroll entry calculations.\r\n * @param {any} right The updated payroll entry calculations.\r\n * @returns The initialized list of earnings\r\n */\r\n initializePayStubEarnings(manualSubmission, left, right) {\r\n console.log(manualSubmission);\r\n const payPeriod = right.find(p => p.PayPeriodID === manualSubmission.PayPeriodID);\r\n left = left.filter(p => p.EmployeeID === payPeriod.EmployeeID &&\r\n p.PayPeriodID === manualSubmission.PayPeriodID);\r\n right = right.filter(p => p.EmployeeID === payPeriod.EmployeeID &&\r\n p.PayPeriodID === manualSubmission.PayPeriodID);\r\n const differences = this.comparePayStubs(left, right);\r\n console.log(differences);\r\n const updatedGrossPay = right.reduce((sum, p) => sum + p.GrossPay, 0);\r\n const currentGrossPay = left.reduce((sum, p) => sum + p.GrossPay, 0);\r\n const updatedNetPayAddition = right.reduce((sum, p) => sum + (p.NetPayAddition || 0), 0);\r\n const currentNetPayAddition = left.reduce((sum, p) => sum + (p.NetPayAddition || 0), 0);\r\n const differenceGrossPay = updatedGrossPay - currentGrossPay || updatedGrossPay;\r\n const differenceNetPayAddition = updatedNetPayAddition - currentNetPayAddition || updatedNetPayAddition;\r\n return {\r\n Earnings: differences.map(difference => ({\r\n Caption: difference.caption,\r\n Rate: difference.rate !== null && difference.caption !== \"Meal Period Premium\" ?\r\n Math.round(difference.rate * 100) / 100 : null,\r\n Units: difference.units !== null && difference.caption !== \"Meal Period Premium\" ?\r\n Math.round(difference.units * 100) / 100 : null,\r\n Amount: difference.amount !== null ? Math.round(difference.amount * 100) / 100 : null\r\n })),\r\n GrossPay: Math.round(differenceGrossPay * 100) / 100,\r\n NetPayAddition: Math.round(differenceNetPayAddition * 100) / 100\r\n };\r\n }\r\n\r\n /**\r\n * Map from difference to a pay stub earning.\r\n * @param {{ differences: { caption: string, difference: number, isCurrency: boolean}[] }} differences\r\n * @returns {{ Name: string, Value: number, IsCurrency: boolean}[]}\r\n */\r\n createPayStubEarnings(differences) {\r\n return differences.differences.filter(difference => difference.difference)\r\n .map(difference => ({\r\n Name: difference.caption,\r\n Value: difference.difference,\r\n IsCurrency: difference.isCurrency\r\n }));\r\n }\r\n}\r\n\r\n\r\nfunction getNumberDifference(field, left, right) {\r\n const rightValue = right[field];\r\n const leftValue = left[field]\r\n //If anyone of the left or right is a valid number\r\n if ((!isNaN(leftValue) || !isNaN(rightValue)) && Number(leftValue) !== Number(rightValue)) {\r\n return {\r\n field,\r\n left: leftValue,\r\n right: rightValue,\r\n difference: rightValue - leftValue\r\n }\r\n }\r\n}\r\n\r\n","/* eslint-disable eqeqeq */\r\n/* eslint-disable no-invalid-this */\r\n/* eslint-disable @typescript-eslint/no-this-alias */\r\nimport WinxnetUtility from \"../../../vendor/WinxnetCommon/Winxnet.Utility\";\r\nimport { IPromise, IHttpService, ILogService, IRootScopeService, IWindowService, default as angular } from \"angular\";\r\nimport { getExceptionMessage, dropStackFrames } from \"../data-utils\";\r\n\r\nexport interface UtilityService {\r\n\r\n globalBroadcast(event, args): void;\r\n showLoading(): void;\r\n hideLoading(): void;\r\n apiUrl: string;\r\n utility: WinxnetUtility;\r\n transmitData(settings): any;\r\n getData(settings): any;\r\n postData(settings): any;\r\n safeApply($scope, apply): any;\r\n /**\r\n * Get the exception message from the $http exception object.\r\n */\r\n getExceptionMessage(ex: any): string;\r\n /**\r\n * Show a loading spinner until the promise resolves.\r\n * @return Promise that resolves once the loading spinner is hidden.\r\n */\r\n showLoadingUntilResolved(promise: IPromise | Promise): IPromise;\r\n alertOnError(promise: IPromise | Promise, alertTitle: string): IPromise | Promise;\r\n alertOnError(promise: IPromise | Promise, alertTitle: string): IPromise | Promise;\r\n containsInvariant(wholeString: string, instance: string): boolean;\r\n equalsInvariant(wholeString: string, instance: string): boolean;\r\n /**\r\n * Debounce the given function so that it cannot be fired more than once\r\n * over the course of the given timeout.\r\n * @param func The function to be fired.\r\n * @param wait The number of milliseconds to wait before clearing the timeout.\r\n * @param immediate If true, trigger the function on the leading edge.\r\n * @returns The original function wrapped in a debouncer.\r\n * @deprecated This implementation does not implement a full debounce spec; it may be removed\r\n * eventually, so using lodash debounce as a substitute instead is recommended.\r\n */\r\n debounce(func: (...args: any[]) => any, wait: number): (...args: any) => void;\r\n debounce(func: (...args: any[]) => any, wait: number, immediate: boolean): (...args: any) => void;\r\n /**\r\n * Convert the given query object into a query string\r\n * @returns The converted query string.\r\n */\r\n queryStringify(query: any): string;\r\n /**\r\n * Move the given item within the list of items to its new index, in place.\r\n * @param items The list of items within which the movedItem has moved.\r\n * @param movedItem The item that has moved.\r\n * @param index The index to which the moved item has moved.\r\n * @template T The generic type of item contained in the list of items.\r\n * @returns The mutated original list of items.\r\n */\r\n moveItem(items: T[], movedItem: T, index: number): T[];\r\n getModelStateErrors(modelState): any;\r\n}\r\n\r\nexport function UtilityServiceFactory($http: IHttpService, $log: ILogService,\r\n $rootScope: IRootScopeService, $window: IWindowService): UtilityService {\r\n 'ngInject'\r\n\r\n let loadingCount = 0;\r\n\r\n const utilitySvc = {\r\n\r\n globalBroadcast: function (event, args) {\r\n $rootScope.$broadcast('rootScope:' + event, args);\r\n },\r\n\r\n showLoading: function () {\r\n loadingCount += 1;\r\n\r\n if (loadingCount === 1) {\r\n $rootScope.$broadcast('showLoading');\r\n }\r\n },\r\n\r\n hideLoading: function () {\r\n loadingCount -= 1;\r\n if (loadingCount <= 0) {\r\n loadingCount = 0;\r\n $rootScope.$broadcast('hideLoading');\r\n }\r\n },\r\n\r\n apiUrl: $window.siaaApiUrl,\r\n\r\n utility: $window.utility,\r\n\r\n transmitData: function (settings) {\r\n if (angular.isUndefined(settings.dataType)) {\r\n settings.dataType = \"json\";\r\n }\r\n\r\n settings.headers = $.extend(settings.headers, { Authorization: $window.apexToken });\r\n settings.url = this.apiUrl + settings.url;\r\n\r\n if (($ as any).__jquery_xdomain__) {\r\n // shim for IE CORS\r\n // jquery.ie.cors.js\r\n\r\n const response: any = {\r\n config: settings,\r\n };\r\n\r\n // create a fake http promise\r\n // http://docs.angularjs.org/api/ng.$http\r\n // this does not support all of the angular $http options.\r\n // Typical $q does not provide the methods we want (success and error)\r\n const httpPromise = {\r\n _successFunc: [],\r\n _errorFunc: [],\r\n success: function (successFunc) {\r\n if (angular.isFunction(successFunc)) {\r\n this._successFunc.push(successFunc);\r\n }\r\n return this;\r\n },\r\n then: function (successFunc, errorFunc) {\r\n if (angular.isFunction(successFunc)) {\r\n this._successFunc.push(successFunc);\r\n }\r\n if (angular.isFunction(errorFunc)) {\r\n this._errorFunc.push(errorFunc);\r\n }\r\n return this;\r\n },\r\n error: function (errorFunc) {\r\n if (angular.isFunction(errorFunc)) {\r\n this._errorFunc.push(errorFunc);\r\n }\r\n return this;\r\n }\r\n };\r\n\r\n $.ajax(settings)\r\n .done(function (data, textStatus, jqXHR) {\r\n response.data = data;\r\n response.status = jqXHR.status;\r\n response.headers = jqXHR.getResponseHeader;\r\n angular.forEach(httpPromise._successFunc, function (func) {\r\n func(response.data, response.status, response.headers, response.config);\r\n });\r\n $rootScope.$apply();\r\n })\r\n .fail(function (jqXHR) {\r\n response.status = jqXHR.status;\r\n response.headers = jqXHR.getResponseHeader;\r\n angular.forEach(httpPromise._errorFunc, function (func) {\r\n func(null, response.status, response.headers, response.config);\r\n });\r\n $rootScope.$apply();\r\n });\r\n\r\n return httpPromise;\r\n } else {\r\n // normal flow for browsers which process CORS correctly (i.e. non-IE, IE 10 and greater)\r\n return $http(settings);\r\n }\r\n },\r\n\r\n getData: function (settings) {\r\n if (angular.isString(settings)) {\r\n settings = { url: settings };\r\n }\r\n if (angular.isUndefined(settings.method)) {\r\n settings.method = \"GET\";\r\n }\r\n return utilitySvc.transmitData(settings);\r\n },\r\n\r\n postData: function (settings) {\r\n if (angular.isString(settings)) {\r\n settings = { url: settings };\r\n }\r\n if (angular.isUndefined(settings.method)) {\r\n settings.method = \"POST\";\r\n }\r\n if (angular.isUndefined(settings.contentType)) {\r\n settings.contentType = \"application/json;charset=utf-8\";\r\n }\r\n return utilitySvc.transmitData(settings);\r\n },\r\n\r\n safeApply: function ($scope, apply) {\r\n const phase = $scope.$root.$$phase;\r\n if (phase == '$apply' || phase == '$digest') {\r\n // apply already happening\r\n if (angular.isFunction(apply)) {\r\n return apply($scope);\r\n }\r\n } else {\r\n return $scope.$apply(apply);\r\n }\r\n },\r\n getExceptionMessage: getExceptionMessage,\r\n showLoadingUntilResolved: showLoadingUntilResolved,\r\n alertOnError: alertOnError,\r\n containsInvariant: containsInvariant,\r\n equalsInvariant: equalsInvariant,\r\n debounce: debounce,\r\n queryStringify: queryStringify,\r\n moveItem: moveItem,\r\n getModelStateErrors: getModelStateErrors\r\n };\r\n\r\n return utilitySvc;\r\n\r\n function getModelStateErrors(modelState) {\r\n //Convert the model state dictonary to array and faltten the result\r\n const modelStateArray = [].concat(...Object.values(modelState));\r\n //Remove the duplicate error messages\r\n return [...new Set(modelStateArray)];\r\n }\r\n\r\n function containsInvariant(wholeString, instance) {\r\n return !instance || (wholeString || \"\").toLowerCase().indexOf((instance || \"\").toLowerCase()) > -1;\r\n }\r\n\r\n function equalsInvariant(wholeString, instance) {\r\n return (wholeString || \"\").toLowerCase() === (instance || \"\").toLowerCase();\r\n }\r\n\r\n /**\r\n * Debounce the given function so that it cannot be fired more than once\r\n * over the course of the given timeout.\r\n * @param func The function to be fired.\r\n * @param wait The number of milliseconds to wait before clearing the timeout.\r\n * @param immediate If true, trigger the function on the leading edge.\r\n * @returns The original function wrapped in a debouncer.\r\n */\r\n function debounce(func: (...args: any[]) => any, wait: number, immediate = false): (...args: any) => void {\r\n let timeout;\r\n return function (...args: any[]) {\r\n const context = this;\r\n const later = function () {\r\n timeout = null;\r\n if (!immediate) func.apply(context, args);\r\n };\r\n const callNow = immediate && !timeout;\r\n clearTimeout(timeout);\r\n timeout = setTimeout(later, wait);\r\n if (callNow) func.apply(context, args);\r\n };\r\n }\r\n\r\n /**\r\n * Show a loading spinner until the promise resolves.\r\n * @param {Promise} promise\r\n * @param {any} alertTitle\r\n * @return {Promise} Promise that resolves once the loading spinner is hidden.\r\n */\r\n function showLoadingUntilResolved(promise) {\r\n utilitySvc.showLoading();\r\n return promise.catch(function () { }).then(utilitySvc.hideLoading);\r\n }\r\n\r\n function alertOnError(promise, alertTitle) {\r\n // Capture original context of the alert handler for better logging tracking.\r\n const context = new Error();\r\n return promise.catch(function (ex) {\r\n if (ex instanceof Error) {\r\n // Augment with the alertOnError trace. Drop the alertOnError frame.\r\n ex.stack += \"\\n\" + dropStackFrames(context.stack, 1);\r\n $log.error(ex, alertTitle);\r\n } else {\r\n // Log the context instead of the rejected value to retain original stack trace information.\r\n // Otherwise, the current stack trace is captured, which will be within AngularJS context.\r\n context.message = getExceptionMessage(ex);\r\n $log.error(context, alertTitle, ex);\r\n }\r\n alert(alertTitle + \": \" + getExceptionMessage(ex));\r\n });\r\n }\r\n\r\n /**\r\n * Convert the given query object into a query string\r\n * @param {any} query\r\n * @returns {string} The converted query string.\r\n */\r\n function queryStringify(query) {\r\n if (!query) {\r\n return \"\";\r\n }\r\n return Object.keys(query).reduce(function (qs, key) {\r\n if (query[key] !== undefined && query[key] !== null) {\r\n const prefix = qs ? \"&\" : \"?\";\r\n if (query[key].length !== undefined && query[key].forEach) {\r\n // For list-like objects, append the key for each item in the list.\r\n query[key].forEach(function (item) {\r\n qs += prefix + (key + \"=\" + encodeURIComponent(item))\r\n });\r\n } else {\r\n qs += prefix + (key + \"=\" + encodeURIComponent(query[key]));\r\n\r\n }\r\n }\r\n return qs;\r\n }, \"\");\r\n }\r\n\r\n /**\r\n * Move the given item within the list of items to its new index, in place.\r\n * @param {T[]} items The list of items within which the movedItem has moved.\r\n * @param {T} movedItem The item that has moved.\r\n * @param {number} index The index to which the moved item has moved.\r\n * @template T The generic type of item contained in the list of items.\r\n * @returns {T[]} The mutated original list of items.\r\n */\r\n function moveItem(items, movedItem, index) {\r\n const itemsCopy = items.splice(0, items.length).filter(function (item) {\r\n return item !== movedItem;\r\n });\r\n\r\n for (let i = 0; i < itemsCopy.length + 1; i++) {\r\n if (i === index) {\r\n items.push(movedItem);\r\n }\r\n if (i < itemsCopy.length) {\r\n items.push(itemsCopy[i]);\r\n }\r\n }\r\n return items;\r\n }\r\n}\r\n","import angular from \"angular\";\r\n// Note: this will also inject components at this stage due to coupling between\r\n// the upload service and the UI components.\r\nimport ngFileUpload from \"ng-file-upload\";\r\nimport { EnvironmentModule } from '../env/environment.module';\r\nimport { configureHttpProvider } from \"./blocks/http-provider.config\";\r\nimport { configureSentryUser, configureSentry } from \"./blocks/sentry.config\";\r\nimport { TemplateCacheModule } from \"./cache/template-cache.module\";\r\nimport { FeatureFlagsModule } from \"./feature-flags/feature-flags.module\";\r\nimport { SentryModule } from \"./sentry/sentry.module\";\r\nimport { ApiClientService } from \"./services/api-client.service\";\r\nimport { BankAccountCreationPolicyService } from \"./services/bank-account-creation-policy.service\";\r\nimport { DataServiceModule } from \"./services/data-services/data-service.module\";\r\nimport { PermissionGrantService } from \"./services/data-services/permission-grant.service\";\r\nimport { FileService } from \"./services/file.service\";\r\nimport { InstanceDb } from \"./services/instance-db.service\";\r\nimport { LeadBatchJobTracker } from \"./services/lead-batch-job-tracker.service\";\r\nimport { LocaleService } from \"./services/locale.service\";\r\nimport { PasswordValidatorService } from \"./services/password-validator.service\";\r\nimport { PayrollManualCalculationService } from \"./services/payroll-manual-calculation.service\";\r\nimport { ReportJobTracker } from \"./services/report-job-tracker.service\";\r\nimport { SessionServiceV1 } from \"./services/session-v1.service\";\r\nimport { TimeZoneDetectorService } from \"./services/time-zone-detector.service\";\r\nimport { UtilityServiceFactory } from \"./services/utility.service\";\r\n\r\n/** A module containing core business logic for the application. */\r\nexport const CoreModule = angular\r\n .module(\"apex.core\", [\r\n ngFileUpload,\r\n SentryModule,\r\n // Use the environment defined in the EnvironmentModule\r\n EnvironmentModule,\r\n DataServiceModule,\r\n FeatureFlagsModule,\r\n TemplateCacheModule\r\n ])\r\n .service(\"apiClientService\", ApiClientService)\r\n .service(\"bankAccountCreationPolicyService\", BankAccountCreationPolicyService)\r\n .service(\"fileService\", FileService)\r\n .service(\"instanceDb\", InstanceDb)\r\n .service(\"leadBatchJobTracker\", LeadBatchJobTracker)\r\n .service(\"localeService\", LocaleService)\r\n .service(\"passwordValidatorService\", PasswordValidatorService)\r\n .service(\"payrollManualCalculationService\", PayrollManualCalculationService)\r\n .service(\"permissionGrantService\", PermissionGrantService)\r\n .service(\"reportJobTracker\", ReportJobTracker)\r\n .service(\"sessionService\", SessionServiceV1)\r\n .service(\"timeZoneDetectorService\", TimeZoneDetectorService)\r\n .factory(\"utilityService\", UtilityServiceFactory)\r\n .config(configureHttpProvider)\r\n .config(configureSentry)\r\n .run(configureSentryUser)\r\n .name\r\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","// `RequireObjectCoercible` abstract operation\n// https://tc39.github.io/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","var isObject = require('../internals/is-object');\n\n// `ToPrimitive` abstract operation\n// https://tc39.github.io/ecma262/#sec-toprimitive\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (input, PREFERRED_STRING) {\n if (!isObject(input)) return input;\n var fn, val;\n if (PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n if (typeof (fn = input.valueOf) == 'function' && !isObject(val = fn.call(input))) return val;\n if (!PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","module.exports = false;\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = function (METHOD_NAME, argument) {\n var method = [][METHOD_NAME];\n return !!method && fails(function () {\n // eslint-disable-next-line no-useless-call,no-throw-literal\n method.call(null, argument || function () { throw 1; }, 1);\n });\n};\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","var ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `ToInteger` abstract operation\n// https://tc39.github.io/ecma262/#sec-tointeger\nmodule.exports = function (argument) {\n return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument);\n};\n","var bind = require('../internals/function-bind-context');\nvar IndexedObject = require('../internals/indexed-object');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\nvar push = [].push;\n\n// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex }` methods implementation\nvar createMethod = function (TYPE) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n return function ($this, callbackfn, that, specificCreate) {\n var O = toObject($this);\n var self = IndexedObject(O);\n var boundFunction = bind(callbackfn, that, 3);\n var length = toLength(self.length);\n var index = 0;\n var create = specificCreate || arraySpeciesCreate;\n var target = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;\n var value, result;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n value = self[index];\n result = boundFunction(value, index, O);\n if (TYPE) {\n if (IS_MAP) target[index] = result; // map\n else if (result) switch (TYPE) {\n case 3: return true; // some\n case 5: return value; // find\n case 6: return index; // findIndex\n case 2: push.call(target, value); // filter\n } else if (IS_EVERY) return false; // every\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.forEach` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.foreach\n forEach: createMethod(0),\n // `Array.prototype.map` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.map\n map: createMethod(1),\n // `Array.prototype.filter` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.filter\n filter: createMethod(2),\n // `Array.prototype.some` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.some\n some: createMethod(3),\n // `Array.prototype.every` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.every\n every: createMethod(4),\n // `Array.prototype.find` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.find\n find: createMethod(5),\n // `Array.prototype.findIndex` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.findIndex\n findIndex: createMethod(6)\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar create = require('../internals/object-create');\nvar definePropertyModule = require('../internals/object-define-property');\n\nvar UNSCOPABLES = wellKnownSymbol('unscopables');\nvar ArrayPrototype = Array.prototype;\n\n// Array.prototype[@@unscopables]\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\nif (ArrayPrototype[UNSCOPABLES] == undefined) {\n definePropertyModule.f(ArrayPrototype, UNSCOPABLES, {\n configurable: true,\n value: create(null)\n });\n}\n\n// add a key to Array.prototype[@@unscopables]\nmodule.exports = function (key) {\n ArrayPrototype[UNSCOPABLES][key] = true;\n};\n","var baseClone = require('./_baseClone');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\nfunction cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n}\n\nmodule.exports = cloneDeep;\n","import { IHttpInterceptor, IHttpInterceptorFactory } from \"angular\";\r\n\r\ninterface TClass {\r\n new (...args: any): T;\r\n}\r\n\r\n/**\r\n * Return a factory function that willuse the same dependency injection\r\n * annotations as the constructor of the HttpInterceptor class being created.\r\n * @param tclass The class object to be constructed.\r\n */\r\nexport function HttpInterceptorFactory(tclass: TClass): IHttpInterceptorFactory {\r\n const factory = function(...args: any[]) {\r\n const instance = new tclass(...args);\r\n // AngularJS doesn't treat interceptors as classes, so it doesn't call the interface\r\n // methods with the correct \"this\" bindings. Explicitly bind the methods to the interceptor here.\r\n if (instance.request) {\r\n instance.request = instance.request.bind(instance);\r\n }\r\n if (instance.requestError) {\r\n instance.requestError = instance.requestError.bind(instance);\r\n }\r\n if (instance.response) {\r\n instance.response = instance.response.bind(instance);\r\n }\r\n if (instance.responseError) {\r\n instance.responseError = instance.responseError.bind(instance);\r\n }\r\n return instance;\r\n }\r\n factory.$inject = tclass.$inject;\r\n return factory;\r\n}\r\n","import { containsInvariant } from \"./filter-util\";\r\n\r\nexport class PasswordValidatorService {\r\n constructor($http, $q, apexApiUrl) {\r\n 'ngInject';\r\n this.$http = $http;\r\n this.$q = $q;\r\n this.apexApiUrl = apexApiUrl;\r\n this.cachedValidator = null;\r\n }\r\n\r\n /**\r\n * Retrieve a password validator for a particular user.\r\n */\r\n retrievePasswordValidator(user) {\r\n if (this.cachedValidator) {\r\n return this.$q.resolve(this.cachedValidator);\r\n }\r\n return this.$http({\r\n method: \"GET\",\r\n url: `${this.apexApiUrl}/home/password-validator`,\r\n disableApexAuthInterceptor: true\r\n }).then(response => mapRules(response.data, user))\r\n .then(rules => this.cachedValidator = new PasswordValidator(rules));\r\n }\r\n}\r\n\r\n/**\r\n * An abstract password validation rule that can be required.\r\n */\r\nexport class PasswordValidationRule {\r\n /**\r\n * Initialize a password validation rule with base abstract logic.\r\n * @param {boolean} required Indicate if the rule is required. If not required, the\r\n * rule can still be satisfied to represent increased security, but it will not be enforced.\r\n */\r\n constructor(required) {\r\n this._required = required;\r\n }\r\n\r\n isRequired() {\r\n return !!this._required;\r\n }\r\n\r\n isSatisfiedBy(password) {\r\n throw new Error(\"isSatisfiedBy must be implemented by a subclass\");\r\n }\r\n}\r\n\r\n/**\r\n * A rule that a password cannot contain the user's first or last name.\r\n */\r\nexport class CheckPasswordContainsNameRule extends PasswordValidationRule {\r\n /**\r\n * Initialize the rule for checking if a user's password contains their name.\r\n * @param {boolean} required Indicates if the rule is required.\r\n * @param {{FirstName: string, LastName: string}} user A user with a first and last name.\r\n * @param {number} minimumNameLength Skip validation if the user's name is below a certain length.\r\n */\r\n constructor(required, user, minimumNameLength) {\r\n super(required)\r\n this.user = user;\r\n this.minimumNameLength = minimumNameLength;\r\n this.description = `Cannot contain the user's first or last names`;\r\n }\r\n\r\n /**\r\n * Return true if the user's password does not contain the user's name.\r\n * @param {string} password The user's desired password\r\n */\r\n isSatisfiedBy(password) {\r\n const names = [this.user.FirstName, this.user.LastName]\r\n .filter(p => (this.minimumNameLength || this.minimumNameLength === 0)\r\n && (p || \"\").length > this.minimumNameLength);\r\n return names.reduce((all, name) => all && !containsInvariant(password, name || \"\"), true);\r\n }\r\n}\r\n\r\n/**\r\n * A rule that a password must contain a digit.\r\n */\r\nexport class RequireDigitRule extends PasswordValidationRule {\r\n constructor(required) {\r\n super(required);\r\n this.description = \"At least one digit (0-9)\";\r\n }\r\n\r\n isSatisfiedBy(password) {\r\n return /[0-9]/.test(password);\r\n }\r\n}\r\n\r\n/**\r\n * A rule that a password must contain an uppercase letter.\r\n */\r\nexport class RequireUppercaseRule extends PasswordValidationRule {\r\n constructor(required) {\r\n super(required);\r\n this.description = \"At least one uppercase letter (A-Z)\";\r\n }\r\n isSatisfiedBy(password) {\r\n return /[A-Z]/.test(password);\r\n }\r\n}\r\n\r\nexport class RequireLowercaseRule extends PasswordValidationRule {\r\n constructor(required) {\r\n super(required);\r\n this.description = \"At least one lowercase letter (a-z)\";\r\n }\r\n isSatisfiedBy(password) {\r\n return /[a-z]/.test(password);\r\n }\r\n}\r\n\r\nexport class RequireSpecialCharacterRule extends PasswordValidationRule {\r\n constructor(required) {\r\n super(required);\r\n this.description = \"At least one special character (non letter or number)\";\r\n }\r\n isSatisfiedBy(password) {\r\n return /[^a-zA-Z0-9]/.test(password);\r\n }\r\n}\r\n\r\nexport class MinLengthRule extends PasswordValidationRule {\r\n constructor(required, length) {\r\n super(required);\r\n this.length = length;\r\n this.description = `At least ${this.length} characters long`;\r\n }\r\n\r\n isSatisfiedBy(password) {\r\n return (password || \"\").length >= this.length;\r\n }\r\n}\r\n\r\nexport class MaxLengthRule extends PasswordValidationRule {\r\n constructor(required, length) {\r\n super(required);\r\n this.length = length;\r\n this.description = `${this.length} or fewer characters long`;\r\n }\r\n\r\n isSatisfiedBy(password) {\r\n return (password || \"\").length <= this.length;\r\n }\r\n}\r\n\r\nfunction mapRules(rules, user) {\r\n const validationRules = [];\r\n // The following two rules are inherently satisfied by a blank password, so display them at the top.\r\n if (user) {\r\n validationRules.push(new CheckPasswordContainsNameRule(rules.CheckPasswordContainName,\r\n user, rules.MinValToCheckName));\r\n }\r\n if (rules.MaxLength) {\r\n validationRules.push(new MaxLengthRule(true, rules.MaxLength))\r\n }\r\n validationRules.push(new MinLengthRule(true, rules.RequiredLength));\r\n validationRules.push(new RequireDigitRule(rules.RequireDigit));\r\n validationRules.push(new RequireLowercaseRule(rules.RequireLowercase));\r\n validationRules.push(new RequireUppercaseRule(rules.RequireUppercase));\r\n validationRules.push(new RequireSpecialCharacterRule(rules.RequireNonLetterOrDigit));\r\n\r\n // Also push a hidden \"minlength=maxlength\" to make passwords at the max length considered most secure\r\n validationRules.push(new MinLengthRule(false, rules.MaxLength || rules.RequiredLength));\r\n return validationRules;\r\n}\r\n\r\nexport class PasswordValidator {\r\n constructor(validationRules) {\r\n this.validationRules = validationRules;\r\n }\r\n\r\n validate(password) {\r\n return this.validationRules.reduce((all, rule) => all && (!rule.isRequired()\r\n || rule.isSatisfiedBy(password)), true);\r\n }\r\n\r\n calculateStrength(password) {\r\n // By default, if no rules are specified, scale strength based on length.\r\n return this.validationRules.length === 0\r\n ? Math.min(1, password.length / 12) // Consider 12 characters as \"strongest\"\r\n : this.validationRules.reduce((count, rule) => count\r\n + (rule.isSatisfiedBy(password || \"\") ? 1 : 0), 0)\r\n / this.validationRules.length;\r\n }\r\n}\r\n","export function getHexColorByHue(hue) {\r\n switch (hue) {\r\n case androidHues.HUE_AZURE:\r\n return \"#03A9F4\"\r\n case androidHues.HUE_BLUE:\r\n return \"#1565C0\"\r\n case androidHues.HUE_CYAN:\r\n return \"#00838F\"\r\n case androidHues.HUE_GREEN:\r\n return \"#2E7D32\"\r\n case androidHues.HUE_MAGENTA:\r\n return \"#9C27B0\"\r\n case androidHues.HUE_ORANGE:\r\n return \"#EF6C00\"\r\n case androidHues.HUE_RED:\r\n return \"#c62828\"\r\n case androidHues.HUE_ROSE:\r\n return \"#E91E63\"\r\n case androidHues.HUE_VIOLET:\r\n return \"#673AB7\"\r\n case androidHues.HUE_YELLOW:\r\n return \"#FDD835\"\r\n default:\r\n // Return \"black\" indicating unmapped status.\r\n return \"#212121\"\r\n }\r\n}\r\n\r\n/**\r\n * An enum of hue values assignable from Android.\r\n * See: https://developers.google.com/android/reference/com/google/android/gms/maps/model/BitmapDescriptorFactory.html#HUE_AZURE\r\n */\r\nexport const androidHues = {\r\n HUE_AZURE: 210,\r\n HUE_BLUE: 240,\r\n HUE_CYAN: 180,\r\n HUE_GREEN: 120,\r\n HUE_MAGENTA: 300,\r\n HUE_ORANGE: 30,\r\n HUE_RED: 0,\r\n HUE_ROSE: 330,\r\n HUE_VIOLET: 270,\r\n HUE_YELLOW: 60\r\n}\r\n","var path = require('../internals/path');\nvar global = require('../internals/global');\n\nvar aFunction = function (variable) {\n return typeof variable == 'function' ? variable : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global[namespace])\n : path[namespace] && path[namespace][method] || global[namespace] && global[namespace][method];\n};\n","var classof = require('../internals/classof-raw');\n\n// `IsArray` abstract operation\n// https://tc39.github.io/ecma262/#sec-isarray\nmodule.exports = Array.isArray || function isArray(arg) {\n return classof(arg) == 'Array';\n};\n","var defineProperty = require('../internals/object-define-property').f;\nvar has = require('../internals/has');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (it, TAG, STATIC) {\n if (it && !has(it = STATIC ? it : it.prototype, TO_STRING_TAG)) {\n defineProperty(it, TO_STRING_TAG, { configurable: true, value: TAG });\n }\n};\n","var aFunction = require('../internals/a-function');\n\n// optional / simple context binding\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 0: return function () {\n return fn.call(that);\n };\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","'use strict';\nvar toPrimitive = require('../internals/to-primitive');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = function (object, key, value) {\n var propertyKey = toPrimitive(key);\n if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));\n else object[propertyKey] = value;\n};\n","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","require('./dist/ng-file-upload-all');\nmodule.exports = 'ngFileUpload';","var isObject = require('./isObject'),\n now = require('./now'),\n toNumber = require('./toNumber');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nmodule.exports = debounce;\n","import { isRegExp, isString } from './is';\n/**\n * Truncates given string to the maximum characters count\n *\n * @param str An object that contains serializable values\n * @param max Maximum number of characters in truncated string\n * @returns string Encoded\n */\nexport function truncate(str, max) {\n if (max === void 0) { max = 0; }\n if (typeof str !== 'string' || max === 0) {\n return str;\n }\n return str.length <= max ? str : str.substr(0, max) + \"...\";\n}\n/**\n * This is basically just `trim_line` from\n * https://github.com/getsentry/sentry/blob/master/src/sentry/lang/javascript/processor.py#L67\n *\n * @param str An object that contains serializable values\n * @param max Maximum number of characters in truncated string\n * @returns string Encoded\n */\nexport function snipLine(line, colno) {\n var newLine = line;\n var ll = newLine.length;\n if (ll <= 150) {\n return newLine;\n }\n if (colno > ll) {\n // eslint-disable-next-line no-param-reassign\n colno = ll;\n }\n var start = Math.max(colno - 60, 0);\n if (start < 5) {\n start = 0;\n }\n var end = Math.min(start + 140, ll);\n if (end > ll - 5) {\n end = ll;\n }\n if (end === ll) {\n start = Math.max(end - 140, 0);\n }\n newLine = newLine.slice(start, end);\n if (start > 0) {\n newLine = \"'{snip} \" + newLine;\n }\n if (end < ll) {\n newLine += ' {snip}';\n }\n return newLine;\n}\n/**\n * Join values in array\n * @param input array of values to be joined together\n * @param delimiter string to be placed in-between values\n * @returns Joined values\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function safeJoin(input, delimiter) {\n if (!Array.isArray(input)) {\n return '';\n }\n var output = [];\n // eslint-disable-next-line @typescript-eslint/prefer-for-of\n for (var i = 0; i < input.length; i++) {\n var value = input[i];\n try {\n output.push(String(value));\n }\n catch (e) {\n output.push('[value cannot be serialized]');\n }\n }\n return output.join(delimiter);\n}\n/**\n * Checks if the value matches a regex or includes the string\n * @param value The string value to be checked against\n * @param pattern Either a regex or a string that must be contained in value\n */\nexport function isMatchingPattern(value, pattern) {\n if (!isString(value)) {\n return false;\n }\n if (isRegExp(pattern)) {\n return pattern.test(value);\n }\n if (typeof pattern === 'string') {\n return value.indexOf(pattern) !== -1;\n }\n return false;\n}\n//# sourceMappingURL=string.js.map","/**\r\n * An enum of error types returned on a rejected transition.\r\n */\r\nexport const REJECT_TYPE = {\r\n /** Rejection type used when the transition is superseded by another */\r\n SUPERSEDED: 2,\r\n /** General error resulting from a rejected resolve value. */\r\n ERROR: 6\r\n}\r\n","var NATIVE_WEAK_MAP = require('../internals/native-weak-map');\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar objectHas = require('../internals/has');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP) {\n var store = new WeakMap();\n var wmget = store.get;\n var wmhas = store.has;\n var wmset = store.set;\n set = function (it, metadata) {\n wmset.call(store, it, metadata);\n return metadata;\n };\n get = function (it) {\n return wmget.call(store, it) || {};\n };\n has = function (it) {\n return wmhas.call(store, it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return objectHas(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return objectHas(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n","var anObject = require('../internals/an-object');\nvar defineProperties = require('../internals/object-define-properties');\nvar enumBugKeys = require('../internals/enum-bug-keys');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar html = require('../internals/html');\nvar documentCreateElement = require('../internals/document-create-element');\nvar sharedKey = require('../internals/shared-key');\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n activeXDocument.write(scriptTag(''));\n activeXDocument.close();\n var temp = activeXDocument.parentWindow.Object;\n activeXDocument = null; // avoid memory leak\n return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = documentCreateElement('iframe');\n var JS = 'java' + SCRIPT + ':';\n var iframeDocument;\n iframe.style.display = 'none';\n html.appendChild(iframe);\n // https://github.com/zloirock/core-js/issues/475\n iframe.src = String(JS);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(scriptTag('document.F=Object'));\n iframeDocument.close();\n return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n try {\n /* global ActiveXObject */\n activeXDocument = document.domain && new ActiveXObject('htmlfile');\n } catch (error) { /* ignore */ }\n NullProtoObject = activeXDocument ? NullProtoObjectViaActiveX(activeXDocument) : NullProtoObjectViaIFrame();\n var length = enumBugKeys.length;\n while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.github.io/ecma262/#sec-object.create\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n EmptyConstructor[PROTOTYPE] = anObject(O);\n result = new EmptyConstructor();\n EmptyConstructor[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = NullProtoObject();\n return Properties === undefined ? result : defineProperties(result, Properties);\n};\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","import { AdjustDivisionRotationsRequest, Rotation, DivisionsProfileRotationRM } from '@herbjoy/apex-api-models';\r\nimport { IHttpService, IPromise } from 'angular';\r\nimport moment from 'moment';\r\n\r\nexport interface DivisionProfileRotationQuery {\r\n /**\r\n * If given, filter based on one or more provided division profiles.\r\n */\r\n divisionProfileID: number | number[];\r\n}\r\n\r\nexport function sortRotationDesc(a: Rotation, b: Rotation) {\r\n if (moment(a.StartDate).isAfter(b.StartDate)) {\r\n return -1;\r\n } else if (moment(a.StartDate).isBefore(b.StartDate)) {\r\n return 1;\r\n }\r\n if (moment(a.EndDate).isAfter(b.EndDate)) {\r\n return -1;\r\n } else if (moment(a.EndDate).isBefore(b.EndDate)) {\r\n return 1;\r\n }\r\n}\r\n\r\nfunction mapRotationToDateString(rotation: Rotation) {\r\n return {\r\n StartDate: moment(rotation.StartDate).format(\"YYYY-MM-DD\"),\r\n EndDate: moment(rotation.EndDate).format(\"YYYY-MM-DD\")\r\n }\r\n}\r\n\r\nexport class RotationsService {\r\n constructor(private $http: IHttpService, private apexApiUrl: string) {\r\n 'ngInject'\r\n }\r\n\r\n retrieveDivisionRotations(query: DivisionProfileRotationQuery) {\r\n return this.$http({\r\n method: \"GET\",\r\n url: `${this.apexApiUrl}division-profiles/rotations`,\r\n headers: { Accept: \"application/json\" },\r\n params: query\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n adjustDivisionRotations(divisionProfileID: number, adjustments: AdjustDivisionRotationsRequest): IPromise {\r\n const request = {\r\n DivisionProfileID: divisionProfileID,\r\n // Map dates to a simple date component to avoid sending timezone info.\r\n AdjustedRotations: adjustments.AdjustedRotations.map(function (adjustment) {\r\n return {\r\n CurrentRotation: mapRotationToDateString(adjustment.CurrentRotation),\r\n NewRotation: mapRotationToDateString(adjustment.NewRotation)\r\n }\r\n }),\r\n NewRotations: adjustments.NewRotations.map(mapRotationToDateString),\r\n DeletedRotations: adjustments.DeletedRotations.map(mapRotationToDateString),\r\n RetainedTimeEntries: adjustments.RetainedTimeEntries,\r\n IgnoreLockedPayrolls: adjustments.IgnoreLockedPayrolls\r\n };\r\n\r\n return this.$http({\r\n method: \"PATCH\",\r\n url: `${this.apexApiUrl}division-profiles/${divisionProfileID}/rotations`,\r\n data: request,\r\n headers: { Accept: \"application/json\", \"Content-Type\": \"application/json\" }\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n}\r\n","import angular from \"angular\"\r\n\r\n/**\r\n * A separate module used by the ngtemplate-loader to specify templates.\r\n * This module should be refreshed after lazy-loading.\r\n */\r\nexport const TemplateCacheModule = angular\r\n .module(\"apex.core.templateCache\", [])\r\n .name;\r\n","import { PagedEntityList, PayrollCalculationsInputResponse, PayrollCalculationsResponse, PayrollEntryEmployeeResponse, PayrollEntryResponse, PayrollListItem, PayrollResponse, PayrollRotation, PayrollTypeModel, PayrollEntryDTO, PayrollEntryManualRequest, IStatementOfEarnings, ProgramStorePair, PayFrequency, PayWeekRM, PayrollAnalysis, PayrollAnalysisSummary, ModuleEnum, PayrollIcdCorporation } from '@herbjoy/apex-api-models';\r\nimport { IHttpService, IPromise, IQService } from 'angular';\r\nimport moment from 'moment';\r\n\r\nexport const PayrollTypeEnum = {\r\n AdvanceWage: 1,\r\n CommissionAboveThreshold: 2,\r\n CommissionExceedingGuaranteed: 3,\r\n PieceBased: 4\r\n};\r\n\r\ntype PayrollEntryCalculationsVM = PayrollEntryResponse & { Employee: PayrollEntryEmployeeResponse };\r\n\r\ntype PayrollCalculationsVM = Omit & {\r\n PayrollEntries: PayrollEntryCalculationsVM[];\r\n};\r\n\r\nconst apiHeaders = {\r\n Accept: 'application/json'\r\n};\r\n\r\nexport class PayrollService {\r\n constructor(private $http: IHttpService, private $q: IQService, private apexApiUrl: string) {\r\n 'ngInject'\r\n }\r\n\r\n /**\r\n * Retrieve the list of all payroll types in the system.\r\n * @returns A promise that resolves to the payroll types list.\r\n */\r\n retrievePayrollTypes(): IPromise {\r\n return this.$http({\r\n method: \"GET\",\r\n url: this.apexApiUrl + \"payroll-types/\",\r\n headers: apiHeaders\r\n })\r\n .then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n /**\r\n * Retrieve all payrolls that the user can access.\r\n * @returns A promise the resolves to the payroll list.\r\n */\r\n retrievePayrolls(query): IPromise {\r\n return this.$http({\r\n method: \"GET\",\r\n url: `${this.apexApiUrl}/payrolls`,\r\n params: query\r\n })\r\n .then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n /**\r\n * Retrieve a page of payroll results based on the given query filters\r\n * and pagination settings.\r\n * @param {any} query A query used to filter results.\r\n * @param {number} pageIndex The initial page index to show in results.\r\n * @param {number} pageSize The page size used to page results.\r\n */\r\n retrievePayrollsPage(query, pageIndex, pageSize): IPromise> {\r\n return this.$http>({\r\n method: \"GET\",\r\n headers: apiHeaders,\r\n url: `${this.apexApiUrl}/payrolls/page/${pageIndex}`,\r\n params: {\r\n ...query,\r\n pageSize\r\n }\r\n }).then(response => response.data)\r\n }\r\n\r\n /**\r\n * Retrieve all payrolls that the processor can access.\r\n * @returns A promise the resolves to the payroll list.\r\n */\r\n retrievePayrollsForProcessors() {\r\n return this.$http.get(this.apexApiUrl + \"payrolls/processing\")\r\n .then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n /**\r\n * Retrieve all payrolls that the processor can access.\r\n * @param {any} query The queries used to filter results\r\n * @param {number} pageIndex The page index used to get results.\r\n * @param {number} pageSize The maximum number of results to return.\r\n * @returns A promise the resolves to the payroll list.\r\n */\r\n retrievePayrollsPageForProcessors(query, pageIndex, pageSize): IPromise> {\r\n return this.$http>({\r\n method: \"GET\",\r\n url: `${this.apexApiUrl}/payrolls/processing/page/${pageIndex}`,\r\n params: {\r\n ...query,\r\n pageSize\r\n }\r\n }).then(response => response.data)\r\n }\r\n\r\n /**\r\n * Retrieve all payrolls that the user can access belonging to the given corporation\r\n * @param icdCorporationID {Number} The corporation ID of the company payroll list that will be retrieved.\r\n * @returns A promise that resolve to the payroll list.\r\n */\r\n retrieveIcdCorporationPayrolls(icdCorporationID): IPromise {\r\n if (!icdCorporationID) {\r\n // Show every week.\r\n return this.$q.resolve([]);\r\n }\r\n\r\n return this.$http({\r\n method: \"GET\",\r\n url: this.apexApiUrl + \"payrolls/icd-corporation/\" + icdCorporationID,\r\n headers: apiHeaders\r\n })\r\n .then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n /**\r\n * Retrieve the fully computed payroll for the authenticated user's company for the given pay week ID.\r\n * @param payrollID the payroll id of the payroll to retrieve.\r\n * @returns A promise that resolves to the requested payroll.\r\n */\r\n retrievePayroll(payrollID): IPromise {\r\n if (!payrollID) {\r\n return this.$q.when(null);\r\n }\r\n return this.$http({\r\n method: \"GET\",\r\n url: this.apexApiUrl + \"payrolls/\" + payrollID,\r\n headers: apiHeaders\r\n })\r\n .then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n retrievePayrollCalculationsInput(payrollID) {\r\n return this.$http({\r\n method: \"GET\",\r\n url: `${this.apexApiUrl}/payrolls/${payrollID}/calculations/input`,\r\n })\r\n .then(response => response.data);\r\n }\r\n\r\n calculatePayrollTotals(payrollID, payrollInput) {\r\n // Remove local time component from any date objects.\r\n const data = {\r\n ...payrollInput,\r\n StartDate: moment(payrollInput.StartDate).format(\"YYYY-MM-DD\"),\r\n EndDate: moment(payrollInput.EndDate).format(\"YYYY-MM-DD\"),\r\n PayPeriods: payrollInput.PayPeriods.map(p => ({\r\n ...p,\r\n StartDate: moment(p.StartDate).format(\"YYYY-MM-DD\"),\r\n EndDate: moment(p.EndDate).format(\"YYYY-MM-DD\"),\r\n ManualSubmission: !p.ManualSubmission ? null : {\r\n ...p.ManualSubmission,\r\n ExtraShowHours: p.ManualSubmission.ExtraShowHours.map(q => ({\r\n ...q,\r\n Date: moment(q.Date).format(\"YYYY-MM-DD\")\r\n }))\r\n }\r\n })),\r\n PayDateDurations: payrollInput.PayDateDurations.map(p => ({\r\n ...p,\r\n Date: moment(p.Date).format(\"YYYY-MM-DD\")\r\n })),\r\n RSCommissionAmounts: payrollInput.RSCommissionAmounts.map(p => ({\r\n ...p,\r\n ScheduleDate: moment(p.ScheduleDate).format(\"YYYY-MM-DD\")\r\n }))\r\n };\r\n return this.$http({\r\n method: \"POST\",\r\n url: `${this.apexApiUrl}/payrolls/${payrollID}/calculations`,\r\n data\r\n })\r\n .then(response => response.data)\r\n .then((calculations: PayrollCalculationsVM) => {\r\n // Denormalize the relational data.\r\n for (const entry of calculations.PayrollEntries) {\r\n entry.Employee = calculations.Employees.find(p => p.EmployeeID === entry.EmployeeID);\r\n }\r\n return calculations;\r\n });\r\n }\r\n\r\n /**\r\n * Get the list of pay week rotations.\r\n * @param query\r\n */\r\n retrieveRotations(query: { icdCorporationID: number }) {\r\n return this.$http({\r\n method: \"GET\",\r\n url: this.apexApiUrl + \"rotations\",\r\n params: query,\r\n headers: apiHeaders\r\n })\r\n .then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n /**\r\n * Save changes for the given payroll entry belonging to the given payroll.\r\n * @param payrollID The id of the payroll.\r\n * @param payrollEntry The modified payroll entry.\r\n * @returns A promise that resolves when the update is complete.\r\n */\r\n savePayrollEntry(payrollID: number, payrollEntry: PayrollEntryDTO) {\r\n const dto = mapPayrollEntryToDTO(payrollEntry);\r\n return this.$http({\r\n method: \"PUT\",\r\n url: this.apexApiUrl + \"payrolls/\" + payrollID + \"/entries/\" + payrollEntry.PayPeriodID,\r\n headers: {\r\n \"Content-Type\": \"application/json\"\r\n },\r\n data: dto\r\n });\r\n }\r\n\r\n /**\r\n * Save changes to the given payroll's memo field.\r\n * @param payrollID\r\n * @param memo The new text to put in the memo field.\r\n * @returns A promise that resolves when the update is complete.\r\n */\r\n savePayrollMemo(payrollID: number, memo: string) {\r\n return this.$http({\r\n method: \"PUT\",\r\n url: this.apexApiUrl + \"payrolls/\" + payrollID + \"/memo\",\r\n headers: {\r\n \"Content-Type\": \"application/json\"\r\n },\r\n data: JSON.stringify(memo)\r\n });\r\n }\r\n\r\n savePayrollManualRequests(payrollID: number, manualRequests: PayrollEntryManualRequest[]) {\r\n const data = manualRequests.map(function (request) {\r\n return {\r\n PayPeriodID: request.PayPeriodID,\r\n IsProcessedByAdp: request.IsProcessedByAdp\r\n };\r\n });\r\n\r\n return this.$http({\r\n method: \"PATCH\",\r\n url: this.apexApiUrl + \"payrolls/\" + payrollID + \"/manual-requests\",\r\n headers: {\r\n \"Content-Type\": \"application/json\"\r\n },\r\n data: data\r\n });\r\n }\r\n\r\n /**\r\n * Lock the payroll with the given ID.\r\n * @param payrollID\r\n * @returns A promise that resolves when the update is complete.\r\n */\r\n submitPayroll(payrollID: number) {\r\n return this.savePayrollLocked(payrollID, true);\r\n }\r\n\r\n /**\r\n * Unlock the payroll with the given ID.\r\n * @param payrollID\r\n * @returns A promise that resolves when the update is complete.\r\n */\r\n unlockPayroll(payrollID: number) {\r\n return this.savePayrollLocked(payrollID, false);\r\n }\r\n\r\n savePayrollVisible(payrollID: number, visible: boolean) {\r\n return this.$http({\r\n method: \"PUT\",\r\n url: this.apexApiUrl + \"payrolls/\" + payrollID + \"/visible/\" + visible,\r\n headers: {\r\n \"Content-Type\": \"application/json\"\r\n },\r\n data: \"{}\"\r\n });\r\n }\r\n\r\n /**\r\n * Update whether the payroll with the given ID is locked.\r\n * @param payrollID\r\n * @param locked {Boolean} The requested submitted or submitted state for the payroll.\r\n * @returns A promise that resolves when the update is complete.\r\n */\r\n savePayrollLocked(payrollID: number, locked: boolean) {\r\n return this.$http({\r\n method: \"PUT\",\r\n url: this.apexApiUrl + \"payrolls/\" + payrollID + \"/locked/\" + locked,\r\n headers: {\r\n \"Content-Type\": \"application/json\"\r\n },\r\n data: \"{}\"\r\n });\r\n }\r\n\r\n /**\r\n * Update whether the payroll with the given ID is disclosed to employees.\r\n * @param payrollID\r\n * @param disclosed {Boolean} Whether or not the payroll should be updated to be disclosed.\r\n * @returns A promise that resolves when the update is complete.\r\n */\r\n savePayrollDisclosed(payrollID: number, disclosed: boolean) {\r\n return this.$http({\r\n method: \"PUT\",\r\n url: this.apexApiUrl + \"payrolls/\" + payrollID + \"/disclosed/\" + disclosed,\r\n headers: {\r\n \"Content-Type\": \"application/json\"\r\n },\r\n data: \"{}\"\r\n });\r\n }\r\n\r\n /**\r\n * Assign the given employee as a payroll admin for the given payroll.\r\n * @returns A promise that resolves when the update is complete.\r\n */\r\n assignPayrollAdmin(payrollID: number, employeeID: number) {\r\n return this.$http({\r\n method: \"POST\",\r\n url: this.apexApiUrl + \"payrolls/\" + payrollID + \"/admins\",\r\n headers: {\r\n \"Content-Type\": \"application/json\"\r\n },\r\n data: JSON.stringify(employeeID)\r\n });\r\n }\r\n\r\n /**\r\n * Unassign the given employee from being the payroll admin for the given payroll.\r\n * @returns A promise that resolve when the update is complete.\r\n */\r\n unassignPayrollAdmin(payrollID: number, employeeID: number) {\r\n return this.$http({\r\n method: \"DELETE\",\r\n url: this.apexApiUrl + \"payrolls/\" + payrollID + \"/admins/\" + employeeID,\r\n // Yet another hack to get around weird behaviour in Chrome (it fails the CORS preflight otherwise):\r\n headers: {\r\n \"Content-Type\": \"application/json\"\r\n },\r\n data: {}\r\n });\r\n }\r\n\r\n /**\r\n * Update whether the payroll with the given ID is in a pending state where external\r\n * acknowledgments need to be made before work can continue.\r\n * @param payrollID\r\n * @param pending Whether or not the payroll should be updated to be pending.\r\n * @returns A promise that resolves when the update is complete.\r\n */\r\n savePayrollPending(payrollID: number, pending: boolean) {\r\n return this.$http({\r\n method: \"PUT\",\r\n url: this.apexApiUrl + \"payrolls/\" + payrollID + \"/pending/\" + pending,\r\n headers: {\r\n \"Content-Type\": \"application/json\"\r\n },\r\n data: \"{}\"\r\n });\r\n }\r\n\r\n /**\r\n * Update whether the payroll with the given ID has been processed internally and should\r\n * now be considered complete.\r\n * @param payrollID\r\n * @param completed Whether or not the payroll should be updated to be completed.\r\n * @returns A promise that resolves when the update is complete.\r\n */\r\n savePayrollCompleted(payrollID: number, completed: boolean) {\r\n return this.$http({\r\n method: \"PUT\",\r\n url: this.apexApiUrl + \"payrolls/\" + payrollID + \"/completed/\" + completed,\r\n headers: {\r\n \"Content-Type\": \"application/json\"\r\n },\r\n data: \"{}\"\r\n });\r\n }\r\n\r\n /**\r\n * Dismiss the notification that the given payroll is still pending.\r\n * @param {number} payrollID The payroll for which the notification will be dismissed.\r\n */\r\n dismissPayrollPendingMessage(payrollID: number) {\r\n return this.$http.post(this.apexApiUrl + \"payrolls/pending/\" + payrollID + \"/dismissals\", {});\r\n }\r\n\r\n /**\r\n * Dismiss the notification that the given payroll is submitted.\r\n * @param {number} payrollID The payroll for which the notification will be dismissed\r\n */\r\n dismissPayrollSubmittedMessage(payrollID: number) {\r\n return this.$http.post(this.apexApiUrl + \"payrolls/submitted/\" + payrollID + \"/dismissals\", {});\r\n }\r\n\r\n /**\r\n * Retrieve the statement of earnings containing the commissions data and daily breakdown\r\n * for the given pay week, program, and store.\r\n */\r\n retrieveStatementOfEarnings(payrollID, programID, storeID, filteredEmployeeID) {\r\n return this.$http({\r\n method: \"GET\",\r\n url: this.apexApiUrl + \"payroll/\" + payrollID + \"/statement-of-earnings\"\r\n + \"?programID=\" + programID + \"&storeID=\" + storeID + \"&filteredEmployeeID=\" + filteredEmployeeID,\r\n headers: apiHeaders\r\n })\r\n .then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n /**\r\n * Retrieve the collection of programs and stores that have time entered or commissionable\r\n * sales for the given pay week as a pair.\r\n */\r\n retrieveActiveProgramStorePairs(payrollID, filteredEmployeeID) {\r\n return this.$http({\r\n method: \"GET\",\r\n url: this.apexApiUrl + \"payroll/\" + payrollID + \"/active-program-store-pairs\"\r\n + (filteredEmployeeID ? \"?filteredEmployeeID=\" + filteredEmployeeID : \"\"),\r\n headers: apiHeaders\r\n })\r\n .then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n retrievePayFrequencies() {\r\n return this.$http.get(this.apexApiUrl + \"pay-frequencies\")\r\n .then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n /**\r\n * @deprecated\r\n */\r\n retrievePayWeeks() {\r\n return this.$http.get(this.apexApiUrl + \"payroll/payweeks\")\r\n .then(response => response.data);\r\n }\r\n\r\n retrievePayrollAnalysisSummary(startDate, endDate, programID, retailerID, owner) {\r\n const params: any = {};\r\n if (startDate) {\r\n params.startDate = moment(startDate).format(\"YYYY-MM-DD\");\r\n }\r\n if (endDate) {\r\n params.endDate = moment(endDate).format(\"YYYY-MM-DD\");\r\n }\r\n if (programID) {\r\n params.programID = programID;\r\n }\r\n if (retailerID) {\r\n params.retailerID = retailerID;\r\n }\r\n if (owner) {\r\n params.owner = owner;\r\n }\r\n\r\n return this.$http({\r\n method: \"GET\",\r\n url: this.apexApiUrl + \"payrolls/summary\",\r\n params: params\r\n })\r\n .then(function (response) {\r\n return response.data;\r\n })\r\n }\r\n\r\n retrievePayrollAnalysis(payrollID, programID, retailerID, storeID) {\r\n const params: any = {};\r\n if (programID) {\r\n params.programID = programID;\r\n }\r\n if (retailerID) {\r\n params.retailerID = retailerID;\r\n }\r\n if (storeID) {\r\n params.storeID = storeID;\r\n }\r\n\r\n return this.$http({\r\n method: \"GET\",\r\n url: this.apexApiUrl + \"payrolls/\" + payrollID + \"/analysis\",\r\n params: params\r\n })\r\n .then(function (response) {\r\n return response.data;\r\n })\r\n }\r\n\r\n /**\r\n * Get the list of pay periods where the given employee appeared on the payroll.\r\n * @param employeeID The employee whose pay periods will be returned\r\n * @param module Include employees within a specific module, if the user is\r\n * a module admin.\r\n * @param locked Filter by whether the payroll is locked or not\r\n * @param time If true, only include payrolls where the employee entered time.\r\n */\r\n retrievePayPeriods(employeeID: number, module: ModuleEnum, locked?: boolean, time?: boolean) {\r\n return this.$http({\r\n method: \"GET\",\r\n url: this.apexApiUrl + \"pay-periods/employee/\" + employeeID,\r\n params: {\r\n module,\r\n locked,\r\n time\r\n }\r\n })\r\n .then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n /**\r\n * Retrive all corporation having active payroll\r\n */\r\n retrieveAllPayrollCorporations() {\r\n\r\n return this.$http({\r\n method: \"GET\",\r\n url: this.apexApiUrl + \"payrolls/icd-corporations\",\r\n headers: { Accept: \"application/json\" }\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n}\r\n\r\n\r\n/**\r\n * Create a serializable DTO from the client-side payroll entry object\r\n * that only contains the fields that can be updated through the API.\r\n * @returns The DTO containing the payroll entry's attributes.\r\n */\r\nfunction mapPayrollEntryToDTO(payrollEntry) {\r\n return {\r\n PayPeriodID: payrollEntry.PayPeriodID,\r\n IsPaidGuaranteed: payrollEntry.IsPaidGuaranteed,\r\n IsPaidCommission: payrollEntry.IsPaidCommission,\r\n ExtraHoursWorked: payrollEntry.ExtraHoursWorked,\r\n ManualCommissionAmount: payrollEntry.ManualCommissionAmount,\r\n Salary: payrollEntry.Salary === payrollEntry.DefaultSalary ? null : payrollEntry.Salary,\r\n CommissionThreshold: payrollEntry.CommissionThreshold,\r\n ContractorPayment: payrollEntry.ContractorPayment === payrollEntry.DefaultContractorPayment\r\n ? null : payrollEntry.ContractorPayment,\r\n Bonus: payrollEntry.Bonus,\r\n CommissionBonus: payrollEntry.CommissionBonus,\r\n TravelAllowance: payrollEntry.TravelAllowance,\r\n CellAllowance: payrollEntry.CellAllowance,\r\n Tip: payrollEntry.Tip,\r\n SickPay: payrollEntry.SickPay,\r\n SplitTime: payrollEntry.SplitTime,\r\n ReportingTime: payrollEntry.ReportingTime,\r\n MealPeriodPremiumTime: payrollEntry.MealPeriodPremiumTime,\r\n HolidayPay: payrollEntry.HolidayPay,\r\n Chargeback: payrollEntry.Chargeback,\r\n TrainingPayHours: payrollEntry.TrainingPayHours,\r\n NetPayAddition: payrollEntry.NetPayAddition,\r\n NetPayDeduction: payrollEntry.NetPayDeduction,\r\n Comments: payrollEntry.Comments,\r\n CommissionPieces: payrollEntry.CommissionPieces\r\n };\r\n}\r\n","import { IHttpInterceptor, ILogService, IHttpResponse, IRequestConfig } from \"angular\";\r\nimport { $InjectorLike } from \"angular-ui-router\";\r\nimport { HttpInterceptorFactory } from \"./http-interceptor.factory\";\r\n\r\nexport class AbortedXhrError extends Error implements IHttpResponse {\r\n name = \"AbortedXhrError\";\r\n status = -1;\r\n statusText = \"\";\r\n xhrStatus: \"abort\" = \"abort\";\r\n config: IRequestConfig;\r\n data: any;\r\n headers: any;\r\n constructor(message: string, detail: IHttpResponse) {\r\n super(message);\r\n this.status = detail.status;\r\n this.config = detail.config;\r\n this.data = detail.data;\r\n this.headers = detail.headers;\r\n this.statusText = detail.statusText;\r\n }\r\n}\r\n\r\nexport class HttpResponseError extends Error implements IHttpResponse {\r\n name = \"HttpResponseError\";\r\n status: number;\r\n config: IRequestConfig;\r\n data: any;\r\n headers: () => any;\r\n statusText: string;\r\n xhrStatus: \"error\" = \"error\";\r\n constructor(detail: IHttpResponse) {\r\n super(detail.statusText || detail.status?.toString());\r\n this.status = detail.status;\r\n this.config = detail.config;\r\n this.data = detail.data;\r\n this.headers = detail.headers;\r\n this.statusText = detail.statusText;\r\n }\r\n}\r\n\r\n/**\r\n * An interceptor that wrap failed requests in an error for improved\r\n *\r\n */\r\nexport class ApexApiResponseInterceptor implements IHttpInterceptor {\r\n constructor(private $injector: $InjectorLike, private $log: ILogService) {\r\n 'ngInject';\r\n }\r\n\r\n responseError(rejection: IHttpResponse): IHttpResponse {\r\n const apexApiUrl = this.$injector.get(\"apexApiUrl\");\r\n if (!rejection.config || !rejection.config.url.includes(apexApiUrl) || rejection instanceof Error) {\r\n // This interceptor only processes rejections in the form of an unsuccessful XHR response.\r\n throw rejection;\r\n }\r\n const response = rejection as IHttpResponse;\r\n if (response.xhrStatus === \"abort\") {\r\n // Wrap aborted XHR requests in a special error, for improved tracing.\r\n throw new AbortedXhrError(\"The connection was aborted\", response);\r\n }\r\n if (response.status <= 0) {\r\n // If the XHR wasn't aborted, but status code is still -1, this indicates\r\n // a network issue (eg, server request was blocked, server shut down halfway through the request,\r\n // or user lost internet connection)\r\n throw new AbortedXhrError(\"The connection was reset or blocked\", response);\r\n }\r\n // For all other HTTP request errors, wrap them in an error instead of throwing the response\r\n // directly so that a stack trace is produced and the error is meaningful.\r\n throw new HttpResponseError(response);\r\n }\r\n}\r\n\r\nexport const apexApiResponseInterceptorFactory = HttpInterceptorFactory(ApexApiResponseInterceptor);\r\n","import { IPromise, IQService, IWindowService } from \"angular\";\r\nimport { Transition } from \"angular-ui-router\";\r\n\r\n/**\r\n * Coordinates hard reload for pages where a full page navigation is necessary.\r\n */\r\nexport class HardReloadService {\r\n private isReady: boolean;\r\n private deferredReloadRequested: boolean;\r\n private currentNavigation: IPromise;\r\n\r\n constructor(private $window: IWindowService, private $q: IQService) {\r\n 'ngInject';\r\n // Current navigation will be used to chain together reloads.\r\n this.currentNavigation = this.$q.resolve();\r\n }\r\n\r\n /**\r\n * Signal that the service should start reloading upon getting a request. Process\r\n * any deferred reload request.\r\n */\r\n init() {\r\n this.isReady = true;\r\n if (this.deferredReloadRequested) {\r\n this.reload();\r\n }\r\n }\r\n\r\n /**\r\n * Navigate to the given URL unless a navigation is currently in progress.\r\n * @param url The new URL to navigate to.\r\n */\r\n reload() {\r\n if (!this.isReady) {\r\n this.deferredReloadRequested = true;\r\n return;\r\n }\r\n this.currentNavigation = this.currentNavigation.then(() => {\r\n this.$window.location.reload();\r\n // Never resolve. This ensures that subsequent calls don't overwrite the process.\r\n return this.$q((resolve, reject) => {});\r\n });\r\n }\r\n\r\n /**\r\n * Return whether whether the transition would need to be hard reloaded in order to display it.\r\n * @param transition The transition to be evaluated.\r\n */\r\n shouldReload(transition: Transition): boolean {\r\n // Some pages perform pushState/replaceState on their own, which will be indicated by\r\n // having a requireReload param specified. Skip if moving from the initial state (name === \"\")\r\n if (transition.params().requireReload && transition.$from().name !== \"\") {\r\n if (transition.$from() !== transition.$to()) {\r\n // Always reload if the states are different.\r\n return true\r\n }\r\n const name = transition.$to().name;\r\n if (name.endsWith(\"**\")) {\r\n // State change involves routing to a wildcard route that requires reload. This should always reload.\r\n return true\r\n }\r\n\r\n const { from: fromChanges, to: toChanges } = transition.treeChanges();\r\n const { id: fromID } = Array.from(fromChanges).find(p => p.state.name === name).paramValues;\r\n const { id: toID } = Array.from(toChanges).find(p => p.state.name === name).paramValues;\r\n if (fromID && !toID) {\r\n // Routing back to a null id column always either leads back to an index or a default page,\r\n // so perform a reload.\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n}\r\n","import { ILocationProvider } from \"angular\";\r\nimport { UrlService } from \"angular-ui-router\";\r\n\r\nexport function configureRouting($locationProvider: ILocationProvider,\r\n $urlServiceProvider: UrlService): void {\r\n 'ngInject';\r\n $locationProvider.html5Mode(true);\r\n $urlServiceProvider.config.caseInsensitive(true);\r\n $urlServiceProvider.config.strictMode(false);\r\n}\r\n","import angular from \"angular\";\r\nimport uiRouter from \"angular-ui-router\";\r\nimport ocLazyLoad from 'oclazyload';\r\nimport { attachAppUpdateTransitions } from \"./app-update-transitions\";\r\nimport { HardReloadService } from \"./hard-reload.service\";\r\nimport { RouterHelperProvider } from './router-helper.provider';\r\nimport { configureRouting } from \"./routing.config\";\r\n\r\n\r\nexport const RouterModule = angular\r\n .module(\"blocks.router\", [\r\n uiRouter,\r\n ocLazyLoad as string\r\n ])\r\n .provider(\"routerHelper\", RouterHelperProvider)\r\n .service(\"hardReloadService\", HardReloadService)\r\n .config(configureRouting)\r\n .run(attachAppUpdateTransitions)\r\n .name;\r\n","import { ComplianceReportOutputFormatEnum } from \"@herbjoy/apex-api-models\";\r\n\r\nexport const complianceReportOutputFormatEnum = {\r\n 1: ComplianceReportOutputFormatEnum.MultipleWorksheets,\r\n 2: ComplianceReportOutputFormatEnum.SingleMergedWorksheet\r\n};\r\n\r\nexport interface ComplianceReportOutputFormatSelect {\r\n Id: ComplianceReportOutputFormatEnum;\r\n Name: string;\r\n}\r\n\r\nexport function parseComplianceReportOutputFormat(id: number): ComplianceReportOutputFormatEnum {\r\n return complianceReportOutputFormatEnum[id];\r\n}\r\n\r\nexport const complianceReportOutputFormatList: ComplianceReportOutputFormatSelect[] = [\r\n {\r\n Id: ComplianceReportOutputFormatEnum.MultipleWorksheets,\r\n Name: \"Multiple Worksheets\"\r\n },\r\n {\r\n Id: ComplianceReportOutputFormatEnum.SingleMergedWorksheet,\r\n Name: \"Single Merged Worksheet\"\r\n }\r\n];\r\n","import { Failed, Succeeded } from \"../enum/job-status\";\r\n\r\n/**\r\n * A store that can be used to persist and save a list of job IDs.\r\n */\r\nexport class LocalStorageJobStore {\r\n constructor(key) {\r\n this.key = key;\r\n }\r\n\r\n retrieveJobs() {\r\n return new Set(JSON.parse(localStorage.getItem(this.key)) || []);\r\n }\r\n\r\n updateJobs(jobIDs) {\r\n localStorage.setItem(this.key, JSON.stringify(Array.from(jobIDs)));\r\n }\r\n}\r\n\r\n/**\r\n * An abstract job tracker that allows components to subscribe to a job's status.\r\n */\r\nexport class JobTracker {\r\n /**\r\n * Create a new job tracker using a specific interval and persisting the tracked\r\n * jobs set to a specific key in local storage.\r\n * @param $interval {any} The angularjs interval service.\r\n * @param jobStore {any} A store that provides persistence for tracked jobs.\r\n * @param trackingInterval {number} The interval in seconds to use to poll for changes.\r\n */\r\n constructor($interval, jobStore, trackingInterval) {\r\n this.$interval = $interval;\r\n this.jobStore = jobStore;\r\n this.trackingInterval = trackingInterval;\r\n\r\n this.callbacks = [];\r\n /** @type {Set}) */\r\n this.jobIDs = this.jobStore.retrieveJobs();\r\n this.jobs = [];\r\n this._initializePeriodicCheck();\r\n }\r\n\r\n /**\r\n * Register the given callback to be notified when there are changes to a lead batch job's status.\r\n */\r\n subscribe(cb) {\r\n this.callbacks.push(cb);\r\n }\r\n\r\n /**\r\n * Stop notifying the given callback when there is an update to a batch job's status.\r\n * @param {any} cb\r\n */\r\n unsubscribe(cb) {\r\n this.callbacks = this.callbacks.filter(function (_cb) {\r\n return _cb !== cb;\r\n });\r\n }\r\n\r\n /**\r\n * Get the list of all jobs being tracked by the tracker currently.\r\n */\r\n retrieveTrackedJobs() {\r\n throw new Error(\"Abstract method must be implemented by concrete subclass.\");\r\n }\r\n\r\n /**\r\n * Track the given batch job for changes.\r\n * @param {any} jobID\r\n */\r\n trackNewJob(jobID) {\r\n this.jobIDs.add(jobID);\r\n this.jobStore.updateJobs(this.jobIDs);\r\n }\r\n\r\n /**\r\n * Stop tracking the given batch job for changes.\r\n * @param {any} jobID\r\n */\r\n stopTrackingJob(jobID) {\r\n this.jobIDs.delete(jobID);\r\n this.jobStore.updateJobs(this.jobIDs);\r\n }\r\n\r\n /**\r\n * Stop tracking any jobs in the list of jobs that are no longer in progress.\r\n * @param {any} jobs The list of jobs to stop tracking when finished.\r\n */\r\n stopTrackingFinishedJobs(jobs) {\r\n jobs.filter(job => job.JobStatus === Failed\r\n || job.JobStatus === Succeeded)\r\n .forEach(job => this.stopTrackingJob(job.Id));\r\n }\r\n\r\n _initializePeriodicCheck() {\r\n let isRunning = false;\r\n this.$interval(() => {\r\n if (isRunning) {\r\n // In case the response is slow, skip the next interval.\r\n return;\r\n }\r\n return this._notifySubscribersOnJobChange()\r\n }, this.trackingInterval)\r\n .catch(function (ex) {\r\n console.error(ex);\r\n })\r\n .then(function () {\r\n isRunning = false;\r\n })\r\n }\r\n\r\n /**\r\n * Return whether the two jobs are identical.\r\n * @param {any} a The first job in the comparison\r\n * @param {any} b The second job in the comparison\r\n */\r\n _jobsEqual(a, b) {\r\n return a.Id === b.Id\r\n && a.JobStatus === b.JobStatus\r\n && a.Messages.length === b.Messages.length // Shallow compare for messages; they should be append-only.;\r\n }\r\n\r\n _notifySubscribersOnJobChange() {\r\n this.retrieveTrackedJobs()\r\n .then(_jobs => {\r\n const modifiedJobs = _jobs.filter(job => {\r\n const original = this.jobs[job.Id];\r\n // Don't call the subscriber if this is the first time loading the job's data.\r\n // The subscriber should call retrieveTrackedJobs to get their own version of the initial list.\r\n return original && !this._jobsEqual(job, original);\r\n });\r\n // Update the list of jobs used for comparison.\r\n _jobs.forEach(job => {\r\n this.jobs[job.Id] = job;\r\n });\r\n\r\n // Notify all subscribers of the change.\r\n if (modifiedJobs.length) {\r\n this.callbacks.forEach(function (callback) {\r\n callback(modifiedJobs);\r\n });\r\n }\r\n });\r\n }\r\n}\r\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","var fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar split = ''.split;\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins\n return !Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) == 'String' ? split.call(it, '') : Object(it);\n} : Object;\n","module.exports = {};\n","var toInteger = require('../internals/to-integer');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n var integer = toInteger(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\n// `Object.keys` method\n// https://tc39.github.io/ecma262/#sec-object.keys\nmodule.exports = Object.keys || function keys(O) {\n return internalObjectKeys(O, enumBugKeys);\n};\n","var isObject = require('../internals/is-object');\nvar isArray = require('../internals/is-array');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `ArraySpeciesCreate` abstract operation\n// https://tc39.github.io/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray, length) {\n var C;\n if (isArray(originalArray)) {\n C = originalArray.constructor;\n // cross-realm fallback\n if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n else if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return new (C === undefined ? Array : C)(length === 0 ? 0 : length);\n};\n","var hiddenKeys = require('../internals/hidden-keys');\nvar isObject = require('../internals/is-object');\nvar has = require('../internals/has');\nvar defineProperty = require('../internals/object-define-property').f;\nvar uid = require('../internals/uid');\nvar FREEZING = require('../internals/freezing');\n\nvar METADATA = uid('meta');\nvar id = 0;\n\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\n\nvar setMetadata = function (it) {\n defineProperty(it, METADATA, { value: {\n objectID: 'O' + ++id, // object ID\n weakData: {} // weak collections IDs\n } });\n};\n\nvar fastKey = function (it, create) {\n // return a primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!has(it, METADATA)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMetadata(it);\n // return object ID\n } return it[METADATA].objectID;\n};\n\nvar getWeakData = function (it, create) {\n if (!has(it, METADATA)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMetadata(it);\n // return the store of weak collections IDs\n } return it[METADATA].weakData;\n};\n\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZING && meta.REQUIRED && isExtensible(it) && !has(it, METADATA)) setMetadata(it);\n return it;\n};\n\nvar meta = module.exports = {\n REQUIRED: false,\n fastKey: fastKey,\n getWeakData: getWeakData,\n onFreeze: onFreeze\n};\n\nhiddenKeys[METADATA] = true;\n","var anObject = require('../internals/an-object');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar toLength = require('../internals/to-length');\nvar bind = require('../internals/function-bind-context');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');\n\nvar Result = function (stopped, result) {\n this.stopped = stopped;\n this.result = result;\n};\n\nvar iterate = module.exports = function (iterable, fn, that, AS_ENTRIES, IS_ITERATOR) {\n var boundFunction = bind(fn, that, AS_ENTRIES ? 2 : 1);\n var iterator, iterFn, index, length, result, next, step;\n\n if (IS_ITERATOR) {\n iterator = iterable;\n } else {\n iterFn = getIteratorMethod(iterable);\n if (typeof iterFn != 'function') throw TypeError('Target is not iterable');\n // optimisation for array iterators\n if (isArrayIteratorMethod(iterFn)) {\n for (index = 0, length = toLength(iterable.length); length > index; index++) {\n result = AS_ENTRIES\n ? boundFunction(anObject(step = iterable[index])[0], step[1])\n : boundFunction(iterable[index]);\n if (result && result instanceof Result) return result;\n } return new Result(false);\n }\n iterator = iterFn.call(iterable);\n }\n\n next = iterator.next;\n while (!(step = next.call(iterator)).done) {\n result = callWithSafeIterationClosing(iterator, boundFunction, step.value, AS_ENTRIES);\n if (typeof result == 'object' && result && result instanceof Result) return result;\n } return new Result(false);\n};\n\niterate.stop = function (result) {\n return new Result(true, result);\n};\n","module.exports = {};\n","var has = require('../internals/has');\nvar toObject = require('../internals/to-object');\nvar sharedKey = require('../internals/shared-key');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar ObjectPrototype = Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.github.io/ecma262/#sec-object.getprototypeof\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectPrototype : null;\n};\n","var fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (METHOD_NAME) {\n // We can't use this feature detection in V8 since it causes\n // deoptimization and serious performance degradation\n // https://github.com/zloirock/core-js/issues/677\n return V8_VERSION >= 51 || !fails(function () {\n var array = [];\n var constructor = array.constructor = {};\n constructor[SPECIES] = function () {\n return { foo: 1 };\n };\n return array[METHOD_NAME](Boolean).foo !== 1;\n });\n};\n","var global = require('../internals/global');\nvar bind = require('../internals/function-bind-context');\n\nvar call = Function.call;\n\nmodule.exports = function (CONSTRUCTOR, METHOD, length) {\n return bind(call, global[CONSTRUCTOR].prototype[METHOD], length);\n};\n","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","'use strict';\nvar nativePropertyIsEnumerable = {}.propertyIsEnumerable;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !nativePropertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.github.io/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : nativePropertyIsEnumerable;\n","var shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n","var id = 0;\nvar postfix = Math.random();\n\nmodule.exports = function (key) {\n return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id + postfix).toString(36);\n};\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertynames\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n","var fails = require('../internals/fails');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value == POLYFILL ? true\n : value == NATIVE ? false\n : typeof detection == 'function' ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n return Object.isExtensible(Object.preventExtensions({}));\n});\n","var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar redefine = require('../internals/redefine');\nvar toString = require('../internals/object-to-string');\n\n// `Object.prototype.toString` method\n// https://tc39.github.io/ecma262/#sec-object.prototype.tostring\nif (!TO_STRING_TAG_SUPPORT) {\n redefine(Object.prototype, 'toString', toString, { unsafe: true });\n}\n","'use strict';\nvar IS_PURE = require('../internals/is-pure');\nvar global = require('../internals/global');\nvar fails = require('../internals/fails');\n\n// Forced replacement object prototype accessors methods\nmodule.exports = IS_PURE || !fails(function () {\n var key = Math.random();\n // In FF throws only define methods\n // eslint-disable-next-line no-undef, no-useless-call\n __defineSetter__.call(null, key, function () { /* empty */ });\n delete global[key];\n});\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/define-iterator');\n\nvar STRING_ITERATOR = 'String Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);\n\n// `String.prototype[@@iterator]` method\n// https://tc39.github.io/ecma262/#sec-string.prototype-@@iterator\ndefineIterator(String, 'String', function (iterated) {\n setInternalState(this, {\n type: STRING_ITERATOR,\n string: String(iterated),\n index: 0\n });\n// `%StringIteratorPrototype%.next` method\n// https://tc39.github.io/ecma262/#sec-%stringiteratorprototype%.next\n}, function next() {\n var state = getInternalState(this);\n var string = state.string;\n var index = state.index;\n var point;\n if (index >= string.length) return { value: undefined, done: true };\n point = charAt(string, index);\n state.index += point.length;\n return { value: point, done: false };\n});\n","var requireObjectCoercible = require('../internals/require-object-coercible');\nvar whitespaces = require('../internals/whitespaces');\n\nvar whitespace = '[' + whitespaces + ']';\nvar ltrim = RegExp('^' + whitespace + whitespace + '*');\nvar rtrim = RegExp(whitespace + whitespace + '*$');\n\n// `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation\nvar createMethod = function (TYPE) {\n return function ($this) {\n var string = String(requireObjectCoercible($this));\n if (TYPE & 1) string = string.replace(ltrim, '');\n if (TYPE & 2) string = string.replace(rtrim, '');\n return string;\n };\n};\n\nmodule.exports = {\n // `String.prototype.{ trimLeft, trimStart }` methods\n // https://tc39.github.io/ecma262/#sec-string.prototype.trimstart\n start: createMethod(1),\n // `String.prototype.{ trimRight, trimEnd }` methods\n // https://tc39.github.io/ecma262/#sec-string.prototype.trimend\n end: createMethod(2),\n // `String.prototype.trim` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.trim\n trim: createMethod(3)\n};\n","// a string of all valid unicode whitespaces\n// eslint-disable-next-line max-len\nmodule.exports = '\\u0009\\u000A\\u000B\\u000C\\u000D\\u0020\\u00A0\\u1680\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n","var global = require('../internals/global');\nvar DOMIterables = require('../internals/dom-iterables');\nvar ArrayIteratorMethods = require('../modules/es.array.iterator');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar ArrayValues = ArrayIteratorMethods.values;\n\nfor (var COLLECTION_NAME in DOMIterables) {\n var Collection = global[COLLECTION_NAME];\n var CollectionPrototype = Collection && Collection.prototype;\n if (CollectionPrototype) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype[ITERATOR] !== ArrayValues) try {\n createNonEnumerableProperty(CollectionPrototype, ITERATOR, ArrayValues);\n } catch (error) {\n CollectionPrototype[ITERATOR] = ArrayValues;\n }\n if (!CollectionPrototype[TO_STRING_TAG]) {\n createNonEnumerableProperty(CollectionPrototype, TO_STRING_TAG, COLLECTION_NAME);\n }\n if (DOMIterables[COLLECTION_NAME]) for (var METHOD_NAME in ArrayIteratorMethods) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype[METHOD_NAME] !== ArrayIteratorMethods[METHOD_NAME]) try {\n createNonEnumerableProperty(CollectionPrototype, METHOD_NAME, ArrayIteratorMethods[METHOD_NAME]);\n } catch (error) {\n CollectionPrototype[METHOD_NAME] = ArrayIteratorMethods[METHOD_NAME];\n }\n }\n }\n}\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","var listCacheClear = require('./_listCacheClear'),\n listCacheDelete = require('./_listCacheDelete'),\n listCacheGet = require('./_listCacheGet'),\n listCacheHas = require('./_listCacheHas'),\n listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n","var assignValue = require('./_assignValue'),\n baseAssignValue = require('./_baseAssignValue');\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\nmodule.exports = copyObject;\n","/**\n * oclazyload - Load modules on demand (lazy load) with angularJS\n * @version v1.0.10\n * @link https://github.com/ocombe/ocLazyLoad\n * @license MIT\n * @author Olivier Combe \n */\n(function (angular, window) {\n 'use strict';\n\n var regModules = ['ng', 'oc.lazyLoad'],\n regInvokes = {},\n regConfigs = [],\n modulesToLoad = [],\n // modules to load from angular.module or other sources\n realModules = [],\n // real modules called from angular.module\n recordDeclarations = [],\n broadcast = angular.noop,\n runBlocks = {},\n justLoaded = [];\n\n var ocLazyLoad = angular.module('oc.lazyLoad', ['ng']);\n\n ocLazyLoad.provider('$ocLazyLoad', [\"$controllerProvider\", \"$provide\", \"$compileProvider\", \"$filterProvider\", \"$injector\", \"$animateProvider\", function ($controllerProvider, $provide, $compileProvider, $filterProvider, $injector, $animateProvider) {\n var modules = {},\n providers = {\n $controllerProvider: $controllerProvider,\n $compileProvider: $compileProvider,\n $filterProvider: $filterProvider,\n $provide: $provide, // other things (constant, decorator, provider, factory, service)\n $injector: $injector,\n $animateProvider: $animateProvider\n },\n debug = false,\n events = false,\n moduleCache = [],\n modulePromises = {};\n\n moduleCache.push = function (value) {\n if (this.indexOf(value) === -1) {\n Array.prototype.push.apply(this, arguments);\n }\n };\n\n this.config = function (config) {\n // If we want to define modules configs\n if (angular.isDefined(config.modules)) {\n if (angular.isArray(config.modules)) {\n angular.forEach(config.modules, function (moduleConfig) {\n modules[moduleConfig.name] = moduleConfig;\n });\n } else {\n modules[config.modules.name] = config.modules;\n }\n }\n\n if (angular.isDefined(config.debug)) {\n debug = config.debug;\n }\n\n if (angular.isDefined(config.events)) {\n events = config.events;\n }\n };\n\n /**\r\n * Get the list of existing registered modules\r\n * @param element\r\n */\n this._init = function _init(element) {\n // this is probably useless now because we override angular.bootstrap\n if (modulesToLoad.length === 0) {\n var elements = [element],\n names = ['ng:app', 'ng-app', 'x-ng-app', 'data-ng-app'],\n NG_APP_CLASS_REGEXP = /\\sng[:\\-]app(:\\s*([\\w\\d_]+);?)?\\s/,\n append = function append(elm) {\n return elm && elements.push(elm);\n };\n\n angular.forEach(names, function (name) {\n names[name] = true;\n append(document.getElementById(name));\n name = name.replace(':', '\\\\:');\n if (typeof element[0] !== 'undefined' && element[0].querySelectorAll) {\n angular.forEach(element[0].querySelectorAll('.' + name), append);\n angular.forEach(element[0].querySelectorAll('.' + name + '\\\\:'), append);\n angular.forEach(element[0].querySelectorAll('[' + name + ']'), append);\n }\n });\n\n angular.forEach(elements, function (elm) {\n if (modulesToLoad.length === 0) {\n var className = ' ' + element.className + ' ';\n var match = NG_APP_CLASS_REGEXP.exec(className);\n if (match) {\n modulesToLoad.push((match[2] || '').replace(/\\s+/g, ','));\n } else {\n angular.forEach(elm.attributes, function (attr) {\n if (modulesToLoad.length === 0 && names[attr.name]) {\n modulesToLoad.push(attr.value);\n }\n });\n }\n }\n });\n }\n\n if (modulesToLoad.length === 0 && !((window.jasmine || window.mocha) && angular.isDefined(angular.mock))) {\n console.error('No module found during bootstrap, unable to init ocLazyLoad. You should always use the ng-app directive or angular.boostrap when you use ocLazyLoad.');\n }\n\n var addReg = function addReg(moduleName) {\n if (regModules.indexOf(moduleName) === -1) {\n // register existing modules\n regModules.push(moduleName);\n var mainModule = angular.module(moduleName);\n\n // register existing components (directives, services, ...)\n _invokeQueue(null, mainModule._invokeQueue, moduleName);\n _invokeQueue(null, mainModule._configBlocks, moduleName); // angular 1.3+\n\n angular.forEach(mainModule.requires, addReg);\n }\n };\n\n angular.forEach(modulesToLoad, function (moduleName) {\n addReg(moduleName);\n });\n\n modulesToLoad = []; // reset for next bootstrap\n recordDeclarations.pop(); // wait for the next lazy load\n };\n\n /**\r\n * Like JSON.stringify but that doesn't throw on circular references\r\n * @param obj\r\n */\n var stringify = function stringify(obj) {\n try {\n return JSON.stringify(obj);\n } catch (e) {\n var cache = [];\n return JSON.stringify(obj, function (key, value) {\n if (angular.isObject(value) && value !== null) {\n if (cache.indexOf(value) !== -1) {\n // Circular reference found, discard key\n return;\n }\n // Store value in our collection\n cache.push(value);\n }\n return value;\n });\n }\n };\n\n var hashCode = function hashCode(str) {\n var hash = 0,\n i,\n chr,\n len;\n if (str.length == 0) {\n return hash;\n }\n for (i = 0, len = str.length; i < len; i++) {\n chr = str.charCodeAt(i);\n hash = (hash << 5) - hash + chr;\n hash |= 0; // Convert to 32bit integer\n }\n return hash;\n };\n\n function _register(providers, registerModules, params) {\n if (registerModules) {\n var k,\n moduleName,\n moduleFn,\n tempRunBlocks = [];\n for (k = registerModules.length - 1; k >= 0; k--) {\n moduleName = registerModules[k];\n if (!angular.isString(moduleName)) {\n moduleName = getModuleName(moduleName);\n }\n if (!moduleName || justLoaded.indexOf(moduleName) !== -1 || modules[moduleName] && realModules.indexOf(moduleName) === -1) {\n continue;\n }\n // new if not registered\n var newModule = regModules.indexOf(moduleName) === -1;\n moduleFn = ngModuleFct(moduleName);\n if (newModule) {\n regModules.push(moduleName);\n _register(providers, moduleFn.requires, params);\n }\n if (moduleFn._runBlocks.length > 0) {\n // new run blocks detected! Replace the old ones (if existing)\n runBlocks[moduleName] = [];\n while (moduleFn._runBlocks.length > 0) {\n runBlocks[moduleName].push(moduleFn._runBlocks.shift());\n }\n }\n if (angular.isDefined(runBlocks[moduleName]) && (newModule || params.rerun)) {\n tempRunBlocks = tempRunBlocks.concat(runBlocks[moduleName]);\n }\n _invokeQueue(providers, moduleFn._invokeQueue, moduleName, params.reconfig);\n _invokeQueue(providers, moduleFn._configBlocks, moduleName, params.reconfig); // angular 1.3+\n broadcast(newModule ? 'ocLazyLoad.moduleLoaded' : 'ocLazyLoad.moduleReloaded', moduleName);\n registerModules.pop();\n justLoaded.push(moduleName);\n }\n // execute the run blocks at the end\n var instanceInjector = providers.getInstanceInjector();\n angular.forEach(tempRunBlocks, function (fn) {\n instanceInjector.invoke(fn);\n });\n }\n }\n\n function _registerInvokeList(args, moduleName) {\n var invokeList = args[2][0],\n type = args[1],\n newInvoke = false;\n if (angular.isUndefined(regInvokes[moduleName])) {\n regInvokes[moduleName] = {};\n }\n if (angular.isUndefined(regInvokes[moduleName][type])) {\n regInvokes[moduleName][type] = {};\n }\n var onInvoke = function onInvoke(invokeName, invoke) {\n if (!regInvokes[moduleName][type].hasOwnProperty(invokeName)) {\n regInvokes[moduleName][type][invokeName] = [];\n }\n if (checkHashes(invoke, regInvokes[moduleName][type][invokeName])) {\n newInvoke = true;\n regInvokes[moduleName][type][invokeName].push(invoke);\n broadcast('ocLazyLoad.componentLoaded', [moduleName, type, invokeName]);\n }\n };\n\n function checkHashes(potentialNew, invokes) {\n var isNew = true,\n newHash;\n if (invokes.length) {\n newHash = signature(potentialNew);\n angular.forEach(invokes, function (invoke) {\n isNew = isNew && signature(invoke) !== newHash;\n });\n }\n return isNew;\n }\n\n function signature(data) {\n if (angular.isArray(data)) {\n // arrays are objects, we need to test for it first\n return hashCode(data.toString());\n } else if (angular.isObject(data)) {\n // constants & values for example\n return hashCode(stringify(data));\n } else {\n if (angular.isDefined(data) && data !== null) {\n return hashCode(data.toString());\n } else {\n // null & undefined constants\n return data;\n }\n }\n }\n\n if (angular.isString(invokeList)) {\n onInvoke(invokeList, args[2][1]);\n } else if (angular.isObject(invokeList)) {\n angular.forEach(invokeList, function (invoke, key) {\n if (angular.isString(invoke)) {\n // decorators for example\n onInvoke(invoke, invokeList[1]);\n } else {\n // components registered as object lists {\"componentName\": function() {}}\n onInvoke(key, invoke);\n }\n });\n } else {\n return false;\n }\n return newInvoke;\n }\n\n function _invokeQueue(providers, queue, moduleName, reconfig) {\n if (!queue) {\n return;\n }\n\n var i, len, args, provider;\n for (i = 0, len = queue.length; i < len; i++) {\n args = queue[i];\n if (angular.isArray(args)) {\n if (providers !== null) {\n if (providers.hasOwnProperty(args[0])) {\n provider = providers[args[0]];\n } else {\n throw new Error('unsupported provider ' + args[0]);\n }\n }\n var isNew = _registerInvokeList(args, moduleName);\n if (args[1] !== 'invoke') {\n if (isNew && angular.isDefined(provider)) {\n provider[args[1]].apply(provider, args[2]);\n }\n } else {\n // config block\n var callInvoke = function callInvoke(fct) {\n var invoked = regConfigs.indexOf(moduleName + '-' + fct);\n if (invoked === -1 || reconfig) {\n if (invoked === -1) {\n regConfigs.push(moduleName + '-' + fct);\n }\n if (angular.isDefined(provider)) {\n provider[args[1]].apply(provider, args[2]);\n }\n }\n };\n if (angular.isFunction(args[2][0])) {\n callInvoke(args[2][0]);\n } else if (angular.isArray(args[2][0])) {\n for (var j = 0, jlen = args[2][0].length; j < jlen; j++) {\n if (angular.isFunction(args[2][0][j])) {\n callInvoke(args[2][0][j]);\n }\n }\n }\n }\n }\n }\n }\n\n function getModuleName(module) {\n var moduleName = null;\n if (angular.isString(module)) {\n moduleName = module;\n } else if (angular.isObject(module) && module.hasOwnProperty('name') && angular.isString(module.name)) {\n moduleName = module.name;\n }\n return moduleName;\n }\n\n function moduleExists(moduleName) {\n if (!angular.isString(moduleName)) {\n return false;\n }\n try {\n return ngModuleFct(moduleName);\n } catch (e) {\n if (/No module/.test(e) || e.message.indexOf('$injector:nomod') > -1) {\n return false;\n }\n }\n }\n\n this.$get = [\"$log\", \"$rootElement\", \"$rootScope\", \"$cacheFactory\", \"$q\", function ($log, $rootElement, $rootScope, $cacheFactory, $q) {\n var instanceInjector,\n filesCache = $cacheFactory('ocLazyLoad');\n\n if (!debug) {\n $log = {};\n $log['error'] = angular.noop;\n $log['warn'] = angular.noop;\n $log['info'] = angular.noop;\n }\n\n // Make this lazy because when $get() is called the instance injector hasn't been assigned to the rootElement yet\n providers.getInstanceInjector = function () {\n return instanceInjector ? instanceInjector : instanceInjector = $rootElement.data('$injector') || angular.injector();\n };\n\n broadcast = function broadcast(eventName, params) {\n if (events) {\n $rootScope.$broadcast(eventName, params);\n }\n if (debug) {\n $log.info(eventName, params);\n }\n };\n\n function reject(e) {\n var deferred = $q.defer();\n $log.error(e.message);\n deferred.reject(e);\n return deferred.promise;\n }\n\n return {\n _broadcast: broadcast,\n\n _$log: $log,\n\n /**\r\n * Returns the files cache used by the loaders to store the files currently loading\r\n * @returns {*}\r\n */\n _getFilesCache: function getFilesCache() {\n return filesCache;\n },\n\n /**\r\n * Let the service know that it should monitor angular.module because files are loading\r\n * @param watch boolean\r\n */\n toggleWatch: function toggleWatch(watch) {\n if (watch) {\n recordDeclarations.push(true);\n } else {\n recordDeclarations.pop();\n }\n },\n\n /**\r\n * Let you get a module config object\r\n * @param moduleName String the name of the module\r\n * @returns {*}\r\n */\n getModuleConfig: function getModuleConfig(moduleName) {\n if (!angular.isString(moduleName)) {\n throw new Error('You need to give the name of the module to get');\n }\n if (!modules[moduleName]) {\n return null;\n }\n return angular.copy(modules[moduleName]);\n },\n\n /**\r\n * Let you define a module config object\r\n * @param moduleConfig Object the module config object\r\n * @returns {*}\r\n */\n setModuleConfig: function setModuleConfig(moduleConfig) {\n if (!angular.isObject(moduleConfig)) {\n throw new Error('You need to give the module config object to set');\n }\n modules[moduleConfig.name] = moduleConfig;\n return moduleConfig;\n },\n\n /**\r\n * Returns the list of loaded modules\r\n * @returns {string[]}\r\n */\n getModules: function getModules() {\n return regModules;\n },\n\n /**\r\n * Let you check if a module has been loaded into Angular or not\r\n * @param modulesNames String/Object a module name, or a list of module names\r\n * @returns {boolean}\r\n */\n isLoaded: function isLoaded(modulesNames) {\n var moduleLoaded = function moduleLoaded(module) {\n var isLoaded = regModules.indexOf(module) > -1;\n if (!isLoaded) {\n isLoaded = !!moduleExists(module);\n }\n return isLoaded;\n };\n if (angular.isString(modulesNames)) {\n modulesNames = [modulesNames];\n }\n if (angular.isArray(modulesNames)) {\n var i, len;\n for (i = 0, len = modulesNames.length; i < len; i++) {\n if (!moduleLoaded(modulesNames[i])) {\n return false;\n }\n }\n return true;\n } else {\n throw new Error('You need to define the module(s) name(s)');\n }\n },\n\n /**\r\n * Given a module, return its name\r\n * @param module\r\n * @returns {String}\r\n */\n _getModuleName: getModuleName,\n\n /**\r\n * Returns a module if it exists\r\n * @param moduleName\r\n * @returns {module}\r\n */\n _getModule: function getModule(moduleName) {\n try {\n return ngModuleFct(moduleName);\n } catch (e) {\n // this error message really suxx\n if (/No module/.test(e) || e.message.indexOf('$injector:nomod') > -1) {\n e.message = 'The module \"' + stringify(moduleName) + '\" that you are trying to load does not exist. ' + e.message;\n }\n throw e;\n }\n },\n\n /**\r\n * Check if a module exists and returns it if it does\r\n * @param moduleName\r\n * @returns {boolean}\r\n */\n moduleExists: moduleExists,\n\n /**\r\n * Load the dependencies, and might try to load new files depending on the config\r\n * @param moduleName (String or Array of Strings)\r\n * @param localParams\r\n * @returns {*}\r\n * @private\r\n */\n _loadDependencies: function _loadDependencies(moduleName, localParams) {\n var loadedModule,\n requires,\n diff,\n promisesList = [],\n self = this;\n\n moduleName = self._getModuleName(moduleName);\n\n if (moduleName === null) {\n return $q.when();\n } else {\n try {\n loadedModule = self._getModule(moduleName);\n } catch (e) {\n return reject(e);\n }\n // get unloaded requires\n requires = self.getRequires(loadedModule);\n }\n\n angular.forEach(requires, function (requireEntry) {\n // If no configuration is provided, try and find one from a previous load.\n // If there isn't one, bail and let the normal flow run\n if (angular.isString(requireEntry)) {\n var config = self.getModuleConfig(requireEntry);\n if (config === null) {\n moduleCache.push(requireEntry); // We don't know about this module, but something else might, so push it anyway.\n return;\n }\n requireEntry = config;\n // ignore the name because it's probably not a real module name\n config.name = undefined;\n }\n\n // Check if this dependency has been loaded previously\n if (self.moduleExists(requireEntry.name)) {\n // compare against the already loaded module to see if the new definition adds any new files\n diff = requireEntry.files.filter(function (n) {\n return self.getModuleConfig(requireEntry.name).files.indexOf(n) < 0;\n });\n\n // If the module was redefined, advise via the console\n if (diff.length !== 0) {\n self._$log.warn('Module \"', moduleName, '\" attempted to redefine configuration for dependency. \"', requireEntry.name, '\"\\n Additional Files Loaded:', diff);\n }\n\n // Push everything to the file loader, it will weed out the duplicates.\n if (angular.isDefined(self.filesLoader)) {\n // if a files loader is defined\n promisesList.push(self.filesLoader(requireEntry, localParams).then(function () {\n return self._loadDependencies(requireEntry);\n }));\n } else {\n return reject(new Error('Error: New dependencies need to be loaded from external files (' + requireEntry.files + '), but no loader has been defined.'));\n }\n return;\n } else if (angular.isArray(requireEntry)) {\n var files = [];\n angular.forEach(requireEntry, function (entry) {\n // let's check if the entry is a file name or a config name\n var config = self.getModuleConfig(entry);\n if (config === null) {\n files.push(entry);\n } else if (config.files) {\n files = files.concat(config.files);\n }\n });\n if (files.length > 0) {\n requireEntry = {\n files: files\n };\n }\n } else if (angular.isObject(requireEntry)) {\n if (requireEntry.hasOwnProperty('name') && requireEntry['name']) {\n // The dependency doesn't exist in the module cache and is a new configuration, so store and push it.\n self.setModuleConfig(requireEntry);\n moduleCache.push(requireEntry['name']);\n }\n }\n\n // Check if the dependency has any files that need to be loaded. If there are, push a new promise to the promise list.\n if (angular.isDefined(requireEntry.files) && requireEntry.files.length !== 0) {\n if (angular.isDefined(self.filesLoader)) {\n // if a files loader is defined\n promisesList.push(self.filesLoader(requireEntry, localParams).then(function () {\n return self._loadDependencies(requireEntry);\n }));\n } else {\n return reject(new Error('Error: the module \"' + requireEntry.name + '\" is defined in external files (' + requireEntry.files + '), but no loader has been defined.'));\n }\n }\n });\n\n // Create a wrapper promise to watch the promise list and resolve it once everything is done.\n return $q.all(promisesList);\n },\n\n /**\r\n * Inject new modules into Angular\r\n * @param moduleName\r\n * @param localParams\r\n * @param real\r\n */\n inject: function inject(moduleName) {\n var localParams = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];\n var real = arguments.length <= 2 || arguments[2] === undefined ? false : arguments[2];\n\n var self = this,\n deferred = $q.defer();\n if (angular.isDefined(moduleName) && moduleName !== null) {\n if (angular.isArray(moduleName)) {\n var promisesList = [];\n angular.forEach(moduleName, function (module) {\n promisesList.push(self.inject(module, localParams, real));\n });\n return $q.all(promisesList);\n } else {\n self._addToLoadList(self._getModuleName(moduleName), true, real);\n }\n }\n if (modulesToLoad.length > 0) {\n var res = modulesToLoad.slice(); // clean copy\n var loadNext = function loadNext(moduleName) {\n moduleCache.push(moduleName);\n modulePromises[moduleName] = deferred.promise;\n self._loadDependencies(moduleName, localParams).then(function success() {\n try {\n justLoaded = [];\n _register(providers, moduleCache, localParams);\n } catch (e) {\n self._$log.error(e.message);\n deferred.reject(e);\n return;\n }\n\n if (modulesToLoad.length > 0) {\n loadNext(modulesToLoad.shift()); // load the next in list\n } else {\n deferred.resolve(res); // everything has been loaded, resolve\n }\n }, function error(err) {\n deferred.reject(err);\n });\n };\n\n // load the first in list\n loadNext(modulesToLoad.shift());\n } else if (localParams && localParams.name && modulePromises[localParams.name]) {\n return modulePromises[localParams.name];\n } else {\n deferred.resolve();\n }\n return deferred.promise;\n },\n\n /**\r\n * Get the list of required modules/services/... for this module\r\n * @param module\r\n * @returns {Array}\r\n */\n getRequires: function getRequires(module) {\n var requires = [];\n angular.forEach(module.requires, function (requireModule) {\n if (regModules.indexOf(requireModule) === -1) {\n requires.push(requireModule);\n }\n });\n return requires;\n },\n\n /**\r\n * Invoke the new modules & component by their providers\r\n * @param providers\r\n * @param queue\r\n * @param moduleName\r\n * @param reconfig\r\n * @private\r\n */\n _invokeQueue: _invokeQueue,\n\n /**\r\n * Check if a module has been invoked and registers it if not\r\n * @param args\r\n * @param moduleName\r\n * @returns {boolean} is new\r\n */\n _registerInvokeList: _registerInvokeList,\n\n /**\r\n * Register a new module and loads it, executing the run/config blocks if needed\r\n * @param providers\r\n * @param registerModules\r\n * @param params\r\n * @private\r\n */\n _register: _register,\n\n /**\r\n * Add a module name to the list of modules that will be loaded in the next inject\r\n * @param name\r\n * @param force\r\n * @private\r\n */\n _addToLoadList: _addToLoadList,\n\n /**\r\n * Unregister modules (you shouldn't have to use this)\r\n * @param modules\r\n */\n _unregister: function _unregister(modules) {\n if (angular.isDefined(modules)) {\n if (angular.isArray(modules)) {\n angular.forEach(modules, function (module) {\n regInvokes[module] = undefined;\n });\n }\n }\n }\n };\n }];\n\n // Let's get the list of loaded modules & components\n this._init(angular.element(window.document));\n }]);\n\n var bootstrapFct = angular.bootstrap;\n angular.bootstrap = function (element, modules, config) {\n // Clean state from previous bootstrap\n regModules = ['ng', 'oc.lazyLoad'];\n regInvokes = {};\n regConfigs = [];\n modulesToLoad = [];\n realModules = [];\n recordDeclarations = [];\n broadcast = angular.noop;\n runBlocks = {};\n justLoaded = [];\n // we use slice to make a clean copy\n angular.forEach(modules.slice(), function (module) {\n _addToLoadList(module, true, true);\n });\n return bootstrapFct(element, modules, config);\n };\n\n var _addToLoadList = function _addToLoadList(name, force, real) {\n if ((recordDeclarations.length > 0 || force) && angular.isString(name) && modulesToLoad.indexOf(name) === -1) {\n modulesToLoad.push(name);\n if (real) {\n realModules.push(name);\n }\n }\n };\n\n var ngModuleFct = angular.module;\n angular.module = function (name, requires, configFn) {\n _addToLoadList(name, false, true);\n return ngModuleFct(name, requires, configFn);\n };\n\n // CommonJS package manager support:\n if (typeof module !== 'undefined' && typeof exports !== 'undefined' && module.exports === exports) {\n module.exports = 'oc.lazyLoad';\n }\n})(angular, window);\n(function (angular) {\n 'use strict';\n\n angular.module('oc.lazyLoad').directive('ocLazyLoad', [\"$ocLazyLoad\", \"$compile\", \"$animate\", \"$parse\", \"$timeout\", function ($ocLazyLoad, $compile, $animate, $parse, $timeout) {\n return {\n restrict: 'A',\n terminal: true,\n priority: 1000,\n compile: function compile(element, attrs) {\n // we store the content and remove it before compilation\n var content = element[0].innerHTML;\n element.html('');\n\n return function ($scope, $element, $attr) {\n var model = $parse($attr.ocLazyLoad);\n $scope.$watch(function () {\n return model($scope) || $attr.ocLazyLoad; // it can be a module name (string), an object, an array, or a scope reference to any of this\n }, function (moduleName) {\n if (angular.isDefined(moduleName)) {\n $ocLazyLoad.load(moduleName).then(function () {\n // Attach element contents to DOM and then compile them.\n // This prevents an issue where IE invalidates saved element objects (HTMLCollections)\n // of the compiled contents when attaching to the parent DOM.\n $animate.enter(content, $element);\n // get the new content & compile it\n $compile($element.contents())($scope);\n });\n }\n }, true);\n };\n }\n };\n }]);\n})(angular);\n(function (angular) {\n 'use strict';\n\n angular.module('oc.lazyLoad').config([\"$provide\", function ($provide) {\n $provide.decorator('$ocLazyLoad', [\"$delegate\", \"$q\", \"$window\", \"$interval\", function ($delegate, $q, $window, $interval) {\n var uaCssChecked = false,\n useCssLoadPatch = false,\n anchor = $window.document.getElementsByTagName('head')[0] || $window.document.getElementsByTagName('body')[0];\n\n /**\r\n * Load a js/css file\r\n * @param type\r\n * @param path\r\n * @param params\r\n * @returns promise\r\n */\n $delegate.buildElement = function buildElement(type, path, params) {\n var deferred = $q.defer(),\n el,\n loaded,\n filesCache = $delegate._getFilesCache(),\n cacheBuster = function cacheBuster(url) {\n var dc = new Date().getTime();\n if (url.indexOf('?') >= 0) {\n if (url.substring(0, url.length - 1) === '&') {\n return url + '_dc=' + dc;\n }\n return url + '&_dc=' + dc;\n } else {\n return url + '?_dc=' + dc;\n }\n };\n\n // Store the promise early so the file load can be detected by other parallel lazy loads\n // (ie: multiple routes on one page) a 'true' value isn't sufficient\n // as it causes false positive load results.\n if (angular.isUndefined(filesCache.get(path))) {\n filesCache.put(path, deferred.promise);\n }\n\n // Switch in case more content types are added later\n switch (type) {\n case 'css':\n el = $window.document.createElement('link');\n el.type = 'text/css';\n el.rel = 'stylesheet';\n el.href = params.cache === false ? cacheBuster(path) : path;\n break;\n case 'js':\n el = $window.document.createElement('script');\n el.src = params.cache === false ? cacheBuster(path) : path;\n break;\n default:\n filesCache.remove(path);\n deferred.reject(new Error('Requested type \"' + type + '\" is not known. Could not inject \"' + path + '\"'));\n break;\n }\n el.onload = el['onreadystatechange'] = function (e) {\n if (el['readyState'] && !/^c|loade/.test(el['readyState']) || loaded) return;\n el.onload = el['onreadystatechange'] = null;\n loaded = 1;\n $delegate._broadcast('ocLazyLoad.fileLoaded', path);\n deferred.resolve(el);\n };\n el.onerror = function () {\n filesCache.remove(path);\n deferred.reject(new Error('Unable to load ' + path));\n };\n el.async = params.serie ? 0 : 1;\n\n var insertBeforeElem = anchor.lastChild;\n if (params.insertBefore) {\n var element = angular.element(angular.isDefined(window.jQuery) ? params.insertBefore : document.querySelector(params.insertBefore));\n if (element && element.length > 0) {\n insertBeforeElem = element[0];\n }\n }\n insertBeforeElem.parentNode.insertBefore(el, insertBeforeElem);\n\n /*\r\n The event load or readystatechange doesn't fire in:\r\n - PhantomJS 1.9 (headless webkit browser)\r\n - iOS < 6 (default mobile browser)\r\n - Android < 4.4 (default mobile browser)\r\n - Safari < 6 (desktop browser)\r\n */\n if (type == 'css') {\n if (!uaCssChecked) {\n var ua = $window.navigator.userAgent.toLowerCase();\n\n if (ua.indexOf('phantomjs/1.9') > -1) {\n // PhantomJS ~1.9\n useCssLoadPatch = true;\n } else if (/iP(hone|od|ad)/.test($window.navigator.platform)) {\n // iOS < 6\n var v = $window.navigator.appVersion.match(/OS (\\d+)_(\\d+)_?(\\d+)?/);\n var iOSVersion = parseFloat([parseInt(v[1], 10), parseInt(v[2], 10), parseInt(v[3] || 0, 10)].join('.'));\n useCssLoadPatch = iOSVersion < 6;\n } else if (ua.indexOf('android') > -1) {\n // Android < 4.4\n var androidVersion = parseFloat(ua.slice(ua.indexOf('android') + 8));\n useCssLoadPatch = androidVersion < 4.4;\n } else if (ua.indexOf('safari') > -1) {\n // Safari < 6\n var versionMatch = ua.match(/version\\/([\\.\\d]+)/i);\n useCssLoadPatch = versionMatch && versionMatch[1] && parseFloat(versionMatch[1]) < 6;\n }\n }\n\n if (useCssLoadPatch) {\n var tries = 1000; // * 20 = 20000 miliseconds\n var interval = $interval(function () {\n try {\n el.sheet.cssRules;\n $interval.cancel(interval);\n el.onload();\n } catch (e) {\n if (--tries <= 0) {\n el.onerror();\n }\n }\n }, 20);\n }\n }\n\n return deferred.promise;\n };\n\n return $delegate;\n }]);\n }]);\n})(angular);\n(function (angular) {\n 'use strict';\n\n angular.module('oc.lazyLoad').config([\"$provide\", function ($provide) {\n $provide.decorator('$ocLazyLoad', [\"$delegate\", \"$q\", function ($delegate, $q) {\n /**\r\n * The function that loads new files\r\n * @param config\r\n * @param params\r\n * @returns {*}\r\n */\n $delegate.filesLoader = function filesLoader(config) {\n var params = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];\n\n var cssFiles = [],\n templatesFiles = [],\n jsFiles = [],\n promises = [],\n cachePromise = null,\n filesCache = $delegate._getFilesCache();\n\n $delegate.toggleWatch(true); // start watching angular.module calls\n\n angular.extend(params, config);\n\n var pushFile = function pushFile(path) {\n var file_type = null,\n m;\n if (angular.isObject(path)) {\n file_type = path.type;\n path = path.path;\n }\n cachePromise = filesCache.get(path);\n if (angular.isUndefined(cachePromise) || params.cache === false) {\n\n // always check for requirejs syntax just in case\n if ((m = /^(css|less|html|htm|js)?(?=!)/.exec(path)) !== null) {\n // Detect file type using preceding type declaration (ala requireJS)\n file_type = m[1];\n path = path.substr(m[1].length + 1, path.length); // Strip the type from the path\n }\n\n if (!file_type) {\n if ((m = /[.](css|less|html|htm|js)?((\\?|#).*)?$/.exec(path)) !== null) {\n // Detect file type via file extension\n file_type = m[1];\n } else if (!$delegate.jsLoader.hasOwnProperty('ocLazyLoadLoader') && $delegate.jsLoader.hasOwnProperty('requirejs')) {\n // requirejs\n file_type = 'js';\n } else {\n $delegate._$log.error('File type could not be determined. ' + path);\n return;\n }\n }\n\n if ((file_type === 'css' || file_type === 'less') && cssFiles.indexOf(path) === -1) {\n cssFiles.push(path);\n } else if ((file_type === 'html' || file_type === 'htm') && templatesFiles.indexOf(path) === -1) {\n templatesFiles.push(path);\n } else if (file_type === 'js' || jsFiles.indexOf(path) === -1) {\n jsFiles.push(path);\n } else {\n $delegate._$log.error('File type is not valid. ' + path);\n }\n } else if (cachePromise) {\n promises.push(cachePromise);\n }\n };\n\n if (params.serie) {\n pushFile(params.files.shift());\n } else {\n angular.forEach(params.files, function (path) {\n pushFile(path);\n });\n }\n\n if (cssFiles.length > 0) {\n var cssDeferred = $q.defer();\n $delegate.cssLoader(cssFiles, function (err) {\n if (angular.isDefined(err) && $delegate.cssLoader.hasOwnProperty('ocLazyLoadLoader')) {\n $delegate._$log.error(err);\n cssDeferred.reject(err);\n } else {\n cssDeferred.resolve();\n }\n }, params);\n promises.push(cssDeferred.promise);\n }\n\n if (templatesFiles.length > 0) {\n var templatesDeferred = $q.defer();\n $delegate.templatesLoader(templatesFiles, function (err) {\n if (angular.isDefined(err) && $delegate.templatesLoader.hasOwnProperty('ocLazyLoadLoader')) {\n $delegate._$log.error(err);\n templatesDeferred.reject(err);\n } else {\n templatesDeferred.resolve();\n }\n }, params);\n promises.push(templatesDeferred.promise);\n }\n\n if (jsFiles.length > 0) {\n var jsDeferred = $q.defer();\n $delegate.jsLoader(jsFiles, function (err) {\n if (angular.isDefined(err) && ($delegate.jsLoader.hasOwnProperty(\"ocLazyLoadLoader\") || $delegate.jsLoader.hasOwnProperty(\"requirejs\"))) {\n $delegate._$log.error(err);\n jsDeferred.reject(err);\n } else {\n jsDeferred.resolve();\n }\n }, params);\n promises.push(jsDeferred.promise);\n }\n\n if (promises.length === 0) {\n var deferred = $q.defer(),\n err = \"Error: no file to load has been found, if you're trying to load an existing module you should use the 'inject' method instead of 'load'.\";\n $delegate._$log.error(err);\n deferred.reject(err);\n return deferred.promise;\n } else if (params.serie && params.files.length > 0) {\n return $q.all(promises).then(function () {\n return $delegate.filesLoader(config, params);\n });\n } else {\n return $q.all(promises)['finally'](function (res) {\n $delegate.toggleWatch(false); // stop watching angular.module calls\n return res;\n });\n }\n };\n\n /**\r\n * Load a module or a list of modules into Angular\r\n * @param module Mixed the name of a predefined module config object, or a module config object, or an array of either\r\n * @param params Object optional parameters\r\n * @returns promise\r\n */\n $delegate.load = function (originalModule) {\n var originalParams = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];\n\n var self = this,\n config = null,\n deferredList = [],\n deferred = $q.defer(),\n errText;\n\n // clean copy\n var module = angular.copy(originalModule);\n var params = angular.copy(originalParams);\n\n // If module is an array, break it down\n if (angular.isArray(module)) {\n // Resubmit each entry as a single module\n angular.forEach(module, function (m) {\n deferredList.push(self.load(m, params));\n });\n\n // Resolve the promise once everything has loaded\n $q.all(deferredList).then(function (res) {\n deferred.resolve(res);\n }, function (err) {\n deferred.reject(err);\n });\n\n return deferred.promise;\n }\n\n // Get or Set a configuration depending on what was passed in\n if (angular.isString(module)) {\n config = self.getModuleConfig(module);\n if (!config) {\n config = {\n files: [module]\n };\n }\n } else if (angular.isObject(module)) {\n // case {type: 'js', path: lazyLoadUrl + 'testModule.fakejs'}\n if (angular.isDefined(module.path) && angular.isDefined(module.type)) {\n config = {\n files: [module]\n };\n } else {\n config = self.setModuleConfig(module);\n }\n }\n\n if (config === null) {\n var moduleName = self._getModuleName(module);\n errText = 'Module \"' + (moduleName || 'unknown') + '\" is not configured, cannot load.';\n $delegate._$log.error(errText);\n deferred.reject(new Error(errText));\n return deferred.promise;\n } else {\n // deprecated\n if (angular.isDefined(config.template)) {\n if (angular.isUndefined(config.files)) {\n config.files = [];\n }\n if (angular.isString(config.template)) {\n config.files.push(config.template);\n } else if (angular.isArray(config.template)) {\n config.files.concat(config.template);\n }\n }\n }\n\n var localParams = angular.extend({}, params, config);\n\n // if someone used an external loader and called the load function with just the module name\n if (angular.isUndefined(config.files) && angular.isDefined(config.name) && $delegate.moduleExists(config.name)) {\n return $delegate.inject(config.name, localParams, true);\n }\n\n $delegate.filesLoader(config, localParams).then(function () {\n $delegate.inject(null, localParams).then(function (res) {\n deferred.resolve(res);\n }, function (err) {\n deferred.reject(err);\n });\n }, function (err) {\n deferred.reject(err);\n });\n\n return deferred.promise;\n };\n\n // return the patched service\n return $delegate;\n }]);\n }]);\n})(angular);\n(function (angular) {\n 'use strict';\n\n angular.module('oc.lazyLoad').config([\"$provide\", function ($provide) {\n $provide.decorator('$ocLazyLoad', [\"$delegate\", \"$q\", function ($delegate, $q) {\n /**\r\n * cssLoader function\r\n * @type Function\r\n * @param paths array list of css files to load\r\n * @param callback to call when everything is loaded. We use a callback and not a promise\r\n * @param params object config parameters\r\n * because the user can overwrite cssLoader and it will probably not use promises :(\r\n */\n $delegate.cssLoader = function (paths, callback, params) {\n var promises = [];\n angular.forEach(paths, function (path) {\n promises.push($delegate.buildElement('css', path, params));\n });\n $q.all(promises).then(function () {\n callback();\n }, function (err) {\n callback(err);\n });\n };\n $delegate.cssLoader.ocLazyLoadLoader = true;\n\n return $delegate;\n }]);\n }]);\n})(angular);\n(function (angular) {\n 'use strict';\n\n angular.module('oc.lazyLoad').config([\"$provide\", function ($provide) {\n $provide.decorator('$ocLazyLoad', [\"$delegate\", \"$q\", function ($delegate, $q) {\n /**\r\n * jsLoader function\r\n * @type Function\r\n * @param paths array list of js files to load\r\n * @param callback to call when everything is loaded. We use a callback and not a promise\r\n * @param params object config parameters\r\n * because the user can overwrite jsLoader and it will probably not use promises :(\r\n */\n $delegate.jsLoader = function (paths, callback, params) {\n var promises = [];\n angular.forEach(paths, function (path) {\n promises.push($delegate.buildElement('js', path, params));\n });\n $q.all(promises).then(function () {\n callback();\n }, function (err) {\n callback(err);\n });\n };\n $delegate.jsLoader.ocLazyLoadLoader = true;\n\n return $delegate;\n }]);\n }]);\n})(angular);\n(function (angular) {\n 'use strict';\n\n angular.module('oc.lazyLoad').config([\"$provide\", function ($provide) {\n $provide.decorator('$ocLazyLoad', [\"$delegate\", \"$templateCache\", \"$q\", \"$http\", function ($delegate, $templateCache, $q, $http) {\n /**\r\n * templatesLoader function\r\n * @type Function\r\n * @param paths array list of css files to load\r\n * @param callback to call when everything is loaded. We use a callback and not a promise\r\n * @param params object config parameters for $http\r\n * because the user can overwrite templatesLoader and it will probably not use promises :(\r\n */\n $delegate.templatesLoader = function (paths, callback, params) {\n var promises = [],\n filesCache = $delegate._getFilesCache();\n\n angular.forEach(paths, function (url) {\n var deferred = $q.defer();\n promises.push(deferred.promise);\n $http.get(url, params).then(function (response) {\n var data = response.data;\n if (angular.isString(data) && data.length > 0) {\n angular.forEach(angular.element(data), function (node) {\n if (node.nodeName === 'SCRIPT' && node.type === 'text/ng-template') {\n $templateCache.put(node.id, node.innerHTML);\n }\n });\n }\n if (angular.isUndefined(filesCache.get(url))) {\n filesCache.put(url, true);\n }\n deferred.resolve();\n })['catch'](function (response) {\n deferred.reject(new Error('Unable to load template file \"' + url + '\": ' + response.data));\n });\n });\n return $q.all(promises).then(function () {\n callback();\n }, function (err) {\n callback(err);\n });\n };\n $delegate.templatesLoader.ocLazyLoadLoader = true;\n\n return $delegate;\n }]);\n }]);\n})(angular);\n// Array.indexOf polyfill for IE8\nif (!Array.prototype.indexOf) {\n Array.prototype.indexOf = function (searchElement, fromIndex) {\n var k;\n\n // 1. Let O be the result of calling ToObject passing\n // the this value as the argument.\n if (this == null) {\n throw new TypeError('\"this\" is null or not defined');\n }\n\n var O = Object(this);\n\n // 2. Let lenValue be the result of calling the Get\n // internal method of O with the argument \"length\".\n // 3. Let len be ToUint32(lenValue).\n var len = O.length >>> 0;\n\n // 4. If len is 0, return -1.\n if (len === 0) {\n return -1;\n }\n\n // 5. If argument fromIndex was passed let n be\n // ToInteger(fromIndex); else let n be 0.\n var n = +fromIndex || 0;\n\n if (Math.abs(n) === Infinity) {\n n = 0;\n }\n\n // 6. If n >= len, return -1.\n if (n >= len) {\n return -1;\n }\n\n // 7. If n >= 0, then Let k be n.\n // 8. Else, n<0, Let k be len - abs(n).\n // If k is less than 0, then let k be 0.\n k = Math.max(n >= 0 ? n : len - Math.abs(n), 0);\n\n // 9. Repeat, while k < len\n while (k < len) {\n // a. Let Pk be ToString(k).\n // This is implicit for LHS operands of the in operator\n // b. Let kPresent be the result of calling the\n // HasProperty internal method of O with argument Pk.\n // This step can be combined with c\n // c. If kPresent is true, then\n // i. Let elementK be the result of calling the Get\n // internal method of O with the argument ToString(k).\n // ii. Let same be the result of applying the\n // Strict Equality Comparison Algorithm to\n // searchElement and elementK.\n // iii. If same is true, return k.\n if (k in O && O[k] === searchElement) {\n return k;\n }\n k++;\n }\n return -1;\n };\n}","import { IPromise, IQService } from 'angular';\r\n\r\nexport interface BankAccountCreationPolicy {\r\n CountryID: number;\r\n routingNumberLength: number;\r\n institutionNumberLength: number;\r\n requireInstitutionNumber: boolean;\r\n supportAdpDirectDepositForm: boolean;\r\n routingNumberLabel: string;\r\n institutionNumberLabel: string;\r\n voidCheckLabel: string;\r\n}\r\n\r\nconst POLICIES: BankAccountCreationPolicy[] = [\r\n {\r\n CountryID: 1,\r\n routingNumberLength: 9,\r\n institutionNumberLength: 0,\r\n requireInstitutionNumber: false,\r\n supportAdpDirectDepositForm: true,\r\n routingNumberLabel: \"Routing Number\",\r\n institutionNumberLabel: \"Institution Number\",\r\n voidCheckLabel: \"Void Check\"\r\n },\r\n {\r\n CountryID: 2,\r\n routingNumberLength: 5,\r\n institutionNumberLength: 3,\r\n requireInstitutionNumber: true,\r\n supportAdpDirectDepositForm: false,\r\n routingNumberLabel: \"Routing Number\",\r\n institutionNumberLabel: \"Institution Number\",\r\n voidCheckLabel: \"Void Check\"\r\n }];\r\n\r\nexport class BankAccountCreationPolicyService {\r\n constructor(private $q: IQService) {\r\n 'ngInject'\r\n }\r\n\r\n retrievePolicyByCountryID(countryID: number): IPromise {\r\n return this.$q.resolve(POLICIES.find(policy => policy.CountryID === countryID))\r\n }\r\n}\r\n","export function AuditLogService($http, apexApiUrl) {\r\n 'ngInject';\r\n return {\r\n retrieveEmployeeTimekeepingAuditLogs: retrieveEmployeeTimekeepingAuditLogs,\r\n retrieveEmployeeTimekeepingAuditLog: retrieveEmployeeTimekeepingAuditLog,\r\n retrieveTimeEntryModificationsAuditLogs: retrieveTimeEntryModificationsAuditLogs,\r\n retrieveTimeEntryModificationsAuditLog: retrieveTimeEntryModificationsAuditLog,\r\n retrieveAcknowledgedModifiedTimeEntryAuditLogs: retrieveAcknowledgedModifiedTimeEntryAuditLogs,\r\n retrieveAcknowledgedModifiedTimeEntryAuditLog: retrieveAcknowledgedModifiedTimeEntryAuditLog,\r\n retrieveEmployeeTimekeepingAuditLogsPage: retrieveEmployeeTimekeepingAuditLogsPage,\r\n retrieveTimeEntryModificationsAuditLogsPage: retrieveTimeEntryModificationsAuditLogsPage\r\n };\r\n\r\n /**\r\n * Retrieve all timekeeping audit logs.\r\n */\r\n function retrieveEmployeeTimekeepingAuditLogs(query) {\r\n return $http({\r\n method: \"GET\",\r\n url: apexApiUrl + \"audit-logs/timekeeping\",\r\n params: query || {},\r\n headers: {\r\n Accept: \"application/json\"\r\n }\r\n })\r\n .then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n /**\r\n * Retrieve page of timekeeping audit logs matches the given query.\r\n */\r\n function retrieveEmployeeTimekeepingAuditLogsPage(pageIndex, query) {\r\n return $http({\r\n method: \"GET\",\r\n url: apexApiUrl + \"audit-logs/timekeeping/page/\" + pageIndex || 0,\r\n params: query || {},\r\n headers: {\r\n Accept: \"application/json\"\r\n }\r\n })\r\n .then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n /**\r\n * Retrieve timekeeping audit logs for the given employee.\r\n */\r\n function retrieveEmployeeTimekeepingAuditLog(employeeID) {\r\n return $http({\r\n method: \"GET\",\r\n url: apexApiUrl + \"audit-logs/timekeeping/employee/\" + employeeID,\r\n headers: {\r\n Accept: \"application/json\"\r\n }\r\n })\r\n .then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n function retrieveTimeEntryModificationsAuditLogs() {\r\n return $http({\r\n method: \"GET\",\r\n url: apexApiUrl + \"audit-logs/time-entry-modification\",\r\n headers: {\r\n Accept: \"application/json\"\r\n }\r\n })\r\n .then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n function retrieveTimeEntryModificationsAuditLogsPage(pageIndex, query) {\r\n return $http({\r\n method: \"GET\",\r\n url: apexApiUrl + \"audit-logs/time-entry-modification/page/\" + pageIndex || 0,\r\n params: query || {},\r\n headers: {\r\n Accept: \"application/json\"\r\n }\r\n })\r\n .then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n function retrieveTimeEntryModificationsAuditLog(employeeID) {\r\n return $http({\r\n method: \"GET\",\r\n url: apexApiUrl + \"audit-logs/time-entry-modification/modification-employee/\" + employeeID,\r\n headers: {\r\n Accept: \"application/json\"\r\n }\r\n })\r\n .then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n function retrieveAcknowledgedModifiedTimeEntryAuditLogs() {\r\n return $http({\r\n method: \"GET\",\r\n url: apexApiUrl + \"audit-logs/acknowledged-modified-time-entry\",\r\n headers: {\r\n Accept: \"application/json\"\r\n }\r\n })\r\n .then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n function retrieveAcknowledgedModifiedTimeEntryAuditLog(acknowledgedEmployeeID) {\r\n return $http({\r\n method: \"GET\",\r\n url: apexApiUrl + \"audit-logs/acknowledged-modified-time-entry/acknowledged-employee/\" + acknowledgedEmployeeID,\r\n headers: {\r\n Accept: \"application/json\"\r\n }\r\n })\r\n .then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n}\r\n","export function AuditorService($http, apexApiUrl) {\r\n 'ngInject';\r\n return {\r\n retrieveAuditors: retrieveAuditors,\r\n retrieveAuditor: retrieveAuditor,\r\n saveAuditor: saveAuditor,\r\n deleteAuditor: deleteAuditor\r\n };\r\n\r\n function retrieveAuditors() {\r\n return $http({\r\n method: \"GET\",\r\n url: apexApiUrl + \"auditors\"\r\n })\r\n .then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n function retrieveAuditor(auditorID) {\r\n return $http({\r\n method: \"GET\",\r\n url: apexApiUrl + \"auditors/\" + auditorID\r\n })\r\n .then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n function saveAuditor(auditor) {\r\n if (!auditor.IsNew) {\r\n return $http({\r\n method: \"PUT\",\r\n url: apexApiUrl + \"auditors/\" + auditor.Id,\r\n data: JSON.stringify(auditor),\r\n headers: { \"Content-Type\": \"application/json\" }\r\n })\r\n .then(function () {\r\n return auditor;\r\n });\r\n } else {\r\n return $http({\r\n method: \"POST\",\r\n url: apexApiUrl + \"auditors\",\r\n data: JSON.stringify(auditor),\r\n headers: { \"Content-Type\": \"application/json\" }\r\n })\r\n .then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n }\r\n\r\n function deleteAuditor(auditorID) {\r\n return $http({\r\n method: \"DELETE\",\r\n url: apexApiUrl + \"auditors/\" + auditorID,\r\n headers: {\r\n \"Content-Type\": \"application/json\"\r\n },\r\n data: {}\r\n });\r\n }\r\n}\r\n","export function CommissionPolicyService($http, apexApiUrl) {\r\n 'ngInject'\r\n const service = {\r\n // Data:\r\n retrieveCommissionPolicies: retrieveCommissionPolicies,\r\n retrieveCommissionPolicy: retrieveCommissionPolicy,\r\n retrieveCommissionPermissions: retrieveCommissionPermissions,\r\n createCommissionPolicy: createCommissionPolicy,\r\n updateCommissionPolicy: updateCommissionPolicy,\r\n deleteCommissionPolicy: deleteCommissionPolicy,\r\n\r\n // Logic:\r\n duplicateCommissionPolicyExists: duplicateCommissionPolicyExists\r\n };\r\n\r\n return service;\r\n\r\n function retrieveCommissionPolicies(icdCorporationID) {\r\n return $http({\r\n method: \"GET\",\r\n url: apexApiUrl + \"corporations/\" + icdCorporationID + \"/commission-policies\",\r\n headers: {\r\n Accept: 'application/json'\r\n }\r\n }).then(function (response) {\r\n return response.data;\r\n })\r\n }\r\n\r\n function retrieveCommissionPermissions(icdCorporationID) {\r\n return $http({\r\n method: \"GET\",\r\n url: apexApiUrl + \"corporations/\" + icdCorporationID + \"/commission-permissions\",\r\n headers: {\r\n Accept: 'application/json'\r\n }\r\n }).then(function (response) {\r\n return response.data;\r\n })\r\n }\r\n\r\n function retrieveCommissionPolicy(commissionPolicyID) {\r\n return $http({\r\n method: \"GET\",\r\n url: apexApiUrl + \"commission-policies/\" + commissionPolicyID,\r\n headers: {\r\n Accept: \"application/json\"\r\n }\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n function createCommissionPolicy(commissionPolicy) {\r\n const requestModel = {\r\n IcdCorporationID: commissionPolicy.IcdCorporationID,\r\n ProgramID: commissionPolicy.ProgramID,\r\n RetailerID: commissionPolicy.RetailerID,\r\n Archives: createArchiveDTO(commissionPolicy.Archives)\r\n };\r\n\r\n return $http({\r\n method: \"POST\",\r\n url: apexApiUrl + \"commission-policies\",\r\n headers: {\r\n Accept: \"application/json\",\r\n \"Content-Type\": \"application/json\"\r\n },\r\n data: requestModel\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n function updateCommissionPolicy(commissionPolicyID, commissionPolicy) {\r\n const archives = commissionPolicy.Archives.filter(function (archive) {\r\n return !archive.IsDeleted || !archive.IsNew;\r\n });\r\n const requestModel = {\r\n Archives: createArchiveDTO(archives)\r\n };\r\n\r\n return $http({\r\n method: \"PUT\",\r\n url: apexApiUrl + \"commission-policies/\" + commissionPolicyID,\r\n headers: {\r\n Accept: \"application/json\",\r\n \"Content-Type\": \"application/json\"\r\n },\r\n data: requestModel\r\n }).then(function (response) {\r\n return retrieveCommissionPolicy(commissionPolicyID);\r\n });\r\n }\r\n\r\n function deleteCommissionPolicy(commissionPolicyID) {\r\n return $http({\r\n method: \"DELETE\",\r\n url: apexApiUrl + \"commission-policies/\" + commissionPolicyID\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n\r\n /**\r\n * Return whether any commission policy already exists in the given list of commission\r\n * policies with the same program and retailer as the given policy.\r\n * @param commissionPolicy The CommissionPolicy being checked.\r\n * @param commissionPolicies The list of CommissionPolicies.\r\n * @returns whether there are any duplicates.\r\n */\r\n function duplicateCommissionPolicyExists(commissionPolicy, commissionPolicies) {\r\n let anyDuplicates = false;\r\n if (commissionPolicy.Program && commissionPolicy.Retailer) {\r\n anyDuplicates = commissionPolicies.reduce(function (any, other) {\r\n return any || other !== commissionPolicy\r\n && other.Program && other.Program.Id === commissionPolicy.Program.Id\r\n && other.Retailer && other.Retailer.Id === commissionPolicy.Retailer.Id;\r\n }, false);\r\n }\r\n return anyDuplicates;\r\n }\r\n\r\n function createArchiveDTO(archives) {\r\n return archives.map(function (archive) {\r\n return {\r\n IsNew: archive.IsNew,\r\n IsDeleted: archive.IsDeleted,\r\n CommissionPolicyArchiveID: archive.Id,\r\n ActiveStart: archive.ActiveStart ? kendo.format(\"{0:yyyy-MM-dd}\", archive.ActiveStart) : null,\r\n ActiveEnd: archive.ActiveEnd ? kendo.format(\"{0:yyyy-MM-dd}\", archive.ActiveEnd) : null,\r\n Tiers: archive.Tiers.map(function (tier) {\r\n return {\r\n IsNew: !!tier.IsNew,\r\n IsDeleted: !!tier.IsDeleted,\r\n CommissionPolicyTierID: tier.Id,\r\n StartAmount: tier.StartAmount,\r\n EndAmount: tier.EndAmount,\r\n TierRate: tier.TierRate,\r\n DailyNCRThreshold: tier.DailyNCRThreshold,\r\n DailyDollarGuaranteeAmt: tier.DailyDollarGuaranteeAmt\r\n }\r\n })\r\n };\r\n })\r\n }\r\n}\r\n","export function DashboardService($http, apexApiUrl, utilityService) {\r\n 'ngInject'\r\n return {\r\n retrieveDashboards: retrieveDashboards,\r\n retrieveDashboardData: retrieveDashboardData,\r\n retrieveModifiedTimeEntries: retrieveModifiedTimeEntries,\r\n retrieveTimeEntryModifications: retrieveTimeEntryModifications,\r\n acknowledgeTimeEntryModification: acknowledgeTimeEntryModification,\r\n dismissTimeEntryModification: dismissTimeEntryModification\r\n };\r\n\r\n function retrieveDashboards(dashboards, exclude) {\r\n return $http.get(apexApiUrl + \"home/dashboards\", {\r\n headers: {\r\n Accept: \"application/json\"\r\n }\r\n })\r\n .then(function (response) {\r\n return response.data.filter(function (dashboard) {\r\n let matchedDashboards = true;\r\n if (dashboards) {\r\n // Return false if none of the dashboards match.\r\n matchedDashboards = false;\r\n for (let i = 0; i < dashboards.length; i++) {\r\n if (dashboardsMatch(dashboards[i], dashboard)) {\r\n matchedDashboards = true;\r\n }\r\n }\r\n\r\n if (!matchedDashboards) {\r\n return false;\r\n }\r\n }\r\n if (exclude) {\r\n // Return false if the current dashboard matched the blacklist.\r\n for (let i = 0; i < exclude.length; i++) {\r\n if (dashboardsMatch(exclude[i], dashboard)) {\r\n return false;\r\n }\r\n }\r\n }\r\n return true;\r\n });\r\n });\r\n }\r\n\r\n function dashboardsMatch(dashboardTemplate, dashboard) {\r\n return dashboardTemplate.moduleID === dashboard.ModuleID\r\n || dashboardTemplate.title === dashboard.Title\r\n || dashboardTemplate.dashboardID === dashboard.DashboardID;\r\n }\r\n\r\n function retrieveDashboardData(dataUrl) {\r\n return $http.get(apexApiUrl + dataUrl)\r\n .then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n /**\r\n * Retrieve the collection of modified time entries that are to be displayed on\r\n * the logged in user's dashboard.\r\n */\r\n function retrieveModifiedTimeEntries() {\r\n return $http.get(apexApiUrl + \"time-entries/modified\", {\r\n headers: {\r\n Accept: \"application/json\"\r\n }\r\n })\r\n .then(function (response) {\r\n return response.data.map(function (modification) {\r\n // Convert modification from timespan to 12 h time.\r\n modification.StartTime = utilityService.utility.convertTimeTo12h(modification.StartTime);\r\n modification.EndTime = utilityService.utility.convertTimeTo12h(modification.EndTime);\r\n return modification;\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Retrieve the collection of time entries modified by the logged in user.\r\n */\r\n function retrieveTimeEntryModifications() {\r\n return $http.get(apexApiUrl + \"time-entries/modifications\", {\r\n headers: {\r\n Accept: \"application/json\"\r\n }\r\n })\r\n .then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n /**\r\n * Acknowledge a modification made to a time entry for this user by their employer.\r\n */\r\n function acknowledgeTimeEntryModification(timeEntryModificationID) {\r\n return $http({\r\n method: \"PUT\",\r\n url: apexApiUrl + \"time-entries/modified/\" + timeEntryModificationID + \"/acknowledge\",\r\n headers: {\r\n \"Content-Type\": \"application/json\"\r\n },\r\n data: JSON.stringify({\r\n timeEntryModificationID: timeEntryModificationID\r\n })\r\n });\r\n }\r\n\r\n /**\r\n * Dismiss a modification made by the authenticated employee. The employee whose time entry\r\n * was modified will still have to acknowledge it.\r\n */\r\n function dismissTimeEntryModification(timeEntryModificationID) {\r\n return $http({\r\n method: \"PUT\",\r\n url: apexApiUrl + \"time-entries/modifications/\" + timeEntryModificationID + \"/dismiss\",\r\n headers: {\r\n \"Content-Type\": \"application/json\"\r\n },\r\n data: JSON.stringify({\r\n timeEntryModificationID: timeEntryModificationID\r\n })\r\n });\r\n }\r\n}\r\n","import moment from 'moment'\r\n\r\n/**\r\n * A service that provides data access for the employee resource.\r\n * @param {IHttpService} $http An HTTP client.\r\n * @param {IQService} $q The Q promise library service.\r\n * @param {string} apexApiUrl The prefix for the Apex API url.\r\n * @returns {any} An instance of the service.\r\n */\r\nexport function EmployeeService($http, $q, apexApiUrl, utilityService) {\r\n 'ngInject'\r\n // Cache certain data for the lifetime of the current page.\r\n const cache = {};\r\n return {\r\n retrieveIdentity: retrieveIdentity,\r\n retrieveEmployees: retrieveEmployees,\r\n retrieveEmployeesPage: retrieveEmployeesPage,\r\n retrieveEmployeesByRoleName: retrieveEmployeesByRoleName,\r\n retrieveEmployeesByModuleAdmin: retrieveEmployeesByModuleAdmin,\r\n retrieveEmployeesByRosterAdmin: retrieveEmployeesByRosterAdmin,\r\n retrieveNewEmployeeModel: retrieveNewEmployeeModel,\r\n retrieveEmployee: retrieveEmployee,\r\n retrieveEmployeeSecuritySettings: retrieveEmployeeSecuritySettings,\r\n retrieveEmployeeByUsername: retrieveEmployeeByUsername,\r\n saveEmployee: saveEmployee,\r\n updateEmployeeProfile: updateEmployeeProfile,\r\n updateEmployeeSecuritySettings: updateEmployeeSecuritySettings,\r\n updateEmployeeProfileImage: updateEmployeeProfileImage,\r\n patchEmployeeProfile: patchEmployeeProfile,\r\n retrieveEmployeeProfile: retrieveEmployeeProfile,\r\n retrieveTerminationReasons: retrieveTerminationReasons,\r\n retrieveProfileImageUrl: retrieveProfileImageUrl,\r\n retrieveGenders: retrieveGenders,\r\n retrieveEmployeeBankInfo: retrieveEmployeeBankInfo,\r\n retrieveEmployeeStatuses: retrieveEmployeeStatuses,\r\n retrieveEmployeeAssignableRoles: retrieveEmployeeAssignableRoles,\r\n retrieveJobTitles: retrieveJobTitles,\r\n retrieveCompensationProfiles: retrieveCompensationProfiles,\r\n retrieveAdministeredModules: retrieveAdministeredModules,\r\n retrieveMaritalStatuses: retrieveMaritalStatuses,\r\n retrieveWithHolding: retrieveWithHolding,\r\n updateEmployeeBankInfo: updateEmployeeBankInfo,\r\n isEmailAddressAvailable: isEmailAddressAvailable,\r\n sendPasswordReminder: sendPasswordReminder,\r\n mapIcdOfficeEmployeeToDTO: mapIcdOfficeEmployeeToDTO,\r\n retrievePermissions: retrievePermissions\r\n };\r\n\r\n /**\r\n * Get the currently logged in user's identity.\r\n * @returns {Promise} The user's identity.\r\n */\r\n function retrieveIdentity() {\r\n if (cache.identity) {\r\n return $q.resolve(cache.identity);\r\n }\r\n return $http({\r\n method: \"GET\",\r\n url: apexApiUrl + \"Home/identity\",\r\n headers: { Accept: \"application/json\" }\r\n }).then(function (response) {\r\n cache.identity = response.data;\r\n return response.data;\r\n });\r\n }\r\n\r\n /**\r\n * Retrieve a list of all employees viewable by the authenticated user.\r\n * @param {any} query The URL-serializable query.\r\n * @returns {Promise} The list of all employees that the current user can read.\r\n */\r\n function retrieveEmployees(query) {\r\n return $http({\r\n method: \"GET\",\r\n url: apexApiUrl + \"employees\",\r\n params: query || {},\r\n headers: { Accept: \"application/json\" }\r\n })\r\n .then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n /**\r\n * Get the list of all employees matching the given query, along\r\n * with paging information according to the given requested index and size.\r\n * @param {number} pageIndex The 0-indexed page number to request\r\n * @param {any} query The query object describing the data that should be returned\r\n * @returns {Promise} A page of employee results.\r\n */\r\n function retrieveEmployeesPage(pageIndex, query) {\r\n return $http({\r\n method: \"GET\",\r\n url: apexApiUrl + \"employees\" + \"/page/\" + pageIndex || 0,\r\n params: query || {},\r\n headers: { Accept: \"application/json\" }\r\n })\r\n .then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n function retrieveEmployee(employeeID) {\r\n return $http({\r\n method: \"GET\",\r\n url: apexApiUrl + \"employees/\" + employeeID\r\n })\r\n .then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n function retrieveEmployeeSecuritySettings(employeeID) {\r\n return $http({\r\n method: \"GET\",\r\n url: `${apexApiUrl}/employees/${employeeID}/security`\r\n }).then(response => response.data);\r\n }\r\n\r\n function retrieveEmployeeByUsername(username) {\r\n return $http({\r\n method: \"GET\",\r\n url: apexApiUrl + \"employees?username=\" + username\r\n })\r\n .then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n function saveEmployee(employee) {\r\n // Create a DTO to convert from the loaded (potentially non-serializable)\r\n // employee model to a DTO containing the minimal updatable information.\r\n const employeeDTO = mapEmployeeToDTO(employee);\r\n if (employee.IsNew) {\r\n return createEmployee(employeeDTO);\r\n }\r\n return updateEmployee(employee.Id, employeeDTO);\r\n }\r\n\r\n function createEmployee(employee) {\r\n return $http({\r\n method: \"POST\",\r\n url: apexApiUrl + \"employees\",\r\n headers: {\r\n \"Content-Type\": \"application/json\"\r\n },\r\n data: JSON.stringify(employee)\r\n })\r\n .then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n function updateEmployee(employeeID, employee) {\r\n return $http({\r\n method: \"PUT\",\r\n url: apexApiUrl + \"employees/\" + employeeID,\r\n headers: {\r\n \"Content-Type\": \"application/json\"\r\n },\r\n data: JSON.stringify(employee)\r\n })\r\n .then(function () {\r\n return retrieveEmployee(employeeID);\r\n });\r\n }\r\n\r\n function updateEmployeeProfile(employeeID, profile) {\r\n return $http({\r\n method: \"PUT\",\r\n url: apexApiUrl + \"employees/\" + employeeID + \"/profile\",\r\n headers: { \"Content-Type\": \"application/json\" },\r\n data: profile\r\n });\r\n }\r\n\r\n function updateEmployeeSecuritySettings(employeeID, securitySettings) {\r\n return $http({\r\n method: \"PUT\",\r\n url: `${apexApiUrl}/employees/${employeeID}/security`,\r\n headers: { \"Content-Type\": \"application/json\" },\r\n data: securitySettings\r\n });\r\n }\r\n\r\n function updateEmployeeProfileImage(employeeID, profileImage) {\r\n const formData = new FormData();\r\n formData.append(\"profileImage\", profileImage);\r\n return $http({\r\n method: \"PUT\",\r\n url: `${apexApiUrl}/employees/${employeeID}/profile/image`,\r\n data: formData,\r\n // The following two lines are required to submit the request as multipart/form-data.\r\n transformRequest: id => id,\r\n headers: { \"Content-Type\": undefined }\r\n });\r\n }\r\n\r\n function patchEmployeeProfile(employeeID, profile) {\r\n return $http({\r\n method: \"PATCH\",\r\n url: apexApiUrl + \"employees/\" + employeeID + \"/profile\",\r\n headers: { \"Content-Type\": \"application/json\" },\r\n data: profile\r\n });\r\n }\r\n\r\n function retrieveEmployeeProfile(employeeID) {\r\n return $http({\r\n method: \"GET\",\r\n url: apexApiUrl + \"employees/\" + employeeID + \"/profile\"\r\n })\r\n .then(function (response) {\r\n return response.data;\r\n });\r\n\r\n }\r\n\r\n function retrieveNewEmployeeModel() {\r\n return $http({\r\n method: \"GET\",\r\n url: apexApiUrl + \"employees/new\"\r\n })\r\n .then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n function retrieveEmployeesByRoleName(roleName) {\r\n return $http({\r\n method: \"GET\",\r\n url: apexApiUrl + \"employees/role/\" + roleName\r\n })\r\n .then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n function retrieveEmployeesByModuleAdmin(moduleName) {\r\n return $http.get(apexApiUrl + \"employees/module/\" + moduleName)\r\n .then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n function retrieveEmployeesByRosterAdmin(rosterAdminID) {\r\n return $http.get(apexApiUrl + \"employees/roster\" + (rosterAdminID ? \"/\" + rosterAdminID : \"\"))\r\n .then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n function retrieveEmployeeStatuses() {\r\n return $http.get(apexApiUrl + \"employee-statuses\")\r\n .then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n function retrieveEmployeeAssignableRoles(icdOfficeID) {\r\n return $http.get(apexApiUrl + \"roles/assignable/\" + (icdOfficeID || \"\"))\r\n .then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n function retrieveJobTitles() {\r\n return $http.get(apexApiUrl + \"job-titles\")\r\n .then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n function retrieveCompensationProfiles() {\r\n return $http.get(apexApiUrl + \"compensation-profiles\")\r\n .then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n function retrieveAdministeredModules(icdOfficeID) {\r\n return $http.get(apexApiUrl + \"modules/\" + (icdOfficeID || \"\"))\r\n .then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n function retrieveTerminationReasons() {\r\n return $http.get(apexApiUrl + \"termination-reasons\").then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n function retrieveProfileImageUrl(employeeID) {\r\n return $http.get(apexApiUrl + \"/employees/\" + employeeID + \"/profile/image\", { responseType: 'blob' })\r\n .then(function (results) {\r\n const employeeImage = {};\r\n const file = new Blob([results.data], { type: results.data.type });\r\n employeeImage.file = file;\r\n\r\n return new $q(resolve => {\r\n const fileReader = new FileReader();\r\n fileReader.readAsDataURL(file);\r\n fileReader.onload = function (e) {\r\n employeeImage.Url = e.target.result;\r\n resolve(employeeImage);\r\n }\r\n })\r\n });\r\n }\r\n\r\n function retrieveGenders() {\r\n return $http.get(apexApiUrl + \"/enums/genders\")\r\n .then(function (results) {\r\n return results;\r\n });\r\n }\r\n\r\n function retrieveEmployeeBankInfo(employeeID) {\r\n return $http({\r\n method: \"GET\",\r\n url: apexApiUrl + \"employees/bankinfo/\" + employeeID,\r\n headers: { Accept: \"application/json\" }\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n function retrieveMaritalStatuses() {\r\n return $http({\r\n method: \"GET\",\r\n url: apexApiUrl + \"enums/marital-statuses\",\r\n headers: { Accept: \"application/json\" }\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n function retrieveWithHolding() {\r\n return $http({\r\n method: \"GET\",\r\n url: apexApiUrl + \"enums/withholding-types\",\r\n headers: { Accept: \"application/json\" }\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n function updateEmployeeBankInfo(employeeID, employeeBankInfo) {\r\n return $http({\r\n method: \"PUT\",\r\n url: apexApiUrl + \"employees/bankinfo/\" + employeeID,\r\n headers: { \"Content-Type\": \"application/json\" },\r\n data: JSON.stringify(employeeBankInfo)\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n function retrievePermissions(request) {\r\n return $http({\r\n method: \"GET\",\r\n headers: { Accept: \"application/json\" },\r\n url: apexApiUrl + \"home/permissions\",\r\n params: request\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n function sendPasswordReminder(userName) {\r\n const queryString = utilityService.queryStringify({\r\n // The email address is actually the username.\r\n userName: userName,\r\n emailAddress: userName,\r\n });\r\n return $http({\r\n method: \"POST\",\r\n url: `${apexApiUrl}/home/reset-password${queryString}`\r\n });\r\n }\r\n\r\n /**\r\n * Return whether the following username is available (ie, it has not\r\n * been claimed by another user).\r\n * @param {string} emailAddress The username to check.\r\n * @returns {Promise} Whether the username is available.\r\n */\r\n function isEmailAddressAvailable(emailAddress) {\r\n return $http({\r\n method: \"GET\",\r\n //HACK: Add trailing slash to prevent Sophos from blocking the request due to the \"extension\".\r\n url: apexApiUrl + \"employees/available-emails/\" + emailAddress + \"/\"\r\n })\r\n .then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n function mapEmployeeToDTO(employee) {\r\n return {\r\n FirstName: employee.FirstName,\r\n MiddleName: employee.MiddleName,\r\n LastName: employee.LastName,\r\n UserName: employee.UserName,\r\n EmailAddress: employee.EmailAddress,\r\n Password: employee.Password,\r\n Inactive: employee.Inactive,\r\n InactiveDate: employee.InactiveDate,\r\n GlobalSiteID: employee.GlobalSiteID,\r\n UniqueID: employee.UniqueID,\r\n ADPEmployeeID: employee.ADPEmployeeID,\r\n MeridianEmployeeID: employee.MeridianEmployeeID,\r\n IcdOffices: employee.IcdOffices.map(mapIcdOfficeEmployeeToDTO),\r\n GlobalRoles: employee.GlobalRoles.reduce(function (res, globalRole) {\r\n res[globalRole.RoleID] = globalRole.IsInRole;\r\n return res;\r\n }, {}),\r\n SendWelcomeEmail: employee.SendWelcomeEmail\r\n };\r\n }\r\n\r\n function mapIcdOfficeEmployeeToDTO(office) {\r\n return {\r\n EmployeeStatusID: office.EmployeeStatusID,\r\n PayFrequencyID: office.PayFrequencyID,\r\n HireDate: office.HireDate ? moment(office.HireDate).format(\"YYYY-MM-DD\") : null,\r\n TerminationDate: office.EmployeeStatus && !office.EmployeeStatus.AllowPortalAccess\r\n && office.TerminationDate ? moment(office.TerminationDate).format(\"YYYY-MM-DD\") : null,\r\n TerminationReasonID: office.EmployeeStatus && !office.EmployeeStatus.AllowPortalAccess\r\n ? office.TerminationReasonID : null,\r\n TerminationReasonExtra: office.EmployeeStatus && !office.EmployeeStatus.AllowPortalAccess\r\n ? office.TerminationReasonExtra : null,\r\n IcdOfficeID: office.IcdOfficeID,\r\n JobTitleID: office.JobTitleID,\r\n PayRate: office.PayRate,\r\n CommissionThreshold: office.CommissionThreshold,\r\n CompensationProfileID: office.CompensationProfileID,\r\n DefaultHours: office.DefaultHours,\r\n Salary: office.Salary,\r\n Garnishment: office.Garnishment,\r\n TimeClock: office.TimeClock,\r\n RequireBreak: office.RequireBreak,\r\n IsOnPayroll: office.IsOnPayroll,\r\n TrackRealTime: office.TrackRealTime,\r\n Divisions: office.Divisions.map(function (division) {\r\n return division.Id;\r\n }),\r\n Roles: office.Roles,\r\n AdministeredModules: office.AdministeredModules.reduce(function (res, module) {\r\n res[module.ModuleID] = module.IsModuleAdmin;\r\n return res;\r\n }, {}),\r\n // Onboarding fields.\r\n OnboardingApplicationID: office.OnboardingApplicationID\r\n };\r\n }\r\n}\r\n","export class EmploymentProcessingService {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n constructor($http, Upload, apexApiUrl) {\r\n 'ngInject'\r\n this.$http = $http\r\n this.Upload = Upload\r\n this.apexApiUrl = apexApiUrl\r\n }\r\n\r\n retrieveNewHires() {\r\n return this.$http({\r\n method: \"GET\",\r\n url: this.apexApiUrl + \"employments/new-hires\",\r\n headers: { Accept: \"application/json\" }\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n /**\r\n * Process the new hire with the given employee ID\r\n * @param {Number} employeeID The employee's ID.\r\n * @param {{ EmployeeID: number, ADPEmployeeID: Number, SSN: string, FEIN: string }} request The request data.\r\n * @returns {Promise} The response.\r\n */\r\n processNewHire(employeeID, request) {\r\n return this.$http({\r\n method: \"POST\",\r\n url: this.apexApiUrl + \"employments/new-hires/\" + employeeID,\r\n data: request,\r\n headers: { \"Content-Type\": \"application/json\" }\r\n });\r\n }\r\n\r\n /**\r\n * Get the list of terminations that can be processed by the current user.\r\n * @returns {Promise} The list of terminations.\r\n */\r\n retrieveTerminations() {\r\n return this.$http({\r\n method: \"GET\",\r\n url: this.apexApiUrl + \"employments/terminations\",\r\n headers: { Accept: \"application/json\" }\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n processTermination(employeeID) {\r\n return this.$http({\r\n method: \"POST\",\r\n url: this.apexApiUrl + \"employments/terminations/\" + employeeID,\r\n headers: { \"Content-Type\": \"application/json\" }\r\n });\r\n }\r\n\r\n parseNewHiresDataFromFile(file) {\r\n return this.Upload.upload({\r\n url: this.apexApiUrl + \"/payrolls/read-adp-emp-numbers-from-excel\",\r\n data: { adpImportNumbers: file }\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n parseTerminationsDataFromFile(file) {\r\n return this.Upload.upload({\r\n url: this.apexApiUrl + \"/payrolls/read-adp-emp-numbers-from-excel\",\r\n data: { adpImportNumbers: file }\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n finishNewAdpNumbersImport(uploadedNumbers) {\r\n return this.$http({\r\n method: \"POST\",\r\n url: this.apexApiUrl + \"/payrolls/import-adp-emp-numbers-to-apex\",\r\n data: JSON.stringify(uploadedNumbers),\r\n headers: {\r\n \"Content-Type\": \"application/json\"\r\n }\r\n })\r\n .then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n finishTerminationsImport(employees) {\r\n return this.$http({\r\n method: \"POST\",\r\n url: this.apexApiUrl + \"/payrolls/process-terminated-employees\",\r\n data: JSON.stringify(employees),\r\n headers: {\r\n \"Content-Type\": \"application/json\"\r\n }\r\n })\r\n .then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n}\r\n","export class EventHostService {\r\n constructor($http, apexApiUrl) {\r\n 'ngInject'\r\n this.$http = $http\r\n this.apexApiUrl = apexApiUrl\r\n }\r\n\r\n /**\r\n * Retrieve a list of all the event hosts.\r\n */\r\n retrieveEventHosts(query) {\r\n return this.$http.get(this.apexApiUrl + \"v1/event-hosts/\", {\r\n params: query,\r\n headers: { Accept: \"application/json\" }\r\n })\r\n .then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n retrieveEventHostsPage(pageIndex, query) {\r\n return this.$http.get(this.apexApiUrl + \"v1/event-hosts/page/\" + pageIndex || 0, {\r\n params: query,\r\n headers: { Accept: \"application/json\" }\r\n })\r\n .then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n /**\r\n * Retrieve given event host.\r\n */\r\n retrieveEventHost(eventHostID) {\r\n return this.$http.get(this.apexApiUrl + \"v1/event-hosts/\" + eventHostID, {\r\n headers: { Accept: \"application/json\" }\r\n })\r\n .then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n /**\r\n * Create a new event host.\r\n */\r\n createEventHost(eventHost) {\r\n return this.$http({\r\n method: \"POST\",\r\n url: this.apexApiUrl + \"v1/event-hosts/\",\r\n headers: {\r\n \"Content-Type\": \"application/json\"\r\n },\r\n data: JSON.stringify(eventHost)\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n /**\r\n * Update the given event host.\r\n */\r\n updateEventHost(eventHostID, eventHost) {\r\n return this.$http({\r\n method: \"PUT\",\r\n url: this.apexApiUrl + \"v1/event-hosts/\" + eventHostID,\r\n headers: {\r\n \"Content-Type\": \"application/json\"\r\n },\r\n data: JSON.stringify(eventHost)\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n /**\r\n * Delete the given event host.\r\n */\r\n deleteEventHost(eventHostID) {\r\n return this.$http({\r\n method: \"DELETE\",\r\n url: this.apexApiUrl + \"v1/event-hosts/\" + eventHostID,\r\n headers: {\r\n \"Content-Type\": \"application/json\"\r\n }\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n getEventHostTypes() {\r\n return [\r\n {\r\n Name: \"Retailer\",\r\n Type: \"Retailer\",\r\n HostTypeID: 1\r\n },\r\n {\r\n Name: \"Corporation\",\r\n Type: \"Corporation\",\r\n HostTypeID: 2\r\n },\r\n {\r\n Name: \"Shopping Mall\",\r\n Type: \"ShoppingMall\",\r\n HostTypeID: 3\r\n },\r\n {\r\n Name: \"Special Event\",\r\n Type: \"SpecialEvent\",\r\n HostTypeID: 4\r\n }];\r\n }\r\n\r\n}\r\n","export class HomeService {\r\n constructor($http, apexApiUrl) {\r\n 'ngInject'\r\n this.$http = $http\r\n this.apexApiUrl = apexApiUrl\r\n }\r\n\r\n /**\r\n * Retrieve password validation options\r\n */\r\n retrievePasswordValidationOptions() {\r\n return this.$http.get(this.apexApiUrl + \"home/password-validator/\", {\r\n headers: { Accept: \"application/json\" }\r\n })\r\n .then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n validatePassword(options, firstname, lastname, password) {\r\n firstname = firstname ? firstname.toUpperCase() : '';\r\n lastname = lastname ? lastname.toUpperCase() : '';\r\n let passwordContainsUsername = false;\r\n\r\n if (options.CheckPasswordContainName && options.MinValToCheckName != null) {\r\n const firstNameMatches = firstname.length >= options.MinValToCheckName\r\n && password.toUpperCase().includes(firstname);\r\n const lastNameMatches = lastname.length >= options.MinValToCheckName\r\n && password.toUpperCase().includes(lastname)\r\n passwordContainsUsername = firstNameMatches || lastNameMatches;\r\n }\r\n\r\n const hasRequiredLength = options.RequiredLength > 0 ? password.length >= options.RequiredLength : true;\r\n const hasMaxRequiredLength = options.MaxLength > 0 ? password.length <= options.MaxLength : true;\r\n\r\n const hasLower = options.RequireLowercase ? /[a-z]/.test(password) : true;\r\n const hasUpper = options.RequireUppercase ? /[A-Z]/.test(password) : true;\r\n const hasDigit = options.RequireDigit ? /\\d/.test(password) : true;\r\n const hasSpecial = options.RequireNonLetterOrDigit ? /(_|[^\\w\\d ])/.test(password) : true;\r\n\r\n const isValid = hasRequiredLength && hasLower && hasUpper &&\r\n hasDigit && hasSpecial && hasMaxRequiredLength && !passwordContainsUsername;\r\n\r\n const validationErrors = [];\r\n if (!hasRequiredLength) {\r\n validationErrors.push(\"Password must be at least \" + options.RequiredLength + \" characters\");\r\n }\r\n if (passwordContainsUsername) {\r\n validationErrors.push(\"Password must not contain first or last name\");\r\n }\r\n if (!hasMaxRequiredLength) {\r\n validationErrors.push(\"Passwords must be atmost \" + options.MaxLength + \" characters\");\r\n }\r\n if (!hasLower) {\r\n validationErrors.push(\"Password must have at least 1 lower case letter ('a'-'z')\");\r\n }\r\n if (!hasUpper) {\r\n validationErrors.push(\"Password must have at least 1 upper case letter ('A'-'Z')\");\r\n }\r\n if (!hasDigit) {\r\n validationErrors.push(\"Password must have at least 1 digit\");\r\n }\r\n if (!hasSpecial) {\r\n validationErrors.push(\"Password must have at least 1 special character\");\r\n }\r\n\r\n return {\r\n isValid: isValid,\r\n errors: validationErrors\r\n };\r\n }\r\n\r\n}\r\n","export function HubService($http, apexApiUrl) {\r\n 'ngInject';\r\n return {\r\n retrieveHubs: retrieveHubs,\r\n retrieveHub: retrieveHub,\r\n saveHub: saveHub,\r\n deleteHub: deleteHub\r\n };\r\n\r\n function retrieveHubs() {\r\n return $http({\r\n method: \"GET\",\r\n url: apexApiUrl + \"hubs\"\r\n })\r\n .then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n function retrieveHub(hubID) {\r\n return $http({\r\n method: \"GET\",\r\n url: apexApiUrl + \"hubs/\" + hubID\r\n })\r\n .then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n function saveHub(hub) {\r\n if (!hub.IsNew) {\r\n return $http({\r\n method: \"PUT\",\r\n url: apexApiUrl + \"hubs/\" + hub.Id,\r\n data: JSON.stringify(hub),\r\n headers: { \"Content-Type\": \"application/json\" }\r\n })\r\n .then(function () {\r\n return hub;\r\n });\r\n } else {\r\n return $http({\r\n method: \"POST\",\r\n url: apexApiUrl + \"hubs\",\r\n data: JSON.stringify(hub),\r\n headers: { \"Content-Type\": \"application/json\" }\r\n })\r\n .then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n }\r\n\r\n function deleteHub(hubID) {\r\n return $http({\r\n method: \"DELETE\",\r\n url: apexApiUrl + \"hubs/\" + hubID,\r\n headers: {\r\n \"Content-Type\": \"application/json\"\r\n },\r\n data: {}\r\n });\r\n }\r\n}\r\n","import angular from 'angular'\r\n\r\nexport function IcdCommissionsService($http, apexApiUrl) {\r\n 'ngInject'\r\n const service = {\r\n createIcdCommissions: createIcdCommissions,\r\n retrieveIcdCommissions: retrieveIcdCommissions,\r\n updateIcdCommissions: updateIcdCommissions,\r\n deleteIcdCommissions: deleteIcdCommissions,\r\n createIcdCommissionsAsSingleTier: createIcdCommissionsAsSingleTier,\r\n retrieveIcdCommissionsAsSingleTier: retrieveIcdCommissionsAsSingleTier,\r\n updateIcdCommissionsAsSingleTier: updateIcdCommissionsAsSingleTier\r\n }\r\n\r\n return service;\r\n\r\n function retrieveIcdCommissions(icdCorporationID) {\r\n return $http({\r\n method: \"GET\",\r\n url: apexApiUrl + \"commission-policies\",\r\n headers: {\r\n Accept: 'application/json'\r\n },\r\n params: { icdCorporationID: icdCorporationID }\r\n }).then(function (response) {\r\n return response.data;\r\n })\r\n }\r\n\r\n function createIcdCommissions(commissions) {\r\n const data = stripIcdCommissionTimezones(commissions);\r\n return $http({\r\n method: \"POST\",\r\n url: apexApiUrl + \"commission-policies\",\r\n headers: {\r\n Accept: 'application/json',\r\n 'Content-Type': 'application/json'\r\n },\r\n data: JSON.stringify(data)\r\n })\r\n }\r\n\r\n function updateIcdCommissions(commissions) {\r\n const data = stripIcdCommissionTimezones(commissions);\r\n return $http({\r\n method: \"PUT\",\r\n url: apexApiUrl + \"commission-policies\",\r\n headers: {\r\n Accept: 'application/json',\r\n 'Content-Type': 'application/json'\r\n },\r\n data: JSON.stringify(data)\r\n })\r\n }\r\n\r\n function deleteIcdCommissions(icdCommissions) {\r\n const data = stripIcdCommissionTimezones(icdCommissions);\r\n return $http({\r\n method: \"DELETE\",\r\n url: apexApiUrl + \"commission-policies\",\r\n headers: {\r\n \"Content-Type\": \"application/json\"\r\n },\r\n data: JSON.stringify(data)\r\n });\r\n }\r\n\r\n /**\r\n * Return a copy of the commissions data with local timezone data stripped out\r\n * and converted to string.\r\n */\r\n function stripIcdCommissionTimezones(commissions) {\r\n return commissions.map(function (commission) {\r\n const res = angular.copy(commission);\r\n if (commission.ActiveStart) {\r\n res.ActiveStart = commission.ActiveStart.toString(\"yyyy-MM-dd\");\r\n }\r\n if (commission.ActiveEnd) {\r\n res.ActiveEnd = commission.ActiveEnd.toString(\"yyyy-MM-dd\");\r\n }\r\n return res;\r\n });\r\n }\r\n\r\n /**\r\n * Save the single-tier commission data using its underlying tiers to store the data.\r\n */\r\n function createIcdCommissionsAsSingleTier(icdCommissionsAsSingleTier) {\r\n for (let i = 0; i < icdCommissionsAsSingleTier.length; i++) {\r\n createTiersFromSingleTierIcdCommission(icdCommissionsAsSingleTier[i]);\r\n }\r\n return service.createicdCommissions(icdCommissionsAsSingleTier)\r\n .then(function (response) {\r\n // Convert the multi-tiered commission model into data that can be represented by a single row.\r\n return response.data.map(flattenIcdCommission);\r\n });\r\n }\r\n\r\n function retrieveIcdCommissionsAsSingleTier() {\r\n return retrieveIcdCommissions()\r\n .then(function (icdCommissions) {\r\n // Convert the multi-tiered commission model into data that can be represented by a single row.\r\n return icdCommissions.map(flattenIcdCommission);\r\n });\r\n }\r\n\r\n /**\r\n * Save the single-tier commission data using its underlying tiers to store the data.\r\n */\r\n function updateIcdCommissionsAsSingleTier(icdCommissionsAsSingleTier) {\r\n for (let i = 0; i < icdCommissionsAsSingleTier.length; i++) {\r\n createTiersFromSingleTierIcdCommission(icdCommissionsAsSingleTier[i]);\r\n }\r\n return updateIcdCommissions(icdCommissionsAsSingleTier);\r\n }\r\n\r\n /**\r\n * Aggregate the icd commission's set of tiers into a single top-level policy.\r\n */\r\n function flattenIcdCommission(icdCommission) {\r\n if (icdCommission.IcdCommissionTiers.length > 0) {\r\n const primaryTier = icdCommission.IcdCommissionTiers[0];\r\n icdCommission.DailyNCRThreshold = primaryTier.DailyNCRThreshold;\r\n icdCommission.TierRate = (icdCommission.IcdCommissionTiers.filter(function (tier) {\r\n return tier.DailyNCRThreshold < tier.EndAmount;\r\n })[0] || primaryTier).TierRate;\r\n }\r\n return icdCommission;\r\n }\r\n\r\n /**\r\n * Create a set of commission tiers from a commission policy that contains flat data.\r\n */\r\n function createTiersFromSingleTierIcdCommission(icdCommissionAsSingleTier) {\r\n if (icdCommissionAsSingleTier.IcdCommissionTiers.length > 0) {\r\n const primaryTier = icdCommissionAsSingleTier.IcdCommissionTiers[0];\r\n primaryTier.StartAmount = 0;\r\n primaryTier.EndAmount = 1000000;\r\n primaryTier.TierRate = icdCommissionAsSingleTier.TierRate;\r\n primaryTier.DailyNCRThreshold = icdCommissionAsSingleTier.DailyNCRThreshold;\r\n // Remove tiers beyond the first one.\r\n icdCommissionAsSingleTier.IcdCommissionTiers.splice(1);\r\n } else {\r\n icdCommissionAsSingleTier.IcdCommissionTiers = [{\r\n IsNew: true,\r\n TierNo: 1,\r\n StartAmount: 0,\r\n EndAmount: 1000000,\r\n TierRate: icdCommissionAsSingleTier.TierRate,\r\n DailyNCRThreshold: icdCommissionAsSingleTier.DailyNCRThreshold\r\n }]\r\n }\r\n }\r\n}\r\n","import { CompanyStatusInquiryReport } from \"@herbjoy/apex-api-models\";\r\nimport { IHttpService } from \"angular\";\r\n\r\nexport class IcdCorporationReportService {\r\n constructor(private $http: IHttpService, private apexApiUrl: string) {\r\n 'ngInject';\r\n }\r\n\r\n retrieveCompanyStatusInquiryReports() {\r\n return this.$http({\r\n method: \"GET\",\r\n url: `${this.apexApiUrl}/corporations/inquiry`,\r\n headers: { Accept: \"application/json\" }\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n}\r\n\r\n","import { LeadBatchListResponse } from '@herbjoy/apex-api-models';\r\nimport angular, { IHttpService, IPromise } from 'angular'\r\nimport moment from 'moment'\r\n\r\nimport { mapLeadSnapshotVM, hydrateLeadMarkerList } from './leads.service'\r\n\r\ninterface LeadBatchGetRequest {\r\n startDate?: Date;\r\n endDate?: Date;\r\n divisionID?: number;\r\n}\r\n\r\nexport interface LeadBatchService {\r\n // TODO: Convert the factory into a service instead of making it conform to an interface.\r\n retrieveLeadBatches(query?: LeadBatchGetRequest): IPromise;\r\n}\r\n\r\nexport function LeadBatchServiceFactory($http: IHttpService, apexApiUrl: string): LeadBatchService {\r\n 'ngInject'\r\n const service = {\r\n retrieveLeadBatches: retrieveLeadBatches,\r\n retrieveLeadBatchJob: retrieveLeadBatchJob,\r\n retrieveLeadBatch: retrieveLeadBatch,\r\n createLeadBatch: createLeadBatch,\r\n retrieveLeadGroups: retrieveLeadGroups,\r\n retrieveLeadGroup: retrieveLeadGroup,\r\n patchLeadGroup: patchLeadGroup,\r\n deleteLeadBatch: deleteLeadBatch,\r\n removeLeadGroupGeography: removeLeadGroupGeography,\r\n createLeadGroupGeography: createLeadGroupGeography,\r\n updateLeadGroupGeography: updateLeadGroupGeography,\r\n createLeadTerritory: createLeadTerritory,\r\n updateLeadTerritory: updateLeadTerritory,\r\n removeLeadTerritory: removeLeadTerritory,\r\n retrieveLeadGroupTerritories: retrieveLeadGroupTerritories,\r\n retrieveLeadGroupLeadsReport: retrieveLeadGroupLeadsReport,\r\n retrieveLeadGroupLeads: retrieveLeadGroupLeads,\r\n retrieveLeadTerritoryOffices: retrieveLeadTerritoryOffices,\r\n retrieveLeadGroupGeographiesOffices: retrieveLeadGroupGeographiesOffices,\r\n retrieveLeadTerritories: retrieveLeadTerritories,\r\n retrieveLeadTerritory: retrieveLeadTerritory,\r\n retrieveTerritoryOfficeHistory: retrieveTerritoryOfficeHistory,\r\n retrieveTerritoriesLeadsCount: retrieveTerritoriesLeadsCount,\r\n retrieveTerritoriesOfficeHistory: retrieveTerritoriesOfficeHistory,\r\n updateLeadGroupTerritoriesOffices: updateLeadGroupTerritoriesOffices\r\n };\r\n\r\n return service;\r\n\r\n function retrieveLeadBatches(query: LeadBatchGetRequest) {\r\n return $http({\r\n method: \"GET\",\r\n url: apexApiUrl + \"lead-batches\",\r\n params: query\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n function retrieveLeadBatchJob(id) {\r\n return $http({\r\n method: \"GET\",\r\n url: apexApiUrl + \"lead-batch-jobs/\" + id\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n function retrieveLeadBatch(leadBatchID) {\r\n return $http({\r\n method: \"GET\",\r\n url: apexApiUrl + \"lead-batches/\" + leadBatchID\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n function createLeadBatch(request) {\r\n return $http({\r\n method: \"POST\",\r\n url: apexApiUrl + \"lead-batches\",\r\n headers: { \"Content-Type\": \"application/json\" },\r\n data: request\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n function retrieveLeadGroups(query) {\r\n const params = angular.copy(query);\r\n if (params.containsDate) {\r\n params.containsDate = moment(params.containsDate).format(\"YYYY-MM-DD\")\r\n }\r\n\r\n return $http({\r\n method: \"GET\",\r\n url: apexApiUrl + \"lead-groups\",\r\n params: params\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n function retrieveLeadGroupLeads(leadGroupID, params) {\r\n return $http({\r\n method: \"GET\",\r\n url: apexApiUrl + \"lead-groups/\" + leadGroupID + \"/leads\",\r\n params: params\r\n }).then(function (response) {\r\n return hydrateLeadMarkerList(response.data);\r\n }).then(function (leads) {\r\n // Map the response data into VM format.\r\n return leads.map(function (lead) {\r\n const marker = mapLeadSnapshotVM(lead);\r\n return marker;\r\n });\r\n })\r\n }\r\n\r\n function retrieveLeadGroup(leadGroupID) {\r\n return $http({\r\n method: \"GET\",\r\n url: apexApiUrl + \"lead-groups/\" + leadGroupID\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n function retrieveLeadGroupTerritories(leadGroupID, params) {\r\n return $http({\r\n method: \"GET\",\r\n url: apexApiUrl + \"lead-groups/\" + leadGroupID + \"/territories\",\r\n params: params\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n function createLeadGroupGeography(request) {\r\n return $http({\r\n method: \"POST\",\r\n url: apexApiUrl + \"lead-groups/\" + request.LeadGroupID + \"/geographies\",\r\n headers: { \"Content-Type\": \"application/json\" },\r\n data: request\r\n });\r\n }\r\n\r\n function updateLeadGroupGeography(request) {\r\n return $http({\r\n method: \"PUT\",\r\n url: apexApiUrl + \"lead-groups/\" + request.LeadGroupID + \"/geographies/\" + request.LeadGroupGeographyID,\r\n headers: { \"Content-Type\": \"application/json\" },\r\n data: request\r\n });\r\n }\r\n\r\n function patchLeadGroup(request) {\r\n return $http({\r\n method: \"PATCH\",\r\n url: apexApiUrl + \"lead-groups/\" + request.LeadGroupID,\r\n headers: { \"Content-Type\": \"application/json\" },\r\n data: request\r\n });\r\n }\r\n\r\n function deleteLeadBatch(leadBatchID) {\r\n return $http({\r\n method: \"DELETE\",\r\n url: apexApiUrl + \"lead-batches/\" + leadBatchID\r\n });\r\n }\r\n\r\n function removeLeadGroupGeography(request) {\r\n return $http({\r\n method: \"DELETE\",\r\n url: apexApiUrl + \"lead-groups/\" + request.LeadGroupID + \"/geographies/\" + request.LeadGroupGeographyID,\r\n headers: { \"Content-Type\": \"application/json\" },\r\n data: request\r\n });\r\n }\r\n\r\n function createLeadTerritory(request) {\r\n return $http({\r\n method: \"POST\",\r\n url: apexApiUrl + \"territories\",\r\n headers: { \"Content-Type\": \"application/json\" },\r\n data: request\r\n });\r\n }\r\n\r\n function updateLeadTerritory(request) {\r\n return $http({\r\n method: \"PUT\",\r\n url: apexApiUrl + \"territories/\" + request.LeadTerritoryID,\r\n headers: { \"Content-Type\": \"application/json\" },\r\n data: request\r\n });\r\n }\r\n\r\n function removeLeadTerritory(request) {\r\n return $http({\r\n method: \"DELETE\",\r\n url: apexApiUrl + \"territories/\" + request.LeadTerritoryID,\r\n headers: { \"Content-Type\": \"application/json\" },\r\n data: request\r\n });\r\n }\r\n\r\n function retrieveLeadTerritoryOffices(leadGroupID, leadTerritoryID) {\r\n return $http({\r\n method: \"GET\",\r\n url: apexApiUrl + \"lead-groups/\" + leadGroupID + \"/territories/\" + leadTerritoryID + \"/offices\"\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n function retrieveLeadGroupGeographiesOffices(leadGroupID) {\r\n return $http({\r\n method: \"GET\",\r\n url: apexApiUrl + \"lead-groups/\" + leadGroupID + \"/geographies/offices\"\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n function retrieveLeadGroupLeadsReport(query) {\r\n return $http({\r\n method: \"GET\",\r\n url: apexApiUrl + \"reports/owner-leads\",\r\n headers: { \"Content-Type\": \"application/json\" },\r\n params: query\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n function retrieveLeadTerritories(query) {\r\n return $http({\r\n method: \"GET\",\r\n url: apexApiUrl + \"lead-territories\",\r\n headers: { \"Content-Type\": \"application/json\" },\r\n params: query\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n function retrieveLeadTerritory(leadTerritoryID) {\r\n return $http({\r\n method: \"GET\",\r\n url: apexApiUrl + \"lead-territories/\" + leadTerritoryID,\r\n headers: { \"Content-Type\": \"application/json\" },\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n function retrieveTerritoryOfficeHistory(query) {\r\n return $http({\r\n method: \"GET\",\r\n url: apexApiUrl + \"territory-office-history\",\r\n headers: { \"Content-Type\": \"application/json\" },\r\n params: query\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n function retrieveTerritoriesLeadsCount(query) {\r\n return $http({\r\n method: \"GET\",\r\n url: apexApiUrl + \"lead-territories/office/\" + query.IcdOfficeID,\r\n headers: { \"Content-Type\": \"application/json\" },\r\n params: query\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n function retrieveTerritoriesOfficeHistory(query) {\r\n return $http({\r\n method: \"GET\",\r\n url: apexApiUrl + \"territories-office-history\",\r\n headers: { \"Content-Type\": \"application/json\" },\r\n params: query\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n /**\r\n * Update the shared offices of the territories associated with the given lead group's offices.\r\n * @param {any} request A request containing leadgroupID their assigned offices\r\n */\r\n function updateLeadGroupTerritoriesOffices(request) {\r\n return $http({\r\n method: \"PATCH\",\r\n url: apexApiUrl + \"lead-group/\" + request.LeadGroupID + \"/territories/offices\",\r\n data: request,\r\n headers: { \"Content-Type\": \"application/json\" }\r\n });\r\n }\r\n}\r\n","export function LeadOfficeTeamService($http, $q, apexApiUrl) {\r\n 'ngInject';\r\n return {\r\n createLeadOfficeTeam: createLeadOfficeTeam,\r\n retrieveLeadOfficeTeams: retrieveLeadOfficeTeams,\r\n updateLeadOfficeTeam: updateLeadOfficeTeam,\r\n deleteLeadOfficeTeam: deleteLeadOfficeTeam\r\n };\r\n\r\n function retrieveLeadOfficeTeams() {\r\n return $http({\r\n method: \"GET\",\r\n url: apexApiUrl + \"lead-office-teams\",\r\n headers: { Accept: \"application/json\" }\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n function createLeadOfficeTeam(data) {\r\n\r\n return $http({\r\n method: \"POST\",\r\n data: data,\r\n url: apexApiUrl + \"lead-office-teams\",\r\n headers: { Accept: \"application/json\" }\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n function updateLeadOfficeTeam(id, leadOfficeTeam) {\r\n\r\n return $http({\r\n method: \"PUT\",\r\n url: apexApiUrl + \"lead-office-teams/\" + id,\r\n data: leadOfficeTeam\r\n\r\n });\r\n }\r\n\r\n function deleteLeadOfficeTeam(id) {\r\n return $http({\r\n method: \"DELETE\",\r\n url: apexApiUrl + \"lead-office-teams/\" + id\r\n });\r\n }\r\n}\r\n","import { IHttpService } from \"angular\"\r\n\r\n/**\r\n * A service that provides data for leads policies.\r\n */\r\nexport class LeadsPolicyService {\r\n /**\r\n * Create a new leads policy service implemented using the REST API.\r\n * @param {IHttpService} $http The HTTP client service.\r\n * @param {string} apexApiUrl The root URL for the Apex API\r\n */\r\n constructor(private $http: IHttpService, private apexApiUrl: string) {\r\n 'ngInject'\r\n this.$http = $http\r\n this.apexApiUrl = apexApiUrl\r\n }\r\n\r\n /**\r\n * Get a leads policy with the given ID\r\n * @param {number} leadsPolicyID The ID for the leads policy\r\n * @returns {Promise} The resolved leads policy.\r\n */\r\n retrieveLeadsPolicy(leadsPolicyID) {\r\n return this.$http({\r\n method: \"GET\",\r\n url: `${this.apexApiUrl}/leads-policies/${leadsPolicyID}`\r\n }).then(response => response.data)\r\n }\r\n\r\n /**\r\n * Get a leads policy with the given ID\r\n * @param {number} divisionID The ID for the division.\r\n * @returns {Promise} The resolved leads policy.\r\n */\r\n retrieveDivisionLeadsPolicy(divisionID) {\r\n return this.$http({\r\n method: \"GET\",\r\n url: `${this.apexApiUrl}/divisions/${divisionID}/leads-policy`,\r\n }).then(response => response.data)\r\n }\r\n\r\n /**\r\n * Create or replace the leads policy for the specific division.\r\n * @param {number} divisionID The ID for the leads policy being defined.\r\n * @param {any} request The request body for the update.\r\n */\r\n defineDivisionLeadsPolicy(divisionID, request) {\r\n return this.$http({\r\n method: \"PUT\",\r\n url: `${this.apexApiUrl}/divisions/${divisionID}/leads-policy`,\r\n data: request\r\n }).then(response => response.data)\r\n }\r\n\r\n /**\r\n * Update the leads policy according to the request body.\r\n * @param {number} leadsPolicyID The ID for the leads policy being updated\r\n * @param {any} request The request body for the update.\r\n */\r\n updateLeadsPolicy(leadsPolicyID, request) {\r\n return this.$http({\r\n method: \"PUT\",\r\n url: `${this.apexApiUrl}/leads-policies/${leadsPolicyID}`,\r\n data: request\r\n }).then(response => response.data)\r\n }\r\n\r\n /**\r\n * Remove the leads policy for the specific division.\r\n * @param {number} divisionID The ID for the leads policy being defined.\r\n * @param {any} request The request body for the update.\r\n */\r\n removeDivisionLeadsPolicy(divisionID) {\r\n return this.$http({\r\n method: \"DELETE\",\r\n url: `${this.apexApiUrl}/divisions/${divisionID}/leads-policy`\r\n }).then(response => response.data)\r\n }\r\n\r\n retrieveLeadsPolicyImportSchemas(leadsPolicyID: number) {\r\n return this.$http({\r\n method: \"GET\",\r\n url: `${this.apexApiUrl}/leads-policies/${leadsPolicyID}/import-schemas`\r\n }).then(response => response.data);\r\n }\r\n}\r\n","export class LegalNoticeService {\r\n constructor($http, apexApiUrl) {\r\n 'ngInject'\r\n this.$http = $http\r\n this.apexApiUrl = apexApiUrl\r\n }\r\n\r\n /**\r\n * Retrieve a list of all legal notices.\r\n */\r\n retrieveLegalNotices(query) {\r\n return this.$http.get(this.apexApiUrl + \"legal-notices/\", {\r\n params: query,\r\n headers: { Accept: \"application/json\" }\r\n })\r\n .then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n /**\r\n * Acknowledge legal notice content\r\n */\r\n acknowledgeLegalNoticeContent(legalNoticeID, legalNoticeContentID) {\r\n return this.$http({\r\n method: \"PUT\",\r\n url: this.apexApiUrl + \"legal-notices/\" + legalNoticeID + \"/acknowledge/\" + legalNoticeContentID,\r\n headers: {\r\n \"Content-Type\": \"application/json\"\r\n }\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n /**\r\n * Create a new legal notice.\r\n */\r\n createLegalNotice(notice) {\r\n return this.$http({\r\n method: \"POST\",\r\n url: this.apexApiUrl + \"legal-notices/\",\r\n headers: {\r\n \"Content-Type\": \"application/json\"\r\n },\r\n data: JSON.stringify(notice)\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n /**\r\n * Update the legal notice with the given ID.\r\n */\r\n updateLegalNotice(legalNoticeID, notice) {\r\n return this.$http({\r\n method: \"PUT\",\r\n url: this.apexApiUrl + \"legal-notices/\" + legalNoticeID,\r\n headers: {\r\n \"Content-Type\": \"application/json\"\r\n },\r\n data: JSON.stringify(notice)\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n /**\r\n * Delete the legal notice with the given ID.\r\n */\r\n deleteLegalNotice(legalNoticeID) {\r\n return this.$http({\r\n method: \"DELETE\",\r\n url: this.apexApiUrl + \"legal-notices/\" + legalNoticeID,\r\n headers: {\r\n \"Content-Type\": \"application/json\"\r\n }\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n}\r\n","export class MessageService {\r\n constructor($http, apexApiUrl) {\r\n 'ngInject'\r\n this.$http = $http\r\n this.apexApiUrl = apexApiUrl\r\n }\r\n\r\n /**\r\n * Retrieve a list of all message types.\r\n */\r\n retrieveMessageTypes() {\r\n return this.$http.get(this.apexApiUrl + \"message-types/\")\r\n .then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n /**\r\n * Retrieve a list of all non-archived bulletins.\r\n */\r\n retrieveBulletins() {\r\n return this.$http.get(this.apexApiUrl + \"bulletins/\", {\r\n headers: { Accept: \"application/json\" }\r\n })\r\n .then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n /**\r\n * Return all unacknowledged bulletins from the current user's inbox.\r\n * @returns {Promise} The list of unacknowedged bulletins visible\r\n * to the current user.\r\n */\r\n retrieveBulletinInbox() {\r\n return this.$http({\r\n method: \"GET\",\r\n url: this.apexApiUrl + \"bulletins/inbox\"\r\n }).then(response => response.data);\r\n }\r\n\r\n /**\r\n * Acknowledge that the current user has read the bulletin.\r\n * @param {number} bulletinID The bulletin to be acknowledged\r\n * @param {boolean} sendEmailCopy Indicates whether the user should be emailed a copy of the bulletin\r\n * @returns {Promise} Resolve once the acknowledgement has been confirmed.\r\n */\r\n acknowledgeBulletin(bulletinID, sendEmailCopy) {\r\n return this.$http.post(this.apexApiUrl + \"bulletins/inbox/\" + bulletinID + \"/acknowledge\"\r\n + \"?sendEmailCopy=\" + sendEmailCopy);\r\n }\r\n\r\n /**\r\n * Retrieve data about the specific bulletin with the given ID.\r\n */\r\n retrieveBulletin(bulletinID) {\r\n return this.$http.get(this.apexApiUrl + \"bulletins/\" + bulletinID, {\r\n headers: { Accept: \"application/json\" }\r\n })\r\n .then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n /**\r\n * Create a new bulletin from the given bulletin object.\r\n * @param {Bulletin} bulletin The bulletin body to be created.\r\n * @returns {Promise} The created bulletin contents.\r\n */\r\n createBulletin(bulletin) {\r\n return this.$http({\r\n method: \"POST\",\r\n url: this.apexApiUrl + \"bulletins/\",\r\n headers: {\r\n \"Content-Type\": \"application/json\"\r\n },\r\n data: bulletin\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n /**\r\n * Update the bulletin with the given ID.\r\n * @param {number} bulletinID The ID of the bulletin to be updated\r\n * @param {Bulletin} bulletin The updated bulletin contents\r\n * @returns {Promise} Resolve asynchronously once the update is complete.\r\n */\r\n updateBulletin(bulletinID, bulletin) {\r\n return this.$http({\r\n method: \"PUT\",\r\n url: this.apexApiUrl + \"bulletins/\" + bulletinID,\r\n headers: {\r\n \"Content-Type\": \"application/json\"\r\n },\r\n data: JSON.stringify(bulletin)\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n /**\r\n * Deliver emails to all recipients of the given bulletin immediately, regardless\r\n * of whether they have acknowledged or already had a copy of the bulletin sent to them.\r\n * @param {number} bulletinID The bulletin whose recipients will be contacted.\r\n */\r\n deliverEmails(bulletinID) {\r\n //TODO: Make RESTful. Eg, POST to /bulletin-deliveries and return all queued messages created.\r\n return this.$http({\r\n method: \"POST\",\r\n url: this.apexApiUrl + \"bulletins/\" + bulletinID + \"/deliver\",\r\n headers: {\r\n \"Content-Type\": \"application/json\"\r\n },\r\n data: {}\r\n });\r\n }\r\n\r\n createMessage(message) {\r\n return this.$http({\r\n method: \"POST\",\r\n url: this.apexApiUrl + \"messages\",\r\n data: message\r\n });\r\n }\r\n}\r\n","export function MultiPlayCommissionPolicyService($http, $q, apexApiUrl) {\r\n 'ngInject';\r\n const service = {\r\n retrieveMultiPlayCommissionPolicies: retrieveMultiPlayCommissionPolicies,\r\n retrieveMultiPlayCommissionPolicy: retrieveMultiPlayCommissionPolicy,\r\n createMultiPlayCommissionPolicy: createMultiPlayCommissionPolicy,\r\n updateMultiPlayCommissionPolicy: updateMultiPlayCommissionPolicy,\r\n deleteMultiPlayCommissionPolicy: deleteMultiPlayCommissionPolicy,\r\n duplicateMultiPlayCommissionPolicyExists: duplicateMultiPlayCommissionPolicyExists\r\n };\r\n\r\n return service;\r\n\r\n function retrieveMultiPlayCommissionPolicies(divisionID) {\r\n return $http({\r\n method: \"GET\",\r\n url: apexApiUrl + \"divisions/\" + divisionID + \"/multi-play-commission-policies\",\r\n headers: {\r\n Accept: 'application/json'\r\n }\r\n }).then(function (response) {\r\n return response.data;\r\n })\r\n }\r\n\r\n function retrieveMultiPlayCommissionPolicy(multiPlayCommissionPolicyID) {\r\n return $http({\r\n method: \"GET\",\r\n url: apexApiUrl + \"multi-play-commission-policies/\" + multiPlayCommissionPolicyID,\r\n headers: {\r\n Accept: \"application/json\"\r\n }\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n function createMultiPlayCommissionPolicy(multiPlayCommissionPolicy) {\r\n return $http({\r\n method: \"POST\",\r\n url: apexApiUrl + \"multi-play-commission-policies\",\r\n headers: {\r\n Accept: \"application/json\",\r\n \"Content-Type\": \"application/json\"\r\n },\r\n data: multiPlayCommissionPolicy\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n function updateMultiPlayCommissionPolicy(multiPlayCommissionPolicyID, multiPlayCommissionPolicy) {\r\n return $http({\r\n method: \"PUT\",\r\n url: apexApiUrl + \"multi-play-commission-policies/\" + multiPlayCommissionPolicyID,\r\n headers: {\r\n Accept: \"application/json\",\r\n \"Content-Type\": \"application/json\"\r\n },\r\n data: multiPlayCommissionPolicy\r\n })\r\n }\r\n\r\n function deleteMultiPlayCommissionPolicy(multiPlayCommissionPolicyID) {\r\n return $http({\r\n method: \"DELETE\",\r\n url: apexApiUrl + \"multi-play-commission-policies/\" + multiPlayCommissionPolicyID\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n function duplicateMultiPlayCommissionPolicyExists(commissionPolicy, commissionPolicies) {\r\n let anyDuplicates = false;\r\n if (commissionPolicy.Product && commissionPolicy.ProductLine) {\r\n anyDuplicates = commissionPolicies.reduce(function (any, other) {\r\n return any || other !== commissionPolicy\r\n && other.Product && other.Product.ProductID === commissionPolicy.Product.ProductID\r\n && other.ProductLine\r\n && other.ProductLine.ProductLineID === commissionPolicy.ProductLine.ProductLineID;\r\n }, false);\r\n }\r\n return anyDuplicates;\r\n }\r\n\r\n}\r\n","import { IcdCorporationManager, IcdCorporationManagerRM } from \"@herbjoy/apex-api-models\";\r\nimport { IHttpService } from \"angular\";\r\n\r\nexport class NationalConsultantService {\r\n constructor(private $http: IHttpService, private apexApiUrl: string) {\r\n 'ngInject';\r\n }\r\n\r\n retrieveNationalConsultants() {\r\n return this.$http({\r\n method: \"GET\",\r\n url: this.apexApiUrl + \"national-consultants\"\r\n })\r\n .then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n retrieveNationalConsultant(nationalConsultantID: number) {\r\n return this.$http({\r\n method: \"GET\",\r\n url: this.apexApiUrl + \"national-consultants/\" + nationalConsultantID\r\n })\r\n .then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n saveNationalConsultant(nationalConsultant: IcdCorporationManager) {\r\n if (nationalConsultant.Id) {\r\n return this.$http({\r\n method: \"PUT\",\r\n url: this.apexApiUrl + \"national-consultants/\" + nationalConsultant.Id,\r\n data: JSON.stringify(nationalConsultant),\r\n headers: { \"Content-Type\": \"application/json\" }\r\n })\r\n .then(function (response) {\r\n return nationalConsultant;\r\n });\r\n } else {\r\n return this.$http({\r\n method: \"POST\",\r\n url: this.apexApiUrl + \"national-consultants\",\r\n data: JSON.stringify(nationalConsultant),\r\n headers: { \"Content-Type\": \"application/json\" }\r\n })\r\n .then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n }\r\n\r\n deleteNationalConsultant(nationalConsultantID: number) {\r\n return this.$http({\r\n method: \"DELETE\",\r\n url: this.apexApiUrl + \"national-consultants/\" + nationalConsultantID,\r\n headers: {\r\n \"Content-Type\": \"application/json\"\r\n },\r\n data: {}\r\n });\r\n }\r\n}\r\n","import { IHttpService, IQService } from \"angular\";\r\nimport { InstanceDb } from \"../instance-db.service\";\r\n\r\nexport class NavigationService {\r\n constructor(private $http: IHttpService, private $q: IQService,\r\n private instanceDb: InstanceDb,\r\n private apexApiUrl: string) {\r\n \"ngInject\"\r\n\r\n this.$http = $http\r\n this.$q = $q\r\n this.apexApiUrl = apexApiUrl\r\n }\r\n\r\n /**\r\n * Return the list of navigation modules visible to the current user.\r\n * @returns {Promise} The list of navigation items.\r\n */\r\n retrieveNavigationModules() {\r\n const cached = this.instanceDb.sessionStorage.getItem(\"apexNavigation\");\r\n if (cached) {\r\n return this.$q.when(JSON.parse(cached))\r\n }\r\n\r\n return this.$http({\r\n method: \"GET\",\r\n url: this.apexApiUrl + \"Home/navigation-modules\",\r\n headers: { Accept: \"application/json\" }\r\n }).then(response => {\r\n this.instanceDb.sessionStorage.setItem(\"apexNavigation\", JSON.stringify(response.data))\r\n return response.data\r\n })\r\n }\r\n}\r\n","import moment from 'moment'\r\nimport {\r\n OnboardingApplicationResponse, GetOnboardingApplicationQuery,\r\n OnboardingApplicationPatchRequest, OnboardingApplicationTransferRequest,\r\n SgiIdHistoryModel, SgiIdAssignmentUpsertRequest, PagedEntityList\r\n} from '@herbjoy/apex-api-models';\r\nimport { IHttpService, IPromise } from 'angular';\r\n\r\nimport { OnboardingApplication } from '../../../apex-main-app/onboarding/application/edit-onboarding-application/edit-onboarding-application.component';\r\n\r\nexport class OnboardingApplicationService {\r\n constructor(private $http: IHttpService, private apexApiUrl: string) {\r\n 'ngInject';\r\n }\r\n\r\n retrieveOnboardingApplications(): IPromise {\r\n return this.$http({\r\n method: \"GET\",\r\n url: this.apexApiUrl + \"onboarding-applications\",\r\n headers: { Accept: \"application/json\" }\r\n }).then(response => {\r\n return response.data;\r\n });\r\n }\r\n\r\n retrieveOnboardingApplicationsPage(pageIndex: number, query: GetOnboardingApplicationQuery):\r\n IPromise> {\r\n return this.$http>({\r\n method: \"GET\",\r\n url: this.apexApiUrl + \"onboarding-applications/page/\" + (pageIndex || 0).toString(),\r\n params: query,\r\n headers: { Accept: \"application/json\" }\r\n })\r\n .then(response => {\r\n return response.data;\r\n });\r\n }\r\n\r\n retrieveOnboardingApplication(id: number): IPromise {\r\n return this.$http({\r\n method: \"GET\",\r\n url: this.apexApiUrl + \"onboarding-applications/\" + id,\r\n headers: { Accept: \"application/json\" }\r\n }).then(response => {\r\n return response.data;\r\n });\r\n }\r\n\r\n createOnboardingApplication(onboardingApplication: OnboardingApplication) {\r\n // The new onboarding application must be submitted as a FormData\r\n // since some of the fields have to be in multipart/form-data format.\r\n const formData = new FormData();\r\n formData.append(\"IsSelfSignUp\", onboardingApplication.IsSelfSignUp || false);\r\n formData.append(\"DivisionID\", onboardingApplication.DivisionID);\r\n formData.append(\"IcdOfficeID\", onboardingApplication.IcdOfficeID);\r\n formData.append(\"Password\", onboardingApplication.Password || \"\");\r\n formData.append(\"Applicant.FirstName\", onboardingApplication.Applicant.FirstName || \"\");\r\n formData.append(\"Applicant.LastName\", onboardingApplication.Applicant.LastName || \"\");\r\n formData.append(\"Applicant.EmailAddress\", onboardingApplication.Applicant.EmailAddress || \"\");\r\n formData.append(\"Applicant.UserName\", onboardingApplication.Applicant.UserName || \"\");\r\n if (onboardingApplication.Applicant.CellPhone) {\r\n formData.append(\"Applicant.CellPhone.PhoneNumber\", onboardingApplication.Applicant.CellPhone.PhoneNumber || \"\");\r\n formData.append(\"Applicant.CellPhone.Extension\", onboardingApplication.Applicant.CellPhone.Extension || \"\");\r\n }\r\n const dob = onboardingApplication.Applicant.DateOfBirth;\r\n formData.append(\"Applicant.DateOfBirth\", dob ? moment(dob).format(\"YYYY-MM-DD\") : \"\");\r\n onboardingApplication.OnboardingDocuments.forEach(function (onboardingDocument, i) {\r\n formData.append(\"OnboardingDocuments[\" + i + \"]\", onboardingDocument);\r\n });\r\n formData.append(\"InitialOnboardingApplicationStatusID\", onboardingApplication.InitialOnboardingApplicationStatusID);\r\n\r\n return this.$http({\r\n method: \"POST\",\r\n url: this.apexApiUrl + \"onboarding-applications\",\r\n data: formData,\r\n // The following two lines are required to submit the request as multipart/form-data.\r\n transformRequest: id => id,\r\n headers: { \"Content-Type\": undefined }\r\n }).then(response => {\r\n return response.data;\r\n });\r\n }\r\n\r\n patchOnboardingApplication(id: number, patch: OnboardingApplicationPatchRequest): IPromise {\r\n return this.$http({\r\n method: \"PATCH\",\r\n url: this.apexApiUrl + \"onboarding-applications/\" + id,\r\n data: patch\r\n }).then(() => null);\r\n }\r\n\r\n deleteOnboardingApplication(id: number): IPromise {\r\n return this.$http({\r\n method: \"DELETE\",\r\n url: this.apexApiUrl + \"onboarding-applications/\" + id\r\n }).then(() => null);\r\n }\r\n\r\n updateOnboardingDocument(fileUrl, document) {\r\n const formData = new FormData();\r\n formData.append(\"document\", document);\r\n\r\n return this.$http({\r\n method: \"PUT\",\r\n url: fileUrl,\r\n data: formData,\r\n transformRequest: id => id,\r\n headers: { \"Content-Type\": undefined }\r\n });\r\n }\r\n\r\n transferOnboardingApplication(id: number, transfer: OnboardingApplicationTransferRequest): IPromise {\r\n return this.$http({\r\n method: \"PATCH\",\r\n url: this.apexApiUrl + \"onboarding-application-transfer/\" + id,\r\n data: transfer\r\n }).then(() => null);\r\n }\r\n\r\n /**\r\n * Get the history of status changes for the given application.\r\n * @param {number} onboardingApplicationID\r\n * @returns {Promise<{OnboardingStatus: {Id: number, Value: string, Text: string}, EffectiveDate: Date, Comments: string}>}\r\n * The resolved list of status changes.\r\n */\r\n //retrieveOnboardingApplicationStatusHistory(onboardingApplicationID) {\r\n // const statuses = this.onboardingStatusService.retrieveOnboardingStatuses();\r\n // const statusHistory = this.$http({\r\n // method: \"GET\",\r\n // url: this.apexApiUrl + \"onboarding-applications/\" + onboardingApplicationID + \"/status-history\",\r\n // headers: { \"Content-Type\": \"application/json\" }\r\n // }).then(response => {\r\n // return response.data;\r\n // });\r\n\r\n // return this.$q.all([statuses, statusHistory]).then(v => {\r\n // const statuses: any = v[0];\r\n // const statusHistory: any = v[1];\r\n\r\n // statusHistory.forEach(statusChange => {\r\n // // Replace the status change enum value to an object with a Text and Id field.\r\n // const value = statusChange.OnboardingStatus;\r\n // statusChange.OnboardingStatus = statuses.filter(status => {\r\n // return status.Value === value;\r\n // })[0] ||\r\n // {\r\n // Id: value,\r\n // Value: value,\r\n // Text: value\r\n // };\r\n // });\r\n\r\n // return statusHistory;\r\n // });\r\n //}\r\n\r\n /**\r\n * Update the given onboarding application's reference field value.\r\n * @param {Number} onboardingApplicationID The application whose field is being updated.\r\n * @param {Number} index The index of the reference field in the list.\r\n * @param {String} value The new value to give to the application.\r\n * @returns {Promise} async\r\n */\r\n updateReferenceFieldValue(onboardingApplicationID: number, index: number, value: string): IPromise {\r\n return this.$http({\r\n method: \"PUT\",\r\n url: this.apexApiUrl + \"onboarding-applications/\" + onboardingApplicationID + \"/fields/\" + index,\r\n data: value\r\n }).then(() => null);\r\n }\r\n\r\n retrieveEmployeeSgiIdHistory(icdofficeID: number, employeeID: number): IPromise {\r\n const params: any = {};\r\n params.icdofficeID = icdofficeID;\r\n params.employeeID = employeeID;\r\n return this.$http({\r\n method: \"GET\",\r\n params: params,\r\n url: this.apexApiUrl + \"employee-sgi-id-history\",\r\n headers: { Accept: \"application/json\" }\r\n }).then(response => {\r\n return response.data;\r\n });\r\n }\r\n\r\n retrieveSgiIdReport(filters: any): IPromise {\r\n return this.$http({\r\n method: \"GET\",\r\n url: this.apexApiUrl + \"/sgi-id-report\",\r\n headers: {\r\n Accept: \"application/json\"\r\n },\r\n params: filters\r\n }).then(response => {\r\n return response.data;\r\n });\r\n }\r\n\r\n upsertEmployeeSgiIdHistory(data: SgiIdAssignmentUpsertRequest) {\r\n return this.$http({\r\n method: \"POST\",\r\n data: data,\r\n url: this.apexApiUrl + \"employee-sgi-id-history\",\r\n headers: { Accept: \"application/json\" }\r\n }).then(response => {\r\n return response.data;\r\n });\r\n }\r\n\r\n deleteEmployeeSgiIdHistory(id: number) {\r\n\r\n return this.$http({\r\n method: \"DELETE\",\r\n url: this.apexApiUrl + \"employee-sgi-id-history/\" + id\r\n\r\n }).then(response => {\r\n return response.data;\r\n });\r\n }\r\n\r\n /**\r\n * Create a new onboarding application with default properties set.\r\n */\r\n createOnboardingApplicationVM() {\r\n return {\r\n OnboardingDocuments: [],\r\n Applicant: {\r\n CellPhone: {}\r\n },\r\n IsSelfSignUp: null\r\n };\r\n }\r\n}\r\n","export function OnboardingDivisionService($http, apexApiUrl) {\r\n 'ngInject'\r\n return {\r\n retrieveOnboardingDivisions: retrieveOnboardingDivisions\r\n };\r\n\r\n function retrieveOnboardingDivisions() {\r\n return $http({\r\n method: \"GET\",\r\n url: apexApiUrl + \"onboarding-divisions\",\r\n headers: { Accept: \"application/json\" }\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n}\r\n","export function OnboardingPolicyService($http, apexApiUrl) {\r\n 'ngInject'\r\n return {\r\n retrieveOnboardingPolicy: retrieveOnboardingPolicy,\r\n createOnboardingPolicy: createOnboardingPolicy,\r\n retrieveDivisionOnboardingPolicy: retrieveDivisionOnboardingPolicy,\r\n defineDivisionOnboardingPolicy: defineDivisionOnboardingPolicy,\r\n removeDivisionOnboardingPolicy: removeDivisionOnboardingPolicy,\r\n patchOnboardingPolicy: patchOnboardingPolicy,\r\n updateContactEmails: updateContactEmails,\r\n addApplicationStatus: addApplicationStatus,\r\n updateApplicationStatus: updateApplicationStatus,\r\n addReferenceField: addReferenceField,\r\n updateReferenceField: updateReferenceField,\r\n addDocumentGroup: addDocumentGroup,\r\n updateDocumentGroup: updateDocumentGroup,\r\n uploadDocumentGroupRequirementsFile: uploadDocumentGroupRequirementsFile,\r\n removeDocumentGroupRequirementsFile: removeDocumentGroupRequirementsFile,\r\n addDocument: addDocument,\r\n updateDocument: updateDocument,\r\n uploadDocumentBlankForm: uploadDocumentBlankForm,\r\n removeDocumentBlankForm: removeDocumentBlankForm\r\n };\r\n\r\n /**\r\n * Retrieve the onboarding policy with the given ID.\r\n * @param {any} id The onboarding policy's primary id.\r\n * @returns {Promise} The resolved onboarding policy.\r\n */\r\n function retrieveOnboardingPolicy(id) {\r\n return $http({\r\n method: \"GET\",\r\n url: apexApiUrl + \"onboarding-policies/\" + id,\r\n headers: { Accept: \"application/json\" }\r\n })\r\n .then(function (response) {\r\n setOnboardingPolicyReferences(response.data);\r\n return response.data;\r\n });\r\n }\r\n\r\n /**\r\n * Retrieve the onboarding policy associated with the given division.\r\n * @param {any} divisionID The division's primary key.\r\n */\r\n function retrieveDivisionOnboardingPolicy(divisionID) {\r\n return $http({\r\n method: \"GET\",\r\n url: apexApiUrl + \"divisions/\" + divisionID + \"/onboarding-policy\",\r\n headers: { Accept: \"application/json\" }\r\n })\r\n .then(function (response) {\r\n setOnboardingPolicyReferences(response.data);\r\n return response.data;\r\n });\r\n }\r\n\r\n /**\r\n * Create a new onboarding policy with the given with request data.\r\n * @param {any} request\r\n */\r\n function createOnboardingPolicy(request) {\r\n const formData = mapOnboardingPolicyCreateRequestToFormData(request);\r\n return $http({\r\n method: \"POST\",\r\n url: apexApiUrl + \"onboarding-policies\",\r\n headers: { \"Content-Type\": undefined, Accept: \"application/json\" },\r\n data: formData\r\n })\r\n .then(function (response) {\r\n setOnboardingPolicyReferences(response.data);\r\n return response.data;\r\n });\r\n }\r\n\r\n /**\r\n * Change the given onboarding policy's name or self-sign-up settings.\r\n * @param {any} onboardingPolicyID The ID for the policy\r\n * @param {{ Name : String, EnableSelfSignUp : boolean }} request The updated policy fields.\r\n * @returns {Promise} async\r\n */\r\n function patchOnboardingPolicy(onboardingPolicyID, request) {\r\n return $http({\r\n method: \"PATCH\",\r\n url: apexApiUrl + \"onboarding-policies/\" + onboardingPolicyID,\r\n headers: { \"Content-Type\": \"application/json\" },\r\n data: request\r\n });\r\n }\r\n\r\n /**\r\n * Create a new onboarding policy that is defined as the given division's onboarding policy.\r\n * @param {any} divisionID\r\n * @param {any} onboardingPolicy\r\n */\r\n function defineDivisionOnboardingPolicy(divisionID, onboardingPolicy) {\r\n const formData = mapOnboardingPolicyCreateRequestToFormData(onboardingPolicy);\r\n return $http({\r\n method: \"PUT\",\r\n url: apexApiUrl + \"divisions/\" + divisionID + \"/onboarding-policy\",\r\n headers: { \"Content-Type\": undefined, Accept: \"application/json\" },\r\n data: formData\r\n })\r\n .then(function (response) {\r\n return retrieveDivisionOnboardingPolicy(divisionID);\r\n })\r\n .then(function (policy) {\r\n setOnboardingPolicyReferences(policy);\r\n return policy;\r\n });\r\n }\r\n\r\n /**\r\n * Disassociate the given division from the current onboarding policy that is defined for it.\r\n * @param {any} divisionID\r\n */\r\n function removeDivisionOnboardingPolicy(divisionID) {\r\n return $http({\r\n method: \"DELETE\",\r\n url: apexApiUrl + \"divisions/\" + divisionID + \"/onboarding-policy\"\r\n });\r\n }\r\n\r\n /**\r\n * Update the list of contact emails for the given onboarding policy.\r\n * @param {any} onboardingPolicyID The primary key for the onboarding policy.\r\n * @param {string[]} contactEmails The list of contact emails to set for the policy.\r\n */\r\n function updateContactEmails(onboardingPolicyID, contactEmails) {\r\n return $http({\r\n method: \"PUT\",\r\n url: apexApiUrl + \"onboarding-policies/\" + onboardingPolicyID + \"/contact-emails\",\r\n data: contactEmails\r\n })\r\n }\r\n\r\n /**\r\n * Add a new application status to a specific index in the onboarding policy.\r\n * @param {any} onboardingPolicyID\r\n * @param {any} request A request containing the application status details and index.\r\n */\r\n function addApplicationStatus(onboardingPolicyID, request) {\r\n return $http({\r\n method: \"POST\",\r\n url: apexApiUrl + \"onboarding-policies/\" + onboardingPolicyID + \"/application-statuses\",\r\n data: request\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n /**\r\n * Add a new application status to a specific index in the onboarding policy.\r\n * @param {Number} onboardingPolicyID\r\n * @param {Number} id The id of the application status to be editing.\r\n * @param {any} request A request containing the application status details and index.\r\n */\r\n function updateApplicationStatus(onboardingPolicyID, id, request) {\r\n return $http({\r\n method: \"PUT\",\r\n url: apexApiUrl + \"onboarding-policies/\" + onboardingPolicyID + \"/application-statuses/\" + id,\r\n data: request\r\n });\r\n }\r\n\r\n /**\r\n * Add a new reference field to the given onboarding policy.\r\n * @param {number} onboardingPolicyID\r\n * @param {any} request\r\n */\r\n function addReferenceField(onboardingPolicyID, request) {\r\n return $http({\r\n method: \"POST\",\r\n url: apexApiUrl + \"onboarding-policies/\" + onboardingPolicyID + \"/reference-fields\",\r\n data: request\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n /**\r\n * Update the reference field of the onboarding policy at the given index.\r\n * @param {number} onboardingPolicyID\r\n * @param {number} index\r\n * @param {any} request\r\n */\r\n function updateReferenceField(onboardingPolicyID, id, request) {\r\n return $http({\r\n method: \"PUT\",\r\n url: apexApiUrl + \"onboarding-policies/\" + onboardingPolicyID + \"/reference-fields/\" + id,\r\n data: request\r\n });\r\n }\r\n\r\n /**\r\n * Add a new document group to the onboarding policy.\r\n * @param {number} onboardingPolicyID\r\n * @param {any} request\r\n */\r\n function addDocumentGroup(onboardingPolicyID, request) {\r\n const formData = new FormData();\r\n appendAddDocumentGroupRequestToFormData(formData, request);\r\n formData.append(\"SortIndex\", request.SortIndex);\r\n return $http({\r\n method: \"POST\",\r\n url: apexApiUrl + \"onboarding-policies/\" + onboardingPolicyID + \"/document-groups\",\r\n data: formData,\r\n headers: { \"Content-Type\": undefined, Accept: \"application/json\" }\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n /**\r\n * Update the document group at the given index.\r\n * @param {number} onboardingPolicyID\r\n * @param {number} id\r\n * @param {any} request\r\n */\r\n function updateDocumentGroup(onboardingPolicyID, id, request) {\r\n return $http({\r\n method: \"PUT\",\r\n url: apexApiUrl + \"onboarding-policies/\" + onboardingPolicyID + \"/document-groups/\" + id,\r\n data: request\r\n });\r\n }\r\n\r\n /**\r\n * Upload a file representing the requirements file template for the document group.\r\n * @param {number} onboardingPolicyID\r\n * @param {number} index\r\n * @param {any} requirementsFile\r\n */\r\n function uploadDocumentGroupRequirementsFile(onboardingPolicyID, id, requirementsFile) {\r\n const formData = new FormData();\r\n formData.append(\"RequirementsFileUpload\", requirementsFile);\r\n return $http({\r\n method: \"PUT\",\r\n url: apexApiUrl + \"onboarding-policies/\" + onboardingPolicyID + \"/document-groups/\" + id + \"/\" + \"requirements-file\",\r\n data: formData,\r\n headers: { \"Content-Type\": undefined, Accept: \"application/json\" }\r\n });\r\n }\r\n\r\n /**\r\n * Remove the uploaded requirements file from the document group.\r\n * @param {any} onboardingPolicyID\r\n * @param {any} index\r\n */\r\n function removeDocumentGroupRequirementsFile(onboardingPolicyID, id) {\r\n return $http({\r\n method: \"DELETE\",\r\n url: apexApiUrl + \"onboarding-policies/\" + onboardingPolicyID + \"/document-groups/\" + id + \"/\" + \"requirements-file\"\r\n });\r\n }\r\n\r\n /**\r\n * Add a new document field to the onboarding policy.\r\n * @param {any} onboardingPolicyID\r\n * @param {any} request\r\n */\r\n function addDocument(onboardingPolicyID, request) {\r\n const formData = new FormData();\r\n appendAddDocumentRequestToFormData(formData, request);\r\n formData.append(\"SortIndex\", request.SortIndex);\r\n return $http({\r\n method: \"POST\",\r\n url: apexApiUrl + \"onboarding-policies/\" + onboardingPolicyID + \"/documents\",\r\n data: formData,\r\n headers: { \"Content-Type\": undefined, Accept: \"application/json\" }\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n /**\r\n * Update the document field at the given index in the onboarding policy.\r\n * @param {any} onboardingPolicyID\r\n * @param {any} index\r\n * @param {any} request\r\n */\r\n function updateDocument(onboardingPolicyID, id, request) {\r\n return $http({\r\n method: \"PUT\",\r\n url: apexApiUrl + \"onboarding-policies/\" + onboardingPolicyID + \"/documents/\" + id,\r\n data: request\r\n });\r\n }\r\n\r\n /**\r\n * Upload a blank file template for the given document field.\r\n * @param {any} onboardingPolicyID\r\n * @param {any} index\r\n * @param {any} blankForm\r\n */\r\n function uploadDocumentBlankForm(onboardingPolicyID, id, blankForm) {\r\n const formData = new FormData();\r\n formData.append(\"BlankFormUpload\", blankForm);\r\n return $http({\r\n method: \"PUT\",\r\n url: apexApiUrl + \"onboarding-policies/\" + onboardingPolicyID + \"/documents/\" + id + \"/\" + \"blank-form\",\r\n data: formData,\r\n headers: { \"Content-Type\": undefined, Accept: \"application/json\" }\r\n });\r\n }\r\n\r\n /**\r\n * Remove the blank file for the given document field.\r\n * @param {any} onboardingPolicyID\r\n * @param {any} index\r\n */\r\n function removeDocumentBlankForm(onboardingPolicyID, id) {\r\n return $http({\r\n method: \"DELETE\",\r\n url: apexApiUrl + \"onboarding-policies/\" + onboardingPolicyID + \"/documents/\" + id + \"/\" + \"blank-form\"\r\n });\r\n }\r\n\r\n function mapOnboardingPolicyCreateRequestToFormData(onboardingPolicy) {\r\n // Need to serialize as form data manually.\r\n const formData = new FormData();\r\n onboardingPolicy.ContactEmails.forEach(function (contactEmail, i) {\r\n formData.append(\"ContactEmails[\" + i + \"]\", contactEmail);\r\n });\r\n onboardingPolicy.ApplicationStatuses.forEach(function (status, i) {\r\n formData.append(\"ApplicationStatuses[\" + i + \"].Name\", status.Name);\r\n formData.append(\"ApplicationStatuses[\" + i + \"].StatusType\", status.StatusType || \"null\");\r\n });\r\n onboardingPolicy.ReferenceFields.forEach(function (referenceField, i) {\r\n const base = \"ReferenceFields[\" + i + \"]\";\r\n\r\n formData.append(base + \".Name\", referenceField.Name);\r\n formData.append(base + \".RequiredAtStatus\", referenceField.RequiredAtStatus);\r\n formData.append(base + \".IsSensitive\", referenceField.IsSensitive || \"false\");\r\n formData.append(base + \".InputMask\", referenceField.InputMask);\r\n formData.append(base + \".ValueType\", referenceField.ValueType);\r\n formData.append(base + \".ShowInGrid\", referenceField.ShowInGrid || \"false\");\r\n });\r\n onboardingPolicy.OnboardingDocumentGroups.forEach(function (group, i) {\r\n appendAddDocumentGroupRequestToFormData(formData, group, \"OnboardingDocumentGroups[\" + i + \"].\");\r\n });\r\n onboardingPolicy.OnboardingDocuments.forEach(function (document, i) {\r\n appendAddDocumentRequestToFormData(formData, document, \"OnboardingDocuments[\" + i + \"].\");\r\n formData.append(\"OnboardingDocuments[\" + i + \"].DocumentGroup\", document.DocumentGroup);\r\n });\r\n formData.append(\"EnableSelfSignUp\", String(!!onboardingPolicy.EnableSelfSignUp));\r\n return formData;\r\n }\r\n\r\n function appendAddDocumentGroupRequestToFormData(formData, documentGroup, prefix) {\r\n prefix = prefix || \"\";\r\n formData.append(prefix + \"Name\", documentGroup.Name);\r\n formData.append(prefix + \"RequirementsFileUpload\", documentGroup.RequirementsFileUpload);\r\n }\r\n\r\n function appendAddDocumentRequestToFormData(formData, document, prefix) {\r\n prefix = prefix || \"\";\r\n formData.append(prefix + \"Name\", document.Name);\r\n formData.append(prefix + \"Description\", document.Description);\r\n formData.append(prefix + \"DocumentGroupID\", document.DocumentGroupID || \"null\");\r\n formData.append(prefix + \"IsRequired\", document.IsRequired || \"false\");\r\n formData.append(prefix + \"UseImageCropper\", document.UseImageCropper || \"false\");\r\n document.AllowedFileTypes.forEach(function (type, j) {\r\n formData.append(prefix + \"AllowedFileTypes[\" + j + \"]\", type);\r\n });\r\n formData.append(prefix + \"BlankFormUpload\", document.BlankFormUpload);\r\n }\r\n\r\n function setOnboardingPolicyReferences(policy) {\r\n // Set references between the policy's statuses and document groups to the policy's list of these objects.\r\n policy.OnboardingDocuments.forEach(function (document) {\r\n if (document.OnboardingPolicyDocumentGroupID) {\r\n document.DocumentGroup = policy.OnboardingDocumentGroups.filter(function (group) {\r\n return group.OnboardingPolicyDocumentGroupID\r\n === document.OnboardingPolicyDocumentGroupID;\r\n })[0];\r\n\r\n }\r\n })\r\n policy.ReferenceFields.forEach(function (reference) {\r\n if (reference.RequiredAtStatus) {\r\n reference.RequiredAtStatus = policy.ApplicationStatuses.filter(function (status) {\r\n return status.OnboardingApplicationStatusID\r\n === reference.RequiredAtStatus.OnboardingApplicationStatusID;\r\n })[0];\r\n }\r\n })\r\n }\r\n}\r\n","import { IHttpService, IPromise } from \"angular\";\r\nimport { OnboardingApplicationStatusRM } from \"@herbjoy/apex-api-models\";\r\n\r\nexport class OnboardingStatusService {\r\n constructor(private $http: IHttpService, private apexApiUrl: string) {\r\n 'ngInject'\r\n }\r\n\r\n /**\r\n * Retrieve all onboarding application statuses the are available to be selected\r\n * for the application with the given ID.\r\n * @param {Number} onboardingApplicationID\r\n */\r\n retrieveAvailableStatuses(onboardingApplicationID: number): IPromise {\r\n return this.$http({\r\n method: \"GET\",\r\n url: this.apexApiUrl + \"onboarding-applications/\" + onboardingApplicationID + \"/available-statuses\",\r\n headers: { Accept: \"application/json\" }\r\n })\r\n .then(function (response) {\r\n return response.data;\r\n })\r\n }\r\n}\r\n","export class PayStubService {\r\n constructor($http, $q, apexApiUrl, utilityService) {\r\n 'ngInject'\r\n this.$http = $http;\r\n this.$q = $q;\r\n this.apexApiUrl = apexApiUrl;\r\n this.utilityService = utilityService;\r\n }\r\n\r\n /**\r\n * Retrieve the list of available pay stubs for the given employee.\r\n */\r\n retrievePayStubs(employeeID) {\r\n if (!employeeID) {\r\n return this.$q.when([]);\r\n }\r\n\r\n return this.$http({\r\n method: \"GET\",\r\n url: `${this.apexApiUrl}/pay-stubs/employee/${employeeID}`,\r\n headers: { Accept: \"application/json\" }\r\n })\r\n .then(function (response) {\r\n return response.data;\r\n });\r\n\r\n }\r\n\r\n /**\r\n * Retrieve the pay stub for the given pay week, belonging to either the given employee\r\n * (if the user has access to it) or the employee who is currently authenticated.\r\n */\r\n retrievePayStub(payrollID, employeeID, icdCorporationID) {\r\n return this.$http({\r\n method: \"GET\",\r\n url: `${this.apexApiUrl}/pay-stubs/employee/${employeeID}/week/${payrollID}`,\r\n params: {\r\n icdCorporationID\r\n },\r\n headers: { Accept: \"application/json\" }\r\n })\r\n .then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n exportPayStubPdf(payrollID, employeeID, icdCorporationID, isPayStub) {\r\n const params = {\r\n icdCorporationID,\r\n isPayStub\r\n };\r\n const queryString = this.utilityService.queryStringify(params);\r\n window.location = `${this.apexApiUrl}/pay-stubs/employee/${employeeID}/week/${payrollID}.pdf`\r\n + queryString;\r\n }\r\n\r\n exportPayStubEarningsStatementPdf(payPeriodID) {\r\n window.location = `${this.apexApiUrl}/payroll-entries/${payPeriodID}/manual-submission/`\r\n + `/earnings-statement.pdf`;\r\n }\r\n}\r\n","export function PayoutPolicyService($http, apexApiUrl) {\r\n 'ngInject'\r\n return {\r\n // Division\r\n retrieveDivisionPayoutPolicies: retrieveDivisionPayoutPolicies,\r\n retrieveDivisionPayoutPolicy: retrieveDivisionPayoutPolicy,\r\n updateDivisionPayoutPolicy: updateDivisionPayoutPolicy,\r\n createDivisionPayoutPolicy: createDivisionPayoutPolicy,\r\n updatePayoutPolicyCommissions: updatePayoutPolicyCommissions,\r\n // Corporation\r\n retrieveIcdCorporationPayoutPolicies: retrieveIcdCorporationPayoutPolicies,\r\n retrieveIcdCorporationPayoutPolicy: retrieveIcdCorporationPayoutPolicy,\r\n updateIcdCorporationPayoutPolicy: updateIcdCorporationPayoutPolicy,\r\n createIcdCorporationPayoutPolicy: createIcdCorporationPayoutPolicy\r\n };\r\n\r\n function retrieveDivisionPayoutPolicies() {\r\n return $http({\r\n method: \"GET\",\r\n url: apexApiUrl + \"division-payout-policies\",\r\n headers: { Accept: \"application/json\" }\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n function retrieveDivisionPayoutPolicy(divisionID) {\r\n return $http({\r\n method: \"GET\",\r\n url: apexApiUrl + \"division-payout-policies/\" + divisionID,\r\n headers: { Accept: \"application/json\" }\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n function updateDivisionPayoutPolicy(divisionID, request) {\r\n return $http({\r\n method: \"PUT\",\r\n url: apexApiUrl + \"division-payout-policies/\" + divisionID,\r\n headers: { Accept: \"application/json\", \"Content-Type\": \"application/json\" },\r\n data: request\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n function createDivisionPayoutPolicy(request) {\r\n return $http({\r\n method: \"POST\",\r\n url: apexApiUrl + \"division-payout-policies\",\r\n headers: { Accept: \"application/json\", \"Content-Type\": \"application/json\" },\r\n data: request\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n function retrieveIcdCorporationPayoutPolicies() {\r\n return $http({\r\n method: \"GET\",\r\n url: apexApiUrl + \"corporation-payout-policies\",\r\n headers: { Accept: \"application/json\" }\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n function retrieveIcdCorporationPayoutPolicy(icdCorporationID) {\r\n return $http({\r\n method: \"GET\",\r\n url: apexApiUrl + \"corporation-payout-policies/\" + icdCorporationID,\r\n headers: { Accept: \"application/json\" }\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n function updateIcdCorporationPayoutPolicy(icdCorporationID, request) {\r\n return $http({\r\n method: \"PUT\",\r\n url: apexApiUrl + \"corporation-payout-policies/\" + icdCorporationID,\r\n headers: { Accept: \"application/json\", \"Content-Type\": \"application/json\" },\r\n data: request\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n function createIcdCorporationPayoutPolicy(request) {\r\n return $http({\r\n method: \"POST\",\r\n url: apexApiUrl + \"corporation-payout-policies\",\r\n headers: { Accept: \"application/json\", \"Content-Type\": \"application/json\" },\r\n data: request\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n function updatePayoutPolicyCommissions(request) {\r\n return $http({\r\n method: \"POST\",\r\n url: apexApiUrl + \"payout-policy/commissions\",\r\n headers: { Accept: \"application/json\", \"Content-Type\": \"application/json\" },\r\n data: request\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n}\r\n","import moment from 'moment'\r\n\r\nexport function PayrollDashboardService($http, apexApiUrl) {\r\n 'ngInject'\r\n return {\r\n retrievePayrollCorporationsV2: retrievePayrollCorporationsV2,\r\n retrievePayrollCorporations: retrievePayrollCorporations,\r\n retrievePayrollRotations: retrievePayrollRotations,\r\n retrievePayrollRotationsV2: retrievePayrollRotationsV2,\r\n retrievePayrollDivisions: retrievePayrollDivisions,\r\n retrieveNCRSummary: retrieveNCRSummary,\r\n retrievePayChequeInquiryReports: retrievePayChequeInquiryReports,\r\n retrievePayrollOfficeDivision: retrievePayrollOfficeDivision\r\n };\r\n\r\n function retrievePayrollCorporationsV2(query) {\r\n return $http({\r\n method: \"GET\",\r\n url: apexApiUrl + \"corporations\",\r\n headers: { Accept: \"application/json\", \"Content-Type\": \"application/json\" },\r\n params: query || {}\r\n })\r\n .then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n function retrievePayrollCorporations() {\r\n return $http({\r\n method: \"GET\",\r\n url: apexApiUrl + \"payrolls/icd-corporation\"\r\n })\r\n .then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n function retrievePayrollRotations() {\r\n return $http({\r\n method: \"GET\",\r\n url: apexApiUrl + \"payrolls/rotation\"\r\n })\r\n .then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n function retrievePayrollRotationsV2(divisionID, icdCorporationID) {\r\n const params = {\r\n divisionID, icdCorporationID\r\n }\r\n return $http({\r\n method: \"GET\",\r\n url: apexApiUrl + \"payrolls/rotationV2\",\r\n params: params\r\n })\r\n .then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n function retrievePayrollDivisions() {\r\n return $http({\r\n method: \"GET\",\r\n url: apexApiUrl + \"payrolls/divisions\"\r\n })\r\n .then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n function retrievePayrollOfficeDivision() {\r\n return $http({\r\n method: \"GET\",\r\n url: apexApiUrl + \"payroll/icdofficedivision\"\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n\r\n }\r\n function retrieveNCRSummary(payrollID, icdCorporationID, startDate, endDate) {\r\n const params = {\r\n payrollID,\r\n icdCorporationID,\r\n startDate: startDate ? moment(startDate).format(\"YYYY-MM-DD\") : null,\r\n endDate: endDate ? moment(endDate).format(\"YYYY-MM-DD\") : null\r\n }\r\n return $http({\r\n method: \"GET\",\r\n url: apexApiUrl + \"ncr-summary\",\r\n params: params\r\n })\r\n .then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n function retrievePayChequeInquiryReports(startDate, endDate) {\r\n return $http({\r\n method: \"GET\",\r\n url: apexApiUrl + \"payrolls/inquiry\",\r\n headers: { Accept: \"application/json\" },\r\n params: {\r\n startDate: startDate,\r\n endDate: endDate\r\n }\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n}\r\n","/**\r\n * A service implementing domain actions for a payroll entry.\r\n */\r\nexport class PayrollEntryService {\r\n constructor($http, apexApiUrl) {\r\n 'ngInject';\r\n this.$http = $http;\r\n this.apexApiUrl = apexApiUrl;\r\n }\r\n\r\n /**\r\n * Return all payroll entries belonging to a particular payroll.\r\n * @param {number} payrollID The payroll whose entries will be returned.\r\n * @param {any} query The query parameters passed to filter the results.\r\n */\r\n retrievePayrollEntries(payrollID, query) {\r\n return this.$http({\r\n method: \"GET\",\r\n url: `${this.apexApiUrl}/payrolls/${payrollID}/entries`,\r\n params: query\r\n }).then(response => response.data);\r\n }\r\n\r\n /**\r\n * Return the payroll entry manual submissions matching the filter criteria.\r\n * @param {any} query The filters to the query\r\n */\r\n retrievePayrollEntryManualSubmissions(query) {\r\n return this.$http({\r\n method: \"GET\",\r\n url: `${this.apexApiUrl}/payroll-entries/all/manual-submissions`,\r\n params: query\r\n }).then(response => response.data);\r\n }\r\n\r\n\r\n retrievePayrollEntryManualSubmissionsPage(pageIndex, query) {\r\n return this.$http.get(this.apexApiUrl + \"payroll-entries/all/manual-submissions/page/\" + pageIndex || 0, {\r\n params: query,\r\n headers: { Accept: \"application/json\" }\r\n })\r\n .then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n /**\r\n * Return the payroll entry manual submission for the specific payperiod .\r\n * @param {any} payPeriodID\r\n */\r\n retrievePayrollEntryManualSubmission(payPeriodID) {\r\n return this.$http({\r\n method: \"GET\",\r\n url: `${this.apexApiUrl}/payroll-entries/${payPeriodID}/manual-submission`,\r\n }).then(response => response.data);\r\n }\r\n\r\n\r\n /**\r\n * Submit a manual request for a particular payroll entry.\r\n * @param {number} payPeriodID The payroll entry that is being requested manual.\r\n * @param {any} manualRequest The contents of the manual request.\r\n */\r\n submitManualRequest(payPeriodID, manualRequest) {\r\n return this.$http({\r\n method: \"PUT\",\r\n url: `${this.apexApiUrl}/payroll-entries/${payPeriodID}/manual-submission`,\r\n data: manualRequest\r\n });\r\n }\r\n\r\n /**\r\n * Patch specific fields of a manual request.\r\n * @param {number} payPeriodID The payroll entry whose manual request will be updated.\r\n * @param {any} patch The contents of the patch.\r\n */\r\n patchManualRequest(payPeriodID, patch) {\r\n return this.$http({\r\n method: \"PATCH\",\r\n url: `${this.apexApiUrl}/payroll-entries/${payPeriodID}/manual-submission`,\r\n data: patch\r\n });\r\n }\r\n\r\n /**\r\n * Cancel the manual request for the payroll entry.\r\n * @param {number} payPeriodID The payroll entry whose manual request should be cancelled\r\n */\r\n cancelManualRequest(payPeriodID) {\r\n return this.$http({\r\n method: \"DELETE\",\r\n url: `${this.apexApiUrl}/payroll-entries/${payPeriodID}/manual-submission`\r\n });\r\n }\r\n\r\n /**\r\n * Assign the manual request to the given employee\r\n * @param {number} payPeriodID The payroll entry whose manual request should be assigned\r\n * @param {number} payPeriodID The employee to whom it needs to be assigned\r\n */\r\n assignManualSubmission(payPeriodID, employeeID) {\r\n return this.$http({\r\n method: \"PUT\",\r\n url: `${this.apexApiUrl}/payroll-entries/${payPeriodID}/manual-request/processors/${employeeID}`\r\n });\r\n }\r\n\r\n /**\r\n * Set the manual request to the pending\r\n * @param {number} payPeriodID The payroll entry whose manual request should be assigned\r\n * @param isPending Defines the pending status of manual submission\r\n */\r\n saveManualSubmissionPending(payPeriodID, isPending) {\r\n return this.$http({\r\n method: \"PUT\",\r\n url: `${this.apexApiUrl}/payroll-entries/${payPeriodID}/manual-request/pending/${isPending}`\r\n });\r\n }\r\n\r\n /**\r\n* Set the manual request to the active\r\n* @param {number} payPeriodID The payroll entry whose manual request should be assigned\r\n * @param isWorkingOn Defines the working status of manual submission\r\n*/\r\n saveManualSubmissionWorking(payPeriodID, isWorkingOn) {\r\n return this.$http({\r\n method: \"PUT\",\r\n url: `${this.apexApiUrl}/payroll-entries/${payPeriodID}/manual-request/workingon/${isWorkingOn}`\r\n });\r\n }\r\n\r\n /**\r\n * Unassign the given employee from the manual request\r\n * @param {number} payPeriodID The payroll entry whose manual request should be unassigned\r\n * @param {number} payPeriodID The employee to whom it needs to be unassigned\r\n */\r\n unassignManualSubmission(payPeriodID, employeeID) {\r\n return this.$http({\r\n method: \"DELETE\",\r\n url: `${this.apexApiUrl}/payroll-entries/${payPeriodID}/manual-request/processors/${employeeID}`\r\n });\r\n }\r\n\r\n /**\r\n * Process the given manual submission\r\n * @param {number} payPeriodID The payroll entry thats need to be processed\r\n * @param {any} request A request which decides weather the given payperiod needs to marked as processed or unprocessed\r\n */\r\n processManualSubmission(payPeriodID, request) {\r\n return this.$http({\r\n method: \"PUT\",\r\n url: `${this.apexApiUrl}/payroll-entries/${payPeriodID}/manual-submission/processed`,\r\n data: request\r\n });\r\n }\r\n}\r\n","import moment from 'moment';\r\nexport function PayrollFinancialsService($http, $q, apexApiUrl) {\r\n 'ngInject';\r\n return {\r\n retrievePayrollFinancials: retrievePayrollFinancials,\r\n retrievePayrollFinancialsProgramSummary: retrievePayrollFinancialsProgramSummary\r\n };\r\n\r\n function retrievePayrollFinancials(startDate, endDate, divisionID) {\r\n const params = {};\r\n if (startDate) {\r\n params.startDate = moment(startDate).format(\"YYYY-MM-DD\");\r\n }\r\n if (endDate) {\r\n params.endDate = moment(endDate).format(\"YYYY-MM-DD\");\r\n }\r\n params.divisionID = divisionID;\r\n return $http({\r\n method: \"GET\",\r\n url: apexApiUrl + \"payrolls/financials\",\r\n params: params,\r\n headers: { Accept: \"application/json\" }\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n function retrievePayrollFinancialsProgramSummary(startDate, endDate, programID) {\r\n const params = {};\r\n if (startDate) {\r\n params.startDate = moment(startDate).format(\"YYYY-MM-DD\");\r\n }\r\n if (endDate) {\r\n params.endDate = moment(endDate).format(\"YYYY-MM-DD\");\r\n }\r\n params.programID = programID;\r\n\r\n return $http({\r\n method: \"GET\",\r\n url: apexApiUrl + \"payrolls/financials-program\",\r\n params: params,\r\n headers: { Accept: \"application/json\" }\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n}\r\n","export function PayrollInvoicePolicyService($http, $q, apexApiUrl) {\r\n 'ngInject';\r\n return {\r\n retrievePayrollInvoicePolicies: retrievePayrollInvoicePolicies,\r\n retrievePayrollInvoicePolicy: retrievePayrollInvoicePolicy,\r\n savePayrollInvoicePolicy: savePayrollInvoicePolicy,\r\n deletePayrollInvoicePolicy: deletePayrollInvoicePolicy\r\n };\r\n\r\n function retrievePayrollInvoicePolicies() {\r\n return $http({\r\n method: \"GET\",\r\n url: apexApiUrl + \"payroll-invoice-policies/\",\r\n headers: { Accept: \"application/json\" }\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n function retrievePayrollInvoicePolicy(payrollInvoicePolicyID) {\r\n return $http({\r\n method: \"GET\",\r\n url: apexApiUrl + \"payroll-invoice-policies/\" + payrollInvoicePolicyID,\r\n headers: { Accept: \"application/json\" }\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n function savePayrollInvoicePolicy(payrollInvoicePolicy) {\r\n if (payrollInvoicePolicy.PayrollInvoicePolicyID) {\r\n return updatePayrollInvoicePolicy(payrollInvoicePolicy.PayrollInvoicePolicyID, payrollInvoicePolicy);\r\n } else {\r\n return createPayrollInvoicePolicy(payrollInvoicePolicy);\r\n }\r\n }\r\n\r\n function createPayrollInvoicePolicy(payrollInvoicePolicy) {\r\n return $http({\r\n method: \"POST\",\r\n url: apexApiUrl + \"payroll-invoice-policies/\",\r\n headers: { \"Content-Type\": \"application/json\", Accept: \"application/json\" },\r\n data: payrollInvoicePolicy\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n function updatePayrollInvoicePolicy(payrollInvoicePolicyID, payrollInvoicePolicy) {\r\n return $http({\r\n method: \"PUT\",\r\n url: apexApiUrl + \"payroll-invoice-policies/\" + payrollInvoicePolicyID,\r\n headers: { \"Content-Type\": \"application/json\", Accept: \"application/json\" },\r\n data: payrollInvoicePolicy\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n function deletePayrollInvoicePolicy(payrollInvoicePolicyID) {\r\n return $http({\r\n method: \"DELETE\",\r\n url: apexApiUrl + \"payroll-invoice-policies/\" + payrollInvoicePolicyID\r\n });\r\n }\r\n}\r\n","import { PagedEntityListOfPayrollInvoice, PayrollInvoice, PayrollInvoiceStatus } from \"@herbjoy/apex-api-models\";\r\nimport { IHttpService } from \"angular\";\r\n\r\nexport class PayrollInvoiceService {\r\n constructor(private $http: IHttpService, private apexApiUrl: string) {\r\n 'ngInject'\r\n }\r\n\r\n retrievePayrollInvoices(query?) {\r\n return this.$http({\r\n method: \"GET\",\r\n url: this.apexApiUrl + \"payroll-invoices/\",\r\n params: query,\r\n headers: { Accept: \"application/json\" }\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n retrievePayrollInvoicesPage(pageIndex: number, query?) {\r\n return this.$http.get(\r\n `${this.apexApiUrl}payroll-invoices/page/${pageIndex || 0}`,\r\n {\r\n params: query,\r\n headers: { Accept: \"application/json\" }\r\n })\r\n .then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n retrieveNewPayrollInvoices() {\r\n return this.$http({\r\n method: \"GET\",\r\n url: this.apexApiUrl + \"payroll-invoices/new\",\r\n headers: { Accept: \"application/json\" }\r\n }).then(function (response) {\r\n return response.data;\r\n })\r\n }\r\n\r\n retrievePayrollInvoice(payrollID: number) {\r\n return this.$http({\r\n method: \"GET\",\r\n url: this.apexApiUrl + \"payroll-invoices/\" + payrollID,\r\n headers: { Accept: \"application/json\" }\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n createPayrollInvoice(payrollID: number, invoiceDate: Date | string) {\r\n const data = {\r\n payrollID: payrollID,\r\n invoiceDate: invoiceDate\r\n };\r\n return this.$http({\r\n method: \"POST\",\r\n url: this.apexApiUrl + \"payroll-invoices\",\r\n headers: { \"Content-Type\": \"application/json\", Accept: \"application/json\" },\r\n data: data\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n updatePayrollInvoice(payrollID, payrollInvoice) {\r\n const invoiceDTO = {\r\n StatusID: payrollInvoice.StatusID,\r\n Adjustment: payrollInvoice.Adjustment,\r\n AdjustmentComments: payrollInvoice.AdjustmentComments,\r\n PaymentMethodID: payrollInvoice.PaymentMethodID,\r\n HJComments: payrollInvoice.HJComments,\r\n HubComments: payrollInvoice.HubComments,\r\n OwnerComments: payrollInvoice.OwnerComments,\r\n IsDismissed: payrollInvoice.IsDismissed\r\n };\r\n\r\n return this.$http({\r\n method: \"PUT\",\r\n url: this.apexApiUrl + \"payroll-invoices/\" + payrollID,\r\n data: invoiceDTO,\r\n headers: { Accept: \"application/json\" }\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n retrievePayrollInvoiceStatuses() {\r\n return this.$http({\r\n method: \"GET\",\r\n url: this.apexApiUrl + \"payroll-invoice-statuses/\",\r\n headers: { Accept: \"application/json\" }\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n retrievePaymentMethods() {\r\n return this.$http({\r\n method: \"GET\",\r\n url: this.apexApiUrl + \"payment-methods/\",\r\n headers: { Accept: \"application/json\" }\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n}\r\n","export function PostedPayoutService($http, apexApiUrl) {\r\n 'ngInject'\r\n return {\r\n retrievePostedPayouts: retrievePostedPayouts,\r\n retrieveIcdPayouts: retrieveIcdPayouts,\r\n retrieveIcdPayout: retrieveIcdPayout,\r\n retrieveIcdPayoutHistory: retrieveIcdPayoutHistory,\r\n postPayouts: postPayouts,\r\n patchIcdPayout: patchIcdPayout,\r\n deleteIcdPayout: deleteIcdPayout\r\n };\r\n\r\n /**\r\n * Get a report of all posted payouts, consisting of the division and ICD payout amounts,\r\n * matching the given posted date in range and posted to the given division or corporation.\r\n * @param {any} startDate\r\n * @param {any} endDate\r\n * @param {any} divisionID\r\n * @param {any} icdCorporationID\r\n */\r\n function retrievePostedPayouts(startDate, endDate, divisionID, icdCorporationID) {\r\n const params = {};\r\n if (startDate) {\r\n params.startDate = kendo.format(\"{0:yyyy-MM-dd}\", startDate);\r\n }\r\n if (endDate) {\r\n params.endDate = kendo.format(\"{0:yyyy-MM-dd}\", endDate);\r\n }\r\n params.divisionID = divisionID;\r\n params.icdCorporationID = icdCorporationID;\r\n\r\n return $http({\r\n method: \"GET\",\r\n url: apexApiUrl + \"posted-payouts\",\r\n params: params,\r\n headers: { Accept: \"application/json\" }\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n /**\r\n * Get the posted ICD payout amounts matching the given posted date in range and posted to\r\n * the given corporation or division.\r\n * @param {any} startDate\r\n * @param {any} endDate\r\n * @param {any} divisionID\r\n * @param {any} icdCorporationID\r\n */\r\n function retrieveIcdPayouts(startDate, endDate, divisionID, icdCorporationID) {\r\n const params = {};\r\n if (startDate) {\r\n params.startDate = kendo.format(\"{0:yyyy-MM-dd}\", startDate);\r\n }\r\n if (endDate) {\r\n params.endDate = kendo.format(\"{0:yyyy-MM-dd}\", endDate);\r\n }\r\n params.divisionID = divisionID;\r\n params.icdCorporationID = icdCorporationID;\r\n\r\n return $http({\r\n method: \"GET\",\r\n url: apexApiUrl + \"posted-payouts/icd\",\r\n params: params,\r\n headers: { Accept: \"application/json\" }\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n /**\r\n * Get the posted ICD payout amounts with the given ID.\r\n * @param {any} icdPayoutID\r\n */\r\n function retrieveIcdPayout(icdPayoutID) {\r\n return $http({\r\n method: \"GET\",\r\n url: apexApiUrl + \"posted-payouts/icd/\" + icdPayoutID,\r\n headers: { Accept: \"application/json\" }\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n /**\r\n * Get the full history of all posted ICD amounts for the payout with the given ID.\r\n * @param {any} icdPayoutID\r\n */\r\n function retrieveIcdPayoutHistory(icdPayoutID) {\r\n return $http({\r\n method: \"GET\",\r\n url: apexApiUrl + \"posted-payouts/icd/\" + icdPayoutID + \"/history\",\r\n headers: { Accept: \"application/json\" }\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n /**\r\n * Post the work order payouts matching the given query on the given posted date.\r\n * @param {any} postedDate\r\n * @param {any} query\r\n */\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n function postPayouts({ DivisionID, IcdCorporationID, ...request }) {\r\n return $http({\r\n method: \"POST\",\r\n url: apexApiUrl + \"posted-payouts\",\r\n params: {\r\n DivisionID,\r\n IcdCorporationID\r\n },\r\n data: request\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n /**\r\n * Update and adjust suggested rep payouts for the ICD payout with the given ID.\r\n * @param {any} icdPayoutID\r\n * @param {any} request A request consisting of work order payouts whose rep amounts should\r\n * be adjusted or overwritten.\r\n */\r\n function patchIcdPayout(icdPayoutID, request) {\r\n return $http({\r\n method: \"PATCH\",\r\n url: apexApiUrl + \"posted-payouts/icd/\" + icdPayoutID,\r\n data: request,\r\n headers: { Accept: \"application/json\" }\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n /**\r\n * Hide the posted ICD payout with the given ID without deleting its history.\r\n * @param {any} icdPayoutID\r\n */\r\n function deleteIcdPayout(icdPayoutID) {\r\n return $http({\r\n method: \"DELETE\",\r\n url: apexApiUrl + \"posted-payouts/icd/\" + icdPayoutID\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n}\r\n","export function ProductCommissionPolicyService($http, $q, apexApiUrl) {\r\n 'ngInject';\r\n const service = {\r\n retrieveProductCommissionPolicies: retrieveProductCommissionPolicies,\r\n retrieveProductCommissionPolicy: retrieveProductCommissionPolicy,\r\n createProductCommissionPolicy: createProductCommissionPolicy,\r\n updateProductCommissionPolicy: updateProductCommissionPolicy,\r\n deleteProductCommissionPolicy: deleteProductCommissionPolicy,\r\n duplicateProductCommissionPolicyExists: duplicateProductCommissionPolicyExists,\r\n bulkUpsetProductCommision: bulkUpsetProductCommision\r\n };\r\n\r\n return service;\r\n\r\n function retrieveProductCommissionPolicies() {\r\n return $http({\r\n method: \"GET\",\r\n url: apexApiUrl + \"product-commission-policies/\",\r\n headers: {\r\n Accept: 'application/json'\r\n }\r\n }).then(function (response) {\r\n return response.data;\r\n })\r\n }\r\n\r\n function retrieveProductCommissionPolicy(productCommissionPolicyID) {\r\n return $http({\r\n method: \"GET\",\r\n url: apexApiUrl + \"product-commission-policies/\" + productCommissionPolicyID,\r\n headers: {\r\n Accept: \"application/json\"\r\n }\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n function createProductCommissionPolicy(productCommissionPolicy) {\r\n return $http({\r\n method: \"POST\",\r\n url: apexApiUrl + \"product-commission-policies\",\r\n headers: {\r\n Accept: \"application/json\",\r\n \"Content-Type\": \"application/json\"\r\n },\r\n data: productCommissionPolicy\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n function updateProductCommissionPolicy(productCommissionPolicyID, productCommissionPolicy) {\r\n return $http({\r\n method: \"PUT\",\r\n url: apexApiUrl + \"product-commission-policies/\" + productCommissionPolicyID,\r\n headers: {\r\n Accept: \"application/json\",\r\n \"Content-Type\": \"application/json\"\r\n },\r\n data: productCommissionPolicy\r\n })\r\n }\r\n\r\n function deleteProductCommissionPolicy(productCommissionPolicyID) {\r\n return $http({\r\n method: \"DELETE\",\r\n url: apexApiUrl + \"product-commission-policies/\" + productCommissionPolicyID\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n function bulkUpsetProductCommision(policies) {\r\n return $http({\r\n method: \"POST\",\r\n url: apexApiUrl + \"product-commission-policies/bulk\",\r\n headers: {\r\n Accept: \"application/json\",\r\n \"Content-Type\": \"application/json\"\r\n },\r\n data: policies\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n\r\n }\r\n\r\n function duplicateProductCommissionPolicyExists(commissionPolicy, commissionPolicies) {\r\n let anyDuplicates = false;\r\n if (commissionPolicy.Product && commissionPolicy.ProductLine) {\r\n anyDuplicates = commissionPolicies.reduce(function (any, other) {\r\n return any || other !== commissionPolicy\r\n && other.Product && other.Product.ProductID === commissionPolicy.Product.ProductID\r\n && other.ProductLine\r\n && other.ProductLine.ProductLineID === commissionPolicy.ProductLine.ProductLineID;\r\n }, false);\r\n }\r\n return anyDuplicates;\r\n }\r\n\r\n}\r\n","export function ProductLineService($http, apexApiUrl) {\r\n 'ngInject';\r\n return {\r\n createProductLines: createProductLines,\r\n retrieveProductLines: retrieveProductLines,\r\n updateProductLine: updateProductLine,\r\n deleteProductLine: deleteProductLine,\r\n getRogersCategories: getRogersCategories\r\n };\r\n\r\n function retrieveProductLines() {\r\n return $http({\r\n method: \"GET\",\r\n url: apexApiUrl + \"product-lines\",\r\n headers: { Accept: \"application/json\" }\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n function createProductLines(data) {\r\n\r\n return $http({\r\n method: \"POST\",\r\n data: data,\r\n url: apexApiUrl + \"product-lines\",\r\n headers: { Accept: \"application/json\" }\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n function updateProductLine(id, productLine) {\r\n\r\n return $http({\r\n method: \"PUT\",\r\n url: apexApiUrl + \"product-lines/\" + id,\r\n data: productLine\r\n\r\n });\r\n }\r\n\r\n function deleteProductLine(id) {\r\n return $http({\r\n method: \"DELETE\",\r\n url: apexApiUrl + \"product-lines/\" + id\r\n });\r\n }\r\n\r\n function getRogersCategories() {\r\n return [\r\n {\r\n CategoryID: 1,\r\n CategoryDescription: \"TV\"\r\n },\r\n {\r\n CategoryID: 2,\r\n CategoryDescription: \"Internet\"\r\n },\r\n {\r\n CategoryID: 3,\r\n CategoryDescription: \"Home Phone\"\r\n },\r\n {\r\n CategoryID: 4,\r\n CategoryDescription: \"Smart Home Monitoring\"\r\n },\r\n {\r\n CategoryID: 5,\r\n CategoryDescription: \"Wireless\"\r\n },\r\n {\r\n CategoryID: 6,\r\n CategoryDescription: \"Content\"\r\n },\r\n {\r\n CategoryID: 7,\r\n CategoryDescription: \"Migration\"\r\n }\r\n ].sort((a, b) => a.text < b.text ? -1 : 1);\r\n }\r\n}\r\n","export class ProductOrderAdjustmentService {\r\n constructor($http, apexApiUrl) {\r\n 'ngInject'\r\n this.$http = $http\r\n this.apexApiUrl = apexApiUrl\r\n }\r\n\r\n /**\r\n * Create a new prodcut order adjustment\r\n */\r\n createProductOrderAdjustment(adjustment) {\r\n return this.$http({\r\n method: \"POST\",\r\n url: this.apexApiUrl + \"product-order-adjustment/\",\r\n headers: {\r\n \"Content-Type\": \"application/json\"\r\n },\r\n data: JSON.stringify(adjustment)\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n /**\r\n * Bulk upsert product order adjustments\r\n */\r\n bulkUpsertProductOrderAdjustments(request) {\r\n return this.$http({\r\n method: \"POST\",\r\n url: this.apexApiUrl + \"product-order-adjustment/bulk\",\r\n headers: {\r\n \"Content-Type\": \"application/json\"\r\n },\r\n data: request\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n /**\r\n * Update the given prodcut order adjustment\r\n */\r\n updateProductOrderAdjustment(productOrderAdjustmentID, adjustment) {\r\n return this.$http({\r\n method: \"PUT\",\r\n url: this.apexApiUrl + \"product-order-adjustment/\" + productOrderAdjustmentID,\r\n headers: {\r\n \"Content-Type\": \"application/json\"\r\n },\r\n data: JSON.stringify(adjustment)\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n /**\r\n * Delete the given product order adjustment\r\n */\r\n deleteProductOrderAdjustment(productOrderAdjustmentID) {\r\n return this.$http({\r\n method: \"DELETE\",\r\n url: this.apexApiUrl + \"product-order-adjustment/\" + productOrderAdjustmentID,\r\n headers: {\r\n \"Content-Type\": \"application/json\"\r\n }\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n}\r\n","export function ProductService($http, apexApiUrl) {\r\n 'ngInject';\r\n return {\r\n createProduct: createProduct,\r\n retrieveProducts: retrieveProducts,\r\n updateProduct: updateProduct,\r\n deleteProduct: deleteProduct\r\n };\r\n\r\n function retrieveProducts() {\r\n return $http({\r\n method: \"GET\",\r\n url: apexApiUrl + \"products\",\r\n headers: { Accept: \"application/json\" }\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n function createProduct(data) {\r\n\r\n return $http({\r\n method: \"POST\",\r\n data: data,\r\n url: apexApiUrl + \"products\",\r\n headers: { Accept: \"application/json\" }\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n function updateProduct(id, productLine) {\r\n\r\n return $http({\r\n method: \"PUT\",\r\n url: apexApiUrl + \"products/\" + id,\r\n data: productLine\r\n\r\n });\r\n }\r\n\r\n function deleteProduct(id) {\r\n return $http({\r\n method: \"DELETE\",\r\n url: apexApiUrl + \"products/\" + id\r\n });\r\n }\r\n}\r\n","export function ProgramService($http, apexApiUrl) {\r\n 'ngInject';\r\n return {\r\n retrievePrograms: retrievePrograms\r\n };\r\n\r\n function retrievePrograms(params) {\r\n return $http({\r\n method: \"GET\",\r\n url: `${apexApiUrl}/programs`,\r\n params\r\n })\r\n .then(response => response.data);\r\n }\r\n}\r\n","import { IcdCorporationManager, IcdCorporationManagerRM } from \"@herbjoy/apex-api-models\";\r\nimport { IHttpService } from \"angular\";\r\n\r\nexport class PromotingOwnerService {\r\n constructor(private $http: IHttpService, private apexApiUrl: string) {\r\n 'ngInject';\r\n }\r\n\r\n retrievePromotingOwners(query?: { showRegisteredPromotingOwner: boolean }) {\r\n return this.$http({\r\n method: \"GET\",\r\n params: query,\r\n url: this.apexApiUrl + \"promoting-owners\"\r\n })\r\n .then(response => {\r\n return response.data;\r\n });\r\n }\r\n\r\n retrievePromotingOwner(promotingOwnerID: number) {\r\n return this.$http({\r\n method: \"GET\",\r\n url: this.apexApiUrl + \"promoting-owners/\" + promotingOwnerID\r\n })\r\n .then(response => {\r\n return response.data;\r\n });\r\n }\r\n\r\n savePromotingOwner(promotingOwner: IcdCorporationManager) {\r\n if (!promotingOwner.IsNew) {\r\n return this.$http({\r\n method: \"PUT\",\r\n url: this.apexApiUrl + \"promoting-owners/\" + promotingOwner.Id,\r\n data: JSON.stringify(promotingOwner),\r\n headers: { \"Content-Type\": \"application/json\" }\r\n })\r\n .then(() => {\r\n return promotingOwner;\r\n });\r\n } else {\r\n return this.$http({\r\n method: \"POST\",\r\n url: this.apexApiUrl + \"promoting-owners\",\r\n data: JSON.stringify(promotingOwner),\r\n headers: { \"Content-Type\": \"application/json\" }\r\n })\r\n .then(response => {\r\n return response.data;\r\n });\r\n }\r\n }\r\n\r\n deletePromotingOwner(promotingOwnerID: number) {\r\n return this.$http({\r\n method: \"DELETE\",\r\n url: this.apexApiUrl + \"promoting-owners/\" + promotingOwnerID,\r\n headers: {\r\n \"Content-Type\": \"application/json\"\r\n },\r\n data: {}\r\n });\r\n }\r\n}\r\n","import { IcdCorporationManager, IcdCorporationManagerRM } from \"@herbjoy/apex-api-models\";\r\nimport { IHttpService } from \"angular\";\r\n\r\nexport class RegionalConsultantService {\r\n constructor(private $http: IHttpService, private apexApiUrl: string) {\r\n 'ngInject';\r\n }\r\n\r\n retrieveRegionalConsultants() {\r\n return this.$http({\r\n method: \"GET\",\r\n url: this.apexApiUrl + \"regional-consultants\"\r\n })\r\n .then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n retrieveRegionalConsultant(regionalConsultantID: number) {\r\n return this.$http({\r\n method: \"GET\",\r\n url: this.apexApiUrl + \"regional-consultants/\" + regionalConsultantID\r\n })\r\n .then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n saveRegionalConsultant(regionalConsultant: IcdCorporationManager) {\r\n if (regionalConsultant.Id) {\r\n return this.$http({\r\n method: \"PUT\",\r\n url: this.apexApiUrl + \"regional-consultants/\" + regionalConsultant.Id,\r\n data: JSON.stringify(regionalConsultant),\r\n headers: { \"Content-Type\": \"application/json\" }\r\n })\r\n .then(function () {\r\n return regionalConsultant;\r\n });\r\n } else {\r\n return this.$http({\r\n method: \"POST\",\r\n url: this.apexApiUrl + \"regional-consultants\",\r\n data: JSON.stringify(regionalConsultant),\r\n headers: { \"Content-Type\": \"application/json\" }\r\n })\r\n .then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n }\r\n\r\n deleteRegionalConsultant(regionalConsultantID: number) {\r\n return this.$http({\r\n method: \"DELETE\",\r\n url: this.apexApiUrl + \"regional-consultants/\" + regionalConsultantID,\r\n headers: {\r\n \"Content-Type\": \"application/json\"\r\n },\r\n data: {}\r\n });\r\n }\r\n}\r\n","export function RetailerService($http, apexApiUrl) {\r\n 'ngInject'\r\n return {\r\n retrieveRetailers: retrieveRetailers\r\n };\r\n\r\n function retrieveRetailers() {\r\n return $http({\r\n method: \"GET\",\r\n headers: { Accept: \"application/json\" },\r\n url: apexApiUrl + \"retailers\"\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n}\r\n","export function RogersDashboardService($http, apexApiUrl) {\r\n 'ngInject';\r\n return {\r\n retrieveRogersDailyProductionReport: retrieveRogersDailyProductionReport,\r\n retrieveRogersEmployeesTsuReport: retrieveRogersEmployeesTsuReport,\r\n retrieveRogersOwnersTsuReport: retrieveRogersOwnersTsuReport,\r\n retrieveRogersTrendReports: retrieveRogersTrendReports,\r\n retrieveRogersSlippageSummaryReport: retrieveRogersSlippageSummaryReport,\r\n retrieveRogersSlippageReport: retrieveRogersSlippageReport,\r\n retrieveRogersRecruitingBonusReport: retrieveRogersRecruitingBonusReport,\r\n retrieveRogersRecruitingBonusBreakdownReport: retrieveRogersRecruitingBonusBreakdownReport\r\n };\r\n\r\n function retrieveRogersDailyProductionReport(query) {\r\n return $http({\r\n method: \"GET\",\r\n params: query,\r\n url: apexApiUrl + \"dashboards/rogers/daily-production-report\"\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n function retrieveRogersEmployeesTsuReport(query) {\r\n return $http({\r\n method: \"GET\",\r\n params: query,\r\n url: apexApiUrl + \"dashboards/rogers/employees-tsu-report\"\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n function retrieveRogersOwnersTsuReport(query) {\r\n return $http({\r\n method: \"GET\",\r\n params: query,\r\n url: apexApiUrl + \"dashboards/rogers/owners-tsu-report\"\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n function retrieveRogersTrendReports(query) {\r\n return $http({\r\n method: \"GET\",\r\n params: query,\r\n url: apexApiUrl + \"dashboards/rogers/rogers-trend-report\"\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n function retrieveRogersSlippageReport(query) {\r\n return $http({\r\n method: \"GET\",\r\n params: query,\r\n url: apexApiUrl + \"dashboards/rogers/rogers-slippage-report\"\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n function retrieveRogersSlippageSummaryReport(query) {\r\n return $http({\r\n method: \"GET\",\r\n params: query,\r\n url: apexApiUrl + \"dashboards/rogers/rogers-slippage-summary-report\"\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n function retrieveRogersRecruitingBonusReport(query) {\r\n return $http({\r\n method: \"GET\",\r\n params: query,\r\n url: apexApiUrl + \"dashboards/rogers/rogers-recruiting-bonus-report\"\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n function retrieveRogersRecruitingBonusBreakdownReport(query) {\r\n return $http({\r\n method: \"GET\",\r\n params: query,\r\n url: apexApiUrl + \"dashboards/rogers/rogers-recruiting-bonus-breakdown-report\"\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n}\r\n","import moment from 'moment'\r\n\r\nexport function RogersLeadsStatisticsService($http, apexApiUrl) {\r\n 'ngInject'\r\n const service = {\r\n retrieveTotalStatistics: retrieveTotalStatistics,\r\n retrieveOfficeStatistics: retrieveOfficeStatistics,\r\n retrieveRepStatistics: retrieveRepStatistics\r\n };\r\n\r\n return service;\r\n\r\n /**\r\n * Get the singular statistics aggregate representing all statistics\r\n * matching the given query\r\n * @param {any} query The query object\r\n * @returns {Promise} The statistics data.\r\n */\r\n function retrieveTotalStatistics(query) {\r\n return $http({\r\n method: \"GET\",\r\n url: apexApiUrl + \"/reports/rogers/leads-total-statistics\",\r\n params: mapQueryToParams(query)\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n /**\r\n * Get a list of statistics broken down by office.\r\n * @param {any} query The query object\r\n * @returns {Promise} The statistics broken down by office\r\n */\r\n function retrieveOfficeStatistics(query) {\r\n return $http({\r\n method: \"GET\",\r\n url: apexApiUrl + \"/reports/rogers/leads-office-statistics\",\r\n params: mapQueryToParams(query)\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n /**\r\n * Get a list of statistics broken down by rep.\r\n * @param {any} query The query object\r\n * @returns {Promise} The statistics data broken down by rep.\r\n */\r\n function retrieveRepStatistics(query) {\r\n return $http({\r\n method: \"GET\",\r\n url: apexApiUrl + \"/reports/rogers/leads-rep-statistics\",\r\n params: mapQueryToParams(query)\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n /**\r\n * Map a statistics query into query string parameters.\r\n * @param {any} query The query object to be mapped to a params object\r\n * @returns {any} The URL-serializable params.\r\n */\r\n function mapQueryToParams(query) {\r\n const params = {\r\n leadBatchID: query.leadBatchID,\r\n leadGroupID: query.leadGroupID,\r\n icdOfficeID: query.icdOffices,\r\n employeeID: query.employees,\r\n userID: query.userID\r\n };\r\n\r\n if (query.startDate) {\r\n params.startDate = moment(query.startDate).format(\"YYYY-MM-DD\");\r\n }\r\n\r\n if (query.endDate) {\r\n params.endDate = moment(query.endDate).format(\"YYYY-MM-DD\");\r\n }\r\n\r\n return params;\r\n }\r\n}\r\n","import moment from \"moment\";\r\n\r\nexport class RogersPayoutReportService {\r\n constructor($http, apexApiUrl) {\r\n 'ngInject'\r\n this.$http = $http\r\n this.apexApiUrl = apexApiUrl\r\n }\r\n\r\n retrieveRogersLivePayoutReportJobs() {\r\n return this.$http({\r\n method: \"GET\",\r\n url: this.apexApiUrl + \"reports/rogers\",\r\n //params: query\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n retrieveRogersLivePayoutReport(query) {\r\n //return this.createRogersLivePayoutReportJob(query);\r\n return this.$http({\r\n method: \"GET\",\r\n url: this.apexApiUrl + \"reports/rogers/live-payout-report\",\r\n params: query\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n createRogersLivePayoutReportJob(query) {\r\n return this.$http({\r\n method: \"POST\",\r\n url: this.apexApiUrl + \"reports/rogers/create-job-live-payout-report\",\r\n params: query\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n retrieveRogersPostedPayoutReport(query) {\r\n return this.$http({\r\n method: \"GET\",\r\n url: this.apexApiUrl + \"reports/rogers/posted-payout-report\",\r\n params: query\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n retrieveRogersPostedPayoutExceptionsReport(query) {\r\n return this.$http({\r\n method: \"GET\",\r\n url: this.apexApiUrl + \"reports/rogers/posted-payout-exceptions-report\",\r\n params: {\r\n PostedDate: moment(query.PostedDate).format(\"YYYY-MM-DD\"),\r\n IcdCorporationID: query.IcdCorporationID\r\n }\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n retrieveRogersHybridPayoutReport(query) {\r\n return this.$http({\r\n method: \"GET\",\r\n url: this.apexApiUrl + \"reports/rogers/hybrid-payout-report\",\r\n params: query\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n retrieveRogersOwnerHybridPayoutReport(query) {\r\n return this.$http({\r\n method: \"GET\",\r\n url: this.apexApiUrl + \"reports/rogers/owner-hybrid-payout-report\",\r\n params: query\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n retrieveRogersPayoutRateTable(query) {\r\n return this.$http({\r\n method: \"GET\",\r\n url: this.apexApiUrl + \"reports/payout-policies/payout-rate-table\",\r\n params: query\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n retrieveRogersEmployeeCommissionStatement(query) {\r\n return this.$http({\r\n method: \"GET\",\r\n url: this.apexApiUrl + \"reports/rogers/employee-commission-statement\",\r\n params: query\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n}\r\n","const apiHeaders = {\r\n Accept: 'application/json'\r\n};\r\n\r\nexport class RoleService {\r\n constructor($http, $q, apexApiUrl, localeService) {\r\n 'ngInject';\r\n this.$http = $http;\r\n this.$q = $q;\r\n this.apexApiUrl = apexApiUrl;\r\n this.localeService = localeService;\r\n }\r\n\r\n retrieveRoles() {\r\n return this.$http.get(this.apexApiUrl + \"roles/\", { headers: { Accept: \"application/json\" } })\r\n .then(response => response.data);\r\n }\r\n\r\n /**\r\n * Retrieve a list of all roles available on the site.\r\n */\r\n retrieveV2Roles() {\r\n const translator = this._descriptionTranslator();\r\n const roles = this.$http({\r\n method: \"GET\",\r\n url: `${this.apexApiUrl}/v2/roles`,\r\n headers: apiHeaders\r\n }).then(response => response.data);\r\n return this.$q.all([roles, translator])\r\n .then(([roles, translate]) => {\r\n for (const role of roles) {\r\n translate(role);\r\n }\r\n return roles;\r\n });\r\n }\r\n\r\n retrieveV2Role(roleID) {\r\n const translator = this._descriptionTranslator();\r\n const role = this.$http({\r\n method: \"GET\",\r\n url: this.apexApiUrl + \"v2/roles/\" + roleID,\r\n headers: apiHeaders\r\n })\r\n .then(function (response) {\r\n return response.data;\r\n });\r\n return this.$q.all([role, translator])\r\n .then(([role, translate]) => translate(role));\r\n }\r\n\r\n updateRoleV2(roleID, request) {\r\n return this.$http({\r\n method: \"PUT\",\r\n url: this.apexApiUrl + \"v2/roles/\" + roleID,\r\n data: request\r\n })\r\n .then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n createRoleV2(request) {\r\n return this.$http({\r\n method: \"POST\",\r\n url: this.apexApiUrl + \"v2/roles\",\r\n data: request\r\n })\r\n .then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n deleteRoleV2(roleID) {\r\n return this.$http({\r\n method: \"DELETE\",\r\n url: this.apexApiUrl + \"v2/roles/\" + roleID\r\n })\r\n .then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n _descriptionTranslator() {\r\n return this.localeService.retrieveCurrentLocaleTranslations()\r\n // Resolve the translations to a function that translates a role.\r\n .then(translations => role => {\r\n if (role.Description && role.Description[0] === \"|\") {\r\n role.TranslatedDescription = translations[role.Description.slice(1)];\r\n } else {\r\n role.TranslatedDescription = role.Description;\r\n }\r\n return role;\r\n });\r\n }\r\n}\r\n","import moment from 'moment';\r\n\r\nexport function RsPayoutTransfersService($http, apexApiUrl) {\r\n 'ngInject';\r\n return {\r\n createRSPayoutTransfer: createRSPayoutTransfer,\r\n retrieveRSPayoutTransfers: retrieveRSPayoutTransfers,\r\n updateRSPayoutTransfer: updateRSPayoutTransfer,\r\n deleteRSPayoutTransfer: deleteRSPayoutTransfer\r\n };\r\n\r\n\r\n function retrieveRSPayoutTransfers(startDate, endDate, icdCorporation) {\r\n const params = {};\r\n if (startDate) {\r\n params.startDate = moment(startDate).format(\"YYYY-MM-DD\");\r\n }\r\n if (endDate) {\r\n params.endDate = moment(endDate).format(\"YYYY-MM-DD\");\r\n }\r\n params.icdCorporation = icdCorporation;\r\n return $http({\r\n method: \"GET\",\r\n params: params,\r\n url: apexApiUrl + \"rs-payout-transfers\",\r\n headers: { Accept: \"application/json\" }\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n function createRSPayoutTransfer(data) {\r\n\r\n return $http({\r\n method: \"POST\",\r\n data: data,\r\n url: apexApiUrl + \"rs-payout-transfers\",\r\n headers: { Accept: \"application/json\" }\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n function updateRSPayoutTransfer(id, transfer) {\r\n\r\n return $http({\r\n method: \"PUT\",\r\n url: apexApiUrl + \"rs-payout-transfers/\" + id,\r\n data: transfer\r\n\r\n });\r\n }\r\n\r\n function deleteRSPayoutTransfer(id) {\r\n return $http({\r\n method: \"DELETE\",\r\n url: apexApiUrl + \"rs-payout-transfers/\" + id\r\n });\r\n }\r\n}\r\n","export function RSScheduleService($http, apexApiUrl) {\r\n 'ngInject'\r\n return {\r\n retrieveRSSchedules: retrieveRSSchedules,\r\n retrieveRSSchedulesPaged: retrieveRSSchedulesPaged,\r\n retrieveRSSchedule: retrieveRSSchedule,\r\n updateRSSchedule: updateRSSchedule,\r\n retrieveRSScheduleEmployees: retrieveRSScheduleEmployees,\r\n retrieveQualifyingEmployees: retrieveQualifyingEmployees,\r\n saveRSScheduleEmployees: saveRSScheduleEmployees,\r\n retrieveEmployeeSchedules: retrieveEmployeeSchedules,\r\n retrieveEmployeePrograms: retrieveEmployeePrograms,\r\n retrieveEmployeeLocations: retrieveEmployeeLocations,\r\n retrieveEmployeeDepartments: retrieveEmployeeDepartments,\r\n retrieveRotationByDate: retrieveRotationByDate,\r\n };\r\n\r\n function retrieveRSSchedules(params) {\r\n return $http({\r\n method: \"GET\",\r\n url: apexApiUrl + \"rs-schedules\",\r\n responseType: \"application/json\",\r\n params: params\r\n })\r\n .then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n function retrieveRSSchedulesPaged(pageIndex, params) {\r\n return $http({\r\n method: \"GET\",\r\n url: apexApiUrl + \"RSSchedule/page/\" + pageIndex,\r\n responseType: \"application/json\",\r\n params: params\r\n })\r\n .then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n /**\r\n * Retrieve the specific schedule details for the schedule with the given ID.\r\n */\r\n function retrieveRSSchedule(rsScheduleID) {\r\n return $http({\r\n method: \"GET\",\r\n url: apexApiUrl + \"rsschedule/\" + rsScheduleID,\r\n headers: { 'Content-Type': 'application/json' },\r\n responseType: \"application/json\"\r\n }).then(function (response) {\r\n return response.data;\r\n })\r\n }\r\n\r\n function updateRSSchedule(rsSchedule) {\r\n return $http({\r\n method: \"PUT\",\r\n url: apexApiUrl + \"rsschedule/\" + rsSchedule.RSScheduleID,\r\n headers: { 'Content-Type': 'application/json' },\r\n data: JSON.stringify({\r\n StartDate: rsSchedule.StartDate,\r\n EndDate: rsSchedule.EndDate,\r\n RSScheduleSales: rsSchedule.RSScheduleSales.map(function (sales) {\r\n return {\r\n RSScheduleSalesID: sales.RSScheduleSalesID,\r\n SalesAmount: sales.SalesAmount,\r\n AnonymousHours: sales.AnonymousHours\r\n }\r\n })\r\n })\r\n });\r\n }\r\n\r\n function retrieveRSScheduleEmployees(rsScheduleID) {\r\n return $http({\r\n method: \"POST\",\r\n url: \"/RSSchedule/ListRSScheduleEmployees/\",\r\n headers: { 'Content-Type': 'application/json' },\r\n responseType: \"application/json\",\r\n data: JSON.stringify({ rsScheduleID: rsScheduleID }),\r\n });\r\n }\r\n\r\n function retrieveQualifyingEmployees(rsScheduleID) {\r\n return $http({\r\n method: \"POST\",\r\n url: \"/RSSchedule/ListQualifyingEmployees/\",\r\n headers: { 'Content-Type': 'application/json' },\r\n responseType: \"application/json\",\r\n data: JSON.stringify({ rsScheduleID: rsScheduleID }),\r\n });\r\n }\r\n\r\n function retrieveEmployeeSchedules(employeeID, icdOfficeID, scheduleDate) {\r\n return $http.get(apexApiUrl + \"employees/\" + employeeID + \"/icd-offices/\" + icdOfficeID + \"/schedule-dates/\" + scheduleDate.toString(\"yyyy-MM-dd\"))\r\n .then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n /**\r\n * Return the list of programs available for the given employee on the date,\r\n * in addition to their current selection and all programs if indicated.\r\n */\r\n function retrieveEmployeePrograms(employeeID, icdOfficeID, scheduleDate, selectedProgramID, showAll) {\r\n showAll = showAll || false;\r\n\r\n return $http({\r\n method: \"GET\",\r\n url: apexApiUrl + \"employees/\" + employeeID + \"/icd-offices/\" + icdOfficeID + \"/schedule-dates/\" + scheduleDate.toString(\"yyyy-MM-dd\")\r\n + \"/programs\",\r\n responseType: \"application/json\",\r\n params: {\r\n selectedProgramID: selectedProgramID,\r\n showAll: showAll\r\n }\r\n })\r\n .then(function (response) {\r\n return response.data.map(function (program) {\r\n return {\r\n Value: program.Id,\r\n Text: program.Name,\r\n IsPinned: program.IsPinned\r\n };\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Return the list of locations available for the given employee on the date,\r\n * in addition to their current selection and all locations if indicated.\r\n */\r\n function retrieveEmployeeLocations(employeeID, icdOfficeID, scheduleDate, selectedLocationID, showAll) {\r\n showAll = showAll || false;\r\n return $http({\r\n method: \"GET\",\r\n url: apexApiUrl + \"employees/\" + employeeID + \"/icd-offices/\" + icdOfficeID + \"/schedule-dates/\" + scheduleDate.toString(\"yyyy-MM-dd\")\r\n + \"/stores\",\r\n responseType: \"application/json\",\r\n params: {\r\n selectedLocationID: selectedLocationID,\r\n showAll: showAll\r\n }\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n /**\r\n * Return the list of locations available for the given employee on the date,\r\n * in addition to their current selection and all locations if indicated.\r\n */\r\n function retrieveEmployeeDepartments(employeeID, icdOfficeID, scheduleDate, selectedDepartmentID, showAll) {\r\n showAll = showAll || false;\r\n return $http(\r\n {\r\n method: \"GET\",\r\n url: apexApiUrl + \"employees/\" + employeeID + \"/icd-offices/\" + icdOfficeID + \"/schedule-dates/\" + scheduleDate.toString(\"yyyy-MM-dd\")\r\n + \"/departments\",\r\n responseType: \"application/json\",\r\n params: {\r\n selectedDepartmentID: selectedDepartmentID,\r\n showAll: showAll\r\n }\r\n })\r\n .then(function (response) {\r\n return response.data.map(function (dept) {\r\n return {\r\n Value: dept.Id,\r\n Text: dept.Name\r\n };\r\n });\r\n });\r\n }\r\n\r\n function retrieveRotationByDate(rsDate) {\r\n return $http({\r\n method: \"GET\",\r\n url: apexApiUrl + \"rs-schedules/rotation-by-date/\" + rsDate,\r\n headers: { 'Content-Type': 'application/json' },\r\n responseType: \"application/json\"\r\n }).then(function (response) {\r\n return response.data;\r\n })\r\n }\r\n\r\n function saveRSScheduleEmployees(rsScheduleID, employeeIDs) {\r\n return $http({\r\n method: \"POST\",\r\n url: \"/RSSchedule/RSScheduleEmployees/\" + rsScheduleID,\r\n headers: { 'Content-Type': 'application/json' },\r\n responseType: \"application/json\",\r\n data: JSON.stringify({ employeeIDs: employeeIDs }),\r\n });\r\n }\r\n}\r\n","/**\r\n * A data service that interfaces with the time slot resource.\r\n */\r\nexport class ScheduleEventTimeSlotService {\r\n constructor($http, apexApiUrl) {\r\n 'ngInject'\r\n this.$http = $http;\r\n this.apexApiUrl = apexApiUrl;\r\n }\r\n retrieveScheduleEventTimeSlots(scheduleEventID, query) {\r\n return this.$http({\r\n method: \"GET\",\r\n url: `${this.apexApiUrl}/schedule-events/${scheduleEventID}/time-slots`,\r\n params: query\r\n }).then(response => response.data);\r\n }\r\n\r\n retrieveOfficeScheduleEventTimeSlots(icdOfficeID, query) {\r\n return this.$http({\r\n method: \"GET\",\r\n url: `${this.apexApiUrl}/icd-offices/${icdOfficeID}/schedule-event-time-slots`,\r\n params: query\r\n }).then(response => response.data);\r\n }\r\n\r\n retrieveCorporationScheduleEventTimeSlots(icdCorporationID, query) {\r\n return this.$http({\r\n method: \"GET\",\r\n url: `${this.apexApiUrl}/icd-corporations/${icdCorporationID}/schedule-event-time-slots`,\r\n params: query\r\n }).then(response => response.data);\r\n }\r\n\r\n retrieveEmployeeScheduleEventTimeSlots(employeeID, query) {\r\n return this.$http({\r\n method: \"GET\",\r\n url: `${this.apexApiUrl}/employees/${employeeID}/assigned-schedule-events`,\r\n params: query\r\n }).then(response => response.data);\r\n }\r\n}\r\n","import { IHttpService } from \"angular\";\r\nimport { PagedEntityList, ScheduleEventListResponse } from \"@herbjoy/apex-api-models\";\r\n\r\n/**\r\n * An enum listing the name values of possible assigned statuses.\r\n */\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nexport const ScheduleEventAssignedStatus = {\r\n Pending: \"Pending\",\r\n Accepted: \"Accepted\",\r\n Rejected: \"Rejected\",\r\n Unassigned: \"Unassigned\"\r\n};\r\n\r\n/**\r\n * An enum listing the int values of possible assigned statuses.\r\n */\r\nexport const ScheduleEventAssignedStatusEnum = {\r\n Pending: 1,\r\n Accepted: 2,\r\n Rejected: 3,\r\n Unassigned: 4\r\n};\r\n\r\nexport class ScheduleEventService {\r\n constructor(private $http: IHttpService, private apexApiUrl: string) {\r\n 'ngInject'\r\n this.$http = $http\r\n this.apexApiUrl = apexApiUrl\r\n }\r\n\r\n /**\r\n * Retrieve a list of all the schedule events.\r\n */\r\n retrieveScheduleEvents(query) {\r\n return this.$http.get(this.apexApiUrl + \"schedule-events\", {\r\n params: query,\r\n headers: { Accept: \"application/json\" }\r\n })\r\n .then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n /**\r\n * Get assigned schedule events for the office filtered by the query.\r\n * @param {number} officeID The office whose assigned schedules will be returned\r\n * @param {any} query The query parameters\r\n */\r\n retrieveOfficeAssignedScheduleEvents(officeID, query) {\r\n return this.$http({\r\n method: \"GET\",\r\n url: `${this.apexApiUrl}/icd-offices/${officeID}/assigned-schedule-events`,\r\n params: query\r\n }).then(response => response.data);\r\n }\r\n\r\n retrieveScheduleEventsPage(pageIndex, query) {\r\n return this.$http.get>(this.apexApiUrl + \"schedule-events/page/\" + (pageIndex || 0), {\r\n params: query,\r\n headers: { Accept: \"application/json\" }\r\n })\r\n .then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n /**\r\n * Retrieve given schedule event.\r\n */\r\n retrieveScheduleEvent(scheduleEventID) {\r\n return this.$http.get(this.apexApiUrl + \"schedule-events/\" + scheduleEventID, {\r\n headers: { Accept: \"application/json\" }\r\n })\r\n .then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n\r\n /**\r\n * Retrieve recently assigned corporation\r\n */\r\n retrieveRecentScheduleCorporations(divisionID) {\r\n return this.$http.get(this.apexApiUrl + \"schedule-events/\" + divisionID + \"/recent/corporations\", {\r\n headers: { Accept: \"application/json\" }\r\n })\r\n .then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n /**\r\n * Create a new schedule event.\r\n */\r\n createScheduleEvent(scheduleEvent) {\r\n return this.$http({\r\n method: \"POST\",\r\n url: this.apexApiUrl + \"schedule-events\",\r\n headers: {\r\n \"Content-Type\": \"application/json\"\r\n },\r\n data: JSON.stringify(scheduleEvent)\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n /**\r\n * Update the given schedule event.\r\n */\r\n updateScheduleEvent(scheduleEventID, scheduleEvent) {\r\n return this.$http({\r\n method: \"PUT\",\r\n url: this.apexApiUrl + \"schedule-events/\" + scheduleEventID,\r\n headers: {\r\n \"Content-Type\": \"application/json\"\r\n },\r\n data: JSON.stringify(scheduleEvent)\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n /**\r\n * Patch the given schedule event.\r\n */\r\n patchScheduleEvent(scheduleEventID, request) {\r\n return this.$http({\r\n method: \"PATCH\",\r\n url: `${this.apexApiUrl}/schedule-events/${scheduleEventID}`,\r\n data: request\r\n }).then(response => response.data);\r\n }\r\n\r\n /**\r\n * Delete the given schedule event.\r\n */\r\n deleteScheduleEvent(scheduleEventID) {\r\n return this.$http({\r\n method: \"DELETE\",\r\n url: this.apexApiUrl + \"schedule-events/\" + scheduleEventID,\r\n headers: {\r\n \"Content-Type\": \"application/json\"\r\n }\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n\r\n /**\r\n * Retrieve the evnet scheduling TSU Report rummary.\r\n */\r\n retrieveScheduleEventTsuSummaryReport(query) {\r\n return this.$http.get(this.apexApiUrl + \"schedule-events/report/tsu-report-summary\", {\r\n params: query,\r\n headers: { Accept: \"application/json\" }\r\n })\r\n .then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n /**\r\n * Retrieve the evnet scheduling employee TSU report.\r\n */\r\n retrieveScheduleEventEmployeeTsuReport(query) {\r\n return this.$http.get(this.apexApiUrl + \"schedule-events/report/employee-tsu-report\", {\r\n params: query,\r\n headers: { Accept: \"application/json\" }\r\n })\r\n .then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n updateScheduleEventAdditionalHours(scheduleEventID, request) {\r\n return this.$http({\r\n method: \"PUT\",\r\n url: this.apexApiUrl + \"schedule-events/\" + scheduleEventID + \"/additional-hours\",\r\n data: request\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n}\r\n","import { IHttpService } from \"angular\";\r\n\r\nexport class SiteFeatureService {\r\n constructor(private $http: IHttpService, private apexApiUrl: string) {\r\n 'ngInject';\r\n this.$http = $http;\r\n this.apexApiUrl = apexApiUrl;\r\n }\r\n retrieveFeatures() {\r\n return this.$http({\r\n method: \"GET\",\r\n url: `${this.apexApiUrl}/app/features`\r\n }).then(response => response.data);\r\n }\r\n /**\r\n * Save user selection for beta program participation\r\n * @returns A promise that resolves when the update is complete.\r\n */\r\n saveBetaParticipation(betaOpt: boolean) {\r\n return this.$http({\r\n method: \"PUT\",\r\n url: this.apexApiUrl + \"/employees/betaopt\",\r\n params: { betaOpt: betaOpt }\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n getBetaParticipation() {\r\n return this.$http({\r\n method: \"GET\",\r\n url: this.apexApiUrl + \"/employees/betaopt\"\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n}\r\n","import { AppStateResponse } from '@herbjoy/apex-api-models';\r\nimport { IHttpService, IQService, IPromise, IRequestConfig } from 'angular';\r\n\r\n/**\r\n * An enumeration of all apex site feature modules.\r\n */\r\nexport * from '../../enum/site-module'\r\n\r\n/**\r\n * A service that gets site module data from the API.\r\n */\r\nexport class SiteModuleService {\r\n _appStates: AppStateResponse[];\r\n _loadingAppStates: IPromise;\r\n constructor(private $http: IHttpService, private $q: IQService, private apexApiUrl: string) {\r\n 'ngInject';\r\n }\r\n\r\n retrieveIcdModules() {\r\n return this.$http({\r\n method: \"GET\",\r\n url: `${this.apexApiUrl}/icd-modules`\r\n }).then(response => response.data);\r\n }\r\n\r\n retrieveDivisionalModules() {\r\n return this.$http({\r\n method: \"GET\",\r\n url: `${this.apexApiUrl}/divisional-modules`\r\n }).then(response => response.data);\r\n }\r\n\r\n retrieveAppStates() {\r\n if (this._appStates) {\r\n return this.$q.resolve(this._appStates);\r\n }\r\n if (this._loadingAppStates) {\r\n // Avoid making the request multiple times.\r\n return this._loadingAppStates;\r\n }\r\n this._loadingAppStates = this.$http({\r\n method: \"GET\",\r\n url: `${this.apexApiUrl}/app/states`,\r\n disableApexAuthInterceptor: true\r\n } as IRequestConfig).then(response => {\r\n this._loadingAppStates = null;\r\n this._appStates = response.data;\r\n return this._appStates;\r\n });\r\n return this._loadingAppStates;\r\n }\r\n}\r\n","import { StateProvinceModel } from \"@herbjoy/apex-api-models\";\r\nimport { IHttpService } from \"angular\";\r\n\r\nexport class StateProvinceService {\r\n constructor(private $http: IHttpService, private apexApiUrl: string) {\r\n 'ngInject';\r\n }\r\n\r\n retrieveStateProvinces(countryID?: number) {\r\n return this.$http({\r\n method: \"GET\",\r\n url: this.apexApiUrl + \"state-provinces\",\r\n params: { countryID: countryID },\r\n headers: { Accept: \"application/json\" }\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n retrieveStateProvince(stateProvinceID: number) {\r\n return this.$http({\r\n method: \"GET\",\r\n url: this.apexApiUrl + \"state-provinces/\" + stateProvinceID,\r\n headers: { Accept: \"application/json\" }\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n patchStateProvince(stateProvinceID: number, stateProvince: StateProvinceModel) {\r\n const data = {\r\n TaxRate1: stateProvince.TaxRate1,\r\n TaxRate2: stateProvince.TaxRate2,\r\n TaxRate3: stateProvince.TaxRate3\r\n };\r\n\r\n return this.$http({\r\n method: \"PATCH\",\r\n url: this.apexApiUrl + \"state-provinces/\" + stateProvinceID,\r\n headers: { \"Content-Type\": \"application/json\", Accept: \"application/json\" },\r\n data: data\r\n }).then(() => {\r\n return this.retrieveStateProvince(stateProvinceID);\r\n });\r\n }\r\n}\r\n","import { TeamResponse } from \"@herbjoy/apex-api-models\";\r\nimport { IHttpService } from \"angular\";\r\n\r\nexport class TeamService {\r\n constructor(private $http: IHttpService, private apexApiUrl: string) {\r\n 'ngInject'\r\n }\r\n\r\n retrieveTeams(query) {\r\n return this.$http({\r\n url: this.apexApiUrl + \"teams\",\r\n method: \"GET\",\r\n headers: { Accept: \"application/json\" },\r\n params: query\r\n }).then(response => {\r\n return response.data;\r\n });\r\n }\r\n\r\n retrieveTeamMembers(teamLeaderEmpId: any) {\r\n return this.$http({\r\n method: \"GET\",\r\n url: this.apexApiUrl + \"teams/RetrieveTeamMembers/\" + teamLeaderEmpId,\r\n headers: { Accept: \"application/json\" }\r\n })\r\n .then(function (response) {\r\n console.log(response.data);\r\n return response.data;\r\n })\r\n .catch((err) => {\r\n console.log(err)\r\n });\r\n }\r\n\r\n retrieveTeam(teamID) {\r\n return this.$http({\r\n url: this.apexApiUrl + \"teams/\" + teamID,\r\n method: \"GET\",\r\n headers: { Accept: \"application/json\" }\r\n }).then(response => {\r\n return response.data;\r\n });\r\n }\r\n\r\n createTeam(request) {\r\n return this.$http({\r\n url: this.apexApiUrl + \"teams\",\r\n method: \"POST\",\r\n headers: { Accept: \"application/json\", \"Content-Type\": \"application/json\" },\r\n data: request\r\n }).then(response => {\r\n return response.data;\r\n });\r\n }\r\n\r\n updateTeam(teamID, request) {\r\n request.TeamID = teamID;\r\n return this.$http({\r\n url: this.apexApiUrl + \"teams/\" + teamID,\r\n method: \"PUT\",\r\n headers: { Accept: \"application/json\", \"Content-Type\": \"application/json\" },\r\n data: request\r\n }).then(response => {\r\n return response.data;\r\n });\r\n }\r\n\r\n deleteTeam(teamID) {\r\n return this.$http({\r\n url: this.apexApiUrl + \"teams/\" + teamID,\r\n method: \"DELETE\"\r\n });\r\n }\r\n\r\n addTeamMember(teamID, request) {\r\n return this.$http({\r\n url: this.apexApiUrl + \"teams/\" + teamID + \"/team-members\",\r\n method: \"POST\",\r\n headers: { \"Content-Type\": \"application/json\", Accept: \"application/json\" },\r\n data: request\r\n }).then(response => {\r\n // The employee ID is returned from the response.\r\n return response.data;\r\n });\r\n }\r\n\r\n assignTeamMemberRoles(teamID, employeeID, roles, leader) {\r\n return this.$http({\r\n url: this.apexApiUrl + \"teams/\" + teamID + \"/team-members/\" + employeeID,\r\n method: \"PUT\",\r\n headers: { \"Content-Type\": \"application/json\" },\r\n data: {\r\n roles: roles,\r\n leader: leader\r\n }\r\n });\r\n }\r\n\r\n removeTeamMember(teamID, employeeID) {\r\n return this.$http({\r\n url: this.apexApiUrl + \"teams/\" + teamID + \"/team-members/\" + employeeID,\r\n method: \"DELETE\"\r\n });\r\n }\r\n}\r\n","export function TimeCardService($http, $q, apexApiUrl) {\r\n 'ngInject'\r\n return {\r\n retrievePayPeriods: retrievePayPeriods,\r\n approvePayPeriod: approvePayPeriod\r\n };\r\n\r\n function retrievePayPeriods(query) {\r\n if (query.startDate) {\r\n query.startDate = kendo.format(\"{0:yyyy-MM-dd}\", query.startDate);\r\n }\r\n if (query.endDate) {\r\n query.endDate = kendo.format(\"{0:yyyy-MM-dd}\", query.endDate);\r\n }\r\n return $http({\r\n method: \"GET\",\r\n url: apexApiUrl + \"pay-periods\",\r\n params: query\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n function approvePayPeriod(payPeriodID, approved) {\r\n return $http({\r\n method: \"PUT\",\r\n url: apexApiUrl + \"pay-periods/\" + payPeriodID + \"/approved\",\r\n headers: { \"Content-Type\": \"application/json\" },\r\n data: approved\r\n });\r\n }\r\n}\r\n","/**\r\n * A service that provides data to ensure that employees have acknowledged\r\n * any changes made to their time entries by their employer.\r\n */\r\nexport class TimeEntryComplianceService {\r\n constructor($http, apexApiUrl) {\r\n 'ngInject'\r\n this.$http = $http\r\n this.apexApiUrl = apexApiUrl\r\n }\r\n\r\n /**\r\n * Get the list of time entries for the current user that have been modified\r\n * by another user and have not been acknowledged.\r\n */\r\n retrieveModifiedTimeEntries() {\r\n return this.$http({\r\n method: \"GET\",\r\n url: `${this.apexApiUrl}/time-entries/modified`\r\n }).then(response => response.data)\r\n }\r\n\r\n /**\r\n * Get the list of users who have modified time entries belonging to the current user,\r\n * along with the number of time entries that were modified.\r\n */\r\n countModifiedTimeEntriesByEmployee() {\r\n return this.$http({\r\n method: \"GET\",\r\n url: `${this.apexApiUrl}/time-entries/modified/count-by-employee`\r\n }).then(response => response.data)\r\n }\r\n\r\n /**\r\n * Acknowledge the specific modification to the current user's time entries.\r\n * @param {number} timeEntryModificationID The modification to acknowledge\r\n */\r\n acknowledgeTimeEntryModification(timeEntryModificationID) {\r\n return this.$http({\r\n method: \"PUT\",\r\n url: `${this.apexApiUrl}/time-entries/modified/${timeEntryModificationID}/acknowledge`\r\n })\r\n }\r\n\r\n /**\r\n * Get the list of the modifications made by the current user that have not been acknowledged\r\n * by the reps.\r\n */\r\n retrieveUnacknowledgedTimeEntryModifications() {\r\n return this.$http({\r\n method: \"GET\",\r\n url: `${this.apexApiUrl}/time-entries/modifications`\r\n }).then(response => response.data)\r\n }\r\n\r\n retrieveTimeEntryModificationHistory(timeEntryModificationID) {\r\n return this.$http({\r\n method: \"GET\",\r\n url: `${this.apexApiUrl}/time-entry-modifications/${timeEntryModificationID}/history`\r\n }).then(response => response.data)\r\n }\r\n}\r\n","import { PagedEntityListOfTimeEntryListRM, TimeEntryRM } from '@herbjoy/apex-api-models';\r\nimport { IHttpService, IQService } from 'angular';\r\nimport moment from 'moment';\r\n\r\nexport class TimeEntryService {\r\n constructor(private $http: IHttpService, private $q: IQService, private apexApiUrl: string) {\r\n 'ngInject'\r\n }\r\n\r\n /**\r\n * Retrieve all time entries matching the given filters.\r\n * @param {any} pageIndex\r\n * @param {any} query\r\n */\r\n retrieveTimeEntries(pageIndex, query) {\r\n if (query.StartDate) {\r\n query.StartDate = kendo.format(\"{0:yyyy-MM-dd}\", query.StartDate);\r\n }\r\n if (query.EndDate) {\r\n query.EndDate = kendo.format(\"{0:yyyy-MM-dd}\", query.EndDate);\r\n }\r\n query.PageIndex = pageIndex || 0;\r\n return this.$http({\r\n method: \"GET\",\r\n headers: { Accept: \"application/json\" },\r\n url: this.apexApiUrl + \"time-entries\",\r\n params: query\r\n })\r\n .then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n /**\r\n * Obsolete. Retrieve time entries matching the given start date, employee, and approval status.\r\n * @param {any} startDate\r\n * @param {any} filteredEmployeeID\r\n * @param {any} unapprovedOnly\r\n */\r\n retrieveTimeEntriesByWeek(startDate, filteredEmployeeID, unapprovedOnly) {\r\n return this.$http({\r\n method: \"GET\",\r\n url: this.apexApiUrl + \"time-entries/week/\" + kendo.format(\"{0:yyyy-MM-dd}\", startDate)\r\n })\r\n }\r\n\r\n /**\r\n * Get the time entry with the given ID.\r\n * @param {any} timeEntryID\r\n */\r\n retrieveTimeEntry(timeEntryID) {\r\n return this.$http.get(this.apexApiUrl + \"/time-entries/\" + timeEntryID)\r\n .then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n /**\r\n * Save the given time entry.\r\n * @param {any} timeEntry\r\n */\r\n saveTimeEntry(timeEntry) {\r\n if (timeEntry.Id) {\r\n return this.updateTimeEntry(timeEntry.Id, timeEntry);\r\n } else {\r\n return this.createTimeEntry(timeEntry);\r\n }\r\n }\r\n\r\n private createTimeEntry(timeEntry) {\r\n const offset = moment(timeEntry.Date).utcOffset() / 60;\r\n const createRequestBase = {\r\n Date: timeEntry.Date,\r\n EmployeeID: timeEntry.EmployeeID,\r\n TimeEntryTypeID: timeEntry.TimeEntryTypeID,\r\n IcdOfficeID: timeEntry.IcdOfficeID,\r\n ProgramID: timeEntry.ProgramId,\r\n StoreID: timeEntry.LocationId,\r\n Comments: timeEntry.Comments,\r\n IsRealTime: false,\r\n TimeZoneOffset: offset\r\n };\r\n const requests = [];\r\n if (timeEntry.WorkStartEndTime.Start && timeEntry.WorkStartEndTime.End) {\r\n requests.push({\r\n ...createRequestBase,\r\n // Times need to be in 24h format to parse into TimeSpans correctly.\r\n StartTime: timeEntry.WorkStartEndTime.Start.toString(\"HH:mm:ss\"),\r\n EndTime: timeEntry.WorkStartEndTime.End.toString(\"HH:mm:ss\"),\r\n IsBreak: false\r\n })\r\n }\r\n if (timeEntry.BreakStartEndTime.Start && timeEntry.BreakStartEndTime.End) {\r\n requests.push({\r\n ...createRequestBase,\r\n StartTime: timeEntry.BreakStartEndTime.Start.toString(\"HH:mm:ss\"),\r\n EndTime: timeEntry.BreakStartEndTime.End.toString(\"HH:mm:ss\"),\r\n IsBreak: true\r\n });\r\n }\r\n timeEntry.AdditionalTimeEntries.forEach(function (additional) {\r\n requests.push({\r\n ...createRequestBase,\r\n StartTime: additional.StartEndTime.Start.toString(\"HH:mm:ss\"),\r\n EndTime: additional.StartEndTime.End.toString(\"HH:mm:ss\"),\r\n IsBreak: additional.IsBreak,\r\n TimeEntryType: additional.TimeEntryTypeID,\r\n Comments: additional.Comments\r\n })\r\n })\r\n\r\n const postRequest = request => this.$http({\r\n method: \"POST\",\r\n url: this.apexApiUrl + \"time-entries\",\r\n headers: { \"Content-Type\": \"application/json\" },\r\n data: request\r\n });\r\n\r\n // Create the first time entry first and link the others as its parent.\r\n return postRequest(requests.shift())\r\n .then(response => {\r\n const id = response.data.Id;\r\n requests.forEach(function (request) {\r\n request.ParentTimeEntryID = id;\r\n });\r\n return this.$q.all(requests.map(postRequest))\r\n .then(function (v) {\r\n timeEntry.AdditionalTimeEntries = v.map(response => response.data)\r\n });\r\n });\r\n }\r\n\r\n createTimeEntryRecord(request) {\r\n return this.$http({\r\n method: \"POST\",\r\n url: this.apexApiUrl + \"v2/time-entries\",\r\n headers: { \"Content-Type\": \"application/json\" },\r\n data: request\r\n });\r\n }\r\n\r\n\r\n updateTimeEntryRecord(timentryID, request) {\r\n return this.$http({\r\n method: \"PUT\",\r\n url: this.apexApiUrl + \"v2/time-entries/\" + timentryID,\r\n headers: { \"Content-Type\": \"application/json\" },\r\n data: request\r\n });\r\n }\r\n\r\n private updateTimeEntry(timeEntryID, timeEntry) {\r\n // A time entry can have both a work component and a meal break component.\r\n // Only one of those two will correspond with the timeEntry ID, so this \"update\" might require the creation of a\r\n // new time entry if both times are filled in.\r\n const updateRequest = {\r\n ProgramID: timeEntry.ProgramId,\r\n StoreID: timeEntry.LocationId,\r\n IcdOfficeID: timeEntry.IcdOfficeID,\r\n EmployeeID: timeEntry.EmployeeID,\r\n Date: timeEntry.Date,\r\n Comments: timeEntry.Comments,\r\n TimeEntryTypeID: timeEntry.TimeEntryTypeID,\r\n IsRealTime: false // Changes from the web app are never real-time.\r\n };\r\n let createRequest = null;\r\n if (!!timeEntry.WorkStartEndTime.Start !== !!timeEntry.BreakStartEndTime.Start) {\r\n // One or the other is null (assuming the time entry is valid and at least one is filled in), so just perform an update.\r\n Object.assign(updateRequest, {\r\n StartTime: (timeEntry.WorkStartEndTime.Start || timeEntry.BreakStartEndTime.Start).toString(\"HH:mm:ss\"),\r\n EndTime: (timeEntry.WorkStartEndTime.End || timeEntry.BreakStartEndTime.End).toString(\"HH:mm:ss\"),\r\n IsBreak: !!timeEntry.BreakStartEndTime.Start, // The break is filled in.\r\n // Use the original time zone offsets for the time entry\r\n TimeZoneOffset: timeEntry.WorkStartEndTime.TimeZoneOffset\r\n || timeEntry.BreakStartEndTime.TimeZoneOffset\r\n });\r\n } else {\r\n // Issue an update request for either the meal break or work interval depending on whether IsBreak is true.\r\n const updateInterval = timeEntry.IsBreak ? timeEntry.BreakStartEndTime : timeEntry.WorkStartEndTime;\r\n const createInterval = !timeEntry.IsBreak ? timeEntry.BreakStartEndTime : timeEntry.WorkStartEndTime;\r\n createRequest = Object.assign({\r\n ParentTimeEntryID: timeEntryID,\r\n StartTime: createInterval.Start.toString(\"HH:mm:ss\"),\r\n EndTime: createInterval.End.toString(\"HH:mm:ss\"),\r\n IsBreak: !timeEntry.IsBreak,\r\n // Use the same time zone offset as the existing entry as the one that is being created.\r\n TimeZoneOffset: updateInterval.TimeEntryService\r\n }, updateRequest)\r\n Object.assign(updateRequest, {\r\n StartTime: updateInterval.Start.toString(\"HH:mm:ss\"),\r\n EndTime: updateInterval.End.toString(\"HH:mm:ss\"),\r\n IsBreak: timeEntry.IsBreak,\r\n TimeZoneOffset: updateInterval.TimeZoneOffset\r\n });\r\n }\r\n\r\n return this.$http({\r\n method: \"PUT\",\r\n url: this.apexApiUrl + \"time-entries/\" + timeEntryID,\r\n headers: { \"Content-Type\": \"application/json\" },\r\n data: updateRequest\r\n }).then(() => {\r\n // Wait until the parent update is complete before pushing any\r\n // child requests.\r\n const requests = [];\r\n if (createRequest) {\r\n requests.push(this.$http({\r\n method: \"POST\",\r\n url: this.apexApiUrl + \"time-entries\",\r\n headers: { \"Content-Type\": \"application/json\" },\r\n data: createRequest\r\n }));\r\n }\r\n timeEntry.AdditionalTimeEntries.forEach(additional => {\r\n const data = {\r\n ParentTimeEntryID: timeEntryID,\r\n StartTime: additional.StartEndTime.Start.toString(\"HH:mm:ss\"),\r\n EndTime: additional.StartEndTime.End.toString(\"HH:mm:ss\"),\r\n TimeZoneOffset: additional.StartEndTime.TimeZoneOffset,\r\n IsBreak: additional.IsBreak,\r\n TimeEntryTypeID: additional.TimeEntryTypeID,\r\n Comments: additional.Comments,\r\n //TODO: Remove these validation requirements for child entries. These will not be used:\r\n EmployeeID: timeEntry.EmployeeID,\r\n IcdOfficeID: timeEntry.IcdOfficeID,\r\n Date: timeEntry.Date\r\n };\r\n if (additional.IsNew) {\r\n requests.push(this.$http({\r\n method: \"POST\",\r\n url: this.apexApiUrl + \"time-entries\",\r\n headers: { \"Content-Type\": \"application/json\" },\r\n data: data\r\n }));\r\n } else if (additional.IsDeleted) {\r\n requests.push(this.$http({\r\n method: \"DELETE\",\r\n url: this.apexApiUrl + 'time-entries/' + additional.Id,\r\n data: {\r\n Comments: data.Comments,\r\n },\r\n headers: { \"Content-Type\": \"application/json\" }\r\n }));\r\n } else {\r\n requests.push(this.$http({\r\n method: \"PUT\",\r\n url: this.apexApiUrl + \"time-entries/\" + additional.Id,\r\n headers: { \"Content-Type\": \"application/json\" },\r\n data: data\r\n }));\r\n }\r\n });\r\n\r\n return this.$q.all(requests);\r\n\r\n });\r\n\r\n }\r\n\r\n patchTimeEntry(timeEntryID, patchRequest) {\r\n return this.$http({\r\n method: \"PATCH\",\r\n url: this.apexApiUrl + \"time-entries/\" + timeEntryID,\r\n headers: { \"Content-Type\": \"application/json\" },\r\n data: patchRequest\r\n });\r\n }\r\n\r\n deleteTimeEntry(timeEntryID, request) {\r\n return this.$http({\r\n method: \"DELETE\",\r\n url: this.apexApiUrl + \"time-entries/\" + timeEntryID,\r\n headers: { \"Content-Type\": \"application/json\" },\r\n data: request\r\n });\r\n }\r\n\r\n /**\r\n * Get the list of all time entry types that can be assigned to a time entry.\r\n */\r\n retrieveTimeEntryTypes() {\r\n return this.$http({\r\n method: \"GET\",\r\n url: this.apexApiUrl + \"time-entry-types/\",\r\n responseType: \"application/json\"\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n}\r\n","import moment from \"moment\";\r\n\r\nexport class WagePolicyService {\r\n constructor($http, $q, apexApiUrl) {\r\n 'ngInject';\r\n this.$http = $http;\r\n this.$q = $q;\r\n this.apexApiUrl = apexApiUrl;\r\n }\r\n\r\n retrieveWagePolicies() {\r\n return this.$http({\r\n method: \"GET\",\r\n url: this.apexApiUrl + \"wage-policies\",\r\n headers: {\r\n Accept: \"application/json\"\r\n }\r\n })\r\n .then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n retrieveWagePolicy(wagePolicyID) {\r\n return this.$http({\r\n method: \"GET\",\r\n url: this.apexApiUrl + \"wage-policies/\" + wagePolicyID,\r\n headers: {\r\n Accept: \"application/json\"\r\n }\r\n })\r\n .then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n saveWagePolicy(wagePolicy) {\r\n if (wagePolicy.IsNew) {\r\n return this._createWagePolicy(wagePolicy);\r\n } else {\r\n return this._updateWagePolicy(wagePolicy.WagePolicyID, wagePolicy);\r\n }\r\n }\r\n\r\n deleteWagePolicy(wagePolicyID) {\r\n throw new Error(\"Deleting a wage policy is not allowed.\");\r\n }\r\n\r\n _createWagePolicy(wagePolicy) {\r\n return this.$http({\r\n method: \"POST\",\r\n url: this.apexApiUrl + \"wage-policies\",\r\n data: JSON.stringify(wagePolicy),\r\n headers: {\r\n Accept: \"application/json\",\r\n \"Content-Type\": \"application/json\"\r\n }\r\n })\r\n .then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n _updateWagePolicy(wagePolicyID, wagePolicy) {\r\n return this.$http({\r\n method: \"PUT\",\r\n url: this.apexApiUrl + \"wage-policies/\" + wagePolicyID,\r\n data: JSON.stringify(wagePolicy),\r\n headers: {\r\n \"Content-Type\": \"application/json\"\r\n }\r\n })\r\n .then(() => this.retrieveWagePolicy(wagePolicyID));\r\n }\r\n\r\n retrieveTodayWagePolicies() {\r\n return this.retrieveWagePolicies()\r\n .then(wagePolicies => {\r\n return wagePolicies.map(wagePolicy => {\r\n const currentPolicy = wagePolicy.History.reduce((currentPolicy, archive) => {\r\n const isCurrent = (!archive.StartDate || moment().isSameOrAfter(archive.StartDate))\r\n && (!archive.EndDate || moment().isSameOrBefore(archive.EndDate));\r\n if (isCurrent) {\r\n return archive;\r\n }\r\n if (!currentPolicy || !currentPolicy.StartDate\r\n || archive.StartDate && moment(currentPolicy.StartDate).isBefore(archive.StartDate)) {\r\n // Use the iterated policy if the current one isn't the earliest policy or earlier\r\n // than the iterated policy.\r\n return archive;\r\n }\r\n return currentPolicy;\r\n }, null);\r\n if (currentPolicy) {\r\n // Use the wage that is active for today. Otherwise, use the current wage defined for the policy.\r\n wagePolicy.MinimumWage = currentPolicy.MinimumWage;\r\n }\r\n return wagePolicy;\r\n });\r\n });\r\n }\r\n}\r\n","export function WorkOrderManualClaimService($http, $q, apexApiUrl) {\r\n 'ngInject';\r\n const service = {\r\n retrieveWorkOrderMaualClaims: retrieveWorkOrderMaualClaims,\r\n retrieveWorkOrderMaualClaim: retrieveWorkOrderMaualClaim,\r\n createWorkOrderManualClaim: createWorkOrderManualClaim,\r\n updateWorkOrderManualClaim: updateWorkOrderManualClaim,\r\n patchWorkOrderManualClaim: patchWorkOrderManualClaim,\r\n deleteWorkOrderManualClaim: deleteWorkOrderManualClaim\r\n };\r\n\r\n return service;\r\n\r\n function retrieveWorkOrderMaualClaims(query) {\r\n return $http({\r\n method: \"GET\",\r\n url: apexApiUrl + \"work-order-manual-claims\",\r\n params: query,\r\n headers: {\r\n Accept: 'application/json'\r\n }\r\n }).then(function (response) {\r\n return response.data;\r\n })\r\n }\r\n\r\n function retrieveWorkOrderMaualClaim(workOrderClaimID) {\r\n return $http({\r\n method: \"GET\",\r\n url: apexApiUrl + \"work-order-manual-claims/\" + workOrderClaimID,\r\n headers: {\r\n Accept: \"application/json\"\r\n }\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n function createWorkOrderManualClaim(workOrderManualClaim) {\r\n return $http({\r\n method: \"POST\",\r\n url: apexApiUrl + \"work-order-manual-claims\",\r\n headers: {\r\n Accept: \"application/json\",\r\n \"Content-Type\": \"application/json\"\r\n },\r\n data: workOrderManualClaim\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n function updateWorkOrderManualClaim(workOrderClaimID, workOrderManualClaim) {\r\n return $http({\r\n method: \"PUT\",\r\n url: apexApiUrl + \"work-order-manual-claims/\" + workOrderClaimID,\r\n headers: {\r\n Accept: \"application/json\",\r\n \"Content-Type\": \"application/json\"\r\n },\r\n data: workOrderManualClaim\r\n })\r\n }\r\n\r\n function patchWorkOrderManualClaim(workOrderClaimID, workOrderManualClaim) {\r\n return $http({\r\n method: \"PATCH\",\r\n url: apexApiUrl + \"work-order-manual-claims/\" + workOrderClaimID,\r\n headers: {\r\n Accept: \"application/json\",\r\n \"Content-Type\": \"application/json\"\r\n },\r\n data: workOrderManualClaim\r\n })\r\n }\r\n\r\n function deleteWorkOrderManualClaim(workOrderClaimID) {\r\n return $http({\r\n method: \"DELETE\",\r\n url: apexApiUrl + \"work-order-manual-claims/\" + workOrderClaimID\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n}\r\n","export function WorkOrderService($http, apexApiUrl) {\r\n 'ngInject'\r\n return {\r\n retrieveWorkOrders: retrieveWorkOrders,\r\n retrieveWorkOrder: retrieveWorkOrder,\r\n createWorkOrder: createWorkOrder,\r\n bulkCreateWorkOrders: bulkCreateWorkOrders,\r\n patchWorkOrder: patchWorkOrder,\r\n retrieveProductOrderStatuses: retrieveProductOrderStatuses,\r\n createWorkOrderEmployeeClaim: createWorkOrderEmployeeClaim,\r\n sendWorkOrderUpdateAlert: sendWorkOrderUpdateAlert,\r\n bulkRemoveProductOrderStatus: bulkRemoveProductOrderStatus\r\n };\r\n\r\n /**\r\n * Retrieve work order that match the filters provided in the given query object.\r\n * @param {GetWorkOrdersQuery} query\r\n */\r\n function retrieveWorkOrders(query) {\r\n return $http({\r\n method: \"GET\",\r\n url: apexApiUrl + \"work-orders\",\r\n params: query,\r\n headers: { Accept: \"application/json\" }\r\n })\r\n .then(function (response) {\r\n return response.data;\r\n })\r\n }\r\n\r\n /**\r\n * Retrieve the work order with the given ID.\r\n * @param {Number} workOrderID\r\n */\r\n function retrieveWorkOrder(workOrderID) {\r\n return $http({\r\n method: \"GET\",\r\n url: apexApiUrl + \"work-orders/\" + workOrderID,\r\n headers: { Accept: \"application/json\" }\r\n })\r\n .then(function (response) {\r\n return response.data;\r\n })\r\n }\r\n\r\n /**\r\n * Create a new work order from the given request.\r\n * @param {any} workOrderCreateRequest\r\n */\r\n function createWorkOrder(workOrderCreateRequest) {\r\n return $http({\r\n method: \"POST\",\r\n url: apexApiUrl + \"work-orders\",\r\n data: workOrderCreateRequest,\r\n headers: { \"Content-Type\": \"application/json\", Accept: \"application/json\" }\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n /**\r\n * Bulk create or update all work orderss for each request in the list.\r\n * @param {any} workOrdersCreateRequests\r\n */\r\n function bulkCreateWorkOrders(workOrdersCreateRequests) {\r\n return $http({\r\n method: \"POST\",\r\n url: apexApiUrl + \"work-orders/bulk\",\r\n data: workOrdersCreateRequests,\r\n headers: { \"Content-Type\": \"application/json\" }\r\n });\r\n }\r\n\r\n /**\r\n * Patch the work order with the given ID with the provided patch data.\r\n * @param {any} leadWorkOrderID\r\n * @param {any} leadWorkOrderPatchRequest\r\n */\r\n function patchWorkOrder(workOrderID, workOrderPatchRequest) {\r\n return $http({\r\n method: \"PATCH\",\r\n url: apexApiUrl + \"work-orders/\" + workOrderID,\r\n data: workOrderPatchRequest,\r\n headers: { \"Content-Type\": \"application/json\" }\r\n });\r\n }\r\n\r\n /**\r\n * Get all the work order statuses for the given division.\r\n * @param {any} divisionID\r\n */\r\n function retrieveProductOrderStatuses(divisionID) {\r\n return $http({\r\n method: \"GET\",\r\n url: `${apexApiUrl}/divisions/${divisionID}/product-order-statuses`,\r\n headers: { \"Content-Type\": \"application/json\" }\r\n }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n /**\r\n * Submit a work order employee claim to assign the given employee to the work order.\r\n * @param {any} request\r\n */\r\n function createWorkOrderEmployeeClaim(request) {\r\n return $http({\r\n method: \"POST\",\r\n url: apexApiUrl + \"work-orders/employee-claims\",\r\n headers: { \"Content-Type\": \"application/json\" },\r\n data: request\r\n });\r\n }\r\n\r\n /**\r\n * Bulk remove/update product order status\r\n * @param {any} productOrderStausRemoveRequests\r\n */\r\n function bulkRemoveProductOrderStatus(productOrderStausRemoveRequests) {\r\n return $http({\r\n method: \"PATCH\",\r\n url: apexApiUrl + \"product-order-status/bulk\",\r\n data: productOrderStausRemoveRequests,\r\n headers: { \"Content-Type\": \"application/json\" }\r\n });\r\n }\r\n\r\n function sendWorkOrderUpdateAlert(request) {\r\n return $http({\r\n method: \"POST\",\r\n url: apexApiUrl + \"work-orders-update-alert\",\r\n headers: { \"Content-Type\": \"application/json\" },\r\n data: request\r\n });\r\n }\r\n}\r\n","export class FileService {\r\n\r\n fileToDataUrl(file) {\r\n return new Promise((resolve, reject) => {\r\n const reader = new FileReader();\r\n reader.readAsDataURL(file);\r\n reader.onload = () => resolve(reader.result);\r\n reader.onerror = error => reject(error);\r\n });\r\n }\r\n\r\n fileToPlainText(file) {\r\n return new Promise((resolve, reject) => {\r\n const reader = new FileReader();\r\n reader.onload = () => resolve(reader.result);\r\n reader.onerror = error => reject(error);\r\n reader.readAsText(file);\r\n });\r\n }\r\n\r\n dataUrlToFile(dataUrl, fileName, mimeType) {\r\n return fetch(dataUrl)\r\n .then(function (res) {\r\n return res.arrayBuffer();\r\n })\r\n .then(function (buf) {\r\n return new File([buf], fileName, { type: mimeType });\r\n })\r\n }\r\n\r\n isValidImage(file) {\r\n const validImageTypes = ['image/gif', 'image/jpeg', 'image/png'];\r\n return validImageTypes.includes(file.type);\r\n }\r\n\r\n getFileSizeInMB(file) {\r\n return file.size / 1024 / 1024;\r\n }\r\n}\r\n","import { JobTracker, LocalStorageJobStore } from \"./job-tracker.service\";\r\n\r\nconst TRACK_LEAD_BATCH_JOBS_KEY = \"apexTrackedLeadBatchJobs\";\r\nconst TRACKING_INTERVAL_MS = 5000;\r\n\r\nexport class LeadBatchJobTracker extends JobTracker {\r\n constructor($q, $interval, leadBatchService) {\r\n 'ngInject';\r\n super($interval, new LocalStorageJobStore(TRACK_LEAD_BATCH_JOBS_KEY), TRACKING_INTERVAL_MS);\r\n this.$q = $q;\r\n this.leadBatchService = leadBatchService;\r\n }\r\n\r\n /**\r\n * Get the list of all jobs being tracked by the tracker currently.\r\n */\r\n retrieveTrackedJobs() {\r\n return this.$q.all(Array.from(this.jobIDs).map(id =>\r\n this.leadBatchService.retrieveLeadBatchJob(id)\r\n .then(job => {\r\n if (!job) {\r\n // Job was expired, so remove it from the tracking list.\r\n this.stopTrackingJob(id);\r\n }\r\n return job;\r\n })\r\n )).then(function (v) {\r\n return v.filter(function (job) {\r\n // Filter expired jobs out from the results.\r\n return !!job;\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Return whether the two jobs are identical.\r\n * @param {any} a The first job in the comparison\r\n * @param {any} b The second job in the comparison\r\n */\r\n _jobsEqual(a, b) {\r\n return super._jobsEqual(a, b)\r\n && a.ProcessedCount === b.ProcessedCount\r\n && a.FailedCount === b.FailedCount\r\n && a.LocatedCount === b.LocatedCount\r\n && a.LocatedUnsureCount === b.LocatedUnsureCount\r\n && a.NoResultsCount === b.NoResultsCount\r\n && a.MultipleResultsCount === b.MultipleResultsCount\r\n && a.ErrorCount === b.ErrorCount\r\n && a.Description === b.Description;\r\n }\r\n}\r\n","import angular, { IHttpService, ILogService, IPromise, IQService } from 'angular';\r\n\r\nconst LOCALES: Locale[] = [\r\n {\r\n name: \"Canada\",\r\n localeID: \"en_CA\",\r\n languageCode: \"en\",\r\n countryCode: \"CA\",\r\n countryID: 2 // Apex country IDs.\r\n },\r\n {\r\n name: \"US\",\r\n localeID: \"en_US\",\r\n languageCode: \"en\",\r\n countryCode: \"US\",\r\n countryID: 1\r\n }\r\n];\r\n\r\nconst PRIMARY_LOCALE = LOCALES[0];\r\n\r\nexport interface Locale {\r\n name: string;\r\n localeID: string;\r\n languageCode: string;\r\n countryCode: string;\r\n countryID: number;\r\n}\r\n\r\nexport class LocaleService {\r\n constructor(private $q: IQService, private $http: IHttpService, private $log: ILogService) {\r\n 'ngInject'\r\n }\r\n\r\n retrieveLocales(): IPromise {\r\n return this.$q.resolve(LOCALES);\r\n }\r\n\r\n retrieveCurrentLocale(): IPromise {\r\n // Retrieve the first locale defined that matches one of the following:\r\n // 1. The fixed locale that should be displayed on the specific page.\r\n // 2. The user's locale preference, as selected in the locale switcher.\r\n // 3. The user's default locale, based on site data.\r\n // 4. The locale that matches the country where the user's IP is located.\r\n // 5. PRIMARY_LOCALE constant.\r\n\r\n let localeID: string | IPromise = localStorage.getItem(\"apexLocale\");\r\n if (!localeID) {\r\n // Look up country by IP address.\r\n const ipApiUrl = \"https://ip2c.org/self\";\r\n localeID = this.$http.get(ipApiUrl, { withCredentials: false, headers: { Accept: \"text/html\" } })\r\n .then(function (res) {\r\n // This particular API only returns results in string format, eg: 1;CA;CAN;CANADA\r\n return \"en_\" + res.data.split(\";\")[1];\r\n })\r\n .catch(ex => {\r\n this.$log.warn(ex, \"IP Lookup returned an error. Falling back to en_US\");\r\n return \"en_US\";\r\n });\r\n }\r\n\r\n return this.$q.resolve(localeID)\r\n .then(function (localeID) {\r\n return LOCALES.filter(function (locale) {\r\n return locale.localeID === localeID;\r\n })[0] || PRIMARY_LOCALE;\r\n });\r\n }\r\n\r\n retrieveLocaleByLocaleID(localeID: string): IPromise {\r\n return this.$q.resolve(LOCALES.find(locale => locale.localeID === localeID));\r\n }\r\n\r\n retrieveCurrentLocaleTranslations(): IPromise {\r\n return this.retrieveCurrentLocale()\r\n .then(locale => {\r\n if (!locale) return {};\r\n return this.retrieveLocaleTranslations(locale.localeID);\r\n });\r\n }\r\n\r\n retrieveLocaleTranslations(localeID: string): any {\r\n return this.retrieveLocaleByLocaleID(localeID)\r\n .then(locale => {\r\n const languageBase = this.retrieveFileContents(\"resources/locale-\" + locale.languageCode + \".json\");\r\n const countryTranslations = this.retrieveFileContents(\"resources/locale-\" + locale.localeID + \".json\")\r\n return this.$q.all([languageBase, countryTranslations]);\r\n })\r\n .then(([languageBase, countryTranslations]) => {\r\n return angular.extend({}, languageBase, countryTranslations);\r\n })\r\n .catch(function () {\r\n return {};\r\n });\r\n }\r\n\r\n\r\n setCurrentLocale(localeID: string) {\r\n return this.$q.resolve(null)\r\n .then(function () {\r\n localStorage.setItem(\"apexLocale\", localeID);\r\n });\r\n }\r\n\r\n setDefaultLocale(localeID: string) {\r\n return this.$q.resolve(null)\r\n .then(() => {\r\n // If the current locale is not set, set it to the default locale.\r\n const locale = localStorage.getItem(\"apexLocale\");\r\n if (!locale) {\r\n return this.setCurrentLocale(localeID);\r\n }\r\n });\r\n }\r\n\r\n private retrieveFileContents(url: string): any {\r\n return this.$http.get(url)\r\n .then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n}\r\n","import { IQService, IIntervalService } from \"angular\";\r\nimport { ReportJobService } from \"./data-services\";\r\nimport { JobTracker, LocalStorageJobStore } from \"./job-tracker.service\";\r\n\r\nconst TRACK_JOBS_KEY = \"apexTrackedReportJobs\";\r\nconst TRACKING_INTERVAL_MS = 5000;\r\n\r\nexport class ReportJobTracker extends JobTracker {\r\n constructor(private $q: IQService, $interval: IIntervalService, private reportJobService: ReportJobService) {\r\n 'ngInject';\r\n super($interval, new LocalStorageJobStore(TRACK_JOBS_KEY), TRACKING_INTERVAL_MS);\r\n }\r\n\r\n /**\r\n * Get the list of all jobs being tracked by the tracker currently.\r\n */\r\n retrieveTrackedJobs() {\r\n return this.$q.all(Array.from(this.jobIDs).map(id =>\r\n this.reportJobService.retrieveReportJob(id)\r\n .then(job => {\r\n if (!job) {\r\n // Job was expired, so remove it from the tracking list.\r\n this.stopTrackingJob(id);\r\n }\r\n return job;\r\n })\r\n // Filter expired jobs out from the results.\r\n )).then(jobs => jobs.filter(job => !!job))\r\n }\r\n}\r\n","import { IHttpService, ILogService, IQService, IWindowService } from \"angular\";\r\nimport { StateService } from \"angular-ui-router\";\r\nimport { ApiClientService } from \"./api-client.service\";\r\nimport { SessionService } from \"./session.service\";\r\n\r\n/**\r\n * The first implementation of the SessionService, which uses the API to get a token\r\n * and persist the token in the MVC session.\r\n */\r\nexport class SessionServiceV1 implements SessionService {\r\n isAuthenticated: boolean;\r\n constructor(private $http: IHttpService, private $log: ILogService,\r\n private $q: IQService, private $state: StateService, private $window: IWindowService,\r\n private apiClientService: ApiClientService, private apexApiUrl: string,\r\n apexIsAuthenticated: boolean, private apexProxyUserID: number) {\r\n 'ngInject'\r\n this.$http = $http;\r\n this.$log = $log;\r\n this.$q = $q\r\n this.$state = $state;\r\n this.$window = $window;\r\n this.apexApiUrl = apexApiUrl\r\n this.apiClientService = apiClientService;\r\n this.apexProxyUserID = apexProxyUserID;\r\n this.isAuthenticated = apexIsAuthenticated;\r\n }\r\n\r\n isAuthorized() {\r\n return this.$q.resolve(this.isAuthenticated);\r\n }\r\n\r\n isImpersonated() {\r\n return this.$q.resolve(!!this.apexProxyUserID)\r\n }\r\n\r\n signIn(username: string, password: string, rememberMe: boolean) {\r\n const loginForm = this.$window.loginForm;\r\n\r\n if (!loginForm) {\r\n const error = \"Attempted to perform sign in without a #loginForm element on the page\"\r\n this.$log.error(error)\r\n return this.$q.reject(error)\r\n }\r\n\r\n loginForm.Input_Email.value = username\r\n loginForm.Input_Password.value = password\r\n loginForm.Input_RememberMe.value = !!rememberMe\r\n\r\n // Submit the login form in order to generate a refresh token in the session.\r\n loginForm.submit();\r\n // The service should return the refresh token directly, but this is not possible with the current implementation.\r\n // Return an unresolved promise to force the application to wait until the page has redirected due to form POST.\r\n return this.$q((resolve, reject) => { });\r\n }\r\n\r\n signOut() {\r\n // Submit the form in this controller.\r\n localStorage.clear();\r\n sessionStorage.clear()\r\n const logoutForm = this.$window.logoutForm;\r\n this.isAuthenticated = false;\r\n if (!logoutForm) {\r\n this.$log.error(\"Attempted to log out using v1 session service, which requires #logoutForm, without one on the page\");\r\n // The form post would send the user back to the login page, but without one, send the user there manually.\r\n this.$state.go(\"account.login\");\r\n } else {\r\n // This will cause a refresh; the server will take care of actually ending the session.\r\n logoutForm.submit();\r\n }\r\n // Never resolve the asynchronous promise; the form will redirect the page.\r\n return this.$q((resolve, reject) => { });\r\n }\r\n\r\n /**\r\n * Direct the user to sign in through an external service.\r\n * @param {string} loginProvider The name of the external login provider.\r\n * @param {string} providerKey The optional key provided allowing the application to authenticate through\r\n * the third-party service.\r\n */\r\n externalSignIn(loginProvider, providerKey) {\r\n // TODO: Dispatch logic for sending the user through the process of authenticating\r\n // through the login provider.\r\n return this.$q.reject(new Error(\"Not implemented\"));\r\n }\r\n\r\n /**\r\n * Proxy log into the user with the given ID.\r\n * @param {number} userID The user whose account will be proxied into.\r\n */\r\n proxy(userID) {\r\n this.apexProxyUserID = null\r\n sessionStorage.clear();\r\n localStorage.clear();\r\n const form = this.$window.proxySignInForm as HTMLFormElement;\r\n if (!form) {\r\n this.$log.error(\"Attempted to proxy sign in without form on page\");\r\n return this.$q.reject(\"Unable to find the proxy sign in form.\")\r\n }\r\n form.action += `&userID=${userID}`;\r\n form.submit();\r\n return this.$q(() => {});\r\n }\r\n\r\n endProxy() {\r\n this.apexProxyUserID = null\r\n sessionStorage.clear();\r\n localStorage.clear();\r\n const form = this.$window.proxySignOutForm as HTMLFormElement;\r\n if (!form) {\r\n this.$log.error(\"Attempted to proxy sign out without form on page\");\r\n return this.$q.reject(\"Unable to find the proxy sign out form.\")\r\n }\r\n form.submit();\r\n return this.$q(() => {});\r\n }\r\n\r\n renewClaims() {\r\n const form = this.$window.refreshSignInForm as HTMLFormElement;\r\n if (form) {\r\n form.submit();\r\n }\r\n // Never resolve the asynchronous promise; the form will redirect the page.\r\n return this.$q((resolve, reject) => { });\r\n }\r\n}\r\n","import moment from 'moment'\r\nimport 'moment-timezone';\r\n\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nexport const TimezoneAbbreviations = {\r\n EST: 'Eastern Standard Time',\r\n EDT: 'Eastern Daylight Time',\r\n CST: 'Central Standard Time',\r\n CDT: 'Central Daylight Time',\r\n MST: 'Mountain Standard Time',\r\n MDT: 'Mountain Daylight Time',\r\n PST: 'Pacific Standard Time',\r\n PDT: 'Pacific Daylight Time',\r\n NST: 'Newfoundland Standard Time',\r\n NDT: 'Newfoundland Daylight Time',\r\n AST: 'Atlantic Standard Time',\r\n ADT: 'Atlantic Daylight Time',\r\n AKST: 'Alaska Standard Time',\r\n AKDT: 'Alaska Daylight Time',\r\n HAST: 'Hawaii-Aleutian Standard Time',\r\n HADT: 'Hawaii-Aleutian Daylight Time'\r\n};\r\n\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nexport const WhiteListCities = ['New York City', 'New York', 'Los Angeles', 'Chicago', 'Dallas', 'Houston', 'Toronto',\r\n 'Washington', 'Philadelphia', 'Miami', 'Atlanta', 'Boston', 'San Francisco', 'Phoenix',\r\n 'Inland Empire', 'Monterrey', 'Newport Beach', 'Detroit', 'Montreal', 'Seattle', 'Minneapolis',\r\n 'San Diego', 'Tampa Bay Area', 'Denver', 'St. Louis', 'Baltimore', 'Vancouver', 'Charlotte',\r\n 'Portland', 'Orlando', 'San Antonio', 'Pittsburgh', 'Sacramento', 'Cincinnati', 'Las Vegas',\r\n 'Kansas City', 'Cleveland', 'Columbus', 'Austin', 'Indianapolis', 'San Jose'];\r\n\r\nexport class TimeZoneDetectorService {\r\n\r\n guessTimezone(date, timeZoneOffset) {\r\n timeZoneOffset = timeZoneOffset * 60;\r\n const timestamp = moment(date).valueOf();\r\n const timezones = moment.tz.names()\r\n .filter(p => /(Canada|America)/.test(p))\r\n .reduce(function (zones, zoneName) {\r\n const zone = moment.tz.zone(zoneName);\r\n const offset = zone.parse(timestamp);\r\n if (-offset === timeZoneOffset) {\r\n const abbr = zone.abbr(timestamp);\r\n if (abbr) {\r\n zones.push({\r\n ZoneName: zoneName,\r\n Offset: timeZoneOffset,\r\n Abbr: TimezoneAbbreviations[abbr] || abbr\r\n });\r\n }\r\n }\r\n return zones;\r\n }, [])\r\n .filter(p => WhiteListCities.some(q => p.ZoneName.replace(\"_\", \" \").includes(q)));\r\n\r\n if (timezones.length > 0) {\r\n return timezones[0];\r\n }\r\n }\r\n\r\n}\r\n","import { ComplianceReportDescription, ComplianceReportEnum } from \"@herbjoy/apex-api-models\";\r\n\r\nexport class ComplianceReport {\r\n reportFlags: ComplianceReportEnum[];\r\n names: string[];\r\n allowManualDateRange: boolean;\r\n /**\r\n * Construct a compliance report definition from an enum of values.\r\n * @param {complianceReport} reportFlags A flag containing the composite compliance reports.\r\n */\r\n constructor(reportFlags: number[], reportDescriptions: ComplianceReportDescription[]) {\r\n const reports = reportDescriptions.filter(p => reportFlags.some(q => q === p.Value));\r\n this.reportFlags = reports.map(p => p.Id);\r\n this.names = reports.map(p => p.Name);\r\n this.allowManualDateRange = this._allowManualDateRange();\r\n }\r\n\r\n /**\r\n * Return whether the compliance report consists of any reports that can\r\n * be allow the user to specify a freeform date range.\r\n */\r\n _allowManualDateRange() {\r\n return [\r\n ComplianceReportEnum.SplitPay,\r\n ComplianceReportEnum.NoMealBreak,\r\n ComplianceReportEnum.MealBreakBelow30Min,\r\n ComplianceReportEnum.SecondMealBreak,\r\n ComplianceReportEnum.RecordedTimeSecondShiftBelow2Hour,\r\n ComplianceReportEnum.MealBreakTooEarlyOrLate,\r\n ComplianceReportEnum.SeventhDayOfRest,\r\n ComplianceReportEnum.RecordedTimeLapseBelow5Min,\r\n ComplianceReportEnum.RecordedTimeLapse5to60Min,\r\n ComplianceReportEnum.RecordedTimeLapseAbove60Min,\r\n ComplianceReportEnum.Worked7WorkDaysInRow,\r\n ComplianceReportEnum.NoWorkHoursWithMealBreak,\r\n ComplianceReportEnum.OverlappingTimeEntries,\r\n ComplianceReportEnum.IncompleteTimeEntries,\r\n ComplianceReportEnum.FirstMealBreakReport,\r\n ComplianceReportEnum.AllTimeRecordsReport,\r\n ComplianceReportEnum.RSCostcoReport,\r\n ComplianceReportEnum.AdditionalHoursReport\r\n ].some(p => this.reportFlags.some(q => q === p));\r\n }\r\n}\r\n","import { ComplianceReportDescription, ReportJobResponse, ExecutiveReportType } from '@herbjoy/apex-api-models';\r\nimport { IHttpService } from 'angular';\r\nimport { ComplianceReport } from '../../enum/compliance-report';\r\nimport { complianceReportOutputFormatList, ComplianceReportOutputFormatSelect, parseComplianceReportOutputFormat } from '../../enum/compliance-report-output-format';\r\nimport { JobStatus } from '../../enum/job-status';\r\n\r\nexport class ReportJobService {\r\n routePrefix: string;\r\n constructor(private $http: IHttpService, private apexApiUrl: string) {\r\n 'ngInject';\r\n this.routePrefix = `${apexApiUrl}/v1/report-jobs`;\r\n }\r\n\r\n /**\r\n * Get the compliance report job details with the given ID.\r\n * @param {string} id The GUID id, as a string.\r\n */\r\n retrieveReportJob(id) {\r\n const descriptions = this.retrieveComplianceReportDescriptions();\r\n\r\n return this.$http({\r\n method: \"GET\",\r\n url: `${this.routePrefix}/${id}`\r\n }).then(response => descriptions.then(descriptions => mapJobToVM(response.data, descriptions)));\r\n }\r\n\r\n /**\r\n * Get compliance report jobs matching the filter criteria\r\n * @param {any} query Filters for the query\r\n */\r\n retrieveReportJobs(query) {\r\n const descriptions = this.retrieveComplianceReportDescriptions();\r\n\r\n return this.$http({\r\n method: \"GET\",\r\n url: `${this.routePrefix}`,\r\n params: query\r\n }).then(response => descriptions.then(descriptions => response.data.map(q => mapJobToVM(q, descriptions))));\r\n }\r\n\r\n /**\r\n * Download the file contents of the compliance report generated by the\r\n * job, if any.\r\n * @param {string} id The GUID id, as a string\r\n */\r\n downloadReportJobDocument(id) {\r\n return this.$http({\r\n method: \"GET\",\r\n url: `${this.routePrefix}/${id}/document`\r\n }).then(response => response.data);\r\n }\r\n\r\n /**\r\n * Create a new compliance report job with the given details.\r\n * @param {any} job The compliance report job details\r\n */\r\n createReportJob(job) {\r\n const descriptions = this.retrieveComplianceReportDescriptions();\r\n\r\n return this.$http({\r\n method: \"POST\",\r\n url: `${this.routePrefix}`,\r\n data: job\r\n }).then(function (response) {\r\n return descriptions.then(descriptions => mapJobToVM(response.data, descriptions));\r\n });\r\n }\r\n\r\n /**\r\n * Cancel the compliance report job with the given ID.\r\n * @param {string} id The GUID id as a string\r\n */\r\n cancelReportJob(id) {\r\n return this.$http({\r\n method: \"DELETE\",\r\n url: `${this.routePrefix}/${id}`\r\n }).then(response => response.data);\r\n }\r\n\r\n /**\r\n * Get a list of report descriptions for compliance reports.\r\n */\r\n retrieveComplianceReportDescriptions() {\r\n return this.$http({\r\n method: \"GET\",\r\n url: `${this.routePrefix}/descriptions/compliance`\r\n }).then(response => response.data);\r\n }\r\n}\r\n\r\nexport interface ReportJobVM extends Omit, \"ReportType\"> {\r\n ReportType: ComplianceReport;\r\n OutputFormat: ComplianceReportOutputFormatSelect;\r\n JobStatus: JobStatus;\r\n}\r\n\r\nfunction mapJobToVM(job: ReportJobResponse, reportDescriptions: ComplianceReportDescription[]): ReportJobVM {\r\n return {\r\n ...job,\r\n ReportType: job.ReportType === ExecutiveReportType.Compliance\r\n ? new ComplianceReport(job.Reports, reportDescriptions) : null,\r\n OutputFormat: complianceReportOutputFormatList.find(p =>\r\n p.Id === parseComplianceReportOutputFormat(job.ReportOutputFormat)),\r\n JobStatus: JobStatus[job.JobStatus] // job.JobStatus is the stringified enum value.\r\n }\r\n}\r\n","import $ from \"jquery\";\r\n\r\nfunction WinxnetUtility(url, ajaxUrl) {\r\n this._url = url;\r\n this._ajaxUrl = ajaxUrl;\r\n this._modifiedItems = {};\r\n};\r\n\r\nWinxnetUtility.prototype = {\r\n getAllModifiedItems: function () {\r\n var modifiedItems = this._modifiedItems;\r\n var items = {};\r\n for (var key in modifiedItems) {\r\n if (key) {\r\n items[key] = modifiedItems[key];\r\n }\r\n }\r\n return items;\r\n },\r\n getModifiedItems: function(itemType) {\r\n var mod = this._modifiedItems[itemType];\r\n if (mod) {\r\n return mod;\r\n }\r\n return [];\r\n },\r\n shouldBeArray: function(thing) {\r\n // if we have an object that is { 1: something, 2: something ... } then we could convert it into an array\r\n if ($.type(thing) !== 'object') {\r\n return false;\r\n }\r\n\r\n for (prop in thing) {\r\n if (!$.isNumeric(prop)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n },\r\n convertToArray: function(convert) {\r\n if ($.isArray(convert)) {\r\n return convert;\r\n }\r\n var array = [];\r\n\r\n for (var idx in convert) {\r\n if (idx) {\r\n array.push(convert[idx]);\r\n }\r\n }\r\n return array;\r\n },\r\n storeModifiedItem: function (itemType, item, triggerDirty) {\r\n\r\n if (typeof triggerDirty == 'undefined') {\r\n triggerDirty = true;\r\n }\r\n\r\n var itemIdx = -1;\r\n var modifiedItems = this._modifiedItems[itemType];\r\n if (!modifiedItems) {\r\n this._modifiedItems[itemType] = modifiedItems = [];\r\n }\r\n\r\n if (!item.uid) {\r\n // Kendo models have a uid already. We can create our own here if we're not using kendo modles\r\n item.uid = this.newGuid();\r\n }\r\n\r\n $.each(modifiedItems, function (idx, element) {\r\n if (element.uid == item.uid) {\r\n itemIdx = idx;\r\n return false;\r\n }\r\n });\r\n\r\n if (itemIdx >= 0) {\r\n if (item.IsNew && item.IsDeleted) {\r\n modifiedItems.splice(itemIdx, 1);\r\n } else {\r\n modifiedItems[itemIdx] = item;\r\n }\r\n } else {\r\n modifiedItems.push(item);\r\n }\r\n\r\n if (triggerDirty) {\r\n this.makeDirty();\r\n }\r\n\r\n return item;\r\n },\r\n registerSave: function (selector, save) {\r\n 'use strict';\r\n\r\n if (!$.isFunction(save)) {\r\n throw 'api.registerSave expected save to be a function';\r\n }\r\n var saveContext = this.getSave(selector);\r\n saveContext.push({ save: save });\r\n },\r\n registerSaveModifiedItems: function(options) {\r\n 'use strict';\r\n var that = this;\r\n var saveContext = that.getSave(options.formSelector);\r\n saveContext.push({\r\n save: function(selector) {\r\n $(selector).append(that.createFormKeyItemDictionary(that.getModifiedItems(options.itemType), options.collectionName, options.keyProperty));\r\n }\r\n });\r\n },\r\n logWarn: function (message) {\r\n if (window.console && window.console.warn) {\r\n console.warn(message);\r\n }\r\n },\r\n navigateToUrl: function(controller, action, id, querystring) {\r\n var method = controller + '/' + action;\r\n if (id) {\r\n method += '/' + id;\r\n }\r\n if (querystring) {\r\n method += '?' + querystring;\r\n }\r\n window.location = method;\r\n },\r\n constructUrl: function (method, useApi) {\r\n var url;\r\n if (useApi) {\r\n url = api._baseApiUrl;\r\n } else {\r\n url = api._baseUrl;\r\n }\r\n return url + method;\r\n },\r\n makeDirty: function () {\r\n $('form:not(.ignoredirty)').addClass('dirty');\r\n },\r\n getSave: function (selector) {\r\n 'use strict';\r\n var context;\r\n\r\n if (selector) {\r\n context = $(selector).closest('.savecontext');\r\n\r\n if (context.length == 0) {\r\n context = $(selector).closest('form:not(.ignoresave)').first();\r\n context.addClass('savecontext'); // no .savecontext found, we'll create our own on for this form.\r\n }\r\n } else {\r\n context = $('.savecontext');\r\n\r\n if (context.length == 0) {\r\n // if we can't find a save context, create one on the first form on the page\r\n var form1 = $('form:not(.ignoresave)').first();\r\n if (form1.length > 0) {\r\n form1.addClass('savecontext');\r\n context = form1;\r\n }\r\n }\r\n }\r\n\r\n if (context.length == 0) {\r\n this.logWarn(\"Can't use api save context: no .savecontext found for selector: \" + selector);\r\n return [];\r\n }\r\n\r\n var save = context.data('save');\r\n if (!save) {\r\n save = [];\r\n context.data('save', save);\r\n }\r\n return save;\r\n },\r\n createFormForObject: function (o, name, indexArrays) {\r\n // returns a string of hidden inputs so we can post back a client model that form input elements do not already exist for.\r\n // Complex child objects that are arrays or array-like (according to api.shouldBeArray) will get the createFormKeyItemDictionary treatment.\r\n if (!o) {\r\n return '';\r\n }\r\n var util = this,\r\n form = '',\r\n template = '',\r\n ctemplate = kendo.template(template);\r\n for (prop in o) {\r\n var value = o[prop];\r\n var postAs;\r\n if (indexArrays) {\r\n postAs = name + '[' + prop + ']';\r\n } else {\r\n postAs = name + '.' + prop;\r\n }\r\n if (value) {\r\n value = util.removeKendoModelProperties(value);\r\n if (util.shouldBeArray(value)) {\r\n value = util.convertToArray(value);\r\n }\r\n if ($.isArray(value)) {\r\n form += util.createFormKeyItemDictionary(value, postAs);\r\n } else if (typeof (value) == 'object') {\r\n form += util.createFormForObject(value, postAs);\r\n } else {\r\n form += ctemplate({\r\n name: postAs,\r\n value: value\r\n });\r\n }\r\n }\r\n }\r\n\r\n return form;\r\n },\r\n removeKendoModelProperties: function(model) {\r\n if (model && $.isFunction(model.toJSON)) {\r\n model = model.toJSON(); // this is a kendo model: convert it to a simpler object which removes their infrastructure properties\r\n }\r\n return model;\r\n },\r\n createFormKeyItemDictionary: function (array, collectionName, keyProperty) {\r\n 'use strict';\r\n // this function will return a string of hidden inputs\r\n // using the format discussed in http://www.hanselman.com/blog/ASPNETWireFormatForModelBindingToArraysListsCollectionsDictionaries.aspx\r\n // for posting up KeyItemCollections. \r\n\r\n var util = this;\r\n var dictionary = util.createKeyItemDictionary(array, keyProperty);\r\n\r\n var form = '';\r\n var template = '';\r\n var ctemplate = kendo.template(template);\r\n\r\n function iterateObject(idx, values, parentProp) {\r\n values = util.removeKendoModelProperties(values);\r\n\r\n for (var property in values) {\r\n\r\n var value = util.removeKendoModelProperties(values[property]);\r\n\r\n if (property.substring(0, 1) != '_' && !$.isFunction(value)) {\r\n if (util.shouldBeArray(value)) {\r\n value = util.convertToArray(value);\r\n }\r\n if ($.isArray(value)) {\r\n for (var arrayIdx in value) {\r\n if (!value[arrayIdx].Key || !value[arrayIdx].Value) {\r\n // if array items are not already key value pairs, transform them \r\n value = util.createKeyItemDictionary(value, keyProperty);\r\n }\r\n break;\r\n }\r\n $.each(value, function (i, v) {\r\n iterateObject(idx, v, parentProp + '.' + property + '[' + i + ']');\r\n });\r\n } else if (typeof (value) == 'object') {\r\n if (property != 'defaults' && property != 'fields') { // kendo model fields to be ignored\r\n iterateObject(idx, value, parentProp + '.' + property);\r\n }\r\n } else {\r\n var propertyName;\r\n\r\n if (parentProp) {\r\n propertyName = 'Value' + parentProp + '.' + property;\r\n } else {\r\n propertyName = 'Value.' + property;\r\n }\r\n\r\n form += ctemplate({\r\n collectionName: collectionName,\r\n index: idx,\r\n property: propertyName,\r\n value: value\r\n });\r\n }\r\n }\r\n }\r\n }\r\n\r\n $.each(dictionary, function (idx, item) {\r\n if (item) {\r\n form += ctemplate({ collectionName: collectionName, index: idx, property: 'Key', value: item.Key });\r\n iterateObject(idx, item.Value, '');\r\n }\r\n });\r\n return form;\r\n },\r\n createKeyItemDictionary: function(array, keyProperty) {\r\n 'use strict';\r\n\r\n var r = [];\r\n\r\n if (array) {\r\n // array here might not be a real array... but we're going to treat it like one.\r\n var newKey = 0,\r\n counter = 0;\r\n if (!keyProperty) {\r\n keyProperty = 'Key';\r\n }\r\n $.each(array, function(idx, val) {\r\n var key = val[keyProperty];\r\n if (!key || key == 0) {\r\n key = --newKey;\r\n }\r\n if ($.isFunction(val.toJSON)) {\r\n val = val.toJSON();\r\n }\r\n r[counter++] = { Key: key, Value: val };\r\n });\r\n }\r\n\r\n return r;\r\n },\r\n createModifiedItemsFormElementCollection: function () {\r\n var util = this;\r\n var allModifiedItems = util.getAllModifiedItems();\r\n var formElements = '';\r\n for (var collectionName in allModifiedItems) {\r\n if (collectionName) {\r\n formElements += util.createFormKeyItemDictionary(allModifiedItems[collectionName], collectionName);\r\n }\r\n }\r\n return formElements;\r\n },\r\n calculateDateOffset: function(startDate, offSet) {\r\n var date = moment(startDate);\r\n return date.add(offSet, 'days').toDate();\r\n },\r\n calculateLastDateOfRange: function(startDate, offset) {\r\n return this.calculateDateOffset(startDate, offset - 1);\r\n },\r\n convertTimeTo24h: function(timeString) {\r\n return moment(timeString, 'h:mm A').format(\"HH:mm\");\r\n },\r\n convertTimeTo12h: function (timeString) {\r\n return moment(timeString, 'HH:mm').format(\"h:mm A\");\r\n },\r\n setAlternateSaveFunction: function(fcn) {\r\n var that = this;\r\n this.alternateSaveFunction = fcn;\r\n },\r\n getLookupProperty: function(array, id, property) {\r\n var that = this;\r\n var val = '';\r\n\r\n if (id) {\r\n var items = array.filter(function (item) {\r\n return (property in item && item.Value == id);\r\n });\r\n if (items.length > 0) {\r\n return items[0][property];\r\n }\r\n }\r\n return val;\r\n },\r\n getLookupSupplementalText: function (array, id) {\r\n var that = this;\r\n return that.getLookupProperty(array, id, 'SupplementalText');\r\n },\r\n getLookupText: function (array, id) {\r\n var that = this;\r\n return that.getLookupProperty(array, id, 'Text');\r\n },\r\n\r\n\r\n getNameForGridLookup: function(value, collection) {\r\n var returnValue = \"text not found for:\" + value;\r\n angular.forEach(collection, function(store) {\r\n if (store.Value == value) {\r\n returnValue = store.Text;\r\n return false; //break\r\n }\r\n });\r\n return returnValue;\r\n },\r\n populateGridDropdownItems: function (editEvent, inputName, gridName, columnName, dataSource, includeEmpty) {\r\n var container = editEvent.container;\r\n var existingInput = container.find(\"input[name='\" + inputName + \"']\");\r\n var grid = $('[data-grid-id=\"' + gridName + '\"').data().kendoGrid;\r\n\r\n\r\n //need to remove already selected items from the drop down. however, if in edit mode, leave the existing item ******\r\n var currentId = -1;\r\n var ctx = editEvent.container.context; // will be null for add event, valid for edit event\r\n var isNew = true;\r\n if (ctx) {\r\n isNew = false;\r\n var cls = editEvent.container.context.className;\r\n if (cls.indexOf('edit') > -1) {\r\n var dataItem = grid.dataItem(editEvent.container);\r\n currentId = dataItem.get(columnName);\r\n }\r\n }\r\n\r\n var items = grid.dataSource.data(); \r\n var availableItems = JSON.parse(JSON.stringify(dataSource));\r\n for (var i = 0; i < items.length; i++) {\r\n for (var j = 0; j < availableItems.length; j++) {\r\n var itm = availableItems[j];\r\n var remove = false;\r\n if (\r\n (itm.Value == items[i][columnName]) &&\r\n (itm.Value != currentId)\r\n ) {\r\n remove = true;\r\n } else if (isNew && itm.Inactive) {\r\n remove = true;\r\n }\r\n\r\n\r\n if (remove) {\r\n availableItems.splice(j, 1);\r\n }\r\n\r\n }\r\n }\r\n\r\n //*******************************************************************************************************************\r\n \r\n \r\n var ddl = existingInput\r\n .kendoDropDownList({\r\n //optionLabel: \"Select ...\",\r\n dataTextField: 'Text',\r\n dataValueField: 'Value',\r\n dataSource: {\r\n data: availableItems\r\n },\r\n index: 1\r\n \r\n }).data('kendoDropDownList');\r\n\r\n if (isNew && availableItems.length > 0) {\r\n\r\n ddl.select(0);\r\n ddl.trigger('change');\r\n }\r\n \r\n\r\n }\r\n\r\n\r\n}\r\n\r\nexport default WinxnetUtility;\r\n","import { AdpEarningsDefinition, AdpImportFileDefinitionCreateRequest, AdpImportFileDefinitionResponse, AdpImportFileDefinitionSelectResponse } from \"@herbjoy/apex-api-models\";\r\nimport { IHttpService, IPromise, IQService } from \"angular\";\r\n\r\nexport enum AdpExportFormat {\r\n Default,\r\n DefaultWithSsn,\r\n Canada,\r\n Pivoted\r\n}\r\n\r\nexport interface AdpExportFormatSelection {\r\n format: AdpExportFormat;\r\n name: string;\r\n apiExtension: string;\r\n defaultConfigName?: string;\r\n}\r\n\r\nconst FORMATS: AdpExportFormatSelection[] = [{\r\n format: AdpExportFormat.Default,\r\n name: \"Default\",\r\n apiExtension: \"adp-import-file.csv\",\r\n defaultConfigName: \"Default\"\r\n}, {\r\n format: AdpExportFormat.DefaultWithSsn,\r\n name: \"Default w/ SSN\",\r\n apiExtension: \"non-hj-import-file.csv\",\r\n defaultConfigName: \"Default\"\r\n}, {\r\n format: AdpExportFormat.Canada,\r\n name: \"Canada\",\r\n apiExtension: \"adp-canada-import-file.csv\",\r\n defaultConfigName: \"Canada\"\r\n}, {\r\n format: AdpExportFormat.Pivoted,\r\n name: \"Revised Payroll Upload\",\r\n apiExtension: \"pivoted-payroll-upload.csv\",\r\n defaultConfigName: \"Default\"\r\n}];\r\n\r\nexport class AdpConfigService {\r\n baseUrl: string;\r\n constructor(private $http: IHttpService, private $q: IQService, apexApiUrl: string) {\r\n 'ngInject';\r\n this.baseUrl = `${apexApiUrl}payrolls/adp-config/definitions`\r\n }\r\n\r\n retrieveAdpImportDefinitions(): IPromise {\r\n return this.$http({\r\n method: \"GET\",\r\n url: `${this.baseUrl}`\r\n }).then(response => response.data);\r\n }\r\n\r\n retrieveDefaultImportDefinition(payrollID: number): IPromise {\r\n return this.$http({\r\n method: \"GET\",\r\n url: `${this.baseUrl}/default/${payrollID}`\r\n }).then(response => response.data);\r\n }\r\n\r\n retrieveAdpImportDefinition(id: number): IPromise {\r\n return this.$http({\r\n method: \"GET\",\r\n url: `${this.baseUrl}/${id}`\r\n }).then(response => response.data);\r\n }\r\n\r\n createAdpImportDefinition(request: AdpImportFileDefinitionCreateRequest): IPromise {\r\n return this.$http({\r\n method: \"POST\",\r\n url: `${this.baseUrl}`,\r\n data: request\r\n }).then(response => response.data);\r\n }\r\n\r\n updateAdpImportDefinition(id: number, definitions: AdpEarningsDefinition[]): IPromise {\r\n return this.$http({\r\n method: \"PUT\",\r\n url: `${this.baseUrl}/${id}`,\r\n data: {\r\n definitions\r\n }\r\n }).then(response => response.data);\r\n }\r\n\r\n renameAdpImportDefinition(id: number, name: string): IPromise {\r\n return this.$http({\r\n method: \"PUT\",\r\n url: `${this.baseUrl}/${id}/name/${name}`\r\n }).then(response => response.data);\r\n }\r\n\r\n deleteAdpImportDefinition(id: number): IPromise {\r\n return this.$http({\r\n method: \"DELETE\",\r\n url: `${this.baseUrl}/${id}`\r\n }).then(response => response.data);\r\n }\r\n\r\n retrieveAdpExportFormats(): IPromise {\r\n return this.$q.resolve(FORMATS);\r\n }\r\n}\r\n","import { StateService, TransitionService } from \"angular-ui-router\";\r\n\r\n/**\r\n * Attach handlers for situations where the web app needs to be reloaded\r\n * due to the dist folder being updated on the server.\r\n */\r\nexport function attachAppUpdateTransitions($state: StateService, $transitions: TransitionService) {\r\n 'ngInject';\r\n $transitions.onError({}, transition => {\r\n const ex = transition.error().detail;\r\n if (isChunkLoadError(ex)) {\r\n // The app lazy-loading config has gone stale, so transition to a dedicated state for updating the app.\r\n $state.go(\"appOutdated\", { targetState: transition.to() });\r\n }\r\n });\r\n}\r\n\r\n/**\r\n * Identify whether the given exception indicates a chunk load error.\r\n * @param ex The exception to be analyzed.\r\n */\r\nexport function isChunkLoadError(ex: any) {\r\n return ex.name === \"ChunkLoadError\" || ex.code === \"CSS_CHUNK_LOAD_FAILED\";\r\n}\r\n","// Cache the results from getting the user's authorization permissions from the service.\r\nconst cache = {};\r\n\r\nexport function configureAuthGuard($q, $state, $transitions, employeeService,\r\n permissionGrantService, sessionService, utilityService) {\r\n 'ngInject';\r\n\r\n $transitions.onStart({ to: routeRequiresAuth }, function (transition) {\r\n utilityService.showLoading();\r\n const to = transition.$to();\r\n const returnUrl = $state.href(to);\r\n return sessionService.isAuthorized()\r\n .then(isAuthorized => {\r\n if (!isAuthorized) {\r\n return $state.target(\"account.login\", { returnUrl });\r\n }\r\n\r\n if (!ignoreRole(to)) {\r\n // Only perform control access logic upon successful authentication.\r\n return controlAccess();\r\n }\r\n }, () => $state.target(\"account.sessionExpired\", { returnUrl }))\r\n\r\n .finally(() => utilityService.hideLoading());\r\n\r\n function controlAccess() {\r\n const stateName = transition.to().name;\r\n const permissionKey = getRoutePermissionKey(transition.to().$$state());\r\n\r\n let hasAccess = null;\r\n if (permissionKey) {\r\n hasAccess = permissionGrantService.hasPermission(permissionKey);\r\n } else {\r\n hasAccess = $q.resolve(cache[stateName] || employeeService.retrievePermissions({ stateName }))\r\n .then(access => {\r\n cache[stateName] = access;\r\n return access && access.CanRead;\r\n });\r\n }\r\n\r\n return hasAccess.then(access => {\r\n if (!access) {\r\n console.log(`Access denied to state ${stateName}, permission ${permissionKey}`);\r\n return $state.target(\"persisted403\");\r\n }\r\n }).catch(ex => {\r\n //TODO: Retry. The permission check errored. The user might still be authorized.\r\n return $state.target(\"navigationFailed\", { message: \"Authorization could not be determined.\" });\r\n });\r\n }\r\n });\r\n\r\n function getRoutePermissionKey(route) {\r\n if (!route.data || !route.data.permissionKey) {\r\n if (!route.parent) {\r\n return null;\r\n }\r\n // Permissions bubble up if the route being transitioned doesn't specify a permission requirement.\r\n // Note that the permissions checks do not stack (the check closest to the original route is always used).\r\n return getRoutePermissionKey(route.parent);\r\n }\r\n return route.data.permissionKey;\r\n }\r\n}\r\n\r\n/**\r\n * Return whether the route can be reached by any user role.\r\n * @param {any} route The route being transitioned.\r\n */\r\nfunction ignoreRole(route) {\r\n return route.data && route.data.ignoreRole;\r\n}\r\n\r\n/**\r\n * Return whether the route can only be reached by authenticated users.\r\n * @param {any} route The route being transitioned.\r\n */\r\nfunction routeRequiresAuth(route) {\r\n if (route.data && route.data.skipAuthGuard) {\r\n return false;\r\n }\r\n return !route.data || !route.data.allowAnonymous;\r\n}\r\n","import \"./activity-stepper.less\"\r\nimport templateUrl from \"./activity-stepper-template.html\"\r\n\r\nexport const ActivityStepperComponent = {\r\n bindings: {\r\n activities: \"<\"\r\n },\r\n templateUrl,\r\n controllerAs: \"vm\",\r\n controller: function ApexActivityStepperController() {\r\n 'ngInject'\r\n const vm = this;\r\n vm.selected = isSelected;\r\n vm.toggleListItems = toggleListItems;\r\n vm.init = init\r\n\r\n function init() {\r\n\r\n }\r\n\r\n const selected = 0;\r\n\r\n function isSelected(idx) {\r\n return selected === idx;\r\n }\r\n\r\n function toggleListItems(index) {\r\n\r\n vm.activities[index].expanded = !vm.activities[index].expanded;\r\n\r\n for (let i = 0; i < vm.activities.length; i++) {\r\n\r\n if (vm.activities[i].expanded === true && i !== index) {\r\n vm.activities[i].expanded = false;\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","import templateUrl from \"./address-snippet.html\"\r\n\r\n/**\r\n * A snippet containing a textual representation of an address.\r\n */\r\nexport const AddressSnippetComponent = {\r\n controller: function () { },\r\n bindings: {\r\n address: \"<\",\r\n oneLine: \"<\"\r\n },\r\n templateUrl\r\n}\r\n","// This can be removed after the Address.cshtml partial is removed.\r\nexport function AddressController($filter, localeService) {\r\n 'ngInject'\r\n const self = this;\r\n\r\n self.stateProvinceLabel = $filter(\"translate\")(\"StateProvince\");\r\n self.postalCodeLabel = $filter(\"translate\")(\"PostalCode\");\r\n\r\n self.changeCountry = changeCountry;\r\n self.init = init;\r\n self.options = {\r\n change: function () {\r\n changeCountry();\r\n }\r\n }\r\n\r\n return;\r\n\r\n function init(addressID, countryID) {\r\n self.addressID = addressID;\r\n self.countryID = countryID;\r\n\r\n // Fill in localized label text based on the selected country.\r\n changeCountry();\r\n }\r\n\r\n function changeCountry() {\r\n // Retranslate the state/province and zip/postal based on the locale of the new country.\r\n localeService.retrieveLocales()\r\n .then(function (locales) {\r\n return locales.filter(function (locale) {\r\n return locale.countryID === Number(self.countryID);\r\n })[0] || localeService.retrieveCurrentLocale();\r\n })\r\n .then(function (locale) {\r\n self.countryID = locale.countryID;\r\n return localeService.retrieveLocaleTranslations(locale.localeID);\r\n })\r\n .then(function (translations) {\r\n // Change the label text to that of the selected country.\r\n self.stateProvinceLabel = translations.StateProvince;\r\n self.postalCodeLabel = translations.PostalCode;\r\n });\r\n }\r\n}\r\n","export function CheckboxListController($q, localeService) {\r\n 'ngInject'\r\n /* jshint validthis:true */\r\n const vm = this;\r\n vm.$onInit = onInit;\r\n vm.class;\r\n vm.items;\r\n vm.selected;\r\n vm.readOnly;\r\n vm.valueField;\r\n vm.collectionName;\r\n vm.checkboxes;\r\n\r\n vm.selectItem = selectItem;\r\n vm.checkboxListChange;\r\n vm.init = onInit;\r\n\r\n\r\n function onInit() {\r\n vm.listNum = CheckboxListController.listNum++;\r\n let newKey = -1;\r\n $q.all(vm.items.map(function (item, i) {\r\n const selectedItem = Object.keys(vm.selected).reduce(function (res, key) {\r\n return res || (vm.selected[key][vm.valueField] === item.Value ? vm.selected[key] : null);\r\n }, null);\r\n let description;\r\n if (item.SupplementalText[0] === \"|\") {\r\n // Translate the description using the locale service.\r\n description = localeService.retrieveCurrentLocaleTranslations()\r\n .then(function (translations) {\r\n return translations[item.SupplementalText.substring(1, item.SupplementalText.length)];\r\n });\r\n } else {\r\n description = $q.when(item.SupplementalText);\r\n }\r\n return description.then(function (description) {\r\n return {\r\n text: item.Text,\r\n name: 'apexcbl_' + vm.listNum + '_' + i,\r\n value: item.Value,\r\n description: description,\r\n id: selectedItem && (selectedItem.Id > 0 || selectedItem.IsNew) ? selectedItem.Key : newKey--,\r\n checked: selectedItem && (selectedItem.Id > 0 || selectedItem.IsNew)\r\n ? !selectedItem.IsDeleted : false,\r\n isNew: selectedItem && (selectedItem.Id > 0 || selectedItem.IsNew) ? selectedItem.IsNew : false,\r\n isDeleted: selectedItem && (selectedItem.Id > 0 || selectedItem.IsNew)\r\n ? selectedItem.IsDeleted : false,\r\n canBeNew: selectedItem && (selectedItem.Id > 0 || selectedItem.IsNew) ? selectedItem.IsNew : true,\r\n canDelete: !!selectedItem && (selectedItem.Id > 0 || selectedItem.IsNew)\r\n }\r\n });\r\n }))\r\n .then(function (checkboxes) {\r\n vm.checkboxes = checkboxes;\r\n\r\n if (vm.checkboxListChange && vm.checkboxes) {\r\n vm.checkboxListChange({ data: vm.checkboxes });\r\n }\r\n });\r\n }\r\n\r\n function selectItem(value) {\r\n if (value.canBeNew) {\r\n value.isNew = value.checked;\r\n } else if (value.canDelete) {\r\n value.isDeleted = !value.checked;\r\n\r\n }\r\n if (value.checked) {\r\n vm.selected[value.id] = {\r\n Key: value.id\r\n };\r\n vm.selected[value.id][vm.valueField] = value.Value;\r\n } else if (vm.selected[value.id]) {\r\n delete vm.selected[value.id];\r\n }\r\n if (vm.checkboxListChange && vm.checkboxes) {\r\n vm.checkboxListChange({ data: vm.checkboxes, item: value });\r\n }\r\n }\r\n}\r\n\r\nCheckboxListController.listNum = 0;\r\n","import templateUrl from \"./checkbox-list.html\"\r\nimport \"./checkbox-list.less\"\r\nimport { CheckboxListController } from \"./CheckboxList\"\r\n\r\nexport const CheckboxListComponent = {\r\n bindings: {\r\n items: \" {\r\n // Use $timeout to ensure a digest cycle is run after this broadcast.\r\n this.$timeout(() => {\r\n this.showSpinner = true;\r\n });\r\n });\r\n\r\n this.$rootScope.$on('hideLoading', () => {\r\n this.$timeout(() => {\r\n this.showSpinner = false;\r\n });\r\n });\r\n }\r\n }\r\n}\r\n","export class LoadingSpinnerController {}\r\n","/** A generic component template that transcludes its content. */\r\nexport const TranscludeComponent = {\r\n transclude: true,\r\n replace: true,\r\n template: ``\r\n}\r\n","import templateUrl from './collapsible-sidebar-shell.html'\r\n\r\n/**\r\n * A component that provides a layout shell with capabilities\r\n * for hiding the sidebar under specific conditions.\r\n */\r\nexport const CollapsibleSidebarShellComponent = {\r\n transclude: {\r\n body: \"apexBodyContent\",\r\n sidebar: \"apexSidebarContent\"\r\n },\r\n replace: true,\r\n bindings: {\r\n expanded: \"<\",\r\n showSidebar: \"<\",\r\n sidebarExpandedClass: \"@\",\r\n sidebarCollapsedClass: \"@\",\r\n bodyExpandedClass: \"@\",\r\n bodyCollapsedClass: \"@\"\r\n },\r\n templateUrl: templateUrl\r\n}\r\n","import angular from 'angular'\r\nimport { TranscludeComponent } from '../transclude.component';\r\nimport { CollapsibleSidebarShellComponent } from './collapsible-sidebar-shell.component';\r\n\r\nexport const CollapsibleSidebarModule = angular\r\n .module(\"apex.common.collapsibleSidebar\", [])\r\n .component(\"apexCollapsibleSidebarShell\", CollapsibleSidebarShellComponent)\r\n .component(\"apexSidebarContent\", TranscludeComponent)\r\n .component(\"apexBodyContent\", TranscludeComponent)\r\n .name\r\n","import { getHexColorByHue } from './color-utils'\r\n\r\nexport const AndroidHuePreviewComponent = {\r\n bindings: {\r\n hue: \"<\",\r\n name: \"<\"\r\n },\r\n template: ``,\r\n controller: class AndroidHuePreview {\r\n $onInit() {\r\n this.color = getHexColorByHue(this.hue)\r\n }\r\n $onChanges(changesObj) {\r\n if (changesObj.hue) {\r\n this.color = getHexColorByHue(this.hue)\r\n }\r\n }\r\n }\r\n}\r\n","import angular from 'angular'\r\nimport { AndroidHuePreviewComponent } from './android-hue-preview.component';\r\nimport { ColorPreviewComponent } from './color-preview.component';\r\n\r\nexport const ColorModule = angular\r\n .module(\"apex.common.color\", [])\r\n .component(\"apexAndroidHuePreview\", AndroidHuePreviewComponent)\r\n .component(\"apexColorPreview\", ColorPreviewComponent)\r\n .name\r\n","import \"./color-preview.component.less\"\r\n\r\nexport const ColorPreviewComponent = {\r\n bindings: {\r\n color: \"<\",\r\n name: \"<\"\r\n },\r\n template: `
{{ $ctrl.name }}`\r\n}\r\n","import angular from \"angular\";\r\n\r\nimport { CoreModule } from '../../core/core.module';\r\nimport { ActivityStepperComponent } from './activity-stepper/activity-stepper.component';\r\nimport { AddressSnippetComponent } from './address/address-snippet.component';\r\nimport { AddressController } from './address/AddressController';\r\nimport { CheckboxListComponent } from './checkbox-list/checkbox-list.component';\r\nimport { CheckboxListController } from './checkbox-list/CheckboxList';\r\nimport { LoadingSpinnerComponent } from './loading-spinner/loading-spinner.component';\r\nimport { LoadingSpinnerController } from './loading-spinner/loading-spinner';\r\nimport { CollapsibleSidebarModule } from \"./collapsible-sidebar/collapsible-sidebar.module\";\r\nimport { ColorModule } from \"./color/color.module\";\r\n\r\n// Generic components that have no dependencies and can be reused anywhere.\r\nexport const ComponentsModule = angular\r\n .module(\"apex.common.components\", [\r\n CoreModule, // A number of components make sure of core services.\r\n CollapsibleSidebarModule,\r\n ColorModule\r\n ])\r\n // Common components\r\n .component(\"apexActivityStepper\", ActivityStepperComponent)\r\n .component(\"apexAddressSnippet\", AddressSnippetComponent)\r\n .component(\"apexCheckboxList\", CheckboxListComponent)\r\n .component(\"apexLoadingSpinner\", LoadingSpinnerComponent)\r\n // Common component controllers (TODO: Replace with components where necessary)\r\n .controller(\"AddressController\", AddressController)\r\n .controller(\"CheckboxListController\", CheckboxListController)\r\n .controller(\"spinnerCtrl\", LoadingSpinnerController)\r\n .name\r\n","import \"./flex-table.less\"\r\n\r\nconst verticalContainerClass = \"flex-table-vertical-container\"\r\nconst horizontalContainerClass = \"flex-table-horizontal-container\"\r\n\r\nexport class FlexTableContext {\r\n /**\r\n * Create a new flex table context using the given table element as the basis.\r\n * @param {HTMLTableElement} table A table element to use as the context.\r\n */\r\n constructor(table, options) {\r\n this.table = table\r\n // Create a pipeline for compiling cloned HTML elements based on the original elements.\r\n this.compilers = []\r\n // Create a pipeline for extending functionality, such as adding a horizontal scroll carousel.\r\n this.extensions = []\r\n // Additional options, such as number of frozen headers/columns,\r\n this.options = options\r\n // Additional options that will be defined dynamically as extensions are added.\r\n this.extensionOptions = {};\r\n }\r\n\r\n attach() {\r\n // Initialize the flex table based on the context.\r\n if (!this.verticalContainer || !this.verticalContainer) {\r\n this.verticalContainer = createVerticalContainer()\r\n this.horizontalContainer = createHorizontalContainer()\r\n /** @type {HTMLElement} */\r\n this.scrollContainer = this.options.scrollContainer || window\r\n // Wrap the table in two parent divs in order move it in 2D space.\r\n this.table.parentElement.insertBefore(this.verticalContainer, this.table) // Vertical container before table\r\n this.verticalContainer.appendChild(this.horizontalContainer) // Horizontal container within vertical container\r\n this.horizontalContainer.appendChild(this.table) // Table now within both containers.\r\n }\r\n\r\n for (const extension of this.extensions) {\r\n // Apply each extension to the context.\r\n\r\n try {\r\n extension.attach(this)\r\n } catch (ex) {\r\n console.error(`Unable to attach extension ${extension.__proto__.constructor.name}`)\r\n console.error(ex)\r\n }\r\n }\r\n }\r\n\r\n detach() {\r\n // Clean up resources used to initialize the flex table.\r\n this.extensions.reduceRight((_, extension) => {\r\n try {\r\n extension.detach(this)\r\n } catch (ex) {\r\n console.error(`Unable to detach extension ${extension.__proto__.constructor.name}`)\r\n console.error(ex)\r\n }\r\n return null\r\n }, null)\r\n }\r\n\r\n getCellHandlers(extension, eventName, cell) {\r\n const options = this.extensionOptions[extension] || (this.extensionOptions[extension] = {});\r\n const handlers = options.handlers || (options.handlers = {});\r\n const specificHandlers = handlers[eventName] || (handlers[eventName] = []);\r\n const cellHandlers = specificHandlers.find(p => p.cell === cell);\r\n return cellHandlers ? cellHandlers.handlers : [];\r\n }\r\n\r\n /**\r\n * Return the cell mapper for the given cell and extension, if any.\r\n * @param {string} extension The extension name used for mappign\r\n * @param {HTMLElement} cell The table cell element being searched for.\r\n * @returns An object exposing the getter and setter for the cell.\r\n */\r\n getCellMapper(extension, cell) {\r\n const options = this.extensionOptions[extension] || (this.extensionOptions[extension] = {});\r\n const mappers = options.mappers || (options.mappers = []);\r\n // Add mapper and remove any existing mapper for the same cell.\r\n const cellMapper = mappers.find(p => p.cell === cell);\r\n return cellMapper ? cellMapper.mapper : null;\r\n }\r\n\r\n /**\r\n * Register the given cell with a handler for specific events.\r\n * @param {string} extension The name of the extension using the mapping.\r\n * @param {string} eventName The name of the event being handled.\r\n * @param {HTMLElement} cell The cell element that will be passed to the mappers.\r\n * @param {{ getValue: () => any, setValue: (value: any) => void }} mapper A mapper object\r\n */\r\n addCellHandler(extension, eventName, cell, handler) {\r\n const options = this.extensionOptions[extension] || (this.extensionOptions[extension] = {});\r\n const handlers = options.handlers || (options.handlers = {});\r\n const specificHandlers = handlers[eventName] || (handlers[eventName] = []);\r\n let cellHandlers = specificHandlers.find(p => p.cell === cell);\r\n if (!cellHandlers) {\r\n cellHandlers = { cell, handlers: [] };\r\n specificHandlers.push(cellHandlers);\r\n }\r\n cellHandlers.handlers.push(handler);\r\n }\r\n\r\n /**\r\n * Unregister the given cell with a handler for specific events.\r\n * @param {string} extension The name of the extension using the mapping.\r\n * @param {string} eventName The name of the event being handled.\r\n * @param {HTMLElement} cell The cell element that will be passed to the mappers.\r\n * @param {{ getValue: () => any, setValue: (value: any) => void }} mapper A mapper object\r\n */\r\n removeCellHandler(extension, eventName, cell, handler) {\r\n const options = this.extensionOptions[extension];\r\n const handlers = options ? options.handlers : null;\r\n const specificHandlers = handlers ? handlers[eventName] : null;\r\n const cellHandlers = specificHandlers ? specificHandlers.find(p => p.cell === cell) : null;\r\n if (cellHandlers) {\r\n cellHandlers.handlers = cellHandlers.handlers.filter(p => p !== handler);\r\n }\r\n }\r\n\r\n /**\r\n * Register the given cell as having a mapped value for a particular extension.\r\n * @param {string} extension The name of the extension using the mapping.\r\n * @param {HTMLElement} cell The cell element that will be passed to the mappers.\r\n * @param {{ getValue: () => any, setValue: (value: any) => void }} mapper A mapper object\r\n */\r\n registerCellMapper(extension, cell, mapper) {\r\n const options = this.extensionOptions[extension] || (this.extensionOptions[extension] = {});\r\n const mappers = options.mappers || (options.mappers = []);\r\n // Add mapper and remove any existing mapper for the same cell.\r\n options.mappers = mappers.filter(p => p.cell !== cell)\r\n .concat({ cell, mapper });\r\n }\r\n}\r\n\r\nexport class FlexTableExtension {\r\n constructor() {\r\n }\r\n\r\n attach(flexTableContext) {\r\n this.table = flexTableContext.table\r\n this.options = flexTableContext.options\r\n this.compilers = flexTableContext.compilers\r\n this.scrollContainer = flexTableContext.scrollContainer\r\n this.verticalContainer = flexTableContext.verticalContainer\r\n this.horizontalContainer = flexTableContext.horizontalContainer\r\n\r\n this.isAttached = true\r\n }\r\n\r\n detach(flexTableContext) {\r\n this.isAttached = false\r\n\r\n this.table = null\r\n this.options = null\r\n this.compilers = null\r\n this.scrollContainer = null\r\n this.verticalContainer = null\r\n this.horizontalContainer = null\r\n }\r\n}\r\n\r\n/**\r\n * Create and return a new vertical container element.\r\n * @returns {HTMLDivElement}\r\n */\r\nfunction createVerticalContainer() {\r\n const verticalContainer = document.createElement(\"div\");\r\n verticalContainer.classList.add(verticalContainerClass);\r\n return verticalContainer;\r\n}\r\n\r\n/**\r\n * Create and return a new horizontal container element.\r\n * @returns {HTMLDivElement}\r\n */\r\nfunction createHorizontalContainer() {\r\n const horizontalContainer = document.createElement(\"div\")\r\n horizontalContainer.classList.add(horizontalContainerClass)\r\n return horizontalContainer\r\n}\r\n","\r\n/**\r\n * Create a clone with the exact same dimensions as the original cell.\r\n * @param {HTMLTableCellElement} cell A table cell that should be copied\r\n * @returns {HTMLTableCellElement} A clone of the original table cell.\r\n */\r\nexport function cloneCell(cell) {\r\n const cellClone = cell.cloneNode();\r\n // The dimensions of the new table might no longer be the same, so re-apply box model settings from the original cell.\r\n // Need the div block in order to simulate exact size. Setting the width directly on the tds does nothing.\r\n const cellContents = document.createElement(\"div\");\r\n const cellStyle = window.getComputedStyle(cell);\r\n const width = Number.parseInt(cellStyle.width);\r\n const height = Number.parseInt(cellStyle.height);\r\n const paddingLeft = Number.parseInt(cellStyle.paddingLeft);\r\n const paddingRight = Number.parseInt(cellStyle.paddingRight);\r\n const paddingTop = Number.parseInt(cellStyle.paddingTop);\r\n const paddingBottom = Number.parseInt(cellStyle.paddingBottom);\r\n\r\n cellContents.style.width = width - paddingLeft - paddingRight + \"px\";\r\n cellClone.style.paddingLeft = cellStyle.paddingLeft;\r\n cellClone.style.paddingRight = cellStyle.paddingRight;\r\n cellClone.style.paddingTop = cellStyle.paddingTop;\r\n cellClone.style.paddingBottom = cellStyle.paddingBottom;\r\n cellClone.style.minWidth = cellStyle.width;\r\n cellClone.style.maxWidth = cellStyle.width;\r\n cellClone.style.height = height - paddingTop - paddingBottom + \"px\";\r\n // Place children of the th under a new parent.\r\n cellContents.innerHTML = cell.innerHTML;\r\n cellClone.appendChild(cellContents);\r\n return cellClone;\r\n}\r\n\r\n/**\r\n * Return the maximum cell width of the HTML element containing tr children.\r\n * @param {HTMLElement} elementTr An HTML element that contains tr children.\r\n * @returns {number} The cell width of the element.\r\n */\r\nexport function computeMaxWidth(elementTr) {\r\n return Array.from(elementTr.querySelectorAll(\"tr\"))\r\n .reduce((maxWidth, tr) => {\r\n return Math.max(maxWidth, tr.querySelectorAll(\"td, th\").length)\r\n }, 0)\r\n}\r\n\r\n/**\r\n * Return a jquery-style computed offset object for the given element.\r\n * @param {HTMLElement} el\r\n * @returns {{ top: number, left: number }} The offset position of the element.\r\n */\r\nexport function offset(el) {\r\n // Take implementation from jQuery source code: https://github.com/jquery/jquery/blob/master/src/offset.js\r\n if (!el.getClientRects().length) {\r\n return { top: 0, left: 0 }\r\n }\r\n\r\n const rect = el.getBoundingClientRect()\r\n const win = el.ownerDocument.defaultView\r\n return {\r\n top: rect.top + win.pageYOffset,\r\n left: rect.left + win.pageXOffset\r\n }\r\n}\r\n","import { FlexTableExtension } from \"../flex-table\";\r\n/** @typedef {import(\"../flex-table\").FlexTableContext} FlexTableContext */\r\n\r\nexport class CarouselScrollingExtension extends FlexTableExtension {\r\n constructor({ momentum } = {}) {\r\n super()\r\n this.momentum = momentum || 0.75\r\n }\r\n\r\n /**\r\n * Attach the fixed header extension to the context.\r\n * @param {FlexTableContext} flexTableContext The flex table context object\r\n */\r\n attach(flexTableContext) {\r\n if (this.isAttached) return\r\n super.attach(flexTableContext)\r\n this.carousel = initCarouselScrolling(this.horizontalContainer, this.momentum)\r\n this.verticalContainer.parentElement.insertBefore(this.carousel, this.verticalContainer)\r\n }\r\n\r\n /**\r\n * Detach the fixed header extension from the context.\r\n * @param {FlexTableContext} flexTableContext The flex table context object\r\n */\r\n detach(flexTableContext) {\r\n if (!this.isAttached) return\r\n this.carousel.remove()\r\n super.detach(flexTableContext)\r\n }\r\n}\r\n\r\n/**\r\n * Add buttons to the container that cause the container to scroll left and right.\r\n * @param {HTMLDivElement} scrollingContainer The DOM element that should implement scrolling behaviour.\r\n * @param {number} momentum The percentage of the scrolling container to cover after each scroll.\r\n * @returns {any} Toolbar of buttons that can be used to scroll the scrolling container.\r\n */\r\nfunction initCarouselScrolling(scrollingContainer, momentum) {\r\n // TODO: Restructure to get scroll button HTML from a component or template somehow.\r\n const leftScroll = document.createElement(\"button\");\r\n leftScroll.classList.add(\"apex-flex-table-carousel-left\");\r\n leftScroll.innerHTML = \"\";\r\n leftScroll.addEventListener(\"click\", function () {\r\n // Scroll the entire width of the container, with some overlap.\r\n scrollingContainer.scrollLeft -= scrollingContainer.clientWidth * momentum;\r\n });\r\n\r\n const rightScroll = document.createElement(\"button\");\r\n rightScroll.classList.add(\"apex-flex-table-carousel-right\");\r\n rightScroll.innerHTML = \"\";\r\n rightScroll.addEventListener(\"click\", function () {\r\n scrollingContainer.scrollLeft += scrollingContainer.clientWidth * momentum;\r\n });\r\n\r\n const stickyToolbar = document.createElement(\"div\");\r\n stickyToolbar.classList.add(\"apex-flex-table-carousel-toolbar\");\r\n stickyToolbar.appendChild(leftScroll);\r\n stickyToolbar.appendChild(rightScroll);\r\n\r\n scrollingContainer.addEventListener(\"scroll\", updateDisabled);\r\n\r\n function updateDisabled() {\r\n // Update button enabled status based on whether it is possible to scroll.\r\n leftScroll.disabled = scrollingContainer.scrollLeft === 0;\r\n rightScroll.disabled = scrollingContainer.scrollLeft ===\r\n scrollingContainer.scrollWidth - scrollingContainer.clientWidth;\r\n\r\n // No point showing either buttons on the toolbar if all the buttons are disabled.\r\n stickyToolbar.style.display = leftScroll.disabled && rightScroll.disabled ? \"none\" : undefined;\r\n }\r\n\r\n updateDisabled();\r\n\r\n return stickyToolbar;\r\n}\r\n","import { TableDomTraverser, VirtualWorksheet } from \"@herbjoy/sheet-hotkeys\";\r\nimport { FlexTableExtension } from \"../flex-table\";\r\n\r\nconst validFocusable = \"input:not([type=checkbox]):not([disabled=disabled]):not([type=hidden]),\" +\r\n \"[tabindex]:not([disabled=disabled])\";\r\n\r\n/**\r\n * An extension to the flex table that allows input cell key inputs\r\n * to navigate around the table as if it were an Excel worksheet.\r\n */\r\nexport class ExcelHotkeysExtension extends FlexTableExtension {\r\n /**\r\n * Construct a new instance of the extension with given options.\r\n * @param {any} options Options for constructing the extension.\r\n */\r\n constructor(options) {\r\n super();\r\n this.extensionOptions = options;\r\n }\r\n\r\n attach(flexTableContext) {\r\n super.attach(flexTableContext);\r\n this.worksheet = new VirtualWorksheet(flexTableContext.table, new TableDomTraverser(\r\n // Only allow DOM traversal between nodes containing a focusable element.\r\n el => !!el.querySelector(validFocusable)\r\n ), {\r\n inputSelector: validFocusable,\r\n inputValidator: () => true,\r\n ...this.extensionOptions\r\n });\r\n this.worksheet.attachToTable();\r\n }\r\n\r\n detach(flexTableContext) {\r\n if (this.worksheet) {\r\n this.worksheet.detachFromTable();\r\n }\r\n super.detach(flexTableContext);\r\n }\r\n}\r\n","import { FlexTableExtension } from \"../flex-table\";\r\nimport { cloneCell, computeMaxWidth, offset } from '../util'\r\n\r\nimport throttle from 'lodash/throttle'\r\n\r\nconst sixtyFpsInMs = 1000 / 60\r\n\r\n/** @typedef {import(\"../flex-table\").FlexTableContext} FlexTableContext */\r\n\r\nexport class FixedHeaderExtension extends FlexTableExtension {\r\n constructor() {\r\n super()\r\n this.isHeaderAffixed = false\r\n }\r\n\r\n /**\r\n * Attach the fixed header extension to the context.\r\n * @param {FlexTableContext} flexTableContext The flex table context object\r\n */\r\n attach(flexTableContext) {\r\n if (this.isAttached) return\r\n super.attach(flexTableContext)\r\n\r\n this.scrollingHeaderTable = this.createScrollingHeaderTable()\r\n this.scrollingHeaderTable.classList.add(\"flex-scrolling-header-table\")\r\n this.scrollingHeaderTable.tHead.style.background = \"white\" // TODO: Extract style to directive level.\r\n\r\n flexTableContext.verticalContainer.appendChild(this.scrollingHeaderTable)\r\n\r\n // Expose the table on the context.\r\n flexTableContext.scrollingHeaderTable = this.scrollingHeaderTable\r\n\r\n this.scrollContainerScroll = throttle(() => {\r\n if (this.shouldAffixHeader()) {\r\n if (!this.isHeaderAffixed) {\r\n this.affixHeader()\r\n }\r\n } else if (this.isHeaderAffixed) {\r\n this.detachHeader()\r\n }\r\n\r\n // Synchronize the scroll position of the fixed header and scrolling container.\r\n this.scrollingHeaderTable.scrollLeft = this.horizontalContainer.scrollLeft\r\n }, sixtyFpsInMs)\r\n\r\n this.horizontalContainerScroll = throttle(() => {\r\n // Synchronize the scroll position of the fixed header and scrolling container.\r\n this.scrollingHeaderTable.scrollLeft = this.horizontalContainer.scrollLeft\r\n }, sixtyFpsInMs)\r\n\r\n // Just check the table width against its older value 60 times a second\r\n // There may be some other more performant way using mutation observers.\r\n let originalSize = flexTableContext.verticalContainer.scrollWidth\r\n this.keepDimensionsSynced = window.setInterval(() => {\r\n const newSize = flexTableContext.verticalContainer.scrollWidth\r\n\r\n if (originalSize !== newSize) {\r\n originalSize = newSize\r\n\r\n // Detach header and re-affix\r\n if (this.shouldAffixHeader()) {\r\n this.detachHeader()\r\n this.affixHeader()\r\n }\r\n //console.log(flexTableContext.table);\r\n } else {\r\n //console.log(\"no change\")\r\n }\r\n }, sixtyFpsInMs)\r\n\r\n flexTableContext.scrollContainer.addEventListener(\"scroll\", this.scrollContainerScroll)\r\n flexTableContext.horizontalContainer.addEventListener(\"scroll\", this.horizontalContainerScroll)\r\n\r\n // Fire initial events\r\n this.scrollContainerScroll()\r\n this.horizontalContainerScroll()\r\n }\r\n\r\n /**\r\n * Detach the fixed header extension from the context.\r\n * @param {FlexTableContext} flexTableContext The flex table context object\r\n */\r\n detach(flexTableContext) {\r\n if (!this.isAttached) return\r\n\r\n this.detachHeader();\r\n flexTableContext.scrollContainer.removeEventListener(\"scroll\", this.scrollContainerScroll)\r\n flexTableContext.horizontalContainer.removeEventListener(\"scroll\", this.horizontalContainerScroll)\r\n window.clearInterval(this.keepDimensionsSynced)\r\n this.scrollingHeaderTable.remove()\r\n flexTableContext.scrollingHeaderTable = null\r\n super.detach()\r\n }\r\n\r\n shouldAffixHeader() {\r\n const scrollTop = containerScrollTop(this.scrollContainer)\r\n const tableOffset = offset(this.verticalContainer)\r\n const tableTop = tableOffset.top\r\n const tableBottom = tableTop + this.table.scrollHeight\r\n const minHeight = this.options.verticalScrollHeight || 0\r\n\r\n return scrollTop > tableTop && scrollTop < tableBottom\r\n && this.table.scrollHeight > minHeight\r\n }\r\n\r\n affixHeader() {\r\n if (this.isHeaderAffixed) return\r\n this.scrollingHeaderTable.classList.add(\"affixed\")\r\n this.scrollingHeaderTable.style.marginTop = this.options.fixedHeaderTop + \"px\"\r\n\r\n const marginLeft = offset(this.verticalContainer).left\r\n this.scrollingHeaderTable.style.marginLeft = marginLeft + this.horizontalContainer.offsetLeft + \"px\"\r\n\r\n this.scrollingHeaderTable.style.width = this.horizontalContainer.offsetWidth + \"px\"\r\n\r\n // The frozen header column cells aren't part of the fixed header, so position them manually.\r\n //TODO: This strategy doesn't work when there are multiple rows. Clone the frozen columns into\r\n // a separate table and implement that way for a more stable solution.\r\n this.table.querySelectorAll(\"th.freeze-column-cell\")\r\n .forEach(cell => {\r\n cell.style.position = \"fixed\"\r\n cell.style.top = \"0\"\r\n cell.style.marginLeft = marginLeft + \"px\"\r\n // Ensure a white background.\r\n cell.style.backgroundColor = \"#FFFFFF\";\r\n\r\n cell.classList.add(\"fixed-cell\")\r\n })\r\n\r\n this.isHeaderAffixed = true\r\n }\r\n\r\n detachHeader() {\r\n if (!this.isHeaderAffixed) return\r\n this.scrollingHeaderTable.classList.remove(\"affixed\")\r\n\r\n this.table.querySelectorAll(\"th.freeze-column-cell\")\r\n .forEach(cell => {\r\n cell.style.position = \"absolute\"\r\n cell.style.top = undefined\r\n cell.style.marginLeft = \"0\"\r\n\r\n cell.style.height = cell.parentElement.offsetHeight\r\n\r\n cell.classList.remove(\"fixed-cell\")\r\n })\r\n\r\n this.isHeaderAffixed = false\r\n }\r\n\r\n /**\r\n * Create and return a cloned copy of the part of the table's head\r\n * that will scroll along with the content.\r\n * @returns {HTMLTableElement} The cloned copy of the table.\r\n */\r\n createScrollingHeaderTable() {\r\n // Clone the table\r\n const tableClone = this.table.cloneNode()\r\n const tHeadClone = this.cloneTheadContents();\r\n tableClone.appendChild(tHeadClone)\r\n\r\n // Apply compilers to the cloned header table.\r\n return this.compilers.reduce((table, compiler) => {\r\n return compiler(table)\r\n }, tableClone)\r\n }\r\n\r\n /**\r\n * Clone the thead contents of the table's tHead.\r\n */\r\n cloneTheadContents() {\r\n const maxWidth = computeMaxWidth(this.table.tHead)\r\n\r\n const start = Math.max(0, Number(this.options.freezeLeft) || 0)\r\n const end = Math.max(0, maxWidth - (Number(this.options.freezeRight) || 0) - 1)\r\n\r\n const tHeadClone = this.table.tHead.cloneNode();\r\n for (const tr of this.table.tHead.querySelectorAll(\"tr\")) {\r\n const trClone = tr.cloneNode();\r\n // Only clone the cells that fall within the given range.\r\n const cells = Array.from(tr.querySelectorAll(\"th,td\"))\r\n .filter((_, i) => i >= start && i <= end);\r\n for (let i = 0; i < cells.length; i++) {\r\n trClone.appendChild(cloneCell(cells[i]));\r\n }\r\n tHeadClone.appendChild(trClone);\r\n }\r\n return tHeadClone;\r\n }\r\n}\r\n\r\nfunction containerScrollTop(el) {\r\n return el.scrollTop === undefined ? el.scrollY : el.scrollTop\r\n}\r\n","import { FlexTableExtension } from \"../flex-table\";\r\n/** @typedef {import(\"../flex-table\").FlexTableContext} FlexTableContext */\r\n\r\nexport class FrozenColumnsExtension extends FlexTableExtension {\r\n /**\r\n * Detach the fixed header extension from the context.\r\n * @param {FlexTableContext} flexTableContext The flex table context object\r\n */\r\n attach(flexTableContext) {\r\n if (this.isAttached) return\r\n super.attach(flexTableContext)\r\n\r\n // Left frozen columns require the horizontal container to be pushed right to compensate.\r\n const leftOffset = setFrozenColumnWidths(flexTableContext.table,\r\n flexTableContext.options.freezeLeft)\r\n setFrozenColumnHeights(flexTableContext.table,\r\n flexTableContext.options.freezeLeft)\r\n\r\n flexTableContext.horizontalContainer.style.marginLeft = leftOffset + \"px\";\r\n flexTableContext.horizontalContainer.style.width = \"calc(100% - \" + leftOffset + \"px)\";\r\n flexTableContext.horizontalContainer.style.overflowX = \"auto\";\r\n }\r\n\r\n /**\r\n * Detach the fixed header extension from the context.\r\n * @param {FlexTableContext} flexTableContext The flex table context object\r\n */\r\n detach(flexTableContext) {\r\n if (!this.isAttached) return\r\n\r\n unsetFrozenColumnHeights(flexTableContext.table,\r\n flexTableContext.options.freezeLeft)\r\n unsetFrozenColumnWidths(flexTableContext.table,\r\n flexTableContext.options.freezeLeft)\r\n super.detach(flexTableContext)\r\n }\r\n}\r\n\r\nfunction setFrozenColumnWidths(el, leftFrozenColumns) {\r\n let leftOffset = 0;\r\n\r\n for (let i = 1; i <= leftFrozenColumns; i++) {\r\n const colOffsetWidth = Array.from(el.querySelectorAll(\"td:nth-child(\" + i + \"), th:nth-child(\" + i + \")\"))\r\n .reduce(function (width, td) {\r\n return Math.max(width, td.offsetWidth);\r\n }, 0);\r\n const cells = el.querySelectorAll(\"td:nth-child(\" + i + \"), th:nth-child(\" + i + \")\");\r\n for (let j = 0; j < cells.length; j++) {\r\n const td = cells[j];\r\n td.style.width = colOffsetWidth + \"px\";\r\n td.style.left = leftOffset + \"px\";\r\n td.classList.add(\"freeze-column-cell\")\r\n }\r\n leftOffset += colOffsetWidth;\r\n }\r\n return leftOffset;\r\n}\r\n\r\nfunction setFrozenColumnHeights(el, leftFrozenColumns) {\r\n // Could have multiple header rows, potentially.\r\n const rows = el.querySelectorAll(\"tr\");\r\n const rowsLen = rows.length;\r\n for (let j = 0; j < rowsLen; j++) {\r\n const row = rows[j];\r\n // This part ends up running a lot and has a large performance cost.\r\n const rowStyle = window.getComputedStyle(row);\r\n const rowOffsetHeight = rowStyle.height;\r\n for (let i = 0; i < row.children.length; i++) {\r\n const cell = row.children[i];\r\n cell.style.height = rowOffsetHeight;\r\n // Process only frozen columns past this point.\r\n if (i >= leftFrozenColumns) continue;\r\n\r\n const cellStyle = window.getComputedStyle(cell)\r\n const verticalAlign = cellStyle.verticalAlign;\r\n\r\n cell.style.backgroundColor = rowStyle.backgroundColor;\r\n\r\n if (verticalAlign === \"bottom\") {\r\n cell.style.display = \"flex\";\r\n cell.style.flexDirection = \"column\";\r\n cell.style.justifyContent = \"flex-end\";\r\n } else if (verticalAlign === \"middle\") {\r\n cell.style.display = \"flex\";\r\n cell.style.flexDirection = \"column\";\r\n cell.style.justifyContent = \"center\";\r\n }\r\n // Done making calculations; set the frozen columns to their positions.\r\n cell.style.position = \"absolute\";\r\n }\r\n }\r\n}\r\n\r\nfunction unsetFrozenColumnWidths(el, leftFrozenColumns) {\r\n for (let i = 1; i <= leftFrozenColumns; i++) {\r\n const cells = el.querySelectorAll(\"td:nth-child(\" + i + \"), th:nth-child(\" + i + \")\");\r\n for (let j = 0; j < cells.length; j++) {\r\n const td = cells[j];\r\n td.style.width = \"\";\r\n td.style.borderTop = \"\";\r\n td.style.left = \"\";\r\n td.classList.remove(\"freeze-column-cell\")\r\n }\r\n }\r\n}\r\n\r\nfunction unsetFrozenColumnHeights(el, leftFrozenColumns) {\r\n // Could have multiple header rows, potentially.\r\n const rows = el.querySelectorAll(\"tr\");\r\n const rowsLen = rows.length;\r\n for (let j = 0; j < rowsLen; j++) {\r\n const row = rows[j];\r\n for (let i = 0; i < row.children.length; i++) {\r\n const cell = row.children[i];\r\n cell.style.height = \"\";\r\n // Process only frozen columns past this point.\r\n if (i >= leftFrozenColumns) continue;\r\n\r\n cell.style.padding = \"\";\r\n cell.style.marginTop = \"\";\r\n cell.style.position = \"\";\r\n cell.style.display = \"\"\r\n cell.style.flexDirection = \"\";\r\n cell.style.justifyContent = \"\";\r\n }\r\n }\r\n}\r\n","import angular from 'angular'\r\nimport debounce from 'lodash/debounce';\r\n\r\nimport { FlexTableContext } from '../../../flex-table'\r\nimport {\r\n CarouselScrollingExtension,\r\n FixedHeaderExtension,\r\n FrozenColumnsExtension,\r\n ExcelHotkeysExtension\r\n} from '../../../flex-table/extensions'\r\n\r\nimport \"./flex-table.directive.less\"\r\n\r\n/**\r\n * TODO:\r\n * 1. Refactor for performance, in particular looking into limiting the data shown on screen (virtual scrolling) and using mutation events\r\n * 2. Look into graphical glitches resulting from having multiple fixed header rows and a frozen column.\r\n * @param {any} $compile Angular compile service\r\n * @param {any} $timeout Angular timeout service\r\n * @returns {any} The FlexTable directive\r\n */\r\nexport function FlexTableDirective($compile, $timeout) {\r\n 'ngInject'\r\n const directive = {\r\n restrict: \"A\",\r\n link: link,\r\n controller: class { },\r\n controllerAs: \"$flex\"\r\n }\r\n return directive;\r\n\r\n function link(scope, element, attrs) {\r\n const el = element[0];\r\n\r\n\r\n // The directive supports the following options, passed in as strings through attributes:\r\n // freezeLeft (number) - number of columns on the left to be frozen\r\n const options = {}\r\n if (attrs.freezeLeft) {\r\n options.freezeLeft = Number.parseInt(attrs.freezeLeft)\r\n }\r\n // fixedHeaderTop - padding in px on top of the fixed header\r\n if (attrs.fixedHeaderTop) {\r\n options.fixedHeaderTop = Number.parseInt(attrs.fixedHeaderTop)\r\n }\r\n\r\n if (attrs.apexExcelHotkeys) {\r\n options.enableExcelHotkeys = scope.$eval(attrs.apexExcelHotkeys);\r\n }\r\n\r\n // verticalScrollHeight - minimum height in pixels required to enable fixed header.\r\n if (attrs.verticalScrollHeight) {\r\n options.verticalScrollHeight = Number.parseInt(attrs.verticalScrollHeight)\r\n }\r\n // verticalContainer - the container producing the scrollbar that will be checked to\r\n // determine when the header should be affixed. By default, this is the window.\r\n options.scrollContainer = getVerticalScrollContainer(el, attrs)\r\n\r\n // Create a new context with options that will carry out the actual logic of the directive.\r\n const context = new FlexTableContext(el, options)\r\n scope.$flex.context = context;\r\n context.extensions = [];\r\n if (options.freezeLeft) {\r\n context.extensions.push(\r\n new FrozenColumnsExtension()\r\n );\r\n }\r\n if (options.verticalScrollHeight) {\r\n context.extensions.push(\r\n new FixedHeaderExtension(),\r\n new CarouselScrollingExtension()\r\n );\r\n }\r\n\r\n if (options.enableExcelHotkeys) {\r\n // Configure the Excel Hotkeys extension.\r\n configureExcelHotkeys();\r\n }\r\n\r\n const unsafeDirectives = [\r\n // ng-repeat expands the DOM; processing these would produce exponentially more results.\r\n \"ng-repeat\",\r\n \"ng-repeat-start\",\r\n \"ng-repeat-end\",\r\n // processing the directive again would result in infinite recursion\r\n \"apex-freeze-columns\",\r\n \"apex-flex-table\"\r\n ]\r\n\r\n // Integrate the table context with the AngularJS compiler.\r\n context.compilers.push(el => {\r\n // Delete attributes that would unsafely expand the DOM if reapplied.\r\n unsafeDirectives.forEach(selectorAttribute => {\r\n if (el.hasAttribute(selectorAttribute)) {\r\n el.removeAttribute(selectorAttribute)\r\n }\r\n // Process children using querySelector API.\r\n Array.from(el.querySelectorAll(`[${selectorAttribute}]`))\r\n .forEach(directiveEl => {\r\n directiveEl.removeAttribute(selectorAttribute)\r\n })\r\n })\r\n\r\n $compile(angular.element(el))(scope)\r\n return el;\r\n })\r\n\r\n // Activate the context.\r\n $timeout(() => {\r\n attachToContext(context);\r\n\r\n // Add events to detach/re-attach upon changes to specific variables.\r\n if (attrs.watchAndRebind) {\r\n const watchAndRebind = JSON.parse(attrs.watchAndRebind);\r\n\r\n const reAttach = debounce(() => {\r\n evaluateAttributeValues();\r\n detachFromContext(context)\r\n attachToContext(context)\r\n }, 50)\r\n\r\n for (let i = 0; i < watchAndRebind.length; i++) {\r\n scope.$watch(watchAndRebind[i], () => {\r\n // Trigger a debounced detach + attach\r\n reAttach()\r\n })\r\n }\r\n }\r\n })\r\n\r\n function configureExcelHotkeys() {\r\n let cursor = cursor;\r\n context.extensions.push(new ExcelHotkeysExtension({\r\n // Only validate cells that contain an input.\r\n // inputValidator: el => !!el.querySelector(\"input,select\"),\r\n getCellValue: cell => {\r\n const mapper = context.getCellMapper(\"excelHotkeys\", cell);\r\n if (mapper) {\r\n return mapper.getValue();\r\n }\r\n const input = cell.querySelector(\"input:not([type=hidden]),select\");\r\n if (input) {\r\n return input.value;\r\n }\r\n return cell.innerText;\r\n },\r\n setCellValue: (cell, value) => {\r\n const mapper = context.getCellMapper(\"excelHotkeys\", cell);\r\n if (mapper) {\r\n return mapper.setValue(value);\r\n }\r\n },\r\n onSelectionChanged: e => {\r\n for (const selected of e.selected) {\r\n selected.td.classList.add(\"ehk-cell-selected\");\r\n const handlers = context.getCellHandlers(\"excelHotkeys\", \"select\", selected.td);\r\n for (const handler of handlers) {\r\n handler({ $event: { selected: true } });\r\n }\r\n }\r\n for (const deselected of e.deselected) {\r\n deselected.td.classList.remove(\"ehk-cell-selected\");\r\n const handlers = context.getCellHandlers(\"excelHotkeys\", \"select\", deselected.td);\r\n for (const handler of handlers) {\r\n handler({ $event: { selected: false } });\r\n }\r\n }\r\n },\r\n onCursorMoved: e => {\r\n if (cursor) {\r\n cursor.td.classList.remove(\"ehk-cell-cursor\");\r\n }\r\n cursor = e.cursor;\r\n cursor.td.classList.add(\"ehk-cell-cursor\");\r\n }\r\n }));\r\n }\r\n\r\n function evaluateAttributeValues() {\r\n const freezeLeft = scope.$eval(attrs.freezeLeft);\r\n if (freezeLeft) {\r\n options.freezeLeft = Number.parseInt(freezeLeft);\r\n }\r\n const fixedHeaderTop = scope.$eval(attrs.fixedHeaderTop);\r\n if (fixedHeaderTop) {\r\n options.fixedHeaderTop = Number.parseInt(fixedHeaderTop);\r\n }\r\n\r\n const verticalScrollHeight = scope.$eval(attrs.verticalScrollHeight);\r\n if (verticalScrollHeight) {\r\n options.verticalScrollHeight = Number.parseInt(verticalScrollHeight);\r\n }\r\n options.scrollContainer = getVerticalScrollContainer(el, attrs);\r\n }\r\n\r\n // Deactivate the context when removing this directive from the DOM.\r\n scope.$on(\"destroy\", () => {\r\n context.detach()\r\n })\r\n }\r\n\r\n function attachToContext(context) {\r\n context.attach();\r\n // Add apex-specific classes to the containers.\r\n context.verticalContainer.classList.add(\"apex-flex-table-container\");\r\n context.horizontalContainer.classList.add(\"apex-freeze-columns-container\");\r\n }\r\n\r\n function detachFromContext(context) {\r\n context.verticalContainer.classList.remove(\"apex-flex-table-container\");\r\n context.horizontalContainer.classList.remove(\"apex-freeze-columns-container\");\r\n context.detach()\r\n }\r\n}\r\n\r\nfunction getVerticalScrollContainer(el, attrs) {\r\n return attrs.verticalContainer\r\n ? $(el).closest(attrs.verticalContainer)[0]\r\n : window;\r\n}\r\n","import { isNumeric, readNumber } from \"../../../core/data-utils\";\r\n\r\n/**\r\n * A directive that, when placed within a FlexTable, will map the value\r\n * to or from the variable reference passed in.\r\n * @example\r\n * \r\n * \r\n *
{{ item.amount | number }}
\r\n */\r\nexport function FlexCellModelDirective($parse, $timeout) {\r\n 'ngInject';\r\n return {\r\n selector: \"apexFlexCellModel\",\r\n require: {\r\n flexTable: \"^apexFlexTable\",\r\n form: \"^^?form\"\r\n },\r\n link: function(scope, el, attr, { flexTable, form }) {\r\n const mapper = {\r\n getValue: () => scope.$eval(attr.apexFlexCellModel),\r\n setValue: value => {\r\n // Do some safe number coercion since most pasted inputs will need\r\n // to be real numbers on the backend.\r\n if (isNumeric(value)) {\r\n value = readNumber(value);\r\n } else {\r\n value = value || null;\r\n }\r\n // Wrap in timeout to ensure it is run during the next available digest.\r\n $timeout(() => {\r\n $parse(attr.apexFlexCellModel).assign(scope, value);\r\n if (attr.apexChange) {\r\n try {\r\n scope.$eval(attr.apexChange);\r\n } catch (ex) {\r\n console.error(\"flex-cell-model apex-change error\", ex);\r\n }\r\n }\r\n if (form) {\r\n // Integrate with parent forms as if this were an ng-model\r\n form.$setDirty();\r\n }\r\n })\r\n },\r\n };\r\n // Add a mapper used to get or set values for the cell element.\r\n flexTable.context.registerCellMapper(\"excelHotkeys\", el[0], mapper);\r\n }\r\n }\r\n}\r\n","import angular from \"angular\";\r\nimport { FlexTableDirective } from \"./flex-table.directive\";\r\nimport { FlexSelectCellDirective } from \"./flex-select-cell.directive\";\r\nimport { FlexCellModelDirective } from \"./flex-cell-model.directive\";\r\n\r\nexport const FlexTableModule = angular\r\n .module(\"apex.common.directives.flexTable\", [])\r\n .directive(\"apexFlexTable\", FlexTableDirective)\r\n .directive(\"apexFreezeColumns\", FlexTableDirective)\r\n .directive(\"apexFlexSelectCell\", FlexSelectCellDirective)\r\n .directive(\"apexFlexCellModel\", FlexCellModelDirective)\r\n .name;\r\n","/**\r\n * A directive that, when placed within a FlexTable, will invoke the handler\r\n * whenever cell selection on the element occurs.\r\n * @example\r\n * \r\n * \r\n *
\r\n * @example\r\n * // $event\r\n * {\r\n * selected: true\r\n * }\r\n */\r\nexport function FlexSelectCellDirective() {\r\n return {\r\n selector: \"apexFlexSelectCell\",\r\n require: {\r\n flexTable: \"^apexFlexTable\"\r\n },\r\n link: function(scope, el, attr, { flexTable }) {\r\n const handler = args => {\r\n Object.assign(scope, args || {});\r\n scope.$eval(attr.apexFlexSelectCell);\r\n }\r\n // Add a handler to be invoked if the given element is selected.\r\n flexTable.context.addCellHandler(\"excelHotkeys\", \"select\", el[0], handler);\r\n scope.$on(\"destroy\", () => {\r\n if (flexTable) {\r\n flexTable.context.removeCellHandler(\"excelHotkeys\", \"select\", el[0], handler);\r\n }\r\n })\r\n }\r\n }\r\n}\r\n","/** @typedef {import('../../core/services/locale.service').LocaleService} LocaleService */\r\n\r\n/**\r\n * Use the locale with the given country ID on the page where this directive is used.\r\n * @param {LocaleService} localeService Any instance of the locale service.\r\n * @returns {any} The locale directive.\r\n */\r\nexport function LocaleDirective(localeService) {\r\n 'ngInject'\r\n return {\r\n restrict: \"A\",\r\n link: function (scope, el, attrs) {\r\n // The countryID is passed in with this directive's attribute value.\r\n // eg,
...\r\n const countryID = Number(attrs.apexLocale);\r\n if (countryID) {\r\n // Set the default locale based on the attributes passed into the directive.\r\n localeService.retrieveLocales()\r\n .then(function (locales) {\r\n return locales.filter(function (locale) {\r\n return locale.countryID === countryID;\r\n })[0];\r\n })\r\n .then(function (defaultLocale) {\r\n return localeService.setDefaultLocale(defaultLocale.localeID);\r\n });\r\n }\r\n }\r\n };\r\n}\r\n","export function MaskedSecretDirective($timeout) {\r\n 'ngInject'\r\n const directive = {\r\n require: \"ngModel\",\r\n restrict: \"A\",\r\n link: link,\r\n scope: {\r\n mask: \"=\",\r\n promptChar: \"=?\",\r\n reveal: \"=?\"\r\n }\r\n };\r\n const placeholderChars = /[09#L?&CAa]/;\r\n\r\n return directive;\r\n\r\n function link(scope, el, attrs, ngModel) {\r\n scope.promptChar = scope.promptChar || \"_\"; // Default prompt character.\r\n scope.reveal = scope.reveal || function (model, char, i) {\r\n return false;\r\n };\r\n scope.secretChar = \"●\";\r\n /* The parsing process goes like this:\r\n * Eg, with a view value of: ●●●-4_-____\r\n * model value of: 123\r\n * mask of: 000-00-0000\r\n * prompt char: _\r\n * 1. Fill secret characters ● with model characters.\r\n * Return\r\n * 123-4_-____\r\n * 2. Match unmasked value with the character restrictions and strip out placeholder characters from mask.\r\n * If there is an non-matching character, return the previous model value. Only necessary if a mask is used.\r\n * Return:\r\n * 1234\r\n * 3. Fill mask with the secret character in the place of model value characters.\r\n * Set element text to this transformed mask:\r\n * ●●●-●_-____\r\n * Return:\r\n * 1234\r\n */\r\n\r\n // Prevent attempts to autocomplete to the placeholder values.\r\n el.attr(\"autocomplete\", \"off\");\r\n el.on(\"keydown\", blockInvalidInput);\r\n el.on(\"focus\", function (e) {\r\n // Display placeholder on focus, in case it was hidden.\r\n $timeout(function () {\r\n setInputValue(ngModel.$modelValue);\r\n // Select all text on focus.\r\n el.prop(\"selectionStart\", 0);\r\n el.prop(\"selectionEnd\", el.val().length);\r\n });\r\n });\r\n el.on(\"blur\", function (e) {\r\n // Hide placeholder if it is blank.\r\n $timeout(function () {\r\n if ((ngModel.$modelValue || \"\") === \"\") {\r\n el.val(\"\");\r\n } else {\r\n // For some reason, viewValue doesn't get the updated value until after blur.\r\n const maskedValue = formatModelIntoMask(conformToMask(unmaskSecret(ngModel.$modelValue)));\r\n ngModel.$setValidity(\"unfinished\", maskedValue.indexOf(scope.promptChar) < 0);\r\n }\r\n });\r\n });\r\n\r\n\r\n ngModel.$parsers.push(unmaskSecret);\r\n ngModel.$parsers.push(conformToMask);\r\n ngModel.$parsers.push(function (viewValue) {\r\n setInputValue(viewValue);\r\n return viewValue;\r\n });\r\n\r\n ngModel.$formatters.push(formatModelIntoMask);\r\n\r\n ngModel.$render = function () {\r\n // Display the value in input (doesn't happen automatically)\r\n if ((ngModel.$modelValue || \"\") === \"\") {\r\n el.val(\"\");\r\n } else {\r\n el.val(ngModel.$viewValue);\r\n }\r\n }\r\n\r\n function unmaskSecret(viewValue) {\r\n viewValue = viewValue || \"\";\r\n\r\n // Previous model value.\r\n const actualValue = ngModel.$modelValue || \"\";\r\n let unmaskedValue = viewValue;\r\n for (let i = 0; i < actualValue.length && i < viewValue.length; i++) {\r\n // Replace the masked characters with their original values.\r\n unmaskedValue = unmaskedValue.replace(scope.secretChar, actualValue[i]);\r\n }\r\n return unmaskedValue;\r\n }\r\n\r\n /**\r\n * Strip characters away from the view value that do not conform to the mask,\r\n * if any.\r\n * @param {any} viewValue The model's view value.\r\n * @returns {any} The view value conformed to a mask.\r\n */\r\n function conformToMask(viewValue) {\r\n viewValue = viewValue || \"\";\r\n\r\n let actualValue = viewValue;\r\n if (scope.mask) {\r\n // Match the text against the mask.\r\n actualValue = \"\";\r\n let j = 0;\r\n for (let i = 0; i < scope.mask.length; i++) {\r\n const maskChar = scope.mask[i];\r\n if (!isMaskCharacterPlaceholder(maskChar)) {\r\n continue;\r\n }\r\n\r\n let added = false;\r\n // Find the next view value character that matches the mask.\r\n do {\r\n const textChar = viewValue[j] || scope.promptChar;\r\n if (textChar !== scope.promptChar) {\r\n if (isCharacterAllowedByMask(maskChar, textChar, scope.promptChar)) {\r\n actualValue += textChar;\r\n added = true;\r\n }\r\n }\r\n } while (j++ < viewValue.length && !added);\r\n }\r\n }\r\n\r\n return actualValue;\r\n }\r\n\r\n function formatModelIntoMask(modelValue) {\r\n let res = \"\";\r\n modelValue = modelValue || \"\";\r\n\r\n // If a mask is used, replace all characters with the secret character.\r\n // Otherwise, only replace non-prompt characters in the placeholder slot.\r\n if (!scope.mask) {\r\n for (let i = 0; i < modelValue.length; i++) {\r\n if (scope.reveal(modelValue, modelValue[i], i)) {\r\n res += modelValue[i];\r\n } else {\r\n res += scope.secretChar;\r\n }\r\n }\r\n } else {\r\n let j = 0;\r\n for (let i = 0; i < scope.mask.length; i++) {\r\n const maskChar = scope.mask[i];\r\n let currentTextChar;\r\n if (j < modelValue.length) {\r\n currentTextChar = scope.reveal(modelValue, modelValue[j], j) ? modelValue[j] : scope.secretChar;\r\n } else {\r\n currentTextChar = scope.promptChar;\r\n }\r\n if (isMaskCharacterPlaceholder(maskChar)) {\r\n res += currentTextChar;\r\n j++;\r\n } else {\r\n res += maskChar;\r\n }\r\n }\r\n }\r\n return res;\r\n }\r\n\r\n /**\r\n * Update the element to display the formatted value.\r\n * @param {any} value The input value.\r\n */\r\n function setInputValue(value) {\r\n const maskedValue = formatModelIntoMask(value);\r\n\r\n // Replacing the element text with the new text will change the cursor position,\r\n // so calculate the new selection.\r\n let cursorPosition = maskedValue.indexOf(scope.promptChar);\r\n cursorPosition = cursorPosition < 0 ? maskedValue.length : cursorPosition;\r\n\r\n if (scope.mask) {\r\n const leftHalf = maskedValue.substring(0, cursorPosition);\r\n const remainingMask = scope.mask.substring(leftHalf.length);\r\n const nextPlaceholder = placeholderChars.exec(remainingMask);\r\n if (nextPlaceholder !== null) {\r\n cursorPosition = nextPlaceholder.index + leftHalf.length;\r\n }\r\n }\r\n\r\n ngModel.$setViewValue(maskedValue);\r\n el.val(maskedValue);\r\n el.prop(\"selectionStart\", cursorPosition);\r\n el.prop(\"selectionEnd\", cursorPosition);\r\n }\r\n\r\n function blockInvalidInput(e) {\r\n // Cancel processing on keyboard shortcuts.\r\n if (scope.mask === undefined || e.ctrlKey || e.altKey) return;\r\n\r\n const currentViewValue = el.val();\r\n\r\n // Only allow delete and backspace if they delete a filled placeholder character.\r\n // If they delete a prompt char or static char, only move the cursor backward or forward.\r\n if (e.keyCode === 8) {\r\n // Backspace - find last instance of a placeholder\r\n\r\n handleBackspaceInput(e);\r\n return;\r\n } else if (e.keyCode === 46) {\r\n // Delete - find next instance of a placeholder\r\n handleDeleteInput(e);\r\n return;\r\n }\r\n\r\n // Ignore non-inputtable keys.\r\n if (!e.key || e.key.length > 1) return;\r\n\r\n const textChar = e.key;\r\n\r\n // Move cursor before the last empty placeholder.\r\n let lastEmptyPrompt = -1;\r\n for (let i = currentViewValue.length - 1; i >= 0; --i) {\r\n if (currentViewValue[i] === scope.promptChar) {\r\n lastEmptyPrompt = i;\r\n } else if (currentViewValue[i] === scope.secretChar) {\r\n break;\r\n }\r\n }\r\n if (lastEmptyPrompt >= 0 && el.prop(\"selectionStart\") > lastEmptyPrompt) {\r\n el.prop(\"selectionStart\", lastEmptyPrompt);\r\n }\r\n\r\n // Remove the text after the cursor position: it will be replaced by (or depending on) the key being pressed.\r\n const leftHalf = currentViewValue.substring(0, el.prop(\"selectionStart\"));\r\n const unfilledPart = scope.mask.substring(leftHalf.length) || \"\";\r\n const nextPlaceholder = placeholderChars.exec(unfilledPart);\r\n if (nextPlaceholder !== null) {\r\n const maskChar = unfilledPart[nextPlaceholder.index];\r\n if (isCharacterAllowedByMask(maskChar, textChar, scope.promptChar)) {\r\n // Allow keydown event so the character can be inputted.\r\n // Technically, the rest of the input's value could be invalid at this point.\r\n return;\r\n }\r\n }\r\n // Prevent entry; cursor is at end of mask or placeholder does not allow this character.\r\n e.preventDefault();\r\n e.stopPropagation();\r\n return false;\r\n }\r\n\r\n function handleBackspaceInput(e) {\r\n const currentViewValue = el.val();\r\n const filledMask = scope.mask.substring(0, el.prop(\"selectionStart\"));\r\n for (let i = filledMask.length - 1; i >= 0; i--) {\r\n if (isMaskCharacterPlaceholder(filledMask[i])) {\r\n el.prop(\"selectionStart\", i === filledMask.length - 1 ? i : i + 1);\r\n break;\r\n }\r\n }\r\n let anyDeletedFilledPlaceholders = false;\r\n for (let i = el.prop(\"selectionStart\"); i < el.prop(\"selectionEnd\"); i++) {\r\n if (currentViewValue[i] !== scope.promptChar && isMaskCharacterPlaceholder(scope.mask[i])) {\r\n // Some actual characters would be deleted, so allow the key press to success.\r\n anyDeletedFilledPlaceholders = true;\r\n break;\r\n }\r\n }\r\n if (!anyDeletedFilledPlaceholders) {\r\n // Finish moving cursor over.\r\n e.preventDefault();\r\n e.stopPropagation();\r\n el.prop(\"selectionEnd\", el.prop(\"selectionStart\"));\r\n }\r\n }\r\n\r\n function handleDeleteInput(e) {\r\n // Cancel delete if there are no more filled inputs to the right\r\n const currentViewValue = el.val();\r\n let anyDeletedFilledPlaceholders = false;\r\n for (let i = el.prop(\"selectionStart\"); i < currentViewValue.length; i++) {\r\n if (currentViewValue[i] !== scope.promptChar && isMaskCharacterPlaceholder(scope.mask[i])) {\r\n // Some actual characters would be deleted, so allow the key press to success.\r\n anyDeletedFilledPlaceholders = true;\r\n break;\r\n }\r\n }\r\n if (!anyDeletedFilledPlaceholders) {\r\n // Finish moving cursor over.\r\n e.preventDefault();\r\n e.stopPropagation();\r\n }\r\n }\r\n }\r\n\r\n function isMaskCharacterPlaceholder(maskChar) {\r\n return placeholderChars.test(maskChar)\r\n }\r\n\r\n function isCharacterAllowedByMask(maskChar, textChar, promptChar) {\r\n // Prompt character is always accepted.\r\n if (textChar === promptChar) return true;\r\n\r\n switch (maskChar) {\r\n case \"0\":\r\n // Allow 0-9.\r\n return /[0-9]/.test(textChar);\r\n case \"9\":\r\n // Allow 0-9 and spaces\r\n return /[0-9\\s]/.test(textChar);\r\n case \"#\":\r\n // Allow 0-9, spaces, and +/-\r\n return /[0-9\\s+-]/.test(textChar);\r\n case \"L\":\r\n // Allow alphabetical characters.\r\n return /[a-zA-Z]/.test(textChar);\r\n case \"?\":\r\n // Accept alphabetical characters and spaces.\r\n return /[a-zA-Z\\s]/.test(textChar);\r\n case \"&\":\r\n // Accept any character.\r\n return /^[^\\s]*$/.test(textChar);\r\n case \"C\":\r\n // Accept any character or space.\r\n return true;\r\n case \"A\":\r\n // Accept alphanumeric.\r\n return /[a-zA-Z0-9]/.test(textChar);\r\n case \"a\":\r\n // Accept alphanumeric and spaces.\r\n return /[a-zA-Z0-9\\s]/.test(textChar);\r\n default:\r\n return true;\r\n }\r\n }\r\n}\r\n","/**\r\n * A directive component that renders the given src url as an html partial\r\n * and compiles it in the same scope as its parent.\r\n * @param {any} $compile The angular compile service\r\n * @param {any} $templateRequest The template request service.\r\n * @returns {any} The directive.\r\n */\r\nexport function PartialSrcDirective($compile, $templateRequest) {\r\n 'ngInject'\r\n return {\r\n restrict: \"A\",\r\n link: function (scope, el, attrs) {\r\n const srcUrl = attrs.apexPartialSrc;\r\n $templateRequest(srcUrl)\r\n .then(function (template) {\r\n el.html(template);\r\n $compile(el.contents())(scope);\r\n });\r\n }\r\n };\r\n}\r\n","import { StandbyInput, StandbyInputMode } from \"@herbjoy/sheet-hotkeys\";\r\nimport { evalInChildScope } from \"../../core/data-utils\";\r\n\r\n/**\r\n * Factory function returning the directive definition for\r\n * defining an element as a standby input placeholder for\r\n * another element. The element will be activated when it is\r\n * given focus.\r\n * @param {any} mode The bindable mode of the input. Can be Active(0) or Inactive(1). Defaults to Inactive.\r\n * See StandbyInputMode for strongly typed values.\r\n * @param {any} disabled If true, the input will never activate upon focus. Explicit mode switching will still work.\r\n * @param {any} onActivating Method binding passed the $event data just before activating the input.\r\n * @param {any} onActivated Method binding passed the $event data just after activating the input.\r\n * @param {any} onDeactivating Method binding passed the $event data just before deactivating the input.\r\n * @param {any} onDeactivated Method binding passed the $event data just after deactivating the input.\r\n * @param {any} onFocusing Method binding passed the $event data just before focusing on the input.\r\n * @example\r\n * \r\n * \r\n * {{ $ctrl.number }}\r\n * \r\n * \r\n * \r\n * \r\n * \r\n */\r\nexport function StandbyInputDirective($compile) {\r\n 'ngInject';\r\n return {\r\n restrict: \"EA\",\r\n scope: false,\r\n terminal: true,\r\n link: function (scope, el, attr) {\r\n const standbyHtml = el.find(\"apex-standby-input-template\");\r\n const activeHtml = el.find(\"apex-active-input-template\");\r\n\r\n // Remove all existing children from the root element.\r\n el.html(\"\");\r\n\r\n const options = {\r\n mode: getMode(scope, attr),\r\n disabled: getDisabled(scope, attr),\r\n onActivating: getOnActivating(scope, attr),\r\n onActivated: getOnActivated(scope, attr),\r\n onDeactivating: getOnDeactivating(scope, attr),\r\n onDeactivated: getOnDeactivated(scope, attr),\r\n onFocusing: getOnFocusing(scope, attr)\r\n }\r\n\r\n const standbyInputOptions = {\r\n activeHtml: activeHtml,\r\n standbyHtml: standbyHtml,\r\n mode: options.mode,\r\n onActivating: (el, args) => scope.$apply(() => {\r\n if (getDisabled(scope, attr)) {\r\n args.cancel = true;\r\n return;\r\n }\r\n el.classList.add(\"apex-standby-activating\");\r\n options.onActivating({ $event: args });\r\n }),\r\n onActivated: el => scope.$apply(() => {\r\n addActiveStyles(el);\r\n options.onActivated();\r\n }),\r\n onDeactivating: (el, args) => scope.$apply(() => {\r\n el.classList.add(\"apex-standby-deactivating\");\r\n options.onDeactivating({ $event: args });\r\n }),\r\n onDeactivated: el => scope.$apply(() => {\r\n addInactiveStyles(el);\r\n options.onDeactivated();\r\n }),\r\n onFocusing: (el, args) => scope.$apply(() => {\r\n // Consider the \"apex-standby-focus\" attribute as a marker for choosing which\r\n // element should receive focus when focusing on an active element.\r\n const focusTarget = el.querySelector(\"[apex-standby-focus]\");\r\n if (focusTarget) {\r\n focusTarget.focus();\r\n args.cancel = true;\r\n }\r\n options.onFocusing({ $event: args })\r\n })\r\n };\r\n\r\n const compilerOptions = {\r\n compile: html => {\r\n // The standby input library expects the compiler to return the compiled element.\r\n return $compile(html)(scope)[0];\r\n },\r\n attach: element => {\r\n el[0].appendChild(element);\r\n },\r\n detach: element => {\r\n el[0].removeChild(element);\r\n }\r\n };\r\n\r\n const input = new StandbyInput(standbyInputOptions, compilerOptions);\r\n input.attach();\r\n // Invoke activation logic immediately upon attaching.\r\n options.mode === StandbyInputMode.Active ? addActiveStyles(input.getElement())\r\n : addInactiveStyles(input.getElement());\r\n\r\n scope.$watch(attr.mode, () => {\r\n // Changes to the mode should be treated as a bound change, so\r\n // explicitly alter the component value.\r\n input.changeMode(getMode(scope, attr));\r\n });\r\n\r\n scope.$on(\"$destroy\", () => {\r\n if (input) {\r\n input.detach();\r\n }\r\n });\r\n\r\n function addActiveStyles(el) {\r\n el.classList.remove(\"apex-standby-deactivating\");\r\n el.classList.add(\"apex-standby-activated\");\r\n }\r\n\r\n function addInactiveStyles(el) {\r\n el.classList.remove(\"apex-standby-activating\");\r\n if (!options.disabled) {\r\n el.classList.add(\"apex-standby-activatable\");\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\nfunction getMode(scope, attr) {\r\n const value = scope.$eval(attr.mode);\r\n if (StandbyInputMode[value] !== undefined) {\r\n // Only use the value if it's defined in the modes enum.\r\n if (value === StandbyInputMode.Active || value === StandbyInputMode.Inactive) {\r\n return value;\r\n }\r\n // Reverse look up enum value based on enum key.\r\n return StandbyInputMode[value];\r\n }\r\n return StandbyInputMode.Inactive;\r\n}\r\n\r\nfunction getDisabled(scope, attr) {\r\n return scope.$eval(attr.disabled);\r\n}\r\n\r\nfunction getOnActivating(scope, attr) {\r\n return args => evalInChildScope(scope, args, attr.onActivating || \"\");\r\n}\r\n\r\nfunction getOnActivated(scope, attr) {\r\n return args => evalInChildScope(scope, args, attr.onActivated || \"\");\r\n}\r\n\r\nfunction getOnDeactivating(scope, attr) {\r\n return args => evalInChildScope(scope, args, attr.onDeactivating || \"\");\r\n}\r\n\r\nfunction getOnDeactivated(scope, attr) {\r\n return args => evalInChildScope(scope, args, attr.onDeactivated || \"\");\r\n}\r\n\r\nfunction getOnFocusing(scope, attr) {\r\n return args => evalInChildScope(scope, args, attr.onFocusing || \"\");\r\n}\r\n","/**\r\n * A directive that preserves focus on a particular element between state changes.\r\n */\r\nexport function StatePreserveFocusDirective($timeout, $transitions) {\r\n 'ngInject';\r\n return {\r\n restrict: \"A\",\r\n link: function (scope, el, attr) {\r\n let focusedElement = null;\r\n const unregisterOnCreate = $transitions.onCreate({}, () => {\r\n const id = el[0].id;\r\n const activeElement = document.activeElement;\r\n if (!id || activeElement.id !== id) {\r\n focusedElement = null;\r\n return;\r\n }\r\n focusedElement = { id };\r\n // Get element textbox selection.\r\n try {\r\n focusedElement.selectionStart = activeElement.selectionStart;\r\n focusedElement.selectionEnd = activeElement.selectionEnd;\r\n } catch (ex) {\r\n focusedElement.selectionStart = null;\r\n }\r\n activeElement.blur();\r\n });\r\n const unregisterRestore = $transitions.onSuccess({}, () => {\r\n unregisterOnCreate();\r\n unregisterRestore();\r\n $timeout(() => {\r\n if (!focusedElement) {\r\n return;\r\n }\r\n const newElement = document.querySelector(`#${focusedElement.id}`);\r\n if (!newElement || !newElement.focus) {\r\n return;\r\n }\r\n newElement.selectionStart = focusedElement.selectionStart;\r\n newElement.selectionEnd = focusedElement.selectionEnd;\r\n newElement.focus();\r\n })\r\n });\r\n }\r\n }\r\n}\r\n","import angular from 'angular'\r\n\r\nimport './sticky.less'\r\n\r\n/**\r\n * Make the element stick to the top of the window.\r\n * @param {any} $window The angular Window wrapper.\r\n * @returns {any} The directive.\r\n */\r\nexport function StickyDirective($window) {\r\n 'ngInject'\r\n const directive = {\r\n restrict: \"A\",\r\n link: link\r\n }\r\n return directive;\r\n\r\n function link(scope, element, attrs) {\r\n const $win = angular.element($window);\r\n\r\n if (scope._stickyElements === undefined) {\r\n scope._stickyElements = [];\r\n\r\n $win.bind(\"scroll.sticky\", function (e) {\r\n const pos = $win.scrollTop();\r\n for (let i = 0; i < scope._stickyElements.length; i++) {\r\n\r\n const item = scope._stickyElements[i];\r\n\r\n if (!item.isStuck && pos > item.start) {\r\n item.element.addClass(\"stuck\");\r\n item.isStuck = true;\r\n\r\n if (item.placeholder) {\r\n item.placeholder = angular.element(\"
\")\r\n .css({ height: item.element.outerHeight() + \"px\" })\r\n .insertBefore(item.element);\r\n }\r\n } else if (item.isStuck && pos < item.start) {\r\n item.element.removeClass(\"stuck\");\r\n item.isStuck = false;\r\n\r\n if (item.placeholder) {\r\n item.placeholder.remove();\r\n item.placeholder = true;\r\n }\r\n }\r\n }\r\n });\r\n\r\n const recheckPositions = function () {\r\n for (let i = 0; i < scope._stickyElements.length; i++) {\r\n const item = scope._stickyElements[i];\r\n if (!item.isStuck) {\r\n item.start = item.element.offset().top;\r\n } else if (item.placeholder) {\r\n item.start = item.placeholder.offset().top;\r\n }\r\n }\r\n };\r\n $win.bind(\"load\", recheckPositions);\r\n $win.bind(\"resize\", recheckPositions);\r\n }\r\n\r\n const item = {\r\n element: element,\r\n isStuck: false,\r\n placeholder: attrs.usePlaceholder !== undefined,\r\n start: element.offset().top\r\n };\r\n\r\n scope._stickyElements.push(item);\r\n }\r\n}\r\n","import angular from \"angular\";\r\n// Dependency on core modules exists because the locale directive needs access to the data services.\r\nimport { CoreModule } from '../../core/core.module';\r\nimport { DragDropContainerDirective } from \"./drag-drop/drag-drop-container.directive\";\r\nimport { DragDropPayloadDirective } from \"./drag-drop/drag-drop-payload.directive\";\r\nimport { FileModelDirective } from \"./file-model.directive\";\r\nimport { FlexTableModule } from \"./flex-table/flex-table.module\";\r\nimport { IndeterminateCheckboxDirective } from \"./indeterminate-checkbox.directive\";\r\nimport { IsolateFormDirective } from \"./isolate-form.directive\";\r\nimport { LocaleDirective } from \"./locale.directive\";\r\nimport { MaskedSecretDirective } from \"./masked-secret.directive\";\r\nimport { NoDirtyCheckDirective } from \"./no-dirty-check.directive\";\r\nimport { PartialSrcDirective } from \"./partial-src.directive\";\r\nimport { StandbyInputDirective } from \"./standby-input.directive\";\r\nimport { StatePreserveFocusDirective } from \"./state-preserve-focus.directive\";\r\nimport { StickyDirective } from \"./sticky\";\r\nimport { TrixWysiwygDirective } from './trix-wysiwyg.directive';\r\nimport { VirtualLimitDirective } from \"./virtual-limit.directive\";\r\n\r\nexport const DirectivesModule = angular\r\n .module(\"apex.common.directives\", [\r\n CoreModule,\r\n FlexTableModule\r\n ])\r\n .directive(\"apexDragDropContainer\", DragDropContainerDirective)\r\n .directive(\"apexDragDropPayload\", DragDropPayloadDirective)\r\n .directive(\"apexFileModel\", FileModelDirective)\r\n .directive(\"apexIndeterminateCheckbox\", IndeterminateCheckboxDirective)\r\n .directive(\"apexIsolateForm\", IsolateFormDirective)\r\n .directive(\"apexLocale\", LocaleDirective)\r\n .directive(\"apexMaskedSecret\", MaskedSecretDirective)\r\n .directive(\"apexNoDirtyCheck\", NoDirtyCheckDirective)\r\n .directive(\"apexPartialSrc\", PartialSrcDirective)\r\n .directive(\"apexStandbyInput\", StandbyInputDirective)\r\n .directive(\"apexStatePreserveFocus\", StatePreserveFocusDirective)\r\n .directive(\"apexSticky\", StickyDirective)\r\n .directive(\"apexWysiwyg\", TrixWysiwygDirective)\r\n .directive(\"apexVirtualLimit\", VirtualLimitDirective)\r\n .name\r\n","/**\r\n * A directive that turns the element into a target for dropping\r\n * a payload.\r\n * @example\r\n *
\r\n *
\r\n *
\r\n *
\r\n *
\r\n *
\r\n *
\r\n *
\r\n */\r\nexport function DragDropContainerDirective() {\r\n return {\r\n restrict: \"A\",\r\n scope: {\r\n disableDragDrop : \"<\",\r\n dropPayload: \"&onDropPayload\", // Handle the drop event. { dragContainer, payload } = $event\r\n // Allow hooking into the JS API.\r\n dragEnter: \"&onDragEnter\",\r\n dragOver: \"&onDragOver\",\r\n dragLeave: \"&onDragLeave\"\r\n },\r\n controller: class DragDropContainerController { },\r\n controllerAs: \"$ctrl\",\r\n bindToController: true,\r\n link: function (scope, el, attrs) {\r\n const vm = scope.$ctrl;\r\n vm.group = attrs.apexDragDropContainer;\r\n if (!vm.disableDragDrop) {\r\n el[0].addEventListener(\"dragover\", function (ev) {\r\n ev.preventDefault();\r\n // Allow the payload to be dragged into this element.\r\n el[0].classList.add(\"dragdrop-over\");\r\n scope.$apply(function () {\r\n vm.dragOver({\r\n $event: ev\r\n });\r\n });\r\n });\r\n el[0].addEventListener(\"dragenter\", function (ev) {\r\n ev.preventDefault();\r\n el[0].classList.add(\"dragdrop-over\");\r\n scope.$apply(function () {\r\n vm.dragEnter({\r\n $event: ev\r\n });\r\n });\r\n });\r\n el[0].addEventListener(\"dragleave\", function (ev) {\r\n ev.preventDefault();\r\n el[0].classList.remove(\"dragdrop-over\");\r\n scope.$apply(function () {\r\n vm.dragLeave({\r\n $event: ev\r\n });\r\n });\r\n });\r\n el[0].addEventListener(\"drop\", function (ev) {\r\n ev.preventDefault();\r\n ev.stopPropagation();\r\n el[0].classList.remove(\"dragdrop-over\");\r\n scope.$apply(function () {\r\n const data = JSON.parse(ev.dataTransfer.getData(\"application/json\") || \"\");\r\n if (!data) {\r\n return;\r\n }\r\n if (data && data.group === vm.group) {\r\n // Indicate whether the drop was a move, copy, link, or none.\r\n data.dropEffect = ev.dataTransfer.dropEffect;\r\n vm.dropPayload({\r\n $event: data\r\n });\r\n }\r\n })\r\n })\r\n }\r\n }\r\n }\r\n}\r\n","export function DragDropPayloadDirective() {\r\n return {\r\n restrict: \"A\",\r\n require: \"^^apexDragDropContainer\",\r\n scope: {\r\n draggable: \" {};\r\n }\r\n }\r\n}\r\n","/**\r\n * A directive that turns a textarea into a WYSIWYG text editor.\r\n * A more reliable implementation of the angular-trix adapter for the Trix Editor.\r\n * Based on http://sachinchoolur.github.io/angular-trix/\r\n * Usage: \r\n */\r\nexport function TrixWysiwygDirective() {\r\n 'ngInject'\r\n const directive = {\r\n restrict: \"A\",\r\n require: \"ngModel\",\r\n scope: {\r\n // Override ngModel events:\r\n ngChange: '&',\r\n ngFocus: '&',\r\n ngBlur: '&',\r\n trixInitialize: '&',\r\n trixSelectionChange: '&',\r\n trixFileAccept: '&',\r\n trixAttachmentAdd: '&',\r\n trixAttachmentRemove: '&'\r\n },\r\n link,\r\n // Applying the directive directly to a trix-editor element doesn't work\r\n // because the trix-editor strips all of the attributes off the editor element\r\n // and puts them on the toolbar. This breaks ngModel integration. However,\r\n // this can be worked around by replacing the textarea with the trix-editor in the template.\r\n template: ``,\r\n replace: true\r\n }\r\n\r\n // Map from scope events to trix events.\r\n const events = [{\r\n // These events are extensions of the angular textarea HTML events, so use ng namespace.\r\n trixEvent: \"trix-change\",\r\n ngEvent: \"ngChange\"\r\n }, {\r\n trixEvent: \"trix-focus\",\r\n ngEvent: \"ngFocus\"\r\n }, {\r\n trixEvent: \"trix-blur\",\r\n ngEvent: \"ngBlur\"\r\n }, {\r\n // Also apply trix-specific events.\r\n trixEvent: \"trix-initialize\",\r\n ngEvent: \"trixInitialize\"\r\n }, {\r\n trixEvent: \"trix-selection-change\",\r\n ngEvent: \"trixSelectionChange\"\r\n }, {\r\n trixEvent: \"trix-file-accept\",\r\n ngEvent: \"trixFileAccept\"\r\n }, {\r\n trixEvent: \"trix-attachment-add\",\r\n ngEvent: \"trixAttachmentAdd\"\r\n }, {\r\n trixEvent: \"trix-attachment-remove\",\r\n ngEvent: \"trixAttachmentRemove\"\r\n }]\r\n\r\n return directive;\r\n\r\n function link(scope, el, attrs, ngModel) {\r\n // Trix performs its own DOM manipulation, so we may be linking to the toolbar\r\n // instead of the editor itself. Re-assert the original editor element.\r\n const trixEditorEl = el.siblings(\"trix-editor\")[0] || el[0]\r\n\r\n for (const { trixEvent: type, ngEvent: method } of events) {\r\n trixEditorEl.addEventListener(type, function (e) {\r\n if (type === 'trix-file-accept' && attrs.preventTrixFileAccept === 'true') {\r\n e.preventDefault();\r\n }\r\n\r\n scope[method]({\r\n e: e,\r\n editor: trixEditorEl.editor\r\n });\r\n });\r\n }\r\n\r\n if (!ngModel) return\r\n\r\n // Wait until the component has initialized before setting up the ngModel pipeline.\r\n ngModel.$formatters.push(function (modelValue) {\r\n trixEditorEl.editor.loadHTML(modelValue);\r\n return trixEditorEl.innerHTML\r\n })\r\n\r\n ngModel.$parsers.push(function (viewValue) {\r\n return viewValue\r\n })\r\n\r\n trixEditorEl.addEventListener(\"trix-initialize\", function () {\r\n ngModel.render = function () {\r\n if (ngModel.$modelValue) {\r\n trixEditorEl.editor.loadHTML(ngModel.$modelValue);\r\n }\r\n }\r\n ngModel.render()\r\n // v1.6+ only. For now, avoid wrapping the editor in ng-if while data is loading.\r\n // ngModel.$processModelValue();\r\n\r\n })\r\n\r\n trixEditorEl.addEventListener(\"trix-change\", function () {\r\n ngModel.$setViewValue(trixEditorEl.innerHTML)\r\n })\r\n }\r\n}\r\n","/**\r\n * A directive that increments the scroll limit on the scope, as passed in, when the scroll bar\r\n * on the container is close to the bottom.\r\n * @example
\r\n * @returns {any} The directive.\r\n */\r\nexport function VirtualLimitDirective() {\r\n return {\r\n restrict: \"A\",\r\n scope: {\r\n apexVirtualLimit: \"=\",\r\n limitActivationDistance: \"=?\"\r\n },\r\n link: function (scope, el, attrs) {\r\n const interval = scope.apexVirtualLimit;\r\n const activationDistance = 50 || scope.limitActivationDistance;\r\n\r\n el.on(\"scroll\", function () {\r\n // scrollTop cannot be any higher than the height of the offscreen content, since\r\n // it represents the top of the scrollbar. It will activate at the very bottom of\r\n // the scroller if the activation distance is 0.\r\n if (offscreenHeight(el[0]) - activationDistance < el.scrollTop()) {\r\n // Scroller is close to the bottom, so increase the limit by the interval.\r\n scope.$apply(function () {\r\n scope.apexVirtualLimit += interval;\r\n });\r\n }\r\n });\r\n }\r\n }\r\n\r\n function offscreenHeight(el) {\r\n return el.scrollHeight - el.offsetHeight;\r\n }\r\n}\r\n","export function LocaleTranslateFilter(localeService) {\r\n 'ngInject'\r\n const self = translateFilter;\r\n\r\n self.currentLocaleTranslations;\r\n\r\n activate();\r\n\r\n translateFilter.$stateful = true;\r\n return translateFilter;\r\n\r\n function activate() {\r\n // Pre-load the locale translations for the current locale.\r\n localeService.retrieveCurrentLocaleTranslations()\r\n .then(function (translations) {\r\n self.currentLocaleTranslations = translations;\r\n });\r\n }\r\n\r\n function translateFilter(input, translations) {\r\n let lookupTable;\r\n if (!translations) {\r\n // Lookup up the translations file with the current locale's name and return the mapped translation text.\r\n lookupTable = self.currentLocaleTranslations;\r\n } else {\r\n lookupTable = translations;\r\n }\r\n\r\n if (lookupTable) {\r\n return lookupTable[input];\r\n } else {\r\n return \"-\";\r\n }\r\n }\r\n}\r\n","import angular from 'angular'\r\nimport ngAnimate from \"angular-animate\"\r\nimport ngAria from \"angular-aria\"\r\nimport ngMessages from \"angular-messages\"\r\nimport ngSanitize from \"angular-sanitize\"\r\n\r\nimport { CoreModule } from '../core/core.module'\r\nimport { ComponentsModule } from './components/components.module'\r\nimport { DirectivesModule } from './directives/directives.module'\r\nimport { CapitalizeFilter, JoinFilter, LocaleTranslateFilter, PaginateFilter, PropsFilter, StartFromFilter, TableColumnFilter, PermissionGrantFilter } from './filters'\r\n\r\n/** A module containing common generic templating and logic components */\r\nexport const CommonModule = angular\r\n .module(\"apex.common\", [\r\n // Common vendor libraries\r\n ngAnimate,\r\n ngAria,\r\n ngMessages,\r\n ngSanitize,\r\n \"angularMoment\", // Required from vendor listings\r\n // Extend the winxnet core (built within MVC project)\r\n \"winxnet\", // Required from vendor file\r\n ComponentsModule,\r\n CoreModule,\r\n DirectivesModule\r\n ])\r\n // Note: filters are functions that angular instantiates with new,\r\n // so they have a `this` context.\r\n .filter(\"capitalize\", CapitalizeFilter)\r\n .filter(\"join\", JoinFilter)\r\n .filter(\"translate\", LocaleTranslateFilter)\r\n .filter(\"paginate\", PaginateFilter)\r\n .filter(\"permission\", PermissionGrantFilter)\r\n .filter(\"propsFilter\", PropsFilter)\r\n .filter(\"startFrom\", StartFromFilter)\r\n .filter('mdTableColumnarFilter', TableColumnFilter)\r\n .name\r\n","/**\r\n * A factory for a filter that capitalizes the input string.\r\n */\r\nexport function CapitalizeFilter() {\r\n return capitalize;\r\n\r\n /**\r\n * Capitalize the input string\r\n * @param {any} s The input string\r\n * @returns {any} The capitalized input string.\r\n */\r\n function capitalize(s) {\r\n if (!s || !s.toUpperCase || !s.slice) {\r\n return s;\r\n }\r\n return s[0].toUpperCase() + s.slice(1);\r\n }\r\n}\r\n","export function JoinFilter() {\r\n return function (input, delimiter) {\r\n return (input || []).join(delimiter || \", \");\r\n };\r\n}\r\n","export function PaginateFilter() {\r\n return function (input, pageNumber, pageSize) {\r\n const start = (pageNumber - 1) * pageSize;\r\n const end = pageNumber * pageSize;\r\n if (isNaN(start) || isNaN(end)) {\r\n // Don't error, but warn and default to including the full results instead.\r\n console.warn(\"Invalid page number or page size\");\r\n }\r\n return input && input.slice(start || 0, end || undefined);\r\n };\r\n}\r\n","import { PermissionGrant } from \"@herbjoy/apex-api-models\";\r\n\r\ninterface PermissionAggregate {\r\n found: boolean;\r\n disabled: boolean;\r\n}\r\n\r\n/**\r\n * A filter used to simplify checking if permission is granted in the UI.\r\n */\r\nexport function PermissionGrantFilter() {\r\n /**\r\n * @param grants The list of permissions granted.\r\n * @param permissionKey The permission to be checked.\r\n */\r\n return function filter(grants: PermissionGrant[], permissionKey: string): boolean {\r\n if (!grants || !grants.reduceRight) {\r\n console.warn(\"Left hand argument 'grants' is invalid for PermissionGrantFilter. Expected an array, got \", grants)\r\n return false;\r\n }\r\n if (!permissionKey) {\r\n console.error(\"A permission key is required when using PermissionGrantFilter\",\r\n \"Usage: permissionGrants | permission : 'permissionName'\");\r\n return false;\r\n }\r\n const {found, disabled } = grants.reduceRight(({ found, disabled }: PermissionAggregate, grant) => {\r\n return {\r\n found: found || grant.Description.Key === permissionKey,\r\n disabled: disabled || grant.Description.Key === permissionKey\r\n && grant.Value !== \"true\"\r\n }\r\n }, { found: false, disabled: false });\r\n return found && !disabled;\r\n }\r\n}\r\n","import angular from 'angular'\r\n\r\nexport function PropsFilter() {\r\n return function (items, props) {\r\n let out = [];\r\n\r\n if (angular.isArray(items)) {\r\n const keys = Object.keys(props);\r\n\r\n items.forEach(function (item) {\r\n let itemMatches = false;\r\n\r\n for (let i = 0; i < keys.length; i++) {\r\n const prop = keys[i];\r\n const text = props[prop].toLowerCase();\r\n if (item[prop] && item[prop].toString().toLowerCase().indexOf(text) !== -1) {\r\n itemMatches = true;\r\n break;\r\n }\r\n if (!item[prop]) {\r\n console.warn(`Unable to filter object by property ${prop}`);\r\n }\r\n }\r\n\r\n if (itemMatches) {\r\n out.push(item);\r\n }\r\n });\r\n } else {\r\n // Let the output be the input untouched\r\n out = items;\r\n }\r\n\r\n return out;\r\n };\r\n}\r\n","export function StartFromFilter() {\r\n return function (input, start) {\r\n start = +start; //parse to int\r\n return input && input.slice(start);\r\n };\r\n}\r\n","//utility for nested strings in column orderBy / column searchBy\r\n//this handles cases where the value is nested within the data object\r\nfunction fetchFromObject(obj, prop) {\r\n const _index = prop.indexOf('.');\r\n if (_index > -1) {\r\n return fetchFromObject(obj[prop.substring(0, _index)], prop.substr(_index + 1));\r\n }\r\n return obj[prop];\r\n}\r\nexport function TableColumnFilter() {\r\n return function (values, columns) {\r\n let result = values;\r\n columns.forEach(function (col) {\r\n // if a column has an orderBy already use that. otherwise a searchBy can be specified.\r\n const colId = col.orderBy ? col.orderBy : col.searchBy;\r\n //if an orderBy or searchBy value is set and the column filter has a value, it will filter on that column\r\n if (colId && col.filter) {\r\n //filter the current set of values\r\n result = result.filter(function (row) {\r\n const val = fetchFromObject(row, colId);\r\n return val && val.toString().toLowerCase().indexOf(col.filter.toLowerCase()) !== -1;\r\n });\r\n }\r\n });\r\n return result;\r\n };\r\n}\r\n","var baseSet = require('./_baseSet');\n\n/**\n * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n * it's created. Arrays are created for missing index properties while objects\n * are created for all other missing properties. Use `_.setWith` to customize\n * `path` creation.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.set(object, 'a[0].b.c', 4);\n * console.log(object.a[0].b.c);\n * // => 4\n *\n * _.set(object, ['x', '0', 'y', 'z'], 5);\n * console.log(object.x[0].y.z);\n * // => 5\n */\nfunction set(object, path, value) {\n return object == null ? object : baseSet(object, path, value);\n}\n\nmodule.exports = set;\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n","var global = require('../internals/global');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nmodule.exports = function (key, value) {\n try {\n createNonEnumerableProperty(global, key, value);\n } catch (error) {\n global[key] = value;\n } return value;\n};\n","var store = require('../internals/shared-store');\n\nvar functionToString = Function.toString;\n\n// this helper broken in `3.4.1-3.4.4`, so we can't use `shared` helper\nif (typeof store.inspectSource != 'function') {\n store.inspectSource = function (it) {\n return functionToString.call(it);\n };\n}\n\nmodule.exports = store.inspectSource;\n","var IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: '3.6.5',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2020 Denis Pushkarev (zloirock.ru)'\n});\n","var toIndexedObject = require('../internals/to-indexed-object');\nvar toLength = require('../internals/to-length');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n","// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n","exports.f = Object.getOwnPropertySymbols;\n","var fails = require('../internals/fails');\n\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n // Chrome 38 Symbol has incorrect toString conversion\n // eslint-disable-next-line no-undef\n return !String(Symbol());\n});\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n","var anObject = require('../internals/an-object');\nvar aPossiblePrototype = require('../internals/a-possible-prototype');\n\n// `Object.setPrototypeOf` method\n// https://tc39.github.io/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n var CORRECT_SETTER = false;\n var test = {};\n var setter;\n try {\n setter = Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set;\n setter.call(test, []);\n CORRECT_SETTER = test instanceof Array;\n } catch (error) { /* empty */ }\n return function setPrototypeOf(O, proto) {\n anObject(O);\n aPossiblePrototype(proto);\n if (CORRECT_SETTER) setter.call(O, proto);\n else O.__proto__ = proto;\n return O;\n };\n}() : undefined);\n","'use strict';\nvar $ = require('../internals/export');\nvar createIteratorConstructor = require('../internals/create-iterator-constructor');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\nvar Iterators = require('../internals/iterators');\nvar IteratorsCore = require('../internals/iterators-core');\n\nvar IteratorPrototype = IteratorsCore.IteratorPrototype;\nvar BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;\nvar ITERATOR = wellKnownSymbol('iterator');\nvar KEYS = 'keys';\nvar VALUES = 'values';\nvar ENTRIES = 'entries';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n createIteratorConstructor(IteratorConstructor, NAME, next);\n\n var getIterationMethod = function (KIND) {\n if (KIND === DEFAULT && defaultIterator) return defaultIterator;\n if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND];\n switch (KIND) {\n case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };\n case VALUES: return function values() { return new IteratorConstructor(this, KIND); };\n case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };\n } return function () { return new IteratorConstructor(this); };\n };\n\n var TO_STRING_TAG = NAME + ' Iterator';\n var INCORRECT_VALUES_NAME = false;\n var IterablePrototype = Iterable.prototype;\n var nativeIterator = IterablePrototype[ITERATOR]\n || IterablePrototype['@@iterator']\n || DEFAULT && IterablePrototype[DEFAULT];\n var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);\n var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n var CurrentIteratorPrototype, methods, KEY;\n\n // fix native\n if (anyNativeIterator) {\n CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));\n if (IteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\n if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {\n if (setPrototypeOf) {\n setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);\n } else if (typeof CurrentIteratorPrototype[ITERATOR] != 'function') {\n createNonEnumerableProperty(CurrentIteratorPrototype, ITERATOR, returnThis);\n }\n }\n // Set @@toStringTag to native iterators\n setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);\n if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;\n }\n }\n\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n INCORRECT_VALUES_NAME = true;\n defaultIterator = function values() { return nativeIterator.call(this); };\n }\n\n // define iterator\n if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {\n createNonEnumerableProperty(IterablePrototype, ITERATOR, defaultIterator);\n }\n Iterators[NAME] = defaultIterator;\n\n // export additional methods\n if (DEFAULT) {\n methods = {\n values: getIterationMethod(VALUES),\n keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n entries: getIterationMethod(ENTRIES)\n };\n if (FORCED) for (KEY in methods) {\n if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n redefine(IterablePrototype, KEY, methods[KEY]);\n }\n } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);\n }\n\n return methods;\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var called = 0;\n var iteratorWithReturn = {\n next: function () {\n return { done: !!called++ };\n },\n 'return': function () {\n SAFE_CLOSING = true;\n }\n };\n iteratorWithReturn[ITERATOR] = function () {\n return this;\n };\n // eslint-disable-next-line no-throw-literal\n Array.from(iteratorWithReturn, function () { throw 2; });\n} catch (error) { /* empty */ }\n\nmodule.exports = function (exec, SKIP_CLOSING) {\n if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\n var ITERATION_SUPPORT = false;\n try {\n var object = {};\n object[ITERATOR] = function () {\n return {\n next: function () {\n return { done: ITERATION_SUPPORT = true };\n }\n };\n };\n exec(object);\n } catch (error) { /* empty */ }\n return ITERATION_SUPPORT;\n};\n","var global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar process = global.process;\nvar versions = process && process.versions;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n version = match[0] + match[1];\n} else if (userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = match[1];\n }\n}\n\nmodule.exports = version && +version;\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar definePropertyModule = require('../internals/object-define-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (CONSTRUCTOR_NAME) {\n var Constructor = getBuiltIn(CONSTRUCTOR_NAME);\n var defineProperty = definePropertyModule.f;\n\n if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) {\n defineProperty(Constructor, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n }\n};\n","module.exports = function (it, Constructor, name) {\n if (!(it instanceof Constructor)) {\n throw TypeError('Incorrect ' + (name ? name + ' ' : '') + 'invocation');\n } return it;\n};\n","'use strict';\nvar aFunction = require('../internals/a-function');\n\nvar PromiseCapability = function (C) {\n var resolve, reject;\n this.promise = new C(function ($$resolve, $$reject) {\n if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aFunction(resolve);\n this.reject = aFunction(reject);\n};\n\n// 25.4.1.5 NewPromiseCapability(C)\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n","var isRegExp = require('../internals/is-regexp');\n\nmodule.exports = function (it) {\n if (isRegExp(it)) {\n throw TypeError(\"The method doesn't accept regular expressions\");\n } return it;\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\nmodule.exports = function (METHOD_NAME) {\n var regexp = /./;\n try {\n '/./'[METHOD_NAME](regexp);\n } catch (e) {\n try {\n regexp[MATCH] = false;\n return '/./'[METHOD_NAME](regexp);\n } catch (f) { /* empty */ }\n } return false;\n};\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var baseAssignValue = require('./_baseAssignValue'),\n eq = require('./eq');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignValue;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeys = require('./_baseKeys'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeysIn = require('./_baseKeysIn'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nmodule.exports = keysIn;\n","var arrayFilter = require('./_arrayFilter'),\n stubArray = require('./stubArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nmodule.exports = getSymbols;\n","var DataView = require('./_DataView'),\n Map = require('./_Map'),\n Promise = require('./_Promise'),\n Set = require('./_Set'),\n WeakMap = require('./_WeakMap'),\n baseGetTag = require('./_baseGetTag'),\n toSource = require('./_toSource');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nmodule.exports = getTag;\n","var Uint8Array = require('./_Uint8Array');\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\nmodule.exports = cloneArrayBuffer;\n","\"use strict\";\r\nvar __values = (this && this.__values) || function (o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar TableDomTraverser = (function () {\r\n function TableDomTraverser(validator) {\r\n if (validator === void 0) { validator = function () { return true; }; }\r\n this.validator = validator;\r\n }\r\n TableDomTraverser.prototype.cellBelow = function (el) {\r\n var rows = el.closest(\"tbody\").rows || el.closest(\"table\").rows;\r\n var table = toUnitTable(Array.from(rows));\r\n var cellAddress = findCellAddress(el, table);\r\n var address = this.cellAddressBelow(table, cellAddress);\r\n return address ? address.td : null;\r\n };\r\n TableDomTraverser.prototype.cellAbove = function (el) {\r\n var rows = el.closest(\"tbody\").rows || el.closest(\"table\").rows;\r\n var table = toUnitTable(Array.from(rows));\r\n var cellAddress = findCellAddress(el, table);\r\n var address = this.cellAddressAbove(table, cellAddress);\r\n return address ? address.td : null;\r\n };\r\n TableDomTraverser.prototype.cellLeft = function (el) {\r\n var rows = el.closest(\"tbody\").rows || el.closest(\"table\").rows;\r\n var table = toUnitTable(Array.from(rows));\r\n var cellAddress = findCellAddress(el, table);\r\n var address = this.cellAddressLeft(table, cellAddress);\r\n return address ? address.td : null;\r\n };\r\n TableDomTraverser.prototype.cellRight = function (el) {\r\n var rows = el.closest(\"tbody\").rows || el.closest(\"table\").rows;\r\n var table = toUnitTable(Array.from(rows));\r\n var cellAddress = findCellAddress(el, table);\r\n var address = this.cellAddressRight(table, cellAddress);\r\n return address ? address.td : null;\r\n };\r\n TableDomTraverser.prototype.cellAddressBelow = function (table, cellAddress) {\r\n var i = cellAddress.i, j = cellAddress.j, el = cellAddress.td;\r\n i += el.rowSpan;\r\n while (i < table.length) {\r\n var nextRow = table[i];\r\n var td = nextRow[j];\r\n if (this.validator(td)) {\r\n return { td: td, i: i, j: j };\r\n }\r\n i += td.rowSpan;\r\n }\r\n return null;\r\n };\r\n TableDomTraverser.prototype.cellAddressAbove = function (table, cellAddress) {\r\n var i = cellAddress.i, j = cellAddress.j;\r\n i--;\r\n while (i >= 0) {\r\n var prevRow = table[i];\r\n var td = prevRow[j];\r\n if (this.validator(td)) {\r\n return { td: td, i: i, j: j };\r\n }\r\n i--;\r\n }\r\n return null;\r\n };\r\n TableDomTraverser.prototype.cellAddressLeft = function (table, cellAddress) {\r\n var i = cellAddress.i, j = cellAddress.j;\r\n var cells = table[i];\r\n j--;\r\n while (j >= 0) {\r\n var td = cells[j];\r\n if (this.validator(td)) {\r\n return { td: td, i: i, j: j };\r\n }\r\n j--;\r\n }\r\n return null;\r\n };\r\n TableDomTraverser.prototype.cellAddressRight = function (table, cellAddress) {\r\n var i = cellAddress.i, j = cellAddress.j, el = cellAddress.td;\r\n var cells = table[i];\r\n j += el.colSpan;\r\n while (j < cells.length) {\r\n var td = cells[j];\r\n if (this.validator(td)) {\r\n return { td: td, i: i, j: j };\r\n }\r\n j += td.colSpan;\r\n }\r\n return null;\r\n };\r\n return TableDomTraverser;\r\n}());\r\nexports.TableDomTraverser = TableDomTraverser;\r\nfunction toUnitTable(rows) {\r\n var e_1, _a, e_2, _b;\r\n var res = [];\r\n var cellBuffer = [];\r\n var j = 0;\r\n try {\r\n for (var _c = __values(Array.from(rows)), _d = _c.next(); !_d.done; _d = _c.next()) {\r\n var row = _d.value;\r\n var i = 0;\r\n try {\r\n for (var _e = (e_2 = void 0, __values(Array.from(row.cells))), _f = _e.next(); !_f.done; _f = _e.next()) {\r\n var cell = _f.value;\r\n while (i < cellBuffer.length && cellBuffer[i] !== undefined && cellBuffer[i].expires >= j) {\r\n i++;\r\n }\r\n for (var k = 0; k < cell.colSpan; k++) {\r\n cellBuffer[i + k] = { expires: j + cell.rowSpan - 1, cell: cell };\r\n }\r\n i += cellBuffer[i].cell.colSpan;\r\n }\r\n }\r\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\r\n finally {\r\n try {\r\n if (_f && !_f.done && (_b = _e.return)) _b.call(_e);\r\n }\r\n finally { if (e_2) throw e_2.error; }\r\n }\r\n res.push(cellBuffer.map(function (p) { return p.cell; }));\r\n j++;\r\n }\r\n }\r\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\r\n finally {\r\n try {\r\n if (_d && !_d.done && (_a = _c.return)) _a.call(_c);\r\n }\r\n finally { if (e_1) throw e_1.error; }\r\n }\r\n return res;\r\n}\r\nexports.toUnitTable = toUnitTable;\r\nfunction findCellAddress(cell, table) {\r\n var row = cell.closest(\"tr\");\r\n var rowIndex = getBodyRowIndex(row);\r\n var cells = table[rowIndex];\r\n var cellIndex = cells.findIndex(function (p) { return p === cell; });\r\n return {\r\n td: cell,\r\n i: rowIndex,\r\n j: cellIndex\r\n };\r\n}\r\nexports.findCellAddress = findCellAddress;\r\nfunction getBodyRowIndex(row) {\r\n var skip = 0;\r\n var thead = row.closest(\"table\").tHead;\r\n if (thead) {\r\n skip += thead.rows.length;\r\n }\r\n return row.rowIndex - skip;\r\n}\r\n","var baseGet = require('./_baseGet');\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n","var debounce = require('./debounce'),\n isObject = require('./isObject');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n}\n\nmodule.exports = throttle;\n","import \"core-js/es/object\"\r\nimport \"core-js/es/array\"\r\nimport \"core-js/es/number\"\r\nimport \"core-js/es/date\"\r\nimport \"core-js/es/promise\"\r\nimport \"core-js/es/map\"\r\nimport \"core-js/es/set\"\r\nimport \"core-js/es/function/name\"\r\nimport \"core-js/es/function/bind\"\r\nimport \"core-js/es/string/includes\"\r\nimport \"core-js/es/string/starts-with\"\r\nimport \"core-js/es/string/ends-with\"\r\nimport \"core-js/es/string/trim\"\r\nimport \"core-js/es/math/trunc\"\r\nimport \"core-js/web/dom-collections\"\r\n\r\nif (!window.document.baseURI) {\r\n (window.document as any).baseURI = window.document.querySelector(\"base\").href;\r\n}\r\n\r\nif (window.localStorage) {\r\n try {\r\n localStorage.setItem(\"_\", \"\");\r\n localStorage.removeItem(\"_\");\r\n } catch (ex) {\r\n console.debug(\"Local Storage is unavailable in this browser. Applying shim to globally suppress errors.\")\r\n localStorage.setItem = () => {};\r\n localStorage.getItem = () => null;\r\n localStorage.clear = () => {};\r\n localStorage.key = () => null;\r\n }\r\n}\r\n\r\nif (window.sessionStorage) {\r\n try {\r\n sessionStorage.setItem(\"_\", \"\");\r\n sessionStorage.removeItem(\"_\");\r\n } catch (ex) {\r\n console.debug(\"Session Storage is unavailable in this browser. Applying shim to globally suppress errors.\")\r\n sessionStorage.setItem = () => {};\r\n sessionStorage.getItem = () => null;\r\n sessionStorage.clear = () => {};\r\n sessionStorage.key = () => null;\r\n }\r\n}\r\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a != 7;\n});\n","var global = require('../internals/global');\nvar setGlobal = require('../internals/set-global');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || setGlobal(SHARED, {});\n\nmodule.exports = store;\n","var getBuiltIn = require('../internals/get-built-in');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys;\n};\n","var has = require('../internals/has');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !has(hiddenKeys, key) && has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~indexOf(result, key) || result.push(key);\n }\n return result;\n};\n","var NATIVE_SYMBOL = require('../internals/native-symbol');\n\nmodule.exports = NATIVE_SYMBOL\n // eslint-disable-next-line no-undef\n && !Symbol.sham\n // eslint-disable-next-line no-undef\n && typeof Symbol.iterator == 'symbol';\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar anObject = require('../internals/an-object');\nvar objectKeys = require('../internals/object-keys');\n\n// `Object.defineProperties` method\n// https://tc39.github.io/ecma262/#sec-object.defineproperties\nmodule.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = objectKeys(Properties);\n var length = keys.length;\n var index = 0;\n var key;\n while (length > index) definePropertyModule.f(O, key = keys[index++], Properties[key]);\n return O;\n};\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n","var toIndexedObject = require('../internals/to-indexed-object');\nvar nativeGetOwnPropertyNames = require('../internals/object-get-own-property-names').f;\n\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return nativeGetOwnPropertyNames(it);\n } catch (error) {\n return windowNames.slice();\n }\n};\n\n// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]'\n ? getWindowNames(it)\n : nativeGetOwnPropertyNames(toIndexedObject(it));\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nexports.f = wellKnownSymbol;\n","var DESCRIPTORS = require('../internals/descriptors');\nvar objectKeys = require('../internals/object-keys');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar propertyIsEnumerable = require('../internals/object-property-is-enumerable').f;\n\n// `Object.{ entries, values }` methods implementation\nvar createMethod = function (TO_ENTRIES) {\n return function (it) {\n var O = toIndexedObject(it);\n var keys = objectKeys(O);\n var length = keys.length;\n var i = 0;\n var result = [];\n var key;\n while (length > i) {\n key = keys[i++];\n if (!DESCRIPTORS || propertyIsEnumerable.call(O, key)) {\n result.push(TO_ENTRIES ? [key, O[key]] : O[key]);\n }\n }\n return result;\n };\n};\n\nmodule.exports = {\n // `Object.entries` method\n // https://tc39.github.io/ecma262/#sec-object.entries\n entries: createMethod(true),\n // `Object.values` method\n // https://tc39.github.io/ecma262/#sec-object.values\n values: createMethod(false)\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n","var classof = require('../internals/classof');\nvar Iterators = require('../internals/iterators');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n","var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag\n // builtinTag case\n : CORRECT_ARGUMENTS ? classofRaw(O)\n // ES3 arguments fallback\n : (result = classofRaw(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : result;\n};\n","var anObject = require('../internals/an-object');\n\n// call something on iterator step with safe closing on error\nmodule.exports = function (iterator, fn, value, ENTRIES) {\n try {\n return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (error) {\n var returnMethod = iterator['return'];\n if (returnMethod !== undefined) anObject(returnMethod.call(iterator));\n throw error;\n }\n};\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n function F() { /* empty */ }\n F.prototype.constructor = null;\n return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n","'use strict';\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar has = require('../internals/has');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\nvar returnThis = function () { return this; };\n\n// `%IteratorPrototype%` object\n// https://tc39.github.io/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\nif ([].keys) {\n arrayIterator = [].keys();\n // Safari 8 has buggy iterators w/o `next`\n if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n else {\n PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n }\n}\n\nif (IteratorPrototype == undefined) IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nif (!IS_PURE && !has(IteratorPrototype, ITERATOR)) {\n createNonEnumerableProperty(IteratorPrototype, ITERATOR, returnThis);\n}\n\nmodule.exports = {\n IteratorPrototype: IteratorPrototype,\n BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('navigator', 'userAgent') || '';\n","'use strict';\nvar isArray = require('../internals/is-array');\nvar toLength = require('../internals/to-length');\nvar bind = require('../internals/function-bind-context');\n\n// `FlattenIntoArray` abstract operation\n// https://tc39.github.io/proposal-flatMap/#sec-FlattenIntoArray\nvar flattenIntoArray = function (target, original, source, sourceLen, start, depth, mapper, thisArg) {\n var targetIndex = start;\n var sourceIndex = 0;\n var mapFn = mapper ? bind(mapper, thisArg, 3) : false;\n var element;\n\n while (sourceIndex < sourceLen) {\n if (sourceIndex in source) {\n element = mapFn ? mapFn(source[sourceIndex], sourceIndex, original) : source[sourceIndex];\n\n if (depth > 0 && isArray(element)) {\n targetIndex = flattenIntoArray(target, original, element, toLength(element.length), targetIndex, depth - 1) - 1;\n } else {\n if (targetIndex >= 0x1FFFFFFFFFFFFF) throw TypeError('Exceed the acceptable array length');\n target[targetIndex] = element;\n }\n\n targetIndex++;\n }\n sourceIndex++;\n }\n return targetIndex;\n};\n\nmodule.exports = flattenIntoArray;\n","'use strict';\nvar $forEach = require('../internals/array-iteration').forEach;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar STRICT_METHOD = arrayMethodIsStrict('forEach');\nvar USES_TO_LENGTH = arrayMethodUsesToLength('forEach');\n\n// `Array.prototype.forEach` method implementation\n// https://tc39.github.io/ecma262/#sec-array.prototype.foreach\nmodule.exports = (!STRICT_METHOD || !USES_TO_LENGTH) ? function forEach(callbackfn /* , thisArg */) {\n return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n} : [].forEach;\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar Iterators = require('../internals/iterators');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/define-iterator');\n\nvar ARRAY_ITERATOR = 'Array Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);\n\n// `Array.prototype.entries` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.entries\n// `Array.prototype.keys` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.keys\n// `Array.prototype.values` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.values\n// `Array.prototype[@@iterator]` method\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@iterator\n// `CreateArrayIterator` internal method\n// https://tc39.github.io/ecma262/#sec-createarrayiterator\nmodule.exports = defineIterator(Array, 'Array', function (iterated, kind) {\n setInternalState(this, {\n type: ARRAY_ITERATOR,\n target: toIndexedObject(iterated), // target\n index: 0, // next index\n kind: kind // kind\n });\n// `%ArrayIteratorPrototype%.next` method\n// https://tc39.github.io/ecma262/#sec-%arrayiteratorprototype%.next\n}, function () {\n var state = getInternalState(this);\n var target = state.target;\n var kind = state.kind;\n var index = state.index++;\n if (!target || index >= target.length) {\n state.target = undefined;\n return { value: undefined, done: true };\n }\n if (kind == 'keys') return { value: index, done: false };\n if (kind == 'values') return { value: target[index], done: false };\n return { value: [index, target[index]], done: false };\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values%\n// https://tc39.github.io/ecma262/#sec-createunmappedargumentsobject\n// https://tc39.github.io/ecma262/#sec-createmappedargumentsobject\nIterators.Arguments = Iterators.Array;\n\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n","var aFunction = require('../internals/a-function');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\nvar toLength = require('../internals/to-length');\n\n// `Array.prototype.{ reduce, reduceRight }` methods implementation\nvar createMethod = function (IS_RIGHT) {\n return function (that, callbackfn, argumentsLength, memo) {\n aFunction(callbackfn);\n var O = toObject(that);\n var self = IndexedObject(O);\n var length = toLength(O.length);\n var index = IS_RIGHT ? length - 1 : 0;\n var i = IS_RIGHT ? -1 : 1;\n if (argumentsLength < 2) while (true) {\n if (index in self) {\n memo = self[index];\n index += i;\n break;\n }\n index += i;\n if (IS_RIGHT ? index < 0 : length <= index) {\n throw TypeError('Reduce of empty array with no initial value');\n }\n }\n for (;IS_RIGHT ? index >= 0 : length > index; index += i) if (index in self) {\n memo = callbackfn(memo, self[index], index, O);\n }\n return memo;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.reduce` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.reduce\n left: createMethod(false),\n // `Array.prototype.reduceRight` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.reduceright\n right: createMethod(true)\n};\n","var isObject = require('../internals/is-object');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\n\n// makes subclassing work correct for wrapped built-ins\nmodule.exports = function ($this, dummy, Wrapper) {\n var NewTarget, NewTargetPrototype;\n if (\n // it can work only with native `setPrototypeOf`\n setPrototypeOf &&\n // we haven't completely correct pre-ES6 way for getting `new.target`, so use this\n typeof (NewTarget = dummy.constructor) == 'function' &&\n NewTarget !== Wrapper &&\n isObject(NewTargetPrototype = NewTarget.prototype) &&\n NewTargetPrototype !== Wrapper.prototype\n ) setPrototypeOf($this, NewTargetPrototype);\n return $this;\n};\n","var isObject = require('../internals/is-object');\n\nvar floor = Math.floor;\n\n// `Number.isInteger` method implementation\n// https://tc39.github.io/ecma262/#sec-number.isinteger\nmodule.exports = function isInteger(it) {\n return !isObject(it) && isFinite(it) && floor(it) === it;\n};\n","var classof = require('../internals/classof-raw');\n\n// `thisNumberValue` abstract operation\n// https://tc39.github.io/ecma262/#sec-thisnumbervalue\nmodule.exports = function (value) {\n if (typeof value != 'number' && classof(value) != 'Number') {\n throw TypeError('Incorrect invocation');\n }\n return +value;\n};\n","'use strict';\nvar toInteger = require('../internals/to-integer');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `String.prototype.repeat` method implementation\n// https://tc39.github.io/ecma262/#sec-string.prototype.repeat\nmodule.exports = ''.repeat || function repeat(count) {\n var str = String(requireObjectCoercible(this));\n var result = '';\n var n = toInteger(count);\n if (n < 0 || n == Infinity) throw RangeError('Wrong number of repetitions');\n for (;n > 0; (n >>>= 1) && (str += str)) if (n & 1) result += str;\n return result;\n};\n","// iterable DOM collections\n// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods\nmodule.exports = {\n CSSRuleList: 0,\n CSSStyleDeclaration: 0,\n CSSValueList: 0,\n ClientRectList: 0,\n DOMRectList: 0,\n DOMStringList: 0,\n DOMTokenList: 1,\n DataTransferItemList: 0,\n FileList: 0,\n HTMLAllCollection: 0,\n HTMLCollection: 0,\n HTMLFormElement: 0,\n HTMLSelectElement: 0,\n MediaList: 0,\n MimeTypeArray: 0,\n NamedNodeMap: 0,\n NodeList: 1,\n PaintRequestList: 0,\n Plugin: 0,\n PluginArray: 0,\n SVGLengthList: 0,\n SVGNumberList: 0,\n SVGPathSegList: 0,\n SVGPointList: 0,\n SVGStringList: 0,\n SVGTransformList: 0,\n SourceBufferList: 0,\n StyleSheetList: 0,\n TextTrackCueList: 0,\n TextTrackList: 0,\n TouchList: 0\n};\n","var global = require('../internals/global');\n\nmodule.exports = global.Promise;\n","var redefine = require('../internals/redefine');\n\nmodule.exports = function (target, src, options) {\n for (var key in src) redefine(target, key, src[key], options);\n return target;\n};\n","var anObject = require('../internals/an-object');\nvar aFunction = require('../internals/a-function');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `SpeciesConstructor` abstract operation\n// https://tc39.github.io/ecma262/#sec-speciesconstructor\nmodule.exports = function (O, defaultConstructor) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? defaultConstructor : aFunction(S);\n};\n","var global = require('../internals/global');\nvar fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\nvar bind = require('../internals/function-bind-context');\nvar html = require('../internals/html');\nvar createElement = require('../internals/document-create-element');\nvar IS_IOS = require('../internals/engine-is-ios');\n\nvar location = global.location;\nvar set = global.setImmediate;\nvar clear = global.clearImmediate;\nvar process = global.process;\nvar MessageChannel = global.MessageChannel;\nvar Dispatch = global.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar defer, channel, port;\n\nvar run = function (id) {\n // eslint-disable-next-line no-prototype-builtins\n if (queue.hasOwnProperty(id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\n\nvar runner = function (id) {\n return function () {\n run(id);\n };\n};\n\nvar listener = function (event) {\n run(event.data);\n};\n\nvar post = function (id) {\n // old engines have not location.origin\n global.postMessage(id + '', location.protocol + '//' + location.host);\n};\n\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!set || !clear) {\n set = function setImmediate(fn) {\n var args = [];\n var i = 1;\n while (arguments.length > i) args.push(arguments[i++]);\n queue[++counter] = function () {\n // eslint-disable-next-line no-new-func\n (typeof fn == 'function' ? fn : Function(fn)).apply(undefined, args);\n };\n defer(counter);\n return counter;\n };\n clear = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (classof(process) == 'process') {\n defer = function (id) {\n process.nextTick(runner(id));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(runner(id));\n };\n // Browsers with MessageChannel, includes WebWorkers\n // except iOS - https://github.com/zloirock/core-js/issues/624\n } else if (MessageChannel && !IS_IOS) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = bind(port.postMessage, port, 1);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (\n global.addEventListener &&\n typeof postMessage == 'function' &&\n !global.importScripts &&\n !fails(post) &&\n location.protocol !== 'file:'\n ) {\n defer = post;\n global.addEventListener('message', listener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in createElement('script')) {\n defer = function (id) {\n html.appendChild(createElement('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(runner(id), 0);\n };\n }\n}\n\nmodule.exports = {\n set: set,\n clear: clear\n};\n","var userAgent = require('../internals/engine-user-agent');\n\nmodule.exports = /(iphone|ipod|ipad).*applewebkit/i.test(userAgent);\n","var anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar newPromiseCapability = require('../internals/new-promise-capability');\n\nmodule.exports = function (C, x) {\n anObject(C);\n if (isObject(x) && x.constructor === C) return x;\n var promiseCapability = newPromiseCapability.f(C);\n var resolve = promiseCapability.resolve;\n resolve(x);\n return promiseCapability.promise;\n};\n","module.exports = function (exec) {\n try {\n return { error: false, value: exec() };\n } catch (error) {\n return { error: true, value: error };\n }\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar isForced = require('../internals/is-forced');\nvar redefine = require('../internals/redefine');\nvar InternalMetadataModule = require('../internals/internal-metadata');\nvar iterate = require('../internals/iterate');\nvar anInstance = require('../internals/an-instance');\nvar isObject = require('../internals/is-object');\nvar fails = require('../internals/fails');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar inheritIfRequired = require('../internals/inherit-if-required');\n\nmodule.exports = function (CONSTRUCTOR_NAME, wrapper, common) {\n var IS_MAP = CONSTRUCTOR_NAME.indexOf('Map') !== -1;\n var IS_WEAK = CONSTRUCTOR_NAME.indexOf('Weak') !== -1;\n var ADDER = IS_MAP ? 'set' : 'add';\n var NativeConstructor = global[CONSTRUCTOR_NAME];\n var NativePrototype = NativeConstructor && NativeConstructor.prototype;\n var Constructor = NativeConstructor;\n var exported = {};\n\n var fixMethod = function (KEY) {\n var nativeMethod = NativePrototype[KEY];\n redefine(NativePrototype, KEY,\n KEY == 'add' ? function add(value) {\n nativeMethod.call(this, value === 0 ? 0 : value);\n return this;\n } : KEY == 'delete' ? function (key) {\n return IS_WEAK && !isObject(key) ? false : nativeMethod.call(this, key === 0 ? 0 : key);\n } : KEY == 'get' ? function get(key) {\n return IS_WEAK && !isObject(key) ? undefined : nativeMethod.call(this, key === 0 ? 0 : key);\n } : KEY == 'has' ? function has(key) {\n return IS_WEAK && !isObject(key) ? false : nativeMethod.call(this, key === 0 ? 0 : key);\n } : function set(key, value) {\n nativeMethod.call(this, key === 0 ? 0 : key, value);\n return this;\n }\n );\n };\n\n // eslint-disable-next-line max-len\n if (isForced(CONSTRUCTOR_NAME, typeof NativeConstructor != 'function' || !(IS_WEAK || NativePrototype.forEach && !fails(function () {\n new NativeConstructor().entries().next();\n })))) {\n // create collection constructor\n Constructor = common.getConstructor(wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER);\n InternalMetadataModule.REQUIRED = true;\n } else if (isForced(CONSTRUCTOR_NAME, true)) {\n var instance = new Constructor();\n // early implementations not supports chaining\n var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance;\n // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false\n var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); });\n // most early implementations doesn't supports iterables, most modern - not close it correctly\n // eslint-disable-next-line no-new\n var ACCEPT_ITERABLES = checkCorrectnessOfIteration(function (iterable) { new NativeConstructor(iterable); });\n // for early implementations -0 and +0 not the same\n var BUGGY_ZERO = !IS_WEAK && fails(function () {\n // V8 ~ Chromium 42- fails only with 5+ elements\n var $instance = new NativeConstructor();\n var index = 5;\n while (index--) $instance[ADDER](index, index);\n return !$instance.has(-0);\n });\n\n if (!ACCEPT_ITERABLES) {\n Constructor = wrapper(function (dummy, iterable) {\n anInstance(dummy, Constructor, CONSTRUCTOR_NAME);\n var that = inheritIfRequired(new NativeConstructor(), dummy, Constructor);\n if (iterable != undefined) iterate(iterable, that[ADDER], that, IS_MAP);\n return that;\n });\n Constructor.prototype = NativePrototype;\n NativePrototype.constructor = Constructor;\n }\n\n if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {\n fixMethod('delete');\n fixMethod('has');\n IS_MAP && fixMethod('get');\n }\n\n if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);\n\n // weak collections should not contains .clear method\n if (IS_WEAK && NativePrototype.clear) delete NativePrototype.clear;\n }\n\n exported[CONSTRUCTOR_NAME] = Constructor;\n $({ global: true, forced: Constructor != NativeConstructor }, exported);\n\n setToStringTag(Constructor, CONSTRUCTOR_NAME);\n\n if (!IS_WEAK) common.setStrong(Constructor, CONSTRUCTOR_NAME, IS_MAP);\n\n return Constructor;\n};\n","'use strict';\nvar defineProperty = require('../internals/object-define-property').f;\nvar create = require('../internals/object-create');\nvar redefineAll = require('../internals/redefine-all');\nvar bind = require('../internals/function-bind-context');\nvar anInstance = require('../internals/an-instance');\nvar iterate = require('../internals/iterate');\nvar defineIterator = require('../internals/define-iterator');\nvar setSpecies = require('../internals/set-species');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fastKey = require('../internals/internal-metadata').fastKey;\nvar InternalStateModule = require('../internals/internal-state');\n\nvar setInternalState = InternalStateModule.set;\nvar internalStateGetterFor = InternalStateModule.getterFor;\n\nmodule.exports = {\n getConstructor: function (wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, CONSTRUCTOR_NAME);\n setInternalState(that, {\n type: CONSTRUCTOR_NAME,\n index: create(null),\n first: undefined,\n last: undefined,\n size: 0\n });\n if (!DESCRIPTORS) that.size = 0;\n if (iterable != undefined) iterate(iterable, that[ADDER], that, IS_MAP);\n });\n\n var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME);\n\n var define = function (that, key, value) {\n var state = getInternalState(that);\n var entry = getEntry(that, key);\n var previous, index;\n // change existing entry\n if (entry) {\n entry.value = value;\n // create new entry\n } else {\n state.last = entry = {\n index: index = fastKey(key, true),\n key: key,\n value: value,\n previous: previous = state.last,\n next: undefined,\n removed: false\n };\n if (!state.first) state.first = entry;\n if (previous) previous.next = entry;\n if (DESCRIPTORS) state.size++;\n else that.size++;\n // add to index\n if (index !== 'F') state.index[index] = entry;\n } return that;\n };\n\n var getEntry = function (that, key) {\n var state = getInternalState(that);\n // fast case\n var index = fastKey(key);\n var entry;\n if (index !== 'F') return state.index[index];\n // frozen object case\n for (entry = state.first; entry; entry = entry.next) {\n if (entry.key == key) return entry;\n }\n };\n\n redefineAll(C.prototype, {\n // 23.1.3.1 Map.prototype.clear()\n // 23.2.3.2 Set.prototype.clear()\n clear: function clear() {\n var that = this;\n var state = getInternalState(that);\n var data = state.index;\n var entry = state.first;\n while (entry) {\n entry.removed = true;\n if (entry.previous) entry.previous = entry.previous.next = undefined;\n delete data[entry.index];\n entry = entry.next;\n }\n state.first = state.last = undefined;\n if (DESCRIPTORS) state.size = 0;\n else that.size = 0;\n },\n // 23.1.3.3 Map.prototype.delete(key)\n // 23.2.3.4 Set.prototype.delete(value)\n 'delete': function (key) {\n var that = this;\n var state = getInternalState(that);\n var entry = getEntry(that, key);\n if (entry) {\n var next = entry.next;\n var prev = entry.previous;\n delete state.index[entry.index];\n entry.removed = true;\n if (prev) prev.next = next;\n if (next) next.previous = prev;\n if (state.first == entry) state.first = next;\n if (state.last == entry) state.last = prev;\n if (DESCRIPTORS) state.size--;\n else that.size--;\n } return !!entry;\n },\n // 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined)\n // 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined)\n forEach: function forEach(callbackfn /* , that = undefined */) {\n var state = getInternalState(this);\n var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);\n var entry;\n while (entry = entry ? entry.next : state.first) {\n boundFunction(entry.value, entry.key, this);\n // revert to the last existing entry\n while (entry && entry.removed) entry = entry.previous;\n }\n },\n // 23.1.3.7 Map.prototype.has(key)\n // 23.2.3.7 Set.prototype.has(value)\n has: function has(key) {\n return !!getEntry(this, key);\n }\n });\n\n redefineAll(C.prototype, IS_MAP ? {\n // 23.1.3.6 Map.prototype.get(key)\n get: function get(key) {\n var entry = getEntry(this, key);\n return entry && entry.value;\n },\n // 23.1.3.9 Map.prototype.set(key, value)\n set: function set(key, value) {\n return define(this, key === 0 ? 0 : key, value);\n }\n } : {\n // 23.2.3.1 Set.prototype.add(value)\n add: function add(value) {\n return define(this, value = value === 0 ? 0 : value, value);\n }\n });\n if (DESCRIPTORS) defineProperty(C.prototype, 'size', {\n get: function () {\n return getInternalState(this).size;\n }\n });\n return C;\n },\n setStrong: function (C, CONSTRUCTOR_NAME, IS_MAP) {\n var ITERATOR_NAME = CONSTRUCTOR_NAME + ' Iterator';\n var getInternalCollectionState = internalStateGetterFor(CONSTRUCTOR_NAME);\n var getInternalIteratorState = internalStateGetterFor(ITERATOR_NAME);\n // add .keys, .values, .entries, [@@iterator]\n // 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11\n defineIterator(C, CONSTRUCTOR_NAME, function (iterated, kind) {\n setInternalState(this, {\n type: ITERATOR_NAME,\n target: iterated,\n state: getInternalCollectionState(iterated),\n kind: kind,\n last: undefined\n });\n }, function () {\n var state = getInternalIteratorState(this);\n var kind = state.kind;\n var entry = state.last;\n // revert to the last existing entry\n while (entry && entry.removed) entry = entry.previous;\n // get next entry\n if (!state.target || !(state.last = entry = entry ? entry.next : state.state.first)) {\n // or finish the iteration\n state.target = undefined;\n return { value: undefined, done: true };\n }\n // return step by kind\n if (kind == 'keys') return { value: entry.key, done: false };\n if (kind == 'values') return { value: entry.value, done: false };\n return { value: [entry.key, entry.value], done: false };\n }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);\n\n // add [@@species], 23.1.2.2, 23.2.2.2\n setSpecies(CONSTRUCTOR_NAME);\n }\n};\n","\"use strict\";\n\n// eslint-disable-next-line func-names\nmodule.exports = function () {\n if (typeof globalThis === 'object') {\n return globalThis;\n }\n\n var g;\n\n try {\n // This works if eval is allowed (see CSP)\n // eslint-disable-next-line no-new-func\n g = this || new Function('return this')();\n } catch (e) {\n // This works if the window reference is available\n if (typeof window === 'object') {\n return window;\n } // This works if the self reference is available\n\n\n if (typeof self === 'object') {\n return self;\n } // This works if the global reference is available\n\n\n if (typeof global !== 'undefined') {\n return global;\n }\n }\n\n return g;\n}();","/* angular-moment.js / v1.3.0 / (c) 2013, 2014, 2015, 2016, 2017, 2018 Uri Shaked / MIT Licence */\n\n'format amd';\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tfunction isUndefinedOrNull(val) {\n\t\treturn angular.isUndefined(val) || val === null;\n\t}\n\n\tfunction requireMoment() {\n\t\ttry {\n\t\t\treturn require('moment'); // Using nw.js or browserify?\n\t\t} catch (e) {\n\t\t\tthrow new Error('Please install moment via npm. Please reference to: https://github.com/urish/angular-moment'); // Add wiki/troubleshooting section?\n\t\t}\n\t}\n\n\tfunction angularMoment(angular, moment) {\n\n\t\tif(typeof moment === 'undefined') {\n\t\t\tif(typeof require === 'function') {\n\t\t\t\tmoment = requireMoment();\n\t\t\t}else{\n\t\t\t\tthrow new Error('Moment cannot be found by angular-moment! Please reference to: https://github.com/urish/angular-moment'); // Add wiki/troubleshooting section?\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * @ngdoc overview\n\t\t * @name angularMoment\n\t\t *\n\t\t * @description\n\t\t * angularMoment module provides moment.js functionality for angular.js apps.\n\t\t */\n\t\tangular.module('angularMoment', [])\n\n\t\t/**\n\t\t * @ngdoc object\n\t\t * @name angularMoment.config:angularMomentConfig\n\t\t *\n\t\t * @description\n\t\t * Common configuration of the angularMoment module\n\t\t */\n\t\t\t.constant('angularMomentConfig', {\n\t\t\t\t/**\n\t\t\t\t * @ngdoc property\n\t\t\t\t * @name angularMoment.config.angularMomentConfig#preprocess\n\t\t\t\t * @propertyOf angularMoment.config:angularMomentConfig\n\t\t\t\t * @returns {function} A preprocessor function that will be applied on all incoming dates\n\t\t\t\t *\n\t\t\t\t * @description\n\t\t\t\t * Defines a preprocessor function to apply on all input dates (e.g. the input of `am-time-ago`,\n\t\t\t\t * `amCalendar`, etc.). The function must return a `moment` object.\n\t\t\t\t *\n\t\t\t\t * @example\n\t\t\t\t * // Causes angular-moment to always treat the input values as unix timestamps\n\t\t\t\t * angularMomentConfig.preprocess = function(value) {\n\t\t\t\t * \t return moment.unix(value);\n\t\t\t\t * }\n\t\t\t\t */\n\t\t\t\tpreprocess: null,\n\n\t\t\t\t/**\n\t\t\t\t * @ngdoc property\n\t\t\t\t * @name angularMoment.config.angularMomentConfig#timezone\n\t\t\t\t * @propertyOf angularMoment.config:angularMomentConfig\n\t\t\t\t * @returns {string} The default timezone\n\t\t\t\t *\n\t\t\t\t * @description\n\t\t\t\t * The default timezone (e.g. 'Europe/London'). Empty string by default (does not apply\n\t\t\t\t * any timezone shift).\n\t\t\t\t *\n\t\t\t\t * NOTE: This option requires moment-timezone >= 0.3.0.\n\t\t\t\t */\n\t\t\t\ttimezone: null,\n\n\t\t\t\t/**\n\t\t\t\t * @ngdoc property\n\t\t\t\t * @name angularMoment.config.angularMomentConfig#format\n\t\t\t\t * @propertyOf angularMoment.config:angularMomentConfig\n\t\t\t\t * @returns {string} The pre-conversion format of the date\n\t\t\t\t *\n\t\t\t\t * @description\n\t\t\t\t * Specify the format of the input date. Essentially it's a\n\t\t\t\t * default and saves you from specifying a format in every\n\t\t\t\t * element. Overridden by element attr. Null by default.\n\t\t\t\t */\n\t\t\t\tformat: null,\n\n\t\t\t\t/**\n\t\t\t\t * @ngdoc property\n\t\t\t\t * @name angularMoment.config.angularMomentConfig#statefulFilters\n\t\t\t\t * @propertyOf angularMoment.config:angularMomentConfig\n\t\t\t\t * @returns {boolean} Whether angular-moment filters should be stateless (or not)\n\t\t\t\t *\n\t\t\t\t * @description\n\t\t\t\t * Specifies whether the filters included with angular-moment are stateful.\n\t\t\t\t * Stateful filters will automatically re-evaluate whenever you change the timezone\n\t\t\t\t * or locale settings, but may negatively impact performance. true by default.\n\t\t\t\t */\n\t\t\t\tstatefulFilters: true\n\t\t\t})\n\n\t\t/**\n\t\t * @ngdoc object\n\t\t * @name angularMoment.object:moment\n\t\t *\n\t\t * @description\n\t\t * moment global (as provided by the moment.js library)\n\t\t */\n\t\t\t.constant('moment', moment)\n\n\t\t/**\n\t\t * @ngdoc object\n\t\t * @name angularMoment.config:amTimeAgoConfig\n\t\t * @module angularMoment\n\t\t *\n\t\t * @description\n\t\t * configuration specific to the amTimeAgo directive\n\t\t */\n\t\t\t.constant('amTimeAgoConfig', {\n\t\t\t\t/**\n\t\t\t\t * @ngdoc property\n\t\t\t\t * @name angularMoment.config.amTimeAgoConfig#withoutSuffix\n\t\t\t\t * @propertyOf angularMoment.config:amTimeAgoConfig\n\t\t\t\t * @returns {boolean} Whether to include a suffix in am-time-ago directive\n\t\t\t\t *\n\t\t\t\t * @description\n\t\t\t\t * Defaults to false.\n\t\t\t\t */\n\t\t\t\twithoutSuffix: false,\n\n\t\t\t\t/**\n\t\t\t\t * @ngdoc property\n\t\t\t\t * @name angularMoment.config.amTimeAgoConfig#serverTime\n\t\t\t\t * @propertyOf angularMoment.config:amTimeAgoConfig\n\t\t\t\t * @returns {number} Server time in milliseconds since the epoch\n\t\t\t\t *\n\t\t\t\t * @description\n\t\t\t\t * If set, time ago will be calculated relative to the given value.\n\t\t\t\t * If null, local time will be used. Defaults to null.\n\t\t\t\t */\n\t\t\t\tserverTime: null,\n\n\t\t\t\t/**\n\t\t\t\t * @ngdoc property\n\t\t\t\t * @name angularMoment.config.amTimeAgoConfig#titleFormat\n\t\t\t\t * @propertyOf angularMoment.config:amTimeAgoConfig\n\t\t\t\t * @returns {string} The format of the date to be displayed in the title of the element. If null,\n\t\t\t\t * the directive set the title of the element.\n\t\t\t\t *\n\t\t\t\t * @description\n\t\t\t\t * The format of the date used for the title of the element. null by default.\n\t\t\t\t */\n\t\t\t\ttitleFormat: null,\n\n\t\t\t\t/**\n\t\t\t\t * @ngdoc property\n\t\t\t\t * @name angularMoment.config.amTimeAgoConfig#fullDateThreshold\n\t\t\t\t * @propertyOf angularMoment.config:amTimeAgoConfig\n\t\t\t\t * @returns {number} The minimum number of days for showing a full date instead of relative time\n\t\t\t\t *\n\t\t\t\t * @description\n\t\t\t\t * The threshold for displaying a full date. The default is null, which means the date will always\n\t\t\t\t * be relative, and full date will never be displayed.\n\t\t\t\t */\n\t\t\t\tfullDateThreshold: null,\n\n\t\t\t\t/**\n\t\t\t\t * @ngdoc property\n\t\t\t\t * @name angularMoment.config.amTimeAgoConfig#fullDateFormat\n\t\t\t\t * @propertyOf angularMoment.config:amTimeAgoConfig\n\t\t\t\t * @returns {string} The format to use when displaying a full date.\n\t\t\t\t *\n\t\t\t\t * @description\n\t\t\t\t * Specify the format of the date when displayed as full date. null by default.\n\t\t\t\t */\n\t\t\t\tfullDateFormat: null,\n\n\t\t\t\tfullDateThresholdUnit: 'day'\n\t\t\t})\n\n\t\t/**\n\t\t * @ngdoc directive\n\t\t * @name angularMoment.directive:amTimeAgo\n\t\t * @module angularMoment\n\t\t *\n\t\t * @restrict A\n\t\t */\n\t\t\t.directive('amTimeAgo', ['$window', 'moment', 'amMoment', 'amTimeAgoConfig', function ($window, moment, amMoment, amTimeAgoConfig) {\n\n\t\t\t\treturn function (scope, element, attr) {\n\t\t\t\t\tvar activeTimeout = null;\n\t\t\t\t\tvar currentValue;\n\t\t\t\t\tvar withoutSuffix = amTimeAgoConfig.withoutSuffix;\n\t\t\t\t\tvar titleFormat = amTimeAgoConfig.titleFormat;\n\t\t\t\t\tvar fullDateThreshold = amTimeAgoConfig.fullDateThreshold;\n\t\t\t\t\tvar fullDateFormat = amTimeAgoConfig.fullDateFormat;\n\t\t\t\t\tvar fullDateThresholdUnit = amTimeAgoConfig.fullDateThresholdUnit;\n\n\t\t\t\t\tvar localDate = new Date().getTime();\n\t\t\t\t\tvar modelName = attr.amTimeAgo;\n\t\t\t\t\tvar currentFrom;\n\t\t\t\t\tvar isTimeElement = ('TIME' === element[0].nodeName.toUpperCase());\n\t\t\t\t\tvar setTitleTime = !element.attr('title');\n\n\t\t\t\t\tfunction getNow() {\n\t\t\t\t\t\tvar now;\n\t\t\t\t\t\tif (currentFrom) {\n\t\t\t\t\t\t\tnow = currentFrom;\n\t\t\t\t\t\t} else if (amTimeAgoConfig.serverTime) {\n\t\t\t\t\t\t\tvar localNow = new Date().getTime();\n\t\t\t\t\t\t\tvar nowMillis = localNow - localDate + amTimeAgoConfig.serverTime;\n\t\t\t\t\t\t\tnow = moment(nowMillis);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tnow = moment();\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn now;\n\t\t\t\t\t}\n\n\t\t\t\t\tfunction cancelTimer() {\n\t\t\t\t\t\tif (activeTimeout) {\n\t\t\t\t\t\t\t$window.clearTimeout(activeTimeout);\n\t\t\t\t\t\t\tactiveTimeout = null;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tfunction updateTime(momentInstance) {\n\t\t\t\t\t\tvar timeAgo = getNow().diff(momentInstance, fullDateThresholdUnit);\n\t\t\t\t\t\tvar showFullDate = fullDateThreshold && timeAgo >= fullDateThreshold;\n\n\t\t\t\t\t\tif (showFullDate) {\n\t\t\t\t\t\t\telement.text(momentInstance.format(fullDateFormat));\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\telement.text(momentInstance.from(getNow(), withoutSuffix));\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (titleFormat && setTitleTime) {\n\t\t\t\t\t\t\telement.attr('title', momentInstance.format(titleFormat));\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (!showFullDate) {\n\t\t\t\t\t\t\tvar howOld = Math.abs(getNow().diff(momentInstance, 'minute'));\n\t\t\t\t\t\t\tvar secondsUntilUpdate = 3600;\n\t\t\t\t\t\t\tif (howOld < 1) {\n\t\t\t\t\t\t\t\tsecondsUntilUpdate = 1;\n\t\t\t\t\t\t\t} else if (howOld < 60) {\n\t\t\t\t\t\t\t\tsecondsUntilUpdate = 30;\n\t\t\t\t\t\t\t} else if (howOld < 180) {\n\t\t\t\t\t\t\t\tsecondsUntilUpdate = 300;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tactiveTimeout = $window.setTimeout(function () {\n\t\t\t\t\t\t\t\tupdateTime(momentInstance);\n\t\t\t\t\t\t\t}, secondsUntilUpdate * 1000);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tfunction updateDateTimeAttr(value) {\n\t\t\t\t\t\tif (isTimeElement) {\n\t\t\t\t\t\t\telement.attr('datetime', value);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tfunction updateMoment() {\n\t\t\t\t\t\tcancelTimer();\n\t\t\t\t\t\tif (currentValue) {\n\t\t\t\t\t\t\tvar momentValue = amMoment.preprocessDate(currentValue);\n\t\t\t\t\t\t\tupdateTime(momentValue);\n\t\t\t\t\t\t\tupdateDateTimeAttr(momentValue.toISOString());\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tscope.$watch(modelName, function (value) {\n\t\t\t\t\t\tif (isUndefinedOrNull(value) || (value === '')) {\n\t\t\t\t\t\t\tcancelTimer();\n\t\t\t\t\t\t\tif (currentValue) {\n\t\t\t\t\t\t\t\telement.text('');\n\t\t\t\t\t\t\t\tupdateDateTimeAttr('');\n\t\t\t\t\t\t\t\tcurrentValue = null;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcurrentValue = value;\n\t\t\t\t\t\tupdateMoment();\n\t\t\t\t\t});\n\n\t\t\t\t\tif (angular.isDefined(attr.amFrom)) {\n\t\t\t\t\t\tscope.$watch(attr.amFrom, function (value) {\n\t\t\t\t\t\t\tif (isUndefinedOrNull(value) || (value === '')) {\n\t\t\t\t\t\t\t\tcurrentFrom = null;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcurrentFrom = moment(value);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tupdateMoment();\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tif (angular.isDefined(attr.amWithoutSuffix)) {\n\t\t\t\t\t\tscope.$watch(attr.amWithoutSuffix, function (value) {\n\t\t\t\t\t\t\tif (typeof value === 'boolean') {\n\t\t\t\t\t\t\t\twithoutSuffix = value;\n\t\t\t\t\t\t\t\tupdateMoment();\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\twithoutSuffix = amTimeAgoConfig.withoutSuffix;\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\tattr.$observe('amFullDateThreshold', function (newValue) {\n\t\t\t\t\t\tfullDateThreshold = newValue;\n\t\t\t\t\t\tupdateMoment();\n\t\t\t\t\t});\n\n\t\t\t\t\tattr.$observe('amFullDateFormat', function (newValue) {\n\t\t\t\t\t\tfullDateFormat = newValue;\n\t\t\t\t\t\tupdateMoment();\n\t\t\t\t\t});\n\n\t\t\t\t\tattr.$observe('amFullDateThresholdUnit', function (newValue) {\n\t\t\t\t\t\tfullDateThresholdUnit = newValue;\n\t\t\t\t\t\tupdateMoment();\n\t\t\t\t\t});\n\n\t\t\t\t\tscope.$on('$destroy', function () {\n\t\t\t\t\t\tcancelTimer();\n\t\t\t\t\t});\n\n\t\t\t\t\tscope.$on('amMoment:localeChanged', function () {\n\t\t\t\t\t\tupdateMoment();\n\t\t\t\t\t});\n\t\t\t\t};\n\t\t\t}])\n\n\t\t/**\n\t\t * @ngdoc service\n\t\t * @name angularMoment.service.amMoment\n\t\t * @module angularMoment\n\t\t */\n\t\t\t.service('amMoment', ['moment', '$rootScope', '$log', 'angularMomentConfig', function (moment, $rootScope, $log, angularMomentConfig) {\n\t\t\t\tvar defaultTimezone = null;\n\n\t\t\t\t/**\n\t\t\t\t * @ngdoc function\n\t\t\t\t * @name angularMoment.service.amMoment#changeLocale\n\t\t\t\t * @methodOf angularMoment.service.amMoment\n\t\t\t\t *\n\t\t\t\t * @description\n\t\t\t\t * Changes the locale for moment.js and updates all the am-time-ago directive instances\n\t\t\t\t * with the new locale. Also broadcasts an `amMoment:localeChanged` event on $rootScope.\n\t\t\t\t *\n\t\t\t\t * @param {string} locale Locale code (e.g. en, es, ru, pt-br, etc.)\n\t\t\t\t * @param {object} customization object of locale strings to override\n\t\t\t\t */\n\t\t\t\tthis.changeLocale = function (locale, customization) {\n\t\t\t\t\tvar result = moment.locale(locale, customization);\n\t\t\t\t\tif (angular.isDefined(locale)) {\n\t\t\t\t\t\t$rootScope.$broadcast('amMoment:localeChanged');\n\n\t\t\t\t\t}\n\t\t\t\t\treturn result;\n\t\t\t\t};\n\n\t\t\t\t/**\n\t\t\t\t * @ngdoc function\n\t\t\t\t * @name angularMoment.service.amMoment#changeTimezone\n\t\t\t\t * @methodOf angularMoment.service.amMoment\n\t\t\t\t *\n\t\t\t\t * @description\n\t\t\t\t * Changes the default timezone for amCalendar, amDateFormat and amTimeAgo. Also broadcasts an\n\t\t\t\t * `amMoment:timezoneChanged` event on $rootScope.\n\t\t\t\t *\n\t\t\t\t * Note: this method works only if moment-timezone > 0.3.0 is loaded\n\t\t\t\t *\n\t\t\t\t * @param {string} timezone Timezone name (e.g. UTC)\n\t\t\t\t */\n\t\t\t\tthis.changeTimezone = function (timezone) {\n\t\t\t\t\tif (moment.tz && moment.tz.setDefault) {\n\t\t\t\t\t\tmoment.tz.setDefault(timezone);\n\t\t\t\t\t\t$rootScope.$broadcast('amMoment:timezoneChanged');\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$log.warn('angular-moment: changeTimezone() works only with moment-timezone.js v0.3.0 or greater.');\n\t\t\t\t\t}\n\t\t\t\t\tangularMomentConfig.timezone = timezone;\n\t\t\t\t\tdefaultTimezone = timezone;\n\t\t\t\t};\n\n\t\t\t\t/**\n\t\t\t\t * @ngdoc function\n\t\t\t\t * @name angularMoment.service.amMoment#preprocessDate\n\t\t\t\t * @methodOf angularMoment.service.amMoment\n\t\t\t\t *\n\t\t\t\t * @description\n\t\t\t\t * Preprocess a given value and convert it into a Moment instance appropriate for use in the\n\t\t\t\t * am-time-ago directive and the filters. The behavior of this function can be overriden by\n\t\t\t\t * setting `angularMomentConfig.preprocess`.\n\t\t\t\t *\n\t\t\t\t * @param {*} value The value to be preprocessed\n\t\t\t\t * @return {Moment} A `moment` object\n\t\t\t\t */\n\t\t\t\tthis.preprocessDate = function (value) {\n\t\t\t\t\t// Configure the default timezone if needed\n\t\t\t\t\tif (defaultTimezone !== angularMomentConfig.timezone) {\n\t\t\t\t\t\tthis.changeTimezone(angularMomentConfig.timezone);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (angularMomentConfig.preprocess) {\n\t\t\t\t\t\treturn angularMomentConfig.preprocess(value);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!isNaN(parseFloat(value)) && isFinite(value)) {\n\t\t\t\t\t\t// Milliseconds since the epoch\n\t\t\t\t\t\treturn moment(parseInt(value, 10));\n\t\t\t\t\t}\n\n\t\t\t\t\t// else just returns the value as-is.\n\t\t\t\t\treturn moment(value);\n\t\t\t\t};\n\t\t\t}])\n\n\t\t/**\n\t\t * @ngdoc filter\n\t\t * @name angularMoment.filter:amParse\n\t\t * @module angularMoment\n\t\t */\n\t\t\t.filter('amParse', ['moment', function (moment) {\n\t\t\t\treturn function (value, format) {\n\t\t\t\t\treturn moment(value, format);\n\t\t\t\t};\n\t\t\t}])\n\n\t\t/**\n\t\t * @ngdoc filter\n\t\t * @name angularMoment.filter:amFromUnix\n\t\t * @module angularMoment\n\t\t */\n\t\t\t.filter('amFromUnix', ['moment', function (moment) {\n\t\t\t\treturn function (value) {\n\t\t\t\t\treturn moment.unix(value);\n\t\t\t\t};\n\t\t\t}])\n\n\t\t/**\n\t\t * @ngdoc filter\n\t\t * @name angularMoment.filter:amUtc\n\t\t * @module angularMoment\n\t\t */\n\t\t\t.filter('amUtc', ['moment', function (moment) {\n\t\t\t\treturn function (value) {\n\t\t\t\t\treturn moment.utc(value);\n\t\t\t\t};\n\t\t\t}])\n\n\t\t/**\n\t\t * @ngdoc filter\n\t\t * @name angularMoment.filter:amUtcOffset\n\t\t * @module angularMoment\n\t\t *\n\t\t * @description\n\t\t * Adds a UTC offset to the given timezone object. The offset can be a number of minutes, or a string such as\n\t\t * '+0300', '-0300' or 'Z'.\n\t\t */\n\t\t\t.filter('amUtcOffset', ['amMoment', function (amMoment) {\n\t\t\t\tfunction amUtcOffset(value, offset) {\n\t\t\t\t\treturn amMoment.preprocessDate(value).utcOffset(offset);\n\t\t\t\t}\n\n\t\t\t\treturn amUtcOffset;\n\t\t\t}])\n\n\t\t/**\n\t\t * @ngdoc filter\n\t\t * @name angularMoment.filter:amLocal\n\t\t * @module angularMoment\n\t\t */\n\t\t\t.filter('amLocal', ['moment', function (moment) {\n\t\t\t\treturn function (value) {\n\t\t\t\t\treturn moment.isMoment(value) ? value.local() : null;\n\t\t\t\t};\n\t\t\t}])\n\n\t\t/**\n\t\t * @ngdoc filter\n\t\t * @name angularMoment.filter:amTimezone\n\t\t * @module angularMoment\n\t\t *\n\t\t * @description\n\t\t * Apply a timezone onto a given moment object, e.g. 'America/Phoenix').\n\t\t *\n\t\t * You need to include moment-timezone.js for timezone support.\n\t\t */\n\t\t\t.filter('amTimezone', ['amMoment', 'angularMomentConfig', '$log', function (amMoment, angularMomentConfig, $log) {\n\t\t\t\tfunction amTimezone(value, timezone) {\n\t\t\t\t\tvar aMoment = amMoment.preprocessDate(value);\n\n\t\t\t\t\tif (!timezone) {\n\t\t\t\t\t\treturn aMoment;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (aMoment.tz) {\n\t\t\t\t\t\treturn aMoment.tz(timezone);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$log.warn('angular-moment: named timezone specified but moment.tz() is undefined. Did you forget to include moment-timezone.js ?');\n\t\t\t\t\t\treturn aMoment;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn amTimezone;\n\t\t\t}])\n\n\t\t/**\n\t\t * @ngdoc filter\n\t\t * @name angularMoment.filter:amCalendar\n\t\t * @module angularMoment\n\t\t */\n\t\t\t.filter('amCalendar', ['moment', 'amMoment', 'angularMomentConfig', function (moment, amMoment, angularMomentConfig) {\n\t\t\t\tfunction amCalendarFilter(value, referenceTime, formats) {\n\t\t\t\t\tif (isUndefinedOrNull(value)) {\n\t\t\t\t\t\treturn '';\n\t\t\t\t\t}\n\n\t\t\t\t\tvar date = amMoment.preprocessDate(value);\n\t\t\t\t\treturn date.isValid() ? date.calendar(referenceTime, formats) : '';\n\t\t\t\t}\n\n\t\t\t\t// Since AngularJS 1.3, filters have to explicitly define being stateful\n\t\t\t\t// (this is no longer the default).\n\t\t\t\tamCalendarFilter.$stateful = angularMomentConfig.statefulFilters;\n\n\t\t\t\treturn amCalendarFilter;\n\t\t\t}])\n\n\t\t/**\n\t\t * @ngdoc filter\n\t\t * @name angularMoment.filter:amDifference\n\t\t * @module angularMoment\n\t\t */\n\t\t\t.filter('amDifference', ['moment', 'amMoment', 'angularMomentConfig', function (moment, amMoment, angularMomentConfig) {\n\t\t\t\tfunction amDifferenceFilter(value, otherValue, unit, usePrecision) {\n\t\t\t\t\tif (isUndefinedOrNull(value)) {\n\t\t\t\t\t\treturn '';\n\t\t\t\t\t}\n\n\t\t\t\t\tvar date = amMoment.preprocessDate(value);\n\t\t\t\t\tvar date2 = !isUndefinedOrNull(otherValue) ? amMoment.preprocessDate(otherValue) : moment();\n\n\t\t\t\t\tif (!date.isValid() || !date2.isValid()) {\n\t\t\t\t\t\treturn '';\n\t\t\t\t\t}\n\n\t\t\t\t\treturn date.diff(date2, unit, usePrecision);\n\t\t\t\t}\n\n\t\t\t\tamDifferenceFilter.$stateful = angularMomentConfig.statefulFilters;\n\n\t\t\t\treturn amDifferenceFilter;\n\t\t\t}])\n\n\t\t/**\n\t\t * @ngdoc filter\n\t\t * @name angularMoment.filter:amDateFormat\n\t\t * @module angularMoment\n\t\t * @function\n\t\t */\n\t\t\t.filter('amDateFormat', ['moment', 'amMoment', 'angularMomentConfig', function (moment, amMoment, angularMomentConfig) {\n\t\t\t\tfunction amDateFormatFilter(value, format) {\n\t\t\t\t\tif (isUndefinedOrNull(value)) {\n\t\t\t\t\t\treturn '';\n\t\t\t\t\t}\n\n\t\t\t\t\tvar date = amMoment.preprocessDate(value);\n\t\t\t\t\tif (!date.isValid()) {\n\t\t\t\t\t\treturn '';\n\t\t\t\t\t}\n\n\t\t\t\t\treturn date.format(format);\n\t\t\t\t}\n\n\t\t\t\tamDateFormatFilter.$stateful = angularMomentConfig.statefulFilters;\n\n\t\t\t\treturn amDateFormatFilter;\n\t\t\t}])\n\n\t\t/**\n\t\t * @ngdoc filter\n\t\t * @name angularMoment.filter:amDurationFormat\n\t\t * @module angularMoment\n\t\t * @function\n\t\t */\n\t\t\t.filter('amDurationFormat', ['moment', 'angularMomentConfig', function (moment, angularMomentConfig) {\n\t\t\t\tfunction amDurationFormatFilter(value, format, suffix) {\n\t\t\t\t\tif (isUndefinedOrNull(value)) {\n\t\t\t\t\t\treturn '';\n\t\t\t\t\t}\n\n\t\t\t\t\treturn moment.duration(value, format).humanize(suffix);\n\t\t\t\t}\n\n\t\t\t\tamDurationFormatFilter.$stateful = angularMomentConfig.statefulFilters;\n\n\t\t\t\treturn amDurationFormatFilter;\n\t\t\t}])\n\n\t\t/**\n\t\t * @ngdoc filter\n\t\t * @name angularMoment.filter:amTimeAgo\n\t\t * @module angularMoment\n\t\t * @function\n\t\t */\n\t\t\t.filter('amTimeAgo', ['moment', 'amMoment', 'angularMomentConfig', function (moment, amMoment, angularMomentConfig) {\n\t\t\t\tfunction amTimeAgoFilter(value, suffix, from) {\n\t\t\t\t\tvar date, dateFrom;\n\n\t\t\t\t\tif (isUndefinedOrNull(value)) {\n\t\t\t\t\t\treturn '';\n\t\t\t\t\t}\n\n\t\t\t\t\tvalue = amMoment.preprocessDate(value);\n\t\t\t\t\tdate = moment(value);\n\t\t\t\t\tif (!date.isValid()) {\n\t\t\t\t\t\treturn '';\n\t\t\t\t\t}\n\n\t\t\t\t\tdateFrom = moment(from);\n\t\t\t\t\tif (!isUndefinedOrNull(from) && dateFrom.isValid()) {\n\t\t\t\t\t\treturn date.from(dateFrom, suffix);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn date.fromNow(suffix);\n\t\t\t\t}\n\n\t\t\t\tamTimeAgoFilter.$stateful = angularMomentConfig.statefulFilters;\n\n\t\t\t\treturn amTimeAgoFilter;\n\t\t\t}])\n\n\t\t/**\n\t\t * @ngdoc filter\n\t\t * @name angularMoment.filter:amSubtract\n\t\t * @module angularMoment\n\t\t * @function\n\t\t */\n\t\t\t.filter('amSubtract', ['moment', 'angularMomentConfig', function (moment, angularMomentConfig) {\n\t\t\t\tfunction amSubtractFilter(value, amount, type) {\n\n\t\t\t\t\tif (isUndefinedOrNull(value)) {\n\t\t\t\t\t\treturn '';\n\t\t\t\t\t}\n\n\t\t\t\t\treturn moment(value).subtract(parseInt(amount, 10), type);\n\t\t\t\t}\n\n\t\t\t\tamSubtractFilter.$stateful = angularMomentConfig.statefulFilters;\n\n\t\t\t\treturn amSubtractFilter;\n\t\t\t}])\n\n\t\t/**\n\t\t * @ngdoc filter\n\t\t * @name angularMoment.filter:amAdd\n\t\t * @module angularMoment\n\t\t * @function\n\t\t */\n\t\t\t.filter('amAdd', ['moment', 'angularMomentConfig', function (moment, angularMomentConfig) {\n\t\t\t\tfunction amAddFilter(value, amount, type) {\n\n\t\t\t\t\tif (isUndefinedOrNull(value)) {\n\t\t\t\t\t\treturn '';\n\t\t\t\t\t}\n\n\t\t\t\t\treturn moment(value).add(parseInt(amount, 10), type);\n\t\t\t\t}\n\n\t\t\t\tamAddFilter.$stateful = angularMomentConfig.statefulFilters;\n\n\t\t\t\treturn amAddFilter;\n\t\t\t}])\n\n\t\t/**\n\t\t * @ngdoc filter\n\t\t * @name angularMoment.filter:amStartOf\n\t\t * @module angularMoment\n\t\t * @function\n\t\t */\n\t\t\t.filter('amStartOf', ['moment', 'angularMomentConfig', function (moment, angularMomentConfig) {\n\t\t\t\tfunction amStartOfFilter(value, type) {\n\n\t\t\t\t\tif (isUndefinedOrNull(value)) {\n\t\t\t\t\t\treturn '';\n\t\t\t\t\t}\n\n\t\t\t\t\treturn moment(value).startOf(type);\n\t\t\t\t}\n\n\t\t\t\tamStartOfFilter.$stateful = angularMomentConfig.statefulFilters;\n\n\t\t\t\treturn amStartOfFilter;\n\t\t\t}])\n\n\t\t/**\n\t\t * @ngdoc filter\n\t\t * @name angularMoment.filter:amEndOf\n\t\t * @module angularMoment\n\t\t * @function\n\t\t */\n\t\t\t.filter('amEndOf', ['moment', 'angularMomentConfig', function (moment, angularMomentConfig) {\n\t\t\t\tfunction amEndOfFilter(value, type) {\n\n\t\t\t\t\tif (isUndefinedOrNull(value)) {\n\t\t\t\t\t\treturn '';\n\t\t\t\t\t}\n\n\t\t\t\t\treturn moment(value).endOf(type);\n\t\t\t\t}\n\n\t\t\t\tamEndOfFilter.$stateful = angularMomentConfig.statefulFilters;\n\n\t\t\t\treturn amEndOfFilter;\n \t\t\t}]);\n\n\t\treturn 'angularMoment';\n\t}\n\n\tvar isElectron = window && window.process && window.process.type;\n\tif (typeof define === 'function' && define.amd) {\n\t\tdefine(['angular', 'moment'], angularMoment);\n\t} else if (typeof module !== 'undefined' && module && module.exports && (typeof require === 'function') && !isElectron) {\n\t\tmodule.exports = angularMoment(require('angular'), require('moment'));\n\t} else {\n\t\tangularMoment(angular, (typeof global !== 'undefined' && typeof global.moment !== 'undefined' ? global : window).moment);\n\t}\n})();\n","(function () {\r\n 'use strict';\r\n angular.module('winxnet', [])\r\n .service('stateService', function () {\r\n var grids = {};\r\n\r\n var stateSvc = {\r\n registerGrid: function (gridName, data) {\r\n grids[gridName] = data;\r\n },\r\n registerScope: function (scopeName, data) {\r\n grids[scopeName] = data;\r\n },\r\n scope: function (scopeName) {\r\n if (grids.hasOwnProperty(scopeName)) {\r\n return grids[scopeName];\r\n }\r\n return null;\r\n },\r\n grid: function (gridName) {\r\n if (grids.hasOwnProperty(gridName)) {\r\n return grids[gridName];\r\n }\r\n return null;\r\n },\r\n grids: function () { return grids; }\r\n };\r\n return stateSvc;\r\n })\r\n\r\n // View Data Service\r\n .service('viewDataService', [\r\n '$rootElement', function ($rootElement) {\r\n\r\n var viewDataElement = $rootElement.find('#AngularViewData');\r\n var viewData = null;\r\n if (viewDataElement.length > 0) {\r\n viewData = angular.fromJson(viewDataElement.html());\r\n }\r\n\r\n return {\r\n data: viewData\r\n };\r\n }\r\n ])\r\n\r\n // List Data Source\r\n .directive('listDataSource', [\r\n '$parse', '$compile', function ($parse, $compile) {\r\n return {\r\n priority: 1000,\r\n restrict: 'E',\r\n scope: false,\r\n link: function (scope, element, attrs) {\r\n if (!scope.model) {\r\n scope.model = {};\r\n }\r\n scope.model[attrs.datasourcename] = $parse(element.text())();\r\n }\r\n };\r\n }\r\n ])\r\n\r\n // Excellent Checkbox List\r\n .directive('winxnetCheckboxList', [\r\n '$filter', function ($filter) {\r\n var listNum = 0;\r\n return {\r\n //transclude:true,\r\n priority: 50,\r\n restrict: 'EA',\r\n scope: {\r\n readOnly: '=',\r\n itemList: '=',\r\n selectedItemList: '=',\r\n checkboxListChange: \"&\"\r\n },\r\n link: function (scope, element, attrs, controller) {\r\n scope.class = attrs.cssclass;\r\n scope.valueProperty = attrs.valueProperty;\r\n scope.checkboxdata = [];\r\n\r\n scope.selectItem = function (value) {\r\n if (value.canBeNew) {\r\n value.isNew = value.selected;\r\n } else if (value.canDelete) {\r\n value.isDeleted = !value.selected;\r\n }\r\n if (scope.checkboxListChange && scope.checkboxdata) {\r\n scope.checkboxListChange({ data: scope.checkboxdata, item: value });\r\n }\r\n }\r\n\r\n var newKey = -1;\r\n var i;\r\n for (i = 0; i < scope.itemList.length; i++) {\r\n\r\n var item = scope.itemList[i];\r\n var name = 'cb_' + listNum + '_' + i;\r\n\r\n var elementData = {\r\n text: item.Text,\r\n index: i,\r\n name: name,\r\n collection: attrs.collectionName,\r\n value: item.Value,\r\n\r\n };\r\n var selectedItem = null;\r\n for (var val in scope.selectedItemList) {\r\n if (scope.selectedItemList[val][scope.valueProperty] == item.Value) {\r\n selectedItem = scope.selectedItemList[val];\r\n break;\r\n }\r\n }\r\n if (selectedItem && (selectedItem.Id > 0 || selectedItem.IsNew)) {//Bug 4724: Add New Sales Rep Error\r\n elementData.canBeNew = selectedItem.IsNew;\r\n elementData.canDelete = true;\r\n elementData.isNew = selectedItem.IsNew;\r\n elementData.isDeleted = selectedItem.IsDeleted;\r\n elementData.selected = !selectedItem.IsDeleted;\r\n elementData.id = selectedItem.Key;\r\n } else {\r\n elementData.isNew = false;\r\n elementData.isDeleted = false;\r\n elementData.selected = false;\r\n elementData.canBeNew = true;\r\n elementData.canDelete = false;\r\n elementData.id = newKey--;\r\n }\r\n scope.checkboxdata.push(elementData);\r\n }\r\n if (scope.checkboxListChange) {\r\n scope.checkboxListChange({ data: scope.checkboxdata });\r\n }\r\n listNum++;\r\n },\r\n //template: '
nnn
'\r\n template: '
' +\r\n '
' +\r\n '' +\r\n '' +\r\n '' +\r\n '' +\r\n '' +\r\n '' +\r\n '' +\r\n '
' +\r\n '
'\r\n }\r\n }\r\n ])\r\n\r\n\r\n\r\n\r\n .directive('saveGridContext', ['utilityService', function (utilityService) {\r\n return {\r\n priority: 1000,\r\n restrict: 'A',\r\n replace: false,\r\n scope: {},\r\n\r\n link: function (scope, element, attrs) {\r\n\r\n var submitFunction = function (event) {\r\n\r\n var result = false;\r\n\r\n if (utilityService.utility.alternateSaveFunction) {\r\n event.preventDefault();\r\n var alternateResult = utilityService.utility.alternateSaveFunction();\r\n if (alternateResult) {\r\n result = true;\r\n }\r\n } else {\r\n // Plain old submit\r\n result = true;\r\n }\r\n\r\n return result;\r\n };\r\n\r\n // TODO\r\n // I AM 100% sure there is a better way of doing this. However,\r\n // I need to move on and for now this is working.\r\n element.bind('submit', function (event) {\r\n\r\n var result = submitFunction(event);\r\n\r\n if (result) {\r\n var items = utilityService.utility.createModifiedItemsFormElementCollection();\r\n element.append(items);\r\n element.unbind('submit');\r\n element.submit();\r\n }\r\n\r\n });\r\n }\r\n\r\n };\r\n }\r\n ])\r\n\r\n\r\n ;\r\n})();\r\n","var isArray = require('./isArray'),\n isKey = require('./_isKey'),\n stringToPath = require('./_stringToPath'),\n toString = require('./toString');\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nmodule.exports = castPath;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","var isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = toKey;\n","var defineProperty = require('./_defineProperty');\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nmodule.exports = baseAssignValue;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","var baseTimes = require('./_baseTimes'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isIndex = require('./_isIndex'),\n isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = arrayLikeKeys;\n","var root = require('./_root'),\n stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\n","var isFunction = require('./isFunction'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nmodule.exports = stubArray;\n","var arrayPush = require('./_arrayPush'),\n getPrototype = require('./_getPrototype'),\n getSymbols = require('./_getSymbols'),\n stubArray = require('./stubArray');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n};\n\nmodule.exports = getSymbolsIn;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nmodule.exports = arrayPush;\n","var overArg = require('./_overArg');\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nmodule.exports = getPrototype;\n","var arrayPush = require('./_arrayPush'),\n isArray = require('./isArray');\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nmodule.exports = baseGetAllKeys;\n","\"use strict\";\r\nvar __values = (this && this.__values) || function (o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar keyboard_events_1 = require(\"./browser/keyboard-events\");\r\nvar table_dom_traversal_1 = require(\"./browser/table-dom-traversal\");\r\nvar clipboard_reducers_1 = require(\"./clipboard/clipboard-reducers\");\r\nvar selection_1 = require(\"./workspace/selection\");\r\nvar selection_events_1 = require(\"./workspace/selection-events\");\r\nvar workspace_reducers_1 = require(\"./workspace/workspace-reducers\");\r\nfunction defaultGetCellValue(inputSelector) {\r\n return function (cell) {\r\n var input = cell.querySelector(inputSelector);\r\n if (input.value) {\r\n return input.value;\r\n }\r\n return cell.innerText;\r\n };\r\n}\r\nfunction defaultSetCellValue(inputSelector) {\r\n return function (cell, value) {\r\n var input = cell.querySelector(inputSelector);\r\n if (input.value) {\r\n input.value = String(value);\r\n }\r\n else {\r\n cell.innerHTML = String(value);\r\n }\r\n };\r\n}\r\nvar VirtualWorksheet = (function () {\r\n function VirtualWorksheet(table, traverser, options) {\r\n this.table = table;\r\n this.traverser = traverser;\r\n this.options = options;\r\n this.selection = [];\r\n this.handleChangeCellKeyPress = this.createKeyPressHandler();\r\n this.handleFocus = this.createFocusHandler();\r\n this.handleCopy = this.createCopyEventHandler();\r\n this.handlePaste = this.createPasteEventHandler();\r\n this.options.getCellValue = this.options.getCellValue || defaultGetCellValue(this.options.inputSelector);\r\n this.options.setCellValue = this.options.setCellValue || defaultSetCellValue(this.options.inputSelector);\r\n this.workspace = {\r\n pastSelection: selection_1.NoSelection.instance,\r\n activeSelection: selection_1.NoSelection.instance\r\n };\r\n }\r\n VirtualWorksheet.prototype.attachToTable = function () {\r\n var _this = this;\r\n this.table.querySelectorAll(\"td\")\r\n .forEach(function (cell) {\r\n cell.tabIndex = 0;\r\n cell.addEventListener(\"mousedown\", _this.handleFocus);\r\n cell.addEventListener(\"keydown\", _this.handleChangeCellKeyPress);\r\n cell.addEventListener(\"copy\", _this.handleCopy);\r\n cell.addEventListener(\"paste\", _this.handlePaste);\r\n });\r\n };\r\n VirtualWorksheet.prototype.detachFromTable = function () {\r\n var _this = this;\r\n this.table.querySelectorAll(\"td\")\r\n .forEach(function (cell) {\r\n cell.removeEventListener(\"mousedown\", _this.handleFocus);\r\n cell.removeEventListener(\"keydown\", _this.handleChangeCellKeyPress);\r\n cell.removeEventListener(\"copy\", _this.handleCopy);\r\n cell.removeEventListener(\"paste\", _this.handlePaste);\r\n });\r\n };\r\n VirtualWorksheet.prototype.createCopyEventHandler = function () {\r\n var self = this;\r\n return function (e) {\r\n var e_1, _a;\r\n var el = e.target;\r\n var rows = (el.closest(\"tbody\") || el.closest(\"table\") || { rows: null }).rows;\r\n if (!rows) {\r\n return null;\r\n }\r\n var input = e.target.value ? e.target : null;\r\n if (input) {\r\n input.blur();\r\n input.focus();\r\n }\r\n var grid = table_dom_traversal_1.toUnitTable(Array.from(el.closest(\"tbody\").rows || el.closest(\"table\").rows));\r\n var action = {\r\n action: \"COPY\",\r\n grid: grid,\r\n dataSelector: self.options.getCellValue,\r\n selection: new selection_1.CompositeSelection([self.workspace.activeSelection, self.workspace.pastSelection], [])\r\n };\r\n var events = clipboard_reducers_1.reduceClipboardAction([], action);\r\n try {\r\n for (var events_1 = __values(events), events_1_1 = events_1.next(); !events_1_1.done; events_1_1 = events_1.next()) {\r\n var event_1 = events_1_1.value;\r\n switch (event_1.event) {\r\n case \"ERROR\":\r\n e.preventDefault();\r\n console.warn(event_1);\r\n alert(event_1.message);\r\n return;\r\n case \"PATTERN_FILLED\":\r\n var data = clipboard_reducers_1.serializePatternData(event_1.pattern);\r\n e.clipboardData.setData(\"text/plain\", data);\r\n e.preventDefault();\r\n return;\r\n }\r\n }\r\n }\r\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\r\n finally {\r\n try {\r\n if (events_1_1 && !events_1_1.done && (_a = events_1.return)) _a.call(events_1);\r\n }\r\n finally { if (e_1) throw e_1.error; }\r\n }\r\n };\r\n };\r\n VirtualWorksheet.prototype.createPasteEventHandler = function () {\r\n var self = this;\r\n return function (e) {\r\n var e_2, _a, e_3, _b;\r\n var el = e.target;\r\n var rows = (el.closest(\"tbody\") || el.closest(\"table\") || { rows: null }).rows;\r\n if (!rows) {\r\n return null;\r\n }\r\n var grid = table_dom_traversal_1.toUnitTable(Array.from(el.closest(\"tbody\").rows || el.closest(\"table\").rows));\r\n var data = e.clipboardData.getData(\"text/plain\");\r\n var pattern = clipboard_reducers_1.processPatternData(data);\r\n var action = {\r\n action: \"PASTE\",\r\n grid: grid,\r\n pattern: pattern,\r\n selection: self.workspace.activeSelection\r\n };\r\n var events = clipboard_reducers_1.reduceClipboardAction([], action);\r\n try {\r\n for (var events_2 = __values(events), events_2_1 = events_2.next(); !events_2_1.done; events_2_1 = events_2.next()) {\r\n var event_2 = events_2_1.value;\r\n switch (event_2.event) {\r\n case \"ERROR\":\r\n e.preventDefault();\r\n console.warn(event_2);\r\n alert(event_2.message);\r\n break;\r\n case \"SELECTION_FILLED\":\r\n e.preventDefault();\r\n try {\r\n for (var _c = (e_3 = void 0, __values(event_2.cellValueChanges)), _d = _c.next(); !_d.done; _d = _c.next()) {\r\n var update = _d.value;\r\n if (self.options.inputValidator(update.cell)) {\r\n self.options.setCellValue(update.cell, update.value);\r\n }\r\n }\r\n }\r\n catch (e_3_1) { e_3 = { error: e_3_1 }; }\r\n finally {\r\n try {\r\n if (_d && !_d.done && (_b = _c.return)) _b.call(_c);\r\n }\r\n finally { if (e_3) throw e_3.error; }\r\n }\r\n }\r\n }\r\n }\r\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\r\n finally {\r\n try {\r\n if (events_2_1 && !events_2_1.done && (_a = events_2.return)) _a.call(events_2);\r\n }\r\n finally { if (e_2) throw e_2.error; }\r\n }\r\n };\r\n };\r\n VirtualWorksheet.prototype.deleteSelection = function () {\r\n var e_4, _a, e_5, _b;\r\n var rows = (this.table.querySelector(\"tbody\") || this.table).rows;\r\n var grid = table_dom_traversal_1.toUnitTable(Array.from(rows));\r\n var pattern = [[\"\"]];\r\n var action = {\r\n action: \"PASTE\",\r\n grid: grid,\r\n pattern: pattern,\r\n selection: this.workspace.activeSelection\r\n };\r\n var events = clipboard_reducers_1.reduceClipboardAction([], action);\r\n try {\r\n for (var events_3 = __values(events), events_3_1 = events_3.next(); !events_3_1.done; events_3_1 = events_3.next()) {\r\n var event_3 = events_3_1.value;\r\n switch (event_3.event) {\r\n case \"ERROR\":\r\n console.warn(event_3);\r\n alert(event_3.message);\r\n break;\r\n case \"SELECTION_FILLED\": try {\r\n for (var _c = (e_5 = void 0, __values(event_3.cellValueChanges)), _d = _c.next(); !_d.done; _d = _c.next()) {\r\n var update = _d.value;\r\n if (this.options.inputValidator(update.cell)) {\r\n this.options.setCellValue(update.cell, update.value);\r\n }\r\n }\r\n }\r\n catch (e_5_1) { e_5 = { error: e_5_1 }; }\r\n finally {\r\n try {\r\n if (_d && !_d.done && (_b = _c.return)) _b.call(_c);\r\n }\r\n finally { if (e_5) throw e_5.error; }\r\n }\r\n }\r\n }\r\n }\r\n catch (e_4_1) { e_4 = { error: e_4_1 }; }\r\n finally {\r\n try {\r\n if (events_3_1 && !events_3_1.done && (_a = events_3.return)) _a.call(events_3);\r\n }\r\n finally { if (e_4) throw e_4.error; }\r\n }\r\n };\r\n VirtualWorksheet.prototype.createFocusHandler = function () {\r\n var validInput = this.options.inputSelector;\r\n var self = this;\r\n return function handleFocus(e) {\r\n var el = e.target;\r\n if (e.button && el.tabIndex !== undefined) {\r\n return;\r\n }\r\n var textbox = e.target.selectionStart ? e.target : null;\r\n var td = el.tagName === \"TD\" ? el : el.closest(\"td\");\r\n if (!td) {\r\n return;\r\n }\r\n var table = table_dom_traversal_1.toUnitTable(Array.from(el.closest(\"tbody\").rows || el.closest(\"table\").rows));\r\n var cell = table_dom_traversal_1.findCellAddress(td, table);\r\n if (!textbox) {\r\n textbox = el.querySelector(validInput);\r\n }\r\n if (textbox && self.options.inputValidator(textbox)) {\r\n if (textbox.focus) {\r\n textbox.focus();\r\n e.preventDefault();\r\n e.stopImmediatePropagation();\r\n }\r\n if (textbox.select) {\r\n textbox.select();\r\n }\r\n }\r\n var action = {\r\n action: \"SELECT_CELL\",\r\n cell: cell,\r\n grid: table,\r\n selectionType: getSelectionType(e)\r\n };\r\n self.workspace = workspace_reducers_1.selectionReducer(self.workspace, action);\r\n self.handleCursorMoved(selection_events_1.createCursorMovedEvent(self.cursor, {\r\n grid: action.grid,\r\n cursor: self.workspace.cursor\r\n }));\r\n self.handleSelectionChanged(selection_events_1.createSelectionChangeEvent(self.selection, {\r\n grid: action.grid,\r\n updatedSelection: new selection_1.CompositeSelection([self.workspace.activeSelection,\r\n self.workspace.pastSelection], [])\r\n }));\r\n };\r\n };\r\n VirtualWorksheet.prototype.createKeyPressHandler = function () {\r\n var self = this;\r\n return function handleChangeCellKeyPress(e) {\r\n if (!e.shiftKey && keyboard_events_1.isKey(e.key, keyboard_events_1.Keys.Delete)) {\r\n return self.deleteSelection();\r\n }\r\n else {\r\n return self.handleCardinalMovementKeyEvent(e);\r\n }\r\n };\r\n };\r\n VirtualWorksheet.prototype.clearSelection = function () {\r\n var action = {\r\n action: \"CLEAR_SELECTION\"\r\n };\r\n this.workspace = workspace_reducers_1.selectionReducer(this.workspace, action);\r\n };\r\n VirtualWorksheet.prototype.handleCardinalMovementKeyEvent = function (e) {\r\n var el = e.target;\r\n var cell = el.closest(\"td\");\r\n if (cell == null) {\r\n console.warn(\"onKeyPress called with input not in a table\");\r\n return null;\r\n }\r\n var res;\r\n var newCell;\r\n var action = {\r\n action: \"CARDINAL_CELL_MOVEMENT\"\r\n };\r\n action.movementType = getMovementType(e);\r\n action.direction = getKeyDirection(e);\r\n if (!action.direction) {\r\n return;\r\n }\r\n action.grid = table_dom_traversal_1.toUnitTable(Array.from(el.closest(\"tbody\").rows || el.closest(\"table\").rows));\r\n action.sourceCell = table_dom_traversal_1.findCellAddress(cell, action.grid);\r\n action.traverser = this.traverser;\r\n this.workspace = workspace_reducers_1.selectionReducer(this.workspace, action);\r\n if (this.workspace.cursor) {\r\n newCell = action.grid[this.workspace.cursor.i][this.workspace.cursor.j];\r\n }\r\n if (keyboard_events_1.isKey(e.key, keyboard_events_1.Keys.Enter)) {\r\n e.preventDefault();\r\n res = false;\r\n }\r\n else if (keyboard_events_1.isKey(e.key, keyboard_events_1.Keys.ArrowDown)) {\r\n e.preventDefault();\r\n e.stopImmediatePropagation();\r\n }\r\n else if (keyboard_events_1.isKey(e.key, keyboard_events_1.Keys.ArrowUp)) {\r\n e.preventDefault();\r\n e.stopImmediatePropagation();\r\n }\r\n else if (keyboard_events_1.isKey(e.key, keyboard_events_1.Keys.Tab)) {\r\n e.preventDefault();\r\n }\r\n if (newCell && newCell !== action) {\r\n var newElement = newCell.querySelector(this.options.inputSelector);\r\n if (newElement) {\r\n el.blur();\r\n newElement.focus();\r\n var newInput = newElement;\r\n if (newInput.select) {\r\n newInput.select();\r\n }\r\n }\r\n }\r\n else {\r\n el.blur();\r\n el.focus();\r\n }\r\n this.handleCursorMoved(selection_events_1.createCursorMovedEvent(this.cursor, {\r\n grid: action.grid,\r\n cursor: this.workspace.cursor\r\n }));\r\n this.handleSelectionChanged(selection_events_1.createSelectionChangeEvent(this.selection, {\r\n grid: action.grid,\r\n updatedSelection: new selection_1.CompositeSelection([this.workspace.activeSelection, this.workspace.pastSelection], [])\r\n }));\r\n return res;\r\n };\r\n VirtualWorksheet.prototype.handleCursorMoved = function (e) {\r\n if (!e) {\r\n return;\r\n }\r\n this.cursor = e.cursor;\r\n if (this.options.onCursorMoved) {\r\n this.options.onCursorMoved(e);\r\n }\r\n };\r\n VirtualWorksheet.prototype.handleSelectionChanged = function (e) {\r\n if (!e) {\r\n return;\r\n }\r\n this.selection = e.selection;\r\n if (this.options.onSelectionChanged) {\r\n this.options.onSelectionChanged(e);\r\n }\r\n };\r\n return VirtualWorksheet;\r\n}());\r\nexports.VirtualWorksheet = VirtualWorksheet;\r\nfunction getMovementType(e) {\r\n if (e.shiftKey && !keyboard_events_1.isKey(e.key, keyboard_events_1.Keys.Tab)) {\r\n return \"extendSelection\";\r\n }\r\n else {\r\n return \"move\";\r\n }\r\n}\r\nfunction getSelectionType(e) {\r\n if (e.shiftKey && !e.ctrlKey) {\r\n return \"extendSelection\";\r\n }\r\n else if (e.ctrlKey && !e.shiftKey) {\r\n return \"toggle\";\r\n }\r\n else {\r\n return \"move\";\r\n }\r\n}\r\nfunction getKeyDirection(e) {\r\n if (keyboard_events_1.isKey(e.key, keyboard_events_1.Keys.Enter) || keyboard_events_1.isKey(e.key, keyboard_events_1.Keys.ArrowDown)) {\r\n return \"down\";\r\n }\r\n else if (keyboard_events_1.isKey(e.key, keyboard_events_1.Keys.ArrowUp)) {\r\n return \"up\";\r\n }\r\n else if (keyboard_events_1.isKey(e.key, keyboard_events_1.Keys.ArrowLeft) && e.ctrlKey) {\r\n return \"left\";\r\n }\r\n else if (keyboard_events_1.isKey(e.key, keyboard_events_1.Keys.ArrowRight) && e.ctrlKey) {\r\n return \"right\";\r\n }\r\n else if (keyboard_events_1.isKey(e.key, keyboard_events_1.Keys.Tab)) {\r\n if (e.shiftKey) {\r\n return \"left\";\r\n }\r\n else {\r\n return \"right\";\r\n }\r\n }\r\n else {\r\n return;\r\n }\r\n}\r\n","\"use strict\";\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nvar __values = (this && this.__values) || function (o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n};\r\nvar __read = (this && this.__read) || function (o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n};\r\nvar __spread = (this && this.__spread) || function () {\r\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar WorkspaceSelection = (function () {\r\n function WorkspaceSelection() {\r\n }\r\n return WorkspaceSelection;\r\n}());\r\nexports.WorkspaceSelection = WorkspaceSelection;\r\nvar SingleCell = (function (_super) {\r\n __extends(SingleCell, _super);\r\n function SingleCell(cell) {\r\n var _this = _super.call(this) || this;\r\n _this.cell = cell;\r\n return _this;\r\n }\r\n SingleCell.prototype.containsCell = function (cell) {\r\n return cell.i === this.cell.i && cell.j === this.cell.j;\r\n };\r\n SingleCell.prototype.enumerateCells = function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4, this.cell];\r\n case 1:\r\n _a.sent();\r\n return [2];\r\n }\r\n });\r\n };\r\n return SingleCell;\r\n}(WorkspaceSelection));\r\nexports.SingleCell = SingleCell;\r\nvar NoSelection = (function (_super) {\r\n __extends(NoSelection, _super);\r\n function NoSelection() {\r\n return _super.call(this) || this;\r\n }\r\n NoSelection.prototype.containsCell = function (cell) {\r\n return false;\r\n };\r\n NoSelection.prototype.enumerateCells = function () { return __generator(this, function (_a) {\r\n return [2];\r\n }); };\r\n NoSelection.instance = new NoSelection();\r\n return NoSelection;\r\n}(WorkspaceSelection));\r\nexports.NoSelection = NoSelection;\r\nvar RangeSelection = (function (_super) {\r\n __extends(RangeSelection, _super);\r\n function RangeSelection(start, end, inclusive) {\r\n if (inclusive === void 0) { inclusive = true; }\r\n var _this = _super.call(this) || this;\r\n _this.start = start;\r\n _this.end = end;\r\n _this.inclusive = inclusive;\r\n var maxI = Math.max(_this.start.i, _this.end.i);\r\n var minI = Math.min(_this.start.i, _this.end.i);\r\n var maxJ = Math.max(_this.start.j, _this.end.j);\r\n var minJ = Math.min(_this.start.j, _this.end.j);\r\n _this.bounds = {\r\n min: { i: minI, j: minJ },\r\n max: { i: maxI, j: maxJ }\r\n };\r\n return _this;\r\n }\r\n RangeSelection.prototype.getBounds = function () {\r\n return this.bounds;\r\n };\r\n RangeSelection.prototype.containsCell = function (cell) {\r\n if (!this.inclusive && this.start.i === cell.i && this.start.j === cell.j) {\r\n return false;\r\n }\r\n return this.bounds.min.i <= cell.i && cell.i <= this.bounds.max.i\r\n && this.bounds.min.j <= cell.j && cell.j <= this.bounds.max.j;\r\n };\r\n RangeSelection.prototype.enumerateCells = function () {\r\n var i, j;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n i = this.bounds.min.i;\r\n _a.label = 1;\r\n case 1:\r\n if (!(i <= this.bounds.max.i)) return [3, 6];\r\n j = this.bounds.min.j;\r\n _a.label = 2;\r\n case 2:\r\n if (!(j <= this.bounds.max.j)) return [3, 5];\r\n if (!this.inclusive && this.start.i === i && this.start.j === j) {\r\n return [3, 4];\r\n }\r\n return [4, { i: i, j: j }];\r\n case 3:\r\n _a.sent();\r\n _a.label = 4;\r\n case 4:\r\n j++;\r\n return [3, 2];\r\n case 5:\r\n i++;\r\n return [3, 1];\r\n case 6: return [2];\r\n }\r\n });\r\n };\r\n RangeSelection.prototype.changeEnd = function (cell) {\r\n return new RangeSelection(this.start, cell);\r\n };\r\n return RangeSelection;\r\n}(WorkspaceSelection));\r\nexports.RangeSelection = RangeSelection;\r\nvar CompositeSelection = (function (_super) {\r\n __extends(CompositeSelection, _super);\r\n function CompositeSelection(added, subtracted) {\r\n var _this = _super.call(this) || this;\r\n _this.added = added;\r\n _this.subtracted = subtracted;\r\n return _this;\r\n }\r\n CompositeSelection.prototype.containsCell = function (cell) {\r\n var inclusionCount = this.added.reduce(function (count, selection) {\r\n return count + (selection.containsCell(cell) ? 1 : 0);\r\n }, 0) - this.subtracted.reduce(function (count, selection) {\r\n return count + (selection.containsCell(cell) ? 1 : 0);\r\n }, 0);\r\n return inclusionCount > 0;\r\n };\r\n CompositeSelection.prototype.getAddedSelections = function () {\r\n return this.added;\r\n };\r\n CompositeSelection.prototype.getSubtractedSelections = function () {\r\n return this.subtracted;\r\n };\r\n CompositeSelection.prototype.enumerateCells = function () {\r\n var cellCount, _a, _b, add, _c, _d, cell, row, _e, _f, remove, _g, _h, cell, row, _j, _k, i, _l, _m, j, e_1_1, e_2_1;\r\n var e_3, _o, e_4, _p, e_5, _q, e_6, _r, e_2, _s, e_1, _t;\r\n return __generator(this, function (_u) {\r\n switch (_u.label) {\r\n case 0:\r\n cellCount = {};\r\n try {\r\n for (_a = __values(this.added), _b = _a.next(); !_b.done; _b = _a.next()) {\r\n add = _b.value;\r\n try {\r\n for (_c = (e_4 = void 0, __values(add.enumerateCells())), _d = _c.next(); !_d.done; _d = _c.next()) {\r\n cell = _d.value;\r\n row = cellCount[cell.i];\r\n if (!row) {\r\n cellCount[cell.i] = row = {};\r\n }\r\n if (!row[cell.j]) {\r\n row[cell.j] = 1;\r\n }\r\n else {\r\n row[cell.j]++;\r\n }\r\n }\r\n }\r\n catch (e_4_1) { e_4 = { error: e_4_1 }; }\r\n finally {\r\n try {\r\n if (_d && !_d.done && (_p = _c.return)) _p.call(_c);\r\n }\r\n finally { if (e_4) throw e_4.error; }\r\n }\r\n }\r\n }\r\n catch (e_3_1) { e_3 = { error: e_3_1 }; }\r\n finally {\r\n try {\r\n if (_b && !_b.done && (_o = _a.return)) _o.call(_a);\r\n }\r\n finally { if (e_3) throw e_3.error; }\r\n }\r\n try {\r\n for (_e = __values(this.subtracted), _f = _e.next(); !_f.done; _f = _e.next()) {\r\n remove = _f.value;\r\n try {\r\n for (_g = (e_6 = void 0, __values(remove.enumerateCells())), _h = _g.next(); !_h.done; _h = _g.next()) {\r\n cell = _h.value;\r\n row = cellCount[cell.i];\r\n if (!row) {\r\n cellCount[cell.i] = row = [];\r\n }\r\n if (!row[cell.j]) {\r\n row[cell.j] = -1;\r\n }\r\n else {\r\n row[cell.j]--;\r\n }\r\n }\r\n }\r\n catch (e_6_1) { e_6 = { error: e_6_1 }; }\r\n finally {\r\n try {\r\n if (_h && !_h.done && (_r = _g.return)) _r.call(_g);\r\n }\r\n finally { if (e_6) throw e_6.error; }\r\n }\r\n }\r\n }\r\n catch (e_5_1) { e_5 = { error: e_5_1 }; }\r\n finally {\r\n try {\r\n if (_f && !_f.done && (_q = _e.return)) _q.call(_e);\r\n }\r\n finally { if (e_5) throw e_5.error; }\r\n }\r\n _u.label = 1;\r\n case 1:\r\n _u.trys.push([1, 12, 13, 14]);\r\n _j = __values(Object.keys(cellCount)), _k = _j.next();\r\n _u.label = 2;\r\n case 2:\r\n if (!!_k.done) return [3, 11];\r\n i = _k.value;\r\n _u.label = 3;\r\n case 3:\r\n _u.trys.push([3, 8, 9, 10]);\r\n _l = (e_1 = void 0, __values(Object.keys(cellCount[i]))), _m = _l.next();\r\n _u.label = 4;\r\n case 4:\r\n if (!!_m.done) return [3, 7];\r\n j = _m.value;\r\n if (!(cellCount[i][j] > 0)) return [3, 6];\r\n return [4, { i: Number(i), j: Number(j) }];\r\n case 5:\r\n _u.sent();\r\n _u.label = 6;\r\n case 6:\r\n _m = _l.next();\r\n return [3, 4];\r\n case 7: return [3, 10];\r\n case 8:\r\n e_1_1 = _u.sent();\r\n e_1 = { error: e_1_1 };\r\n return [3, 10];\r\n case 9:\r\n try {\r\n if (_m && !_m.done && (_t = _l.return)) _t.call(_l);\r\n }\r\n finally { if (e_1) throw e_1.error; }\r\n return [7];\r\n case 10:\r\n _k = _j.next();\r\n return [3, 2];\r\n case 11: return [3, 14];\r\n case 12:\r\n e_2_1 = _u.sent();\r\n e_2 = { error: e_2_1 };\r\n return [3, 14];\r\n case 13:\r\n try {\r\n if (_k && !_k.done && (_s = _j.return)) _s.call(_j);\r\n }\r\n finally { if (e_2) throw e_2.error; }\r\n return [7];\r\n case 14: return [2];\r\n }\r\n });\r\n };\r\n CompositeSelection.prototype.addSelection = function (selection) {\r\n return new CompositeSelection(__spread(this.added, [selection]), this.subtracted);\r\n };\r\n CompositeSelection.prototype.subtractSelection = function (selection) {\r\n return new CompositeSelection(this.added, __spread(this.subtracted, [selection]));\r\n };\r\n CompositeSelection.prototype.isContiguous = function () {\r\n var e_7, _a;\r\n var _this = this;\r\n var contiguousChildCount = 0;\r\n try {\r\n for (var _b = __values(this.added), _c = _b.next(); !_c.done; _c = _b.next()) {\r\n var add = _c.value;\r\n if (add.addSelection && !add.isContiguous()) {\r\n if (Array.from(add.enumerateCells()).some(function (p) { return _this.containsCell(p); })) {\r\n return false;\r\n }\r\n }\r\n else if (!!add.enumerateCells().next().value) {\r\n contiguousChildCount += Array.from(add.enumerateCells()).every(function (p) { return _this.containsCell(p); }) ? 1 : 0;\r\n }\r\n }\r\n }\r\n catch (e_7_1) { e_7 = { error: e_7_1 }; }\r\n finally {\r\n try {\r\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\r\n }\r\n finally { if (e_7) throw e_7.error; }\r\n }\r\n return contiguousChildCount < 2;\r\n };\r\n return CompositeSelection;\r\n}(WorkspaceSelection));\r\nexports.CompositeSelection = CompositeSelection;\r\n","/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n/**\n * Memo class used for decycle json objects. Uses WeakSet if available otherwise array.\n */\nvar Memo = /** @class */ (function () {\n function Memo() {\n this._hasWeakSet = typeof WeakSet === 'function';\n this._inner = this._hasWeakSet ? new WeakSet() : [];\n }\n /**\n * Sets obj to remember.\n * @param obj Object to remember\n */\n Memo.prototype.memoize = function (obj) {\n if (this._hasWeakSet) {\n if (this._inner.has(obj)) {\n return true;\n }\n this._inner.add(obj);\n return false;\n }\n // eslint-disable-next-line @typescript-eslint/prefer-for-of\n for (var i = 0; i < this._inner.length; i++) {\n var value = this._inner[i];\n if (value === obj) {\n return true;\n }\n }\n this._inner.push(obj);\n return false;\n };\n /**\n * Removes object from internal storage.\n * @param obj Object to forget\n */\n Memo.prototype.unmemoize = function (obj) {\n if (this._hasWeakSet) {\n this._inner.delete(obj);\n }\n else {\n for (var i = 0; i < this._inner.length; i++) {\n if (this._inner[i] === obj) {\n this._inner.splice(i, 1);\n break;\n }\n }\n }\n };\n return Memo;\n}());\nexport { Memo };\n//# sourceMappingURL=memo.js.map","var path = '/common/components/activity-stepper/activity-stepper-template.html';\nvar html = \"
{{ step.title.charAt() }}
{{step.title}}
{{ step.date | date : 'MMM d, yyyy' }} at {{ step.date | date : 'h:mm a' }}
=vm.activities.length)\\\" style=\\\"border-left:1px solid #{{step.color}}\\\">
Created by : {{step.name}}
Comments : {{ (step.description) ? step.description: 'No comments'}}
\";\nwindow.angular.module('apex.core.templateCache').run(['$templateCache', function(c) { c.put(path, html) }]);\nmodule.exports = path;","var path = '/common/components/address/address-snippet.html';\nvar html = \"{{ $ctrl.address.StreetLine1 }}{{ $ctrl.address.StreetLine2 ? '' : ',' }}
Suite {{ $ctrl.address.StreetLine2 }}
{{ $ctrl.address.City }}, {{ $ctrl.address.StateProvince.StateName || $ctrl.address.StateName || \\\"State/Province?\\\" }}  {{ $ctrl.address.PostalCode }}
{{ $ctrl.address.Country.CountryName || $ctrl.address.CountryName || \\\"Country?\\\" }} \";\nwindow.angular.module('apex.core.templateCache').run(['$templateCache', function(c) { c.put(path, html) }]);\nmodule.exports = path;","var path = '/common/components/checkbox-list/checkbox-list.html';\nvar html = \"
\";\nwindow.angular.module('apex.core.templateCache').run(['$templateCache', function(c) { c.put(path, html) }]);\nmodule.exports = path;","var path = '/common/components/loading-spinner/loading-spinner.html';\nvar html = \"
Loading...
\";\nwindow.angular.module('apex.core.templateCache').run(['$templateCache', function(c) { c.put(path, html) }]);\nmodule.exports = path;","var path = '/common/components/collapsible-sidebar/collapsible-sidebar-shell.html';\nvar html = \"
\";\nwindow.angular.module('apex.core.templateCache').run(['$templateCache', function(c) { c.put(path, html) }]);\nmodule.exports = path;","require('../../modules/es.symbol');\nrequire('../../modules/es.object.assign');\nrequire('../../modules/es.object.create');\nrequire('../../modules/es.object.define-property');\nrequire('../../modules/es.object.define-properties');\nrequire('../../modules/es.object.entries');\nrequire('../../modules/es.object.freeze');\nrequire('../../modules/es.object.from-entries');\nrequire('../../modules/es.object.get-own-property-descriptor');\nrequire('../../modules/es.object.get-own-property-descriptors');\nrequire('../../modules/es.object.get-own-property-names');\nrequire('../../modules/es.object.get-prototype-of');\nrequire('../../modules/es.object.is');\nrequire('../../modules/es.object.is-extensible');\nrequire('../../modules/es.object.is-frozen');\nrequire('../../modules/es.object.is-sealed');\nrequire('../../modules/es.object.keys');\nrequire('../../modules/es.object.prevent-extensions');\nrequire('../../modules/es.object.seal');\nrequire('../../modules/es.object.set-prototype-of');\nrequire('../../modules/es.object.values');\nrequire('../../modules/es.object.to-string');\nrequire('../../modules/es.object.define-getter');\nrequire('../../modules/es.object.define-setter');\nrequire('../../modules/es.object.lookup-getter');\nrequire('../../modules/es.object.lookup-setter');\nrequire('../../modules/es.math.to-string-tag');\nrequire('../../modules/es.json.to-string-tag');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Object;\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar IS_PURE = require('../internals/is-pure');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\nvar fails = require('../internals/fails');\nvar has = require('../internals/has');\nvar isArray = require('../internals/is-array');\nvar isObject = require('../internals/is-object');\nvar anObject = require('../internals/an-object');\nvar toObject = require('../internals/to-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPrimitive = require('../internals/to-primitive');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar nativeObjectCreate = require('../internals/object-create');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertyNamesExternal = require('../internals/object-get-own-property-names-external');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar shared = require('../internals/shared');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar uid = require('../internals/uid');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar InternalStateModule = require('../internals/internal-state');\nvar $forEach = require('../internals/array-iteration').forEach;\n\nvar HIDDEN = sharedKey('hidden');\nvar SYMBOL = 'Symbol';\nvar PROTOTYPE = 'prototype';\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(SYMBOL);\nvar ObjectPrototype = Object[PROTOTYPE];\nvar $Symbol = global.Symbol;\nvar $stringify = getBuiltIn('JSON', 'stringify');\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\nvar nativeDefineProperty = definePropertyModule.f;\nvar nativeGetOwnPropertyNames = getOwnPropertyNamesExternal.f;\nvar nativePropertyIsEnumerable = propertyIsEnumerableModule.f;\nvar AllSymbols = shared('symbols');\nvar ObjectPrototypeSymbols = shared('op-symbols');\nvar StringToSymbolRegistry = shared('string-to-symbol-registry');\nvar SymbolToStringRegistry = shared('symbol-to-string-registry');\nvar WellKnownSymbolsStore = shared('wks');\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar USE_SETTER = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDescriptor = DESCRIPTORS && fails(function () {\n return nativeObjectCreate(nativeDefineProperty({}, 'a', {\n get: function () { return nativeDefineProperty(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (O, P, Attributes) {\n var ObjectPrototypeDescriptor = nativeGetOwnPropertyDescriptor(ObjectPrototype, P);\n if (ObjectPrototypeDescriptor) delete ObjectPrototype[P];\n nativeDefineProperty(O, P, Attributes);\n if (ObjectPrototypeDescriptor && O !== ObjectPrototype) {\n nativeDefineProperty(ObjectPrototype, P, ObjectPrototypeDescriptor);\n }\n} : nativeDefineProperty;\n\nvar wrap = function (tag, description) {\n var symbol = AllSymbols[tag] = nativeObjectCreate($Symbol[PROTOTYPE]);\n setInternalState(symbol, {\n type: SYMBOL,\n tag: tag,\n description: description\n });\n if (!DESCRIPTORS) symbol.description = description;\n return symbol;\n};\n\nvar isSymbol = USE_SYMBOL_AS_UID ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n return Object(it) instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(O, P, Attributes) {\n if (O === ObjectPrototype) $defineProperty(ObjectPrototypeSymbols, P, Attributes);\n anObject(O);\n var key = toPrimitive(P, true);\n anObject(Attributes);\n if (has(AllSymbols, key)) {\n if (!Attributes.enumerable) {\n if (!has(O, HIDDEN)) nativeDefineProperty(O, HIDDEN, createPropertyDescriptor(1, {}));\n O[HIDDEN][key] = true;\n } else {\n if (has(O, HIDDEN) && O[HIDDEN][key]) O[HIDDEN][key] = false;\n Attributes = nativeObjectCreate(Attributes, { enumerable: createPropertyDescriptor(0, false) });\n } return setSymbolDescriptor(O, key, Attributes);\n } return nativeDefineProperty(O, key, Attributes);\n};\n\nvar $defineProperties = function defineProperties(O, Properties) {\n anObject(O);\n var properties = toIndexedObject(Properties);\n var keys = objectKeys(properties).concat($getOwnPropertySymbols(properties));\n $forEach(keys, function (key) {\n if (!DESCRIPTORS || $propertyIsEnumerable.call(properties, key)) $defineProperty(O, key, properties[key]);\n });\n return O;\n};\n\nvar $create = function create(O, Properties) {\n return Properties === undefined ? nativeObjectCreate(O) : $defineProperties(nativeObjectCreate(O), Properties);\n};\n\nvar $propertyIsEnumerable = function propertyIsEnumerable(V) {\n var P = toPrimitive(V, true);\n var enumerable = nativePropertyIsEnumerable.call(this, P);\n if (this === ObjectPrototype && has(AllSymbols, P) && !has(ObjectPrototypeSymbols, P)) return false;\n return enumerable || !has(this, P) || !has(AllSymbols, P) || has(this, HIDDEN) && this[HIDDEN][P] ? enumerable : true;\n};\n\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(O, P) {\n var it = toIndexedObject(O);\n var key = toPrimitive(P, true);\n if (it === ObjectPrototype && has(AllSymbols, key) && !has(ObjectPrototypeSymbols, key)) return;\n var descriptor = nativeGetOwnPropertyDescriptor(it, key);\n if (descriptor && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) {\n descriptor.enumerable = true;\n }\n return descriptor;\n};\n\nvar $getOwnPropertyNames = function getOwnPropertyNames(O) {\n var names = nativeGetOwnPropertyNames(toIndexedObject(O));\n var result = [];\n $forEach(names, function (key) {\n if (!has(AllSymbols, key) && !has(hiddenKeys, key)) result.push(key);\n });\n return result;\n};\n\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(O) {\n var IS_OBJECT_PROTOTYPE = O === ObjectPrototype;\n var names = nativeGetOwnPropertyNames(IS_OBJECT_PROTOTYPE ? ObjectPrototypeSymbols : toIndexedObject(O));\n var result = [];\n $forEach(names, function (key) {\n if (has(AllSymbols, key) && (!IS_OBJECT_PROTOTYPE || has(ObjectPrototype, key))) {\n result.push(AllSymbols[key]);\n }\n });\n return result;\n};\n\n// `Symbol` constructor\n// https://tc39.github.io/ecma262/#sec-symbol-constructor\nif (!NATIVE_SYMBOL) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor');\n var description = !arguments.length || arguments[0] === undefined ? undefined : String(arguments[0]);\n var tag = uid(description);\n var setter = function (value) {\n if (this === ObjectPrototype) setter.call(ObjectPrototypeSymbols, value);\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDescriptor(this, tag, createPropertyDescriptor(1, value));\n };\n if (DESCRIPTORS && USE_SETTER) setSymbolDescriptor(ObjectPrototype, tag, { configurable: true, set: setter });\n return wrap(tag, description);\n };\n\n redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n return getInternalState(this).tag;\n });\n\n redefine($Symbol, 'withoutSetter', function (description) {\n return wrap(uid(description), description);\n });\n\n propertyIsEnumerableModule.f = $propertyIsEnumerable;\n definePropertyModule.f = $defineProperty;\n getOwnPropertyDescriptorModule.f = $getOwnPropertyDescriptor;\n getOwnPropertyNamesModule.f = getOwnPropertyNamesExternal.f = $getOwnPropertyNames;\n getOwnPropertySymbolsModule.f = $getOwnPropertySymbols;\n\n wrappedWellKnownSymbolModule.f = function (name) {\n return wrap(wellKnownSymbol(name), name);\n };\n\n if (DESCRIPTORS) {\n // https://github.com/tc39/proposal-Symbol-description\n nativeDefineProperty($Symbol[PROTOTYPE], 'description', {\n configurable: true,\n get: function description() {\n return getInternalState(this).description;\n }\n });\n if (!IS_PURE) {\n redefine(ObjectPrototype, 'propertyIsEnumerable', $propertyIsEnumerable, { unsafe: true });\n }\n }\n}\n\n$({ global: true, wrap: true, forced: !NATIVE_SYMBOL, sham: !NATIVE_SYMBOL }, {\n Symbol: $Symbol\n});\n\n$forEach(objectKeys(WellKnownSymbolsStore), function (name) {\n defineWellKnownSymbol(name);\n});\n\n$({ target: SYMBOL, stat: true, forced: !NATIVE_SYMBOL }, {\n // `Symbol.for` method\n // https://tc39.github.io/ecma262/#sec-symbol.for\n 'for': function (key) {\n var string = String(key);\n if (has(StringToSymbolRegistry, string)) return StringToSymbolRegistry[string];\n var symbol = $Symbol(string);\n StringToSymbolRegistry[string] = symbol;\n SymbolToStringRegistry[symbol] = string;\n return symbol;\n },\n // `Symbol.keyFor` method\n // https://tc39.github.io/ecma262/#sec-symbol.keyfor\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol');\n if (has(SymbolToStringRegistry, sym)) return SymbolToStringRegistry[sym];\n },\n useSetter: function () { USE_SETTER = true; },\n useSimple: function () { USE_SETTER = false; }\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL, sham: !DESCRIPTORS }, {\n // `Object.create` method\n // https://tc39.github.io/ecma262/#sec-object.create\n create: $create,\n // `Object.defineProperty` method\n // https://tc39.github.io/ecma262/#sec-object.defineproperty\n defineProperty: $defineProperty,\n // `Object.defineProperties` method\n // https://tc39.github.io/ecma262/#sec-object.defineproperties\n defineProperties: $defineProperties,\n // `Object.getOwnPropertyDescriptor` method\n // https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptors\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL }, {\n // `Object.getOwnPropertyNames` method\n // https://tc39.github.io/ecma262/#sec-object.getownpropertynames\n getOwnPropertyNames: $getOwnPropertyNames,\n // `Object.getOwnPropertySymbols` method\n // https://tc39.github.io/ecma262/#sec-object.getownpropertysymbols\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n// https://bugs.chromium.org/p/v8/issues/detail?id=3443\n$({ target: 'Object', stat: true, forced: fails(function () { getOwnPropertySymbolsModule.f(1); }) }, {\n getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n return getOwnPropertySymbolsModule.f(toObject(it));\n }\n});\n\n// `JSON.stringify` method behavior with symbols\n// https://tc39.github.io/ecma262/#sec-json.stringify\nif ($stringify) {\n var FORCED_JSON_STRINGIFY = !NATIVE_SYMBOL || fails(function () {\n var symbol = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n return $stringify([symbol]) != '[null]'\n // WebKit converts symbol values to JSON as null\n || $stringify({ a: symbol }) != '{}'\n // V8 throws on boxed symbols\n || $stringify(Object(symbol)) != '{}';\n });\n\n $({ target: 'JSON', stat: true, forced: FORCED_JSON_STRINGIFY }, {\n // eslint-disable-next-line no-unused-vars\n stringify: function stringify(it, replacer, space) {\n var args = [it];\n var index = 1;\n var $replacer;\n while (arguments.length > index) args.push(arguments[index++]);\n $replacer = replacer;\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n if (!isArray(replacer)) replacer = function (key, value) {\n if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return $stringify.apply(null, args);\n }\n });\n}\n\n// `Symbol.prototype[@@toPrimitive]` method\n// https://tc39.github.io/ecma262/#sec-symbol.prototype-@@toprimitive\nif (!$Symbol[PROTOTYPE][TO_PRIMITIVE]) {\n createNonEnumerableProperty($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n}\n// `Symbol.prototype[@@toStringTag]` property\n// https://tc39.github.io/ecma262/#sec-symbol.prototype-@@tostringtag\nsetToStringTag($Symbol, SYMBOL);\n\nhiddenKeys[HIDDEN] = true;\n","var global = require('../internals/global');\nvar inspectSource = require('../internals/inspect-source');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = typeof WeakMap === 'function' && /native code/.test(inspectSource(WeakMap));\n","var has = require('../internals/has');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source) {\n var keys = ownKeys(source);\n var defineProperty = definePropertyModule.f;\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!has(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n};\n","var path = require('../internals/path');\nvar has = require('../internals/has');\nvar wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');\nvar defineProperty = require('../internals/object-define-property').f;\n\nmodule.exports = function (NAME) {\n var Symbol = path.Symbol || (path.Symbol = {});\n if (!has(Symbol, NAME)) defineProperty(Symbol, NAME, {\n value: wrappedWellKnownSymbolModule.f(NAME)\n });\n};\n","var $ = require('../internals/export');\nvar assign = require('../internals/object-assign');\n\n// `Object.assign` method\n// https://tc39.github.io/ecma262/#sec-object.assign\n$({ target: 'Object', stat: true, forced: Object.assign !== assign }, {\n assign: assign\n});\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\n\nvar nativeAssign = Object.assign;\nvar defineProperty = Object.defineProperty;\n\n// `Object.assign` method\n// https://tc39.github.io/ecma262/#sec-object.assign\nmodule.exports = !nativeAssign || fails(function () {\n // should have correct order of operations (Edge bug)\n if (DESCRIPTORS && nativeAssign({ b: 1 }, nativeAssign(defineProperty({}, 'a', {\n enumerable: true,\n get: function () {\n defineProperty(this, 'b', {\n value: 3,\n enumerable: false\n });\n }\n }), { b: 2 })).b !== 1) return true;\n // should work with symbols and should have deterministic property order (V8 bug)\n var A = {};\n var B = {};\n // eslint-disable-next-line no-undef\n var symbol = Symbol();\n var alphabet = 'abcdefghijklmnopqrst';\n A[symbol] = 7;\n alphabet.split('').forEach(function (chr) { B[chr] = chr; });\n return nativeAssign({}, A)[symbol] != 7 || objectKeys(nativeAssign({}, B)).join('') != alphabet;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n var T = toObject(target);\n var argumentsLength = arguments.length;\n var index = 1;\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n var propertyIsEnumerable = propertyIsEnumerableModule.f;\n while (argumentsLength > index) {\n var S = IndexedObject(arguments[index++]);\n var keys = getOwnPropertySymbols ? objectKeys(S).concat(getOwnPropertySymbols(S)) : objectKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) {\n key = keys[j++];\n if (!DESCRIPTORS || propertyIsEnumerable.call(S, key)) T[key] = S[key];\n }\n } return T;\n} : nativeAssign;\n","var $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar create = require('../internals/object-create');\n\n// `Object.create` method\n// https://tc39.github.io/ecma262/#sec-object.create\n$({ target: 'Object', stat: true, sham: !DESCRIPTORS }, {\n create: create\n});\n","var $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar objectDefinePropertyModile = require('../internals/object-define-property');\n\n// `Object.defineProperty` method\n// https://tc39.github.io/ecma262/#sec-object.defineproperty\n$({ target: 'Object', stat: true, forced: !DESCRIPTORS, sham: !DESCRIPTORS }, {\n defineProperty: objectDefinePropertyModile.f\n});\n","var $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar defineProperties = require('../internals/object-define-properties');\n\n// `Object.defineProperties` method\n// https://tc39.github.io/ecma262/#sec-object.defineproperties\n$({ target: 'Object', stat: true, forced: !DESCRIPTORS, sham: !DESCRIPTORS }, {\n defineProperties: defineProperties\n});\n","var $ = require('../internals/export');\nvar $entries = require('../internals/object-to-array').entries;\n\n// `Object.entries` method\n// https://tc39.github.io/ecma262/#sec-object.entries\n$({ target: 'Object', stat: true }, {\n entries: function entries(O) {\n return $entries(O);\n }\n});\n","var $ = require('../internals/export');\nvar FREEZING = require('../internals/freezing');\nvar fails = require('../internals/fails');\nvar isObject = require('../internals/is-object');\nvar onFreeze = require('../internals/internal-metadata').onFreeze;\n\nvar nativeFreeze = Object.freeze;\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeFreeze(1); });\n\n// `Object.freeze` method\n// https://tc39.github.io/ecma262/#sec-object.freeze\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES, sham: !FREEZING }, {\n freeze: function freeze(it) {\n return nativeFreeze && isObject(it) ? nativeFreeze(onFreeze(it)) : it;\n }\n});\n","var $ = require('../internals/export');\nvar iterate = require('../internals/iterate');\nvar createProperty = require('../internals/create-property');\n\n// `Object.fromEntries` method\n// https://github.com/tc39/proposal-object-from-entries\n$({ target: 'Object', stat: true }, {\n fromEntries: function fromEntries(iterable) {\n var obj = {};\n iterate(iterable, function (k, v) {\n createProperty(obj, k, v);\n }, undefined, true);\n return obj;\n }\n});\n","var $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar nativeGetOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeGetOwnPropertyDescriptor(1); });\nvar FORCED = !DESCRIPTORS || FAILS_ON_PRIMITIVES;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptor\n$({ target: 'Object', stat: true, forced: FORCED, sham: !DESCRIPTORS }, {\n getOwnPropertyDescriptor: function getOwnPropertyDescriptor(it, key) {\n return nativeGetOwnPropertyDescriptor(toIndexedObject(it), key);\n }\n});\n","var $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar ownKeys = require('../internals/own-keys');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar createProperty = require('../internals/create-property');\n\n// `Object.getOwnPropertyDescriptors` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptors\n$({ target: 'Object', stat: true, sham: !DESCRIPTORS }, {\n getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) {\n var O = toIndexedObject(object);\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n var keys = ownKeys(O);\n var result = {};\n var index = 0;\n var key, descriptor;\n while (keys.length > index) {\n descriptor = getOwnPropertyDescriptor(O, key = keys[index++]);\n if (descriptor !== undefined) createProperty(result, key, descriptor);\n }\n return result;\n }\n});\n","var $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar nativeGetOwnPropertyNames = require('../internals/object-get-own-property-names-external').f;\n\nvar FAILS_ON_PRIMITIVES = fails(function () { return !Object.getOwnPropertyNames(1); });\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertynames\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, {\n getOwnPropertyNames: nativeGetOwnPropertyNames\n});\n","var $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar toObject = require('../internals/to-object');\nvar nativeGetPrototypeOf = require('../internals/object-get-prototype-of');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeGetPrototypeOf(1); });\n\n// `Object.getPrototypeOf` method\n// https://tc39.github.io/ecma262/#sec-object.getprototypeof\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES, sham: !CORRECT_PROTOTYPE_GETTER }, {\n getPrototypeOf: function getPrototypeOf(it) {\n return nativeGetPrototypeOf(toObject(it));\n }\n});\n\n","var $ = require('../internals/export');\nvar is = require('../internals/same-value');\n\n// `Object.is` method\n// https://tc39.github.io/ecma262/#sec-object.is\n$({ target: 'Object', stat: true }, {\n is: is\n});\n","// `SameValue` abstract operation\n// https://tc39.github.io/ecma262/#sec-samevalue\nmodule.exports = Object.is || function is(x, y) {\n // eslint-disable-next-line no-self-compare\n return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y;\n};\n","var $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar isObject = require('../internals/is-object');\n\nvar nativeIsExtensible = Object.isExtensible;\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeIsExtensible(1); });\n\n// `Object.isExtensible` method\n// https://tc39.github.io/ecma262/#sec-object.isextensible\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, {\n isExtensible: function isExtensible(it) {\n return isObject(it) ? nativeIsExtensible ? nativeIsExtensible(it) : true : false;\n }\n});\n","var $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar isObject = require('../internals/is-object');\n\nvar nativeIsFrozen = Object.isFrozen;\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeIsFrozen(1); });\n\n// `Object.isFrozen` method\n// https://tc39.github.io/ecma262/#sec-object.isfrozen\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, {\n isFrozen: function isFrozen(it) {\n return isObject(it) ? nativeIsFrozen ? nativeIsFrozen(it) : false : true;\n }\n});\n","var $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar isObject = require('../internals/is-object');\n\nvar nativeIsSealed = Object.isSealed;\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeIsSealed(1); });\n\n// `Object.isSealed` method\n// https://tc39.github.io/ecma262/#sec-object.issealed\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, {\n isSealed: function isSealed(it) {\n return isObject(it) ? nativeIsSealed ? nativeIsSealed(it) : false : true;\n }\n});\n","var $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar nativeKeys = require('../internals/object-keys');\nvar fails = require('../internals/fails');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeKeys(1); });\n\n// `Object.keys` method\n// https://tc39.github.io/ecma262/#sec-object.keys\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, {\n keys: function keys(it) {\n return nativeKeys(toObject(it));\n }\n});\n","var $ = require('../internals/export');\nvar isObject = require('../internals/is-object');\nvar onFreeze = require('../internals/internal-metadata').onFreeze;\nvar FREEZING = require('../internals/freezing');\nvar fails = require('../internals/fails');\n\nvar nativePreventExtensions = Object.preventExtensions;\nvar FAILS_ON_PRIMITIVES = fails(function () { nativePreventExtensions(1); });\n\n// `Object.preventExtensions` method\n// https://tc39.github.io/ecma262/#sec-object.preventextensions\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES, sham: !FREEZING }, {\n preventExtensions: function preventExtensions(it) {\n return nativePreventExtensions && isObject(it) ? nativePreventExtensions(onFreeze(it)) : it;\n }\n});\n","var $ = require('../internals/export');\nvar isObject = require('../internals/is-object');\nvar onFreeze = require('../internals/internal-metadata').onFreeze;\nvar FREEZING = require('../internals/freezing');\nvar fails = require('../internals/fails');\n\nvar nativeSeal = Object.seal;\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeSeal(1); });\n\n// `Object.seal` method\n// https://tc39.github.io/ecma262/#sec-object.seal\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES, sham: !FREEZING }, {\n seal: function seal(it) {\n return nativeSeal && isObject(it) ? nativeSeal(onFreeze(it)) : it;\n }\n});\n","var $ = require('../internals/export');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\n\n// `Object.setPrototypeOf` method\n// https://tc39.github.io/ecma262/#sec-object.setprototypeof\n$({ target: 'Object', stat: true }, {\n setPrototypeOf: setPrototypeOf\n});\n","var isObject = require('../internals/is-object');\n\nmodule.exports = function (it) {\n if (!isObject(it) && it !== null) {\n throw TypeError(\"Can't set \" + String(it) + ' as a prototype');\n } return it;\n};\n","var $ = require('../internals/export');\nvar $values = require('../internals/object-to-array').values;\n\n// `Object.values` method\n// https://tc39.github.io/ecma262/#sec-object.values\n$({ target: 'Object', stat: true }, {\n values: function values(O) {\n return $values(O);\n }\n});\n","'use strict';\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar classof = require('../internals/classof');\n\n// `Object.prototype.toString` method implementation\n// https://tc39.github.io/ecma262/#sec-object.prototype.tostring\nmodule.exports = TO_STRING_TAG_SUPPORT ? {}.toString : function toString() {\n return '[object ' + classof(this) + ']';\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar FORCED = require('../internals/object-prototype-accessors-forced');\nvar toObject = require('../internals/to-object');\nvar aFunction = require('../internals/a-function');\nvar definePropertyModule = require('../internals/object-define-property');\n\n// `Object.prototype.__defineGetter__` method\n// https://tc39.github.io/ecma262/#sec-object.prototype.__defineGetter__\nif (DESCRIPTORS) {\n $({ target: 'Object', proto: true, forced: FORCED }, {\n __defineGetter__: function __defineGetter__(P, getter) {\n definePropertyModule.f(toObject(this), P, { get: aFunction(getter), enumerable: true, configurable: true });\n }\n });\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar FORCED = require('../internals/object-prototype-accessors-forced');\nvar toObject = require('../internals/to-object');\nvar aFunction = require('../internals/a-function');\nvar definePropertyModule = require('../internals/object-define-property');\n\n// `Object.prototype.__defineSetter__` method\n// https://tc39.github.io/ecma262/#sec-object.prototype.__defineSetter__\nif (DESCRIPTORS) {\n $({ target: 'Object', proto: true, forced: FORCED }, {\n __defineSetter__: function __defineSetter__(P, setter) {\n definePropertyModule.f(toObject(this), P, { set: aFunction(setter), enumerable: true, configurable: true });\n }\n });\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar FORCED = require('../internals/object-prototype-accessors-forced');\nvar toObject = require('../internals/to-object');\nvar toPrimitive = require('../internals/to-primitive');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\n\n// `Object.prototype.__lookupGetter__` method\n// https://tc39.github.io/ecma262/#sec-object.prototype.__lookupGetter__\nif (DESCRIPTORS) {\n $({ target: 'Object', proto: true, forced: FORCED }, {\n __lookupGetter__: function __lookupGetter__(P) {\n var O = toObject(this);\n var key = toPrimitive(P, true);\n var desc;\n do {\n if (desc = getOwnPropertyDescriptor(O, key)) return desc.get;\n } while (O = getPrototypeOf(O));\n }\n });\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar FORCED = require('../internals/object-prototype-accessors-forced');\nvar toObject = require('../internals/to-object');\nvar toPrimitive = require('../internals/to-primitive');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\n\n// `Object.prototype.__lookupSetter__` method\n// https://tc39.github.io/ecma262/#sec-object.prototype.__lookupSetter__\nif (DESCRIPTORS) {\n $({ target: 'Object', proto: true, forced: FORCED }, {\n __lookupSetter__: function __lookupSetter__(P) {\n var O = toObject(this);\n var key = toPrimitive(P, true);\n var desc;\n do {\n if (desc = getOwnPropertyDescriptor(O, key)) return desc.set;\n } while (O = getPrototypeOf(O));\n }\n });\n}\n","var setToStringTag = require('../internals/set-to-string-tag');\n\n// Math[@@toStringTag] property\n// https://tc39.github.io/ecma262/#sec-math-@@tostringtag\nsetToStringTag(Math, 'Math', true);\n","var global = require('../internals/global');\nvar setToStringTag = require('../internals/set-to-string-tag');\n\n// JSON[@@toStringTag] property\n// https://tc39.github.io/ecma262/#sec-json-@@tostringtag\nsetToStringTag(global.JSON, 'JSON', true);\n","require('../../modules/es.string.iterator');\nrequire('../../modules/es.array.from');\nrequire('../../modules/es.array.is-array');\nrequire('../../modules/es.array.of');\nrequire('../../modules/es.array.concat');\nrequire('../../modules/es.array.copy-within');\nrequire('../../modules/es.array.every');\nrequire('../../modules/es.array.fill');\nrequire('../../modules/es.array.filter');\nrequire('../../modules/es.array.find');\nrequire('../../modules/es.array.find-index');\nrequire('../../modules/es.array.flat');\nrequire('../../modules/es.array.flat-map');\nrequire('../../modules/es.array.for-each');\nrequire('../../modules/es.array.includes');\nrequire('../../modules/es.array.index-of');\nrequire('../../modules/es.array.iterator');\nrequire('../../modules/es.array.join');\nrequire('../../modules/es.array.last-index-of');\nrequire('../../modules/es.array.map');\nrequire('../../modules/es.array.reduce');\nrequire('../../modules/es.array.reduce-right');\nrequire('../../modules/es.array.reverse');\nrequire('../../modules/es.array.slice');\nrequire('../../modules/es.array.some');\nrequire('../../modules/es.array.sort');\nrequire('../../modules/es.array.species');\nrequire('../../modules/es.array.splice');\nrequire('../../modules/es.array.unscopables.flat');\nrequire('../../modules/es.array.unscopables.flat-map');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Array;\n","var toInteger = require('../internals/to-integer');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `String.prototype.{ codePointAt, at }` methods implementation\nvar createMethod = function (CONVERT_TO_STRING) {\n return function ($this, pos) {\n var S = String(requireObjectCoercible($this));\n var position = toInteger(pos);\n var size = S.length;\n var first, second;\n if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n first = S.charCodeAt(position);\n return first < 0xD800 || first > 0xDBFF || position + 1 === size\n || (second = S.charCodeAt(position + 1)) < 0xDC00 || second > 0xDFFF\n ? CONVERT_TO_STRING ? S.charAt(position) : first\n : CONVERT_TO_STRING ? S.slice(position, position + 2) : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n };\n};\n\nmodule.exports = {\n // `String.prototype.codePointAt` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.codepointat\n codeAt: createMethod(false),\n // `String.prototype.at` method\n // https://github.com/mathiasbynens/String.prototype.at\n charAt: createMethod(true)\n};\n","'use strict';\nvar IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar Iterators = require('../internals/iterators');\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (IteratorConstructor, NAME, next) {\n var TO_STRING_TAG = NAME + ' Iterator';\n IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(1, next) });\n setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);\n Iterators[TO_STRING_TAG] = returnThis;\n return IteratorConstructor;\n};\n","var $ = require('../internals/export');\nvar from = require('../internals/array-from');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\n\nvar INCORRECT_ITERATION = !checkCorrectnessOfIteration(function (iterable) {\n Array.from(iterable);\n});\n\n// `Array.from` method\n// https://tc39.github.io/ecma262/#sec-array.from\n$({ target: 'Array', stat: true, forced: INCORRECT_ITERATION }, {\n from: from\n});\n","'use strict';\nvar bind = require('../internals/function-bind-context');\nvar toObject = require('../internals/to-object');\nvar callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar toLength = require('../internals/to-length');\nvar createProperty = require('../internals/create-property');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\n// `Array.from` method implementation\n// https://tc39.github.io/ecma262/#sec-array.from\nmodule.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var C = typeof this == 'function' ? this : Array;\n var argumentsLength = arguments.length;\n var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var iteratorMethod = getIteratorMethod(O);\n var index = 0;\n var length, result, step, iterator, next, value;\n if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined, 2);\n // if the target is not iterable or it's an array with the default iterator - use a simple case\n if (iteratorMethod != undefined && !(C == Array && isArrayIteratorMethod(iteratorMethod))) {\n iterator = iteratorMethod.call(O);\n next = iterator.next;\n result = new C();\n for (;!(step = next.call(iterator)).done; index++) {\n value = mapping ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true) : step.value;\n createProperty(result, index, value);\n }\n } else {\n length = toLength(O.length);\n result = new C(length);\n for (;length > index; index++) {\n value = mapping ? mapfn(O[index], index) : O[index];\n createProperty(result, index, value);\n }\n }\n result.length = index;\n return result;\n};\n","var $ = require('../internals/export');\nvar isArray = require('../internals/is-array');\n\n// `Array.isArray` method\n// https://tc39.github.io/ecma262/#sec-array.isarray\n$({ target: 'Array', stat: true }, {\n isArray: isArray\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar createProperty = require('../internals/create-property');\n\nvar ISNT_GENERIC = fails(function () {\n function F() { /* empty */ }\n return !(Array.of.call(F) instanceof F);\n});\n\n// `Array.of` method\n// https://tc39.github.io/ecma262/#sec-array.of\n// WebKit Array.of isn't generic\n$({ target: 'Array', stat: true, forced: ISNT_GENERIC }, {\n of: function of(/* ...args */) {\n var index = 0;\n var argumentsLength = arguments.length;\n var result = new (typeof this == 'function' ? this : Array)(argumentsLength);\n while (argumentsLength > index) createProperty(result, index, arguments[index++]);\n result.length = argumentsLength;\n return result;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar isArray = require('../internals/is-array');\nvar isObject = require('../internals/is-object');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar createProperty = require('../internals/create-property');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable');\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_INDEX_EXCEEDED = 'Maximum allowed index exceeded';\n\n// We can't use this feature detection in V8 since it causes\n// deoptimization and serious performance degradation\n// https://github.com/zloirock/core-js/issues/679\nvar IS_CONCAT_SPREADABLE_SUPPORT = V8_VERSION >= 51 || !fails(function () {\n var array = [];\n array[IS_CONCAT_SPREADABLE] = false;\n return array.concat()[0] !== array;\n});\n\nvar SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('concat');\n\nvar isConcatSpreadable = function (O) {\n if (!isObject(O)) return false;\n var spreadable = O[IS_CONCAT_SPREADABLE];\n return spreadable !== undefined ? !!spreadable : isArray(O);\n};\n\nvar FORCED = !IS_CONCAT_SPREADABLE_SUPPORT || !SPECIES_SUPPORT;\n\n// `Array.prototype.concat` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.concat\n// with adding support of @@isConcatSpreadable and @@species\n$({ target: 'Array', proto: true, forced: FORCED }, {\n concat: function concat(arg) { // eslint-disable-line no-unused-vars\n var O = toObject(this);\n var A = arraySpeciesCreate(O, 0);\n var n = 0;\n var i, k, length, len, E;\n for (i = -1, length = arguments.length; i < length; i++) {\n E = i === -1 ? O : arguments[i];\n if (isConcatSpreadable(E)) {\n len = toLength(E.length);\n if (n + len > MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n for (k = 0; k < len; k++, n++) if (k in E) createProperty(A, n, E[k]);\n } else {\n if (n >= MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n createProperty(A, n++, E);\n }\n }\n A.length = n;\n return A;\n }\n});\n","var $ = require('../internals/export');\nvar copyWithin = require('../internals/array-copy-within');\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// `Array.prototype.copyWithin` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.copywithin\n$({ target: 'Array', proto: true }, {\n copyWithin: copyWithin\n});\n\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('copyWithin');\n","'use strict';\nvar toObject = require('../internals/to-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toLength = require('../internals/to-length');\n\nvar min = Math.min;\n\n// `Array.prototype.copyWithin` method implementation\n// https://tc39.github.io/ecma262/#sec-array.prototype.copywithin\nmodule.exports = [].copyWithin || function copyWithin(target /* = 0 */, start /* = 0, end = @length */) {\n var O = toObject(this);\n var len = toLength(O.length);\n var to = toAbsoluteIndex(target, len);\n var from = toAbsoluteIndex(start, len);\n var end = arguments.length > 2 ? arguments[2] : undefined;\n var count = min((end === undefined ? len : toAbsoluteIndex(end, len)) - from, len - to);\n var inc = 1;\n if (from < to && to < from + count) {\n inc = -1;\n from += count - 1;\n to += count - 1;\n }\n while (count-- > 0) {\n if (from in O) O[to] = O[from];\n else delete O[to];\n to += inc;\n from += inc;\n } return O;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar $every = require('../internals/array-iteration').every;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar STRICT_METHOD = arrayMethodIsStrict('every');\nvar USES_TO_LENGTH = arrayMethodUsesToLength('every');\n\n// `Array.prototype.every` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.every\n$({ target: 'Array', proto: true, forced: !STRICT_METHOD || !USES_TO_LENGTH }, {\n every: function every(callbackfn /* , thisArg */) {\n return $every(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","var $ = require('../internals/export');\nvar fill = require('../internals/array-fill');\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// `Array.prototype.fill` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.fill\n$({ target: 'Array', proto: true }, {\n fill: fill\n});\n\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('fill');\n","'use strict';\nvar toObject = require('../internals/to-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toLength = require('../internals/to-length');\n\n// `Array.prototype.fill` method implementation\n// https://tc39.github.io/ecma262/#sec-array.prototype.fill\nmodule.exports = function fill(value /* , start = 0, end = @length */) {\n var O = toObject(this);\n var length = toLength(O.length);\n var argumentsLength = arguments.length;\n var index = toAbsoluteIndex(argumentsLength > 1 ? arguments[1] : undefined, length);\n var end = argumentsLength > 2 ? arguments[2] : undefined;\n var endPos = end === undefined ? length : toAbsoluteIndex(end, length);\n while (endPos > index) O[index++] = value;\n return O;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar $filter = require('../internals/array-iteration').filter;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('filter');\n// Edge 14- issue\nvar USES_TO_LENGTH = arrayMethodUsesToLength('filter');\n\n// `Array.prototype.filter` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.filter\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH }, {\n filter: function filter(callbackfn /* , thisArg */) {\n return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $find = require('../internals/array-iteration').find;\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar FIND = 'find';\nvar SKIPS_HOLES = true;\n\nvar USES_TO_LENGTH = arrayMethodUsesToLength(FIND);\n\n// Shouldn't skip holes\nif (FIND in []) Array(1)[FIND](function () { SKIPS_HOLES = false; });\n\n// `Array.prototype.find` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.find\n$({ target: 'Array', proto: true, forced: SKIPS_HOLES || !USES_TO_LENGTH }, {\n find: function find(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables(FIND);\n","'use strict';\nvar $ = require('../internals/export');\nvar $findIndex = require('../internals/array-iteration').findIndex;\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar FIND_INDEX = 'findIndex';\nvar SKIPS_HOLES = true;\n\nvar USES_TO_LENGTH = arrayMethodUsesToLength(FIND_INDEX);\n\n// Shouldn't skip holes\nif (FIND_INDEX in []) Array(1)[FIND_INDEX](function () { SKIPS_HOLES = false; });\n\n// `Array.prototype.findIndex` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.findindex\n$({ target: 'Array', proto: true, forced: SKIPS_HOLES || !USES_TO_LENGTH }, {\n findIndex: function findIndex(callbackfn /* , that = undefined */) {\n return $findIndex(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables(FIND_INDEX);\n","'use strict';\nvar $ = require('../internals/export');\nvar flattenIntoArray = require('../internals/flatten-into-array');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar toInteger = require('../internals/to-integer');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\n// `Array.prototype.flat` method\n// https://github.com/tc39/proposal-flatMap\n$({ target: 'Array', proto: true }, {\n flat: function flat(/* depthArg = 1 */) {\n var depthArg = arguments.length ? arguments[0] : undefined;\n var O = toObject(this);\n var sourceLen = toLength(O.length);\n var A = arraySpeciesCreate(O, 0);\n A.length = flattenIntoArray(A, O, O, sourceLen, 0, depthArg === undefined ? 1 : toInteger(depthArg));\n return A;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar flattenIntoArray = require('../internals/flatten-into-array');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar aFunction = require('../internals/a-function');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\n// `Array.prototype.flatMap` method\n// https://github.com/tc39/proposal-flatMap\n$({ target: 'Array', proto: true }, {\n flatMap: function flatMap(callbackfn /* , thisArg */) {\n var O = toObject(this);\n var sourceLen = toLength(O.length);\n var A;\n aFunction(callbackfn);\n A = arraySpeciesCreate(O, 0);\n A.length = flattenIntoArray(A, O, O, sourceLen, 0, 1, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n return A;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar forEach = require('../internals/array-for-each');\n\n// `Array.prototype.forEach` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.foreach\n$({ target: 'Array', proto: true, forced: [].forEach != forEach }, {\n forEach: forEach\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $includes = require('../internals/array-includes').includes;\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar USES_TO_LENGTH = arrayMethodUsesToLength('indexOf', { ACCESSORS: true, 1: 0 });\n\n// `Array.prototype.includes` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.includes\n$({ target: 'Array', proto: true, forced: !USES_TO_LENGTH }, {\n includes: function includes(el /* , fromIndex = 0 */) {\n return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('includes');\n","'use strict';\nvar $ = require('../internals/export');\nvar $indexOf = require('../internals/array-includes').indexOf;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar nativeIndexOf = [].indexOf;\n\nvar NEGATIVE_ZERO = !!nativeIndexOf && 1 / [1].indexOf(1, -0) < 0;\nvar STRICT_METHOD = arrayMethodIsStrict('indexOf');\nvar USES_TO_LENGTH = arrayMethodUsesToLength('indexOf', { ACCESSORS: true, 1: 0 });\n\n// `Array.prototype.indexOf` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.indexof\n$({ target: 'Array', proto: true, forced: NEGATIVE_ZERO || !STRICT_METHOD || !USES_TO_LENGTH }, {\n indexOf: function indexOf(searchElement /* , fromIndex = 0 */) {\n return NEGATIVE_ZERO\n // convert -0 to +0\n ? nativeIndexOf.apply(this, arguments) || 0\n : $indexOf(this, searchElement, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar IndexedObject = require('../internals/indexed-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar nativeJoin = [].join;\n\nvar ES3_STRINGS = IndexedObject != Object;\nvar STRICT_METHOD = arrayMethodIsStrict('join', ',');\n\n// `Array.prototype.join` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.join\n$({ target: 'Array', proto: true, forced: ES3_STRINGS || !STRICT_METHOD }, {\n join: function join(separator) {\n return nativeJoin.call(toIndexedObject(this), separator === undefined ? ',' : separator);\n }\n});\n","var $ = require('../internals/export');\nvar lastIndexOf = require('../internals/array-last-index-of');\n\n// `Array.prototype.lastIndexOf` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.lastindexof\n$({ target: 'Array', proto: true, forced: lastIndexOf !== [].lastIndexOf }, {\n lastIndexOf: lastIndexOf\n});\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toInteger = require('../internals/to-integer');\nvar toLength = require('../internals/to-length');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar min = Math.min;\nvar nativeLastIndexOf = [].lastIndexOf;\nvar NEGATIVE_ZERO = !!nativeLastIndexOf && 1 / [1].lastIndexOf(1, -0) < 0;\nvar STRICT_METHOD = arrayMethodIsStrict('lastIndexOf');\n// For preventing possible almost infinite loop in non-standard implementations, test the forward version of the method\nvar USES_TO_LENGTH = arrayMethodUsesToLength('indexOf', { ACCESSORS: true, 1: 0 });\nvar FORCED = NEGATIVE_ZERO || !STRICT_METHOD || !USES_TO_LENGTH;\n\n// `Array.prototype.lastIndexOf` method implementation\n// https://tc39.github.io/ecma262/#sec-array.prototype.lastindexof\nmodule.exports = FORCED ? function lastIndexOf(searchElement /* , fromIndex = @[*-1] */) {\n // convert -0 to +0\n if (NEGATIVE_ZERO) return nativeLastIndexOf.apply(this, arguments) || 0;\n var O = toIndexedObject(this);\n var length = toLength(O.length);\n var index = length - 1;\n if (arguments.length > 1) index = min(index, toInteger(arguments[1]));\n if (index < 0) index = length + index;\n for (;index >= 0; index--) if (index in O && O[index] === searchElement) return index || 0;\n return -1;\n} : nativeLastIndexOf;\n","'use strict';\nvar $ = require('../internals/export');\nvar $map = require('../internals/array-iteration').map;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('map');\n// FF49- issue\nvar USES_TO_LENGTH = arrayMethodUsesToLength('map');\n\n// `Array.prototype.map` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.map\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH }, {\n map: function map(callbackfn /* , thisArg */) {\n return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $reduce = require('../internals/array-reduce').left;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar STRICT_METHOD = arrayMethodIsStrict('reduce');\nvar USES_TO_LENGTH = arrayMethodUsesToLength('reduce', { 1: 0 });\n\n// `Array.prototype.reduce` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.reduce\n$({ target: 'Array', proto: true, forced: !STRICT_METHOD || !USES_TO_LENGTH }, {\n reduce: function reduce(callbackfn /* , initialValue */) {\n return $reduce(this, callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $reduceRight = require('../internals/array-reduce').right;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar STRICT_METHOD = arrayMethodIsStrict('reduceRight');\n// For preventing possible almost infinite loop in non-standard implementations, test the forward version of the method\nvar USES_TO_LENGTH = arrayMethodUsesToLength('reduce', { 1: 0 });\n\n// `Array.prototype.reduceRight` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.reduceright\n$({ target: 'Array', proto: true, forced: !STRICT_METHOD || !USES_TO_LENGTH }, {\n reduceRight: function reduceRight(callbackfn /* , initialValue */) {\n return $reduceRight(this, callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar isArray = require('../internals/is-array');\n\nvar nativeReverse = [].reverse;\nvar test = [1, 2];\n\n// `Array.prototype.reverse` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.reverse\n// fix for Safari 12.0 bug\n// https://bugs.webkit.org/show_bug.cgi?id=188794\n$({ target: 'Array', proto: true, forced: String(test) === String(test.reverse()) }, {\n reverse: function reverse() {\n // eslint-disable-next-line no-self-assign\n if (isArray(this)) this.length = this.length;\n return nativeReverse.call(this);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar isObject = require('../internals/is-object');\nvar isArray = require('../internals/is-array');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toLength = require('../internals/to-length');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar createProperty = require('../internals/create-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('slice');\nvar USES_TO_LENGTH = arrayMethodUsesToLength('slice', { ACCESSORS: true, 0: 0, 1: 2 });\n\nvar SPECIES = wellKnownSymbol('species');\nvar nativeSlice = [].slice;\nvar max = Math.max;\n\n// `Array.prototype.slice` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.slice\n// fallback for not array-like ES3 strings and DOM objects\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH }, {\n slice: function slice(start, end) {\n var O = toIndexedObject(this);\n var length = toLength(O.length);\n var k = toAbsoluteIndex(start, length);\n var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n // inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible\n var Constructor, result, n;\n if (isArray(O)) {\n Constructor = O.constructor;\n // cross-realm fallback\n if (typeof Constructor == 'function' && (Constructor === Array || isArray(Constructor.prototype))) {\n Constructor = undefined;\n } else if (isObject(Constructor)) {\n Constructor = Constructor[SPECIES];\n if (Constructor === null) Constructor = undefined;\n }\n if (Constructor === Array || Constructor === undefined) {\n return nativeSlice.call(O, k, fin);\n }\n }\n result = new (Constructor === undefined ? Array : Constructor)(max(fin - k, 0));\n for (n = 0; k < fin; k++, n++) if (k in O) createProperty(result, n, O[k]);\n result.length = n;\n return result;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $some = require('../internals/array-iteration').some;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar STRICT_METHOD = arrayMethodIsStrict('some');\nvar USES_TO_LENGTH = arrayMethodUsesToLength('some');\n\n// `Array.prototype.some` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.some\n$({ target: 'Array', proto: true, forced: !STRICT_METHOD || !USES_TO_LENGTH }, {\n some: function some(callbackfn /* , thisArg */) {\n return $some(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar aFunction = require('../internals/a-function');\nvar toObject = require('../internals/to-object');\nvar fails = require('../internals/fails');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar test = [];\nvar nativeSort = test.sort;\n\n// IE8-\nvar FAILS_ON_UNDEFINED = fails(function () {\n test.sort(undefined);\n});\n// V8 bug\nvar FAILS_ON_NULL = fails(function () {\n test.sort(null);\n});\n// Old WebKit\nvar STRICT_METHOD = arrayMethodIsStrict('sort');\n\nvar FORCED = FAILS_ON_UNDEFINED || !FAILS_ON_NULL || !STRICT_METHOD;\n\n// `Array.prototype.sort` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.sort\n$({ target: 'Array', proto: true, forced: FORCED }, {\n sort: function sort(comparefn) {\n return comparefn === undefined\n ? nativeSort.call(toObject(this))\n : nativeSort.call(toObject(this), aFunction(comparefn));\n }\n});\n","var setSpecies = require('../internals/set-species');\n\n// `Array[@@species]` getter\n// https://tc39.github.io/ecma262/#sec-get-array-@@species\nsetSpecies('Array');\n","'use strict';\nvar $ = require('../internals/export');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toInteger = require('../internals/to-integer');\nvar toLength = require('../internals/to-length');\nvar toObject = require('../internals/to-object');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar createProperty = require('../internals/create-property');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('splice');\nvar USES_TO_LENGTH = arrayMethodUsesToLength('splice', { ACCESSORS: true, 0: 0, 1: 2 });\n\nvar max = Math.max;\nvar min = Math.min;\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_LENGTH_EXCEEDED = 'Maximum allowed length exceeded';\n\n// `Array.prototype.splice` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.splice\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH }, {\n splice: function splice(start, deleteCount /* , ...items */) {\n var O = toObject(this);\n var len = toLength(O.length);\n var actualStart = toAbsoluteIndex(start, len);\n var argumentsLength = arguments.length;\n var insertCount, actualDeleteCount, A, k, from, to;\n if (argumentsLength === 0) {\n insertCount = actualDeleteCount = 0;\n } else if (argumentsLength === 1) {\n insertCount = 0;\n actualDeleteCount = len - actualStart;\n } else {\n insertCount = argumentsLength - 2;\n actualDeleteCount = min(max(toInteger(deleteCount), 0), len - actualStart);\n }\n if (len + insertCount - actualDeleteCount > MAX_SAFE_INTEGER) {\n throw TypeError(MAXIMUM_ALLOWED_LENGTH_EXCEEDED);\n }\n A = arraySpeciesCreate(O, actualDeleteCount);\n for (k = 0; k < actualDeleteCount; k++) {\n from = actualStart + k;\n if (from in O) createProperty(A, k, O[from]);\n }\n A.length = actualDeleteCount;\n if (insertCount < actualDeleteCount) {\n for (k = actualStart; k < len - actualDeleteCount; k++) {\n from = k + actualDeleteCount;\n to = k + insertCount;\n if (from in O) O[to] = O[from];\n else delete O[to];\n }\n for (k = len; k > len - actualDeleteCount + insertCount; k--) delete O[k - 1];\n } else if (insertCount > actualDeleteCount) {\n for (k = len - actualDeleteCount; k > actualStart; k--) {\n from = k + actualDeleteCount - 1;\n to = k + insertCount - 1;\n if (from in O) O[to] = O[from];\n else delete O[to];\n }\n }\n for (k = 0; k < insertCount; k++) {\n O[k + actualStart] = arguments[k + 2];\n }\n O.length = len - actualDeleteCount + insertCount;\n return A;\n }\n});\n","// this method was added to unscopables after implementation\n// in popular engines, so it's moved to a separate module\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\naddToUnscopables('flat');\n","// this method was added to unscopables after implementation\n// in popular engines, so it's moved to a separate module\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\naddToUnscopables('flatMap');\n","require('../../modules/es.number.constructor');\nrequire('../../modules/es.number.epsilon');\nrequire('../../modules/es.number.is-finite');\nrequire('../../modules/es.number.is-integer');\nrequire('../../modules/es.number.is-nan');\nrequire('../../modules/es.number.is-safe-integer');\nrequire('../../modules/es.number.max-safe-integer');\nrequire('../../modules/es.number.min-safe-integer');\nrequire('../../modules/es.number.parse-float');\nrequire('../../modules/es.number.parse-int');\nrequire('../../modules/es.number.to-fixed');\nrequire('../../modules/es.number.to-precision');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Number;\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar isForced = require('../internals/is-forced');\nvar redefine = require('../internals/redefine');\nvar has = require('../internals/has');\nvar classof = require('../internals/classof-raw');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar toPrimitive = require('../internals/to-primitive');\nvar fails = require('../internals/fails');\nvar create = require('../internals/object-create');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar defineProperty = require('../internals/object-define-property').f;\nvar trim = require('../internals/string-trim').trim;\n\nvar NUMBER = 'Number';\nvar NativeNumber = global[NUMBER];\nvar NumberPrototype = NativeNumber.prototype;\n\n// Opera ~12 has broken Object#toString\nvar BROKEN_CLASSOF = classof(create(NumberPrototype)) == NUMBER;\n\n// `ToNumber` abstract operation\n// https://tc39.github.io/ecma262/#sec-tonumber\nvar toNumber = function (argument) {\n var it = toPrimitive(argument, false);\n var first, third, radix, maxCode, digits, length, index, code;\n if (typeof it == 'string' && it.length > 2) {\n it = trim(it);\n first = it.charCodeAt(0);\n if (first === 43 || first === 45) {\n third = it.charCodeAt(2);\n if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix\n } else if (first === 48) {\n switch (it.charCodeAt(1)) {\n case 66: case 98: radix = 2; maxCode = 49; break; // fast equal of /^0b[01]+$/i\n case 79: case 111: radix = 8; maxCode = 55; break; // fast equal of /^0o[0-7]+$/i\n default: return +it;\n }\n digits = it.slice(2);\n length = digits.length;\n for (index = 0; index < length; index++) {\n code = digits.charCodeAt(index);\n // parseInt parses a string to a first unavailable symbol\n // but ToNumber should return NaN if a string contains unavailable symbols\n if (code < 48 || code > maxCode) return NaN;\n } return parseInt(digits, radix);\n }\n } return +it;\n};\n\n// `Number` constructor\n// https://tc39.github.io/ecma262/#sec-number-constructor\nif (isForced(NUMBER, !NativeNumber(' 0o1') || !NativeNumber('0b1') || NativeNumber('+0x1'))) {\n var NumberWrapper = function Number(value) {\n var it = arguments.length < 1 ? 0 : value;\n var dummy = this;\n return dummy instanceof NumberWrapper\n // check on 1..constructor(foo) case\n && (BROKEN_CLASSOF ? fails(function () { NumberPrototype.valueOf.call(dummy); }) : classof(dummy) != NUMBER)\n ? inheritIfRequired(new NativeNumber(toNumber(it)), dummy, NumberWrapper) : toNumber(it);\n };\n for (var keys = DESCRIPTORS ? getOwnPropertyNames(NativeNumber) : (\n // ES3:\n 'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +\n // ES2015 (in case, if modules with ES2015 Number statics required before):\n 'EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,' +\n 'MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger'\n ).split(','), j = 0, key; keys.length > j; j++) {\n if (has(NativeNumber, key = keys[j]) && !has(NumberWrapper, key)) {\n defineProperty(NumberWrapper, key, getOwnPropertyDescriptor(NativeNumber, key));\n }\n }\n NumberWrapper.prototype = NumberPrototype;\n NumberPrototype.constructor = NumberWrapper;\n redefine(global, NUMBER, NumberWrapper);\n}\n","var $ = require('../internals/export');\n\n// `Number.EPSILON` constant\n// https://tc39.github.io/ecma262/#sec-number.epsilon\n$({ target: 'Number', stat: true }, {\n EPSILON: Math.pow(2, -52)\n});\n","var $ = require('../internals/export');\nvar numberIsFinite = require('../internals/number-is-finite');\n\n// `Number.isFinite` method\n// https://tc39.github.io/ecma262/#sec-number.isfinite\n$({ target: 'Number', stat: true }, { isFinite: numberIsFinite });\n","var global = require('../internals/global');\n\nvar globalIsFinite = global.isFinite;\n\n// `Number.isFinite` method\n// https://tc39.github.io/ecma262/#sec-number.isfinite\nmodule.exports = Number.isFinite || function isFinite(it) {\n return typeof it == 'number' && globalIsFinite(it);\n};\n","var $ = require('../internals/export');\nvar isInteger = require('../internals/is-integer');\n\n// `Number.isInteger` method\n// https://tc39.github.io/ecma262/#sec-number.isinteger\n$({ target: 'Number', stat: true }, {\n isInteger: isInteger\n});\n","var $ = require('../internals/export');\n\n// `Number.isNaN` method\n// https://tc39.github.io/ecma262/#sec-number.isnan\n$({ target: 'Number', stat: true }, {\n isNaN: function isNaN(number) {\n // eslint-disable-next-line no-self-compare\n return number != number;\n }\n});\n","var $ = require('../internals/export');\nvar isInteger = require('../internals/is-integer');\n\nvar abs = Math.abs;\n\n// `Number.isSafeInteger` method\n// https://tc39.github.io/ecma262/#sec-number.issafeinteger\n$({ target: 'Number', stat: true }, {\n isSafeInteger: function isSafeInteger(number) {\n return isInteger(number) && abs(number) <= 0x1FFFFFFFFFFFFF;\n }\n});\n","var $ = require('../internals/export');\n\n// `Number.MAX_SAFE_INTEGER` constant\n// https://tc39.github.io/ecma262/#sec-number.max_safe_integer\n$({ target: 'Number', stat: true }, {\n MAX_SAFE_INTEGER: 0x1FFFFFFFFFFFFF\n});\n","var $ = require('../internals/export');\n\n// `Number.MIN_SAFE_INTEGER` constant\n// https://tc39.github.io/ecma262/#sec-number.min_safe_integer\n$({ target: 'Number', stat: true }, {\n MIN_SAFE_INTEGER: -0x1FFFFFFFFFFFFF\n});\n","var $ = require('../internals/export');\nvar parseFloat = require('../internals/number-parse-float');\n\n// `Number.parseFloat` method\n// https://tc39.github.io/ecma262/#sec-number.parseFloat\n$({ target: 'Number', stat: true, forced: Number.parseFloat != parseFloat }, {\n parseFloat: parseFloat\n});\n","var global = require('../internals/global');\nvar trim = require('../internals/string-trim').trim;\nvar whitespaces = require('../internals/whitespaces');\n\nvar $parseFloat = global.parseFloat;\nvar FORCED = 1 / $parseFloat(whitespaces + '-0') !== -Infinity;\n\n// `parseFloat` method\n// https://tc39.github.io/ecma262/#sec-parsefloat-string\nmodule.exports = FORCED ? function parseFloat(string) {\n var trimmedString = trim(String(string));\n var result = $parseFloat(trimmedString);\n return result === 0 && trimmedString.charAt(0) == '-' ? -0 : result;\n} : $parseFloat;\n","var $ = require('../internals/export');\nvar parseInt = require('../internals/number-parse-int');\n\n// `Number.parseInt` method\n// https://tc39.github.io/ecma262/#sec-number.parseint\n$({ target: 'Number', stat: true, forced: Number.parseInt != parseInt }, {\n parseInt: parseInt\n});\n","var global = require('../internals/global');\nvar trim = require('../internals/string-trim').trim;\nvar whitespaces = require('../internals/whitespaces');\n\nvar $parseInt = global.parseInt;\nvar hex = /^[+-]?0[Xx]/;\nvar FORCED = $parseInt(whitespaces + '08') !== 8 || $parseInt(whitespaces + '0x16') !== 22;\n\n// `parseInt` method\n// https://tc39.github.io/ecma262/#sec-parseint-string-radix\nmodule.exports = FORCED ? function parseInt(string, radix) {\n var S = trim(String(string));\n return $parseInt(S, (radix >>> 0) || (hex.test(S) ? 16 : 10));\n} : $parseInt;\n","'use strict';\nvar $ = require('../internals/export');\nvar toInteger = require('../internals/to-integer');\nvar thisNumberValue = require('../internals/this-number-value');\nvar repeat = require('../internals/string-repeat');\nvar fails = require('../internals/fails');\n\nvar nativeToFixed = 1.0.toFixed;\nvar floor = Math.floor;\n\nvar pow = function (x, n, acc) {\n return n === 0 ? acc : n % 2 === 1 ? pow(x, n - 1, acc * x) : pow(x * x, n / 2, acc);\n};\n\nvar log = function (x) {\n var n = 0;\n var x2 = x;\n while (x2 >= 4096) {\n n += 12;\n x2 /= 4096;\n }\n while (x2 >= 2) {\n n += 1;\n x2 /= 2;\n } return n;\n};\n\nvar FORCED = nativeToFixed && (\n 0.00008.toFixed(3) !== '0.000' ||\n 0.9.toFixed(0) !== '1' ||\n 1.255.toFixed(2) !== '1.25' ||\n 1000000000000000128.0.toFixed(0) !== '1000000000000000128'\n) || !fails(function () {\n // V8 ~ Android 4.3-\n nativeToFixed.call({});\n});\n\n// `Number.prototype.toFixed` method\n// https://tc39.github.io/ecma262/#sec-number.prototype.tofixed\n$({ target: 'Number', proto: true, forced: FORCED }, {\n // eslint-disable-next-line max-statements\n toFixed: function toFixed(fractionDigits) {\n var number = thisNumberValue(this);\n var fractDigits = toInteger(fractionDigits);\n var data = [0, 0, 0, 0, 0, 0];\n var sign = '';\n var result = '0';\n var e, z, j, k;\n\n var multiply = function (n, c) {\n var index = -1;\n var c2 = c;\n while (++index < 6) {\n c2 += n * data[index];\n data[index] = c2 % 1e7;\n c2 = floor(c2 / 1e7);\n }\n };\n\n var divide = function (n) {\n var index = 6;\n var c = 0;\n while (--index >= 0) {\n c += data[index];\n data[index] = floor(c / n);\n c = (c % n) * 1e7;\n }\n };\n\n var dataToString = function () {\n var index = 6;\n var s = '';\n while (--index >= 0) {\n if (s !== '' || index === 0 || data[index] !== 0) {\n var t = String(data[index]);\n s = s === '' ? t : s + repeat.call('0', 7 - t.length) + t;\n }\n } return s;\n };\n\n if (fractDigits < 0 || fractDigits > 20) throw RangeError('Incorrect fraction digits');\n // eslint-disable-next-line no-self-compare\n if (number != number) return 'NaN';\n if (number <= -1e21 || number >= 1e21) return String(number);\n if (number < 0) {\n sign = '-';\n number = -number;\n }\n if (number > 1e-21) {\n e = log(number * pow(2, 69, 1)) - 69;\n z = e < 0 ? number * pow(2, -e, 1) : number / pow(2, e, 1);\n z *= 0x10000000000000;\n e = 52 - e;\n if (e > 0) {\n multiply(0, z);\n j = fractDigits;\n while (j >= 7) {\n multiply(1e7, 0);\n j -= 7;\n }\n multiply(pow(10, j, 1), 0);\n j = e - 1;\n while (j >= 23) {\n divide(1 << 23);\n j -= 23;\n }\n divide(1 << j);\n multiply(1, 1);\n divide(2);\n result = dataToString();\n } else {\n multiply(0, z);\n multiply(1 << -e, 0);\n result = dataToString() + repeat.call('0', fractDigits);\n }\n }\n if (fractDigits > 0) {\n k = result.length;\n result = sign + (k <= fractDigits\n ? '0.' + repeat.call('0', fractDigits - k) + result\n : result.slice(0, k - fractDigits) + '.' + result.slice(k - fractDigits));\n } else {\n result = sign + result;\n } return result;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar thisNumberValue = require('../internals/this-number-value');\n\nvar nativeToPrecision = 1.0.toPrecision;\n\nvar FORCED = fails(function () {\n // IE7-\n return nativeToPrecision.call(1, undefined) !== '1';\n}) || !fails(function () {\n // V8 ~ Android 4.3-\n nativeToPrecision.call({});\n});\n\n// `Number.prototype.toPrecision` method\n// https://tc39.github.io/ecma262/#sec-number.prototype.toprecision\n$({ target: 'Number', proto: true, forced: FORCED }, {\n toPrecision: function toPrecision(precision) {\n return precision === undefined\n ? nativeToPrecision.call(thisNumberValue(this))\n : nativeToPrecision.call(thisNumberValue(this), precision);\n }\n});\n","require('../../modules/es.date.now');\nrequire('../../modules/es.date.to-json');\nrequire('../../modules/es.date.to-iso-string');\nrequire('../../modules/es.date.to-string');\nrequire('../../modules/es.date.to-primitive');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Date;\n","var $ = require('../internals/export');\n\n// `Date.now` method\n// https://tc39.github.io/ecma262/#sec-date.now\n$({ target: 'Date', stat: true }, {\n now: function now() {\n return new Date().getTime();\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar toObject = require('../internals/to-object');\nvar toPrimitive = require('../internals/to-primitive');\n\nvar FORCED = fails(function () {\n return new Date(NaN).toJSON() !== null\n || Date.prototype.toJSON.call({ toISOString: function () { return 1; } }) !== 1;\n});\n\n// `Date.prototype.toJSON` method\n// https://tc39.github.io/ecma262/#sec-date.prototype.tojson\n$({ target: 'Date', proto: true, forced: FORCED }, {\n // eslint-disable-next-line no-unused-vars\n toJSON: function toJSON(key) {\n var O = toObject(this);\n var pv = toPrimitive(O);\n return typeof pv == 'number' && !isFinite(pv) ? null : O.toISOString();\n }\n});\n","var $ = require('../internals/export');\nvar toISOString = require('../internals/date-to-iso-string');\n\n// `Date.prototype.toISOString` method\n// https://tc39.github.io/ecma262/#sec-date.prototype.toisostring\n// PhantomJS / old WebKit has a broken implementations\n$({ target: 'Date', proto: true, forced: Date.prototype.toISOString !== toISOString }, {\n toISOString: toISOString\n});\n","'use strict';\nvar fails = require('../internals/fails');\nvar padStart = require('../internals/string-pad').start;\n\nvar abs = Math.abs;\nvar DatePrototype = Date.prototype;\nvar getTime = DatePrototype.getTime;\nvar nativeDateToISOString = DatePrototype.toISOString;\n\n// `Date.prototype.toISOString` method implementation\n// https://tc39.github.io/ecma262/#sec-date.prototype.toisostring\n// PhantomJS / old WebKit fails here:\nmodule.exports = (fails(function () {\n return nativeDateToISOString.call(new Date(-5e13 - 1)) != '0385-07-25T07:06:39.999Z';\n}) || !fails(function () {\n nativeDateToISOString.call(new Date(NaN));\n})) ? function toISOString() {\n if (!isFinite(getTime.call(this))) throw RangeError('Invalid time value');\n var date = this;\n var year = date.getUTCFullYear();\n var milliseconds = date.getUTCMilliseconds();\n var sign = year < 0 ? '-' : year > 9999 ? '+' : '';\n return sign + padStart(abs(year), sign ? 6 : 4, 0) +\n '-' + padStart(date.getUTCMonth() + 1, 2, 0) +\n '-' + padStart(date.getUTCDate(), 2, 0) +\n 'T' + padStart(date.getUTCHours(), 2, 0) +\n ':' + padStart(date.getUTCMinutes(), 2, 0) +\n ':' + padStart(date.getUTCSeconds(), 2, 0) +\n '.' + padStart(milliseconds, 3, 0) +\n 'Z';\n} : nativeDateToISOString;\n","// https://github.com/tc39/proposal-string-pad-start-end\nvar toLength = require('../internals/to-length');\nvar repeat = require('../internals/string-repeat');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar ceil = Math.ceil;\n\n// `String.prototype.{ padStart, padEnd }` methods implementation\nvar createMethod = function (IS_END) {\n return function ($this, maxLength, fillString) {\n var S = String(requireObjectCoercible($this));\n var stringLength = S.length;\n var fillStr = fillString === undefined ? ' ' : String(fillString);\n var intMaxLength = toLength(maxLength);\n var fillLen, stringFiller;\n if (intMaxLength <= stringLength || fillStr == '') return S;\n fillLen = intMaxLength - stringLength;\n stringFiller = repeat.call(fillStr, ceil(fillLen / fillStr.length));\n if (stringFiller.length > fillLen) stringFiller = stringFiller.slice(0, fillLen);\n return IS_END ? S + stringFiller : stringFiller + S;\n };\n};\n\nmodule.exports = {\n // `String.prototype.padStart` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.padstart\n start: createMethod(false),\n // `String.prototype.padEnd` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.padend\n end: createMethod(true)\n};\n","var redefine = require('../internals/redefine');\n\nvar DatePrototype = Date.prototype;\nvar INVALID_DATE = 'Invalid Date';\nvar TO_STRING = 'toString';\nvar nativeDateToString = DatePrototype[TO_STRING];\nvar getTime = DatePrototype.getTime;\n\n// `Date.prototype.toString` method\n// https://tc39.github.io/ecma262/#sec-date.prototype.tostring\nif (new Date(NaN) + '' != INVALID_DATE) {\n redefine(DatePrototype, TO_STRING, function toString() {\n var value = getTime.call(this);\n // eslint-disable-next-line no-self-compare\n return value === value ? nativeDateToString.call(this) : INVALID_DATE;\n });\n}\n","var createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar dateToPrimitive = require('../internals/date-to-primitive');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\nvar DatePrototype = Date.prototype;\n\n// `Date.prototype[@@toPrimitive]` method\n// https://tc39.github.io/ecma262/#sec-date.prototype-@@toprimitive\nif (!(TO_PRIMITIVE in DatePrototype)) {\n createNonEnumerableProperty(DatePrototype, TO_PRIMITIVE, dateToPrimitive);\n}\n","'use strict';\nvar anObject = require('../internals/an-object');\nvar toPrimitive = require('../internals/to-primitive');\n\nmodule.exports = function (hint) {\n if (hint !== 'string' && hint !== 'number' && hint !== 'default') {\n throw TypeError('Incorrect hint');\n } return toPrimitive(anObject(this), hint !== 'number');\n};\n","require('../../modules/es.object.to-string');\nrequire('../../modules/es.string.iterator');\nrequire('../../modules/web.dom-collections.iterator');\nrequire('../../modules/es.promise');\nrequire('../../modules/es.promise.all-settled');\nrequire('../../modules/es.promise.finally');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Promise;\n","'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar NativePromise = require('../internals/native-promise-constructor');\nvar redefine = require('../internals/redefine');\nvar redefineAll = require('../internals/redefine-all');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar setSpecies = require('../internals/set-species');\nvar isObject = require('../internals/is-object');\nvar aFunction = require('../internals/a-function');\nvar anInstance = require('../internals/an-instance');\nvar classof = require('../internals/classof-raw');\nvar inspectSource = require('../internals/inspect-source');\nvar iterate = require('../internals/iterate');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar speciesConstructor = require('../internals/species-constructor');\nvar task = require('../internals/task').set;\nvar microtask = require('../internals/microtask');\nvar promiseResolve = require('../internals/promise-resolve');\nvar hostReportErrors = require('../internals/host-report-errors');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar InternalStateModule = require('../internals/internal-state');\nvar isForced = require('../internals/is-forced');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar SPECIES = wellKnownSymbol('species');\nvar PROMISE = 'Promise';\nvar getInternalState = InternalStateModule.get;\nvar setInternalState = InternalStateModule.set;\nvar getInternalPromiseState = InternalStateModule.getterFor(PROMISE);\nvar PromiseConstructor = NativePromise;\nvar TypeError = global.TypeError;\nvar document = global.document;\nvar process = global.process;\nvar $fetch = getBuiltIn('fetch');\nvar newPromiseCapability = newPromiseCapabilityModule.f;\nvar newGenericPromiseCapability = newPromiseCapability;\nvar IS_NODE = classof(process) == 'process';\nvar DISPATCH_EVENT = !!(document && document.createEvent && global.dispatchEvent);\nvar UNHANDLED_REJECTION = 'unhandledrejection';\nvar REJECTION_HANDLED = 'rejectionhandled';\nvar PENDING = 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\nvar HANDLED = 1;\nvar UNHANDLED = 2;\nvar Internal, OwnPromiseCapability, PromiseWrapper, nativeThen;\n\nvar FORCED = isForced(PROMISE, function () {\n var GLOBAL_CORE_JS_PROMISE = inspectSource(PromiseConstructor) !== String(PromiseConstructor);\n if (!GLOBAL_CORE_JS_PROMISE) {\n // V8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n // We can't detect it synchronously, so just check versions\n if (V8_VERSION === 66) return true;\n // Unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n if (!IS_NODE && typeof PromiseRejectionEvent != 'function') return true;\n }\n // We need Promise#finally in the pure version for preventing prototype pollution\n if (IS_PURE && !PromiseConstructor.prototype['finally']) return true;\n // We can't use @@species feature detection in V8 since it causes\n // deoptimization and performance degradation\n // https://github.com/zloirock/core-js/issues/679\n if (V8_VERSION >= 51 && /native code/.test(PromiseConstructor)) return false;\n // Detect correctness of subclassing with @@species support\n var promise = PromiseConstructor.resolve(1);\n var FakePromise = function (exec) {\n exec(function () { /* empty */ }, function () { /* empty */ });\n };\n var constructor = promise.constructor = {};\n constructor[SPECIES] = FakePromise;\n return !(promise.then(function () { /* empty */ }) instanceof FakePromise);\n});\n\nvar INCORRECT_ITERATION = FORCED || !checkCorrectnessOfIteration(function (iterable) {\n PromiseConstructor.all(iterable)['catch'](function () { /* empty */ });\n});\n\n// helpers\nvar isThenable = function (it) {\n var then;\n return isObject(it) && typeof (then = it.then) == 'function' ? then : false;\n};\n\nvar notify = function (promise, state, isReject) {\n if (state.notified) return;\n state.notified = true;\n var chain = state.reactions;\n microtask(function () {\n var value = state.value;\n var ok = state.state == FULFILLED;\n var index = 0;\n // variable length - can't use forEach\n while (chain.length > index) {\n var reaction = chain[index++];\n var handler = ok ? reaction.ok : reaction.fail;\n var resolve = reaction.resolve;\n var reject = reaction.reject;\n var domain = reaction.domain;\n var result, then, exited;\n try {\n if (handler) {\n if (!ok) {\n if (state.rejection === UNHANDLED) onHandleUnhandled(promise, state);\n state.rejection = HANDLED;\n }\n if (handler === true) result = value;\n else {\n if (domain) domain.enter();\n result = handler(value); // can throw\n if (domain) {\n domain.exit();\n exited = true;\n }\n }\n if (result === reaction.promise) {\n reject(TypeError('Promise-chain cycle'));\n } else if (then = isThenable(result)) {\n then.call(result, resolve, reject);\n } else resolve(result);\n } else reject(value);\n } catch (error) {\n if (domain && !exited) domain.exit();\n reject(error);\n }\n }\n state.reactions = [];\n state.notified = false;\n if (isReject && !state.rejection) onUnhandled(promise, state);\n });\n};\n\nvar dispatchEvent = function (name, promise, reason) {\n var event, handler;\n if (DISPATCH_EVENT) {\n event = document.createEvent('Event');\n event.promise = promise;\n event.reason = reason;\n event.initEvent(name, false, true);\n global.dispatchEvent(event);\n } else event = { promise: promise, reason: reason };\n if (handler = global['on' + name]) handler(event);\n else if (name === UNHANDLED_REJECTION) hostReportErrors('Unhandled promise rejection', reason);\n};\n\nvar onUnhandled = function (promise, state) {\n task.call(global, function () {\n var value = state.value;\n var IS_UNHANDLED = isUnhandled(state);\n var result;\n if (IS_UNHANDLED) {\n result = perform(function () {\n if (IS_NODE) {\n process.emit('unhandledRejection', value, promise);\n } else dispatchEvent(UNHANDLED_REJECTION, promise, value);\n });\n // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n state.rejection = IS_NODE || isUnhandled(state) ? UNHANDLED : HANDLED;\n if (result.error) throw result.value;\n }\n });\n};\n\nvar isUnhandled = function (state) {\n return state.rejection !== HANDLED && !state.parent;\n};\n\nvar onHandleUnhandled = function (promise, state) {\n task.call(global, function () {\n if (IS_NODE) {\n process.emit('rejectionHandled', promise);\n } else dispatchEvent(REJECTION_HANDLED, promise, state.value);\n });\n};\n\nvar bind = function (fn, promise, state, unwrap) {\n return function (value) {\n fn(promise, state, value, unwrap);\n };\n};\n\nvar internalReject = function (promise, state, value, unwrap) {\n if (state.done) return;\n state.done = true;\n if (unwrap) state = unwrap;\n state.value = value;\n state.state = REJECTED;\n notify(promise, state, true);\n};\n\nvar internalResolve = function (promise, state, value, unwrap) {\n if (state.done) return;\n state.done = true;\n if (unwrap) state = unwrap;\n try {\n if (promise === value) throw TypeError(\"Promise can't be resolved itself\");\n var then = isThenable(value);\n if (then) {\n microtask(function () {\n var wrapper = { done: false };\n try {\n then.call(value,\n bind(internalResolve, promise, wrapper, state),\n bind(internalReject, promise, wrapper, state)\n );\n } catch (error) {\n internalReject(promise, wrapper, error, state);\n }\n });\n } else {\n state.value = value;\n state.state = FULFILLED;\n notify(promise, state, false);\n }\n } catch (error) {\n internalReject(promise, { done: false }, error, state);\n }\n};\n\n// constructor polyfill\nif (FORCED) {\n // 25.4.3.1 Promise(executor)\n PromiseConstructor = function Promise(executor) {\n anInstance(this, PromiseConstructor, PROMISE);\n aFunction(executor);\n Internal.call(this);\n var state = getInternalState(this);\n try {\n executor(bind(internalResolve, this, state), bind(internalReject, this, state));\n } catch (error) {\n internalReject(this, state, error);\n }\n };\n // eslint-disable-next-line no-unused-vars\n Internal = function Promise(executor) {\n setInternalState(this, {\n type: PROMISE,\n done: false,\n notified: false,\n parent: false,\n reactions: [],\n rejection: false,\n state: PENDING,\n value: undefined\n });\n };\n Internal.prototype = redefineAll(PromiseConstructor.prototype, {\n // `Promise.prototype.then` method\n // https://tc39.github.io/ecma262/#sec-promise.prototype.then\n then: function then(onFulfilled, onRejected) {\n var state = getInternalPromiseState(this);\n var reaction = newPromiseCapability(speciesConstructor(this, PromiseConstructor));\n reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;\n reaction.fail = typeof onRejected == 'function' && onRejected;\n reaction.domain = IS_NODE ? process.domain : undefined;\n state.parent = true;\n state.reactions.push(reaction);\n if (state.state != PENDING) notify(this, state, false);\n return reaction.promise;\n },\n // `Promise.prototype.catch` method\n // https://tc39.github.io/ecma262/#sec-promise.prototype.catch\n 'catch': function (onRejected) {\n return this.then(undefined, onRejected);\n }\n });\n OwnPromiseCapability = function () {\n var promise = new Internal();\n var state = getInternalState(promise);\n this.promise = promise;\n this.resolve = bind(internalResolve, promise, state);\n this.reject = bind(internalReject, promise, state);\n };\n newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n return C === PromiseConstructor || C === PromiseWrapper\n ? new OwnPromiseCapability(C)\n : newGenericPromiseCapability(C);\n };\n\n if (!IS_PURE && typeof NativePromise == 'function') {\n nativeThen = NativePromise.prototype.then;\n\n // wrap native Promise#then for native async functions\n redefine(NativePromise.prototype, 'then', function then(onFulfilled, onRejected) {\n var that = this;\n return new PromiseConstructor(function (resolve, reject) {\n nativeThen.call(that, resolve, reject);\n }).then(onFulfilled, onRejected);\n // https://github.com/zloirock/core-js/issues/640\n }, { unsafe: true });\n\n // wrap fetch result\n if (typeof $fetch == 'function') $({ global: true, enumerable: true, forced: true }, {\n // eslint-disable-next-line no-unused-vars\n fetch: function fetch(input /* , init */) {\n return promiseResolve(PromiseConstructor, $fetch.apply(global, arguments));\n }\n });\n }\n}\n\n$({ global: true, wrap: true, forced: FORCED }, {\n Promise: PromiseConstructor\n});\n\nsetToStringTag(PromiseConstructor, PROMISE, false, true);\nsetSpecies(PROMISE);\n\nPromiseWrapper = getBuiltIn(PROMISE);\n\n// statics\n$({ target: PROMISE, stat: true, forced: FORCED }, {\n // `Promise.reject` method\n // https://tc39.github.io/ecma262/#sec-promise.reject\n reject: function reject(r) {\n var capability = newPromiseCapability(this);\n capability.reject.call(undefined, r);\n return capability.promise;\n }\n});\n\n$({ target: PROMISE, stat: true, forced: IS_PURE || FORCED }, {\n // `Promise.resolve` method\n // https://tc39.github.io/ecma262/#sec-promise.resolve\n resolve: function resolve(x) {\n return promiseResolve(IS_PURE && this === PromiseWrapper ? PromiseConstructor : this, x);\n }\n});\n\n$({ target: PROMISE, stat: true, forced: INCORRECT_ITERATION }, {\n // `Promise.all` method\n // https://tc39.github.io/ecma262/#sec-promise.all\n all: function all(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var $promiseResolve = aFunction(C.resolve);\n var values = [];\n var counter = 0;\n var remaining = 1;\n iterate(iterable, function (promise) {\n var index = counter++;\n var alreadyCalled = false;\n values.push(undefined);\n remaining++;\n $promiseResolve.call(C, promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[index] = value;\n --remaining || resolve(values);\n }, reject);\n });\n --remaining || resolve(values);\n });\n if (result.error) reject(result.value);\n return capability.promise;\n },\n // `Promise.race` method\n // https://tc39.github.io/ecma262/#sec-promise.race\n race: function race(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var reject = capability.reject;\n var result = perform(function () {\n var $promiseResolve = aFunction(C.resolve);\n iterate(iterable, function (promise) {\n $promiseResolve.call(C, promise).then(capability.resolve, reject);\n });\n });\n if (result.error) reject(result.value);\n return capability.promise;\n }\n});\n","var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar classof = require('../internals/classof-raw');\nvar macrotask = require('../internals/task').set;\nvar IS_IOS = require('../internals/engine-is-ios');\n\nvar MutationObserver = global.MutationObserver || global.WebKitMutationObserver;\nvar process = global.process;\nvar Promise = global.Promise;\nvar IS_NODE = classof(process) == 'process';\n// Node.js 11 shows ExperimentalWarning on getting `queueMicrotask`\nvar queueMicrotaskDescriptor = getOwnPropertyDescriptor(global, 'queueMicrotask');\nvar queueMicrotask = queueMicrotaskDescriptor && queueMicrotaskDescriptor.value;\n\nvar flush, head, last, notify, toggle, node, promise, then;\n\n// modern engines have queueMicrotask method\nif (!queueMicrotask) {\n flush = function () {\n var parent, fn;\n if (IS_NODE && (parent = process.domain)) parent.exit();\n while (head) {\n fn = head.fn;\n head = head.next;\n try {\n fn();\n } catch (error) {\n if (head) notify();\n else last = undefined;\n throw error;\n }\n } last = undefined;\n if (parent) parent.enter();\n };\n\n // Node.js\n if (IS_NODE) {\n notify = function () {\n process.nextTick(flush);\n };\n // browsers with MutationObserver, except iOS - https://github.com/zloirock/core-js/issues/339\n } else if (MutationObserver && !IS_IOS) {\n toggle = true;\n node = document.createTextNode('');\n new MutationObserver(flush).observe(node, { characterData: true });\n notify = function () {\n node.data = toggle = !toggle;\n };\n // environments with maybe non-completely correct, but existent Promise\n } else if (Promise && Promise.resolve) {\n // Promise.resolve without an argument throws an error in LG WebOS 2\n promise = Promise.resolve(undefined);\n then = promise.then;\n notify = function () {\n then.call(promise, flush);\n };\n // for other environments - macrotask based on:\n // - setImmediate\n // - MessageChannel\n // - window.postMessag\n // - onreadystatechange\n // - setTimeout\n } else {\n notify = function () {\n // strange IE + webpack dev server bug - use .call(global)\n macrotask.call(global, flush);\n };\n }\n}\n\nmodule.exports = queueMicrotask || function (fn) {\n var task = { fn: fn, next: undefined };\n if (last) last.next = task;\n if (!head) {\n head = task;\n notify();\n } last = task;\n};\n","var global = require('../internals/global');\n\nmodule.exports = function (a, b) {\n var console = global.console;\n if (console && console.error) {\n arguments.length === 1 ? console.error(a) : console.error(a, b);\n }\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar aFunction = require('../internals/a-function');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar iterate = require('../internals/iterate');\n\n// `Promise.allSettled` method\n// https://github.com/tc39/proposal-promise-allSettled\n$({ target: 'Promise', stat: true }, {\n allSettled: function allSettled(iterable) {\n var C = this;\n var capability = newPromiseCapabilityModule.f(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var promiseResolve = aFunction(C.resolve);\n var values = [];\n var counter = 0;\n var remaining = 1;\n iterate(iterable, function (promise) {\n var index = counter++;\n var alreadyCalled = false;\n values.push(undefined);\n remaining++;\n promiseResolve.call(C, promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[index] = { status: 'fulfilled', value: value };\n --remaining || resolve(values);\n }, function (e) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[index] = { status: 'rejected', reason: e };\n --remaining || resolve(values);\n });\n });\n --remaining || resolve(values);\n });\n if (result.error) reject(result.value);\n return capability.promise;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar NativePromise = require('../internals/native-promise-constructor');\nvar fails = require('../internals/fails');\nvar getBuiltIn = require('../internals/get-built-in');\nvar speciesConstructor = require('../internals/species-constructor');\nvar promiseResolve = require('../internals/promise-resolve');\nvar redefine = require('../internals/redefine');\n\n// Safari bug https://bugs.webkit.org/show_bug.cgi?id=200829\nvar NON_GENERIC = !!NativePromise && fails(function () {\n NativePromise.prototype['finally'].call({ then: function () { /* empty */ } }, function () { /* empty */ });\n});\n\n// `Promise.prototype.finally` method\n// https://tc39.github.io/ecma262/#sec-promise.prototype.finally\n$({ target: 'Promise', proto: true, real: true, forced: NON_GENERIC }, {\n 'finally': function (onFinally) {\n var C = speciesConstructor(this, getBuiltIn('Promise'));\n var isFunction = typeof onFinally == 'function';\n return this.then(\n isFunction ? function (x) {\n return promiseResolve(C, onFinally()).then(function () { return x; });\n } : onFinally,\n isFunction ? function (e) {\n return promiseResolve(C, onFinally()).then(function () { throw e; });\n } : onFinally\n );\n }\n});\n\n// patch native Promise.prototype for native async functions\nif (!IS_PURE && typeof NativePromise == 'function' && !NativePromise.prototype['finally']) {\n redefine(NativePromise.prototype, 'finally', getBuiltIn('Promise').prototype['finally']);\n}\n","require('../../modules/es.map');\nrequire('../../modules/es.object.to-string');\nrequire('../../modules/es.string.iterator');\nrequire('../../modules/web.dom-collections.iterator');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Map;\n","'use strict';\nvar collection = require('../internals/collection');\nvar collectionStrong = require('../internals/collection-strong');\n\n// `Map` constructor\n// https://tc39.github.io/ecma262/#sec-map-objects\nmodule.exports = collection('Map', function (init) {\n return function Map() { return init(this, arguments.length ? arguments[0] : undefined); };\n}, collectionStrong);\n","require('../../modules/es.set');\nrequire('../../modules/es.object.to-string');\nrequire('../../modules/es.string.iterator');\nrequire('../../modules/web.dom-collections.iterator');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Set;\n","'use strict';\nvar collection = require('../internals/collection');\nvar collectionStrong = require('../internals/collection-strong');\n\n// `Set` constructor\n// https://tc39.github.io/ecma262/#sec-set-objects\nmodule.exports = collection('Set', function (init) {\n return function Set() { return init(this, arguments.length ? arguments[0] : undefined); };\n}, collectionStrong);\n","require('../../modules/es.function.name');\n","var DESCRIPTORS = require('../internals/descriptors');\nvar defineProperty = require('../internals/object-define-property').f;\n\nvar FunctionPrototype = Function.prototype;\nvar FunctionPrototypeToString = FunctionPrototype.toString;\nvar nameRE = /^\\s*function ([^ (]*)/;\nvar NAME = 'name';\n\n// Function instances `.name` property\n// https://tc39.github.io/ecma262/#sec-function-instances-name\nif (DESCRIPTORS && !(NAME in FunctionPrototype)) {\n defineProperty(FunctionPrototype, NAME, {\n configurable: true,\n get: function () {\n try {\n return FunctionPrototypeToString.call(this).match(nameRE)[1];\n } catch (error) {\n return '';\n }\n }\n });\n}\n","require('../../modules/es.function.bind');\nvar entryUnbind = require('../../internals/entry-unbind');\n\nmodule.exports = entryUnbind('Function', 'bind');\n","var $ = require('../internals/export');\nvar bind = require('../internals/function-bind');\n\n// `Function.prototype.bind` method\n// https://tc39.github.io/ecma262/#sec-function.prototype.bind\n$({ target: 'Function', proto: true }, {\n bind: bind\n});\n","'use strict';\nvar aFunction = require('../internals/a-function');\nvar isObject = require('../internals/is-object');\n\nvar slice = [].slice;\nvar factories = {};\n\nvar construct = function (C, argsLength, args) {\n if (!(argsLength in factories)) {\n for (var list = [], i = 0; i < argsLength; i++) list[i] = 'a[' + i + ']';\n // eslint-disable-next-line no-new-func\n factories[argsLength] = Function('C,a', 'return new C(' + list.join(',') + ')');\n } return factories[argsLength](C, args);\n};\n\n// `Function.prototype.bind` method implementation\n// https://tc39.github.io/ecma262/#sec-function.prototype.bind\nmodule.exports = Function.bind || function bind(that /* , ...args */) {\n var fn = aFunction(this);\n var partArgs = slice.call(arguments, 1);\n var boundFunction = function bound(/* args... */) {\n var args = partArgs.concat(slice.call(arguments));\n return this instanceof boundFunction ? construct(fn, args.length, args) : fn.apply(that, args);\n };\n if (isObject(fn.prototype)) boundFunction.prototype = fn.prototype;\n return boundFunction;\n};\n","require('../../modules/es.string.includes');\nvar entryUnbind = require('../../internals/entry-unbind');\n\nmodule.exports = entryUnbind('String', 'includes');\n","'use strict';\nvar $ = require('../internals/export');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\n\n// `String.prototype.includes` method\n// https://tc39.github.io/ecma262/#sec-string.prototype.includes\n$({ target: 'String', proto: true, forced: !correctIsRegExpLogic('includes') }, {\n includes: function includes(searchString /* , position = 0 */) {\n return !!~String(requireObjectCoercible(this))\n .indexOf(notARegExp(searchString), arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","var isObject = require('../internals/is-object');\nvar classof = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\n// `IsRegExp` abstract operation\n// https://tc39.github.io/ecma262/#sec-isregexp\nmodule.exports = function (it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) == 'RegExp');\n};\n","require('../../modules/es.string.starts-with');\nvar entryUnbind = require('../../internals/entry-unbind');\n\nmodule.exports = entryUnbind('String', 'startsWith');\n","'use strict';\nvar $ = require('../internals/export');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar toLength = require('../internals/to-length');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\nvar IS_PURE = require('../internals/is-pure');\n\nvar nativeStartsWith = ''.startsWith;\nvar min = Math.min;\n\nvar CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic('startsWith');\n// https://github.com/zloirock/core-js/pull/702\nvar MDN_POLYFILL_BUG = !IS_PURE && !CORRECT_IS_REGEXP_LOGIC && !!function () {\n var descriptor = getOwnPropertyDescriptor(String.prototype, 'startsWith');\n return descriptor && !descriptor.writable;\n}();\n\n// `String.prototype.startsWith` method\n// https://tc39.github.io/ecma262/#sec-string.prototype.startswith\n$({ target: 'String', proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC }, {\n startsWith: function startsWith(searchString /* , position = 0 */) {\n var that = String(requireObjectCoercible(this));\n notARegExp(searchString);\n var index = toLength(min(arguments.length > 1 ? arguments[1] : undefined, that.length));\n var search = String(searchString);\n return nativeStartsWith\n ? nativeStartsWith.call(that, search, index)\n : that.slice(index, index + search.length) === search;\n }\n});\n","require('../../modules/es.string.ends-with');\nvar entryUnbind = require('../../internals/entry-unbind');\n\nmodule.exports = entryUnbind('String', 'endsWith');\n","'use strict';\nvar $ = require('../internals/export');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar toLength = require('../internals/to-length');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\nvar IS_PURE = require('../internals/is-pure');\n\nvar nativeEndsWith = ''.endsWith;\nvar min = Math.min;\n\nvar CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic('endsWith');\n// https://github.com/zloirock/core-js/pull/702\nvar MDN_POLYFILL_BUG = !IS_PURE && !CORRECT_IS_REGEXP_LOGIC && !!function () {\n var descriptor = getOwnPropertyDescriptor(String.prototype, 'endsWith');\n return descriptor && !descriptor.writable;\n}();\n\n// `String.prototype.endsWith` method\n// https://tc39.github.io/ecma262/#sec-string.prototype.endswith\n$({ target: 'String', proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC }, {\n endsWith: function endsWith(searchString /* , endPosition = @length */) {\n var that = String(requireObjectCoercible(this));\n notARegExp(searchString);\n var endPosition = arguments.length > 1 ? arguments[1] : undefined;\n var len = toLength(that.length);\n var end = endPosition === undefined ? len : min(toLength(endPosition), len);\n var search = String(searchString);\n return nativeEndsWith\n ? nativeEndsWith.call(that, search, end)\n : that.slice(end - search.length, end) === search;\n }\n});\n","require('../../modules/es.string.trim');\nvar entryUnbind = require('../../internals/entry-unbind');\n\nmodule.exports = entryUnbind('String', 'trim');\n","'use strict';\nvar $ = require('../internals/export');\nvar $trim = require('../internals/string-trim').trim;\nvar forcedStringTrimMethod = require('../internals/string-trim-forced');\n\n// `String.prototype.trim` method\n// https://tc39.github.io/ecma262/#sec-string.prototype.trim\n$({ target: 'String', proto: true, forced: forcedStringTrimMethod('trim') }, {\n trim: function trim() {\n return $trim(this);\n }\n});\n","var fails = require('../internals/fails');\nvar whitespaces = require('../internals/whitespaces');\n\nvar non = '\\u200B\\u0085\\u180E';\n\n// check that a method works with the correct list\n// of whitespaces and has a correct name\nmodule.exports = function (METHOD_NAME) {\n return fails(function () {\n return !!whitespaces[METHOD_NAME]() || non[METHOD_NAME]() != non || whitespaces[METHOD_NAME].name !== METHOD_NAME;\n });\n};\n","require('../../modules/es.math.trunc');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Math.trunc;\n","var $ = require('../internals/export');\n\nvar ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `Math.trunc` method\n// https://tc39.github.io/ecma262/#sec-math.trunc\n$({ target: 'Math', stat: true }, {\n trunc: function trunc(it) {\n return (it > 0 ? floor : ceil)(it);\n }\n});\n","require('../modules/web.dom-collections.for-each');\nrequire('../modules/web.dom-collections.iterator');\nvar path = require('../internals/path');\n\nmodule.exports = path;\n","var global = require('../internals/global');\nvar DOMIterables = require('../internals/dom-iterables');\nvar forEach = require('../internals/array-for-each');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nfor (var COLLECTION_NAME in DOMIterables) {\n var Collection = global[COLLECTION_NAME];\n var CollectionPrototype = Collection && Collection.prototype;\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype && CollectionPrototype.forEach !== forEach) try {\n createNonEnumerableProperty(CollectionPrototype, 'forEach', forEach);\n } catch (error) {\n CollectionPrototype.forEach = forEach;\n }\n}\n","//! moment.js\n//! version : 2.28.0\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n global.moment = factory()\n}(this, (function () { 'use strict';\n\n var hookCallback;\n\n function hooks() {\n return hookCallback.apply(null, arguments);\n }\n\n // This is done to register the method called with moment()\n // without creating circular dependencies.\n function setHookCallback(callback) {\n hookCallback = callback;\n }\n\n function isArray(input) {\n return (\n input instanceof Array ||\n Object.prototype.toString.call(input) === '[object Array]'\n );\n }\n\n function isObject(input) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return (\n input != null &&\n Object.prototype.toString.call(input) === '[object Object]'\n );\n }\n\n function hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n }\n\n function isObjectEmpty(obj) {\n if (Object.getOwnPropertyNames) {\n return Object.getOwnPropertyNames(obj).length === 0;\n } else {\n var k;\n for (k in obj) {\n if (hasOwnProp(obj, k)) {\n return false;\n }\n }\n return true;\n }\n }\n\n function isUndefined(input) {\n return input === void 0;\n }\n\n function isNumber(input) {\n return (\n typeof input === 'number' ||\n Object.prototype.toString.call(input) === '[object Number]'\n );\n }\n\n function isDate(input) {\n return (\n input instanceof Date ||\n Object.prototype.toString.call(input) === '[object Date]'\n );\n }\n\n function map(arr, fn) {\n var res = [],\n i;\n for (i = 0; i < arr.length; ++i) {\n res.push(fn(arr[i], i));\n }\n return res;\n }\n\n function extend(a, b) {\n for (var i in b) {\n if (hasOwnProp(b, i)) {\n a[i] = b[i];\n }\n }\n\n if (hasOwnProp(b, 'toString')) {\n a.toString = b.toString;\n }\n\n if (hasOwnProp(b, 'valueOf')) {\n a.valueOf = b.valueOf;\n }\n\n return a;\n }\n\n function createUTC(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, true).utc();\n }\n\n function defaultParsingFlags() {\n // We need to deep clone this object.\n return {\n empty: false,\n unusedTokens: [],\n unusedInput: [],\n overflow: -2,\n charsLeftOver: 0,\n nullInput: false,\n invalidEra: null,\n invalidMonth: null,\n invalidFormat: false,\n userInvalidated: false,\n iso: false,\n parsedDateParts: [],\n era: null,\n meridiem: null,\n rfc2822: false,\n weekdayMismatch: false,\n };\n }\n\n function getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n return m._pf;\n }\n\n var some;\n if (Array.prototype.some) {\n some = Array.prototype.some;\n } else {\n some = function (fun) {\n var t = Object(this),\n len = t.length >>> 0,\n i;\n\n for (i = 0; i < len; i++) {\n if (i in t && fun.call(this, t[i], i, t)) {\n return true;\n }\n }\n\n return false;\n };\n }\n\n function isValid(m) {\n if (m._isValid == null) {\n var flags = getParsingFlags(m),\n parsedParts = some.call(flags.parsedDateParts, function (i) {\n return i != null;\n }),\n isNowValid =\n !isNaN(m._d.getTime()) &&\n flags.overflow < 0 &&\n !flags.empty &&\n !flags.invalidEra &&\n !flags.invalidMonth &&\n !flags.invalidWeekday &&\n !flags.weekdayMismatch &&\n !flags.nullInput &&\n !flags.invalidFormat &&\n !flags.userInvalidated &&\n (!flags.meridiem || (flags.meridiem && parsedParts));\n\n if (m._strict) {\n isNowValid =\n isNowValid &&\n flags.charsLeftOver === 0 &&\n flags.unusedTokens.length === 0 &&\n flags.bigHour === undefined;\n }\n\n if (Object.isFrozen == null || !Object.isFrozen(m)) {\n m._isValid = isNowValid;\n } else {\n return isNowValid;\n }\n }\n return m._isValid;\n }\n\n function createInvalid(flags) {\n var m = createUTC(NaN);\n if (flags != null) {\n extend(getParsingFlags(m), flags);\n } else {\n getParsingFlags(m).userInvalidated = true;\n }\n\n return m;\n }\n\n // Plugins that add properties should also add the key here (null value),\n // so we can properly clone ourselves.\n var momentProperties = (hooks.momentProperties = []),\n updateInProgress = false;\n\n function copyConfig(to, from) {\n var i, prop, val;\n\n if (!isUndefined(from._isAMomentObject)) {\n to._isAMomentObject = from._isAMomentObject;\n }\n if (!isUndefined(from._i)) {\n to._i = from._i;\n }\n if (!isUndefined(from._f)) {\n to._f = from._f;\n }\n if (!isUndefined(from._l)) {\n to._l = from._l;\n }\n if (!isUndefined(from._strict)) {\n to._strict = from._strict;\n }\n if (!isUndefined(from._tzm)) {\n to._tzm = from._tzm;\n }\n if (!isUndefined(from._isUTC)) {\n to._isUTC = from._isUTC;\n }\n if (!isUndefined(from._offset)) {\n to._offset = from._offset;\n }\n if (!isUndefined(from._pf)) {\n to._pf = getParsingFlags(from);\n }\n if (!isUndefined(from._locale)) {\n to._locale = from._locale;\n }\n\n if (momentProperties.length > 0) {\n for (i = 0; i < momentProperties.length; i++) {\n prop = momentProperties[i];\n val = from[prop];\n if (!isUndefined(val)) {\n to[prop] = val;\n }\n }\n }\n\n return to;\n }\n\n // Moment prototype object\n function Moment(config) {\n copyConfig(this, config);\n this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n if (!this.isValid()) {\n this._d = new Date(NaN);\n }\n // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n hooks.updateOffset(this);\n updateInProgress = false;\n }\n }\n\n function isMoment(obj) {\n return (\n obj instanceof Moment || (obj != null && obj._isAMomentObject != null)\n );\n }\n\n function warn(msg) {\n if (\n hooks.suppressDeprecationWarnings === false &&\n typeof console !== 'undefined' &&\n console.warn\n ) {\n console.warn('Deprecation warning: ' + msg);\n }\n }\n\n function deprecate(msg, fn) {\n var firstTime = true;\n\n return extend(function () {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(null, msg);\n }\n if (firstTime) {\n var args = [],\n arg,\n i,\n key;\n for (i = 0; i < arguments.length; i++) {\n arg = '';\n if (typeof arguments[i] === 'object') {\n arg += '\\n[' + i + '] ';\n for (key in arguments[0]) {\n if (hasOwnProp(arguments[0], key)) {\n arg += key + ': ' + arguments[0][key] + ', ';\n }\n }\n arg = arg.slice(0, -2); // Remove trailing comma and space\n } else {\n arg = arguments[i];\n }\n args.push(arg);\n }\n warn(\n msg +\n '\\nArguments: ' +\n Array.prototype.slice.call(args).join('') +\n '\\n' +\n new Error().stack\n );\n firstTime = false;\n }\n return fn.apply(this, arguments);\n }, fn);\n }\n\n var deprecations = {};\n\n function deprecateSimple(name, msg) {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(name, msg);\n }\n if (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n }\n\n hooks.suppressDeprecationWarnings = false;\n hooks.deprecationHandler = null;\n\n function isFunction(input) {\n return (\n (typeof Function !== 'undefined' && input instanceof Function) ||\n Object.prototype.toString.call(input) === '[object Function]'\n );\n }\n\n function set(config) {\n var prop, i;\n for (i in config) {\n if (hasOwnProp(config, i)) {\n prop = config[i];\n if (isFunction(prop)) {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n }\n this._config = config;\n // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n this._dayOfMonthOrdinalParseLenient = new RegExp(\n (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n '|' +\n /\\d{1,2}/.source\n );\n }\n\n function mergeConfigs(parentConfig, childConfig) {\n var res = extend({}, parentConfig),\n prop;\n for (prop in childConfig) {\n if (hasOwnProp(childConfig, prop)) {\n if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n res[prop] = {};\n extend(res[prop], parentConfig[prop]);\n extend(res[prop], childConfig[prop]);\n } else if (childConfig[prop] != null) {\n res[prop] = childConfig[prop];\n } else {\n delete res[prop];\n }\n }\n }\n for (prop in parentConfig) {\n if (\n hasOwnProp(parentConfig, prop) &&\n !hasOwnProp(childConfig, prop) &&\n isObject(parentConfig[prop])\n ) {\n // make sure changes to properties don't modify parent config\n res[prop] = extend({}, res[prop]);\n }\n }\n return res;\n }\n\n function Locale(config) {\n if (config != null) {\n this.set(config);\n }\n }\n\n var keys;\n\n if (Object.keys) {\n keys = Object.keys;\n } else {\n keys = function (obj) {\n var i,\n res = [];\n for (i in obj) {\n if (hasOwnProp(obj, i)) {\n res.push(i);\n }\n }\n return res;\n };\n }\n\n var defaultCalendar = {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n };\n\n function calendar(key, mom, now) {\n var output = this._calendar[key] || this._calendar['sameElse'];\n return isFunction(output) ? output.call(mom, now) : output;\n }\n\n function zeroFill(number, targetLength, forceSign) {\n var absNumber = '' + Math.abs(number),\n zerosToFill = targetLength - absNumber.length,\n sign = number >= 0;\n return (\n (sign ? (forceSign ? '+' : '') : '-') +\n Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +\n absNumber\n );\n }\n\n var formattingTokens = /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,\n localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,\n formatFunctions = {},\n formatTokenFunctions = {};\n\n // token: 'M'\n // padded: ['MM', 2]\n // ordinal: 'Mo'\n // callback: function () { this.month() + 1 }\n function addFormatToken(token, padded, ordinal, callback) {\n var func = callback;\n if (typeof callback === 'string') {\n func = function () {\n return this[callback]();\n };\n }\n if (token) {\n formatTokenFunctions[token] = func;\n }\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n };\n }\n if (ordinal) {\n formatTokenFunctions[ordinal] = function () {\n return this.localeData().ordinal(\n func.apply(this, arguments),\n token\n );\n };\n }\n }\n\n function removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n }\n\n function makeFormatFunction(format) {\n var array = format.match(formattingTokens),\n i,\n length;\n\n for (i = 0, length = array.length; i < length; i++) {\n if (formatTokenFunctions[array[i]]) {\n array[i] = formatTokenFunctions[array[i]];\n } else {\n array[i] = removeFormattingTokens(array[i]);\n }\n }\n\n return function (mom) {\n var output = '',\n i;\n for (i = 0; i < length; i++) {\n output += isFunction(array[i])\n ? array[i].call(mom, format)\n : array[i];\n }\n return output;\n };\n }\n\n // format date using native date object\n function formatMoment(m, format) {\n if (!m.isValid()) {\n return m.localeData().invalidDate();\n }\n\n format = expandFormat(format, m.localeData());\n formatFunctions[format] =\n formatFunctions[format] || makeFormatFunction(format);\n\n return formatFunctions[format](m);\n }\n\n function expandFormat(format, locale) {\n var i = 5;\n\n function replaceLongDateFormatTokens(input) {\n return locale.longDateFormat(input) || input;\n }\n\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(\n localFormattingTokens,\n replaceLongDateFormatTokens\n );\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n\n return format;\n }\n\n var defaultLongDateFormat = {\n LTS: 'h:mm:ss A',\n LT: 'h:mm A',\n L: 'MM/DD/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A',\n };\n\n function longDateFormat(key) {\n var format = this._longDateFormat[key],\n formatUpper = this._longDateFormat[key.toUpperCase()];\n\n if (format || !formatUpper) {\n return format;\n }\n\n this._longDateFormat[key] = formatUpper\n .match(formattingTokens)\n .map(function (tok) {\n if (\n tok === 'MMMM' ||\n tok === 'MM' ||\n tok === 'DD' ||\n tok === 'dddd'\n ) {\n return tok.slice(1);\n }\n return tok;\n })\n .join('');\n\n return this._longDateFormat[key];\n }\n\n var defaultInvalidDate = 'Invalid date';\n\n function invalidDate() {\n return this._invalidDate;\n }\n\n var defaultOrdinal = '%d',\n defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n function ordinal(number) {\n return this._ordinal.replace('%d', number);\n }\n\n var defaultRelativeTime = {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n w: 'a week',\n ww: '%d weeks',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n };\n\n function relativeTime(number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return isFunction(output)\n ? output(number, withoutSuffix, string, isFuture)\n : output.replace(/%d/i, number);\n }\n\n function pastFuture(diff, output) {\n var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n }\n\n var aliases = {};\n\n function addUnitAlias(unit, shorthand) {\n var lowerCase = unit.toLowerCase();\n aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\n }\n\n function normalizeUnits(units) {\n return typeof units === 'string'\n ? aliases[units] || aliases[units.toLowerCase()]\n : undefined;\n }\n\n function normalizeObjectUnits(inputObject) {\n var normalizedInput = {},\n normalizedProp,\n prop;\n\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n\n return normalizedInput;\n }\n\n var priorities = {};\n\n function addUnitPriority(unit, priority) {\n priorities[unit] = priority;\n }\n\n function getPrioritizedUnits(unitsObj) {\n var units = [],\n u;\n for (u in unitsObj) {\n if (hasOwnProp(unitsObj, u)) {\n units.push({ unit: u, priority: priorities[u] });\n }\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\n }\n\n function isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n }\n\n function absFloor(number) {\n if (number < 0) {\n // -0 -> 0\n return Math.ceil(number) || 0;\n } else {\n return Math.floor(number);\n }\n }\n\n function toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n\n return value;\n }\n\n function makeGetSet(unit, keepTime) {\n return function (value) {\n if (value != null) {\n set$1(this, unit, value);\n hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get(this, unit);\n }\n };\n }\n\n function get(mom, unit) {\n return mom.isValid()\n ? mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]()\n : NaN;\n }\n\n function set$1(mom, unit, value) {\n if (mom.isValid() && !isNaN(value)) {\n if (\n unit === 'FullYear' &&\n isLeapYear(mom.year()) &&\n mom.month() === 1 &&\n mom.date() === 29\n ) {\n value = toInt(value);\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](\n value,\n mom.month(),\n daysInMonth(value, mom.month())\n );\n } else {\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n }\n }\n }\n\n // MOMENTS\n\n function stringGet(units) {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units]();\n }\n return this;\n }\n\n function stringSet(units, value) {\n if (typeof units === 'object') {\n units = normalizeObjectUnits(units);\n var prioritized = getPrioritizedUnits(units),\n i;\n for (i = 0; i < prioritized.length; i++) {\n this[prioritized[i].unit](units[prioritized[i].unit]);\n }\n } else {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units](value);\n }\n }\n return this;\n }\n\n var match1 = /\\d/, // 0 - 9\n match2 = /\\d\\d/, // 00 - 99\n match3 = /\\d{3}/, // 000 - 999\n match4 = /\\d{4}/, // 0000 - 9999\n match6 = /[+-]?\\d{6}/, // -999999 - 999999\n match1to2 = /\\d\\d?/, // 0 - 99\n match3to4 = /\\d\\d\\d\\d?/, // 999 - 9999\n match5to6 = /\\d\\d\\d\\d\\d\\d?/, // 99999 - 999999\n match1to3 = /\\d{1,3}/, // 0 - 999\n match1to4 = /\\d{1,4}/, // 0 - 9999\n match1to6 = /[+-]?\\d{1,6}/, // -999999 - 999999\n matchUnsigned = /\\d+/, // 0 - inf\n matchSigned = /[+-]?\\d+/, // -inf - inf\n matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi, // +00:00 -00:00 +0000 -0000 or Z\n matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/, // 123456789 123456789.123\n // any word (or two) characters or numbers including two/three word month in arabic.\n // includes scottish gaelic two word and hyphenated months\n matchWord = /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i,\n regexes;\n\n regexes = {};\n\n function addRegexToken(token, regex, strictRegex) {\n regexes[token] = isFunction(regex)\n ? regex\n : function (isStrict, localeData) {\n return isStrict && strictRegex ? strictRegex : regex;\n };\n }\n\n function getParseRegexForToken(token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n\n return regexes[token](config._strict, config._locale);\n }\n\n // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n function unescapeFormat(s) {\n return regexEscape(\n s\n .replace('\\\\', '')\n .replace(/\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g, function (\n matched,\n p1,\n p2,\n p3,\n p4\n ) {\n return p1 || p2 || p3 || p4;\n })\n );\n }\n\n function regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n\n var tokens = {};\n\n function addParseToken(token, callback) {\n var i,\n func = callback;\n if (typeof token === 'string') {\n token = [token];\n }\n if (isNumber(callback)) {\n func = function (input, array) {\n array[callback] = toInt(input);\n };\n }\n for (i = 0; i < token.length; i++) {\n tokens[token[i]] = func;\n }\n }\n\n function addWeekParseToken(token, callback) {\n addParseToken(token, function (input, array, config, token) {\n config._w = config._w || {};\n callback(input, config._w, config, token);\n });\n }\n\n function addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n }\n\n var YEAR = 0,\n MONTH = 1,\n DATE = 2,\n HOUR = 3,\n MINUTE = 4,\n SECOND = 5,\n MILLISECOND = 6,\n WEEK = 7,\n WEEKDAY = 8;\n\n function mod(n, x) {\n return ((n % x) + x) % x;\n }\n\n var indexOf;\n\n if (Array.prototype.indexOf) {\n indexOf = Array.prototype.indexOf;\n } else {\n indexOf = function (o) {\n // I know\n var i;\n for (i = 0; i < this.length; ++i) {\n if (this[i] === o) {\n return i;\n }\n }\n return -1;\n };\n }\n\n function daysInMonth(year, month) {\n if (isNaN(year) || isNaN(month)) {\n return NaN;\n }\n var modMonth = mod(month, 12);\n year += (month - modMonth) / 12;\n return modMonth === 1\n ? isLeapYear(year)\n ? 29\n : 28\n : 31 - ((modMonth % 7) % 2);\n }\n\n // FORMATTING\n\n addFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n });\n\n addFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n });\n\n addFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n });\n\n // ALIASES\n\n addUnitAlias('month', 'M');\n\n // PRIORITY\n\n addUnitPriority('month', 8);\n\n // PARSING\n\n addRegexToken('M', match1to2);\n addRegexToken('MM', match1to2, match2);\n addRegexToken('MMM', function (isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n });\n addRegexToken('MMMM', function (isStrict, locale) {\n return locale.monthsRegex(isStrict);\n });\n\n addParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\n });\n\n addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n var month = config._locale.monthsParse(input, token, config._strict);\n // if we didn't find a month name, mark the date as invalid.\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = input;\n }\n });\n\n // LOCALES\n\n var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split(\n '_'\n ),\n MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\n defaultMonthsShortRegex = matchWord,\n defaultMonthsRegex = matchWord;\n\n function localeMonths(m, format) {\n if (!m) {\n return isArray(this._months)\n ? this._months\n : this._months['standalone'];\n }\n return isArray(this._months)\n ? this._months[m.month()]\n : this._months[\n (this._months.isFormat || MONTHS_IN_FORMAT).test(format)\n ? 'format'\n : 'standalone'\n ][m.month()];\n }\n\n function localeMonthsShort(m, format) {\n if (!m) {\n return isArray(this._monthsShort)\n ? this._monthsShort\n : this._monthsShort['standalone'];\n }\n return isArray(this._monthsShort)\n ? this._monthsShort[m.month()]\n : this._monthsShort[\n MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'\n ][m.month()];\n }\n\n function handleStrictParse(monthName, format, strict) {\n var i,\n ii,\n mom,\n llc = monthName.toLocaleLowerCase();\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n for (i = 0; i < 12; ++i) {\n mom = createUTC([2000, i]);\n this._shortMonthsParse[i] = this.monthsShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeMonthsParse(monthName, format, strict) {\n var i, mom, regex;\n\n if (this._monthsParseExact) {\n return handleStrictParse.call(this, monthName, format, strict);\n }\n\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n if (strict && !this._longMonthsParse[i]) {\n this._longMonthsParse[i] = new RegExp(\n '^' + this.months(mom, '').replace('.', '') + '$',\n 'i'\n );\n this._shortMonthsParse[i] = new RegExp(\n '^' + this.monthsShort(mom, '').replace('.', '') + '$',\n 'i'\n );\n }\n if (!strict && !this._monthsParse[i]) {\n regex =\n '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'MMMM' &&\n this._longMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'MMM' &&\n this._shortMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function setMonth(mom, value) {\n var dayOfMonth;\n\n if (!mom.isValid()) {\n // No op\n return mom;\n }\n\n if (typeof value === 'string') {\n if (/^\\d+$/.test(value)) {\n value = toInt(value);\n } else {\n value = mom.localeData().monthsParse(value);\n // TODO: Another silent failure?\n if (!isNumber(value)) {\n return mom;\n }\n }\n }\n\n dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\n return mom;\n }\n\n function getSetMonth(value) {\n if (value != null) {\n setMonth(this, value);\n hooks.updateOffset(this, true);\n return this;\n } else {\n return get(this, 'Month');\n }\n }\n\n function getDaysInMonth() {\n return daysInMonth(this.year(), this.month());\n }\n\n function monthsShortRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsShortStrictRegex;\n } else {\n return this._monthsShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n return this._monthsShortStrictRegex && isStrict\n ? this._monthsShortStrictRegex\n : this._monthsShortRegex;\n }\n }\n\n function monthsRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsStrictRegex;\n } else {\n return this._monthsRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n return this._monthsStrictRegex && isStrict\n ? this._monthsStrictRegex\n : this._monthsRegex;\n }\n }\n\n function computeMonthsParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortPieces.push(this.monthsShort(mom, ''));\n longPieces.push(this.months(mom, ''));\n mixedPieces.push(this.months(mom, ''));\n mixedPieces.push(this.monthsShort(mom, ''));\n }\n // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 12; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n }\n for (i = 0; i < 24; i++) {\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._monthsShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? zeroFill(y, 4) : '+' + y;\n });\n\n addFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\n });\n\n addFormatToken(0, ['YYYY', 4], 0, 'year');\n addFormatToken(0, ['YYYYY', 5], 0, 'year');\n addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n // ALIASES\n\n addUnitAlias('year', 'y');\n\n // PRIORITIES\n\n addUnitPriority('year', 1);\n\n // PARSING\n\n addRegexToken('Y', matchSigned);\n addRegexToken('YY', match1to2, match2);\n addRegexToken('YYYY', match1to4, match4);\n addRegexToken('YYYYY', match1to6, match6);\n addRegexToken('YYYYYY', match1to6, match6);\n\n addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n addParseToken('YYYY', function (input, array) {\n array[YEAR] =\n input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n });\n addParseToken('YY', function (input, array) {\n array[YEAR] = hooks.parseTwoDigitYear(input);\n });\n addParseToken('Y', function (input, array) {\n array[YEAR] = parseInt(input, 10);\n });\n\n // HELPERS\n\n function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n }\n\n // HOOKS\n\n hooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n };\n\n // MOMENTS\n\n var getSetYear = makeGetSet('FullYear', true);\n\n function getIsLeapYear() {\n return isLeapYear(this.year());\n }\n\n function createDate(y, m, d, h, M, s, ms) {\n // can't just apply() to create a date:\n // https://stackoverflow.com/q/181348\n var date;\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n date = new Date(y + 400, m, d, h, M, s, ms);\n if (isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n } else {\n date = new Date(y, m, d, h, M, s, ms);\n }\n\n return date;\n }\n\n function createUTCDate(y) {\n var date, args;\n // the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n args = Array.prototype.slice.call(arguments);\n // preserve leap years using a full 400 year cycle, then reset\n args[0] = y + 400;\n date = new Date(Date.UTC.apply(null, args));\n if (isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n } else {\n date = new Date(Date.UTC.apply(null, arguments));\n }\n\n return date;\n }\n\n // start-of-first-week - start-of-year\n function firstWeekOffset(year, dow, doy) {\n var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n fwd = 7 + dow - doy,\n // first-week day local weekday -- which local weekday is fwd\n fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n return -fwdlw + fwd - 1;\n }\n\n // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n var localWeekday = (7 + weekday - dow) % 7,\n weekOffset = firstWeekOffset(year, dow, doy),\n dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n resYear,\n resDayOfYear;\n\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n } else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n } else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n\n return {\n year: resYear,\n dayOfYear: resDayOfYear,\n };\n }\n\n function weekOfYear(mom, dow, doy) {\n var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n resWeek,\n resYear;\n\n if (week < 1) {\n resYear = mom.year() - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(mom.year(), dow, doy)) {\n resWeek = week - weeksInYear(mom.year(), dow, doy);\n resYear = mom.year() + 1;\n } else {\n resYear = mom.year();\n resWeek = week;\n }\n\n return {\n week: resWeek,\n year: resYear,\n };\n }\n\n function weeksInYear(year, dow, doy) {\n var weekOffset = firstWeekOffset(year, dow, doy),\n weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n }\n\n // FORMATTING\n\n addFormatToken('w', ['ww', 2], 'wo', 'week');\n addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n // ALIASES\n\n addUnitAlias('week', 'w');\n addUnitAlias('isoWeek', 'W');\n\n // PRIORITIES\n\n addUnitPriority('week', 5);\n addUnitPriority('isoWeek', 5);\n\n // PARSING\n\n addRegexToken('w', match1to2);\n addRegexToken('ww', match1to2, match2);\n addRegexToken('W', match1to2);\n addRegexToken('WW', match1to2, match2);\n\n addWeekParseToken(['w', 'ww', 'W', 'WW'], function (\n input,\n week,\n config,\n token\n ) {\n week[token.substr(0, 1)] = toInt(input);\n });\n\n // HELPERS\n\n // LOCALES\n\n function localeWeek(mom) {\n return weekOfYear(mom, this._week.dow, this._week.doy).week;\n }\n\n var defaultLocaleWeek = {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n };\n\n function localeFirstDayOfWeek() {\n return this._week.dow;\n }\n\n function localeFirstDayOfYear() {\n return this._week.doy;\n }\n\n // MOMENTS\n\n function getSetWeek(input) {\n var week = this.localeData().week(this);\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n function getSetISOWeek(input) {\n var week = weekOfYear(this, 1, 4).week;\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('d', 0, 'do', 'day');\n\n addFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n });\n\n addFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n });\n\n addFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n });\n\n addFormatToken('e', 0, 0, 'weekday');\n addFormatToken('E', 0, 0, 'isoWeekday');\n\n // ALIASES\n\n addUnitAlias('day', 'd');\n addUnitAlias('weekday', 'e');\n addUnitAlias('isoWeekday', 'E');\n\n // PRIORITY\n addUnitPriority('day', 11);\n addUnitPriority('weekday', 11);\n addUnitPriority('isoWeekday', 11);\n\n // PARSING\n\n addRegexToken('d', match1to2);\n addRegexToken('e', match1to2);\n addRegexToken('E', match1to2);\n addRegexToken('dd', function (isStrict, locale) {\n return locale.weekdaysMinRegex(isStrict);\n });\n addRegexToken('ddd', function (isStrict, locale) {\n return locale.weekdaysShortRegex(isStrict);\n });\n addRegexToken('dddd', function (isStrict, locale) {\n return locale.weekdaysRegex(isStrict);\n });\n\n addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n var weekday = config._locale.weekdaysParse(input, token, config._strict);\n // if we didn't get a weekday name, mark the date as invalid\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = input;\n }\n });\n\n addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n });\n\n // HELPERS\n\n function parseWeekday(input, locale) {\n if (typeof input !== 'string') {\n return input;\n }\n\n if (!isNaN(input)) {\n return parseInt(input, 10);\n }\n\n input = locale.weekdaysParse(input);\n if (typeof input === 'number') {\n return input;\n }\n\n return null;\n }\n\n function parseIsoWeekday(input, locale) {\n if (typeof input === 'string') {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n return isNaN(input) ? null : input;\n }\n\n // LOCALES\n function shiftWeekdays(ws, n) {\n return ws.slice(n, 7).concat(ws.slice(0, n));\n }\n\n var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n defaultWeekdaysRegex = matchWord,\n defaultWeekdaysShortRegex = matchWord,\n defaultWeekdaysMinRegex = matchWord;\n\n function localeWeekdays(m, format) {\n var weekdays = isArray(this._weekdays)\n ? this._weekdays\n : this._weekdays[\n m && m !== true && this._weekdays.isFormat.test(format)\n ? 'format'\n : 'standalone'\n ];\n return m === true\n ? shiftWeekdays(weekdays, this._week.dow)\n : m\n ? weekdays[m.day()]\n : weekdays;\n }\n\n function localeWeekdaysShort(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysShort, this._week.dow)\n : m\n ? this._weekdaysShort[m.day()]\n : this._weekdaysShort;\n }\n\n function localeWeekdaysMin(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysMin, this._week.dow)\n : m\n ? this._weekdaysMin[m.day()]\n : this._weekdaysMin;\n }\n\n function handleStrictParse$1(weekdayName, format, strict) {\n var i,\n ii,\n mom,\n llc = weekdayName.toLocaleLowerCase();\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n\n for (i = 0; i < 7; ++i) {\n mom = createUTC([2000, 1]).day(i);\n this._minWeekdaysParse[i] = this.weekdaysMin(\n mom,\n ''\n ).toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeWeekdaysParse(weekdayName, format, strict) {\n var i, mom, regex;\n\n if (this._weekdaysParseExact) {\n return handleStrictParse$1.call(this, weekdayName, format, strict);\n }\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n\n mom = createUTC([2000, 1]).day(i);\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp(\n '^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._shortWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._minWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n }\n if (!this._weekdaysParse[i]) {\n regex =\n '^' +\n this.weekdays(mom, '') +\n '|^' +\n this.weekdaysShort(mom, '') +\n '|^' +\n this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'dddd' &&\n this._fullWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'ddd' &&\n this._shortWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'dd' &&\n this._minWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function getSetDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\n if (input != null) {\n input = parseWeekday(input, this.localeData());\n return this.add(input - day, 'd');\n } else {\n return day;\n }\n }\n\n function getSetLocaleDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n return input == null ? weekday : this.add(input - weekday, 'd');\n }\n\n function getSetISODayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n\n if (input != null) {\n var weekday = parseIsoWeekday(input, this.localeData());\n return this.day(this.day() % 7 ? weekday : weekday - 7);\n } else {\n return this.day() || 7;\n }\n }\n\n function weekdaysRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysStrictRegex;\n } else {\n return this._weekdaysRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = defaultWeekdaysRegex;\n }\n return this._weekdaysStrictRegex && isStrict\n ? this._weekdaysStrictRegex\n : this._weekdaysRegex;\n }\n }\n\n function weekdaysShortRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n } else {\n return this._weekdaysShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n }\n return this._weekdaysShortStrictRegex && isStrict\n ? this._weekdaysShortStrictRegex\n : this._weekdaysShortRegex;\n }\n }\n\n function weekdaysMinRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n } else {\n return this._weekdaysMinRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n }\n return this._weekdaysMinStrictRegex && isStrict\n ? this._weekdaysMinStrictRegex\n : this._weekdaysMinRegex;\n }\n }\n\n function computeWeekdaysParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var minPieces = [],\n shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom,\n minp,\n shortp,\n longp;\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, 1]).day(i);\n minp = regexEscape(this.weekdaysMin(mom, ''));\n shortp = regexEscape(this.weekdaysShort(mom, ''));\n longp = regexEscape(this.weekdays(mom, ''));\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n }\n // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n\n this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n\n this._weekdaysStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysMinStrictRegex = new RegExp(\n '^(' + minPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n function hFormat() {\n return this.hours() % 12 || 12;\n }\n\n function kFormat() {\n return this.hours() || 24;\n }\n\n addFormatToken('H', ['HH', 2], 0, 'hour');\n addFormatToken('h', ['hh', 2], 0, hFormat);\n addFormatToken('k', ['kk', 2], 0, kFormat);\n\n addFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('hmmss', 0, 0, function () {\n return (\n '' +\n hFormat.apply(this) +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n addFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('Hmmss', 0, 0, function () {\n return (\n '' +\n this.hours() +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n function meridiem(token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(\n this.hours(),\n this.minutes(),\n lowercase\n );\n });\n }\n\n meridiem('a', true);\n meridiem('A', false);\n\n // ALIASES\n\n addUnitAlias('hour', 'h');\n\n // PRIORITY\n addUnitPriority('hour', 13);\n\n // PARSING\n\n function matchMeridiem(isStrict, locale) {\n return locale._meridiemParse;\n }\n\n addRegexToken('a', matchMeridiem);\n addRegexToken('A', matchMeridiem);\n addRegexToken('H', match1to2);\n addRegexToken('h', match1to2);\n addRegexToken('k', match1to2);\n addRegexToken('HH', match1to2, match2);\n addRegexToken('hh', match1to2, match2);\n addRegexToken('kk', match1to2, match2);\n\n addRegexToken('hmm', match3to4);\n addRegexToken('hmmss', match5to6);\n addRegexToken('Hmm', match3to4);\n addRegexToken('Hmmss', match5to6);\n\n addParseToken(['H', 'HH'], HOUR);\n addParseToken(['k', 'kk'], function (input, array, config) {\n var kInput = toInt(input);\n array[HOUR] = kInput === 24 ? 0 : kInput;\n });\n addParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n });\n addParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('Hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n });\n addParseToken('Hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n });\n\n // LOCALES\n\n function localeIsPM(input) {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return (input + '').toLowerCase().charAt(0) === 'p';\n }\n\n var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i,\n // Setting the hour should keep the time, because the user explicitly\n // specified which hour they want. So trying to maintain the same hour (in\n // a new timezone) makes sense. Adding/subtracting hours does not follow\n // this rule.\n getSetHour = makeGetSet('Hours', true);\n\n function localeMeridiem(hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n }\n\n var baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n relativeTime: defaultRelativeTime,\n\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n\n week: defaultLocaleWeek,\n\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n\n meridiemParse: defaultLocaleMeridiemParse,\n };\n\n // internal storage for locale config files\n var locales = {},\n localeFamilies = {},\n globalLocale;\n\n function commonPrefix(arr1, arr2) {\n var i,\n minl = Math.min(arr1.length, arr2.length);\n for (i = 0; i < minl; i += 1) {\n if (arr1[i] !== arr2[i]) {\n return i;\n }\n }\n return minl;\n }\n\n function normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\n }\n\n // pick the locale from the array\n // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n function chooseLocale(names) {\n var i = 0,\n j,\n next,\n locale,\n split;\n\n while (i < names.length) {\n split = normalizeLocale(names[i]).split('-');\n j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n if (locale) {\n return locale;\n }\n if (\n next &&\n next.length >= j &&\n commonPrefix(split, next) >= j - 1\n ) {\n //the next array item is better than a shallower substring of this one\n break;\n }\n j--;\n }\n i++;\n }\n return globalLocale;\n }\n\n function loadLocale(name) {\n var oldLocale = null,\n aliasedRequire;\n // TODO: Find a better way to register and load all the locales in Node\n if (\n locales[name] === undefined &&\n typeof module !== 'undefined' &&\n module &&\n module.exports\n ) {\n try {\n oldLocale = globalLocale._abbr;\n aliasedRequire = require;\n aliasedRequire('./locale/' + name);\n getSetGlobalLocale(oldLocale);\n } catch (e) {\n // mark as not found to avoid repeating expensive file require call causing high CPU\n // when trying to find en-US, en_US, en-us for every format call\n locales[name] = null; // null means not found\n }\n }\n return locales[name];\n }\n\n // This function will load locale and then set the global locale. If\n // no arguments are passed in, it will simply return the current global\n // locale key.\n function getSetGlobalLocale(key, values) {\n var data;\n if (key) {\n if (isUndefined(values)) {\n data = getLocale(key);\n } else {\n data = defineLocale(key, values);\n }\n\n if (data) {\n // moment.duration._locale = moment._locale = data;\n globalLocale = data;\n } else {\n if (typeof console !== 'undefined' && console.warn) {\n //warn user if arguments are passed but the locale could not be set\n console.warn(\n 'Locale ' + key + ' not found. Did you forget to load it?'\n );\n }\n }\n }\n\n return globalLocale._abbr;\n }\n\n function defineLocale(name, config) {\n if (config !== null) {\n var locale,\n parentConfig = baseConfig;\n config.abbr = name;\n if (locales[name] != null) {\n deprecateSimple(\n 'defineLocaleOverride',\n 'use moment.updateLocale(localeName, config) to change ' +\n 'an existing locale. moment.defineLocale(localeName, ' +\n 'config) should only be used for creating a new locale ' +\n 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'\n );\n parentConfig = locales[name]._config;\n } else if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n } else {\n locale = loadLocale(config.parentLocale);\n if (locale != null) {\n parentConfig = locale._config;\n } else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n localeFamilies[config.parentLocale].push({\n name: name,\n config: config,\n });\n return null;\n }\n }\n }\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n if (localeFamilies[name]) {\n localeFamilies[name].forEach(function (x) {\n defineLocale(x.name, x.config);\n });\n }\n\n // backwards compat for now: also set the locale\n // make sure we set the locale AFTER all child locales have been\n // created, so we won't end up with the child locale set.\n getSetGlobalLocale(name);\n\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n }\n\n function updateLocale(name, config) {\n if (config != null) {\n var locale,\n tmpLocale,\n parentConfig = baseConfig;\n\n if (locales[name] != null && locales[name].parentLocale != null) {\n // Update existing child locale in-place to avoid memory-leaks\n locales[name].set(mergeConfigs(locales[name]._config, config));\n } else {\n // MERGE\n tmpLocale = loadLocale(name);\n if (tmpLocale != null) {\n parentConfig = tmpLocale._config;\n }\n config = mergeConfigs(parentConfig, config);\n if (tmpLocale == null) {\n // updateLocale is called for creating a new locale\n // Set abbr so it will have a name (getters return\n // undefined otherwise).\n config.abbr = name;\n }\n locale = new Locale(config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n }\n\n // backwards compat for now: also set the locale\n getSetGlobalLocale(name);\n } else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n if (name === getSetGlobalLocale()) {\n getSetGlobalLocale(name);\n }\n } else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n return locales[name];\n }\n\n // returns locale data\n function getLocale(key) {\n var locale;\n\n if (key && key._locale && key._locale._abbr) {\n key = key._locale._abbr;\n }\n\n if (!key) {\n return globalLocale;\n }\n\n if (!isArray(key)) {\n //short-circuit everything else\n locale = loadLocale(key);\n if (locale) {\n return locale;\n }\n key = [key];\n }\n\n return chooseLocale(key);\n }\n\n function listLocales() {\n return keys(locales);\n }\n\n function checkOverflow(m) {\n var overflow,\n a = m._a;\n\n if (a && getParsingFlags(m).overflow === -2) {\n overflow =\n a[MONTH] < 0 || a[MONTH] > 11\n ? MONTH\n : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])\n ? DATE\n : a[HOUR] < 0 ||\n a[HOUR] > 24 ||\n (a[HOUR] === 24 &&\n (a[MINUTE] !== 0 ||\n a[SECOND] !== 0 ||\n a[MILLISECOND] !== 0))\n ? HOUR\n : a[MINUTE] < 0 || a[MINUTE] > 59\n ? MINUTE\n : a[SECOND] < 0 || a[SECOND] > 59\n ? SECOND\n : a[MILLISECOND] < 0 || a[MILLISECOND] > 999\n ? MILLISECOND\n : -1;\n\n if (\n getParsingFlags(m)._overflowDayOfYear &&\n (overflow < YEAR || overflow > DATE)\n ) {\n overflow = DATE;\n }\n if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n\n getParsingFlags(m).overflow = overflow;\n }\n\n return m;\n }\n\n // iso 8601 regex\n // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n var extendedIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n basicIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d|))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/,\n isoDates = [\n ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n ['YYYY-DDD', /\\d{4}-\\d{3}/],\n ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n ['YYYYYYMMDD', /[+-]\\d{10}/],\n ['YYYYMMDD', /\\d{8}/],\n ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n ['YYYYDDD', /\\d{7}/],\n ['YYYYMM', /\\d{6}/, false],\n ['YYYY', /\\d{4}/, false],\n ],\n // iso time formats and regexes\n isoTimes = [\n ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n ['HH:mm', /\\d\\d:\\d\\d/],\n ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n ['HHmm', /\\d\\d\\d\\d/],\n ['HH', /\\d\\d/],\n ],\n aspNetJsonRegex = /^\\/?Date\\((-?\\d+)/i,\n // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n rfc2822 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/,\n obsOffsets = {\n UT: 0,\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60,\n };\n\n // date from iso format\n function configFromISO(config) {\n var i,\n l,\n string = config._i,\n match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n allowTime,\n dateFormat,\n timeFormat,\n tzFormat;\n\n if (match) {\n getParsingFlags(config).iso = true;\n\n for (i = 0, l = isoDates.length; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n if (dateFormat == null) {\n config._isValid = false;\n return;\n }\n if (match[3]) {\n for (i = 0, l = isoTimes.length; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n if (timeFormat == null) {\n config._isValid = false;\n return;\n }\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return;\n }\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n } else {\n config._isValid = false;\n return;\n }\n }\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n configFromStringAndFormat(config);\n } else {\n config._isValid = false;\n }\n }\n\n function extractFromRFC2822Strings(\n yearStr,\n monthStr,\n dayStr,\n hourStr,\n minuteStr,\n secondStr\n ) {\n var result = [\n untruncateYear(yearStr),\n defaultLocaleMonthsShort.indexOf(monthStr),\n parseInt(dayStr, 10),\n parseInt(hourStr, 10),\n parseInt(minuteStr, 10),\n ];\n\n if (secondStr) {\n result.push(parseInt(secondStr, 10));\n }\n\n return result;\n }\n\n function untruncateYear(yearStr) {\n var year = parseInt(yearStr, 10);\n if (year <= 49) {\n return 2000 + year;\n } else if (year <= 999) {\n return 1900 + year;\n }\n return year;\n }\n\n function preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s\n .replace(/\\([^)]*\\)|[\\n\\t]/g, ' ')\n .replace(/(\\s\\s+)/g, ' ')\n .replace(/^\\s\\s*/, '')\n .replace(/\\s\\s*$/, '');\n }\n\n function checkWeekday(weekdayStr, parsedInput, config) {\n if (weekdayStr) {\n // TODO: Replace the vanilla JS Date object with an independent day-of-week check.\n var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n weekdayActual = new Date(\n parsedInput[0],\n parsedInput[1],\n parsedInput[2]\n ).getDay();\n if (weekdayProvided !== weekdayActual) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n return false;\n }\n }\n return true;\n }\n\n function calculateOffset(obsOffset, militaryOffset, numOffset) {\n if (obsOffset) {\n return obsOffsets[obsOffset];\n } else if (militaryOffset) {\n // the only allowed military tz is Z\n return 0;\n } else {\n var hm = parseInt(numOffset, 10),\n m = hm % 100,\n h = (hm - m) / 100;\n return h * 60 + m;\n }\n }\n\n // date and time from ref 2822 format\n function configFromRFC2822(config) {\n var match = rfc2822.exec(preprocessRFC2822(config._i)),\n parsedArray;\n if (match) {\n parsedArray = extractFromRFC2822Strings(\n match[4],\n match[3],\n match[2],\n match[5],\n match[6],\n match[7]\n );\n if (!checkWeekday(match[1], parsedArray, config)) {\n return;\n }\n\n config._a = parsedArray;\n config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n config._d = createUTCDate.apply(null, config._a);\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n getParsingFlags(config).rfc2822 = true;\n } else {\n config._isValid = false;\n }\n }\n\n // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict\n function configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return;\n }\n\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n configFromRFC2822(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n if (config._strict) {\n config._isValid = false;\n } else {\n // Final attempt, use Input Fallback\n hooks.createFromInputFallback(config);\n }\n }\n\n hooks.createFromInputFallback = deprecate(\n 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n 'discouraged and will be removed in an upcoming major release. Please refer to ' +\n 'http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n }\n );\n\n // Pick the first defined of two or three arguments.\n function defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n return c;\n }\n\n function currentDateArray(config) {\n // hooks is actually the exported moment object\n var nowValue = new Date(hooks.now());\n if (config._useUTC) {\n return [\n nowValue.getUTCFullYear(),\n nowValue.getUTCMonth(),\n nowValue.getUTCDate(),\n ];\n }\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n }\n\n // convert an array to a date.\n // the array should mirror the parameters below\n // note: all values past the year are optional and will default to the lowest possible value.\n // [year, month, day , hour, minute, second, millisecond]\n function configFromArray(config) {\n var i,\n date,\n input = [],\n currentDate,\n expectedWeekday,\n yearToUse;\n\n if (config._d) {\n return;\n }\n\n currentDate = currentDateArray(config);\n\n //compute day of the year from weeks and weekdays\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n }\n\n //if the day of the year is set, figure out what it is\n if (config._dayOfYear != null) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (\n config._dayOfYear > daysInYear(yearToUse) ||\n config._dayOfYear === 0\n ) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n\n date = createUTCDate(yearToUse, 0, config._dayOfYear);\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n }\n\n // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n }\n\n // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] =\n config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (\n config._a[HOUR] === 24 &&\n config._a[MINUTE] === 0 &&\n config._a[SECOND] === 0 &&\n config._a[MILLISECOND] === 0\n ) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n\n config._d = (config._useUTC ? createUTCDate : createDate).apply(\n null,\n input\n );\n expectedWeekday = config._useUTC\n ? config._d.getUTCDay()\n : config._d.getDay();\n\n // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n\n if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n\n // check for mismatching day of week\n if (\n config._w &&\n typeof config._w.d !== 'undefined' &&\n config._w.d !== expectedWeekday\n ) {\n getParsingFlags(config).weekdayMismatch = true;\n }\n }\n\n function dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;\n\n w = config._w;\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4;\n\n // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n weekYear = defaults(\n w.GG,\n config._a[YEAR],\n weekOfYear(createLocal(), 1, 4).year\n );\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n\n curWeek = weekOfYear(createLocal(), dow, doy);\n\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n // Default to current week.\n week = defaults(w.w, curWeek.week);\n\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from beginning of week\n weekday = w.e + dow;\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n } else {\n // default to beginning of week\n weekday = dow;\n }\n }\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n } else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n } else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n }\n\n // constant that refers to the ISO standard\n hooks.ISO_8601 = function () {};\n\n // constant that refers to the RFC 2822 form\n hooks.RFC_2822 = function () {};\n\n // date from string and format string\n function configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\n if (config._f === hooks.RFC_2822) {\n configFromRFC2822(config);\n return;\n }\n config._a = [];\n getParsingFlags(config).empty = true;\n\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n var string = '' + config._i,\n i,\n parsedInput,\n tokens,\n token,\n skipped,\n stringLength = string.length,\n totalParsedInputLength = 0,\n era;\n\n tokens =\n expandFormat(config._f, config._locale).match(formattingTokens) || [];\n\n for (i = 0; i < tokens.length; i++) {\n token = tokens[i];\n parsedInput = (string.match(getParseRegexForToken(token, config)) ||\n [])[0];\n if (parsedInput) {\n skipped = string.substr(0, string.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n string = string.slice(\n string.indexOf(parsedInput) + parsedInput.length\n );\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n } else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\n } else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver =\n stringLength - totalParsedInputLength;\n if (string.length > 0) {\n getParsingFlags(config).unusedInput.push(string);\n }\n\n // clear _12h flag if hour is <= 12\n if (\n config._a[HOUR] <= 12 &&\n getParsingFlags(config).bigHour === true &&\n config._a[HOUR] > 0\n ) {\n getParsingFlags(config).bigHour = undefined;\n }\n\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(\n config._locale,\n config._a[HOUR],\n config._meridiem\n );\n\n // handle era\n era = getParsingFlags(config).era;\n if (era !== null) {\n config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);\n }\n\n configFromArray(config);\n checkOverflow(config);\n }\n\n function meridiemFixWrap(locale, hour, meridiem) {\n var isPm;\n\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n } else if (locale.isPM != null) {\n // Fallback\n isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n if (!isPm && hour === 12) {\n hour = 0;\n }\n return hour;\n } else {\n // this is not supposed to happen\n return hour;\n }\n }\n\n // date from string and array of format strings\n function configFromStringAndArray(config) {\n var tempConfig,\n bestMoment,\n scoreToBeat,\n i,\n currentScore,\n validFormatFound,\n bestFormatIsValid = false;\n\n if (config._f.length === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n\n for (i = 0; i < config._f.length; i++) {\n currentScore = 0;\n validFormatFound = false;\n tempConfig = copyConfig({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n\n if (isValid(tempConfig)) {\n validFormatFound = true;\n }\n\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n //or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n getParsingFlags(tempConfig).score = currentScore;\n\n if (!bestFormatIsValid) {\n if (\n scoreToBeat == null ||\n currentScore < scoreToBeat ||\n validFormatFound\n ) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n if (validFormatFound) {\n bestFormatIsValid = true;\n }\n }\n } else {\n if (currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n }\n\n extend(config, bestMoment || tempConfig);\n }\n\n function configFromObject(config) {\n if (config._d) {\n return;\n }\n\n var i = normalizeObjectUnits(config._i),\n dayOrDate = i.day === undefined ? i.date : i.day;\n config._a = map(\n [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],\n function (obj) {\n return obj && parseInt(obj, 10);\n }\n );\n\n configFromArray(config);\n }\n\n function createFromConfig(config) {\n var res = new Moment(checkOverflow(prepareConfig(config)));\n if (res._nextDay) {\n // Adding is smart enough around DST\n res.add(1, 'd');\n res._nextDay = undefined;\n }\n\n return res;\n }\n\n function prepareConfig(config) {\n var input = config._i,\n format = config._f;\n\n config._locale = config._locale || getLocale(config._l);\n\n if (input === null || (format === undefined && input === '')) {\n return createInvalid({ nullInput: true });\n }\n\n if (typeof input === 'string') {\n config._i = input = config._locale.preparse(input);\n }\n\n if (isMoment(input)) {\n return new Moment(checkOverflow(input));\n } else if (isDate(input)) {\n config._d = input;\n } else if (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else {\n configFromInput(config);\n }\n\n if (!isValid(config)) {\n config._d = null;\n }\n\n return config;\n }\n\n function configFromInput(config) {\n var input = config._i;\n if (isUndefined(input)) {\n config._d = new Date(hooks.now());\n } else if (isDate(input)) {\n config._d = new Date(input.valueOf());\n } else if (typeof input === 'string') {\n configFromString(config);\n } else if (isArray(input)) {\n config._a = map(input.slice(0), function (obj) {\n return parseInt(obj, 10);\n });\n configFromArray(config);\n } else if (isObject(input)) {\n configFromObject(config);\n } else if (isNumber(input)) {\n // from milliseconds\n config._d = new Date(input);\n } else {\n hooks.createFromInputFallback(config);\n }\n }\n\n function createLocalOrUTC(input, format, locale, strict, isUTC) {\n var c = {};\n\n if (format === true || format === false) {\n strict = format;\n format = undefined;\n }\n\n if (locale === true || locale === false) {\n strict = locale;\n locale = undefined;\n }\n\n if (\n (isObject(input) && isObjectEmpty(input)) ||\n (isArray(input) && input.length === 0)\n ) {\n input = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n c._isAMomentObject = true;\n c._useUTC = c._isUTC = isUTC;\n c._l = locale;\n c._i = input;\n c._f = format;\n c._strict = strict;\n\n return createFromConfig(c);\n }\n\n function createLocal(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n }\n\n var prototypeMin = deprecate(\n 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other < this ? this : other;\n } else {\n return createInvalid();\n }\n }\n ),\n prototypeMax = deprecate(\n 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other > this ? this : other;\n } else {\n return createInvalid();\n }\n }\n );\n\n // Pick a moment m from moments so that m[fn](other) is true for all\n // other. This relies on the function fn to be transitive.\n //\n // moments should either be an array of moment objects or an array, whose\n // first element is an array of moment objects.\n function pickBy(fn, moments) {\n var res, i;\n if (moments.length === 1 && isArray(moments[0])) {\n moments = moments[0];\n }\n if (!moments.length) {\n return createLocal();\n }\n res = moments[0];\n for (i = 1; i < moments.length; ++i) {\n if (!moments[i].isValid() || moments[i][fn](res)) {\n res = moments[i];\n }\n }\n return res;\n }\n\n // TODO: Use [].sort instead?\n function min() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isBefore', args);\n }\n\n function max() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isAfter', args);\n }\n\n var now = function () {\n return Date.now ? Date.now() : +new Date();\n };\n\n var ordering = [\n 'year',\n 'quarter',\n 'month',\n 'week',\n 'day',\n 'hour',\n 'minute',\n 'second',\n 'millisecond',\n ];\n\n function isDurationValid(m) {\n var key,\n unitHasDecimal = false,\n i;\n for (key in m) {\n if (\n hasOwnProp(m, key) &&\n !(\n indexOf.call(ordering, key) !== -1 &&\n (m[key] == null || !isNaN(m[key]))\n )\n ) {\n return false;\n }\n }\n\n for (i = 0; i < ordering.length; ++i) {\n if (m[ordering[i]]) {\n if (unitHasDecimal) {\n return false; // only allow non-integers for smallest unit\n }\n if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n unitHasDecimal = true;\n }\n }\n }\n\n return true;\n }\n\n function isValid$1() {\n return this._isValid;\n }\n\n function createInvalid$1() {\n return createDuration(NaN);\n }\n\n function Duration(duration) {\n var normalizedInput = normalizeObjectUnits(duration),\n years = normalizedInput.year || 0,\n quarters = normalizedInput.quarter || 0,\n months = normalizedInput.month || 0,\n weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n days = normalizedInput.day || 0,\n hours = normalizedInput.hour || 0,\n minutes = normalizedInput.minute || 0,\n seconds = normalizedInput.second || 0,\n milliseconds = normalizedInput.millisecond || 0;\n\n this._isValid = isDurationValid(normalizedInput);\n\n // representation for dateAddRemove\n this._milliseconds =\n +milliseconds +\n seconds * 1e3 + // 1000\n minutes * 6e4 + // 1000 * 60\n hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n this._days = +days + weeks * 7;\n // It is impossible to translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n this._months = +months + quarters * 3 + years * 12;\n\n this._data = {};\n\n this._locale = getLocale();\n\n this._bubble();\n }\n\n function isDuration(obj) {\n return obj instanceof Duration;\n }\n\n function absRound(number) {\n if (number < 0) {\n return Math.round(-1 * number) * -1;\n } else {\n return Math.round(number);\n }\n }\n\n // compare two arrays, return the number of differences\n function compareArrays(array1, array2, dontConvert) {\n var len = Math.min(array1.length, array2.length),\n lengthDiff = Math.abs(array1.length - array2.length),\n diffs = 0,\n i;\n for (i = 0; i < len; i++) {\n if (\n (dontConvert && array1[i] !== array2[i]) ||\n (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))\n ) {\n diffs++;\n }\n }\n return diffs + lengthDiff;\n }\n\n // FORMATTING\n\n function offset(token, separator) {\n addFormatToken(token, 0, 0, function () {\n var offset = this.utcOffset(),\n sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n return (\n sign +\n zeroFill(~~(offset / 60), 2) +\n separator +\n zeroFill(~~offset % 60, 2)\n );\n });\n }\n\n offset('Z', ':');\n offset('ZZ', '');\n\n // PARSING\n\n addRegexToken('Z', matchShortOffset);\n addRegexToken('ZZ', matchShortOffset);\n addParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n });\n\n // HELPERS\n\n // timezone chunker\n // '+10:00' > ['10', '00']\n // '-1530' > ['-15', '30']\n var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n function offsetFromString(matcher, string) {\n var matches = (string || '').match(matcher),\n chunk,\n parts,\n minutes;\n\n if (matches === null) {\n return null;\n }\n\n chunk = matches[matches.length - 1] || [];\n parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;\n }\n\n // Return a moment from input, that is local/utc/zone equivalent to model.\n function cloneWithOffset(input, model) {\n var res, diff;\n if (model._isUTC) {\n res = model.clone();\n diff =\n (isMoment(input) || isDate(input)\n ? input.valueOf()\n : createLocal(input).valueOf()) - res.valueOf();\n // Use low-level api, because this fn is low-level api.\n res._d.setTime(res._d.valueOf() + diff);\n hooks.updateOffset(res, false);\n return res;\n } else {\n return createLocal(input).local();\n }\n }\n\n function getDateOffset(m) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(m._d.getTimezoneOffset());\n }\n\n // HOOKS\n\n // This function will be called whenever a moment is mutated.\n // It is intended to keep the offset in sync with the timezone.\n hooks.updateOffset = function () {};\n\n // MOMENTS\n\n // keepLocalTime = true means only change the timezone, without\n // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n // +0200, so we adjust the time as needed, to be valid.\n //\n // Keeping the time actually adds/subtracts (one hour)\n // from the actual represented time. That is why we call updateOffset\n // a second time. In case it wants us to change the offset again\n // _changeInProgress == true case, then we have to adjust, because\n // there is no such time in the given timezone.\n function getSetOffset(input, keepLocalTime, keepMinutes) {\n var offset = this._offset || 0,\n localAdjust;\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(matchShortOffset, input);\n if (input === null) {\n return this;\n }\n } else if (Math.abs(input) < 16 && !keepMinutes) {\n input = input * 60;\n }\n if (!this._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(this);\n }\n this._offset = input;\n this._isUTC = true;\n if (localAdjust != null) {\n this.add(localAdjust, 'm');\n }\n if (offset !== input) {\n if (!keepLocalTime || this._changeInProgress) {\n addSubtract(\n this,\n createDuration(input - offset, 'm'),\n 1,\n false\n );\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n hooks.updateOffset(this, true);\n this._changeInProgress = null;\n }\n }\n return this;\n } else {\n return this._isUTC ? offset : getDateOffset(this);\n }\n }\n\n function getSetZone(input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n\n this.utcOffset(input, keepLocalTime);\n\n return this;\n } else {\n return -this.utcOffset();\n }\n }\n\n function setOffsetToUTC(keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n }\n\n function setOffsetToLocal(keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\n }\n\n function setOffsetToParsedOffset() {\n if (this._tzm != null) {\n this.utcOffset(this._tzm, false, true);\n } else if (typeof this._i === 'string') {\n var tZone = offsetFromString(matchOffset, this._i);\n if (tZone != null) {\n this.utcOffset(tZone);\n } else {\n this.utcOffset(0, true);\n }\n }\n return this;\n }\n\n function hasAlignedHourOffset(input) {\n if (!this.isValid()) {\n return false;\n }\n input = input ? createLocal(input).utcOffset() : 0;\n\n return (this.utcOffset() - input) % 60 === 0;\n }\n\n function isDaylightSavingTime() {\n return (\n this.utcOffset() > this.clone().month(0).utcOffset() ||\n this.utcOffset() > this.clone().month(5).utcOffset()\n );\n }\n\n function isDaylightSavingTimeShifted() {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n\n var c = {},\n other;\n\n copyConfig(c, this);\n c = prepareConfig(c);\n\n if (c._a) {\n other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted =\n this.isValid() && compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n\n return this._isDSTShifted;\n }\n\n function isLocal() {\n return this.isValid() ? !this._isUTC : false;\n }\n\n function isUtcOffset() {\n return this.isValid() ? this._isUTC : false;\n }\n\n function isUtc() {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n }\n\n // ASP.NET json date format regex\n var aspNetRegex = /^(-|\\+)?(?:(\\d*)[. ])?(\\d+):(\\d+)(?::(\\d+)(\\.\\d*)?)?$/,\n // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n // and further modified to allow for strings containing both week and day\n isoRegex = /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n function createDuration(input, key) {\n var duration = input,\n // matching against regexp is expensive, do it on demand\n match = null,\n sign,\n ret,\n diffRes;\n\n if (isDuration(input)) {\n duration = {\n ms: input._milliseconds,\n d: input._days,\n M: input._months,\n };\n } else if (isNumber(input) || !isNaN(+input)) {\n duration = {};\n if (key) {\n duration[key] = +input;\n } else {\n duration.milliseconds = +input;\n }\n } else if ((match = aspNetRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: 0,\n d: toInt(match[DATE]) * sign,\n h: toInt(match[HOUR]) * sign,\n m: toInt(match[MINUTE]) * sign,\n s: toInt(match[SECOND]) * sign,\n ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match\n };\n } else if ((match = isoRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: parseIso(match[2], sign),\n M: parseIso(match[3], sign),\n w: parseIso(match[4], sign),\n d: parseIso(match[5], sign),\n h: parseIso(match[6], sign),\n m: parseIso(match[7], sign),\n s: parseIso(match[8], sign),\n };\n } else if (duration == null) {\n // checks for null or undefined\n duration = {};\n } else if (\n typeof duration === 'object' &&\n ('from' in duration || 'to' in duration)\n ) {\n diffRes = momentsDifference(\n createLocal(duration.from),\n createLocal(duration.to)\n );\n\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n\n ret = new Duration(duration);\n\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n\n if (isDuration(input) && hasOwnProp(input, '_isValid')) {\n ret._isValid = input._isValid;\n }\n\n return ret;\n }\n\n createDuration.fn = Duration.prototype;\n createDuration.invalid = createInvalid$1;\n\n function parseIso(inp, sign) {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n var res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n return (isNaN(res) ? 0 : res) * sign;\n }\n\n function positiveMomentsDifference(base, other) {\n var res = {};\n\n res.months =\n other.month() - base.month() + (other.year() - base.year()) * 12;\n if (base.clone().add(res.months, 'M').isAfter(other)) {\n --res.months;\n }\n\n res.milliseconds = +other - +base.clone().add(res.months, 'M');\n\n return res;\n }\n\n function momentsDifference(base, other) {\n var res;\n if (!(base.isValid() && other.isValid())) {\n return { milliseconds: 0, months: 0 };\n }\n\n other = cloneWithOffset(other, base);\n if (base.isBefore(other)) {\n res = positiveMomentsDifference(base, other);\n } else {\n res = positiveMomentsDifference(other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n\n return res;\n }\n\n // TODO: remove 'name' arg after deprecation is removed\n function createAdder(direction, name) {\n return function (val, period) {\n var dur, tmp;\n //invert the arguments, but complain about it\n if (period !== null && !isNaN(+period)) {\n deprecateSimple(\n name,\n 'moment().' +\n name +\n '(period, number) is deprecated. Please use moment().' +\n name +\n '(number, period). ' +\n 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'\n );\n tmp = val;\n val = period;\n period = tmp;\n }\n\n dur = createDuration(val, period);\n addSubtract(this, dur, direction);\n return this;\n };\n }\n\n function addSubtract(mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = absRound(duration._days),\n months = absRound(duration._months);\n\n if (!mom.isValid()) {\n // No op\n return;\n }\n\n updateOffset = updateOffset == null ? true : updateOffset;\n\n if (months) {\n setMonth(mom, get(mom, 'Month') + months * isAdding);\n }\n if (days) {\n set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n }\n if (milliseconds) {\n mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n }\n if (updateOffset) {\n hooks.updateOffset(mom, days || months);\n }\n }\n\n var add = createAdder(1, 'add'),\n subtract = createAdder(-1, 'subtract');\n\n function isString(input) {\n return typeof input === 'string' || input instanceof String;\n }\n\n // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined\n function isMomentInput(input) {\n return (\n isMoment(input) ||\n isDate(input) ||\n isString(input) ||\n isNumber(input) ||\n isNumberOrStringArray(input) ||\n isMomentInputObject(input) ||\n input === null ||\n input === undefined\n );\n }\n\n function isMomentInputObject(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'years',\n 'year',\n 'y',\n 'months',\n 'month',\n 'M',\n 'days',\n 'day',\n 'd',\n 'dates',\n 'date',\n 'D',\n 'hours',\n 'hour',\n 'h',\n 'minutes',\n 'minute',\n 'm',\n 'seconds',\n 'second',\n 's',\n 'milliseconds',\n 'millisecond',\n 'ms',\n ],\n i,\n property;\n\n for (i = 0; i < properties.length; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function isNumberOrStringArray(input) {\n var arrayTest = isArray(input),\n dataTypeTest = false;\n if (arrayTest) {\n dataTypeTest =\n input.filter(function (item) {\n return !isNumber(item) && isString(input);\n }).length === 0;\n }\n return arrayTest && dataTypeTest;\n }\n\n function isCalendarSpec(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'sameDay',\n 'nextDay',\n 'lastDay',\n 'nextWeek',\n 'lastWeek',\n 'sameElse',\n ],\n i,\n property;\n\n for (i = 0; i < properties.length; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6\n ? 'sameElse'\n : diff < -1\n ? 'lastWeek'\n : diff < 0\n ? 'lastDay'\n : diff < 1\n ? 'sameDay'\n : diff < 2\n ? 'nextDay'\n : diff < 7\n ? 'nextWeek'\n : 'sameElse';\n }\n\n function calendar$1(time, formats) {\n // Support for single parameter, formats only overload to the calendar function\n if (arguments.length === 1) {\n if (isMomentInput(arguments[0])) {\n time = arguments[0];\n formats = undefined;\n } else if (isCalendarSpec(arguments[0])) {\n formats = arguments[0];\n time = undefined;\n }\n }\n // We want to compare the start of today, vs this.\n // Getting start-of-today depends on whether we're local/utc/offset or not.\n var now = time || createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n format = hooks.calendarFormat(this, sod) || 'sameElse',\n output =\n formats &&\n (isFunction(formats[format])\n ? formats[format].call(this, now)\n : formats[format]);\n\n return this.format(\n output || this.localeData().calendar(format, this, createLocal(now))\n );\n }\n\n function clone() {\n return new Moment(this);\n }\n\n function isAfter(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() > localInput.valueOf();\n } else {\n return localInput.valueOf() < this.clone().startOf(units).valueOf();\n }\n }\n\n function isBefore(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() < localInput.valueOf();\n } else {\n return this.clone().endOf(units).valueOf() < localInput.valueOf();\n }\n }\n\n function isBetween(from, to, units, inclusivity) {\n var localFrom = isMoment(from) ? from : createLocal(from),\n localTo = isMoment(to) ? to : createLocal(to);\n if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n return false;\n }\n inclusivity = inclusivity || '()';\n return (\n (inclusivity[0] === '('\n ? this.isAfter(localFrom, units)\n : !this.isBefore(localFrom, units)) &&\n (inclusivity[1] === ')'\n ? this.isBefore(localTo, units)\n : !this.isAfter(localTo, units))\n );\n }\n\n function isSame(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input),\n inputMs;\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() === localInput.valueOf();\n } else {\n inputMs = localInput.valueOf();\n return (\n this.clone().startOf(units).valueOf() <= inputMs &&\n inputMs <= this.clone().endOf(units).valueOf()\n );\n }\n }\n\n function isSameOrAfter(input, units) {\n return this.isSame(input, units) || this.isAfter(input, units);\n }\n\n function isSameOrBefore(input, units) {\n return this.isSame(input, units) || this.isBefore(input, units);\n }\n\n function diff(input, units, asFloat) {\n var that, zoneDelta, output;\n\n if (!this.isValid()) {\n return NaN;\n }\n\n that = cloneWithOffset(input, this);\n\n if (!that.isValid()) {\n return NaN;\n }\n\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n units = normalizeUnits(units);\n\n switch (units) {\n case 'year':\n output = monthDiff(this, that) / 12;\n break;\n case 'month':\n output = monthDiff(this, that);\n break;\n case 'quarter':\n output = monthDiff(this, that) / 3;\n break;\n case 'second':\n output = (this - that) / 1e3;\n break; // 1000\n case 'minute':\n output = (this - that) / 6e4;\n break; // 1000 * 60\n case 'hour':\n output = (this - that) / 36e5;\n break; // 1000 * 60 * 60\n case 'day':\n output = (this - that - zoneDelta) / 864e5;\n break; // 1000 * 60 * 60 * 24, negate dst\n case 'week':\n output = (this - that - zoneDelta) / 6048e5;\n break; // 1000 * 60 * 60 * 24 * 7, negate dst\n default:\n output = this - that;\n }\n\n return asFloat ? output : absFloor(output);\n }\n\n function monthDiff(a, b) {\n if (a.date() < b.date()) {\n // end-of-month calculations work correct when the start month has more\n // days than the end month.\n return -monthDiff(b, a);\n }\n // difference in months\n var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),\n // b is in (anchor - 1 month, anchor + 1 month)\n anchor = a.clone().add(wholeMonthDiff, 'months'),\n anchor2,\n adjust;\n\n if (b - anchor < 0) {\n anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor - anchor2);\n } else {\n anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor2 - anchor);\n }\n\n //check for negative zero, return zero if negative zero\n return -(wholeMonthDiff + adjust) || 0;\n }\n\n hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n function toString() {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n }\n\n function toISOString(keepOffset) {\n if (!this.isValid()) {\n return null;\n }\n var utc = keepOffset !== true,\n m = utc ? this.clone().utc() : this;\n if (m.year() < 0 || m.year() > 9999) {\n return formatMoment(\n m,\n utc\n ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'\n : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n if (isFunction(Date.prototype.toISOString)) {\n // native implementation is ~50x faster, use it when we can\n if (utc) {\n return this.toDate().toISOString();\n } else {\n return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)\n .toISOString()\n .replace('Z', formatMoment(m, 'Z'));\n }\n }\n return formatMoment(\n m,\n utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n\n /**\n * Return a human readable representation of a moment that can\n * also be evaluated to get a new moment which is the same\n *\n * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n */\n function inspect() {\n if (!this.isValid()) {\n return 'moment.invalid(/* ' + this._i + ' */)';\n }\n var func = 'moment',\n zone = '',\n prefix,\n year,\n datetime,\n suffix;\n if (!this.isLocal()) {\n func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n zone = 'Z';\n }\n prefix = '[' + func + '(\"]';\n year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\n datetime = '-MM-DD[T]HH:mm:ss.SSS';\n suffix = zone + '[\")]';\n\n return this.format(prefix + year + datetime + suffix);\n }\n\n function format(inputString) {\n if (!inputString) {\n inputString = this.isUtc()\n ? hooks.defaultFormatUtc\n : hooks.defaultFormat;\n }\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n }\n\n function from(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ to: this, from: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function fromNow(withoutSuffix) {\n return this.from(createLocal(), withoutSuffix);\n }\n\n function to(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ from: this, to: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function toNow(withoutSuffix) {\n return this.to(createLocal(), withoutSuffix);\n }\n\n // If passed a locale key, it will set the locale for this\n // instance. Otherwise, it will return the locale configuration\n // variables for this instance.\n function locale(key) {\n var newLocaleData;\n\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = getLocale(key);\n if (newLocaleData != null) {\n this._locale = newLocaleData;\n }\n return this;\n }\n }\n\n var lang = deprecate(\n 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n }\n );\n\n function localeData() {\n return this._locale;\n }\n\n var MS_PER_SECOND = 1000,\n MS_PER_MINUTE = 60 * MS_PER_SECOND,\n MS_PER_HOUR = 60 * MS_PER_MINUTE,\n MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n // actual modulo - handles negative numbers (for dates before 1970):\n function mod$1(dividend, divisor) {\n return ((dividend % divisor) + divisor) % divisor;\n }\n\n function localStartOfDate(y, m, d) {\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return new Date(y, m, d).valueOf();\n }\n }\n\n function utcStartOfDate(y, m, d) {\n // Date.UTC remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return Date.UTC(y, m, d);\n }\n }\n\n function startOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year(), 0, 1);\n break;\n case 'quarter':\n time = startOfDate(\n this.year(),\n this.month() - (this.month() % 3),\n 1\n );\n break;\n case 'month':\n time = startOfDate(this.year(), this.month(), 1);\n break;\n case 'week':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday()\n );\n break;\n case 'isoWeek':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1)\n );\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date());\n break;\n case 'hour':\n time = this._d.valueOf();\n time -= mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n );\n break;\n case 'minute':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_MINUTE);\n break;\n case 'second':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_SECOND);\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function endOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year() + 1, 0, 1) - 1;\n break;\n case 'quarter':\n time =\n startOfDate(\n this.year(),\n this.month() - (this.month() % 3) + 3,\n 1\n ) - 1;\n break;\n case 'month':\n time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n break;\n case 'week':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday() + 7\n ) - 1;\n break;\n case 'isoWeek':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1) + 7\n ) - 1;\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n break;\n case 'hour':\n time = this._d.valueOf();\n time +=\n MS_PER_HOUR -\n mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n ) -\n 1;\n break;\n case 'minute':\n time = this._d.valueOf();\n time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n break;\n case 'second':\n time = this._d.valueOf();\n time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function valueOf() {\n return this._d.valueOf() - (this._offset || 0) * 60000;\n }\n\n function unix() {\n return Math.floor(this.valueOf() / 1000);\n }\n\n function toDate() {\n return new Date(this.valueOf());\n }\n\n function toArray() {\n var m = this;\n return [\n m.year(),\n m.month(),\n m.date(),\n m.hour(),\n m.minute(),\n m.second(),\n m.millisecond(),\n ];\n }\n\n function toObject() {\n var m = this;\n return {\n years: m.year(),\n months: m.month(),\n date: m.date(),\n hours: m.hours(),\n minutes: m.minutes(),\n seconds: m.seconds(),\n milliseconds: m.milliseconds(),\n };\n }\n\n function toJSON() {\n // new Date(NaN).toJSON() === null\n return this.isValid() ? this.toISOString() : null;\n }\n\n function isValid$2() {\n return isValid(this);\n }\n\n function parsingFlags() {\n return extend({}, getParsingFlags(this));\n }\n\n function invalidAt() {\n return getParsingFlags(this).overflow;\n }\n\n function creationData() {\n return {\n input: this._i,\n format: this._f,\n locale: this._locale,\n isUTC: this._isUTC,\n strict: this._strict,\n };\n }\n\n addFormatToken('N', 0, 0, 'eraAbbr');\n addFormatToken('NN', 0, 0, 'eraAbbr');\n addFormatToken('NNN', 0, 0, 'eraAbbr');\n addFormatToken('NNNN', 0, 0, 'eraName');\n addFormatToken('NNNNN', 0, 0, 'eraNarrow');\n\n addFormatToken('y', ['y', 1], 'yo', 'eraYear');\n addFormatToken('y', ['yy', 2], 0, 'eraYear');\n addFormatToken('y', ['yyy', 3], 0, 'eraYear');\n addFormatToken('y', ['yyyy', 4], 0, 'eraYear');\n\n addRegexToken('N', matchEraAbbr);\n addRegexToken('NN', matchEraAbbr);\n addRegexToken('NNN', matchEraAbbr);\n addRegexToken('NNNN', matchEraName);\n addRegexToken('NNNNN', matchEraNarrow);\n\n addParseToken(['N', 'NN', 'NNN', 'NNNN', 'NNNNN'], function (\n input,\n array,\n config,\n token\n ) {\n var era = config._locale.erasParse(input, token, config._strict);\n if (era) {\n getParsingFlags(config).era = era;\n } else {\n getParsingFlags(config).invalidEra = input;\n }\n });\n\n addRegexToken('y', matchUnsigned);\n addRegexToken('yy', matchUnsigned);\n addRegexToken('yyy', matchUnsigned);\n addRegexToken('yyyy', matchUnsigned);\n addRegexToken('yo', matchEraYearOrdinal);\n\n addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);\n addParseToken(['yo'], function (input, array, config, token) {\n var match;\n if (config._locale._eraYearOrdinalRegex) {\n match = input.match(config._locale._eraYearOrdinalRegex);\n }\n\n if (config._locale.eraYearOrdinalParse) {\n array[YEAR] = config._locale.eraYearOrdinalParse(input, match);\n } else {\n array[YEAR] = parseInt(input, 10);\n }\n });\n\n function localeEras(m, format) {\n var i,\n l,\n date,\n eras = this._eras || getLocale('en')._eras;\n for (i = 0, l = eras.length; i < l; ++i) {\n switch (typeof eras[i].since) {\n case 'string':\n // truncate time\n date = hooks(eras[i].since).startOf('day');\n eras[i].since = date.valueOf();\n break;\n }\n\n switch (typeof eras[i].until) {\n case 'undefined':\n eras[i].until = +Infinity;\n break;\n case 'string':\n // truncate time\n date = hooks(eras[i].until).startOf('day').valueOf();\n eras[i].until = date.valueOf();\n break;\n }\n }\n return eras;\n }\n\n function localeErasParse(eraName, format, strict) {\n var i,\n l,\n eras = this.eras(),\n name,\n abbr,\n narrow;\n eraName = eraName.toUpperCase();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n name = eras[i].name.toUpperCase();\n abbr = eras[i].abbr.toUpperCase();\n narrow = eras[i].narrow.toUpperCase();\n\n if (strict) {\n switch (format) {\n case 'N':\n case 'NN':\n case 'NNN':\n if (abbr === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNN':\n if (name === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNNN':\n if (narrow === eraName) {\n return eras[i];\n }\n break;\n }\n } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {\n return eras[i];\n }\n }\n }\n\n function localeErasConvertYear(era, year) {\n var dir = era.since <= era.until ? +1 : -1;\n if (year === undefined) {\n return hooks(era.since).year();\n } else {\n return hooks(era.since).year() + (year - era.offset) * dir;\n }\n }\n\n function getEraName() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].name;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].name;\n }\n }\n\n return '';\n }\n\n function getEraNarrow() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].narrow;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].narrow;\n }\n }\n\n return '';\n }\n\n function getEraAbbr() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].abbr;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].abbr;\n }\n }\n\n return '';\n }\n\n function getEraYear() {\n var i,\n l,\n dir,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n dir = eras[i].since <= eras[i].until ? +1 : -1;\n\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (\n (eras[i].since <= val && val <= eras[i].until) ||\n (eras[i].until <= val && val <= eras[i].since)\n ) {\n return (\n (this.year() - hooks(eras[i].since).year()) * dir +\n eras[i].offset\n );\n }\n }\n\n return this.year();\n }\n\n function erasNameRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNameRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNameRegex : this._erasRegex;\n }\n\n function erasAbbrRegex(isStrict) {\n if (!hasOwnProp(this, '_erasAbbrRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasAbbrRegex : this._erasRegex;\n }\n\n function erasNarrowRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNarrowRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNarrowRegex : this._erasRegex;\n }\n\n function matchEraAbbr(isStrict, locale) {\n return locale.erasAbbrRegex(isStrict);\n }\n\n function matchEraName(isStrict, locale) {\n return locale.erasNameRegex(isStrict);\n }\n\n function matchEraNarrow(isStrict, locale) {\n return locale.erasNarrowRegex(isStrict);\n }\n\n function matchEraYearOrdinal(isStrict, locale) {\n return locale._eraYearOrdinalRegex || matchUnsigned;\n }\n\n function computeErasParse() {\n var abbrPieces = [],\n namePieces = [],\n narrowPieces = [],\n mixedPieces = [],\n i,\n l,\n eras = this.eras();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n namePieces.push(regexEscape(eras[i].name));\n abbrPieces.push(regexEscape(eras[i].abbr));\n narrowPieces.push(regexEscape(eras[i].narrow));\n\n mixedPieces.push(regexEscape(eras[i].name));\n mixedPieces.push(regexEscape(eras[i].abbr));\n mixedPieces.push(regexEscape(eras[i].narrow));\n }\n\n this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');\n this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');\n this._erasNarrowRegex = new RegExp(\n '^(' + narrowPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n });\n\n addFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n });\n\n function addWeekYearFormatToken(token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n }\n\n addWeekYearFormatToken('gggg', 'weekYear');\n addWeekYearFormatToken('ggggg', 'weekYear');\n addWeekYearFormatToken('GGGG', 'isoWeekYear');\n addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n // ALIASES\n\n addUnitAlias('weekYear', 'gg');\n addUnitAlias('isoWeekYear', 'GG');\n\n // PRIORITY\n\n addUnitPriority('weekYear', 1);\n addUnitPriority('isoWeekYear', 1);\n\n // PARSING\n\n addRegexToken('G', matchSigned);\n addRegexToken('g', matchSigned);\n addRegexToken('GG', match1to2, match2);\n addRegexToken('gg', match1to2, match2);\n addRegexToken('GGGG', match1to4, match4);\n addRegexToken('gggg', match1to4, match4);\n addRegexToken('GGGGG', match1to6, match6);\n addRegexToken('ggggg', match1to6, match6);\n\n addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (\n input,\n week,\n config,\n token\n ) {\n week[token.substr(0, 2)] = toInt(input);\n });\n\n addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = hooks.parseTwoDigitYear(input);\n });\n\n // MOMENTS\n\n function getSetWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.week(),\n this.weekday(),\n this.localeData()._week.dow,\n this.localeData()._week.doy\n );\n }\n\n function getSetISOWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.isoWeek(),\n this.isoWeekday(),\n 1,\n 4\n );\n }\n\n function getISOWeeksInYear() {\n return weeksInYear(this.year(), 1, 4);\n }\n\n function getISOWeeksInISOWeekYear() {\n return weeksInYear(this.isoWeekYear(), 1, 4);\n }\n\n function getWeeksInYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n }\n\n function getWeeksInWeekYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);\n }\n\n function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n var weeksTarget;\n if (input == null) {\n return weekOfYear(this, dow, doy).year;\n } else {\n weeksTarget = weeksInYear(input, dow, doy);\n if (week > weeksTarget) {\n week = weeksTarget;\n }\n return setWeekAll.call(this, input, week, weekday, dow, doy);\n }\n }\n\n function setWeekAll(weekYear, week, weekday, dow, doy) {\n var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n this.year(date.getUTCFullYear());\n this.month(date.getUTCMonth());\n this.date(date.getUTCDate());\n return this;\n }\n\n // FORMATTING\n\n addFormatToken('Q', 0, 'Qo', 'quarter');\n\n // ALIASES\n\n addUnitAlias('quarter', 'Q');\n\n // PRIORITY\n\n addUnitPriority('quarter', 7);\n\n // PARSING\n\n addRegexToken('Q', match1);\n addParseToken('Q', function (input, array) {\n array[MONTH] = (toInt(input) - 1) * 3;\n });\n\n // MOMENTS\n\n function getSetQuarter(input) {\n return input == null\n ? Math.ceil((this.month() + 1) / 3)\n : this.month((input - 1) * 3 + (this.month() % 3));\n }\n\n // FORMATTING\n\n addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n // ALIASES\n\n addUnitAlias('date', 'D');\n\n // PRIORITY\n addUnitPriority('date', 9);\n\n // PARSING\n\n addRegexToken('D', match1to2);\n addRegexToken('DD', match1to2, match2);\n addRegexToken('Do', function (isStrict, locale) {\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n return isStrict\n ? locale._dayOfMonthOrdinalParse || locale._ordinalParse\n : locale._dayOfMonthOrdinalParseLenient;\n });\n\n addParseToken(['D', 'DD'], DATE);\n addParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0]);\n });\n\n // MOMENTS\n\n var getSetDayOfMonth = makeGetSet('Date', true);\n\n // FORMATTING\n\n addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n // ALIASES\n\n addUnitAlias('dayOfYear', 'DDD');\n\n // PRIORITY\n addUnitPriority('dayOfYear', 4);\n\n // PARSING\n\n addRegexToken('DDD', match1to3);\n addRegexToken('DDDD', match3);\n addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n });\n\n // HELPERS\n\n // MOMENTS\n\n function getSetDayOfYear(input) {\n var dayOfYear =\n Math.round(\n (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5\n ) + 1;\n return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('m', ['mm', 2], 0, 'minute');\n\n // ALIASES\n\n addUnitAlias('minute', 'm');\n\n // PRIORITY\n\n addUnitPriority('minute', 14);\n\n // PARSING\n\n addRegexToken('m', match1to2);\n addRegexToken('mm', match1to2, match2);\n addParseToken(['m', 'mm'], MINUTE);\n\n // MOMENTS\n\n var getSetMinute = makeGetSet('Minutes', false);\n\n // FORMATTING\n\n addFormatToken('s', ['ss', 2], 0, 'second');\n\n // ALIASES\n\n addUnitAlias('second', 's');\n\n // PRIORITY\n\n addUnitPriority('second', 15);\n\n // PARSING\n\n addRegexToken('s', match1to2);\n addRegexToken('ss', match1to2, match2);\n addParseToken(['s', 'ss'], SECOND);\n\n // MOMENTS\n\n var getSetSecond = makeGetSet('Seconds', false);\n\n // FORMATTING\n\n addFormatToken('S', 0, 0, function () {\n return ~~(this.millisecond() / 100);\n });\n\n addFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\n });\n\n addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n addFormatToken(0, ['SSSS', 4], 0, function () {\n return this.millisecond() * 10;\n });\n addFormatToken(0, ['SSSSS', 5], 0, function () {\n return this.millisecond() * 100;\n });\n addFormatToken(0, ['SSSSSS', 6], 0, function () {\n return this.millisecond() * 1000;\n });\n addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n return this.millisecond() * 10000;\n });\n addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n return this.millisecond() * 100000;\n });\n addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n return this.millisecond() * 1000000;\n });\n\n // ALIASES\n\n addUnitAlias('millisecond', 'ms');\n\n // PRIORITY\n\n addUnitPriority('millisecond', 16);\n\n // PARSING\n\n addRegexToken('S', match1to3, match1);\n addRegexToken('SS', match1to3, match2);\n addRegexToken('SSS', match1to3, match3);\n\n var token, getSetMillisecond;\n for (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n }\n\n function parseMs(input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n }\n\n for (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n }\n\n getSetMillisecond = makeGetSet('Milliseconds', false);\n\n // FORMATTING\n\n addFormatToken('z', 0, 0, 'zoneAbbr');\n addFormatToken('zz', 0, 0, 'zoneName');\n\n // MOMENTS\n\n function getZoneAbbr() {\n return this._isUTC ? 'UTC' : '';\n }\n\n function getZoneName() {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n }\n\n var proto = Moment.prototype;\n\n proto.add = add;\n proto.calendar = calendar$1;\n proto.clone = clone;\n proto.diff = diff;\n proto.endOf = endOf;\n proto.format = format;\n proto.from = from;\n proto.fromNow = fromNow;\n proto.to = to;\n proto.toNow = toNow;\n proto.get = stringGet;\n proto.invalidAt = invalidAt;\n proto.isAfter = isAfter;\n proto.isBefore = isBefore;\n proto.isBetween = isBetween;\n proto.isSame = isSame;\n proto.isSameOrAfter = isSameOrAfter;\n proto.isSameOrBefore = isSameOrBefore;\n proto.isValid = isValid$2;\n proto.lang = lang;\n proto.locale = locale;\n proto.localeData = localeData;\n proto.max = prototypeMax;\n proto.min = prototypeMin;\n proto.parsingFlags = parsingFlags;\n proto.set = stringSet;\n proto.startOf = startOf;\n proto.subtract = subtract;\n proto.toArray = toArray;\n proto.toObject = toObject;\n proto.toDate = toDate;\n proto.toISOString = toISOString;\n proto.inspect = inspect;\n if (typeof Symbol !== 'undefined' && Symbol.for != null) {\n proto[Symbol.for('nodejs.util.inspect.custom')] = function () {\n return 'Moment<' + this.format() + '>';\n };\n }\n proto.toJSON = toJSON;\n proto.toString = toString;\n proto.unix = unix;\n proto.valueOf = valueOf;\n proto.creationData = creationData;\n proto.eraName = getEraName;\n proto.eraNarrow = getEraNarrow;\n proto.eraAbbr = getEraAbbr;\n proto.eraYear = getEraYear;\n proto.year = getSetYear;\n proto.isLeapYear = getIsLeapYear;\n proto.weekYear = getSetWeekYear;\n proto.isoWeekYear = getSetISOWeekYear;\n proto.quarter = proto.quarters = getSetQuarter;\n proto.month = getSetMonth;\n proto.daysInMonth = getDaysInMonth;\n proto.week = proto.weeks = getSetWeek;\n proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n proto.weeksInYear = getWeeksInYear;\n proto.weeksInWeekYear = getWeeksInWeekYear;\n proto.isoWeeksInYear = getISOWeeksInYear;\n proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;\n proto.date = getSetDayOfMonth;\n proto.day = proto.days = getSetDayOfWeek;\n proto.weekday = getSetLocaleDayOfWeek;\n proto.isoWeekday = getSetISODayOfWeek;\n proto.dayOfYear = getSetDayOfYear;\n proto.hour = proto.hours = getSetHour;\n proto.minute = proto.minutes = getSetMinute;\n proto.second = proto.seconds = getSetSecond;\n proto.millisecond = proto.milliseconds = getSetMillisecond;\n proto.utcOffset = getSetOffset;\n proto.utc = setOffsetToUTC;\n proto.local = setOffsetToLocal;\n proto.parseZone = setOffsetToParsedOffset;\n proto.hasAlignedHourOffset = hasAlignedHourOffset;\n proto.isDST = isDaylightSavingTime;\n proto.isLocal = isLocal;\n proto.isUtcOffset = isUtcOffset;\n proto.isUtc = isUtc;\n proto.isUTC = isUtc;\n proto.zoneAbbr = getZoneAbbr;\n proto.zoneName = getZoneName;\n proto.dates = deprecate(\n 'dates accessor is deprecated. Use date instead.',\n getSetDayOfMonth\n );\n proto.months = deprecate(\n 'months accessor is deprecated. Use month instead',\n getSetMonth\n );\n proto.years = deprecate(\n 'years accessor is deprecated. Use year instead',\n getSetYear\n );\n proto.zone = deprecate(\n 'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',\n getSetZone\n );\n proto.isDSTShifted = deprecate(\n 'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',\n isDaylightSavingTimeShifted\n );\n\n function createUnix(input) {\n return createLocal(input * 1000);\n }\n\n function createInZone() {\n return createLocal.apply(null, arguments).parseZone();\n }\n\n function preParsePostFormat(string) {\n return string;\n }\n\n var proto$1 = Locale.prototype;\n\n proto$1.calendar = calendar;\n proto$1.longDateFormat = longDateFormat;\n proto$1.invalidDate = invalidDate;\n proto$1.ordinal = ordinal;\n proto$1.preparse = preParsePostFormat;\n proto$1.postformat = preParsePostFormat;\n proto$1.relativeTime = relativeTime;\n proto$1.pastFuture = pastFuture;\n proto$1.set = set;\n proto$1.eras = localeEras;\n proto$1.erasParse = localeErasParse;\n proto$1.erasConvertYear = localeErasConvertYear;\n proto$1.erasAbbrRegex = erasAbbrRegex;\n proto$1.erasNameRegex = erasNameRegex;\n proto$1.erasNarrowRegex = erasNarrowRegex;\n\n proto$1.months = localeMonths;\n proto$1.monthsShort = localeMonthsShort;\n proto$1.monthsParse = localeMonthsParse;\n proto$1.monthsRegex = monthsRegex;\n proto$1.monthsShortRegex = monthsShortRegex;\n proto$1.week = localeWeek;\n proto$1.firstDayOfYear = localeFirstDayOfYear;\n proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n proto$1.weekdays = localeWeekdays;\n proto$1.weekdaysMin = localeWeekdaysMin;\n proto$1.weekdaysShort = localeWeekdaysShort;\n proto$1.weekdaysParse = localeWeekdaysParse;\n\n proto$1.weekdaysRegex = weekdaysRegex;\n proto$1.weekdaysShortRegex = weekdaysShortRegex;\n proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n proto$1.isPM = localeIsPM;\n proto$1.meridiem = localeMeridiem;\n\n function get$1(format, index, field, setter) {\n var locale = getLocale(),\n utc = createUTC().set(setter, index);\n return locale[field](utc, format);\n }\n\n function listMonthsImpl(format, index, field) {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n\n if (index != null) {\n return get$1(format, index, field, 'month');\n }\n\n var i,\n out = [];\n for (i = 0; i < 12; i++) {\n out[i] = get$1(format, i, field, 'month');\n }\n return out;\n }\n\n // ()\n // (5)\n // (fmt, 5)\n // (fmt)\n // (true)\n // (true, 5)\n // (true, fmt, 5)\n // (true, fmt)\n function listWeekdaysImpl(localeSorted, format, index, field) {\n if (typeof localeSorted === 'boolean') {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n } else {\n format = localeSorted;\n index = format;\n localeSorted = false;\n\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n }\n\n var locale = getLocale(),\n shift = localeSorted ? locale._week.dow : 0,\n i,\n out = [];\n\n if (index != null) {\n return get$1(format, (index + shift) % 7, field, 'day');\n }\n\n for (i = 0; i < 7; i++) {\n out[i] = get$1(format, (i + shift) % 7, field, 'day');\n }\n return out;\n }\n\n function listMonths(format, index) {\n return listMonthsImpl(format, index, 'months');\n }\n\n function listMonthsShort(format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n }\n\n function listWeekdays(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n }\n\n function listWeekdaysShort(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n }\n\n function listWeekdaysMin(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n }\n\n getSetGlobalLocale('en', {\n eras: [\n {\n since: '0001-01-01',\n until: +Infinity,\n offset: 1,\n name: 'Anno Domini',\n narrow: 'AD',\n abbr: 'AD',\n },\n {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: 'Before Christ',\n narrow: 'BC',\n abbr: 'BC',\n },\n ],\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n toInt((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n // Side effect imports\n\n hooks.lang = deprecate(\n 'moment.lang is deprecated. Use moment.locale instead.',\n getSetGlobalLocale\n );\n hooks.langData = deprecate(\n 'moment.langData is deprecated. Use moment.localeData instead.',\n getLocale\n );\n\n var mathAbs = Math.abs;\n\n function abs() {\n var data = this._data;\n\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.months = mathAbs(data.months);\n data.years = mathAbs(data.years);\n\n return this;\n }\n\n function addSubtract$1(duration, input, value, direction) {\n var other = createDuration(input, value);\n\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\n\n return duration._bubble();\n }\n\n // supports only 2.0-style add(1, 's') or add(duration)\n function add$1(input, value) {\n return addSubtract$1(this, input, value, 1);\n }\n\n // supports only 2.0-style subtract(1, 's') or subtract(duration)\n function subtract$1(input, value) {\n return addSubtract$1(this, input, value, -1);\n }\n\n function absCeil(number) {\n if (number < 0) {\n return Math.floor(number);\n } else {\n return Math.ceil(number);\n }\n }\n\n function bubble() {\n var milliseconds = this._milliseconds,\n days = this._days,\n months = this._months,\n data = this._data,\n seconds,\n minutes,\n hours,\n years,\n monthsFromDays;\n\n // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n if (\n !(\n (milliseconds >= 0 && days >= 0 && months >= 0) ||\n (milliseconds <= 0 && days <= 0 && months <= 0)\n )\n ) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n }\n\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n\n seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n\n days += absFloor(hours / 24);\n\n // convert days to months\n monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays));\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n data.days = days;\n data.months = months;\n data.years = years;\n\n return this;\n }\n\n function daysToMonths(days) {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return (days * 4800) / 146097;\n }\n\n function monthsToDays(months) {\n // the reverse of daysToMonths\n return (months * 146097) / 4800;\n }\n\n function as(units) {\n if (!this.isValid()) {\n return NaN;\n }\n var days,\n months,\n milliseconds = this._milliseconds;\n\n units = normalizeUnits(units);\n\n if (units === 'month' || units === 'quarter' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n switch (units) {\n case 'month':\n return months;\n case 'quarter':\n return months / 3;\n case 'year':\n return months / 12;\n }\n } else {\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n switch (units) {\n case 'week':\n return days / 7 + milliseconds / 6048e5;\n case 'day':\n return days + milliseconds / 864e5;\n case 'hour':\n return days * 24 + milliseconds / 36e5;\n case 'minute':\n return days * 1440 + milliseconds / 6e4;\n case 'second':\n return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'millisecond':\n return Math.floor(days * 864e5) + milliseconds;\n default:\n throw new Error('Unknown unit ' + units);\n }\n }\n }\n\n // TODO: Use this.as('ms')?\n function valueOf$1() {\n if (!this.isValid()) {\n return NaN;\n }\n return (\n this._milliseconds +\n this._days * 864e5 +\n (this._months % 12) * 2592e6 +\n toInt(this._months / 12) * 31536e6\n );\n }\n\n function makeAs(alias) {\n return function () {\n return this.as(alias);\n };\n }\n\n var asMilliseconds = makeAs('ms'),\n asSeconds = makeAs('s'),\n asMinutes = makeAs('m'),\n asHours = makeAs('h'),\n asDays = makeAs('d'),\n asWeeks = makeAs('w'),\n asMonths = makeAs('M'),\n asQuarters = makeAs('Q'),\n asYears = makeAs('y');\n\n function clone$1() {\n return createDuration(this);\n }\n\n function get$2(units) {\n units = normalizeUnits(units);\n return this.isValid() ? this[units + 's']() : NaN;\n }\n\n function makeGetter(name) {\n return function () {\n return this.isValid() ? this._data[name] : NaN;\n };\n }\n\n var milliseconds = makeGetter('milliseconds'),\n seconds = makeGetter('seconds'),\n minutes = makeGetter('minutes'),\n hours = makeGetter('hours'),\n days = makeGetter('days'),\n months = makeGetter('months'),\n years = makeGetter('years');\n\n function weeks() {\n return absFloor(this.days() / 7);\n }\n\n var round = Math.round,\n thresholds = {\n ss: 44, // a few seconds to seconds\n s: 45, // seconds to minute\n m: 45, // minutes to hour\n h: 22, // hours to day\n d: 26, // days to month/week\n w: null, // weeks to month\n M: 11, // months to year\n };\n\n // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n }\n\n function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {\n var duration = createDuration(posNegDuration).abs(),\n seconds = round(duration.as('s')),\n minutes = round(duration.as('m')),\n hours = round(duration.as('h')),\n days = round(duration.as('d')),\n months = round(duration.as('M')),\n weeks = round(duration.as('w')),\n years = round(duration.as('y')),\n a =\n (seconds <= thresholds.ss && ['s', seconds]) ||\n (seconds < thresholds.s && ['ss', seconds]) ||\n (minutes <= 1 && ['m']) ||\n (minutes < thresholds.m && ['mm', minutes]) ||\n (hours <= 1 && ['h']) ||\n (hours < thresholds.h && ['hh', hours]) ||\n (days <= 1 && ['d']) ||\n (days < thresholds.d && ['dd', days]);\n\n if (thresholds.w != null) {\n a =\n a ||\n (weeks <= 1 && ['w']) ||\n (weeks < thresholds.w && ['ww', weeks]);\n }\n a = a ||\n (months <= 1 && ['M']) ||\n (months < thresholds.M && ['MM', months]) ||\n (years <= 1 && ['y']) || ['yy', years];\n\n a[2] = withoutSuffix;\n a[3] = +posNegDuration > 0;\n a[4] = locale;\n return substituteTimeAgo.apply(null, a);\n }\n\n // This function allows you to set the rounding function for relative time strings\n function getSetRelativeTimeRounding(roundingFunction) {\n if (roundingFunction === undefined) {\n return round;\n }\n if (typeof roundingFunction === 'function') {\n round = roundingFunction;\n return true;\n }\n return false;\n }\n\n // This function allows you to set a threshold for relative time strings\n function getSetRelativeTimeThreshold(threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n if (limit === undefined) {\n return thresholds[threshold];\n }\n thresholds[threshold] = limit;\n if (threshold === 's') {\n thresholds.ss = limit - 1;\n }\n return true;\n }\n\n function humanize(argWithSuffix, argThresholds) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var withSuffix = false,\n th = thresholds,\n locale,\n output;\n\n if (typeof argWithSuffix === 'object') {\n argThresholds = argWithSuffix;\n argWithSuffix = false;\n }\n if (typeof argWithSuffix === 'boolean') {\n withSuffix = argWithSuffix;\n }\n if (typeof argThresholds === 'object') {\n th = Object.assign({}, thresholds, argThresholds);\n if (argThresholds.s != null && argThresholds.ss == null) {\n th.ss = argThresholds.s - 1;\n }\n }\n\n locale = this.localeData();\n output = relativeTime$1(this, !withSuffix, th, locale);\n\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n\n return locale.postformat(output);\n }\n\n var abs$1 = Math.abs;\n\n function sign(x) {\n return (x > 0) - (x < 0) || +x;\n }\n\n function toISOString$1() {\n // for ISO strings we do not use the normal bubbling rules:\n // * milliseconds bubble up until they become hours\n // * days do not bubble at all\n // * months bubble up until they become years\n // This is because there is no context-free conversion between hours and days\n // (think of clock changes)\n // and also not between days and months (28-31 days per month)\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var seconds = abs$1(this._milliseconds) / 1000,\n days = abs$1(this._days),\n months = abs$1(this._months),\n minutes,\n hours,\n years,\n s,\n total = this.asSeconds(),\n totalSign,\n ymSign,\n daysSign,\n hmsSign;\n\n if (!total) {\n // this is the same as C#'s (Noda) and python (isodate)...\n // but not other JS (goog.date)\n return 'P0D';\n }\n\n // 3600 seconds -> 60 minutes -> 1 hour\n minutes = absFloor(seconds / 60);\n hours = absFloor(minutes / 60);\n seconds %= 60;\n minutes %= 60;\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n\n totalSign = total < 0 ? '-' : '';\n ymSign = sign(this._months) !== sign(total) ? '-' : '';\n daysSign = sign(this._days) !== sign(total) ? '-' : '';\n hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n return (\n totalSign +\n 'P' +\n (years ? ymSign + years + 'Y' : '') +\n (months ? ymSign + months + 'M' : '') +\n (days ? daysSign + days + 'D' : '') +\n (hours || minutes || seconds ? 'T' : '') +\n (hours ? hmsSign + hours + 'H' : '') +\n (minutes ? hmsSign + minutes + 'M' : '') +\n (seconds ? hmsSign + s + 'S' : '')\n );\n }\n\n var proto$2 = Duration.prototype;\n\n proto$2.isValid = isValid$1;\n proto$2.abs = abs;\n proto$2.add = add$1;\n proto$2.subtract = subtract$1;\n proto$2.as = as;\n proto$2.asMilliseconds = asMilliseconds;\n proto$2.asSeconds = asSeconds;\n proto$2.asMinutes = asMinutes;\n proto$2.asHours = asHours;\n proto$2.asDays = asDays;\n proto$2.asWeeks = asWeeks;\n proto$2.asMonths = asMonths;\n proto$2.asQuarters = asQuarters;\n proto$2.asYears = asYears;\n proto$2.valueOf = valueOf$1;\n proto$2._bubble = bubble;\n proto$2.clone = clone$1;\n proto$2.get = get$2;\n proto$2.milliseconds = milliseconds;\n proto$2.seconds = seconds;\n proto$2.minutes = minutes;\n proto$2.hours = hours;\n proto$2.days = days;\n proto$2.weeks = weeks;\n proto$2.months = months;\n proto$2.years = years;\n proto$2.humanize = humanize;\n proto$2.toISOString = toISOString$1;\n proto$2.toString = toISOString$1;\n proto$2.toJSON = toISOString$1;\n proto$2.locale = locale;\n proto$2.localeData = localeData;\n\n proto$2.toIsoString = deprecate(\n 'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',\n toISOString$1\n );\n proto$2.lang = lang;\n\n // FORMATTING\n\n addFormatToken('X', 0, 0, 'unix');\n addFormatToken('x', 0, 0, 'valueOf');\n\n // PARSING\n\n addRegexToken('x', matchSigned);\n addRegexToken('X', matchTimestamp);\n addParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input) * 1000);\n });\n addParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n });\n\n //! moment.js\n\n hooks.version = '2.28.0';\n\n setHookCallback(createLocal);\n\n hooks.fn = proto;\n hooks.min = min;\n hooks.max = max;\n hooks.now = now;\n hooks.utc = createUTC;\n hooks.unix = createUnix;\n hooks.months = listMonths;\n hooks.isDate = isDate;\n hooks.locale = getSetGlobalLocale;\n hooks.invalid = createInvalid;\n hooks.duration = createDuration;\n hooks.isMoment = isMoment;\n hooks.weekdays = listWeekdays;\n hooks.parseZone = createInZone;\n hooks.localeData = getLocale;\n hooks.isDuration = isDuration;\n hooks.monthsShort = listMonthsShort;\n hooks.weekdaysMin = listWeekdaysMin;\n hooks.defineLocale = defineLocale;\n hooks.updateLocale = updateLocale;\n hooks.locales = listLocales;\n hooks.weekdaysShort = listWeekdaysShort;\n hooks.normalizeUnits = normalizeUnits;\n hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n hooks.calendarFormat = getCalendarFormat;\n hooks.prototype = proto;\n\n // currently HTML5 input type only supports 24-hour formats\n hooks.HTML5_FMT = {\n DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // \n DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // \n DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // \n DATE: 'YYYY-MM-DD', // \n TIME: 'HH:mm', // \n TIME_SECONDS: 'HH:mm:ss', // \n TIME_MS: 'HH:mm:ss.SSS', // \n WEEK: 'GGGG-[W]WW', // \n MONTH: 'YYYY-MM', // \n };\n\n return hooks;\n\n})));\n","/**!\n * AngularJS file upload directives and services. Supports: file upload/drop/paste, resume, cancel/abort,\n * progress, resize, thumbnail, preview, validation and CORS\n * FileAPI Flash shim for old browsers not supporting FormData\n * @author Danial \n * @version 12.2.13\n */\n\n(function () {\n /** @namespace FileAPI.noContentTimeout */\n\n function patchXHR(fnName, newFn) {\n window.XMLHttpRequest.prototype[fnName] = newFn(window.XMLHttpRequest.prototype[fnName]);\n }\n\n function redefineProp(xhr, prop, fn) {\n try {\n Object.defineProperty(xhr, prop, {get: fn});\n } catch (e) {/*ignore*/\n }\n }\n\n if (!window.FileAPI) {\n window.FileAPI = {};\n }\n\n if (!window.XMLHttpRequest) {\n throw 'AJAX is not supported. XMLHttpRequest is not defined.';\n }\n\n FileAPI.shouldLoad = !window.FormData || FileAPI.forceLoad;\n if (FileAPI.shouldLoad) {\n var initializeUploadListener = function (xhr) {\n if (!xhr.__listeners) {\n if (!xhr.upload) xhr.upload = {};\n xhr.__listeners = [];\n var origAddEventListener = xhr.upload.addEventListener;\n xhr.upload.addEventListener = function (t, fn) {\n xhr.__listeners[t] = fn;\n if (origAddEventListener) origAddEventListener.apply(this, arguments);\n };\n }\n };\n\n patchXHR('open', function (orig) {\n return function (m, url, b) {\n initializeUploadListener(this);\n this.__url = url;\n try {\n orig.apply(this, [m, url, b]);\n } catch (e) {\n if (e.message.indexOf('Access is denied') > -1) {\n this.__origError = e;\n orig.apply(this, [m, '_fix_for_ie_crossdomain__', b]);\n }\n }\n };\n });\n\n patchXHR('getResponseHeader', function (orig) {\n return function (h) {\n return this.__fileApiXHR && this.__fileApiXHR.getResponseHeader ? this.__fileApiXHR.getResponseHeader(h) : (orig == null ? null : orig.apply(this, [h]));\n };\n });\n\n patchXHR('getAllResponseHeaders', function (orig) {\n return function () {\n return this.__fileApiXHR && this.__fileApiXHR.getAllResponseHeaders ? this.__fileApiXHR.getAllResponseHeaders() : (orig == null ? null : orig.apply(this));\n };\n });\n\n patchXHR('abort', function (orig) {\n return function () {\n return this.__fileApiXHR && this.__fileApiXHR.abort ? this.__fileApiXHR.abort() : (orig == null ? null : orig.apply(this));\n };\n });\n\n patchXHR('setRequestHeader', function (orig) {\n return function (header, value) {\n if (header === '__setXHR_') {\n initializeUploadListener(this);\n var val = value(this);\n // fix for angular < 1.2.0\n if (val instanceof Function) {\n val(this);\n }\n } else {\n this.__requestHeaders = this.__requestHeaders || {};\n this.__requestHeaders[header] = value;\n orig.apply(this, arguments);\n }\n };\n });\n\n patchXHR('send', function (orig) {\n return function () {\n var xhr = this;\n if (arguments[0] && arguments[0].__isFileAPIShim) {\n var formData = arguments[0];\n var config = {\n url: xhr.__url,\n jsonp: false, //removes the callback form param\n cache: true, //removes the ?fileapiXXX in the url\n complete: function (err, fileApiXHR) {\n if (err && angular.isString(err) && err.indexOf('#2174') !== -1) {\n // this error seems to be fine the file is being uploaded properly.\n err = null;\n }\n xhr.__completed = true;\n if (!err && xhr.__listeners.load)\n xhr.__listeners.load({\n type: 'load',\n loaded: xhr.__loaded,\n total: xhr.__total,\n target: xhr,\n lengthComputable: true\n });\n if (!err && xhr.__listeners.loadend)\n xhr.__listeners.loadend({\n type: 'loadend',\n loaded: xhr.__loaded,\n total: xhr.__total,\n target: xhr,\n lengthComputable: true\n });\n if (err === 'abort' && xhr.__listeners.abort)\n xhr.__listeners.abort({\n type: 'abort',\n loaded: xhr.__loaded,\n total: xhr.__total,\n target: xhr,\n lengthComputable: true\n });\n if (fileApiXHR.status !== undefined) redefineProp(xhr, 'status', function () {\n return (fileApiXHR.status === 0 && err && err !== 'abort') ? 500 : fileApiXHR.status;\n });\n if (fileApiXHR.statusText !== undefined) redefineProp(xhr, 'statusText', function () {\n return fileApiXHR.statusText;\n });\n redefineProp(xhr, 'readyState', function () {\n return 4;\n });\n if (fileApiXHR.response !== undefined) redefineProp(xhr, 'response', function () {\n return fileApiXHR.response;\n });\n var resp = fileApiXHR.responseText || (err && fileApiXHR.status === 0 && err !== 'abort' ? err : undefined);\n redefineProp(xhr, 'responseText', function () {\n return resp;\n });\n redefineProp(xhr, 'response', function () {\n return resp;\n });\n if (err) redefineProp(xhr, 'err', function () {\n return err;\n });\n xhr.__fileApiXHR = fileApiXHR;\n if (xhr.onreadystatechange) xhr.onreadystatechange();\n if (xhr.onload) xhr.onload();\n },\n progress: function (e) {\n e.target = xhr;\n if (xhr.__listeners.progress) xhr.__listeners.progress(e);\n xhr.__total = e.total;\n xhr.__loaded = e.loaded;\n if (e.total === e.loaded) {\n // fix flash issue that doesn't call complete if there is no response text from the server\n var _this = this;\n setTimeout(function () {\n if (!xhr.__completed) {\n xhr.getAllResponseHeaders = function () {\n };\n _this.complete(null, {status: 204, statusText: 'No Content'});\n }\n }, FileAPI.noContentTimeout || 10000);\n }\n },\n headers: xhr.__requestHeaders\n };\n config.data = {};\n config.files = {};\n for (var i = 0; i < formData.data.length; i++) {\n var item = formData.data[i];\n if (item.val != null && item.val.name != null && item.val.size != null && item.val.type != null) {\n config.files[item.key] = item.val;\n } else {\n config.data[item.key] = item.val;\n }\n }\n\n setTimeout(function () {\n if (!FileAPI.hasFlash) {\n throw 'Adode Flash Player need to be installed. To check ahead use \"FileAPI.hasFlash\"';\n }\n xhr.__fileApiXHR = FileAPI.upload(config);\n }, 1);\n } else {\n if (this.__origError) {\n throw this.__origError;\n }\n orig.apply(xhr, arguments);\n }\n };\n });\n window.XMLHttpRequest.__isFileAPIShim = true;\n window.FormData = FormData = function () {\n return {\n append: function (key, val, name) {\n if (val.__isFileAPIBlobShim) {\n val = val.data[0];\n }\n this.data.push({\n key: key,\n val: val,\n name: name\n });\n },\n data: [],\n __isFileAPIShim: true\n };\n };\n\n window.Blob = Blob = function (b) {\n return {\n data: b,\n __isFileAPIBlobShim: true\n };\n };\n }\n\n})();\n\n(function () {\n /** @namespace FileAPI.forceLoad */\n /** @namespace window.FileAPI.jsUrl */\n /** @namespace window.FileAPI.jsPath */\n\n function isInputTypeFile(elem) {\n return elem[0].tagName.toLowerCase() === 'input' && elem.attr('type') && elem.attr('type').toLowerCase() === 'file';\n }\n\n function hasFlash() {\n try {\n var fo = new ActiveXObject('ShockwaveFlash.ShockwaveFlash');\n if (fo) return true;\n } catch (e) {\n if (navigator.mimeTypes['application/x-shockwave-flash'] !== undefined) return true;\n }\n return false;\n }\n\n function getOffset(obj) {\n var left = 0, top = 0;\n\n if (window.jQuery) {\n return jQuery(obj).offset();\n }\n\n if (obj.offsetParent) {\n do {\n left += (obj.offsetLeft - obj.scrollLeft);\n top += (obj.offsetTop - obj.scrollTop);\n obj = obj.offsetParent;\n } while (obj);\n }\n return {\n left: left,\n top: top\n };\n }\n\n if (FileAPI.shouldLoad) {\n FileAPI.hasFlash = hasFlash();\n\n //load FileAPI\n if (FileAPI.forceLoad) {\n FileAPI.html5 = false;\n }\n\n if (!FileAPI.upload) {\n var jsUrl, basePath, script = document.createElement('script'), allScripts = document.getElementsByTagName('script'), i, index, src;\n if (window.FileAPI.jsUrl) {\n jsUrl = window.FileAPI.jsUrl;\n } else if (window.FileAPI.jsPath) {\n basePath = window.FileAPI.jsPath;\n } else {\n for (i = 0; i < allScripts.length; i++) {\n src = allScripts[i].src;\n index = src.search(/\\/ng\\-file\\-upload[\\-a-zA-z0-9\\.]*\\.js/);\n if (index > -1) {\n basePath = src.substring(0, index + 1);\n break;\n }\n }\n }\n\n if (FileAPI.staticPath == null) FileAPI.staticPath = basePath;\n script.setAttribute('src', jsUrl || basePath + 'FileAPI.min.js');\n document.getElementsByTagName('head')[0].appendChild(script);\n }\n\n FileAPI.ngfFixIE = function (elem, fileElem, changeFn) {\n if (!hasFlash()) {\n throw 'Adode Flash Player need to be installed. To check ahead use \"FileAPI.hasFlash\"';\n }\n var fixInputStyle = function () {\n var label = fileElem.parent();\n if (elem.attr('disabled')) {\n if (label) label.removeClass('js-fileapi-wrapper');\n } else {\n if (!fileElem.attr('__ngf_flash_')) {\n fileElem.unbind('change');\n fileElem.unbind('click');\n fileElem.bind('change', function (evt) {\n fileApiChangeFn.apply(this, [evt]);\n changeFn.apply(this, [evt]);\n });\n fileElem.attr('__ngf_flash_', 'true');\n }\n label.addClass('js-fileapi-wrapper');\n if (!isInputTypeFile(elem)) {\n label.css('position', 'absolute')\n .css('top', getOffset(elem[0]).top + 'px').css('left', getOffset(elem[0]).left + 'px')\n .css('width', elem[0].offsetWidth + 'px').css('height', elem[0].offsetHeight + 'px')\n .css('filter', 'alpha(opacity=0)').css('display', elem.css('display'))\n .css('overflow', 'hidden').css('z-index', '900000')\n .css('visibility', 'visible');\n fileElem.css('width', elem[0].offsetWidth + 'px').css('height', elem[0].offsetHeight + 'px')\n .css('position', 'absolute').css('top', '0px').css('left', '0px');\n }\n }\n };\n\n elem.bind('mouseenter', fixInputStyle);\n\n var fileApiChangeFn = function (evt) {\n var files = FileAPI.getFiles(evt);\n //just a double check for #233\n for (var i = 0; i < files.length; i++) {\n if (files[i].size === undefined) files[i].size = 0;\n if (files[i].name === undefined) files[i].name = 'file';\n if (files[i].type === undefined) files[i].type = 'undefined';\n }\n if (!evt.target) {\n evt.target = {};\n }\n evt.target.files = files;\n // if evt.target.files is not writable use helper field\n if (evt.target.files !== files) {\n evt.__files_ = files;\n }\n (evt.__files_ || evt.target.files).item = function (i) {\n return (evt.__files_ || evt.target.files)[i] || null;\n };\n };\n };\n\n FileAPI.disableFileInput = function (elem, disable) {\n if (disable) {\n elem.removeClass('js-fileapi-wrapper');\n } else {\n elem.addClass('js-fileapi-wrapper');\n }\n };\n }\n})();\n\nif (!window.FileReader) {\n window.FileReader = function () {\n var _this = this, loadStarted = false;\n this.listeners = {};\n this.addEventListener = function (type, fn) {\n _this.listeners[type] = _this.listeners[type] || [];\n _this.listeners[type].push(fn);\n };\n this.removeEventListener = function (type, fn) {\n if (_this.listeners[type]) _this.listeners[type].splice(_this.listeners[type].indexOf(fn), 1);\n };\n this.dispatchEvent = function (evt) {\n var list = _this.listeners[evt.type];\n if (list) {\n for (var i = 0; i < list.length; i++) {\n list[i].call(_this, evt);\n }\n }\n };\n this.onabort = this.onerror = this.onload = this.onloadstart = this.onloadend = this.onprogress = null;\n\n var constructEvent = function (type, evt) {\n var e = {type: type, target: _this, loaded: evt.loaded, total: evt.total, error: evt.error};\n if (evt.result != null) e.target.result = evt.result;\n return e;\n };\n var listener = function (evt) {\n if (!loadStarted) {\n loadStarted = true;\n if (_this.onloadstart) _this.onloadstart(constructEvent('loadstart', evt));\n }\n var e;\n if (evt.type === 'load') {\n if (_this.onloadend) _this.onloadend(constructEvent('loadend', evt));\n e = constructEvent('load', evt);\n if (_this.onload) _this.onload(e);\n _this.dispatchEvent(e);\n } else if (evt.type === 'progress') {\n e = constructEvent('progress', evt);\n if (_this.onprogress) _this.onprogress(e);\n _this.dispatchEvent(e);\n } else {\n e = constructEvent('error', evt);\n if (_this.onerror) _this.onerror(e);\n _this.dispatchEvent(e);\n }\n };\n this.readAsDataURL = function (file) {\n FileAPI.readAsDataURL(file, listener);\n };\n this.readAsText = function (file) {\n FileAPI.readAsText(file, listener);\n };\n };\n}\n\n/**!\n * AngularJS file upload directives and services. Supoorts: file upload/drop/paste, resume, cancel/abort,\n * progress, resize, thumbnail, preview, validation and CORS\n * @author Danial \n * @version 12.2.13\n */\n\nif (window.XMLHttpRequest && !(window.FileAPI && FileAPI.shouldLoad)) {\n window.XMLHttpRequest.prototype.setRequestHeader = (function (orig) {\n return function (header, value) {\n if (header === '__setXHR_') {\n var val = value(this);\n // fix for angular < 1.2.0\n if (val instanceof Function) {\n val(this);\n }\n } else {\n orig.apply(this, arguments);\n }\n };\n })(window.XMLHttpRequest.prototype.setRequestHeader);\n}\n\nvar ngFileUpload = angular.module('ngFileUpload', []);\n\nngFileUpload.version = '12.2.13';\n\nngFileUpload.service('UploadBase', ['$http', '$q', '$timeout', function ($http, $q, $timeout) {\n var upload = this;\n upload.promisesCount = 0;\n\n this.isResumeSupported = function () {\n return window.Blob && window.Blob.prototype.slice;\n };\n\n var resumeSupported = this.isResumeSupported();\n\n function sendHttp(config) {\n config.method = config.method || 'POST';\n config.headers = config.headers || {};\n\n var deferred = config._deferred = config._deferred || $q.defer();\n var promise = deferred.promise;\n\n function notifyProgress(e) {\n if (deferred.notify) {\n deferred.notify(e);\n }\n if (promise.progressFunc) {\n $timeout(function () {\n promise.progressFunc(e);\n });\n }\n }\n\n function getNotifyEvent(n) {\n if (config._start != null && resumeSupported) {\n return {\n loaded: n.loaded + config._start,\n total: (config._file && config._file.size) || n.total,\n type: n.type, config: config,\n lengthComputable: true, target: n.target\n };\n } else {\n return n;\n }\n }\n\n if (!config.disableProgress) {\n config.headers.__setXHR_ = function () {\n return function (xhr) {\n if (!xhr || !xhr.upload || !xhr.upload.addEventListener) return;\n config.__XHR = xhr;\n if (config.xhrFn) config.xhrFn(xhr);\n xhr.upload.addEventListener('progress', function (e) {\n e.config = config;\n notifyProgress(getNotifyEvent(e));\n }, false);\n //fix for firefox not firing upload progress end, also IE8-9\n xhr.upload.addEventListener('load', function (e) {\n if (e.lengthComputable) {\n e.config = config;\n notifyProgress(getNotifyEvent(e));\n }\n }, false);\n };\n };\n }\n\n function uploadWithAngular() {\n $http(config).then(function (r) {\n if (resumeSupported && config._chunkSize && !config._finished && config._file) {\n var fileSize = config._file && config._file.size || 0;\n notifyProgress({\n loaded: Math.min(config._end, fileSize),\n total: fileSize,\n config: config,\n type: 'progress'\n }\n );\n upload.upload(config, true);\n } else {\n if (config._finished) delete config._finished;\n deferred.resolve(r);\n }\n }, function (e) {\n deferred.reject(e);\n }, function (n) {\n deferred.notify(n);\n }\n );\n }\n\n if (!resumeSupported) {\n uploadWithAngular();\n } else if (config._chunkSize && config._end && !config._finished) {\n config._start = config._end;\n config._end += config._chunkSize;\n uploadWithAngular();\n } else if (config.resumeSizeUrl) {\n $http.get(config.resumeSizeUrl).then(function (resp) {\n if (config.resumeSizeResponseReader) {\n config._start = config.resumeSizeResponseReader(resp.data);\n } else {\n config._start = parseInt((resp.data.size == null ? resp.data : resp.data.size).toString());\n }\n if (config._chunkSize) {\n config._end = config._start + config._chunkSize;\n }\n uploadWithAngular();\n }, function (e) {\n throw e;\n });\n } else if (config.resumeSize) {\n config.resumeSize().then(function (size) {\n config._start = size;\n if (config._chunkSize) {\n config._end = config._start + config._chunkSize;\n }\n uploadWithAngular();\n }, function (e) {\n throw e;\n });\n } else {\n if (config._chunkSize) {\n config._start = 0;\n config._end = config._start + config._chunkSize;\n }\n uploadWithAngular();\n }\n\n\n promise.success = function (fn) {\n promise.then(function (response) {\n fn(response.data, response.status, response.headers, config);\n });\n return promise;\n };\n\n promise.error = function (fn) {\n promise.then(null, function (response) {\n fn(response.data, response.status, response.headers, config);\n });\n return promise;\n };\n\n promise.progress = function (fn) {\n promise.progressFunc = fn;\n promise.then(null, null, function (n) {\n fn(n);\n });\n return promise;\n };\n promise.abort = promise.pause = function () {\n if (config.__XHR) {\n $timeout(function () {\n config.__XHR.abort();\n });\n }\n return promise;\n };\n promise.xhr = function (fn) {\n config.xhrFn = (function (origXhrFn) {\n return function () {\n if (origXhrFn) origXhrFn.apply(promise, arguments);\n fn.apply(promise, arguments);\n };\n })(config.xhrFn);\n return promise;\n };\n\n upload.promisesCount++;\n if (promise['finally'] && promise['finally'] instanceof Function) {\n promise['finally'](function () {\n upload.promisesCount--;\n });\n }\n return promise;\n }\n\n this.isUploadInProgress = function () {\n return upload.promisesCount > 0;\n };\n\n this.rename = function (file, name) {\n file.ngfName = name;\n return file;\n };\n\n this.jsonBlob = function (val) {\n if (val != null && !angular.isString(val)) {\n val = JSON.stringify(val);\n }\n var blob = new window.Blob([val], {type: 'application/json'});\n blob._ngfBlob = true;\n return blob;\n };\n\n this.json = function (val) {\n return angular.toJson(val);\n };\n\n function copy(obj) {\n var clone = {};\n for (var key in obj) {\n if (obj.hasOwnProperty(key)) {\n clone[key] = obj[key];\n }\n }\n return clone;\n }\n\n this.isFile = function (file) {\n return file != null && (file instanceof window.Blob || (file.flashId && file.name && file.size));\n };\n\n this.upload = function (config, internal) {\n function toResumeFile(file, formData) {\n if (file._ngfBlob) return file;\n config._file = config._file || file;\n if (config._start != null && resumeSupported) {\n if (config._end && config._end >= file.size) {\n config._finished = true;\n config._end = file.size;\n }\n var slice = file.slice(config._start, config._end || file.size);\n slice.name = file.name;\n slice.ngfName = file.ngfName;\n if (config._chunkSize) {\n formData.append('_chunkSize', config._chunkSize);\n formData.append('_currentChunkSize', config._end - config._start);\n formData.append('_chunkNumber', Math.floor(config._start / config._chunkSize));\n formData.append('_totalSize', config._file.size);\n }\n return slice;\n }\n return file;\n }\n\n function addFieldToFormData(formData, val, key) {\n if (val !== undefined) {\n if (angular.isDate(val)) {\n val = val.toISOString();\n }\n if (angular.isString(val)) {\n formData.append(key, val);\n } else if (upload.isFile(val)) {\n var file = toResumeFile(val, formData);\n var split = key.split(',');\n if (split[1]) {\n file.ngfName = split[1].replace(/^\\s+|\\s+$/g, '');\n key = split[0];\n }\n config._fileKey = config._fileKey || key;\n formData.append(key, file, file.ngfName || file.name);\n } else {\n if (angular.isObject(val)) {\n if (val.$$ngfCircularDetection) throw 'ngFileUpload: Circular reference in config.data. Make sure specified data for Upload.upload() has no circular reference: ' + key;\n\n val.$$ngfCircularDetection = true;\n try {\n for (var k in val) {\n if (val.hasOwnProperty(k) && k !== '$$ngfCircularDetection') {\n var objectKey = config.objectKey == null ? '[i]' : config.objectKey;\n if (val.length && parseInt(k) > -1) {\n objectKey = config.arrayKey == null ? objectKey : config.arrayKey;\n }\n addFieldToFormData(formData, val[k], key + objectKey.replace(/[ik]/g, k));\n }\n }\n } finally {\n delete val.$$ngfCircularDetection;\n }\n } else {\n formData.append(key, val);\n }\n }\n }\n }\n\n function digestConfig() {\n config._chunkSize = upload.translateScalars(config.resumeChunkSize);\n config._chunkSize = config._chunkSize ? parseInt(config._chunkSize.toString()) : null;\n\n config.headers = config.headers || {};\n config.headers['Content-Type'] = undefined;\n config.transformRequest = config.transformRequest ?\n (angular.isArray(config.transformRequest) ?\n config.transformRequest : [config.transformRequest]) : [];\n config.transformRequest.push(function (data) {\n var formData = new window.FormData(), key;\n data = data || config.fields || {};\n if (config.file) {\n data.file = config.file;\n }\n for (key in data) {\n if (data.hasOwnProperty(key)) {\n var val = data[key];\n if (config.formDataAppender) {\n config.formDataAppender(formData, key, val);\n } else {\n addFieldToFormData(formData, val, key);\n }\n }\n }\n\n return formData;\n });\n }\n\n if (!internal) config = copy(config);\n if (!config._isDigested) {\n config._isDigested = true;\n digestConfig();\n }\n\n return sendHttp(config);\n };\n\n this.http = function (config) {\n config = copy(config);\n config.transformRequest = config.transformRequest || function (data) {\n if ((window.ArrayBuffer && data instanceof window.ArrayBuffer) || data instanceof window.Blob) {\n return data;\n }\n return $http.defaults.transformRequest[0].apply(this, arguments);\n };\n config._chunkSize = upload.translateScalars(config.resumeChunkSize);\n config._chunkSize = config._chunkSize ? parseInt(config._chunkSize.toString()) : null;\n\n return sendHttp(config);\n };\n\n this.translateScalars = function (str) {\n if (angular.isString(str)) {\n if (str.search(/kb/i) === str.length - 2) {\n return parseFloat(str.substring(0, str.length - 2) * 1024);\n } else if (str.search(/mb/i) === str.length - 2) {\n return parseFloat(str.substring(0, str.length - 2) * 1048576);\n } else if (str.search(/gb/i) === str.length - 2) {\n return parseFloat(str.substring(0, str.length - 2) * 1073741824);\n } else if (str.search(/b/i) === str.length - 1) {\n return parseFloat(str.substring(0, str.length - 1));\n } else if (str.search(/s/i) === str.length - 1) {\n return parseFloat(str.substring(0, str.length - 1));\n } else if (str.search(/m/i) === str.length - 1) {\n return parseFloat(str.substring(0, str.length - 1) * 60);\n } else if (str.search(/h/i) === str.length - 1) {\n return parseFloat(str.substring(0, str.length - 1) * 3600);\n }\n }\n return str;\n };\n\n this.urlToBlob = function(url) {\n var defer = $q.defer();\n $http({url: url, method: 'get', responseType: 'arraybuffer'}).then(function (resp) {\n var arrayBufferView = new Uint8Array(resp.data);\n var type = resp.headers('content-type') || 'image/WebP';\n var blob = new window.Blob([arrayBufferView], {type: type});\n var matches = url.match(/.*\\/(.+?)(\\?.*)?$/);\n if (matches.length > 1) {\n blob.name = matches[1];\n }\n defer.resolve(blob);\n }, function (e) {\n defer.reject(e);\n });\n return defer.promise;\n };\n\n this.setDefaults = function (defaults) {\n this.defaults = defaults || {};\n };\n\n this.defaults = {};\n this.version = ngFileUpload.version;\n}\n\n]);\n\nngFileUpload.service('Upload', ['$parse', '$timeout', '$compile', '$q', 'UploadExif', function ($parse, $timeout, $compile, $q, UploadExif) {\n var upload = UploadExif;\n upload.getAttrWithDefaults = function (attr, name) {\n if (attr[name] != null) return attr[name];\n var def = upload.defaults[name];\n return (def == null ? def : (angular.isString(def) ? def : JSON.stringify(def)));\n };\n\n upload.attrGetter = function (name, attr, scope, params) {\n var attrVal = this.getAttrWithDefaults(attr, name);\n if (scope) {\n try {\n if (params) {\n return $parse(attrVal)(scope, params);\n } else {\n return $parse(attrVal)(scope);\n }\n } catch (e) {\n // hangle string value without single qoute\n if (name.search(/min|max|pattern/i)) {\n return attrVal;\n } else {\n throw e;\n }\n }\n } else {\n return attrVal;\n }\n };\n\n upload.shouldUpdateOn = function (type, attr, scope) {\n var modelOptions = upload.attrGetter('ngfModelOptions', attr, scope);\n if (modelOptions && modelOptions.updateOn) {\n return modelOptions.updateOn.split(' ').indexOf(type) > -1;\n }\n return true;\n };\n\n upload.emptyPromise = function () {\n var d = $q.defer();\n var args = arguments;\n $timeout(function () {\n d.resolve.apply(d, args);\n });\n return d.promise;\n };\n\n upload.rejectPromise = function () {\n var d = $q.defer();\n var args = arguments;\n $timeout(function () {\n d.reject.apply(d, args);\n });\n return d.promise;\n };\n\n upload.happyPromise = function (promise, data) {\n var d = $q.defer();\n promise.then(function (result) {\n d.resolve(result);\n }, function (error) {\n $timeout(function () {\n throw error;\n });\n d.resolve(data);\n });\n return d.promise;\n };\n\n function applyExifRotations(files, attr, scope) {\n var promises = [upload.emptyPromise()];\n angular.forEach(files, function (f, i) {\n if (f.type.indexOf('image/jpeg') === 0 && upload.attrGetter('ngfFixOrientation', attr, scope, {$file: f})) {\n promises.push(upload.happyPromise(upload.applyExifRotation(f), f).then(function (fixedFile) {\n files.splice(i, 1, fixedFile);\n }));\n }\n });\n return $q.all(promises);\n }\n\n function resizeFile(files, attr, scope, ngModel) {\n var resizeVal = upload.attrGetter('ngfResize', attr, scope);\n if (!resizeVal || !upload.isResizeSupported() || !files.length) return upload.emptyPromise();\n if (resizeVal instanceof Function) {\n var defer = $q.defer();\n return resizeVal(files).then(function (p) {\n resizeWithParams(p, files, attr, scope, ngModel).then(function (r) {\n defer.resolve(r);\n }, function (e) {\n defer.reject(e);\n });\n }, function (e) {\n defer.reject(e);\n });\n } else {\n return resizeWithParams(resizeVal, files, attr, scope, ngModel);\n }\n }\n\n function resizeWithParams(params, files, attr, scope, ngModel) {\n var promises = [upload.emptyPromise()];\n\n function handleFile(f, i) {\n if (f.type.indexOf('image') === 0) {\n if (params.pattern && !upload.validatePattern(f, params.pattern)) return;\n params.resizeIf = function (width, height) {\n return upload.attrGetter('ngfResizeIf', attr, scope,\n {$width: width, $height: height, $file: f});\n };\n var promise = upload.resize(f, params);\n promises.push(promise);\n promise.then(function (resizedFile) {\n files.splice(i, 1, resizedFile);\n }, function (e) {\n f.$error = 'resize';\n (f.$errorMessages = (f.$errorMessages || {})).resize = true;\n f.$errorParam = (e ? (e.message ? e.message : e) + ': ' : '') + (f && f.name);\n ngModel.$ngfValidations.push({name: 'resize', valid: false});\n upload.applyModelValidation(ngModel, files);\n });\n }\n }\n\n for (var i = 0; i < files.length; i++) {\n handleFile(files[i], i);\n }\n return $q.all(promises);\n }\n\n upload.updateModel = function (ngModel, attr, scope, fileChange, files, evt, noDelay) {\n function update(files, invalidFiles, newFiles, dupFiles, isSingleModel) {\n attr.$$ngfPrevValidFiles = files;\n attr.$$ngfPrevInvalidFiles = invalidFiles;\n var file = files && files.length ? files[0] : null;\n var invalidFile = invalidFiles && invalidFiles.length ? invalidFiles[0] : null;\n\n if (ngModel) {\n upload.applyModelValidation(ngModel, files);\n ngModel.$setViewValue(isSingleModel ? file : files);\n }\n\n if (fileChange) {\n $parse(fileChange)(scope, {\n $files: files,\n $file: file,\n $newFiles: newFiles,\n $duplicateFiles: dupFiles,\n $invalidFiles: invalidFiles,\n $invalidFile: invalidFile,\n $event: evt\n });\n }\n\n var invalidModel = upload.attrGetter('ngfModelInvalid', attr);\n if (invalidModel) {\n $timeout(function () {\n $parse(invalidModel).assign(scope, isSingleModel ? invalidFile : invalidFiles);\n });\n }\n $timeout(function () {\n // scope apply changes\n });\n }\n\n var allNewFiles, dupFiles = [], prevValidFiles, prevInvalidFiles,\n invalids = [], valids = [];\n\n function removeDuplicates() {\n function equals(f1, f2) {\n return f1.name === f2.name && (f1.$ngfOrigSize || f1.size) === (f2.$ngfOrigSize || f2.size) &&\n f1.type === f2.type;\n }\n\n function isInPrevFiles(f) {\n var j;\n for (j = 0; j < prevValidFiles.length; j++) {\n if (equals(f, prevValidFiles[j])) {\n return true;\n }\n }\n for (j = 0; j < prevInvalidFiles.length; j++) {\n if (equals(f, prevInvalidFiles[j])) {\n return true;\n }\n }\n return false;\n }\n\n if (files) {\n allNewFiles = [];\n dupFiles = [];\n for (var i = 0; i < files.length; i++) {\n if (isInPrevFiles(files[i])) {\n dupFiles.push(files[i]);\n } else {\n allNewFiles.push(files[i]);\n }\n }\n }\n }\n\n function toArray(v) {\n return angular.isArray(v) ? v : [v];\n }\n\n function resizeAndUpdate() {\n function updateModel() {\n $timeout(function () {\n update(keep ? prevValidFiles.concat(valids) : valids,\n keep ? prevInvalidFiles.concat(invalids) : invalids,\n files, dupFiles, isSingleModel);\n }, options && options.debounce ? options.debounce.change || options.debounce : 0);\n }\n\n var resizingFiles = validateAfterResize ? allNewFiles : valids;\n resizeFile(resizingFiles, attr, scope, ngModel).then(function () {\n if (validateAfterResize) {\n upload.validate(allNewFiles, keep ? prevValidFiles.length : 0, ngModel, attr, scope)\n .then(function (validationResult) {\n valids = validationResult.validsFiles;\n invalids = validationResult.invalidsFiles;\n updateModel();\n });\n } else {\n updateModel();\n }\n }, function () {\n for (var i = 0; i < resizingFiles.length; i++) {\n var f = resizingFiles[i];\n if (f.$error === 'resize') {\n var index = valids.indexOf(f);\n if (index > -1) {\n valids.splice(index, 1);\n invalids.push(f);\n }\n updateModel();\n }\n }\n });\n }\n\n prevValidFiles = attr.$$ngfPrevValidFiles || [];\n prevInvalidFiles = attr.$$ngfPrevInvalidFiles || [];\n if (ngModel && ngModel.$modelValue) {\n prevValidFiles = toArray(ngModel.$modelValue);\n }\n\n var keep = upload.attrGetter('ngfKeep', attr, scope);\n allNewFiles = (files || []).slice(0);\n if (keep === 'distinct' || upload.attrGetter('ngfKeepDistinct', attr, scope) === true) {\n removeDuplicates(attr, scope);\n }\n\n var isSingleModel = !keep && !upload.attrGetter('ngfMultiple', attr, scope) && !upload.attrGetter('multiple', attr);\n\n if (keep && !allNewFiles.length) return;\n\n upload.attrGetter('ngfBeforeModelChange', attr, scope, {\n $files: files,\n $file: files && files.length ? files[0] : null,\n $newFiles: allNewFiles,\n $duplicateFiles: dupFiles,\n $event: evt\n });\n\n var validateAfterResize = upload.attrGetter('ngfValidateAfterResize', attr, scope);\n\n var options = upload.attrGetter('ngfModelOptions', attr, scope);\n upload.validate(allNewFiles, keep ? prevValidFiles.length : 0, ngModel, attr, scope)\n .then(function (validationResult) {\n if (noDelay) {\n update(allNewFiles, [], files, dupFiles, isSingleModel);\n } else {\n if ((!options || !options.allowInvalid) && !validateAfterResize) {\n valids = validationResult.validFiles;\n invalids = validationResult.invalidFiles;\n } else {\n valids = allNewFiles;\n }\n if (upload.attrGetter('ngfFixOrientation', attr, scope) && upload.isExifSupported()) {\n applyExifRotations(valids, attr, scope).then(function () {\n resizeAndUpdate();\n });\n } else {\n resizeAndUpdate();\n }\n }\n });\n };\n\n return upload;\n}]);\n\nngFileUpload.directive('ngfSelect', ['$parse', '$timeout', '$compile', 'Upload', function ($parse, $timeout, $compile, Upload) {\n var generatedElems = [];\n\n function isDelayedClickSupported(ua) {\n // fix for android native browser < 4.4 and safari windows\n var m = ua.match(/Android[^\\d]*(\\d+)\\.(\\d+)/);\n if (m && m.length > 2) {\n var v = Upload.defaults.androidFixMinorVersion || 4;\n return parseInt(m[1]) < 4 || (parseInt(m[1]) === v && parseInt(m[2]) < v);\n }\n\n // safari on windows\n return ua.indexOf('Chrome') === -1 && /.*Windows.*Safari.*/.test(ua);\n }\n\n function linkFileSelect(scope, elem, attr, ngModel, $parse, $timeout, $compile, upload) {\n /** @namespace attr.ngfSelect */\n /** @namespace attr.ngfChange */\n /** @namespace attr.ngModel */\n /** @namespace attr.ngfModelOptions */\n /** @namespace attr.ngfMultiple */\n /** @namespace attr.ngfCapture */\n /** @namespace attr.ngfValidate */\n /** @namespace attr.ngfKeep */\n var attrGetter = function (name, scope) {\n return upload.attrGetter(name, attr, scope);\n };\n\n function isInputTypeFile() {\n return elem[0].tagName.toLowerCase() === 'input' && attr.type && attr.type.toLowerCase() === 'file';\n }\n\n function fileChangeAttr() {\n return attrGetter('ngfChange') || attrGetter('ngfSelect');\n }\n\n function changeFn(evt) {\n if (upload.shouldUpdateOn('change', attr, scope)) {\n var fileList = evt.__files_ || (evt.target && evt.target.files), files = [];\n /* Handle duplicate call in IE11 */\n if (!fileList) return;\n for (var i = 0; i < fileList.length; i++) {\n files.push(fileList[i]);\n }\n upload.updateModel(ngModel, attr, scope, fileChangeAttr(),\n files.length ? files : null, evt);\n }\n }\n\n upload.registerModelChangeValidator(ngModel, attr, scope);\n\n var unwatches = [];\n if (attrGetter('ngfMultiple')) {\n unwatches.push(scope.$watch(attrGetter('ngfMultiple'), function () {\n fileElem.attr('multiple', attrGetter('ngfMultiple', scope));\n }));\n }\n if (attrGetter('ngfCapture')) {\n unwatches.push(scope.$watch(attrGetter('ngfCapture'), function () {\n fileElem.attr('capture', attrGetter('ngfCapture', scope));\n }));\n }\n if (attrGetter('ngfAccept')) {\n unwatches.push(scope.$watch(attrGetter('ngfAccept'), function () {\n fileElem.attr('accept', attrGetter('ngfAccept', scope));\n }));\n }\n unwatches.push(attr.$observe('accept', function () {\n fileElem.attr('accept', attrGetter('accept'));\n }));\n function bindAttrToFileInput(fileElem, label) {\n function updateId(val) {\n fileElem.attr('id', 'ngf-' + val);\n label.attr('id', 'ngf-label-' + val);\n }\n\n for (var i = 0; i < elem[0].attributes.length; i++) {\n var attribute = elem[0].attributes[i];\n if (attribute.name !== 'type' && attribute.name !== 'class' && attribute.name !== 'style') {\n if (attribute.name === 'id') {\n updateId(attribute.value);\n unwatches.push(attr.$observe('id', updateId));\n } else {\n fileElem.attr(attribute.name, (!attribute.value && (attribute.name === 'required' ||\n attribute.name === 'multiple')) ? attribute.name : attribute.value);\n }\n }\n }\n }\n\n function createFileInput() {\n if (isInputTypeFile()) {\n return elem;\n }\n\n var fileElem = angular.element('');\n\n var label = angular.element('');\n label.css('visibility', 'hidden').css('position', 'absolute').css('overflow', 'hidden')\n .css('width', '0px').css('height', '0px').css('border', 'none')\n .css('margin', '0px').css('padding', '0px').attr('tabindex', '-1');\n bindAttrToFileInput(fileElem, label);\n\n generatedElems.push({el: elem, ref: label});\n\n document.body.appendChild(label.append(fileElem)[0]);\n\n return fileElem;\n }\n\n function clickHandler(evt) {\n if (elem.attr('disabled')) return false;\n if (attrGetter('ngfSelectDisabled', scope)) return;\n\n var r = detectSwipe(evt);\n // prevent the click if it is a swipe\n if (r != null) return r;\n\n resetModel(evt);\n\n // fix for md when the element is removed from the DOM and added back #460\n try {\n if (!isInputTypeFile() && !document.body.contains(fileElem[0])) {\n generatedElems.push({el: elem, ref: fileElem.parent()});\n document.body.appendChild(fileElem.parent()[0]);\n fileElem.bind('change', changeFn);\n }\n } catch (e) {/*ignore*/\n }\n\n if (isDelayedClickSupported(navigator.userAgent)) {\n setTimeout(function () {\n fileElem[0].click();\n }, 0);\n } else {\n fileElem[0].click();\n }\n\n return false;\n }\n\n\n var initialTouchStartY = 0;\n var initialTouchStartX = 0;\n\n function detectSwipe(evt) {\n var touches = evt.changedTouches || (evt.originalEvent && evt.originalEvent.changedTouches);\n if (touches) {\n if (evt.type === 'touchstart') {\n initialTouchStartX = touches[0].clientX;\n initialTouchStartY = touches[0].clientY;\n return true; // don't block event default\n } else {\n // prevent scroll from triggering event\n if (evt.type === 'touchend') {\n var currentX = touches[0].clientX;\n var currentY = touches[0].clientY;\n if ((Math.abs(currentX - initialTouchStartX) > 20) ||\n (Math.abs(currentY - initialTouchStartY) > 20)) {\n evt.stopPropagation();\n evt.preventDefault();\n return false;\n }\n }\n return true;\n }\n }\n }\n\n var fileElem = elem;\n\n function resetModel(evt) {\n if (upload.shouldUpdateOn('click', attr, scope) && fileElem.val()) {\n fileElem.val(null);\n upload.updateModel(ngModel, attr, scope, fileChangeAttr(), null, evt, true);\n }\n }\n\n if (!isInputTypeFile()) {\n fileElem = createFileInput();\n }\n fileElem.bind('change', changeFn);\n\n if (!isInputTypeFile()) {\n elem.bind('click touchstart touchend', clickHandler);\n } else {\n elem.bind('click', resetModel);\n }\n\n function ie10SameFileSelectFix(evt) {\n if (fileElem && !fileElem.attr('__ngf_ie10_Fix_')) {\n if (!fileElem[0].parentNode) {\n fileElem = null;\n return;\n }\n evt.preventDefault();\n evt.stopPropagation();\n fileElem.unbind('click');\n var clone = fileElem.clone();\n fileElem.replaceWith(clone);\n fileElem = clone;\n fileElem.attr('__ngf_ie10_Fix_', 'true');\n fileElem.bind('change', changeFn);\n fileElem.bind('click', ie10SameFileSelectFix);\n fileElem[0].click();\n return false;\n } else {\n fileElem.removeAttr('__ngf_ie10_Fix_');\n }\n }\n\n if (navigator.appVersion.indexOf('MSIE 10') !== -1) {\n fileElem.bind('click', ie10SameFileSelectFix);\n }\n\n if (ngModel) ngModel.$formatters.push(function (val) {\n if (val == null || val.length === 0) {\n if (fileElem.val()) {\n fileElem.val(null);\n }\n }\n return val;\n });\n\n scope.$on('$destroy', function () {\n if (!isInputTypeFile()) fileElem.parent().remove();\n angular.forEach(unwatches, function (unwatch) {\n unwatch();\n });\n });\n\n $timeout(function () {\n for (var i = 0; i < generatedElems.length; i++) {\n var g = generatedElems[i];\n if (!document.body.contains(g.el[0])) {\n generatedElems.splice(i, 1);\n g.ref.remove();\n }\n }\n });\n\n if (window.FileAPI && window.FileAPI.ngfFixIE) {\n window.FileAPI.ngfFixIE(elem, fileElem, changeFn);\n }\n }\n\n return {\n restrict: 'AEC',\n require: '?ngModel',\n link: function (scope, elem, attr, ngModel) {\n linkFileSelect(scope, elem, attr, ngModel, $parse, $timeout, $compile, Upload);\n }\n };\n}]);\n\n(function () {\n\n ngFileUpload.service('UploadDataUrl', ['UploadBase', '$timeout', '$q', function (UploadBase, $timeout, $q) {\n var upload = UploadBase;\n upload.base64DataUrl = function (file) {\n if (angular.isArray(file)) {\n var d = $q.defer(), count = 0;\n angular.forEach(file, function (f) {\n upload.dataUrl(f, true)['finally'](function () {\n count++;\n if (count === file.length) {\n var urls = [];\n angular.forEach(file, function (ff) {\n urls.push(ff.$ngfDataUrl);\n });\n d.resolve(urls, file);\n }\n });\n });\n return d.promise;\n } else {\n return upload.dataUrl(file, true);\n }\n };\n upload.dataUrl = function (file, disallowObjectUrl) {\n if (!file) return upload.emptyPromise(file, file);\n if ((disallowObjectUrl && file.$ngfDataUrl != null) || (!disallowObjectUrl && file.$ngfBlobUrl != null)) {\n return upload.emptyPromise(disallowObjectUrl ? file.$ngfDataUrl : file.$ngfBlobUrl, file);\n }\n var p = disallowObjectUrl ? file.$$ngfDataUrlPromise : file.$$ngfBlobUrlPromise;\n if (p) return p;\n\n var deferred = $q.defer();\n $timeout(function () {\n if (window.FileReader && file &&\n (!window.FileAPI || navigator.userAgent.indexOf('MSIE 8') === -1 || file.size < 20000) &&\n (!window.FileAPI || navigator.userAgent.indexOf('MSIE 9') === -1 || file.size < 4000000)) {\n //prefer URL.createObjectURL for handling refrences to files of all sizes\n //since it doesn´t build a large string in memory\n var URL = window.URL || window.webkitURL;\n if (URL && URL.createObjectURL && !disallowObjectUrl) {\n var url;\n try {\n url = URL.createObjectURL(file);\n } catch (e) {\n $timeout(function () {\n file.$ngfBlobUrl = '';\n deferred.reject();\n });\n return;\n }\n $timeout(function () {\n file.$ngfBlobUrl = url;\n if (url) {\n deferred.resolve(url, file);\n upload.blobUrls = upload.blobUrls || [];\n upload.blobUrlsTotalSize = upload.blobUrlsTotalSize || 0;\n upload.blobUrls.push({url: url, size: file.size});\n upload.blobUrlsTotalSize += file.size || 0;\n var maxMemory = upload.defaults.blobUrlsMaxMemory || 268435456;\n var maxLength = upload.defaults.blobUrlsMaxQueueSize || 200;\n while ((upload.blobUrlsTotalSize > maxMemory || upload.blobUrls.length > maxLength) && upload.blobUrls.length > 1) {\n var obj = upload.blobUrls.splice(0, 1)[0];\n URL.revokeObjectURL(obj.url);\n upload.blobUrlsTotalSize -= obj.size;\n }\n }\n });\n } else {\n var fileReader = new FileReader();\n fileReader.onload = function (e) {\n $timeout(function () {\n file.$ngfDataUrl = e.target.result;\n deferred.resolve(e.target.result, file);\n $timeout(function () {\n delete file.$ngfDataUrl;\n }, 1000);\n });\n };\n fileReader.onerror = function () {\n $timeout(function () {\n file.$ngfDataUrl = '';\n deferred.reject();\n });\n };\n fileReader.readAsDataURL(file);\n }\n } else {\n $timeout(function () {\n file[disallowObjectUrl ? '$ngfDataUrl' : '$ngfBlobUrl'] = '';\n deferred.reject();\n });\n }\n });\n\n if (disallowObjectUrl) {\n p = file.$$ngfDataUrlPromise = deferred.promise;\n } else {\n p = file.$$ngfBlobUrlPromise = deferred.promise;\n }\n p['finally'](function () {\n delete file[disallowObjectUrl ? '$$ngfDataUrlPromise' : '$$ngfBlobUrlPromise'];\n });\n return p;\n };\n return upload;\n }]);\n\n function getTagType(el) {\n if (el.tagName.toLowerCase() === 'img') return 'image';\n if (el.tagName.toLowerCase() === 'audio') return 'audio';\n if (el.tagName.toLowerCase() === 'video') return 'video';\n return /./;\n }\n\n function linkFileDirective(Upload, $timeout, scope, elem, attr, directiveName, resizeParams, isBackground) {\n function constructDataUrl(file) {\n var disallowObjectUrl = Upload.attrGetter('ngfNoObjectUrl', attr, scope);\n Upload.dataUrl(file, disallowObjectUrl)['finally'](function () {\n $timeout(function () {\n var src = (disallowObjectUrl ? file.$ngfDataUrl : file.$ngfBlobUrl) || file.$ngfDataUrl;\n if (isBackground) {\n elem.css('background-image', 'url(\\'' + (src || '') + '\\')');\n } else {\n elem.attr('src', src);\n }\n if (src) {\n elem.removeClass('ng-hide');\n } else {\n elem.addClass('ng-hide');\n }\n });\n });\n }\n\n $timeout(function () {\n var unwatch = scope.$watch(attr[directiveName], function (file) {\n var size = resizeParams;\n if (directiveName === 'ngfThumbnail') {\n if (!size) {\n size = {\n width: elem[0].naturalWidth || elem[0].clientWidth,\n height: elem[0].naturalHeight || elem[0].clientHeight\n };\n }\n if (size.width === 0 && window.getComputedStyle) {\n var style = getComputedStyle(elem[0]);\n if (style.width && style.width.indexOf('px') > -1 && style.height && style.height.indexOf('px') > -1) {\n size = {\n width: parseInt(style.width.slice(0, -2)),\n height: parseInt(style.height.slice(0, -2))\n };\n }\n }\n }\n\n if (angular.isString(file)) {\n elem.removeClass('ng-hide');\n if (isBackground) {\n return elem.css('background-image', 'url(\\'' + file + '\\')');\n } else {\n return elem.attr('src', file);\n }\n }\n if (file && file.type && file.type.search(getTagType(elem[0])) === 0 &&\n (!isBackground || file.type.indexOf('image') === 0)) {\n if (size && Upload.isResizeSupported()) {\n size.resizeIf = function (width, height) {\n return Upload.attrGetter('ngfResizeIf', attr, scope,\n {$width: width, $height: height, $file: file});\n };\n Upload.resize(file, size).then(\n function (f) {\n constructDataUrl(f);\n }, function (e) {\n throw e;\n }\n );\n } else {\n constructDataUrl(file);\n }\n } else {\n elem.addClass('ng-hide');\n }\n });\n\n scope.$on('$destroy', function () {\n unwatch();\n });\n });\n }\n\n\n /** @namespace attr.ngfSrc */\n /** @namespace attr.ngfNoObjectUrl */\n ngFileUpload.directive('ngfSrc', ['Upload', '$timeout', function (Upload, $timeout) {\n return {\n restrict: 'AE',\n link: function (scope, elem, attr) {\n linkFileDirective(Upload, $timeout, scope, elem, attr, 'ngfSrc',\n Upload.attrGetter('ngfResize', attr, scope), false);\n }\n };\n }]);\n\n /** @namespace attr.ngfBackground */\n /** @namespace attr.ngfNoObjectUrl */\n ngFileUpload.directive('ngfBackground', ['Upload', '$timeout', function (Upload, $timeout) {\n return {\n restrict: 'AE',\n link: function (scope, elem, attr) {\n linkFileDirective(Upload, $timeout, scope, elem, attr, 'ngfBackground',\n Upload.attrGetter('ngfResize', attr, scope), true);\n }\n };\n }]);\n\n /** @namespace attr.ngfThumbnail */\n /** @namespace attr.ngfAsBackground */\n /** @namespace attr.ngfSize */\n /** @namespace attr.ngfNoObjectUrl */\n ngFileUpload.directive('ngfThumbnail', ['Upload', '$timeout', function (Upload, $timeout) {\n return {\n restrict: 'AE',\n link: function (scope, elem, attr) {\n var size = Upload.attrGetter('ngfSize', attr, scope);\n linkFileDirective(Upload, $timeout, scope, elem, attr, 'ngfThumbnail', size,\n Upload.attrGetter('ngfAsBackground', attr, scope));\n }\n };\n }]);\n\n ngFileUpload.config(['$compileProvider', function ($compileProvider) {\n if ($compileProvider.imgSrcSanitizationWhitelist) $compileProvider.imgSrcSanitizationWhitelist(/^\\s*(https?|ftp|mailto|tel|webcal|local|file|data|blob):/);\n if ($compileProvider.aHrefSanitizationWhitelist) $compileProvider.aHrefSanitizationWhitelist(/^\\s*(https?|ftp|mailto|tel|webcal|local|file|data|blob):/);\n }]);\n\n ngFileUpload.filter('ngfDataUrl', ['UploadDataUrl', '$sce', function (UploadDataUrl, $sce) {\n return function (file, disallowObjectUrl, trustedUrl) {\n if (angular.isString(file)) {\n return $sce.trustAsResourceUrl(file);\n }\n var src = file && ((disallowObjectUrl ? file.$ngfDataUrl : file.$ngfBlobUrl) || file.$ngfDataUrl);\n if (file && !src) {\n if (!file.$ngfDataUrlFilterInProgress && angular.isObject(file)) {\n file.$ngfDataUrlFilterInProgress = true;\n UploadDataUrl.dataUrl(file, disallowObjectUrl);\n }\n return '';\n }\n if (file) delete file.$ngfDataUrlFilterInProgress;\n return (file && src ? (trustedUrl ? $sce.trustAsResourceUrl(src) : src) : file) || '';\n };\n }]);\n\n})();\n\nngFileUpload.service('UploadValidate', ['UploadDataUrl', '$q', '$timeout', function (UploadDataUrl, $q, $timeout) {\n var upload = UploadDataUrl;\n\n function globStringToRegex(str) {\n var regexp = '', excludes = [];\n if (str.length > 2 && str[0] === '/' && str[str.length - 1] === '/') {\n regexp = str.substring(1, str.length - 1);\n } else {\n var split = str.split(',');\n if (split.length > 1) {\n for (var i = 0; i < split.length; i++) {\n var r = globStringToRegex(split[i]);\n if (r.regexp) {\n regexp += '(' + r.regexp + ')';\n if (i < split.length - 1) {\n regexp += '|';\n }\n } else {\n excludes = excludes.concat(r.excludes);\n }\n }\n } else {\n if (str.indexOf('!') === 0) {\n excludes.push('^((?!' + globStringToRegex(str.substring(1)).regexp + ').)*$');\n } else {\n if (str.indexOf('.') === 0) {\n str = '*' + str;\n }\n regexp = '^' + str.replace(new RegExp('[.\\\\\\\\+*?\\\\[\\\\^\\\\]$(){}=!<>|:\\\\-]', 'g'), '\\\\$&') + '$';\n regexp = regexp.replace(/\\\\\\*/g, '.*').replace(/\\\\\\?/g, '.');\n }\n }\n }\n return {regexp: regexp, excludes: excludes};\n }\n\n upload.validatePattern = function (file, val) {\n if (!val) {\n return true;\n }\n var pattern = globStringToRegex(val), valid = true;\n if (pattern.regexp && pattern.regexp.length) {\n var regexp = new RegExp(pattern.regexp, 'i');\n valid = (file.type != null && regexp.test(file.type)) ||\n (file.name != null && regexp.test(file.name));\n }\n var len = pattern.excludes.length;\n while (len--) {\n var exclude = new RegExp(pattern.excludes[len], 'i');\n valid = valid && (file.type == null || exclude.test(file.type)) &&\n (file.name == null || exclude.test(file.name));\n }\n return valid;\n };\n\n upload.ratioToFloat = function (val) {\n var r = val.toString(), xIndex = r.search(/[x:]/i);\n if (xIndex > -1) {\n r = parseFloat(r.substring(0, xIndex)) / parseFloat(r.substring(xIndex + 1));\n } else {\n r = parseFloat(r);\n }\n return r;\n };\n\n upload.registerModelChangeValidator = function (ngModel, attr, scope) {\n if (ngModel) {\n ngModel.$formatters.push(function (files) {\n if (ngModel.$dirty) {\n var filesArray = files;\n if (files && !angular.isArray(files)) {\n filesArray = [files];\n }\n upload.validate(filesArray, 0, ngModel, attr, scope).then(function () {\n upload.applyModelValidation(ngModel, filesArray);\n });\n }\n return files;\n });\n }\n };\n\n function markModelAsDirty(ngModel, files) {\n if (files != null && !ngModel.$dirty) {\n if (ngModel.$setDirty) {\n ngModel.$setDirty();\n } else {\n ngModel.$dirty = true;\n }\n }\n }\n\n upload.applyModelValidation = function (ngModel, files) {\n markModelAsDirty(ngModel, files);\n angular.forEach(ngModel.$ngfValidations, function (validation) {\n ngModel.$setValidity(validation.name, validation.valid);\n });\n };\n\n upload.getValidationAttr = function (attr, scope, name, validationName, file) {\n var dName = 'ngf' + name[0].toUpperCase() + name.substr(1);\n var val = upload.attrGetter(dName, attr, scope, {$file: file});\n if (val == null) {\n val = upload.attrGetter('ngfValidate', attr, scope, {$file: file});\n if (val) {\n var split = (validationName || name).split('.');\n val = val[split[0]];\n if (split.length > 1) {\n val = val && val[split[1]];\n }\n }\n }\n return val;\n };\n\n upload.validate = function (files, prevLength, ngModel, attr, scope) {\n ngModel = ngModel || {};\n ngModel.$ngfValidations = ngModel.$ngfValidations || [];\n\n angular.forEach(ngModel.$ngfValidations, function (v) {\n v.valid = true;\n });\n\n var attrGetter = function (name, params) {\n return upload.attrGetter(name, attr, scope, params);\n };\n\n var ignoredErrors = (upload.attrGetter('ngfIgnoreInvalid', attr, scope) || '').split(' ');\n var runAllValidation = upload.attrGetter('ngfRunAllValidations', attr, scope);\n\n if (files == null || files.length === 0) {\n return upload.emptyPromise({'validFiles': files, 'invalidFiles': []});\n }\n\n files = files.length === undefined ? [files] : files.slice(0);\n var invalidFiles = [];\n\n function validateSync(name, validationName, fn) {\n if (files) {\n var i = files.length, valid = null;\n while (i--) {\n var file = files[i];\n if (file) {\n var val = upload.getValidationAttr(attr, scope, name, validationName, file);\n if (val != null) {\n if (!fn(file, val, i)) {\n if (ignoredErrors.indexOf(name) === -1) {\n file.$error = name;\n (file.$errorMessages = (file.$errorMessages || {}))[name] = true;\n file.$errorParam = val;\n if (invalidFiles.indexOf(file) === -1) {\n invalidFiles.push(file);\n }\n if (!runAllValidation) {\n files.splice(i, 1);\n }\n valid = false;\n } else {\n files.splice(i, 1);\n }\n }\n }\n }\n }\n if (valid !== null) {\n ngModel.$ngfValidations.push({name: name, valid: valid});\n }\n }\n }\n\n validateSync('pattern', null, upload.validatePattern);\n validateSync('minSize', 'size.min', function (file, val) {\n return file.size + 0.1 >= upload.translateScalars(val);\n });\n validateSync('maxSize', 'size.max', function (file, val) {\n return file.size - 0.1 <= upload.translateScalars(val);\n });\n var totalSize = 0;\n validateSync('maxTotalSize', null, function (file, val) {\n totalSize += file.size;\n if (totalSize > upload.translateScalars(val)) {\n files.splice(0, files.length);\n return false;\n }\n return true;\n });\n\n validateSync('validateFn', null, function (file, r) {\n return r === true || r === null || r === '';\n });\n\n if (!files.length) {\n return upload.emptyPromise({'validFiles': [], 'invalidFiles': invalidFiles});\n }\n\n function validateAsync(name, validationName, type, asyncFn, fn) {\n function resolveResult(defer, file, val) {\n function resolveInternal(fn) {\n if (fn()) {\n if (ignoredErrors.indexOf(name) === -1) {\n file.$error = name;\n (file.$errorMessages = (file.$errorMessages || {}))[name] = true;\n file.$errorParam = val;\n if (invalidFiles.indexOf(file) === -1) {\n invalidFiles.push(file);\n }\n if (!runAllValidation) {\n var i = files.indexOf(file);\n if (i > -1) files.splice(i, 1);\n }\n defer.resolve(false);\n } else {\n var j = files.indexOf(file);\n if (j > -1) files.splice(j, 1);\n defer.resolve(true);\n }\n } else {\n defer.resolve(true);\n }\n }\n\n if (val != null) {\n asyncFn(file, val).then(function (d) {\n resolveInternal(function () {\n return !fn(d, val);\n });\n }, function () {\n resolveInternal(function () {\n return attrGetter('ngfValidateForce', {$file: file});\n });\n });\n } else {\n defer.resolve(true);\n }\n }\n\n var promises = [upload.emptyPromise(true)];\n if (files) {\n files = files.length === undefined ? [files] : files;\n angular.forEach(files, function (file) {\n var defer = $q.defer();\n promises.push(defer.promise);\n if (type && (file.type == null || file.type.search(type) !== 0)) {\n defer.resolve(true);\n return;\n }\n if (name === 'dimensions' && upload.attrGetter('ngfDimensions', attr) != null) {\n upload.imageDimensions(file).then(function (d) {\n resolveResult(defer, file,\n attrGetter('ngfDimensions', {$file: file, $width: d.width, $height: d.height}));\n }, function () {\n defer.resolve(false);\n });\n } else if (name === 'duration' && upload.attrGetter('ngfDuration', attr) != null) {\n upload.mediaDuration(file).then(function (d) {\n resolveResult(defer, file,\n attrGetter('ngfDuration', {$file: file, $duration: d}));\n }, function () {\n defer.resolve(false);\n });\n } else {\n resolveResult(defer, file,\n upload.getValidationAttr(attr, scope, name, validationName, file));\n }\n });\n }\n var deffer = $q.defer();\n $q.all(promises).then(function (values) {\n var isValid = true;\n for (var i = 0; i < values.length; i++) {\n if (!values[i]) {\n isValid = false;\n break;\n }\n }\n ngModel.$ngfValidations.push({name: name, valid: isValid});\n deffer.resolve(isValid);\n });\n return deffer.promise;\n }\n\n var deffer = $q.defer();\n var promises = [];\n\n promises.push(validateAsync('maxHeight', 'height.max', /image/,\n this.imageDimensions, function (d, val) {\n return d.height <= val;\n }));\n promises.push(validateAsync('minHeight', 'height.min', /image/,\n this.imageDimensions, function (d, val) {\n return d.height >= val;\n }));\n promises.push(validateAsync('maxWidth', 'width.max', /image/,\n this.imageDimensions, function (d, val) {\n return d.width <= val;\n }));\n promises.push(validateAsync('minWidth', 'width.min', /image/,\n this.imageDimensions, function (d, val) {\n return d.width >= val;\n }));\n promises.push(validateAsync('dimensions', null, /image/,\n function (file, val) {\n return upload.emptyPromise(val);\n }, function (r) {\n return r;\n }));\n promises.push(validateAsync('ratio', null, /image/,\n this.imageDimensions, function (d, val) {\n var split = val.toString().split(','), valid = false;\n for (var i = 0; i < split.length; i++) {\n if (Math.abs((d.width / d.height) - upload.ratioToFloat(split[i])) < 0.01) {\n valid = true;\n }\n }\n return valid;\n }));\n promises.push(validateAsync('maxRatio', 'ratio.max', /image/,\n this.imageDimensions, function (d, val) {\n return (d.width / d.height) - upload.ratioToFloat(val) < 0.0001;\n }));\n promises.push(validateAsync('minRatio', 'ratio.min', /image/,\n this.imageDimensions, function (d, val) {\n return (d.width / d.height) - upload.ratioToFloat(val) > -0.0001;\n }));\n promises.push(validateAsync('maxDuration', 'duration.max', /audio|video/,\n this.mediaDuration, function (d, val) {\n return d <= upload.translateScalars(val);\n }));\n promises.push(validateAsync('minDuration', 'duration.min', /audio|video/,\n this.mediaDuration, function (d, val) {\n return d >= upload.translateScalars(val);\n }));\n promises.push(validateAsync('duration', null, /audio|video/,\n function (file, val) {\n return upload.emptyPromise(val);\n }, function (r) {\n return r;\n }));\n\n promises.push(validateAsync('validateAsyncFn', null, null,\n function (file, val) {\n return val;\n }, function (r) {\n return r === true || r === null || r === '';\n }));\n\n $q.all(promises).then(function () {\n\n if (runAllValidation) {\n for (var i = 0; i < files.length; i++) {\n var file = files[i];\n if (file.$error) {\n files.splice(i--, 1);\n }\n }\n }\n\n runAllValidation = false;\n validateSync('maxFiles', null, function (file, val, i) {\n return prevLength + i < val;\n });\n\n deffer.resolve({'validFiles': files, 'invalidFiles': invalidFiles});\n });\n return deffer.promise;\n };\n\n upload.imageDimensions = function (file) {\n if (file.$ngfWidth && file.$ngfHeight) {\n var d = $q.defer();\n $timeout(function () {\n d.resolve({width: file.$ngfWidth, height: file.$ngfHeight});\n });\n return d.promise;\n }\n if (file.$ngfDimensionPromise) return file.$ngfDimensionPromise;\n\n var deferred = $q.defer();\n $timeout(function () {\n if (file.type.indexOf('image') !== 0) {\n deferred.reject('not image');\n return;\n }\n upload.dataUrl(file).then(function (dataUrl) {\n var img = angular.element('').attr('src', dataUrl)\n .css('visibility', 'hidden').css('position', 'fixed')\n .css('max-width', 'none !important').css('max-height', 'none !important');\n\n function success() {\n var width = img[0].naturalWidth || img[0].clientWidth;\n var height = img[0].naturalHeight || img[0].clientHeight;\n img.remove();\n file.$ngfWidth = width;\n file.$ngfHeight = height;\n deferred.resolve({width: width, height: height});\n }\n\n function error() {\n img.remove();\n deferred.reject('load error');\n }\n\n img.on('load', success);\n img.on('error', error);\n\n var secondsCounter = 0;\n function checkLoadErrorInCaseOfNoCallback() {\n $timeout(function () {\n if (img[0].parentNode) {\n if (img[0].clientWidth) {\n success();\n } else if (secondsCounter++ > 10) {\n error();\n } else {\n checkLoadErrorInCaseOfNoCallback();\n }\n }\n }, 1000);\n }\n\n checkLoadErrorInCaseOfNoCallback();\n\n angular.element(document.getElementsByTagName('body')[0]).append(img);\n }, function () {\n deferred.reject('load error');\n });\n });\n\n file.$ngfDimensionPromise = deferred.promise;\n file.$ngfDimensionPromise['finally'](function () {\n delete file.$ngfDimensionPromise;\n });\n return file.$ngfDimensionPromise;\n };\n\n upload.mediaDuration = function (file) {\n if (file.$ngfDuration) {\n var d = $q.defer();\n $timeout(function () {\n d.resolve(file.$ngfDuration);\n });\n return d.promise;\n }\n if (file.$ngfDurationPromise) return file.$ngfDurationPromise;\n\n var deferred = $q.defer();\n $timeout(function () {\n if (file.type.indexOf('audio') !== 0 && file.type.indexOf('video') !== 0) {\n deferred.reject('not media');\n return;\n }\n upload.dataUrl(file).then(function (dataUrl) {\n var el = angular.element(file.type.indexOf('audio') === 0 ? '