{"version":3,"sources":["webpack:///./node_modules/lodash/_getRawTag.js","webpack:///./node_modules/qrcode/lib/core/byte-data.js","webpack:///./node_modules/engine.io-client/lib/xmlhttprequest.js","webpack:///./node_modules/core-js/modules/_iter-define.js","webpack:///./node_modules/yeast/index.js","webpack:///./node_modules/core-js/modules/_string-at.js","webpack:///./node_modules/core-js/modules/_advance-string-index.js","webpack:///./node_modules/vuetify/lib/components/VExpansionPanel/VExpansionPanels.js","webpack:///./node_modules/lodash/_baseKeys.js","webpack:///./node_modules/qrcode/lib/core/regex.js","webpack:///./node_modules/jwt-decode/lib/index.js","webpack:///./node_modules/lodash/_isFlattenable.js","webpack:///./node_modules/lodash/cloneDeep.js","webpack:///./node_modules/vuetify/lib/components/transitions/createTransition.js","webpack:///./node_modules/vuetify/lib/components/transitions/expand-transition.js","webpack:///./node_modules/vuetify/lib/components/transitions/index.js","webpack:///./node_modules/vuetify/lib/components/VAlert/VAlert.js","webpack:///./node_modules/lodash/stubFalse.js","webpack:///./node_modules/lodash/_arrayPush.js","webpack:///./node_modules/engine.io-client/lib/transports/websocket.js","webpack:///./node_modules/lodash/_isStrictComparable.js","webpack:///./node_modules/engine.io-client/lib/transports/polling.js","webpack:///./node_modules/core-js/modules/es7.promise.finally.js","webpack:///./node_modules/lodash/_strictIndexOf.js","webpack:///./node_modules/engine.io-client/lib/transports/polling-jsonp.js","webpack:///./node_modules/lodash/_getNative.js","webpack:///./node_modules/backo2/index.js","webpack:///./node_modules/core-js/modules/_flags.js","webpack:///./node_modules/lodash/isBuffer.js","webpack:///./node_modules/@datadog/browser-rum/node_modules/@datadog/browser-core/esm/tools/display.js","webpack:///./node_modules/@datadog/browser-rum/node_modules/@datadog/browser-core/esm/tools/catchUserErrors.js","webpack:///./node_modules/@datadog/browser-rum/node_modules/@datadog/browser-core/esm/tools/monitor.js","webpack:///./node_modules/@datadog/browser-rum/node_modules/@datadog/browser-core/esm/tools/utils.js","webpack:///./node_modules/@datadog/browser-rum/node_modules/@datadog/browser-core/esm/boot/init.js","webpack:///./node_modules/@datadog/browser-rum-core/node_modules/@datadog/browser-core/esm/tools/display.js","webpack:///./node_modules/@datadog/browser-rum-core/node_modules/@datadog/browser-core/esm/tools/monitor.js","webpack:///./node_modules/@datadog/browser-rum-core/node_modules/@datadog/browser-core/esm/tools/utils.js","webpack:///./node_modules/@datadog/browser-rum-core/node_modules/@datadog/browser-core/esm/tools/contextManager.js","webpack:///./node_modules/@datadog/browser-rum-core/node_modules/@datadog/browser-core/esm/tools/boundedBuffer.js","webpack:///./node_modules/@datadog/browser-rum-core/node_modules/@datadog/browser-core/esm/tools/timeUtils.js","webpack:///./node_modules/@datadog/browser-rum-core/node_modules/@datadog/browser-core/esm/browser/cookie.js","webpack:///./node_modules/@datadog/browser-rum-core/node_modules/@datadog/browser-core/esm/domain/synthetics/syntheticsWorkerValues.js","webpack:///./node_modules/@datadog/browser-rum-core/node_modules/@datadog/browser-core/esm/domain/configuration/experimentalFeatures.js","webpack:///./node_modules/@datadog/browser-rum-core/node_modules/@datadog/browser-core/esm/transport/eventBridge.js","webpack:///./node_modules/@datadog/browser-rum-core/node_modules/@datadog/browser-core/esm/tools/catchUserErrors.js","webpack:///./node_modules/@datadog/browser-rum-core/node_modules/@datadog/browser-core/esm/boot/init.js","webpack:///./node_modules/@datadog/browser-rum-core/node_modules/@datadog/browser-core/esm/domain/tracekit/computeStackTrace.js","webpack:///./node_modules/@datadog/browser-rum-core/node_modules/@datadog/browser-core/esm/tools/error.js","webpack:///./node_modules/@datadog/browser-rum-core/node_modules/@datadog/browser-core/esm/tools/urlPolyfill.js","webpack:///./node_modules/@datadog/browser-rum-core/node_modules/@datadog/browser-core/esm/domain/user/user.js","webpack:///./node_modules/@datadog/browser-rum-core/node_modules/@datadog/browser-core/esm/domain/configuration/intakeSites.js","webpack:///./node_modules/@datadog/browser-rum-core/node_modules/@datadog/browser-core/esm/domain/configuration/endpointBuilder.js","webpack:///./node_modules/@datadog/browser-rum-core/node_modules/@datadog/browser-core/esm/domain/configuration/tags.js","webpack:///./node_modules/@datadog/browser-rum-core/node_modules/@datadog/browser-core/esm/domain/configuration/transportConfiguration.js","webpack:///./node_modules/@datadog/browser-rum-core/node_modules/@datadog/browser-core/esm/domain/configuration/configuration.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/configuration.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/boot/rumPublicApi.js","webpack:///./node_modules/@datadog/browser-rum-core/node_modules/@datadog/browser-core/esm/tools/observable.js","webpack:///./node_modules/@datadog/browser-rum-core/node_modules/@datadog/browser-core/esm/browser/pageExitObservable.js","webpack:///./node_modules/@datadog/browser-rum-core/node_modules/@datadog/browser-core/esm/domain/telemetry/rawTelemetryEvent.types.js","webpack:///./node_modules/@datadog/browser-rum-core/node_modules/@datadog/browser-core/esm/domain/telemetry/telemetry.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/browser/domMutationObservable.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/rumEventsCollection/resource/resourceUtils.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/tracing/getDocumentTraceId.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/browser/viewportObservable.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/contexts/displayContext.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/browser/performanceCollection.js","webpack:///./node_modules/@datadog/browser-rum-core/node_modules/@datadog/browser-core/esm/tools/createEventRateLimiter.js","webpack:///./node_modules/@datadog/browser-rum-core/node_modules/@datadog/browser-core/esm/tools/limitModification.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/contexts/syntheticsContext.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/contexts/ciTestContext.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/assembly.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/contexts/foregroundContexts.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/contexts/internalContext.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/lifeCycle.js","webpack:///./node_modules/@datadog/browser-rum-core/node_modules/@datadog/browser-core/esm/browser/xhrObservable.js","webpack:///./node_modules/@datadog/browser-rum-core/node_modules/@datadog/browser-core/esm/domain/session/sessionConstants.js","webpack:///./node_modules/@datadog/browser-rum-core/node_modules/@datadog/browser-core/esm/tools/contextHistory.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/contexts/viewContexts.js","webpack:///./node_modules/@datadog/browser-rum-core/node_modules/@datadog/browser-core/esm/tools/instrumentMethod.js","webpack:///./node_modules/@datadog/browser-rum-core/node_modules/@datadog/browser-core/esm/browser/fetchObservable.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/tracing/tracer.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/requestCollection.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/trackEventCounts.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/waitPageActivityEnd.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/rumEventsCollection/action/clickChain.js","webpack:///./node_modules/@datadog/browser-rum-core/node_modules/@datadog/browser-core/esm/tools/browserDetection.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/rumEventsCollection/action/getActionNameFromElement.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/rumEventsCollection/action/getSelectorFromElement.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/rumEventsCollection/action/listenActionEvents.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/rumEventsCollection/action/computeFrustration.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/rumEventsCollection/action/trackClickActions.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/rumEventsCollection/action/actionCollection.js","webpack:///./node_modules/@datadog/browser-rum-core/node_modules/@datadog/browser-core/esm/domain/tracekit/tracekit.js","webpack:///./node_modules/@datadog/browser-rum-core/node_modules/@datadog/browser-core/esm/domain/error/trackRuntimeError.js","webpack:///./node_modules/@datadog/browser-rum-core/node_modules/@datadog/browser-core/esm/domain/console/consoleObservable.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/rumEventsCollection/error/trackConsoleError.js","webpack:///./node_modules/@datadog/browser-rum-core/node_modules/@datadog/browser-core/esm/domain/report/reportObservable.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/rumEventsCollection/view/trackFirstHidden.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/rumEventsCollection/error/trackReportError.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/rumEventsCollection/error/errorCollection.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/rumEventsCollection/longTask/longTaskCollection.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/rumEventsCollection/resource/matchRequestTiming.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/rumEventsCollection/resource/resourceCollection.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/rumEventsCollection/view/trackInitialViewTimings.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/rumEventsCollection/view/trackViewMetrics.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/rumEventsCollection/view/trackViews.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/rumEventsCollection/view/viewCollection.js","webpack:///./node_modules/@datadog/browser-rum-core/node_modules/@datadog/browser-core/esm/domain/session/sessionCookieStore.js","webpack:///./node_modules/@datadog/browser-rum-core/node_modules/@datadog/browser-core/esm/domain/session/oldCookiesMigration.js","webpack:///./node_modules/@datadog/browser-rum-core/node_modules/@datadog/browser-core/esm/domain/session/sessionStore.js","webpack:///./node_modules/@datadog/browser-rum-core/node_modules/@datadog/browser-core/esm/domain/session/sessionManager.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/rumSessionManager.js","webpack:///./node_modules/@datadog/browser-rum-core/node_modules/@datadog/browser-core/esm/transport/batch.js","webpack:///./node_modules/@datadog/browser-rum-core/node_modules/@datadog/browser-core/esm/transport/sendWithRetryStrategy.js","webpack:///./node_modules/@datadog/browser-rum-core/node_modules/@datadog/browser-core/esm/transport/httpRequest.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/transport/startRumBatch.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/transport/startRumEventBridge.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/contexts/urlContexts.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/browser/locationChangeObservable.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/boot/startRum.js","webpack:///./node_modules/@datadog/browser-rum/node_modules/@datadog/browser-core/esm/domain/tracekit/computeStackTrace.js","webpack:///./node_modules/@datadog/browser-rum/node_modules/@datadog/browser-core/esm/tools/error.js","webpack:///./node_modules/@datadog/browser-rum/node_modules/@datadog/browser-core/esm/domain/configuration/intakeSites.js","webpack:///./node_modules/@datadog/browser-rum/node_modules/@datadog/browser-core/esm/domain/configuration/experimentalFeatures.js","webpack:///./node_modules/@datadog/browser-rum/node_modules/@datadog/browser-core/esm/tools/observable.js","webpack:///./node_modules/@datadog/browser-rum/node_modules/@datadog/browser-core/esm/tools/timeUtils.js","webpack:///./node_modules/@datadog/browser-rum/node_modules/@datadog/browser-core/esm/domain/telemetry/rawTelemetryEvent.types.js","webpack:///./node_modules/@datadog/browser-rum/node_modules/@datadog/browser-core/esm/domain/telemetry/telemetry.js","webpack:///./node_modules/@datadog/browser-rum/node_modules/@datadog/browser-core/esm/transport/sendWithRetryStrategy.js","webpack:///./node_modules/@datadog/browser-rum/node_modules/@datadog/browser-core/esm/transport/httpRequest.js","webpack:///./node_modules/@datadog/browser-rum/esm/types/sessionReplayConstants.js","webpack:///./node_modules/@datadog/browser-rum/node_modules/@datadog/browser-core/esm/tools/urlPolyfill.js","webpack:///./node_modules/@datadog/browser-rum/node_modules/@datadog/browser-core/esm/domain/configuration/configuration.js","webpack:///./node_modules/@datadog/browser-rum/esm/constants.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/record/privacy.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/record/serializationUtils.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/record/utils.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/record/serialize.js","webpack:///./node_modules/@datadog/browser-rum/node_modules/@datadog/browser-core/esm/tools/instrumentMethod.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/record/mutationBatch.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/record/mutationObserver.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/record/viewports.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/record/observers.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/record/elementsScrollPositions.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/record/record.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/segmentCollection/buildReplayPayload.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/replayStats.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/segmentCollection/segment.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/segmentCollection/deflateWorker.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/segmentCollection/segmentCollection.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/segmentCollection/startDeflateWorker.js","webpack:///./node_modules/@datadog/browser-rum/esm/boot/startRecording.js","webpack:///./node_modules/@datadog/browser-rum/node_modules/@datadog/browser-core/esm/transport/eventBridge.js","webpack:///./node_modules/@datadog/browser-rum/esm/boot/recorderApi.js","webpack:///./node_modules/@datadog/browser-rum/esm/entries/main.js","webpack:///./node_modules/core-js/modules/_object-keys.js","webpack:///./node_modules/vuetify/lib/components/VVirtualScroll/VVirtualScroll.js","webpack:///./node_modules/lodash/_baseAssignIn.js","webpack:///./node_modules/lodash/set.js","webpack:///./node_modules/vuetify/lib/components/VGrid/VRow.js","webpack:///./node_modules/lodash/_baseRest.js","webpack:///./node_modules/lodash/_copySymbolsIn.js","webpack:///./node_modules/dijkstrajs/dijkstra.js","webpack:///./node_modules/vuetify/lib/components/VSheet/index.js","webpack:///./node_modules/core-js/modules/_is-array.js","webpack:///./node_modules/core-js/modules/_object-gopd.js","webpack:///./node_modules/vue-tel-input-vuetify/lib/index.js","webpack:///./node_modules/lodash/_stringToArray.js","webpack:///./node_modules/lodash/_isKeyable.js","webpack:///./node_modules/core-js/modules/web.immediate.js","webpack:///./node_modules/lodash/isObjectLike.js","webpack:///./node_modules/vuetify/lib/components/VIcon/VIcon.js","webpack:///./node_modules/lodash/_isMasked.js","webpack:///./node_modules/lodash/isEmpty.js","webpack:///./node_modules/core-js/modules/es6.string.strike.js","webpack:///./node_modules/ms/index.js","webpack:///./node_modules/core-js/modules/_object-dps.js","webpack:///./node_modules/lodash/_baseSet.js","webpack:///./node_modules/lodash/_basePick.js","webpack:///./node_modules/vuetify/lib/components/VDialog/VDialog.js","webpack:///./node_modules/vuetify/lib/mixins/delayable/index.js","webpack:///./node_modules/vuetify/lib/components/VList/VListItemAction.js","webpack:///./node_modules/lodash/_baseMatchesProperty.js","webpack:///./node_modules/lodash/_stringToPath.js","webpack:///./node_modules/lodash/isNaN.js","webpack:///./node_modules/core-js/modules/_task.js","webpack:///./node_modules/engine.io-client/lib/transport.js","webpack:///./node_modules/lodash/_baseIsMap.js","webpack:///./node_modules/lodash/isObject.js","webpack:///./node_modules/bson-objectid/objectid.js","webpack:///./node_modules/vuetify/lib/components/VOverlay/index.js","webpack:///./node_modules/lodash/_getAllKeysIn.js","webpack:///./node_modules/lodash/_equalByTag.js","webpack:///./node_modules/vuetify/lib/mixins/routable/index.js","webpack:///./node_modules/lodash/_Promise.js","webpack:///./node_modules/engine.io-client/node_modules/debug/src/browser.js","webpack:///./node_modules/vuetify/lib/components/VWindow/VWindowItem.js","webpack:///./node_modules/lodash/_hashDelete.js","webpack:///./node_modules/vuetify/lib/components/VDataTable/VSimpleTable.js","webpack:///./node_modules/base64-js/index.js","webpack:///./node_modules/lodash/_mapCacheSet.js","webpack:///./node_modules/lodash/_matchesStrictComparable.js","webpack:///./node_modules/core-js/modules/_fix-re-wks.js","webpack:///./node_modules/lodash/_compareMultiple.js","webpack:///./node_modules/vuetify/lib/mixins/stackable/index.js","webpack:///./node_modules/feathers-vuex/dist/utils.js","webpack:///./node_modules/lodash/_overRest.js","webpack:///./node_modules/vuetify/lib/components/VProgressCircular/index.js","webpack:///./node_modules/core-js/modules/_dom-create.js","webpack:///./node_modules/lodash/_memoizeCapped.js","webpack:///./node_modules/core-js/modules/_classof.js","webpack:///./node_modules/lodash/mergeWith.js","webpack:///./node_modules/core-js/modules/es6.string.sup.js","webpack:///./node_modules/lodash/_baseForOwn.js","webpack:///./node_modules/lodash/_baseAggregator.js","webpack:///./node_modules/lodash/_Uint8Array.js","webpack:///./node_modules/lodash/_mapCacheGet.js","webpack:///./node_modules/vuetify/lib/mixins/measurable/index.js","webpack:///./node_modules/vuetify/lib/components/VSubheader/index.js","webpack:///./node_modules/lodash/_hashSet.js","webpack:///./node_modules/lodash/_baseIsArguments.js","webpack:///./node_modules/lodash/pick.js","webpack:///./node_modules/core-js/modules/_object-gops.js","webpack:///./node_modules/vuetify-loader/lib/runtime/installDirectives.js","webpack:///./node_modules/lodash/_baseHasIn.js","webpack:///./node_modules/qrcode/lib/core/polynomial.js","webpack:///./node_modules/qrcode/lib/core/version-check.js","webpack:///./node_modules/jwt-check-expiration/src/index.js","webpack:///./node_modules/socket.io-client/lib/socket.js","webpack:///./node_modules/vue-loader/lib/runtime/componentNormalizer.js","webpack:///./node_modules/util/node_modules/inherits/inherits_browser.js","webpack:///./node_modules/core-js/modules/es6.regexp.split.js","webpack:///./node_modules/lodash/_listCacheClear.js","webpack:///./node_modules/vuetify/lib/mixins/loadable/index.js","webpack:///./node_modules/lodash/_objectToString.js","webpack:///./node_modules/vuetify/lib/components/VToolbar/index.js","webpack:///./node_modules/core-js/modules/_redefine.js","webpack:///./node_modules/core-js/modules/_object-create.js","webpack:///./node_modules/sift/lib/index.js","webpack:///./node_modules/lodash/_baseFindIndex.js","webpack:///./node_modules/vue/dist/vue.runtime.esm.js","webpack:///./node_modules/lodash/_baseSlice.js","webpack:///./node_modules/lodash/_root.js","webpack:///./node_modules/core-js/modules/_wks.js","webpack:///./node_modules/lodash/_baseUniq.js","webpack:///./node_modules/lodash/_charsEndIndex.js","webpack:///./node_modules/core-js/modules/_library.js","webpack:///./node_modules/lodash/_arrayFilter.js","webpack:///./node_modules/core-js/modules/_cof.js","webpack:///./node_modules/vuetify/lib/components/VSnackbar/VSnackbar.js","webpack:///./node_modules/lodash/_getPrototype.js","webpack:///./node_modules/@datadog/browser-core/esm/tools/display.js","webpack:///./node_modules/@datadog/browser-core/esm/tools/catchUserErrors.js","webpack:///./node_modules/@datadog/browser-core/esm/tools/monitor.js","webpack:///./node_modules/@datadog/browser-core/esm/tools/utils.js","webpack:///./node_modules/@datadog/browser-core/esm/boot/init.js","webpack:///./node_modules/@datadog/browser-core/esm/tools/contextManager.js","webpack:///./node_modules/@datadog/browser-core/esm/tools/boundedBuffer.js","webpack:///./node_modules/@datadog/browser-core/esm/tools/timeUtils.js","webpack:///./node_modules/@datadog/browser-core/esm/transport/eventBridge.js","webpack:///./node_modules/@datadog/browser-core/esm/domain/user/user.js","webpack:///./node_modules/@datadog/browser-core/esm/browser/cookie.js","webpack:///./node_modules/@datadog/browser-core/esm/domain/configuration/experimentalFeatures.js","webpack:///./node_modules/@datadog/browser-core/esm/tools/urlPolyfill.js","webpack:///./node_modules/@datadog/browser-core/esm/domain/configuration/intakeSites.js","webpack:///./node_modules/@datadog/browser-core/esm/domain/configuration/endpointBuilder.js","webpack:///./node_modules/@datadog/browser-core/esm/domain/configuration/tags.js","webpack:///./node_modules/@datadog/browser-core/esm/domain/configuration/transportConfiguration.js","webpack:///./node_modules/@datadog/browser-core/esm/domain/configuration/configuration.js","webpack:///./node_modules/@datadog/browser-core/esm/domain/tracekit/computeStackTrace.js","webpack:///./node_modules/@datadog/browser-core/esm/tools/error.js","webpack:///./node_modules/@datadog/browser-core/esm/tools/observable.js","webpack:///./node_modules/@datadog/browser-core/esm/domain/report/reportObservable.js","webpack:///./node_modules/@datadog/browser-logs/esm/domain/configuration.js","webpack:///./node_modules/@datadog/browser-logs/esm/domain/logger.js","webpack:///./node_modules/@datadog/browser-logs/esm/boot/logsPublicApi.js","webpack:///./node_modules/@datadog/browser-core/esm/browser/pageExitObservable.js","webpack:///./node_modules/@datadog/browser-core/esm/domain/synthetics/syntheticsWorkerValues.js","webpack:///./node_modules/@datadog/browser-core/esm/domain/telemetry/rawTelemetryEvent.types.js","webpack:///./node_modules/@datadog/browser-core/esm/domain/telemetry/telemetry.js","webpack:///./node_modules/@datadog/browser-core/esm/transport/batch.js","webpack:///./node_modules/@datadog/browser-core/esm/transport/sendWithRetryStrategy.js","webpack:///./node_modules/@datadog/browser-core/esm/transport/httpRequest.js","webpack:///./node_modules/@datadog/browser-core/esm/transport/startBatchWithReplica.js","webpack:///./node_modules/@datadog/browser-core/esm/tools/contextHistory.js","webpack:///./node_modules/@datadog/browser-core/esm/tools/browserDetection.js","webpack:///./node_modules/@datadog/browser-core/esm/domain/session/sessionConstants.js","webpack:///./node_modules/@datadog/browser-core/esm/domain/session/sessionCookieStore.js","webpack:///./node_modules/@datadog/browser-core/esm/domain/session/oldCookiesMigration.js","webpack:///./node_modules/@datadog/browser-core/esm/domain/session/sessionStore.js","webpack:///./node_modules/@datadog/browser-core/esm/domain/session/sessionManager.js","webpack:///./node_modules/@datadog/browser-logs/esm/domain/logsSessionManager.js","webpack:///./node_modules/@datadog/browser-logs/esm/domain/logsCollection/logger/loggerCollection.js","webpack:///./node_modules/@datadog/browser-core/esm/tools/createEventRateLimiter.js","webpack:///./node_modules/@datadog/browser-logs/esm/domain/assembly.js","webpack:///./node_modules/@datadog/browser-core/esm/domain/console/consoleObservable.js","webpack:///./node_modules/@datadog/browser-logs/esm/domain/logsCollection/console/consoleCollection.js","webpack:///./node_modules/@datadog/browser-logs/esm/domain/logsCollection/report/reportCollection.js","webpack:///./node_modules/@datadog/browser-core/esm/browser/xhrObservable.js","webpack:///./node_modules/@datadog/browser-core/esm/tools/instrumentMethod.js","webpack:///./node_modules/@datadog/browser-core/esm/browser/fetchObservable.js","webpack:///./node_modules/@datadog/browser-logs/esm/domain/logsCollection/networkError/networkErrorCollection.js","webpack:///./node_modules/@datadog/browser-core/esm/domain/tracekit/tracekit.js","webpack:///./node_modules/@datadog/browser-core/esm/domain/error/trackRuntimeError.js","webpack:///./node_modules/@datadog/browser-logs/esm/domain/logsCollection/runtimeError/runtimeErrorCollection.js","webpack:///./node_modules/@datadog/browser-logs/esm/domain/lifeCycle.js","webpack:///./node_modules/@datadog/browser-logs/esm/transport/startLogsBatch.js","webpack:///./node_modules/@datadog/browser-logs/esm/transport/startLogsBridge.js","webpack:///./node_modules/@datadog/browser-logs/esm/domain/internalContext.js","webpack:///./node_modules/@datadog/browser-logs/esm/boot/startLogs.js","webpack:///./node_modules/@datadog/browser-logs/esm/entries/main.js","webpack:///./node_modules/lodash/_createAssigner.js","webpack:///./node_modules/core-js/modules/_strict-method.js","webpack:///./node_modules/qrcode/lib/core/kanji-data.js","webpack:///./node_modules/vuex/dist/vuex.esm.js","webpack:///./node_modules/vuetify/lib/components/VGrid/VSpacer.js","webpack:///./node_modules/lodash/_stackDelete.js","webpack:///./node_modules/vue-async-computed/dist/vue-async-computed.esm.js","webpack:///./node_modules/util/util.js","webpack:///./node_modules/lodash/isArrayLike.js","webpack:///./node_modules/vuetify/lib/components/VSkeletonLoader/VSkeletonLoader.js","webpack:///./node_modules/core-js/modules/_invoke.js","webpack:///./node_modules/vuetify/lib/mixins/registrable/index.js","webpack:///./node_modules/vuetify/lib/components/VMenu/index.js","webpack:///./node_modules/lodash/_assignValue.js","webpack:///./node_modules/core-js/modules/_hide.js","webpack:///./node_modules/lodash/_getSymbols.js","webpack:///./node_modules/lodash/_baseIsNative.js","webpack:///./node_modules/vuetify/lib/components/VList/VListItemIcon.js","webpack:///./node_modules/debug/src/browser.js","webpack:///./node_modules/vuetify/lib/components/VChip/index.js","webpack:///./node_modules/qrcode/lib/core/error-correction-code.js","webpack:///./node_modules/@feathersjs/authentication-client/lib/storage.js","webpack:///./node_modules/lodash/_getValue.js","webpack:///./node_modules/socket.io-parser/node_modules/debug/src/debug.js","webpack:///./node_modules/lodash/_baseGetTag.js","webpack:///./node_modules/vuetify/lib/components/VProgressLinear/index.js","webpack:///./node_modules/core-js/modules/_wks-ext.js","webpack:///./node_modules/lodash/_baseClone.js","webpack:///./node_modules/core-js/modules/es6.regexp.flags.js","webpack:///./node_modules/vuetify/lib/mixins/button-group/index.js","webpack:///./node_modules/core-js/modules/_string-html.js","webpack:///./node_modules/core-js/modules/es6.regexp.search.js","webpack:///./node_modules/vuetify/lib/mixins/validatable/index.js","webpack:///./node_modules/core-js/modules/_object-gpo.js","webpack:///./node_modules/lodash/_WeakMap.js","webpack:///./node_modules/vuetify/lib/components/VTooltip/VTooltip.js","webpack:///./node_modules/vue-the-mask/dist/vue-the-mask.js","webpack:///./node_modules/vuetify/lib/mixins/applicationable/index.js","webpack:///./node_modules/core-js/modules/_wks-define.js","webpack:///./node_modules/core-js/modules/es6.regexp.constructor.js","webpack:///./node_modules/lodash/_defineProperty.js","webpack:///./node_modules/lodash/_getMatchData.js","webpack:///./node_modules/vuetify/lib/components/VCarousel/VCarouselItem.js","webpack:///./node_modules/@feathersjs/feathers/lib/version.js","webpack:///./node_modules/@feathersjs/feathers/lib/events.js","webpack:///./node_modules/lodash/omit.js","webpack:///./node_modules/lodash/defaultsDeep.js","webpack:///./node_modules/qrcode/lib/renderer/svg-tag.js","webpack:///./node_modules/@feathersjs/socketio-client/lib/index.js","webpack:///./node_modules/lodash/now.js","webpack:///./node_modules/vuetify/lib/mixins/scrollable/index.js","webpack:///./node_modules/vuetify/lib/components/VAppBar/VAppBar.js","webpack:///./node_modules/component-bind/index.js","webpack:///./node_modules/vue-feathers/vue-feathers.js","webpack:///./node_modules/qrcode/lib/renderer/canvas.js","webpack:///./node_modules/core-js/modules/_iter-create.js","webpack:///./node_modules/lodash/_baseKeysIn.js","webpack:///./node_modules/dayjs/plugin/relativeTime.js","webpack:///./node_modules/lodash/merge.js","webpack:///./node_modules/lodash/_getMapData.js","webpack:///./node_modules/lodash/_arraySome.js","webpack:///./node_modules/lodash/_getTag.js","webpack:///./node_modules/fast-copy/dist/fast-copy.js","webpack:///./node_modules/lodash/_copyArray.js","webpack:///./node_modules/node-libs-browser/mock/process.js","webpack:///./node_modules/vuetify/lib/components/VRadioGroup/VRadioGroup.js","webpack:///./node_modules/socket.io-client/node_modules/debug/src/debug.js","webpack:///./node_modules/lodash/last.js","webpack:///./node_modules/@shopify/address-consts/index.js","webpack:///./node_modules/core-js/modules/es7.object.define-getter.js","webpack:///./node_modules/core-js/modules/_to-integer.js","webpack:///./node_modules/qrcode/lib/renderer/utils.js","webpack:///./node_modules/core-js/modules/_property-desc.js","webpack:///./node_modules/core-js/modules/web.timers.js","webpack:///./node_modules/lodash/_baseIndexOf.js","webpack:///./node_modules/vuetify/lib/components/VThemeProvider/VThemeProvider.js","webpack:///./node_modules/lodash/_baseEach.js","webpack:///./node_modules/core-js/modules/es6.string.bold.js","webpack:///./node_modules/vuetify/lib/components/VProgressCircular/VProgressCircular.js","webpack:///./node_modules/core-js/modules/es6.regexp.match.js","webpack:///./node_modules/vuetify/lib/components/VExpansionPanel/VExpansionPanelContent.js","webpack:///./node_modules/lodash/_hashClear.js","webpack:///./node_modules/vuetify/lib/components/VData/VData.js","webpack:///./node_modules/vuetify/lib/mixins/activatable/index.js","webpack:///./node_modules/vuetify/src/locale/en.ts","webpack:///./node_modules/lodash/_baseUnset.js","webpack:///./node_modules/vuetify/lib/components/VForm/VForm.js","webpack:///./node_modules/core-js/modules/_to-object.js","webpack:///./node_modules/vuetify/lib/components/VBadge/VBadge.js","webpack:///./node_modules/lodash/deburr.js","webpack:///./node_modules/lodash/_trimmedEndIndex.js","webpack:///./node_modules/lodash/isUndefined.js","webpack:///./node_modules/lodash/flatten.js","webpack:///./node_modules/vuetify/lib/mixins/groupable/index.js","webpack:///./node_modules/vue-tel-input-vuetify/lib/sprite.css?3f71","webpack:///./node_modules/parseqs/index.js","webpack:///./node_modules/lodash/_baseMergeDeep.js","webpack:///./node_modules/lodash/isNumber.js","webpack:///./node_modules/lodash/_createAggregator.js","webpack:///./node_modules/lodash/_baseTimes.js","webpack:///./node_modules/three/examples/jsm/loaders/STLLoader.js","webpack:///./node_modules/core-js/modules/_regexp-exec.js","webpack:///./node_modules/core-js/modules/_object-pie.js","webpack:///./node_modules/vuetify/lib/mixins/rippleable/index.js","webpack:///./node_modules/parseuri/index.js","webpack:///./node_modules/lodash/_copySymbols.js","webpack:///./node_modules/core-js/modules/_shared.js","webpack:///./node_modules/vuetify/lib/components/VFooter/VFooter.js","webpack:///./node_modules/lodash/_stackHas.js","webpack:///./node_modules/core-js/modules/es6.array.sort.js","webpack:///./node_modules/vuetify/lib/directives/ripple/index.js","webpack:///./node_modules/socket.io-parser/index.js","webpack:///./node_modules/vuetify/lib/components/VList/VListGroup.js","webpack:///./node_modules/qrcode/lib/core/bit-matrix.js","webpack:///./node_modules/lodash/_nativeKeys.js","webpack:///./node_modules/lodash/_freeGlobal.js","webpack:///./node_modules/has-binary2/index.js","webpack:///./node_modules/encode-utf8/index.js","webpack:///./node_modules/vuetify/lib/util/mixins.js","webpack:///./node_modules/vuetify/lib/components/VSlider/VSlider.js","webpack:///./node_modules/vuetify/lib/components/VSlider/index.js","webpack:///./node_modules/vuetify/lib/components/VRangeSlider/VRangeSlider.js","webpack:///./node_modules/dayjs/dayjs.min.js","webpack:///./node_modules/engine.io-client/node_modules/ms/index.js","webpack:///./node_modules/engine.io-parser/lib/browser.js","webpack:///./node_modules/three/build/three.module.js","webpack:///./node_modules/lodash/_baseAssign.js","webpack:///./node_modules/@feathersjs/authentication-client/lib/hooks/authentication.js","webpack:///./node_modules/lodash/_baseFlatten.js","webpack:///./node_modules/core-js/modules/_export.js","webpack:///./node_modules/vuetify/lib/components/VList/VListItemGroup.js","webpack:///./node_modules/vuetify/lib/components/VList/index.js","webpack:///./node_modules/@shopify/address-consts/build/cjs/index.js","webpack:///./node_modules/lodash/_cloneDataView.js","webpack:///./node_modules/core-js/modules/_inherit-if-required.js","webpack:///./node_modules/lodash/_ListCache.js","webpack:///./node_modules/vuetify/lib/components/VCarousel/VCarousel.js","webpack:///./node_modules/lodash/_arrayIncludesWith.js","webpack:///./node_modules/@feathersjs/feathers/lib/hooks/base.js","webpack:///./node_modules/core-js/modules/_regexp-exec-abstract.js","webpack:///./node_modules/vue-tel-input-vuetify/lib/plugin.js","webpack:///./node_modules/lodash/_castArrayLikeObject.js","webpack:///./node_modules/lodash/_nativeCreate.js","webpack:///./node_modules/vuetify/lib/components/VItemGroup/VItemGroup.js","webpack:///./node_modules/lodash/isPlainObject.js","webpack:///./node_modules/core-js/modules/_shared-key.js","webpack:///./node_modules/core-js/modules/_iobject.js","webpack:///./node_modules/vuetify/lib/components/VGrid/VCol.js","webpack:///(webpack)/buildin/module.js","webpack:///./node_modules/component-inherit/index.js","webpack:///./node_modules/lodash/isEqual.js","webpack:///./node_modules/lodash/_baseMatches.js","webpack:///./node_modules/core-js/modules/es7.object.lookup-setter.js","webpack:///./node_modules/vuetify-loader/lib/runtime/installComponents.js","webpack:///./node_modules/lodash/_baseGet.js","webpack:///./node_modules/lodash/trim.js","webpack:///./node_modules/core-js/modules/es6.string.sub.js","webpack:///./node_modules/lodash/isArray.js","webpack:///./node_modules/core-js/modules/_meta.js","webpack:///./node_modules/vuetify/lib/components/VRadioGroup/VRadio.js","webpack:///./node_modules/lodash/_listCacheSet.js","webpack:///./node_modules/qrcode/lib/can-promise.js","webpack:///./node_modules/core-js/modules/_to-iobject.js","webpack:///./node_modules/qrcode/lib/core/galois-field.js","webpack:///./node_modules/core-js/modules/_has.js","webpack:///./node_modules/lodash/_listCacheDelete.js","webpack:///./node_modules/engine.io-client/lib/transports/index.js","webpack:///./node_modules/lodash/_baseOrderBy.js","webpack:///./node_modules/core-js/modules/_to-primitive.js","webpack:///./node_modules/lodash/_arrayReduce.js","webpack:///./node_modules/core-js/modules/es6.regexp.to-string.js","webpack:///./node_modules/core-js/modules/es6.string.fontcolor.js","webpack:///./node_modules/uberproto/lib/proto.js","webpack:///./node_modules/lodash/_asciiToArray.js","webpack:///./node_modules/lodash/groupBy.js","webpack:///./node_modules/lodash/_cloneRegExp.js","webpack:///./node_modules/lodash/_arrayLikeKeys.js","webpack:///./node_modules/socket.io-parser/binary.js","webpack:///./node_modules/vuetify/lib/components/VAvatar/index.js","webpack:///./node_modules/vuetify/lib/components/VTabs/VTab.js","webpack:///./node_modules/vuetify/lib/components/VToolbar/VToolbar.js","webpack:///./node_modules/component-emitter/index.js","webpack:///./node_modules/lodash/_baseFor.js","webpack:///./node_modules/vue-tel-input-vuetify/lib/vue-tel-input-vuetify.vue?545e","webpack:///node_modules/vue-tel-input-vuetify/lib/vue-tel-input-vuetify.vue","webpack:///./node_modules/vue-tel-input-vuetify/lib/vue-tel-input-vuetify.vue?5615","webpack:///./node_modules/vue-tel-input-vuetify/lib/vue-tel-input-vuetify.vue?7ffe","webpack:///./node_modules/lodash/constant.js","webpack:///./node_modules/currency.js/dist/currency.min.js","webpack:///./node_modules/lodash/isTypedArray.js","webpack:///./node_modules/lodash/_baseIsTypedArray.js","webpack:///./node_modules/vuetify/lib/components/VApp/VApp.js","webpack:///./node_modules/lodash/_createSet.js","webpack:///./node_modules/lodash/_baseCreate.js","webpack:///./node_modules/@feathersjs/feathers/lib/hooks/index.js","webpack:///./node_modules/lodash/_asciiWords.js","webpack:///./node_modules/vuetify/lib/mixins/themeable/index.js","webpack:///./node_modules/vuetify/lib/mixins/detachable/index.js","webpack:///./node_modules/engine.io-parser/lib/keys.js","webpack:///./node_modules/lodash/toString.js","webpack:///./node_modules/core-js/modules/_global.js","webpack:///./node_modules/core-js/modules/_to-absolute-index.js","webpack:///./node_modules/socket.io-client/lib/manager.js","webpack:///./node_modules/qrcode/lib/core/mask-pattern.js","webpack:///./node_modules/lodash/_arrayMap.js","webpack:///./node_modules/lodash/_Map.js","webpack:///./node_modules/dropzone/dist/dropzone.js","webpack:///./node_modules/core-js/modules/_fails.js","webpack:///./node_modules/qrcode/lib/core/error-correction-level.js","webpack:///./node_modules/lodash/_hashHas.js","webpack:///./node_modules/core-js/modules/_set-species.js","webpack:///./node_modules/jwt-decode/lib/base64_url_decode.js","webpack:///./node_modules/lodash/_MapCache.js","webpack:///./node_modules/lodash/_baseIsEqualDeep.js","webpack:///./node_modules/qrcode/lib/core/bit-buffer.js","webpack:///./node_modules/core-js/modules/_object-gopn-ext.js","webpack:///./node_modules/vuetify/lib/util/colorUtils.js","webpack:///./node_modules/qrcode/lib/core/utils.js","webpack:///./node_modules/lodash/_mapCacheClear.js","webpack:///./node_modules/lodash/_baseGetAllKeys.js","webpack:///./node_modules/vuetify/lib/services/goto/easing-patterns.js","webpack:///./node_modules/vuetify/lib/services/goto/util.js","webpack:///./node_modules/vuetify/lib/services/goto/index.js","webpack:///./node_modules/vuetify/lib/mixins/binds-attrs/index.js","webpack:///./node_modules/lodash/_Stack.js","webpack:///./node_modules/lodash/_hasUnicodeWord.js","webpack:///./node_modules/lodash/_setCacheAdd.js","webpack:///./node_modules/core-js/modules/_set-to-string-tag.js","webpack:///./node_modules/lodash/_basePullAt.js","webpack:///./node_modules/@feathersjs/commons/lib/utils.js","webpack:///./node_modules/lodash/_stackGet.js","webpack:///./node_modules/socket.io-client/lib/index.js","webpack:///./node_modules/lodash/_arrayEach.js","webpack:///./node_modules/vuetify/lib/util/helpers.js","webpack:///./node_modules/lodash/upperFirst.js","webpack:///./node_modules/vuetify/lib/components/VAvatar/VAvatar.js","webpack:///./node_modules/vuetify/lib/components/VList/VListItemAvatar.js","webpack:///./node_modules/lodash/_parent.js","webpack:///./node_modules/vuetify/lib/components/VBtn/VBtn.js","webpack:///./node_modules/core-js/modules/_core.js","webpack:///./node_modules/base64-arraybuffer/lib/base64-arraybuffer.js","webpack:///./node_modules/core-js/modules/_same-value.js","webpack:///./node_modules/core-js/modules/es6.string.anchor.js","webpack:///./node_modules/core-js/modules/_iterators.js","webpack:///./node_modules/vuetify/lib/mixins/comparable/index.js","webpack:///./node_modules/lodash/_apply.js","webpack:///./node_modules/lodash/hasIn.js","webpack:///./node_modules/vuetify/lib/components/VCounter/VCounter.js","webpack:///./node_modules/vuetify/lib/components/VCounter/index.js","webpack:///./node_modules/vuetify/lib/mixins/intersectable/index.js","webpack:///./node_modules/vuetify/lib/components/VTextField/VTextField.js","webpack:///./node_modules/core-js/modules/_object-dp.js","webpack:///./node_modules/lodash/_baseAssignValue.js","webpack:///./node_modules/vuetify/lib/components/VList/VList.js","webpack:///./node_modules/@feathersjs/adapter-commons/lib/service.js","webpack:///./node_modules/lodash/_basePickBy.js","webpack:///./node_modules/core-js/modules/es6.symbol.js","webpack:///./node_modules/lodash/_safeGet.js","webpack:///./node_modules/@feathersjs/authentication-client/lib/index.js","webpack:///./node_modules/core-js/modules/_set-proto.js","webpack:///./node_modules/vue-router/dist/vue-router.esm.js","webpack:///./node_modules/serialize-error/index.js","webpack:///./node_modules/vue-tel-input-vuetify/lib/vue-tel-input-vuetify.vue?7ba5","webpack:///./node_modules/qrcode/lib/core/reed-solomon-encoder.js","webpack:///./node_modules/lodash/_baseTrim.js","webpack:///./node_modules/vuetify/lib/util/color/transformSRGB.js","webpack:///./node_modules/lodash/_arrayIncludes.js","webpack:///./node_modules/vuetify/lib/components/VSheet/VSheet.js","webpack:///./node_modules/lodash/toPlainObject.js","webpack:///./node_modules/vuetify/lib/components/VProgressLinear/VProgressLinear.js","webpack:///./node_modules/lodash/_copyObject.js","webpack:///./node_modules/vuetify/lib/components/VDataTable/mixins/header.js","webpack:///./node_modules/vuetify/lib/components/VDataTable/VDataTableHeaderMobile.js","webpack:///./node_modules/vuetify/lib/components/VDataTable/VDataTableHeaderDesktop.js","webpack:///./node_modules/vuetify/lib/util/dedupeModelListeners.js","webpack:///./node_modules/vuetify/lib/util/rebuildFunctionalSlots.js","webpack:///./node_modules/vuetify/lib/components/VDataTable/VDataTableHeader.js","webpack:///./node_modules/vuetify/lib/components/VDataTable/Row.js","webpack:///./node_modules/vuetify/lib/components/VDataTable/RowGroup.js","webpack:///./node_modules/vuetify/lib/components/VDataTable/MobileRow.js","webpack:///./node_modules/vuetify/lib/components/VDataTable/VDataTable.js","webpack:///./node_modules/lodash/escapeRegExp.js","webpack:///./node_modules/core-js/modules/_object-gopn.js","webpack:///./node_modules/vuetify/lib/directives/intersect/index.js","webpack:///./node_modules/to-array/index.js","webpack:///./node_modules/ieee754/index.js","webpack:///./node_modules/lodash/_overArg.js","webpack:///./node_modules/three/examples/jsm/controls/TrackballControls.js","webpack:///./node_modules/qrcode/lib/core/finder-pattern.js","webpack:///./node_modules/lodash/_mapCacheDelete.js","webpack:///./node_modules/engine.io-client/lib/index.js","webpack:///./node_modules/lodash/_createBaseEach.js","webpack:///./node_modules/lodash/isFunction.js","webpack:///./node_modules/qrcode/lib/core/format-info.js","webpack:///./node_modules/engine.io-client/node_modules/debug/src/debug.js","webpack:///./node_modules/lodash/eq.js","webpack:///./node_modules/lodash/_baseIsMatch.js","webpack:///./node_modules/regenerator-runtime/runtime.js","webpack:///./node_modules/lodash/_baseMap.js","webpack:///./node_modules/lodash/uniqueId.js","webpack:///./node_modules/lodash/keysIn.js","webpack:///./node_modules/lodash/_createBaseFor.js","webpack:///./node_modules/lodash/_nodeUtil.js","webpack:///./node_modules/vuetify/lib/components/VCard/index.js","webpack:///./node_modules/lodash/_isIterateeCall.js","webpack:///./node_modules/lodash/get.js","webpack:///./node_modules/core-js/modules/_ctx.js","webpack:///./node_modules/jwt-decode/lib/atob.js","webpack:///./node_modules/core-js/modules/_add-to-unscopables.js","webpack:///./node_modules/core-js/modules/es6.string.big.js","webpack:///./node_modules/vuetify/lib/components/VIcon/index.js","webpack:///./node_modules/vuetify/lib/mixins/bootable/index.js","webpack:///./node_modules/qrcode/lib/core/alphanumeric-data.js","webpack:///./node_modules/core-js/modules/_to-length.js","webpack:///./node_modules/core-js/modules/_descriptors.js","webpack:///./node_modules/dayjs/locale/en.js","webpack:///./node_modules/feathers-vuex/dist/FeathersVuexFind.js","webpack:///./node_modules/feathers-vuex/dist/FeathersVuexGet.js","webpack:///./node_modules/feathers-vuex/dist/FeathersVuexFormWrapper.js","webpack:///./node_modules/feathers-vuex/dist/FeathersVuexInputWrapper.js","webpack:///./node_modules/feathers-vuex/dist/FeathersVuexPagination.js","webpack:///./node_modules/feathers-vuex/dist/service-module/global-clients.js","webpack:///./node_modules/feathers-vuex/dist/service-module/make-base-model.js","webpack:///./node_modules/feathers-vuex/dist/service-module/service-module.state.js","webpack:///./node_modules/feathers-vuex/dist/service-module/service-module.getters.js","webpack:///./node_modules/feathers-vuex/dist/service-module/service-module.mutations.js","webpack:///./node_modules/feathers-vuex/dist/service-module/service-module.actions.js","webpack:///./node_modules/feathers-vuex/dist/service-module/make-service-module.js","webpack:///./node_modules/feathers-vuex/dist/service-module/service-module.events.js","webpack:///./node_modules/feathers-vuex/dist/service-module/make-service-plugin.js","webpack:///./node_modules/feathers-vuex/dist/auth-module/auth-module.state.js","webpack:///./node_modules/feathers-vuex/dist/auth-module/auth-module.getters.js","webpack:///./node_modules/feathers-vuex/dist/auth-module/auth-module.mutations.js","webpack:///./node_modules/feathers-vuex/dist/auth-module/auth-module.actions.js","webpack:///./node_modules/feathers-vuex/dist/auth-module/make-auth-plugin.js","webpack:///./node_modules/feathers-vuex/dist/useFind.js","webpack:///./node_modules/feathers-vuex/dist/FeathersVuexCount.js","webpack:///./node_modules/feathers-vuex/dist/vue-plugin/vue-plugin.js","webpack:///./node_modules/feathers-vuex/dist/index.js","webpack:///./node_modules/lodash/_Symbol.js","webpack:///./node_modules/lodash/mapValues.js","webpack:///./node_modules/vuetify/lib/components/VCheckbox/VSimpleCheckbox.js","webpack:///./node_modules/core-js/modules/es6.string.fontsize.js","webpack:///./node_modules/@feathersjs/commons/lib/index.js","webpack:///./node_modules/lodash/_getSymbolsIn.js","webpack:///./node_modules/engine.io-parser/lib/utf8.js","webpack:///./node_modules/lodash/_arrayAggregator.js","webpack:///./node_modules/vuetify/lib/mixins/roundable/index.js","webpack:///./node_modules/socket.io-parser/node_modules/isarray/index.js","webpack:///./node_modules/core-js/modules/_user-agent.js","webpack:///./node_modules/vuetify/lib/directives/click-outside/index.js","webpack:///./node_modules/@shopify/address/build/esm/utilities.mjs","webpack:///./node_modules/@shopify/address/build/esm/graphqlQuery.mjs","webpack:///./node_modules/@shopify/address/build/esm/loader.mjs","webpack:///./node_modules/@shopify/address/build/esm/AddressFormatter.mjs","webpack:///./node_modules/lodash/_equalArrays.js","webpack:///./node_modules/lodash/_cloneSymbol.js","webpack:///./node_modules/@babel/runtime/regenerator/index.js","webpack:///./node_modules/vuetify/lib/mixins/proxyable/index.js","webpack:///./node_modules/lodash/_baseSetToString.js","webpack:///./node_modules/dayjs/locale/zh-cn.js","webpack:///./node_modules/core-js/modules/es6.regexp.replace.js","webpack:///./node_modules/vuetify/lib/components/VGrid/grid.js","webpack:///./node_modules/vuetify/lib/components/VGrid/VContainer.js","webpack:///./node_modules/lodash/_mapCacheHas.js","webpack:///./node_modules/core-js/modules/_new-promise-capability.js","webpack:///./node_modules/vuetify/lib/components/VBtnToggle/VBtnToggle.js","webpack:///./node_modules/awesome-phonenumber/index.js","webpack:///./node_modules/vuetify/lib/components/VOverlay/VOverlay.js","webpack:///./node_modules/vuetify/lib/components/VTextarea/VTextarea.js","webpack:///./node_modules/lodash/uniqBy.js","webpack:///./node_modules/lodash/_deburrLetter.js","webpack:///./node_modules/vue-i18n/dist/vue-i18n.esm.js","webpack:///./node_modules/lodash/_getAllKeys.js","webpack:///./node_modules/vuetify/lib/mixins/colorable/index.js","webpack:///./node_modules/qrcode/lib/core/qrcode.js","webpack:///./node_modules/vuetify/lib/components/VTabs/VTabsItems.js","webpack:///./node_modules/core-js/modules/_is-regexp.js","webpack:///./node_modules/lodash/_hasUnicode.js","webpack:///./node_modules/lodash/_setToArray.js","webpack:///./node_modules/core-js/modules/es7.symbol.async-iterator.js","webpack:///./node_modules/core-js/modules/web.dom.iterable.js","webpack:///./node_modules/vuetify/lib/components/VCheckbox/VCheckbox.js","webpack:///./node_modules/vuetify/lib/components/VResponsive/VResponsive.js","webpack:///./node_modules/vuetify/lib/components/VResponsive/index.js","webpack:///./node_modules/vuetify/lib/components/VImg/VImg.js","webpack:///./node_modules/@feathersjs/adapter-commons/lib/filter-query.js","webpack:///./node_modules/vuetify/lib/mixins/sizeable/index.js","webpack:///./node_modules/vuetify/lib/components/VBtn/index.js","webpack:///./node_modules/lodash/debounce.js","webpack:///./node_modules/lodash/_baseUnary.js","webpack:///./node_modules/vuetify/lib/components/VCard/VCard.js","webpack:///./node_modules/core-js/modules/es6.regexp.exec.js","webpack:///./node_modules/lodash/_equalObjects.js","webpack:///./node_modules/lodash/_createCompounder.js","webpack:///./node_modules/lodash/isLength.js","webpack:///./node_modules/lodash/_baseIntersection.js","webpack:///./node_modules/@feathersjs/feathers/lib/index.js","webpack:///./node_modules/lodash/toNumber.js","webpack:///./node_modules/lodash/_listCacheGet.js","webpack:///./node_modules/core-js/modules/es6.string.link.js","webpack:///./node_modules/feathers-vuex/dist/service-module/global-models.js","webpack:///./node_modules/lodash/_DataView.js","webpack:///./node_modules/buffer/index.js","webpack:///./node_modules/vuetify/lib/components/VSwitch/VSwitch.js","webpack:///./node_modules/lodash/_assignMergeValue.js","webpack:///./node_modules/lodash/_charsStartIndex.js","webpack:///./node_modules/vuetify/lib/components/VDivider/index.js","webpack:///./node_modules/socket.io-parser/node_modules/ms/index.js","webpack:///./node_modules/vuetify/lib/mixins/dependent/index.js","webpack:///./node_modules/@feathersjs/feathers/lib/application.js","webpack:///./node_modules/lodash/clone.js","webpack:///./node_modules/vuetify/lib/components/VSelect/VSelectList.js","webpack:///./node_modules/vuetify/lib/mixins/filterable/index.js","webpack:///./node_modules/vuetify/lib/components/VSelect/VSelect.js","webpack:///./node_modules/core-js/modules/es7.object.lookup-getter.js","webpack:///./node_modules/vuetify/lib/components/VLabel/VLabel.js","webpack:///./node_modules/vuetify/lib/components/VLabel/index.js","webpack:///./node_modules/lodash/_baseIteratee.js","webpack:///./node_modules/lodash/camelCase.js","webpack:///./node_modules/lodash/_hashGet.js","webpack:///./node_modules/qrcode/lib/core/mode.js","webpack:///./node_modules/core-js/modules/_promise-resolve.js","webpack:///./node_modules/lodash/noop.js","webpack:///./node_modules/core-js/modules/_defined.js","webpack:///./node_modules/qrcode/lib/core/segments.js","webpack:///./node_modules/lodash/remove.js","webpack:///./node_modules/lodash/_baseIsEqual.js","webpack:///./node_modules/lodash/_isIndex.js","webpack:///./node_modules/@feathersjs/authentication-client/lib/core.js","webpack:///./node_modules/lodash/_setToString.js","webpack:///./node_modules/lodash/compact.js","webpack:///./node_modules/lodash/_initCloneByTag.js","webpack:///./node_modules/lodash/_castSlice.js","webpack:///./node_modules/@feathersjs/authentication-client/lib/hooks/populate-header.js","webpack:///./node_modules/core-js/modules/_array-includes.js","webpack:///./node_modules/vuetify/lib/components/VDataIterator/VDataIterator.js","webpack:///./node_modules/vuetify/lib/components/VMessages/VMessages.js","webpack:///./node_modules/vuetify/lib/components/VMessages/index.js","webpack:///./node_modules/vuetify/lib/components/VInput/VInput.js","webpack:///./node_modules/vuetify/lib/components/VInput/index.js","webpack:///./node_modules/vuetify/lib/directives/touch/index.js","webpack:///./node_modules/lodash/_baseIsSet.js","webpack:///./node_modules/lodash/_cacheHas.js","webpack:///./node_modules/core-js/modules/_object-forced-pam.js","webpack:///./node_modules/vuetify/lib/components/VTabs/VTabItem.js","webpack:///./node_modules/core-js/modules/_ie8-dom-define.js","webpack:///./node_modules/lodash/_flatRest.js","webpack:///./node_modules/lodash/sortBy.js","webpack:///./node_modules/socket.io-client/node_modules/debug/src/browser.js","webpack:///./node_modules/vuetify/lib/components/VExpansionPanel/VExpansionPanelHeader.js","webpack:///./node_modules/lodash/_Set.js","webpack:///./node_modules/lodash/_initCloneArray.js","webpack:///./node_modules/qrcode/lib/core/version.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/lodash/_cloneTypedArray.js","webpack:///./node_modules/vuetify/lib/mixins/picker-button/index.js","webpack:///./node_modules/vuetify/lib/components/VDatePicker/util/pad.js","webpack:///./node_modules/vuetify/lib/components/VTimePicker/SelectingTimes.js","webpack:///./node_modules/vuetify/lib/components/VTimePicker/VTimePickerTitle.js","webpack:///./node_modules/vuetify/lib/components/VTimePicker/VTimePickerClock.js","webpack:///./node_modules/vuetify/lib/components/VPicker/VPicker.js","webpack:///./node_modules/vuetify/lib/components/VPicker/index.js","webpack:///./node_modules/vuetify/lib/mixins/picker/index.js","webpack:///./node_modules/vuetify/lib/components/VTimePicker/VTimePicker.js","webpack:///./node_modules/vuetify/lib/mixins/elevatable/index.js","webpack:///./node_modules/has-cors/index.js","webpack:///./node_modules/awesome-phonenumber/lib/index.js","webpack:///./node_modules/core-js/modules/_uid.js","webpack:///./node_modules/arraybuffer.slice/index.js","webpack:///./node_modules/core-js/modules/es6.array.iterator.js","webpack:///./node_modules/lodash/_compareAscending.js","webpack:///./node_modules/lodash/_assocIndexOf.js","webpack:///./node_modules/core-js/modules/_an-object.js","webpack:///./node_modules/vuetify/lib/components/VChip/VChip.js","webpack:///./node_modules/lodash/isMap.js","webpack:///./node_modules/socket.io-client/lib/url.js","webpack:///./node_modules/after/index.js","webpack:///./node_modules/vuetify/lib/components/VExpansionPanel/VExpansionPanel.js","webpack:///./node_modules/lodash/identity.js","webpack:///./node_modules/core-js/modules/_object-keys-internal.js","webpack:///./node_modules/vuetify/lib/components/VDivider/VDivider.js","webpack:///./node_modules/lodash/_baseToString.js","webpack:///./node_modules/vuetify/lib/components/VHover/VHover.js","webpack:///./node_modules/lodash/_stackSet.js","webpack:///./node_modules/qrcode/lib/browser.js","webpack:///./node_modules/lodash/_unicodeToArray.js","webpack:///./node_modules/core-js/modules/es6.string.italics.js","webpack:///./node_modules/vuetify/lib/mixins/ssr-bootable/index.js","webpack:///./node_modules/lodash/intersection.js","webpack:///./node_modules/lodash/_createCaseFirst.js","webpack:///./node_modules/core-js/modules/es6.string.fixed.js","webpack:///./node_modules/vue-tel-input-vuetify/lib/all-countries.js","webpack:///./node_modules/whatwg-fetch/fetch.js","webpack:///./node_modules/vue-tel-input-vuetify/lib/utils.js","webpack:///./node_modules/lodash/stubArray.js","webpack:///./node_modules/engine.io-client/lib/transports/polling-xhr.js","webpack:///./node_modules/lodash/isArguments.js","webpack:///./node_modules/core-js/modules/_is-object.js","webpack:///./node_modules/lodash/_baseSortBy.js","webpack:///./node_modules/core-js/modules/_enum-keys.js","webpack:///./node_modules/core-js/modules/_iter-step.js","webpack:///./node_modules/util/support/isBufferBrowser.js","webpack:///./node_modules/lodash/_SetCache.js","webpack:///./node_modules/qrcode/lib/core/alignment-pattern.js","webpack:///./node_modules/blob/index.js","webpack:///./node_modules/lodash/isSet.js","webpack:///./node_modules/socket.io-client/lib/on.js","webpack:///./node_modules/core-js/modules/_a-function.js","webpack:///./node_modules/engine.io-client/lib/globalThis.browser.js","webpack:///./node_modules/lodash/_baseIsNaN.js","webpack:///./node_modules/vuetify/lib/util/console.js","webpack:///./node_modules/vuetify/lib/util/mergeData.js","webpack:///./node_modules/lodash/_coreJsData.js","webpack:///./node_modules/vuetify/lib/components/VList/VListItem.js","webpack:///./node_modules/engine.io-client/lib/socket.js","webpack:///./node_modules/core-js/modules/es6.object.is.js","webpack:///./node_modules/lodash/_setCacheHas.js","webpack:///./node_modules/vuetify/lib/directives/resize/index.js","webpack:///./node_modules/lodash/_toSource.js","webpack:///./node_modules/debug/src/common.js","webpack:///./node_modules/lodash/isArrayLikeObject.js","webpack:///./node_modules/qrcode/lib/core/numeric-data.js","webpack:///./node_modules/vuetify/lib/util/dom.js","webpack:///./node_modules/lodash/_basePropertyOf.js","webpack:///./node_modules/path-browserify/index.js","webpack:///./node_modules/lodash/_customDefaultsMerge.js","webpack:///./node_modules/vuetify/lib/components/VSubheader/VSubheader.js","webpack:///./node_modules/lodash/_customOmitClone.js","webpack:///./node_modules/core-js/modules/_enum-bug-keys.js","webpack:///./node_modules/lodash/_Hash.js","webpack:///./node_modules/lodash/isString.js","webpack:///./node_modules/lodash/_hasPath.js","webpack:///./node_modules/lodash/_castPath.js","webpack:///./node_modules/@feathersjs/commons/lib/hooks.js","webpack:///./node_modules/lodash/memoize.js","webpack:///./node_modules/isarray/index.js","webpack:///./node_modules/lodash/_basePropertyDeep.js","webpack:///./node_modules/vuetify/lib/components/VMenu/VMenu.js","webpack:///./node_modules/@feathersjs/transport-commons/client.js","webpack:///./node_modules/socket.io-client/node_modules/ms/index.js","webpack:///./node_modules/vuetify/lib/mixins/mobile/index.js","webpack:///./node_modules/socket.io-parser/node_modules/debug/src/browser.js","webpack:///./node_modules/vuetify/lib/mixins/returnable/index.js","webpack:///./node_modules/@vue/composition-api/dist/vue-composition-api.umd.js","webpack:///./node_modules/lodash/_cloneBuffer.js","webpack:///./node_modules/vuetify/lib/mixins/overlayable/index.js","webpack:///./node_modules/has-binary2/node_modules/isarray/index.js","webpack:///./node_modules/lodash/capitalize.js","webpack:///./node_modules/vuetify/src/locale/fr.ts","webpack:///./node_modules/lodash/words.js","webpack:///./node_modules/lodash/_isPrototype.js","webpack:///./node_modules/core-js/modules/_species-constructor.js","webpack:///./node_modules/uuid/dist/esm-browser/rng.js","webpack:///./node_modules/uuid/dist/esm-browser/regex.js","webpack:///./node_modules/uuid/dist/esm-browser/validate.js","webpack:///./node_modules/uuid/dist/esm-browser/stringify.js","webpack:///./node_modules/uuid/dist/esm-browser/v4.js","webpack:///./node_modules/lodash/keys.js","webpack:///./node_modules/lodash/_nativeKeysIn.js","webpack:///./node_modules/lodash/_mapToArray.js","webpack:///./node_modules/core-js/modules/es6.number.is-nan.js","webpack:///./node_modules/indexof/index.js","webpack:///./node_modules/inflection/lib/inflection.js","webpack:///./node_modules/lodash/_baseProperty.js","webpack:///./node_modules/@feathersjs/authentication-client/lib/hooks/index.js","webpack:///./node_modules/lodash/_stackClear.js","webpack:///./node_modules/@feathersjs/errors/lib/index.js","webpack:///./node_modules/vuetify/lib/mixins/toggleable/index.js","webpack:///./node_modules/vuetify/lib/install.js","webpack:///./node_modules/vuetify/lib/locale/en.js","webpack:///./node_modules/vuetify/lib/presets/default/index.js","webpack:///./node_modules/vuetify/lib/services/presets/index.js","webpack:///./node_modules/vuetify/lib/services/application/index.js","webpack:///./node_modules/vuetify/lib/services/breakpoint/index.js","webpack:///./node_modules/vuetify/lib/services/icons/presets/mdi-svg.js","webpack:///./node_modules/vuetify/lib/services/icons/presets/md.js","webpack:///./node_modules/vuetify/lib/services/icons/presets/mdi.js","webpack:///./node_modules/vuetify/lib/services/icons/presets/fa.js","webpack:///./node_modules/vuetify/lib/services/icons/presets/fa4.js","webpack:///./node_modules/vuetify/lib/services/icons/presets/fa-svg.js","webpack:///./node_modules/vuetify/lib/services/icons/presets/index.js","webpack:///./node_modules/vuetify/lib/services/icons/index.js","webpack:///./node_modules/vuetify/lib/services/lang/index.js","webpack:///./node_modules/vuetify/lib/util/color/transformCIELAB.js","webpack:///./node_modules/vuetify/lib/services/theme/utils.js","webpack:///./node_modules/vuetify/lib/services/theme/index.js","webpack:///./node_modules/vuetify/lib/framework.js","webpack:///./node_modules/core-js/modules/es6.string.small.js","webpack:///./node_modules/@feathersjs/transport-commons/lib/client.js","webpack:///./node_modules/lodash/_shortOut.js","webpack:///./node_modules/vuetify/lib/mixins/transitionable/index.js","webpack:///./node_modules/vuetify/lib/components/VDataIterator/VDataFooter.js","webpack:///./node_modules/lodash/_toKey.js","webpack:///./node_modules/lodash/_unicodeWords.js","webpack:///./node_modules/vuetify/lib/mixins/menuable/index.js","webpack:///./node_modules/lodash/_isKey.js","webpack:///./node_modules/vuetify/lib/components/VWindow/VWindow.js","webpack:///./node_modules/vuetify/lib/components/VMain/VMain.js","webpack:///./node_modules/fast-json-stable-stringify/index.js","webpack:///./node_modules/vuetify/lib/components/VNavigationDrawer/VNavigationDrawer.js","webpack:///./node_modules/@feathersjs/adapter-commons/lib/index.js","webpack:///./node_modules/lodash/_cloneArrayBuffer.js","webpack:///./node_modules/lodash/_baseMerge.js","webpack:///./node_modules/socket.io-parser/is-buffer.js","webpack:///./node_modules/vuetify/lib/directives/scroll/index.js","webpack:///./node_modules/lodash/property.js","webpack:///./node_modules/lodash/_initCloneObject.js","webpack:///./node_modules/core-js/modules/_function-to-string.js","webpack:///./node_modules/core-js/modules/es6.string.blink.js","webpack:///./node_modules/events/events.js","webpack:///./node_modules/core-js/modules/_html.js","webpack:///./node_modules/lodash/_listCacheHas.js","webpack:///./node_modules/core-js/modules/es6.number.is-finite.js","webpack:///./node_modules/vuetify/lib/mixins/selectable/index.js","webpack:///./node_modules/vuetify/lib/components/VSlideGroup/VSlideGroup.js","webpack:///./node_modules/vuetify/lib/components/VTabs/VTabsBar.js","webpack:///./node_modules/vuetify/lib/components/VTabs/VTabsSlider.js","webpack:///./node_modules/vuetify/lib/components/VTabs/VTabs.js","webpack:///./node_modules/vuetify/lib/mixins/positionable/index.js","webpack:///./node_modules/core-js/modules/es7.object.define-setter.js","webpack:///./node_modules/lodash/isSymbol.js","webpack:///./node_modules/@feathersjs/adapter-commons/lib/sort.js","webpack:///./node_modules/vuetify/lib/services/service/index.js"],"names":["Symbol","objectProto","Object","prototype","hasOwnProperty","nativeObjectToString","toString","symToStringTag","toStringTag","undefined","getRawTag","value","isOwn","call","tag","unmasked","e","result","module","exports","encodeUtf8","Mode","ByteData","data","this","mode","BYTE","Uint8Array","getBitsLength","length","getLength","write","bitBuffer","i","l","put","hasCORS","globalThis","opts","xdomain","xscheme","enablesXDR","XMLHttpRequest","XDomainRequest","concat","join","LIBRARY","$export","redefine","hide","Iterators","$iterCreate","setToStringTag","getPrototypeOf","ITERATOR","BUGGY","keys","FF_ITERATOR","KEYS","VALUES","returnThis","Base","NAME","Constructor","next","DEFAULT","IS_SET","FORCED","methods","key","IteratorPrototype","getMethod","kind","proto","TAG","DEF_VALUES","VALUES_BUG","$native","$default","$entries","$anyNative","entries","name","values","P","F","prev","alphabet","split","map","seed","encode","num","encoded","Math","floor","decode","str","decoded","charAt","yeast","now","Date","toInteger","defined","TO_STRING","that","pos","a","b","s","String","charCodeAt","slice","at","S","index","unicode","extend","expansionPanels","props","accordion","Boolean","disabled","flat","hover","focusable","inset","popout","readonly","tile","computed","options","classes","$attrs","Array","isArray","item","getValue","nextValue","isActive","toggleMethod","nextIsActive","isPrototype","nativeKeys","baseKeys","object","push","numeric","alphanumeric","kanji","replace","byte","KANJI","RegExp","BYTE_KANJI","NUMERIC","ALPHANUMERIC","TEST_KANJI","TEST_NUMERIC","TEST_ALPHANUMERIC","testKanji","test","testNumeric","testAlphanumeric","base64_url_decode","InvalidTokenError","message","Error","token","header","JSON","parse","isArguments","spreadableSymbol","isConcatSpreadable","isFlattenable","baseClone","CLONE_DEEP_FLAG","CLONE_SYMBOLS_FLAG","cloneDeep","mergeTransitions","dest","transitions","createSimpleTransition","origin","functional","group","type","default","hideOnLeave","leaveAbsolute","h","context","on","el","style","transformOrigin","webkitTransformOrigin","leave","offsetTop","offsetLeft","offsetWidth","offsetHeight","_transitionInitialStyles","position","top","left","width","height","afterLeave","setProperty","mergeData","children","createJavascriptTransition","functions","sizeProperty","x","offsetProperty","_parent","parentNode","_initialStyle","transition","overflow","initialStyle","offset","expandedParentClass","classList","add","requestAnimationFrame","afterEnter","resetStyles","enterCancelled","leaveCancelled","remove","size","VFabTransition","VFadeTransition","VScaleTransition","VSlideXTransition","VExpandTransition","VExpandXTransition","border","val","includes","closeLabel","coloredBorder","dense","dismissible","closeIcon","icon","outlined","prominent","text","staticClass","class","setBackgroundColor","computedColor","$createElement","color","iconColor","small","attrs","$vuetify","lang","t","click","computedIcon","hasText","hasColoredIcon","isDark","$slots","prepend","__cachedIcon","genContent","__cachedBorder","append","$scopedSlots","close","toggle","__cachedDismissible","role","listeners$","styles","directives","setColor","setTextColor","genWrapper","render","genAlert","stubFalse","arrayPush","array","BrowserWebSocket","NodeWebSocket","Transport","parser","parseqs","inherit","debug","WebSocket","self","MozWebSocket","window","WebSocketImpl","WS","forceBase64","supportsBinary","perMessageDeflate","usingBrowserWebSocket","forceNode","protocols","doOpen","check","uri","isReactNative","agent","pfx","passphrase","cert","ca","ciphers","rejectUnauthorized","extraHeaders","headers","localAddress","ws","err","emit","binaryType","supports","binary","addEventListeners","onopen","onOpen","onclose","onClose","onmessage","ev","onData","onerror","onError","packets","writable","total","packet","encodePacket","compress","len","Buffer","byteLength","threshold","send","done","setTimeout","doClose","query","schema","secure","port","Number","timestampRequests","timestampParam","b64","ipv6","hostname","indexOf","path","isObject","isStrictComparable","Polling","hasXHR2","xhr","responseType","poll","pause","onPause","readyState","polling","once","doPoll","callback","onPacket","decodePayload","socket","callbackfn","encodePayload","doWrite","sid","core","global","speciesConstructor","promiseResolve","R","onFinally","C","Promise","isFunction","then","strictIndexOf","fromIndex","JSONPPolling","callbacks","rNewline","rEscapedNewline","empty","___eio","msg","j","addEventListener","script","removeChild","form","iframe","document","createElement","async","src","insertAt","getElementsByTagName","insertBefore","head","body","appendChild","isUAgecko","navigator","userAgent","fn","area","id","iframeId","className","target","method","setAttribute","complete","initIframe","html","action","submit","attachEvent","onreadystatechange","onload","baseIsNative","getNative","Backoff","ms","min","max","factor","jitter","attempts","duration","pow","rand","random","deviation","reset","setMin","setMax","setJitter","anObject","ignoreCase","multiline","sticky","freeExports","nodeType","freeModule","moduleExports","root","nativeIsBuffer","isBuffer","ConsoleApiName","log","info","warn","error","display","api","args","_i","arguments","apply","catchUserErrors","errorMsg","console","bind","onMonitorErrorCollected","__spreadArray","to","from","pack","ar","debugMode","monitor","callMonitored","displayIfDebugEnabled","ONE_SECOND","ONE_MINUTE","ONE_KIBI_BYTE","ONE_MEBI_BYTE","throttle","wait","pendingExecutionWithParameters","pendingTimeoutId","needLeadingExecution","leading","needTrailingExecution","trailing","inWaitPeriod","throttled","parameters","cancel","clearTimeout","toAssign","forEach","source","noop","jsonStringify","replacer","space","stringify","restoreObjectPrototypeToJson","detachToJsonMethod","restoreArrayPrototypeToJson","restoreValuePrototypeToJson","restoreValueToJson","_a","objectToJson","toJSON","candidate","search","objectEntries","startsWith","endsWith","getGlobalObject","defineProperty","get","configurable","globalObject","_dd_temp_","emitter","event","listener","events","_b","capture","passive","wrappedListener","stop","removeEventListener","runOnReadyState","expectedReadyState","eventName","requestIdleCallback","id_1","cancelIdleCallback","cancelAnimationFrame","defineGlobal","existingGlobalVariable","q","newOnMonitorErrorCollected","newDebugMode","placeholder","parseInt","decimals","toFixed","arrayLike","Set","predicate","some","newObject","location","element","sanitizedHost","host","protocol","rawString","regex","matches","exec","suffix","lastChar","isLastCharSurrogatePair","correctedLength","selector","msMatchesSelector","WeakSet","set_1","hasAlreadyBeenSeen","has","destination","circularReferenceChecker","getTime","flags","merged_1","merged","sources","sources_1","list","CSS","escape","ch","asCodePoint","createContextManager","set","newContext","getContext","setContext","setContextProperty","property","removeContextProperty","clearContext","navigationStart","BUFFER_LIMIT","BoundedBuffer","buffer","splice","drain","relativeToClocks","relative","timeStamp","getCorrectedTimeStamp","relativeTime","correctedOrigin","dateNow","performance","getNavigationStart","round","addDuration","getTimeStamp","currentDrift","toServerDuration","timeStampNow","relativeNow","clocksNow","clocksOrigin","elapsed","start","end","getRelativeTime","timestamp","looksLikeRelativeTime","time","timing","getCurrentSiteCache","COOKIE_ACCESS_DELAY","setCookie","expireDelay","date","setTime","expires","toUTCString","sameSite","crossSite","domain","cookie","getCookie","deleteCookie","areCookiesAuthorized","testCookieName","testCookieValue","isCookieCorrectlySet","getCurrentSite","domainLevels","candidateDomain","pop","enabledExperimentalFeatures","SYNTHETICS_TEST_ID_COOKIE_NAME","SYNTHETICS_RESULT_ID_COOKIE_NAME","SYNTHETICS_INJECTS_RUM_COOKIE_NAME","willSyntheticsInjectRum","_DATADOG_SYNTHETICS_INJECTS_RUM","getSyntheticsTestId","_DATADOG_SYNTHETICS_PUBLIC_ID","getSyntheticsResultId","_DATADOG_SYNTHETICS_RESULT_ID","getEventBridge","eventBridgeGlobal","getEventBridgeGlobal","getAllowedWebViewHosts","eventType","canUseEventBridge","currentHost","bridge","allowedHost","DatadogEventBridge","updateExperimentalFeatures","enabledFeatures","filter","flag","isExperimentalFeatureEnabled","featureName","getExperimentalFeatures","stub","publicApi","version","onReady","enumerable","UNKNOWN_FUNCTION","computeStackTrace","ex","stack","stackProperty","tryToGetString","exString","line","stackFrame","parseChromeLine","parseChromeAnonymousLine","parseWinLine","parseGeckoLine","func","fileUrl","filePosition","CHROME_LINE_RE","CHROME_EVAL_RE","parts","isNative","isEval","submatch","column","url","CHROME_ANONYMOUS_FUNCTION_RE","WINJS_LINE_RE","GECKO_LINE_RE","GECKO_EVAL_RE","isURLSupported","ErrorSource","AGENT","CONSOLE","CUSTOM","LOGGER","NETWORK","SOURCE","REPORT","computeRawError","stackTrace","originalError","handlingStack","startClocks","nonErrorPrefix","handling","toStackTraceString","causes","flattenErrorCauses","formatErrorMessage","frame","createHandlingStack","formattedStack","internalFramesToSkip","parentSource","currentError","cause","sanitizeUser","newUser","user","checkUser","isValid","normalizeUrl","buildUrl","href","isValidUrl","getOrigin","getPathName","pathname","base","checkURLSupported","URL","doc","anchorElement","implementation","createHTMLDocument","baseElement","INTAKE_SITE_STAGING","INTAKE_SITE_US1","INTAKE_SITE_US1_FED","ENDPOINTS","logs","rum","sessionReplay","INTAKE_TRACKS","createEndpointBuilder","initConfiguration","endpointType","configurationTags","site","clientToken","domainParts","extension","baseUrl","proxyUrl","build","retry","tags","count","lastFailureStatus","encodeURIComponent","endpointUrl","buildIntakeUrl","TAG_SIZE_LIMIT","buildTags","configuration","env","service","datacenter","buildTag","FORBIDDEN_CHARACTERS","rawValue","valueSizeLimit","sanitizedValue","computeTransportConfiguration","endpointBuilders","computeEndpointBuilders","intakeEndpoints","builder","replicaConfiguration","computeReplicaConfiguration","isIntakeUrl","intakeEndpoint","replica","logsEndpointBuilder","rumEndpointBuilder","sessionReplayEndpointBuilder","replicaEndpointBuilders","applicationId","DefaultPrivacyLevel","ALLOW","MASK","MASK_USER_INPUT","validateAndBuildConfiguration","_c","sampleRate","telemetrySampleRate","telemetryConfigurationSampleRate","enableExperimentalFeatures","beforeSend","cookieOptions","buildCookieOptions","silentMultipleInit","batchBytesLimit","eventRateLimiterThreshold","maxTelemetryEventsPerPage","flushTimeout","batchMessagesLimit","messageBytesLimit","mustUseSecureCookie","useCrossSiteSessionCookie","trackSessionAcrossSubdomains","useSecureSessionCookie","serializeConfiguration","session_sample_rate","telemetry_sample_rate","telemetry_configuration_sample_rate","use_before_send","use_cross_site_session_cookie","use_secure_session_cookie","use_proxy","silent_multiple_init","track_session_across_subdomains","track_resources","trackResources","track_long_task","trackLongTasks","validateAndBuildRumConfiguration","_d","_e","sessionReplaySampleRate","premiumSampleRate","replaySampleRate","tracingSampleRate","allowedTracingOrigins","excludedActivityUrls","baseConfiguration","trackFrustrations","actionNameAttribute","oldPlansBehavior","trackInteractions","trackViewsManually","defaultPrivacyLevel","serializeRumConfiguration","baseSerializedConfiguration","premium_sample_rate","replay_sample_rate","session_replay_sample_rate","trace_sample_rate","action_name_attribute","use_allowed_tracing_origins","default_privacy_level","use_excluded_activity_urls","track_frustrations","track_views_manually","track_interactions","makeRumPublicApi","startRumImpl","recorderApi","ignoreInitIfSyntheticsWillInjectRum","isAlreadyInitialized","globalContextManager","userContextManager","getInternalContextStrategy","getInitConfigurationStrategy","bufferApiCalls","addTimingStrategy","startViewStrategy","addActionStrategy","commonContext","addErrorStrategy","providedError","addFeatureFlagEvaluationStrategy","initRum","overrideInitConfigurationForBridge","canHandleSession","canInitRum","rumPublicApi","addFeatureFlagEvaluation","beforeInitCalls","doStartRum","initialViewOptions","startRumResults","hasReplay","isRecording","startView","addAction","addError","addTiming","getInternalContext","onRumStart","lifeCycle","session","viewContexts","sanitizedOptions","init","addRumGlobalContext","setGlobalContextProperty","removeRumGlobalContext","removeGlobalContextProperty","getRumGlobalContext","getGlobalContext","setRumGlobalContext","setGlobalContext","clearGlobalContext","startTime","getInitConfiguration","setUser","getUser","setUserProperty","sanitizedProperty","removeUserProperty","removeUser","clearUser","startSessionReplayRecording","stopSessionReplayRecording","isLocalFile","Observable","onFirstSubscribe","observers","subscribe","f","_this","onLastUnsubscribe","unsubscribe","other","notify","observer","mergeObservables","observables","globalObservable","subscriptions","observable","subscription","createPageExitObservable","stopVisibilityChangeListener","visibilityState","reason","stopBeforeUnloadListener","onRawTelemetryEventCollected","TelemetryType","ALLOWED_FRAME_URLS","TELEMETRY_EXCLUDED_SITES","telemetryConfiguration","maxEventsPerPage","sentEventCount","telemetryEnabled","telemetryConfigurationEnabled","startTelemetry","telemetryService","contextProvider","toTelemetryEvent","_dd","format_version","telemetry","experimental_features","addTelemetryError","setContextProvider","provider","isTelemetryReplicationAllowed","addTelemetryDebug","addTelemetry","status","formatError","addTelemetryConfiguration","scrubCustomerFrames","allowedFrameUrl","createDOMMutationObservable","MutationObserver","getMutationObserverConstructor","observe","attributes","characterData","childList","subtree","disconnect","constructor","browserWindow","Zone","zoneSymbol","__symbol__","patchedInstance","originalInstance","FAKE_INITIAL_DOCUMENT","RESOURCE_TYPES","initiatorType","_","computeResourceKind","RESOURCE_TYPES_1","isType","areInOrder","numbers","isRequestKind","computePerformanceResourceDuration","entry","responseEnd","computePerformanceResourceDetails","validEntry","toValidEntry","fetchStart","redirectStart","redirectEnd","domainLookupStart","domainLookupEnd","connectStart","secureConnectionStart","connectEnd","requestStart","responseStart","details","download","formatTiming","first_byte","connect","ssl","dns","hasRedirection","redirect","computeSize","decodedBodySize","isAllowedRequestUrl","viewportObservable","viewport","INITIAL_DOCUMENT_OUTDATED_TRACE_ID_THRESHOLD","getDocumentTraceId","getDocumentTraceDataFromMeta","getDocumentTraceDataFromComment","traceTime","traceId","traceIdMeta","querySelector","traceTimeMeta","createDocumentTraceData","content","comment","findTraceComment","rawTraceTime","childNodes","getTraceCommentFromNode","node","isTextNode","isCommentNode","match","nodeName","supportPerformanceObject","supportPerformanceTimingEvent","entryType","PerformanceObserver","supportedEntryTypes","startPerformanceCollection","retrieveInitialDocumentResourceTiming","handleRumPerformanceEntries","performanceEntries_1","getEntries","handlePerformanceEntryList_1","mainEntries","experimentalEntries","buffered","mainObserver","entryTypes","clearResourceTimings","retrieveNavigationTiming","retrieveFirstInputTiming","forcedAttributes","getEntriesByType","navigationEntry","relativePerformanceTiming","computeRelativePerformanceTiming","sendFakeTiming","startTimeStamp","timingSent","removeEventListeners","evt","cancelable","processingStart","sendTimingIfPointerIsNotCancelled","sendTiming","delay","numberKey","timingElement","rumPerformanceEntries","rumAllowedPerformanceEntries","isIncompleteNavigation","isForbiddenResource","loadEventEnd","createEventRateLimiter","limit","onLimitReached","eventCount","allowNextEvent","isLimitReached","limitModification","modifiableFieldPaths","modifier","clone","originalValue","newValue","originalType","newType","current","field","isValidObjectContaining","fields","getSyntheticsContext","testId","resultId","test_id","result_id","injected","getCiTestContext","testExecutionId","Cypress","test_execution_id","initViewportObservable","createViewportObservable","updateDimension","getViewportDimension","visual","visualViewport","scale","innerWidth","innerHeight","getDisplayContext","viewportDimension","VIEW_EVENTS_MODIFIABLE_FIELD_PATHS","OTHER_EVENTS_MODIFIABLE_FIELD_PATHS","startRumAssembly","sessionManager","urlContexts","actionContexts","getCommonContext","reportError","eventRateLimiters","syntheticsContext","ciTestContext","rawRumEvent","domainContext","savedCommonContext","customerContext","viewContext","findView","urlContext","findUrl","findTrackedSession","actionId","findActionId","rumContext","drift","plan","browser_sdk_version","application","view","referrer","needToAssembleWithAction","synthetics","ci_test","serverRumEvent","has_replay","usr","shouldSend","rateLimitReached","MAX_NUMBER_OF_SELECTABLE_FOREGROUND_PERIODS","MAX_NUMBER_OF_STORED_FOREGROUND_PERIODS","foregroundPeriods","startForegroundContexts","hasFocus","addNewForegroundPeriod","stopForegroundTracking","trackFocus","stopBlurTracking","trackBlur","closeForegroundPeriod","isInForegroundAt","selectInForegroundPeriodsFor","currentForegroundPeriod","onFocusChange","isTrusted","onBlurChange","foregroundPeriod","eventStartTime","eventEndTime","filteredForegroundPeriods","earliestIndex","startDuration","endTime","endDuration","unshift","startInternalContext","application_id","session_id","user_action","xhrObservable","LifeCycle","eventCallbacks","SESSION_TIME_OUT_DELAY","SESSION_EXPIRATION_DELAY","END_OF_TIMES","Infinity","CLEAR_OLD_CONTEXTS_INTERVAL","ContextHistory","clearOldContextsInterval","setInterval","clearOldContexts","find","closeActive","latestEntry","findAll","clearInterval","oldTimeThreshold","VIEW_CONTEXT_TIME_OUT_DELAY","startViewContexts","viewContextHistory","buildViewContext","featureFlagEvaluations","endClocks","instrumentMethod","instrumentationFactory","original","instrumentation","instrumentationWrapper","instrumentMethodAndCallOriginal","before","after","fetchObservable","xhrContexts","WeakMap","initXhrObservable","createXhrObservable","stopInstrumentingStart","openXhr","stopInstrumentingSend","sendXhr","stopInstrumentingAbort","abortXhr","state","startContext","isAborted","hasBeenReported","stopInstrumentingOnReadyStateChange","DONE","onEnd","completeContext","initFetchObservable","createFetchObservable","fetch","originalFetch","input","responsePromise","afterSend","reportFetch","response","DOMException","code","ABORT_ERR","clearTracingIfNeeded","spanId","traceSampled","startTracer","traceFetch","injectHeadersIfTracingAllowed","tracingHeaders","Request","headers_1","Headers","traceXhr","setRequestHeader","inject","isTracingSupported","isAllowedUrl","TraceIdentifier","makeTracingHeaders","requestUrl","getCrypto","crypto","msCrypto","toDecimalString","getRandomValues","radix","high","readInt32","low","mod","nextRequestIndex","startRequestCollection","tracer","trackXhr","trackFetch","rawContext","requestIndex","getNextRequestIndex","trackEventCounts","eventCounts","errorCount","longTaskCount","resourceCount","actionCount","frustrationCount","frustration","PAGE_ACTIVITY_VALIDATION_DELAY","PAGE_ACTIVITY_END_DELAY","waitPageActivityEnd","domMutationObservable","pageActivityEndCallback","maxDuration","pageActivityObservable","createPageActivityObservable","doWaitPageActivityEnd","pageActivityEndTimeoutId","hasCompleted","validationTimeoutId","hadActivity","maxDurationTimeoutId","pageActivitySubscription","isBusy","lastChangeTime","firstRequestIndex","pendingRequestsCount","notifyPageActivity","isExcludedUrl","startEvent","request","stopTrackingWindowOpen","trackWindowOpen","MAX_DURATION_BETWEEN_CLICKS","MAX_DISTANCE_BETWEEN_CLICKS","createClickChain","firstClick","onFinalize","maxDurationBetweenClicksTimeout","bufferedClicks","appendClick","stopObservable","tryFinalize","dontAcceptMoreClick","every","isStopped","tryAppend","areEventsSimilar","first","second","mouseEventDistance","sqrt","clientX","clientY","isIE","documentMode","isChromium","chrome","DEFAULT_PROGRAMMATIC_ACTION_NAME_ATTRIBUTE","getActionNameFromElement","userProgrammaticAttribute","getActionNameFromElementProgrammatically","getActionNameFromElementForStrategies","priorityStrategies","fallbackStrategies","targetElement","programmaticAttribute","elementWithAttribute","supportsElementClosest","closest","hasAttribute","parentElement","getAttribute","truncate","normalizeWhitespace","trim","supportsLabelPropertyResult","supportsElementClosestResult","supportsLabelProperty","labels","getTextualContent","label","ownerDocument","querySelectorAll","htmlFor","labelledByAttribute","getElementById","MAX_PARENTS_TO_CONSIDER","strategies","recursionCounter","strategies_1","strategy","name_1","trimmedName","refElement","isContentEditable","text_1","innerText","removeTextFromElements","element_1","textToReplace","supportsInnerTextScriptAndStyleRemoval","textContent","HTMLInputElement","HTMLElement","supportScopeSelectorCache","STABLE_ATTRIBUTES","GLOBALLY_UNIQUE_SELECTOR_GETTERS","getStableAttributeSelector","getIDSelector","UNIQUE_AMONG_CHILDREN_SELECTOR_GETTERS","getClassSelector","getTagNameSelector","getSelectorFromElement","targetElementSelector","globallyUniqueSelector","findSelector","isSelectorUniqueGlobally","uniqueSelectorAmongChildren","isSelectorUniqueAmongSiblings","combineSelector","getPositionSelector","isGeneratedValue","tagName","getAttributeSelector","STABLE_ATTRIBUTES_1","attributeName","sibling","firstElementChild","elementIndex","nextElementSibling","selectorGetters","childSelector","selectorGetters_1","selectorGetter","elementSelector","fullSelector","supportScopeSelector","parent","child","listenActionEvents","selectionEmptyAtPointerDown","clickContext","onPointerDown","onClick","hasSelectionChanged","hasInputChanged","listeners","isSelectionEmpty","isMouseEventOnElement","clickEvent","userActivity_1","selection","getSelection","isCollapsed","Element","MIN_CLICKS_PER_SECOND_TO_CONSIDER_RAGE","computeFrustration","clicks","rageClick","addFrustration","isDead","hasError","isRage","getUserActivity","DEAD_CLICK_EXCLUDE_SELECTOR","hasPageActivity","CLICK_ACTION_MAX_DURATION","ACTION_CONTEXT_TIME_OUT_DELAY","trackClickActions","currentClickChain","history","stopClickChain","stopActionEventsListener","pointerDownEvent","processPointerDown","clickActionBase","processClick","appendClickToClickChain","rageClick_1","finalizeClicks","computeClickActionBase","newClick","stopWaitPageActivityEnd","pageActivityEndEvent","discard","validate","viewEndedSubscription","stopSubscription","rect","getBoundingClientRect","y","activityEndTime","historyEntry","eventCountsSubscription","frustrationTypes","newActivityEndTime","frustrationType","domEvents","clickAction","counts","startActionCollection","foregroundContexts","processAction","autoActionProperties","isAutoAction","loading_time","long_task","resource","actionEvent","inForeground","in_foreground","ERROR_TYPES_RE","startUnhandledErrorCollection","stopInstrumentingOnError","instrumentOnError","stopInstrumentingOnUnhandledRejection","instrumentUnhandledRejection","lineNo","columnNo","errorObj","location_1","groups","trackRuntimeError","errorObservable","consoleObservablesByApi","initConsoleObservable","apis","consoleObservables","createConsoleObservable","originalConsoleApi","params","buildConsoleLog","param","formatConsoleParameters","firstErrorParam","trackConsoleError","consoleError","trackFirstHiddenSingleton","RawReportType","intervention","deprecation","cspViolation","initReportObservable","createCspViolationReportObservable","reportTypes","createReportObservable","ReportingObserver","handleReports","reports","report","buildRawReportFromReport","types","handleCspViolation","buildRawReportFromCspViolation","subtype","buildStack","sourceFile","lineNumber","columnNumber","blockedURI","effectiveDirective","originalPolicy","trackReportError","startErrorCollection","doStartErrorCollection","processError","rawError","handling_stack","source_type","feature_flags","startLongTaskCollection","entries_1","longTaskAllowed","discarded","performanceEntry","matchRequestTiming","sameNameEntries","getEntriesByName","candidates","isBetween","errorMargin","startResourceCollection","processRequest","processResourceEntry","matchingTiming","correspondingTimingOverrides","computePerformanceEntryMetrics","tracingInfo","computeRequestTracingInfo","indexingInfo","computeIndexingInfo","resourceEvent","status_code","toPerformanceEntryRepresentation","requestInput","requestInit","entryMetrics","computeEntryTracingInfo","hasBeenTraced","span_id","trace_id","rule_psr","getRulePsr","resourceStart","resourceAllowed","trackFirstHidden","TIMING_MAXIMUM_DELAY","trackInitialViewTimings","timings","setTimings","newTimings","stopNavigationTracking","trackNavigationTimings","stopFCPTracking","trackFirstContentfulPaintTiming","firstContentfulPaint","stopLCPTracking","trackLargestContentfulPaintTiming","largestContentfulPaint","stopFIDTracking","trackFirstInputTimings","firstInputDelay","firstInputTime","domComplete","domContentLoaded","domContentLoadedEventEnd","domInteractive","loadEvent","firstByte","firstHidden","fcpEntry","firstInteractionTimestamp","stopEventListener","unsubscribeLifeCycle","lcpEntry","firstInputEntry","trackViewMetrics","scheduleViewUpdate","loadingType","viewStart","stopCLSTracking","viewMetrics","stopEventCountsTracking","newEventCounts","trackLoadingTime","newLoadingTime","loadingTime","stopLoadingTimeTracking","setLoadEvent","isLayoutShiftSupported","cumulativeLayoutShift","trackCumulativeLayoutShift","loadType","isWaitingForLoadEvent","isWaitingForActivityLoadingTime","loadingTimeCandidates","invokeCallbackIfAllCandidatesAreReceived","maxClsValue","slidingSessionWindow","hadRecentInput","update","shouldCreateNewWindow","THROTTLE_VIEW_UPDATE_PERIOD","SESSION_KEEP_ALIVE_INTERVAL","trackViews","locationChangeObservable","areViewsTrackedAutomatically","locationChangeSubscription","trackInitialView","stopInitialViewTracking","initialView","currentView","stopViewLifeCycle","startViewLifeCycle","newView","updateTimings","scheduleUpdate","trackViewChange","viewOptions","pageExitEvent","triggerUpdate","keepAliveInterval","renewViewOnLocationChange","oldLocation","newLocation","areDifferentLocation","initialLocation","customTimings","documentVersion","triggerViewUpdate","cancelScheduleViewUpdate","stopViewMetricsTracking","currentEnd","clocks","sanitizeTiming","sanitized","currentLocation","otherLocation","isHashAnAnchor","hash","getPathFromHash","correspondingId","substr","startViewCollection","processViewUpdate","replayStats","getReplayStats","viewEvent","document_version","replay_stats","cumulative_layout_shift","dom_complete","dom_content_loaded","dom_interactive","first_contentful_paint","first_input_delay","first_input_time","is_active","largest_contentful_paint","load_event","discardNegativeDuration","loading_type","time_spent","in_foreground_periods","custom_timings","ongoingOperations","SESSION_ENTRY_REGEXP","SESSION_ENTRY_SEPARATOR","SESSION_COOKIE_NAME","LOCK_RETRY_DELAY","MAX_NUMBER_OF_LOCK_RETRIES","bufferedOperations","withCookieLockAccess","operations","numberOfRetries","currentLock","currentSession","retrieveSession","isCookieLockEnabled","lock","retryLater","setSession","processedSession","process","persistSession","isExpiredState","currentNumberOfRetries","nextOperations","shift","clearSession","expire","toSessionString","sessionString","isValidSessionString","OLD_SESSION_COOKIE_NAME","OLD_RUM_COOKIE_NAME","OLD_LOGS_COOKIE_NAME","RUM_SESSION_KEY","LOGS_SESSION_KEY","tryOldCookiesMigration","oldSessionId","oldRumType","oldLogsType","startSessionStore","productKey","computeSessionState","renewObservable","expireObservable","watchSessionTimeoutId","watchSession","sessionCache","retrieveActiveSession","expandOrRenewSession","isTracked","cookieSession","synchronizedSession","synchronizeSession","expandOrRenewCookie","hasSessionInCache","renewSession","expandSession","isActiveSession","isSessionInCacheOutdated","expireSession","trackingType","created","getSession","VISIBILITY_CHECK_DELAY","SESSION_CONTEXT_TIMEOUT_DELAY","stopCallbacks","startSessionManager","sessionStore","sessionContextHistory","buildSessionContext","trackActivity","trackVisibility","findActiveSession","expandSessionWhenVisible","visibilityCheckInterval","startRumSessionManager","rawTrackingType","isTypeTracked","sessionReplayAllowed","startRumSessionManagerStub","hasValidRumSession","rumSessionType","HAS_MULTI_BYTES_CHARACTERS","Batch","pageExitObservable","pushOnlyBuffer","upsertBuffer","bufferBytesCount","bufferMessagesCount","flush","sendOnExit","flushPeriodically","addOrUpdate","upsert","sendFn","messages","bytesCount","computeBytesCount","TextEncoder","Blob","processedMessage","messageBytesCount","hasMessageFor","willReachedBytesLimitWith","isFull","removedMessage","MAX_ONGOING_BYTES_COUNT","MAX_ONGOING_REQUESTS","MAX_QUEUE_BYTES_COUNT","MAX_BACKOFF_TIME","INITIAL_BACKOFF_TIME","sendWithRetryStrategy","payload","sendStrategy","transportStatus","queuedPayloads","bandwidthMonitor","canHandle","onSuccess","retryQueuedPayloads","onFailure","enqueue","scheduleRetry","dequeue","currentBackoffTime","shouldRetryRequest","ongoingRequestCount","queueFullReported","previousQueue","newPayloadQueue","newRetryState","newBandwidthMonitor","queue","ongoingByteCount","createHttpRequest","endpointBuilder","bytesLimit","retryState","sendStrategyForRetry","onResponse","fetchKeepAliveStrategy","sendBeaconStrategy","canUseBeacon","sendBeacon","isQueued","reportBeaconError","sendXHR","hasReportedBeaconError","canUseKeepAlive","isKeepAliveSupported","keepalive","onLoadEnd","open","startRumBatch","telemetryEventObservable","batch","makeRumBatch","replicaBatch","primaryBatch","createRumBatch","withReplicaApplicationId","replicated","startRumEventBridge","URL_CONTEXT_TIME_OUT_DELAY","startUrlContexts","previousViewUrl","urlContextHistory","viewUrl","buildUrlContext","changeTime","createLocationChangeObservable","stopHistoryTracking","trackHistory","onLocationChange","stopHashTracking","trackHash","onHistoryChange","stopInstrumentingPushState","stopInstrumentingReplaceState","removeListener","onHashChange","startRum","startRumTelemetry","startRumEventCollection","internalContext","bridge_1","RecordType","FullSnapshot","IncrementalSnapshot","Meta","Focus","ViewEnd","VisualViewport","FrustrationRecord","NodeType","Document","DocumentType","Text","CDATA","IncrementalSource","Mutation","MouseMove","MouseInteraction","Scroll","ViewportResize","Input","TouchMove","MediaInteraction","StyleSheetRule","MouseInteractionType","MouseUp","MouseDown","Click","ContextMenu","DblClick","Blur","TouchStart","TouchEnd","MediaInteractionType","Play","Pause","NodePrivacyLevel","IGNORE","HIDDEN","PRIVACY_ATTR_NAME","PRIVACY_ATTR_VALUE_ALLOW","PRIVACY_ATTR_VALUE_MASK","PRIVACY_ATTR_VALUE_MASK_USER_INPUT","PRIVACY_ATTR_VALUE_HIDDEN","PRIVACY_CLASS_ALLOW","PRIVACY_CLASS_MASK","PRIVACY_CLASS_MASK_USER_INPUT","PRIVACY_CLASS_HIDDEN","CENSORED_STRING_MARK","CENSORED_IMG_MARK","FORM_PRIVATE_TAG_NAMES","INPUT","OUTPUT","TEXTAREA","SELECT","OPTION","DATALIST","OPTGROUP","MAX_ATTRIBUTE_VALUE_CHAR_LENGTH","TEXT_MASKING_CHAR","getNodePrivacyLevel","parentNodePrivacyLevel","selfNodePrivacyLevel","getNodeSelfPrivacyLevel","reducePrivacyLevel","childPrivacyLevel","isElement","privAttr","inputElement","autocomplete","contains","shouldIgnoreElement","shouldMaskNode","privacyLevel","isFormElement","ELEMENT_NODE","TEXT_NODE","censorText","getTextContent","textNode","ignoreWhiteSpace","parentTagName","nodePrivacyLevel","isStyle","isScript","relAttribute","getLowerCaseAttribute","nameAttribute","propertyAttribute","toLowerCase","hasSerializedNode","nodeAndAncestorsHaveSerializedNode","getSerializedNodeId","setSerializedNodeId","serializeNodeId","getElementInputValue","URL_IN_CSS_REF","ABSOLUTE_URL","DATA_URI","switchToAbsoluteUrl","cssText","cssHref","matchingSubstring","singleQuote","urlWrappedInSingleQuotes","doubleQuote","urlWrappedInDoubleQuotes","urlNotWrappedInQuotes","quote","makeUrlAbsolute","isTouchEvent","changedTouches","assembleIncrementalSnapshot","getPathToNestedCSSRule","rule","currentRule","parentRule","rules_1","cssRules","index_1","parentStyleSheet","rules","serializeDocument","serializationContext","serializeNodeWithId","serializedNode","serializeNode","generateNextId","serializedNodeWithId","serializedNodeIds","DOCUMENT_NODE","serializeDocumentNode","DOCUMENT_TYPE_NODE","serializeDocumentTypeNode","serializeElementNode","serializeTextNode","CDATA_SECTION_NODE","serializeCDataNode","serializeChildNodes","documentType","publicId","systemId","getValidTagName","isSVG","isSVGElement","rr_width","rr_height","getAttributesForPrivacyLevel","childNodesSerializationOptions","childNode","serializedChildNode","serializeAttribute","attributeValue","_nextId","TAG_NAME_REGEX","processedTagName","getCssRulesString","styleSheetCssText","getCssRuleString","isCSSImportRule","styleSheet","SVGElement","safeAttrs","attribute","formValue","optionElement","selected","stylesheet","styleSheets","rel","_cssText","sheet","scrollTop","scrollLeft","checked","mediaElement","rr_mediaState","paused","elementsScrollPositions","rr_scrollLeft","rr_scrollTop","originalDescriptor","getOwnPropertyDescriptor","thisObject","MUTATION_PROCESS_MAX_DELAY","createMutationBatch","processMutationBatch","cancelScheduledFlush","pendingMutations","addMutations","mutations","timeout","startMutationObserver","controller","mutationCallback","mutationBatch","processMutations","takeRecords","attributeOldValue","characterDataOldValue","onFlush","MutationController","flushListener","filteredMutations","mutation","processChildListMutations","adds","removes","hasBeenSerialized","texts","processCharacterDataMutations","processAttributesMutations","addedAndMovedNodes","removedNodes","Map","_loop_1","addedNodes","delete","mutations_1","sortedAddedAndMovedNodes","sortAddedAndMovedNodes","addedNodeMutations","sortedAddedAndMovedNodes_1","nextId","getNextSibling","parentId","removedNodeMutations","nextSibling","textMutations","handledNodes","filteredMutations_1","oldValue","attributeMutations","handledElements","handledAttributes","emittedMutations","filteredMutations_2","uncensoredValue","transformedValue","inputValue","emittedMutation","nodes","sort","compareDocumentPosition","Node","DOCUMENT_POSITION_CONTAINED_BY","DOCUMENT_POSITION_CONTAINS","DOCUMENT_POSITION_FOLLOWING","DOCUMENT_POSITION_PRECEDING","TOLERANCE","isVisualViewportFactoredIn","abs","pageTop","scrollY","pageLeft","scrollX","convertMouseEventToLayoutCoordinates","normalised","layoutViewportX","layoutViewportY","visualViewportX","visualViewportY","getVisualViewport","getScrollX","pageXOffset","getScrollY","pageYOffset","MOUSE_MOVE_OBSERVER_THRESHOLD","SCROLL_OBSERVER_THRESHOLD","VISUAL_VIEWPORT_OBSERVER_THRESHOLD","recordIds","getRecordIdForEvent","initObservers","o","mutationHandler","initMutationObserver","mutationController","mutationCb","mousemoveHandler","initMoveObserver","mousemoveCb","mouseInteractionHandler","initMouseInteractionObserver","mouseInteractionCb","scrollHandler","initScrollObserver","scrollCb","viewportResizeHandler","initViewportResizeObserver","viewportResizeCb","inputHandler","initInputObserver","inputCb","mediaInteractionHandler","initMediaInteractionObserver","mediaInteractionCb","styleSheetObserver","initStyleSheetObserver","styleSheetCb","focusHandler","initFocusObserver","focusCb","visualViewportResizeHandler","initVisualViewportResizeObserver","visualViewportResizeCb","frustrationHandler","initFrustrationObserver","frustrationCb","cb","updatePosition","timeOffset","eventTypeToMouseInteraction","handler","record","scrollPositions","lastInputStateMap","onElementChange","inputState","isChecked","cbWithDedup","lastInputState","stopEventListeners","HTMLTextAreaElement","HTMLSelectElement","instrumentationStoppers","stopper","checkStyleSheetAndCallback","ownerNode","CSSStyleSheet","instrumentGroupingCSSRuleClass","cls","CSSGroupingRule","CSSMediaRule","CSSSupportsRule","has_focus","cancelThrottle","createElementsScrollPositions","scrollPositionsByElement","scrollingElement","takeFullSnapshot","initialOffset","stopObservers","v","p","mouseInteractionRecord","positions","m","r","d","frustrationRecord","takeSubsequentFullSnapshot","flushMutations","buildReplayPayload","metadata","rawSegmentBytesCount","formData","FormData","toFormEntries","onEntry","prefix","statsPerView","MAX_STATS_HISTORY","getSegmentsCount","viewId","getOrCreateReplayStats","segments_count","addSegment","records_count","addWroteData","additionalBytesCount","segments_total_raw_size","deleteOldestStats","isFirst_1","_value","workerURL","Segment","worker","creationReason","initialRecord","onWrote","onFlushed","creation_reason","has_full_snapshot","index_in_view","rawBytesCount","compressedBytesCount","postMessage","addRecord","flushReason","SEGMENT_DURATION_LIMIT","SEGMENT_BYTES_LIMIT","startSegmentCollection","httpRequest","doStartSegmentCollection","computeSegmentContext","getSegmentContext","nextSegmentCreationReason","unsubscribeViewCreated","flushSegment","unsubscribePageExited","segment","expirationTimeoutId","createNewSegment","compressedSegmentBytesCount","createDeflateWorker","createObjectURL","workerCodeFn","Worker","makePakoDeflate","Z_FIXED","Z_BINARY","Z_TEXT","Z_UNKNOWN","zero","buf","STORED_BLOCK","STATIC_TREES","DYN_TREES","MIN_MATCH","MAX_MATCH","LENGTH_CODES","LITERALS","L_CODES","D_CODES","BL_CODES","HEAP_SIZE","MAX_BITS","Buf_size","MAX_BL_BITS","END_BLOCK","REP_3_6","REPZ_3_10","REPZ_11_138","extra_lbits","extra_dbits","extra_blbits","bl_order","DIST_CODE_LEN","static_ltree","static_dtree","_dist_code","_length_code","base_length","static_l_desc","static_d_desc","static_bl_desc","base_dist","StaticTreeDesc","static_tree","extra_bits","extra_base","elems","max_length","has_stree","TreeDesc","dyn_tree","stat_desc","max_code","d_code","dist","put_short","w","pending_buf","pending","send_bits","bi_valid","bi_buf","send_code","c","tree","bi_reverse","res","bi_flush","gen_bitlen","desc","n","bits","xbits","stree","extra","bl_count","heap","heap_max","opt_len","static_len","gen_codes","next_code","tr_static_init","init_block","dyn_ltree","dyn_dtree","bl_tree","last_lit","bi_windup","copy_block","subarray","smaller","depth","_n2","_m2","pqdownheap","k","heap_len","compress_block","ltree","dtree","lc","lx","d_buf","l_buf","build_tree","scan_tree","curlen","prevlen","nextlen","max_count","min_count","send_tree","build_bl_tree","max_blindex","l_desc","d_desc","bl_desc","send_all_trees","lcodes","dcodes","blcodes","rank","detect_data_type","black_mask","static_init_done","_tr_init","_tr_stored_block","stored_len","last","_tr_align","_tr_flush_block","opt_lenb","static_lenb","level","strm","data_type","_tr_tally","lit_bufsize","_tr_init_1","_tr_stored_block_1","_tr_flush_block_1","_tr_tally_1","_tr_align_1","trees","adler32","adler","s1","s2","adler32_1","makeTable","table","crcTable","Uint32Array","crc32","crc","crc32_1","2","1","0","constants","Z_NO_FLUSH","Z_PARTIAL_FLUSH","Z_SYNC_FLUSH","Z_FULL_FLUSH","Z_FINISH","Z_BLOCK","Z_TREES","Z_OK","Z_STREAM_END","Z_NEED_DICT","Z_ERRNO","Z_STREAM_ERROR","Z_DATA_ERROR","Z_MEM_ERROR","Z_BUF_ERROR","Z_NO_COMPRESSION","Z_BEST_SPEED","Z_BEST_COMPRESSION","Z_DEFAULT_COMPRESSION","Z_FILTERED","Z_HUFFMAN_ONLY","Z_RLE","Z_DEFAULT_STRATEGY","Z_DEFLATED","_tr_init$1","_tr_stored_block$1","_tr_flush_block$1","_tr_tally$1","_tr_align$1","Z_FIXED$1","Z_UNKNOWN$1","MAX_MEM_LEVEL","MAX_WBITS","DEF_MEM_LEVEL","LENGTH_CODES$1","LITERALS$1","L_CODES$1","D_CODES$1","BL_CODES$1","HEAP_SIZE$1","MAX_BITS$1","MIN_MATCH$1","MAX_MATCH$1","MIN_LOOKAHEAD","PRESET_DICT","INIT_STATE","EXTRA_STATE","NAME_STATE","COMMENT_STATE","HCRC_STATE","BUSY_STATE","FINISH_STATE","BS_NEED_MORE","BS_BLOCK_DONE","BS_FINISH_STARTED","BS_FINISH_DONE","OS_CODE","errorCode","zero$1","HASH_ZLIB","hash_shift","hash_mask","HASH","flush_pending","avail_out","output","pending_out","next_out","total_out","flush_block_only","block_start","strstart","put_byte","putShortMSB","read_buf","avail_in","next_in","wrap","total_in","longest_match","cur_match","chain_length","max_chain_length","scan","best_len","prev_length","nice_match","w_size","_win","wmask","w_mask","strend","scan_end1","scan_end","good_match","lookahead","match_start","fill_window","more","_w_size","window_size","hash_size","insert","ins_h","deflate_stored","max_block_size","pending_buf_size","max_start","deflate_fast","hash_head","bflush","match_length","max_lazy_match","deflate_slow","max_insert","prev_match","match_available","deflate_rle","deflate_huff","Config","good_length","max_lazy","nice_length","max_chain","configuration_table","lm_init","DeflateState","gzhead","gzindex","last_flush","w_bits","hash_bits","Uint16Array","deflateResetKeep","deflateReset","ret","deflateSetHeader","deflateInit2","windowBits","memLevel","deflateInit","deflate","beg","old_flush","hcrc","os","level_flags","bstate","deflateEnd","deflateSetDictionary","dictionary","dictLength","tmpDict","avail","deflateInit_1","deflateInit2_1","deflateReset_1","deflateResetKeep_1","deflateSetHeader_1","deflate_2","deflateEnd_1","deflateSetDictionary_1","deflateInfo","deflate_1","flattenChunks","chunks","_l","chunk","_utf8len","ZStream","zstream","Z_NO_FLUSH$1","Z_FULL_FLUSH$1","Z_FINISH$1","Z_OK$1","Z_STREAM_END$1","Z_DEFAULT_COMPRESSION$1","Z_DEFAULT_STRATEGY$1","Z_DEFLATED$1","Deflate","chunkSize","opt","raw","gzip","ended","dict","_dict_set","string2buf","c2","m_pos","str_len","buf_len","flush_mode","_flush_mode","pushData","binaryData","reduce","startDeflateWorker","createDeflateWorkerImpl","doStartDeflateWorker","worker_1","onInitialized","Event","startRecording","replayRequest","stopSegmentCollection","stopRecording","unsubscribeViewEnded","makeRecorderApi","startRecordingImpl","startDeflateWorkerImpl","isBrowserSupported","startStrategy","stopStrategy","datadogRum","$keys","enumBugKeys","O","bench","itemHeight","required","items","__bench","watch","getLast","firstToRender","lastToRender","genChild","__itemHeight","$el","clientHeight","ceil","getFirst","getChildren","measurableStyles","modifiers","onScroll","$listeners","copyObject","keysIn","baseAssignIn","baseSet","breakpoints","ALIGNMENT","makeProps","def","alignValidator","alignProps","validator","justifyValidator","justifyProps","alignContentValidator","alignContentProps","propMap","align","justify","alignContent","classMap","breakpointClass","prop","breakpoint","cache","noGutters","cacheKey","identity","overRest","setToString","baseRest","getSymbolsIn","copySymbolsIn","dijkstra","single_source_shortest_paths","graph","predecessors","costs","u","cost_of_s_to_u","adjacent_nodes","cost_of_e","cost_of_s_to_u_plus_cost_of_e","cost_of_s_to_v","first_visit","PriorityQueue","make","cost","extract_shortest_path_from_predecessor_list","reverse","find_path","T","sorter","default_sorter","cof","arg","pIE","createDesc","toIObject","toPrimitive","IE8_DOM_DEFINE","gOPD","plugin","asciiToArray","hasUnicode","unicodeToArray","stringToArray","string","isKeyable","$task","G","B","setImmediate","clearImmediate","clear","isObjectLike","SIZE_MAP","isFontAwesome5","iconType","isSvgPath","VIcon","right","iconName","sizes","xSmall","medium","large","xLarge","explicitSize","hasClickListener","attrs$","fontSize","getSize","wrapperData","getDefaultData","applyColors","themeClasses","newChildren","delimiterIndex","isMaterialIcon","svgData","xmlns","viewBox","getSvgWrapperData","component","nativeOn","getIcon","renderSvgIcon","renderFontIcon","renderSvgIconComponent","$_wrapperFor","domProps","innerHTML","coreJsData","maskSrcKey","uid","IE_PROTO","isMasked","getTag","isArrayLike","isTypedArray","mapTag","setTag","isEmpty","createHTML","parseFloat","fmtShort","msAbs","fmtLong","plural","isPlural","isFinite","long","dP","getKeys","defineProperties","Properties","assignValue","castPath","isIndex","toKey","customizer","lastIndex","nested","objValue","basePickBy","hasIn","basePick","paths","baseMixins","ClickOutside","dark","fullscreen","light","maxWidth","noClickAnimation","persistent","retainFocus","scrollable","activatedBy","animate","animateTimeout","stackMinZIndex","previousActiveElement","contentClass","activator","_this$previousActiveE","show","hideScroll","removeOverlay","unbind","focus","showScroll","genOverlay","$nextTick","isBooted","_isDestroyed","$refs","overlay","activeZIndex","getMaxZIndex","documentElement","hideOverlay","activeElement","onFocusin","$emit","animateClick","keyCode","esc","getOpenDependents","getActivator","getOpenDependentElements","showLazyContent","contentClasses","tabindex","getScopeIdAttrs","keydown","onKeydown","zIndex","ref","genTransition","genInnerContent","appear","onClickOutside","closeConditional","include","getContentSlot","attach","genActivator","openDelay","closeDelay","openTimeout","closeTimeout","clearDelay","filteredChild","VNode","isComment","baseIsEqual","isKey","matchesStrictComparable","COMPARE_PARTIAL_FLAG","COMPARE_UNORDERED_FLAG","baseMatchesProperty","srcValue","memoizeCapped","rePropName","reEscapeChar","stringToPath","number","subString","isNumber","isNaN","defer","channel","ctx","invoke","cel","setTask","clearTask","MessageChannel","Dispatch","counter","ONREADYSTATECHANGE","run","Function","nextTick","port2","port1","importScripts","Emitter","withCredentials","description","decodePacket","baseIsMap","MACHINE_ID","ObjectID","pid","obj","_bsontype","generate","fromCharCode","hex","substring","out","createFromTime","createFromHexString","hexString","objectid","setMachineID","machineID","getMachineID","toHexString","equals","getTimestamp","inspect","for","baseGetAllKeys","getAllKeysIn","eq","equalArrays","mapToArray","setToArray","boolTag","dateTag","errorTag","numberTag","regexpTag","stringTag","symbolTag","arrayBufferTag","dataViewTag","symbolProto","symbolValueOf","valueOf","equalByTag","bitmask","equalFunc","byteOffset","convert","isPartial","stacked","Ripple","activeClass","exact","exactPath","exactActiveClass","link","nuxt","ripple","proxyClass","_this$ripple","isClickable","isLink","$route","onRouteChange","computedRipple","assign","useColors","WebkitAppearance","firebug","exception","$1","formatArgs","namespace","humanize","diff","lastC","save","namespaces","storage","removeItem","load","DEBUG","localstorage","localStorage","local","colors","formatters","enable","Touch","reverseTransition","inTransition","groupClasses","windowGroup","internalReverse","computedTransition","genDefaultSlot","transitionCount","transitionHeight","onAfterTransition","beforeEnter","onBeforeTransition","onTransitionCancelled","beforeLeave","enter","onEnter","genWindowItem","hashDelete","__data__","fixedHeader","bottom","wrapper","toByteArray","fromByteArray","lookup","revLookup","Arr","getLens","validLen","placeHoldersLen","lens","_byteLength","tmp","arr","curByte","tripletToBase64","encodeChunk","uint8","extraBytes","maxChunkLength","len2","getMapData","mapCacheSet","fails","wks","regexpExec","SPECIES","REPLACE_SUPPORTS_NAMED_GROUPS","re","SPLIT_WORKS_WITH_OVERWRITTEN_EXEC","originalExec","KEY","SYMBOL","DELEGATES_TO_SYMBOL","DELEGATES_TO_EXEC","execCalled","nativeRegExpMethod","fns","nativeMethod","regexp","arg2","forceStringMethod","strfn","rxfn","compareAscending","compareMultiple","orders","objCriteria","criteria","othCriteria","ordersLength","order","stackElement","stackExclude","exclude","zis","activeElements","getElementsByClassName","stripSlashes","_trim","getShortName","lastIndexOf","getNameFromPath","assignTempId","tempIdField","newId","stringifyIfObject","getId","idField","_id","getServicePrefix","servicePath","inflection","camelize","getServiceCapitalization","updateOriginal","newData","newProp","oldProp","shouldCopyProp","_isObject","Vue","getQueryInfo","qid","$limit","$skip","skip","queryParams","_omit","queryId","pageParams","pageId","isOutdated","getItemsFromQueryInfo","pagination","queryInfo","keyedById","queryLevel","pageLevel","ids","makeNamespace","nameStyle","nameStyles","short","getServicePath","Model","randomString","possible","isBaseModelInstance","baseModels","models","alias","BaseModel","mergeWithAccessors","blacklist","sourceProps","getOwnPropertyNames","destProps","sourceIsVueObservable","destIsVueObservable","sourceDesc","destDesc","isFeathersVuexInstance","modelName","fastCopy","checkNamespace","assignIfNotPresent","nativeMax","transform","otherArgs","is","it","memoize","MAX_MEMOIZE_SIZE","ARG","tryGet","callee","baseMerge","createAssigner","mergeWith","srcIndex","baseFor","baseForOwn","iteratee","baseEach","baseAggregator","collection","setter","accumulator","mapCacheGet","maxHeight","minHeight","minWidth","nativeCreate","HASH_UNDEFINED","hashSet","baseGetTag","argsTag","baseIsArguments","flatRest","pick","getOwnPropertySymbols","extendOptions","baseHasIn","GF","mul","p1","p2","coeff","divident","divisor","generateECPolynomial","degree","poly","exp","jwtDecode","isJwtExpired","currentTime","toArray","hasBin","Socket","connect_error","connect_timeout","connecting","reconnect","reconnect_attempt","reconnect_failed","reconnect_error","reconnecting","ping","pong","io","nsp","json","acks","receiveBuffer","sendBuffer","connected","disconnected","autoConnect","subEvents","subs","BINARY_EVENT","EVENT","CONNECT","onpacket","sameNamespace","rootNamespaceError","ERROR","onconnect","onevent","ACK","onack","BINARY_ACK","DISCONNECT","ondisconnect","ack","sent","emitBuffered","destroy","normalizeComponent","scriptExports","staticRenderFns","functionalTemplate","injectStyles","scopeId","moduleIdentifier","shadowMode","hook","_compiled","_scopeId","$vnode","ssrContext","__VUE_SSR_CONTEXT__","_registeredComponents","_ssrRegister","$root","$options","shadowRoot","_injectStyles","originalRender","existing","beforeCreate","create","ctor","superCtor","super_","TempCtor","isRegExp","advanceStringIndex","toLength","callRegExpExec","$min","$push","$SPLIT","LENGTH","LAST_INDEX","MAX_UINT32","SUPPORTS_Y","SPLIT","$split","maybeCallNative","internalSplit","separator","lastLength","lastLastIndex","splitLimit","separatorCopy","splitter","rx","unicodeMatching","lim","A","z","listCacheClear","loading","loaderHeight","progress","absolute","indeterminate","objectToString","VToolbarTitle","VToolbarItems","SRC","$toString","TPL","inspectSource","safe","dPs","Empty","PROTOTYPE","createDict","iframeDocument","lt","gt","contentWindow","_typeof","iterator","typeChecker","typeString","sift","compare","comparable","or","validateOptions","and","_validate","valueOwner","defaultExpressions","$eq","$ne","$gt","$gte","$lt","$lte","$mod","$in","$nin","$not","$type","testType","$all","allOptions","$and","$size","sizeMatch","$or","orOptions","$nor","$regex","$where","$elemMatch","$exists","prepare","queryOwner","_ref","_ref2","_ref3","_ref4","_ref5","comparableValue","createRootValidator","CSP_ENABLED","createValidator","validatedNested","_ref6","keyPath","findValues","inclusive","allValid","keypath","createNestedValidator","isVanillaObject","expressions","wrapQuery","parseQuery","validators","queryValue","expression","keyParts","parseNested","isExactObject","isEqual","parseRoot","getAllKeys","allKeysHash","select","baseFindIndex","fromRight","emptyObject","freeze","isUndef","isDef","isTrue","isFalse","isPrimitive","_toString","isPlainObject","isValidArrayIndex","isPromise","catch","toNumber","makeMap","expectsLowerCase","isReservedAttribute","hasOwn","cached","hit","camelizeRE","toUpperCase","capitalize","hyphenateRE","hyphenate","polyfillBind","boundFn","_length","nativeBind","_from","toObject","no","looseEqual","isObjectA","isObjectB","isArrayA","isArrayB","keysA","keysB","looseIndexOf","called","SSR_ATTR","ASSET_TYPES","LIFECYCLE_HOOKS","config","optionMergeStrategies","silent","productionTip","devtools","errorHandler","warnHandler","ignoredElements","keyCodes","isReservedTag","isReservedAttr","isUnknownElement","getTagNamespace","parsePlatformTagName","mustUseProp","_lifecycleHooks","unicodeRegExp","isReserved","bailRE","parsePath","segments","_isServer","hasProto","inBrowser","inWeex","WXEnvironment","platform","weexPlatform","UA","isIE9","isEdge","isIOS","isFF","nativeWatch","supportsPassive","isServerRendering","VUE_ENV","__VUE_DEVTOOLS_GLOBAL_HOOK__","Ctor","_Set","hasSymbol","Reflect","ownKeys","Dep","addSub","sub","removeSub","depend","addDep","targetStack","pushTarget","popTarget","elm","componentOptions","asyncFactory","ns","fnContext","fnOptions","fnScopeId","componentInstance","isStatic","isRootInsert","isCloned","isOnce","asyncMeta","isAsyncPlaceholder","prototypeAccessors","createEmptyVNode","createTextVNode","cloneVNode","vnode","cloned","arrayProto","arrayMethods","methodsToPatch","inserted","ob","__ob__","observeArray","dep","arrayKeys","shouldObserve","toggleObserving","Observer","vmCount","protoAugment","copyAugment","walk","__proto__","asRootData","isExtensible","_isVue","defineReactive$$1","customSetter","shallow","getter","childOb","dependArray","newVal","del","strats","toVal","fromVal","mergeDataOrFn","parentVal","childVal","vm","instanceData","defaultData","mergeHook","dedupeHooks","hooks","mergeAssets","key$1","provide","defaultStrat","normalizeProps","normalizeInject","normalized","normalizeDirectives","dirs","def$$1","mergeOptions","_base","extends","mixins","mergeField","strat","resolveAsset","warnMissing","assets","camelizedId","PascalCaseId","validateProp","propOptions","propsData","absent","booleanIndex","getTypeIndex","stringIndex","getPropDefaultValue","prevShouldObserve","_props","getType","functionTypeCheckRE","isSameType","expectedTypes","handleError","cur","$parent","errorCaptured","globalHandleError","invokeWithErrorHandling","_handled","logError","timerFunc","isUsingMicroTask","flushCallbacks","copies","resolve","createTextNode","_resolve","seenObjects","traverse","_traverse","seen","isA","isFrozen","depId","normalizeEvent","once$$1","createFnInvoker","invoker","arguments$1","updateListeners","oldOn","remove$$1","createOnceHandler","old","mergeVNodeHook","hookKey","oldHook","wrappedHook","extractPropsFromVNodeData","altKey","checkProp","preserve","simpleNormalizeChildren","normalizeChildren","normalizeArrayChildren","nestedIndex","_isVList","initProvide","_provided","initInjections","resolveInject","provideKey","provideDefault","resolveSlots","slots","slot","name$1","isWhitespace","normalizeScopedSlots","normalSlots","prevSlots","hasNormalSlots","isStable","$stable","$key","_normalized","$hasNormal","normalizeScopedSlot","key$2","proxyNormalSlot","proxy","renderList","renderSlot","fallbackRender","bindObject","scopedSlotFn","resolveFilter","isKeyNotMatch","expect","actual","checkKeyCodes","eventKeyCode","builtInKeyCode","eventKeyName","builtInKeyName","mappedKeyCode","bindObjectProps","asProp","isSync","loop","camelizedKey","hyphenatedKey","$event","renderStatic","isInFor","_staticTrees","_renderProxy","markStatic","markOnce","markStaticNode","bindObjectListeners","ours","resolveScopedSlots","hasDynamicKeys","contentHashKey","bindDynamicKeys","baseObj","prependModifier","symbol","installRenderHelpers","_o","_n","_s","_t","_q","_m","_f","_k","_v","_u","_g","_p","FunctionalRenderContext","contextVm","this$1","_original","isCompiled","needNormalization","injections","scopedSlots","createFunctionalComponent","mergeProps","renderContext","cloneAndMarkFunctionalResult","vnodes","componentVNodeHooks","hydrating","keepAlive","mountedNode","prepatch","createComponentInstanceForVnode","activeInstance","$mount","oldVnode","updateChildComponent","_isMounted","callHook","queueActivatedComponent","activateChildComponent","deactivateChildComponent","$destroy","hooksToMerge","createComponent","baseCtor","cid","resolveAsyncComponent","createAsyncPlaceholder","resolveConstructorOptions","model","transformModel","abstract","installComponentHooks","_isComponent","_parentVnode","inlineTemplate","toMerge","_merged","mergeHook$1","f1","f2","SIMPLE_NORMALIZE","ALWAYS_NORMALIZE","normalizationType","alwaysNormalize","_createElement","pre","applyNS","registerDeepBindings","force","initRender","_vnode","parentVnode","_renderChildren","parentData","_parentListeners","currentRenderingInstance","renderMixin","_render","ensureCtor","comp","__esModule","factory","errorComp","resolved","owner","owners","loadingComp","sync","timerLoading","timerTimeout","$on","forceRender","renderCompleted","$forceUpdate","reject","getFirstComponentChild","initEvents","_events","_hasHookEvent","updateComponentListeners","remove$1","$off","_target","onceHandler","oldListeners","eventsMixin","hookRE","$once","i$1","cbs","setActiveInstance","prevActiveInstance","initLifecycle","$children","_watcher","_inactive","_directInactive","_isBeingDestroyed","lifecycleMixin","_update","prevEl","prevVnode","restoreActiveInstance","__patch__","__vue__","teardown","_watchers","_data","mountComponent","updateComponent","Watcher","renderChildren","newScopedSlots","oldScopedSlots","hasDynamicScopedSlot","needsForceUpdate","propKeys","_propKeys","isInInactiveTree","direct","handlers","activatedChildren","waiting","flushing","resetSchedulerState","currentFlushTimestamp","getNow","createEvent","flushSchedulerQueue","watcher","activatedQueue","updatedQueue","callActivatedHooks","callUpdatedHooks","queueWatcher","uid$2","expOrFn","isRenderWatcher","deep","lazy","active","dirty","deps","newDeps","depIds","newDepIds","cleanupDeps","evaluate","sharedPropertyDefinition","sourceKey","initState","initProps","initMethods","initData","initComputed","initWatch","propsOptions","isRoot","getData","computedWatcherOptions","watchers","_computedWatchers","isSSR","userDef","defineComputed","shouldCache","createComputedGetter","createGetterInvoker","createWatcher","$watch","stateMixin","dataDef","propsDef","$set","$delete","immediate","uid$3","initMixin","_init","_uid","initInternalComponent","_self","vnodeComponentOptions","_componentTag","super","superOptions","cachedSuperOptions","modifiedOptions","resolveModifiedOptions","components","modified","latest","sealed","sealedOptions","initUse","use","installedPlugins","_installedPlugins","install","initMixin$1","mixin","initExtend","Super","SuperId","cachedCtors","_Ctor","Sub","initProps$1","initComputed$1","Comp","initAssetRegisters","definition","getComponentName","pattern","pruneCache","keepAliveInstance","pruneCacheEntry","patternTypes","KeepAlive","cacheVNode","vnodeToCache","keyToCache","destroyed","mounted","updated","ref$1","builtInComponents","initGlobalAPI","configDef","util","defineReactive","acceptValue","attr","isEnumeratedAttr","isValidContentEditableValue","convertEnumeratedValue","isFalsyAttrValue","isBooleanAttr","xlinkNS","isXlink","getXlinkProp","genClassForVnode","mergeClassData","renderClass","dynamicClass","stringifyClass","stringifyArray","stringifyObject","stringified","namespaceMap","svg","math","isHTMLTag","unknownElementCache","HTMLUnknownElement","isTextInputType","createElement$1","multiple","createElementNS","createComment","newNode","referenceNode","setTextContent","setStyleScope","nodeOps","registerRef","isRemoval","refs","refInFor","emptyNode","sameVnode","sameInputType","typeA","typeB","createKeyToOldIdx","beginIdx","endIdx","createPatchFunction","backend","modules","emptyNodeAt","createRmCb","childElm","removeNode","createElm","insertedVnodeQueue","parentElm","refElm","ownerArray","setScope","createChildren","invokeCreateHooks","isReactivated","initComponent","reactivateComponent","pendingInsert","isPatchable","innerNode","activate","ref$$1","ancestor","addVnodes","startIdx","invokeDestroyHook","removeVnodes","removeAndInvokeRemoveHook","rm","updateChildren","oldCh","newCh","removeOnly","oldKeyToIdx","idxInOld","vnodeToMove","oldStartIdx","newStartIdx","oldEndIdx","oldStartVnode","oldEndVnode","newEndIdx","newStartVnode","newEndVnode","canMove","patchVnode","findIdxInOld","hydrate","postpatch","invokeInsertHook","initial","isRenderedModule","inVPre","hasChildNodes","childrenMatch","firstChild","fullInvoke","isInitialPatch","isRealElement","removeAttribute","oldElm","_leaveCb","patchable","i$2","updateDirectives","oldDir","dir","isCreate","isDestroy","oldDirs","normalizeDirectives$1","newDirs","dirsWithInsert","dirsWithPostpatch","oldArg","callHook$1","componentUpdated","callInsert","emptyModifiers","getRawDirName","rawName","baseModules","updateAttrs","inheritAttrs","oldAttrs","setAttr","removeAttributeNS","isInPre","baseSetAttr","setAttributeNS","__ieph","blocker","stopImmediatePropagation","updateClass","oldData","transitionClass","_transitionClasses","_prevClass","target$1","klass","RANGE_TOKEN","CHECKBOX_RADIO_TOKEN","normalizeEvents","change","createOnceHandler$1","remove$2","useMicrotaskFix","add$1","attachedTimestamp","_wrapper","currentTarget","updateDOMListeners","svgContainer","updateDOMProps","oldProps","strCur","shouldUpdateValue","checkVal","composing","isNotInFocusAndDirty","isDirtyWithModifiers","notInFocus","_vModifiers","parseStyleText","listDelimiter","propertyDelimiter","normalizeStyleData","normalizeStyleBinding","staticStyle","bindingStyle","getStyle","checkChild","styleData","emptyStyle","cssVarRE","importantRE","setProp","normalizedName","normalize","vendorNames","capName","updateStyle","oldStaticStyle","oldStyleBinding","normalizedStyle","oldStyle","newStyle","whitespaceRE","addClass","removeClass","tar","resolveTransition","css","autoCssTransition","enterClass","enterToClass","enterActiveClass","leaveClass","leaveToClass","leaveActiveClass","hasTransition","TRANSITION","ANIMATION","transitionProp","transitionEndEvent","animationProp","animationEndEvent","ontransitionend","onwebkittransitionend","onanimationend","onwebkitanimationend","raf","nextFrame","addTransitionClass","transitionClasses","removeTransitionClass","whenTransitionEnds","expectedType","getTransitionInfo","propCount","transformRE","getComputedStyle","transitionDelays","transitionDurations","transitionTimeout","getTimeout","animationDelays","animationDurations","animationTimeout","hasTransform","delays","durations","toMs","toggleDisplay","cancelled","_enterCb","appearClass","appearToClass","appearActiveClass","beforeAppear","afterAppear","appearCancelled","transitionNode","isAppear","startClass","toClass","beforeEnterHook","enterHook","afterEnterHook","enterCancelledHook","explicitEnterDuration","expectsCSS","userWantsControl","getHookArgumentsLength","pendingNode","_pending","isValidDuration","delayLeave","explicitLeaveDuration","performLeave","invokerFns","_enter","platformModules","patch","vmodel","trigger","directive","binding","_vOptions","setSelected","onCompositionStart","onCompositionEnd","prevOptions","curOptions","needReset","hasNoMatchingOption","actuallySetSelected","isMultiple","option","selectedIndex","initEvent","dispatchEvent","locateNode","transition$$1","originalDisplay","__vOriginalDisplay","platformDirectives","transitionProps","getRealChild","compOptions","extractTransitionData","rawChild","hasParentTransition","isSameChild","oldChild","isNotTextNode","isVShowDirective","Transition","_leaving","oldRawChild","delayedLeave","moveClass","TransitionGroup","beforeMount","kept","prevChildren","rawChildren","transitionData","removed","c$1","hasMove","callPendingCbs","recordPosition","applyTranslation","_reflow","moved","WebkitTransform","transitionDuration","_moveCb","propertyName","_hasMove","cloneNode","newPos","oldPos","dx","dy","platformComponents","baseSlice","freeGlobal","freeSelf","store","USE_SYMBOL","$exports","SetCache","arrayIncludes","arrayIncludesWith","cacheHas","createSet","LARGE_ARRAY_SIZE","baseUniq","comparator","isCommon","outer","seenIndex","baseIndexOf","charsEndIndex","strSymbols","chrSymbols","arrayFilter","resIndex","app","centered","multiLine","vertical","activeTimeout","hasBackground","bar","footer","insetFooter","paddingBottom","paddingLeft","paddingRight","paddingTop","pointerenter","pointerleave","genActions","overArg","getPrototype","startMonitorErrorCollection","setDebugMode","monitored","__","descriptor","originalMethod","decorated","ONE_HOUR","shallowClone","generateUUID","performDraw","arrayFrom","isPercentage","objectValues","isEmptyObject","getLocationOrigin","getLinkElementOrigin","findCommaSeparatedValue","safeTruncate","createCircularReferenceChecker","mergeInto","deepClone","combine","removeDuplicates","makePublicApi","getFileFromStackTraceString","DEFAULT_REQUEST_ERROR_RESPONSE_LENGTH_LIMIT","validateAndBuildLogsConfiguration","forwardConsoleLogs","validateAndBuildForwardOption","forwardReports","forwardErrorsToLogs","requestErrorResponseLengthLimit","allowedValues","serializeLogsConfiguration","baseSerializedInitConfiguration","forward_errors_to_logs","forward_console_logs","forward_reports","__decorate","decorators","decorate","StatusType","HandlerType","http","STATUSES","Logger","handleLogStrategy","handlerType","loggerContext","contextManager","logger","messageContext","errorOrigin","addContext","removeContext","setHandler","getHandler","setLevel","getLevel","makeLogsPublicApi","startLogsImpl","customLoggers","beforeInitLoggerLog","logsMessage","mainLogger","canInitLogs","handleLog","getLoggerGlobalContext","setLoggerGlobalContext","addLoggerGlobalContext","removeLoggerGlobalContext","createLogger","conf","getLogger","startBatchWithReplica","endpoint","replicaEndpoint","createBatch","startLogsSessionManager","startLogsSessionManagerStub","computeTrackingType","rawSessionType","hasValidLoggerSession","STATUS_PRIORITIES","startLoggerCollection","savedDate","isAuthorized","rawLogsEvent","loggerHandler","sanitizedHandlerType","startLogsAssembly","statusWithCustom","logRateLimiters","getRUMInternalContext","logsSentBeforeRumInjectionTelemetryAdded","getInternalContextFromRumGlobal","DD_RUM_SYNTHETICS","DD_RUM","rumGlobal","LogStatusForApi","startConsoleCollection","consoleSubscription","LogStatusForReport","startReportCollection","reportSubscription","startNetworkErrorCollection","xhrSubscription","handleCompleteRequest","fetchSubscription","onResponseDataAvailable","responseData","format","isRejected","isServerError","computeXhrResponseData","computeFetchResponseText","computeFetchErrorText","truncateResponseText","TextDecoder","truncateResponseStream","responseText","stream","readLimitedAmountOfBytes","bytes","limitExceeded","reader","getReader","readBytesCount","readMore","read","onDone","completeBuffer","offset_1","startRuntimeErrorCollection","rawErrorObservable","stopRuntimeErrorTracking","rawErrorSubscription","startLogsBatch","serverLogsEvent","startLogsBridge","trackedSession","startLogs","startLogsTelemetry","telemetryBatch_1","datadogLogs","isIterateeCall","assigner","guard","Utils","KanjiData","toSJIS","applyMixin","vuexInit","$store","devtoolHook","devtoolPlugin","_devtoolHook","targetState","replaceState","forEachValue","partial","Module","rawModule","runtime","_children","_rawModule","rawState","namespaced","addChild","getChild","actions","getters","forEachChild","forEachGetter","forEachAction","forEachMutation","ModuleCollection","rawRootModule","register","targetModule","newModule","getNamespace","rawChildModule","unregister","Store","plugins","strict","_committing","_actions","_actionSubscribers","_mutations","_wrappedGetters","_modules","_modulesNamespaceMap","_subscribers","_watcherVM","dispatch","commit","installModule","resetStoreVM","useDevtools","prototypeAccessors$1","genericSubscribe","resetStore","hot","oldVm","_vm","wrappedGetters","$$state","enableStrictMode","_withCommit","rootState","parentState","getNestedState","moduleName","makeLocalContext","namespacedType","registerMutation","registerAction","registerGetter","noNamespace","_type","_payload","_options","unifyObjectStyle","makeLocalGetters","gettersProxy","splitPos","localType","rootGetters","rawGetter","_Vue","all","subscribeAction","registerModule","preserveState","unregisterModule","hotUpdate","newOptions","committing","mapState","normalizeNamespace","states","normalizeMap","getModuleByNamespace","vuex","mapMutations","mapGetters","mapActions","createNamespacedHelpers","helper","index_esm","stackDelete","setAsyncState","stateObject","$data","_asyncComputed","getterOnly","isComputedLazy","isLazyActive","lazyActivePrefix","lazyDataPrefix","initLazy","makeLazyComputed","silentSetLazy","silentGetLazy","getGetterWatchedByArray","computedAsyncProperty","splittedByDot","part","getGetterWatchedByFunction","getWatchedGetter","DidNotUpdate","getGetterWithShouldUpdate","asyncProprety","currentGetter","shouldUpdate","shouldNotUpdate","AsyncComputed","pluginOptions","asyncComputed","$asyncComputed","getterFn","initDataWithAsyncComputed","generateDefault","_key","handleAsyncComputedPropetyChanges","promiseId","newPromise","thisPromise","useRawError","optionData","nonLazy","defaultValue","getOwnPropertyDescriptors","descriptors","formatRegExp","isString","objects","isNull","deprecate","noDeprecation","warned","deprecated","throwDeprecation","traceDeprecation","trace","debugEnviron","debugs","stylize","stylizeNoColor","isBoolean","showHidden","_extend","isUndefined","customInspect","stylizeWithColor","formatValue","styleType","arrayToHash","idx","recurseTimes","primitive","formatPrimitive","visibleKeys","isError","isDate","braces","formatArray","formatProperty","reduceToSingleString","simple","numLinesEst","isNullOrUndefined","isSymbol","pad","debuglog","NODE_DEBUG","months","getHours","getMinutes","getSeconds","getDate","getMonth","inherits","kCustomPromisifiedSymbol","callbackifyOnRejected","newReason","callbackify","TypeError","callbackified","maybeCb","rej","setPrototypeOf","promisify","promiseReject","promise","custom","isLength","boilerplate","isLoading","elevationClasses","article","avatar","button","card","chip","heading","image","paragraph","sentences","bone","generator","genStructure","rootTypes","mapBones","genBones","genBone","onBeforeEnter","onBeforeLeave","bones","genSkeleton","un","generateWarning","defaultImpl","baseAssignValue","stubArray","propertyIsEnumerable","nativeGetSymbols","getSymbols","toSource","reRegExpChar","reIsHostCtor","funcProto","funcToString","reIsNative","__nwjs","setItem","getItem","ECLevel","EC_BLOCKS_TABLE","EC_CODEWORDS_TABLE","getBlocksCount","errorCorrectionLevel","L","M","Q","H","getTotalCodewordsCount","StorageWrapper","MemoryStorage","selectColor","createDebug","prevTime","enabled","curr","coerce","formatter","logFn","instances","names","skips","instance","disable","nullTag","undefinedTag","Stack","arrayEach","baseAssign","cloneBuffer","copyArray","copySymbols","initCloneArray","initCloneByTag","initCloneObject","isMap","isSet","CLONE_FLAT_FLAG","arrayTag","funcTag","genTag","objectTag","weakMapTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","cloneableTags","isDeep","isFlat","isArr","isFunc","subValue","keysFunc","btnToggle","genData","quot","sameValue","regExpExec","SEARCH","$search","previousLastIndex","errorMessages","success","successMessages","validateOnBlur","errorBucket","hasColor","hasFocused","hasInput","isFocused","isResetting","lazyValue","valid","isDisabled","appIsDark","internalErrorMessages","internalSuccessMessages","validationTarget","hasSuccess","shouldValidate","genInternalMessages","internalValue","isReadonly","externalError","internalMessages","oldVal","ObjectProto","openOnHover","calculatedMinWidth","closeDependents","dimensions","unknown","activatorLeft","nudgeLeft","nudgeRight","calcXOverflow","activatorTop","nudgeTop","nudgeBottom","calcYOverflow","calculatedLeft","calculatedTop","callActivate","updateDimensions","startTransition","runDelay","genActivatorListeners","blur","menuable__content__active","activatorFixed","isContentActive","X","toLocaleUpperCase","toLocaleLowerCase","mask","tokens","oninput","selectionEnd","setSelectionRange","masked","lastValue","refresh","onInput","esModule","applicationable","removeApplication","callUpdate","applicationProperty","updateApplication","wksExt","$Symbol","inheritIfRequired","gOPN","$flags","$RegExp","re1","re2","CORRECT_NEW","tiRE","piRE","fiU","getMatchData","parentTheme","theme","internalHeight","generateRouteLink","EventEmitter","Proto","eventHook","eventMappings","isHookEvent","_hookEvents","results","eventMixin","_serviceEvents","isEmitter","alreadyEmits","finally","arrayMap","baseUnset","customOmitClone","omit","customDefaultsMerge","defaultsDeep","getColorAttrib","attrib","alpha","svgCmd","cmd","qrToPath","margin","moveBy","newRow","lineLength","col","row","qrData","getOptions","qrcodesize","bg","svgTag","Service","socketioClient","connection","engine","transport","EIO","defaultService","settings","initialize","scrollTarget","scrollThreshold","currentScroll","currentThreshold","isScrollingUp","previousScroll","savedScroll","canScroll","computedScrollThreshold","thresholdMet","VToolbar","VAppBar","clippedLeft","clippedRight","collapseOnScroll","elevateOnScroll","fadeImgOnScroll","hideOnScroll","invertedScroll","scrollOffScreen","shrinkOnScroll","collapse","fixed","hideShadow","computedContentHeight","computedOriginalHeight","scrollRatio","isProminent","isExtended","extensionHeight","computedHeight","computedTransform","computedFontSize","marginTop","computedMarginTop","computedLeft","computedRight","genBackground","opacity","computedOpacity","server","$feathers","$services","services","feathers","ekeys","beforeDestroy","clearCanvas","canvas","clearRect","getCanvasElement","canvasEl","getImageWidth","createImageData","qrToImageData","putImageData","renderToDataURL","rendererOpts","toDataURL","quality","nativeKeysIn","baseKeysIn","isProto","future","past","mm","hh","dd","MM","yy","fromToBase","en","$locale","thresholds","rounding","$u","utc","toNow","fromNow","merge","arraySome","DataView","promiseTag","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","ArrayBuffer","ctorString","toStringFunction","SUPPORTS","SYMBOL_PROPERTIES","WEAKMAP","createCache","_keys","_values","getCleanClone","realm","getObjectCloneLoose","handleCopy","symbols","length_1","getObjectCloneStrict","properties","getRegExpFlags","regExp","GLOBAL_THIS","copy","isStrict","getObjectClone","allocUnsafe","isView","arch","execPath","title","browser","argv","cwd","chdir","exit","kill","umask","dlopen","uptime","memoryUsage","uvCounters","features","radioGroup","computedId","genInputSlot","genLabel","aFunction","$defineProperty","__defineGetter__","hex2rgba","hexCode","hexValue","g","getScale","qrSize","imgData","qr","symbolSize","scaledMargin","palette","posDst","pxColor","iSrc","jSrc","bitmap","MSIE","boundArgs","baseIsNaN","rootIsDark","createBaseEach","intersect","rotate","radius","isVisible","PI","circumference","normalizedValue","viewBoxSize","calculatedSize","fill","cx","cy","strokeWidth","strokeDashArray","genCircle","strokeDashOffset","svgStyles","isIntersecting","onObserve","genSvg","genInfo","MATCH","$match","fullUnicode","matchStr","expansionPanel","parentIsActive","registerContent","unregisterContent","hashClear","sortBy","sortDesc","customSort","mustSort","multiSort","page","itemsPerPage","groupBy","groupDesc","customGroup","locale","disableSort","disablePagination","disableFiltering","customFilter","serverItemsLength","internalOptions","sortDiff","groupDiff","filteredItems","itemsLength","pageStart","pageStop","pageCount","sortItems","paginateItems","isGrouped","groupItems","computedItems","sortArray","updateOptions","groupedItems","originalItemsLength","computedOptions","oldBy","oldDesc","by","byIndex","findIndex","scopedProps","internalActivator","openOnFocus","activatorElement","activatorNode","slotType","addActivatorEvents","removeActivatorEvents","getValueProxy","genActivatorAttributes","mouseenter","mouseleave","stopPropagation","_activator","badge","dataIterator","noResultsText","loadingText","dataTable","itemsPerPageText","ariaLabel","sortDescending","sortAscending","sortNone","activateNone","activateDescending","activateAscending","dataFooter","itemsPerPageAll","nextPage","prevPage","firstPage","lastPage","pageText","datePicker","itemsSelected","nextMonthAriaLabel","nextYearAriaLabel","prevMonthAriaLabel","prevYearAriaLabel","noDataText","carousel","delimiter","calendar","moreEvents","fileInput","counterSize","timePicker","am","pm","previous","currentPage","rating","lazyValidation","inputs","errorBag","errors","resetErrorBag","resetValidation","watchInput","found","unwatch","novalidate","bordered","dot","inline","offsetX","offsetY","overlap","computedYOffset","isRtl","computedXOffset","calcPosition","rtl","computedBottom","computedTop","genBadgeContent","genBadge","genBadgeWrapper","_x","_y","_z","deburrLetter","reLatin","rsComboMarksRange","reComboHalfMarksRange","rsComboSymbolsRange","rsComboRange","rsCombo","reComboMark","deburr","reWhitespace","trimmedEndIndex","baseFlatten","flatten","qs","qry","pairs","pair","decodeURIComponent","assignMergeValue","cloneTypedArray","isArrayLikeObject","safeGet","toPlainObject","baseMergeDeep","mergeFunc","isBuff","isTyped","arrayAggregator","baseIteratee","createAggregator","initializer","baseTimes","STLLoader","manager","onLoad","onProgress","scope","loader","setPath","setResponseType","requestHeader","itemError","isBinary","face_size","n_faces","getUint32","solid","off","matchDataViewAt","il","getUint8","parseBinary","defaultR","defaultG","defaultB","faces","hasColors","Float32Array","dataOffset","faceLength","geometry","vertices","normals","face","normalX","getFloat32","normalY","normalZ","packedColor","getUint16","vertexstart","componentIdx","parseASCII","patternSolid","patternFace","faceCounter","patternFloat","patternVertex","patternNormal","normal","groupCount","startVertex","endVertex","vertexCountPerFace","normalCountPerFace","addGroup","ensureString","decodeText","ensureBinary","array_buffer","binData","regexpFlags","nativeExec","nativeReplace","patchedExec","UPDATES_LAST_INDEX_WRONG","NPCG_INCLUDED","PATCH","reCopy","center","pathNames","regx","queryKey","$0","$2","authority","ipv6uri","SHARED","copyright","padless","isPositioned","stackHas","$sort","comparefn","DELAY_RIPPLE","webkitTransform","isKeyboardEvent","calculate","localX","localY","touches","_ripple","circle","clientWidth","centerX","centerY","ripples","container","animation","dataset","previousPosition","activated","isHiding","isRippleEnabled","rippleShow","touched","rippleStop","isTouch","showTimerCommit","showTimer","rippleHide","rippleCancelShow","keyboardRipple","keyboardRippleShow","keyboardRippleHide","focusRippleHide","updateRipple","wasEnabled","removeListeners","isBuf","Encoder","Decoder","ERROR_PACKET","encodeAsString","attachments","tryStringify","encodeAsBinary","writeEncoding","bloblessData","deconstruction","deconstructPacket","buffers","removeBlobs","reconstructor","decodeString","tryParse","isPayloadValid","BinaryReconstructor","reconPack","encoding","base64","takeBinaryData","finishedReconstruction","reconstructPacket","appendIcon","noAction","prependIcon","subGroup","listClick","matchRoute","genIcon","genPrependIcon","genAppendIcon","genHeader","genItems","BitMatrix","reservedBit","reserved","xor","withNativeBlob","withNativeFile","File","hasBinary","point","VInput","inverseLabel","step","thumbColor","thumbLabel","thumbSize","tickLabels","ticks","tickSize","trackColor","trackFillColor","thumbPressed","mouseTimeout","noClick","startOffset","minValue","roundValue","maxValue","showTicks","stepNumeric","inputWidth","startDir","endDir","valueDir","trackTransition","validationState","parsed","slider","genSlider","genProgress","onBlur","onSliderClick","mousedown","onSliderMouseDown","touchstart","genChildren","genInput","genTrackContainer","genSteps","genThumbContainer","onFocus","computedTrackColor","trackStyles","computedTrackFillColor","trackFillStyles","range","numTicks","direction","offsetDirection","filled","valueWidth","genThumb","thumbLabelContent","genThumbLabelContent","showThumbLabel","genThumbLabel","computedThumbColor","getThumbContainerStyles","onKeyDown","_e$target","preventDefault","domRect","touch","mouseUpOptions","mouseMoveOptions","onMouseMove","onSliderMouseUp","parseMouseMove","isInteractive","parseKeyDown","thumb","trackStart","trackLength","track","clickOffset","clickPos","pageup","pagedown","home","down","up","steps","increase","multiplier","shiftKey","ctrlKey","trimmedStep","activeThumb","toFocus","startLength","endLength","startPadding","endPadding","padding","sections","section","getTrackStyle","getIndexOfClosestValue","refName","thumbRef","reevaluateSelected","setInternalValue","$","weekdays","utcOffset","year","month","D","$L","$x","$offset","$d","NaN","UTC","$y","getFullYear","$M","$D","$W","getDay","$H","$m","$s","$ms","getMilliseconds","$utils","isSame","startOf","endOf","isAfter","isBefore","$g","unix","toDate","weekStart","daysInMonth","subtract","invalidDate","meridiem","YY","YYYY","MMM","monthsShort","MMMM","DD","weekdaysMin","ddd","weekdaysShort","dddd","HH","ss","SSS","Z","getTimezoneOffset","toISOString","$i","isDayjs","Ls","base64encoder","sliceBuffer","utf8","isAndroid","isPhantomJS","dontSendBlobs","upgrade","packetslist","encodeBase64Object","encodeArrayBuffer","encodeBase64Packet","contentArray","resultBuffer","encodeBlobAsArrayBuffer","fr","FileReader","readAsArrayBuffer","encodeBlob","blob","tryDecode","ary","each","eachWithIndex","utf8encode","b64data","readAsDataURL","typed","basic","btoa","utf8decode","decodeBase64Packet","asArray","rest","encodePayloadAsBlob","encodePayloadAsArrayBuffer","setLengthHeader","encodeOne","doneCallback","decodePayloadAsBinary","chr","encodedPackets","totalLength","acc","resultArray","bufferIndex","ab","lenStr","binaryIdentifier","lengthAry","bufferTail","tailArray","msgLength","EPSILON","isInteger","sign","nextKey","REVISION","MOUSE","LEFT","MIDDLE","RIGHT","ROTATE","DOLLY","PAN","TOUCH","DOLLY_PAN","DOLLY_ROTATE","CullFaceNone","CullFaceBack","CullFaceFront","PCFShadowMap","PCFSoftShadowMap","VSMShadowMap","FrontSide","BackSide","DoubleSide","FlatShading","NoBlending","NormalBlending","AdditiveBlending","SubtractiveBlending","MultiplyBlending","CustomBlending","AddEquation","SubtractEquation","ReverseSubtractEquation","MinEquation","MaxEquation","ZeroFactor","OneFactor","SrcColorFactor","OneMinusSrcColorFactor","SrcAlphaFactor","OneMinusSrcAlphaFactor","DstAlphaFactor","OneMinusDstAlphaFactor","DstColorFactor","OneMinusDstColorFactor","SrcAlphaSaturateFactor","NeverDepth","AlwaysDepth","LessDepth","LessEqualDepth","EqualDepth","GreaterEqualDepth","GreaterDepth","NotEqualDepth","MultiplyOperation","MixOperation","AddOperation","NoToneMapping","LinearToneMapping","ReinhardToneMapping","CineonToneMapping","ACESFilmicToneMapping","CustomToneMapping","UVMapping","CubeReflectionMapping","CubeRefractionMapping","EquirectangularReflectionMapping","EquirectangularRefractionMapping","CubeUVReflectionMapping","CubeUVRefractionMapping","RepeatWrapping","ClampToEdgeWrapping","MirroredRepeatWrapping","NearestFilter","NearestMipmapNearestFilter","NearestMipmapLinearFilter","LinearFilter","LinearMipmapNearestFilter","LinearMipmapLinearFilter","UnsignedByteType","ByteType","ShortType","UnsignedShortType","IntType","UnsignedIntType","FloatType","HalfFloatType","UnsignedShort4444Type","UnsignedShort5551Type","UnsignedShort565Type","UnsignedInt248Type","AlphaFormat","RGBFormat","RGBAFormat","LuminanceFormat","LuminanceAlphaFormat","DepthFormat","DepthStencilFormat","RedFormat","RedIntegerFormat","RGFormat","RGIntegerFormat","RGBIntegerFormat","RGBAIntegerFormat","RGB_S3TC_DXT1_Format","RGBA_S3TC_DXT1_Format","RGBA_S3TC_DXT3_Format","RGBA_S3TC_DXT5_Format","RGB_PVRTC_4BPPV1_Format","RGB_PVRTC_2BPPV1_Format","RGBA_PVRTC_4BPPV1_Format","RGBA_PVRTC_2BPPV1_Format","RGB_ETC1_Format","RGB_ETC2_Format","RGBA_ETC2_EAC_Format","RGBA_ASTC_4x4_Format","RGBA_ASTC_5x4_Format","RGBA_ASTC_5x5_Format","RGBA_ASTC_6x5_Format","RGBA_ASTC_6x6_Format","RGBA_ASTC_8x5_Format","RGBA_ASTC_8x6_Format","RGBA_ASTC_8x8_Format","RGBA_ASTC_10x5_Format","RGBA_ASTC_10x6_Format","RGBA_ASTC_10x8_Format","RGBA_ASTC_10x10_Format","RGBA_ASTC_12x10_Format","RGBA_ASTC_12x12_Format","RGBA_BPTC_Format","SRGB8_ALPHA8_ASTC_4x4_Format","SRGB8_ALPHA8_ASTC_5x4_Format","SRGB8_ALPHA8_ASTC_5x5_Format","SRGB8_ALPHA8_ASTC_6x5_Format","SRGB8_ALPHA8_ASTC_6x6_Format","SRGB8_ALPHA8_ASTC_8x5_Format","SRGB8_ALPHA8_ASTC_8x6_Format","SRGB8_ALPHA8_ASTC_8x8_Format","SRGB8_ALPHA8_ASTC_10x5_Format","SRGB8_ALPHA8_ASTC_10x6_Format","SRGB8_ALPHA8_ASTC_10x8_Format","SRGB8_ALPHA8_ASTC_10x10_Format","SRGB8_ALPHA8_ASTC_12x10_Format","SRGB8_ALPHA8_ASTC_12x12_Format","LoopOnce","LoopRepeat","LoopPingPong","InterpolateDiscrete","InterpolateLinear","InterpolateSmooth","ZeroCurvatureEnding","ZeroSlopeEnding","WrapAroundEnding","NormalAnimationBlendMode","AdditiveAnimationBlendMode","TrianglesDrawMode","LinearEncoding","sRGBEncoding","GammaEncoding","RGBEEncoding","LogLuvEncoding","RGBM7Encoding","RGBM16Encoding","RGBDEncoding","BasicDepthPacking","RGBADepthPacking","TangentSpaceNormalMap","ObjectSpaceNormalMap","KeepStencilOp","AlwaysStencilFunc","StaticDrawUsage","DynamicDrawUsage","GLSL3","EventDispatcher","_listeners","hasEventListener","listenerArray","_lut","_seed","MathUtils","DEG2RAD","RAD2DEG","d0","d1","d2","d3","uuid","clamp","euclideanModulo","mapLinear","a1","a2","b1","b2","lerp","smoothstep","smootherstep","randInt","randFloat","randFloatSpread","seededRandom","degToRad","degrees","radToDeg","radians","isPowerOfTwo","ceilPowerOfTwo","LN2","floorPowerOfTwo","setQuaternionFromProperEuler","cos","sin","c13","s13","c1_3","s1_3","c3_1","s3_1","Vector2","scalar","addVectors","subVectors","multiplyScalar","elements","minVal","maxVal","divideScalar","angle","atan2","distanceToSquared","v1","v2","getX","getY","Matrix3","n11","n12","n13","n21","n22","n23","n31","n32","n33","te","fromArray","me","xAxis","yAxis","zAxis","setFromMatrix3Column","multiplyMatrices","ae","be","a11","a12","a13","a21","a22","a23","a31","a32","a33","b11","b12","b13","b21","b22","b23","b31","b32","b33","matrix","throwOnDegenerate","t11","t12","t13","det","detInv","matrix4","setFromMatrix4","getInverse","transpose","tx","ty","sx","sy","rotation","theta","_canvas","ImageUtils","getDataURL","HTMLCanvasElement","ImageData","drawImage","textureId","Texture","mapping","wrapS","wrapT","magFilter","minFilter","anisotropy","DEFAULT_IMAGE","mipmaps","DEFAULT_MAPPING","internalFormat","repeat","matrixAutoUpdate","generateMipmaps","premultiplyAlpha","flipY","unpackAlignment","onUpdate","isTexture","updateMatrix","setUvTransform","meta","isRootObject","textures","images","dispose","transformUv","uv","applyMatrix3","Vector4","acos","epsilon","epsilon2","m11","m12","m13","m21","m22","m23","m31","m32","m33","xx","zz","xy","xz","yz","getZ","getW","WebGLRenderTarget","scissor","scissorTest","texture","depthBuffer","stencilBuffer","depthTexture","WebGLMultisampleRenderTarget","samples","isWebGLRenderTarget","setSize","isWebGLMultisampleRenderTarget","Quaternion","_w","qa","qb","qm","slerp","dst","dstOffset","src0","srcOffset0","src1","srcOffset1","x0","y0","z0","w0","x1","y1","z1","w1","sqrSin","tDir","_onChangeCallback","quaternion","euler","isEuler","_order","c1","c3","s3","axis","halfAngle","vFrom","vTo","EPS","angleTo","conjugate","multiplyQuaternions","qax","qay","qaz","qaw","qbx","qby","qbz","qbw","cosHalfTheta","sqrSinHalfTheta","sinHalfTheta","halfTheta","ratioA","ratioB","Vector3","multiplyVectors","applyQuaternion","_quaternion","setFromEuler","setFromAxisAngle","qx","qy","qz","qw","ix","iy","iz","iw","camera","applyMatrix4","matrixWorldInverse","projectionMatrix","projectionMatrixInverse","matrixWorld","crossVectors","ax","ay","az","bx","bz","denominator","lengthSq","planeNormal","_vector","projectOnVector","dz","setFromSphericalCoords","phi","sinPhiRadius","setFromCylindricalCoords","setFromMatrixColumn","sz","Box3","minX","minY","minZ","maxX","maxY","maxZ","points","makeEmpty","expandByPoint","halfSize","_vector$1","expandByObject","box","vector","addScalar","updateWorldMatrix","boundingBox","computeBoundingBox","_box","union","sphere","clampPoint","plane","constant","triangle","getCenter","_center","_extents","_v0","_v1","_v2","_f0","_f1","_f2","axes","satForAxes","_triangleNormal","clampedPoint","_points","setFromPoints","v0","extents","_testAxis","p0","_box$1","Sphere","optionalCenter","maxRadiusSq","distanceTo","radiusSum","intersectsSphere","distanceToPoint","deltaLengthSq","expandByScalar","getMaxScaleOnAxis","_vector$2","_segCenter","_segDir","_diff","_edge1","_edge2","_normal","Ray","ray","directionDistance","distanceSqToPoint","optionalPointOnRay","optionalPointOnSegment","segExtent","a01","b0","s0","sqrDist","extDet","invDet","tca","radius2","thc","t0","t1","distanceToPlane","distToPoint","tmin","tmax","tymin","tymax","tzmin","tzmax","invdirx","invdiry","invdirz","intersectBox","backfaceCulling","DdN","DdQxE2","DdE1xQ","cross","QdN","transformDirection","Matrix4","n14","n24","n34","n41","n42","n43","n44","scaleX","_v1$1","scaleY","scaleZ","af","bf","ce","cf","de","df","ac","ad","bc","bd","compose","_zero","_one","eye","a14","a24","a34","a41","a42","a43","a44","b14","b24","b34","b41","b42","b43","b44","isVector3","t14","scaleXSq","scaleYSq","scaleZSq","x2","y2","z2","wx","wy","wz","determinant","_m1","invSX","invSY","invSZ","setFromRotationMatrix","near","far","Euler","DefaultOrder","asin","_matrix","makeRotationFromQuaternion","newOrder","_quaternion$1","setFromQuaternion","optionalResult","RotationOrders","Layers","layers","_object3DId","_v1$2","_q1","_m1$1","_position","_scale","_quaternion$2","_xAxis","_yAxis","_zAxis","_addedEvent","_removedEvent","Object3D","DefaultUp","onRotationChange","onQuaternionChange","_onChange","modelViewMatrix","normalMatrix","DefaultMatrixAutoUpdate","matrixWorldNeedsUpdate","visible","castShadow","receiveShadow","frustumCulled","renderOrder","userData","isObject3D","onBeforeRender","onAfterRender","premultiply","decompose","setRotationFromAxisAngle","setRotationFromEuler","setRotationFromMatrix","setRotationFromQuaternion","rotateOnAxis","multiply","rotateOnWorldAxis","rotateX","rotateY","rotateZ","translateOnAxis","distance","translateX","translateY","translateZ","localToWorld","worldToLocal","lookAt","setFromMatrixPosition","isCamera","isLight","extractRotation","inverse","getObjectById","getObjectByProperty","getObjectByName","getWorldPosition","updateMatrixWorld","getWorldQuaternion","getWorldScale","getWorldDirection","raycast","traverseVisible","traverseAncestors","updateParents","geometries","materials","shapes","serialize","library","isInstancedMesh","instanceMatrix","isMesh","isLine","isPoints","shape","material","uuids","extractFromCache","recursive","_vector1","_vector2","_normalMatrix","Plane","setFromNormalAndCoplanarPoint","inverseNormalLength","negate","delta","startSign","endSign","intersectsPlane","optionalNormalMatrix","getNormalMatrix","referencePoint","coplanarPoint","_v0$1","_v1$3","_v2$1","_v3","_vab","_vac","_vbc","_vap","_vbp","_vcp","Triangle","targetLengthSq","dot00","dot01","dot02","dot11","dot12","denom","invDenom","getBarycoord","p3","uv1","uv2","uv3","addScaledVector","i0","i1","i2","getNormal","setFromCoplanarPoints","getUV","containsPoint","isFrontFacing","intersectsTriangle","d4","vc","d5","d6","vb","va","_colorKeywords","_hslA","_hslB","hue2rgb","SRGBToLinear","LinearToSRGB","Color","setRGB","isColor","setHex","setStyle","handleAlpha","setHSL","setColorName","gammaFactor","safeInverse","copyGammaToLinear","copyLinearToGamma","copySRGBToLinear","copyLinearToSRGB","getHex","hue","saturation","lightness","getHSL","color1","color2","NAMES","Face3","materialIndex","vertexNormals","vertexColors","materialId","Material","fog","blending","side","flatShading","transparent","blendSrc","blendDst","blendEquation","blendSrcAlpha","blendDstAlpha","blendEquationAlpha","depthFunc","depthTest","depthWrite","stencilWriteMask","stencilFunc","stencilRef","stencilFuncMask","stencilFail","stencilZFail","stencilZPass","stencilWrite","clippingPlanes","clipIntersection","clipShadows","shadowSide","colorWrite","precision","polygonOffset","polygonOffsetFactor","polygonOffsetUnits","dithering","alphaTest","premultipliedAlpha","toneMapped","MeshBasicMaterial","lightMap","lightMapIntensity","aoMap","aoMapIntensity","specularMap","alphaMap","envMap","reflectivity","refractionRatio","wireframe","wireframeLinewidth","wireframeLinecap","wireframeLinejoin","skinning","morphTargets","setValues","isMaterial","onBeforeCompile","customProgramCacheKey","currentValue","roughness","metalness","sheen","emissive","emissiveIntensity","specular","shininess","clearcoat","clearcoatRoughness","clearcoatMap","clearcoatRoughnessMap","clearcoatNormalMap","clearcoatNormalScale","matcap","bumpMap","bumpScale","normalMap","normalMapType","normalScale","displacementMap","displacementScale","displacementBias","roughnessMap","metalnessMap","emissiveMap","envMapIntensity","gradientMap","sizeAttenuation","linewidth","dashSize","gapSize","morphNormals","srcPlanes","dstPlanes","isMeshBasicMaterial","_vector$3","_vector2$1","BufferAttribute","itemSize","usage","updateRange","Int8BufferAttribute","Int8Array","Uint8BufferAttribute","Uint8ClampedBufferAttribute","Uint8ClampedArray","Int16BufferAttribute","Int16Array","Uint16BufferAttribute","Int32BufferAttribute","Int32Array","Uint32BufferAttribute","Float32BufferAttribute","Float64BufferAttribute","Float64Array","isBufferAttribute","onUploadCallback","setUsage","copyAt","index1","index2","copyColorsArray","copyVector2sArray","vectors","copyVector3sArray","copyVector4sArray","fromBufferAttribute","setXY","setXYZ","applyNormalMatrix","setX","setY","setZ","setW","setXYZW","onUpload","DirectGeometry","uvs","uvs2","skinWeights","skinIndices","boundingSphere","verticesNeedUpdate","normalsNeedUpdate","colorsNeedUpdate","uvsNeedUpdate","groupsNeedUpdate","faceVertexUvs","hasFaceVertexUv","hasFaceVertexUv2","morphTargetsLength","morphTargetsPosition","morphNormalsLength","morphTargetsNormal","hasSkinIndices","hasSkinWeights","vertexUvs","morphTarget","morphNormal","computeGroups","arrayMax","_bufferGeometryId","_m1$2","_obj","_offset","_box$2","_boxMorphTargets","_vector$4","BufferGeometry","morphAttributes","morphTargetsRelative","drawRange","isBufferGeometry","getIndex","setIndex","deleteAttribute","clearGroups","setDrawRange","needsUpdate","tangent","computeBoundingSphere","makeRotationX","makeRotationY","makeRotationZ","translate","makeTranslation","makeScale","setFromObject","lineDistances","isGeometry","fromGeometry","updateFromObject","__directGeometry","elementsNeedUpdate","lineDistancesNeedUpdate","lineDistance","fromDirectGeometry","morphAttributesPosition","isGLBufferAttribute","setFromBufferAttribute","morphAttribute","jl","computeFaceNormals","computeVertexNormals","positionAttribute","normalAttribute","pA","pB","pC","nA","nB","nC","vA","vB","vC","normalizeNormals","attribute1","attributeArray1","attribute2","attributeArray2","attributeOffset","toNonIndexed","convertBufferAttribute","indices","array2","geometry2","newAttribute","morphArray","attributeData","hasMorphAttributes","attributeArray","_inverseMatrix","_ray","_sphere","_vA","_vB","_vC","_tempA","_tempB","_tempC","_morphA","_morphB","_morphC","_uvA","_uvB","_uvC","_intersectionPoint","_intersectionPointWorld","Mesh","updateMorphTargets","checkIntersection","raycaster","intersectTriangle","checkBufferGeometryIntersection","morphPosition","morphInfluences","morphTargetInfluences","influence","isSkinnedMesh","boneTransform","intersection","morphTargetDictionary","ml","intersects","intersectsBox","groupMaterial","faceIndex","isMultiMaterial","fl","faceMaterial","fvA","fvB","fvC","uvs_f","_geometryId","_m1$3","_obj$1","_offset$1","Geometry","vertex","fromBufferGeometry","addFace","areaWeighted","vl","computeFlatVertexNormals","computeMorphNormals","__originalFaceNormal","__originalVertexNormals","tmpGeo","faceNormals","dstNormalsFace","dstNormalsVertex","faceNormal","materialIndexOffset","vertexOffset","vertices1","vertices2","faces1","faces2","colors1","colors2","vertexCopy","faceVertexNormals","faceVertexColors","faceCopy","faceVertexUvs2","uvsCopy","kl","mergeMesh","mesh","mergeVertices","verticesMap","unique","changes","precisionPoints","faceIndicesToRemove","sortFacesByMaterialIndex","materialIndexSort","uvs1","newUvs1","newUvs2","normalsHash","colorsHash","uvsHash","hasMaterial","hasFaceUv","hasFaceNormal","hasFaceVertexNormal","hasFaceColor","hasFaceVertexColor","faceType","setBit","getUvIndex","getNormalIndex","getColorIndex","srcVertexNormal","destVertexNormal","BoxGeometry","widthSegments","heightSegments","depthSegments","BoxBufferGeometry","numberOfVertices","groupStart","buildPlane","udir","vdir","gridX","gridY","segmentWidth","segmentHeight","widthHalf","heightHalf","depthHalf","gridX1","gridY1","vertexCounter","cloneUniforms","isMatrix3","isMatrix4","isVector2","isVector4","mergeUniforms","uniforms","UniformsUtils","default_vertex","default_fragment","ShaderMaterial","defines","vertexShader","fragmentShader","lights","clipping","extensions","derivatives","fragDepth","drawBuffers","shaderTextureLOD","defaultAttributeValues","index0AttributeName","uniformsNeedUpdate","glslVersion","Camera","PerspectiveCamera","fov","aspect","zoom","filmGauge","filmOffset","updateProjectionMatrix","isShaderMaterial","uniform","isPerspectiveCamera","setFocalLength","focalLength","vExtentSlope","getFilmHeight","atan","getFocalLength","tan","getEffectiveFOV","getFilmWidth","setViewOffset","fullWidth","fullHeight","clearViewOffset","skew","makePerspective","CubeCamera","renderTarget","isWebGLCubeRenderTarget","cameraPX","cameraNX","cameraPY","cameraNY","cameraPZ","cameraNZ","renderer","scene","currentXrEnabled","xr","currentRenderTarget","getRenderTarget","setRenderTarget","stencil","WebGLCubeRenderTarget","dummy","isWebGLCubeRenderTargetTexture","DataTexture","fromEquirectangularTexture","shader","tEquirect","currentMinFilter","isDataTexture","_sphere$1","_vector$5","Frustum","p4","p5","planes","frustum","me0","me1","me2","me3","me4","me5","me6","me7","me8","me9","me10","me11","me12","me13","me14","me15","setComponents","sprite","negRadius","WebGLAnimation","isAnimating","animationLoop","requestId","onAnimationFrame","setAnimationLoop","WebGLAttributes","gl","capabilities","isWebGL2","createBuffer","bufferType","bindBuffer","bufferData","bytesPerElement","BYTES_PER_ELEMENT","updateBuffer","bufferSubData","isInterleavedBufferAttribute","deleteBuffer","elementSize","PlaneGeometry","PlaneBufferGeometry","width_half","height_half","segment_width","segment_height","alphamap_fragment","alphamap_pars_fragment","alphatest_fragment","aomap_fragment","aomap_pars_fragment","begin_vertex","beginnormal_vertex","bsdfs","bumpmap_pars_fragment","clipping_planes_fragment","clipping_planes_pars_fragment","clipping_planes_pars_vertex","clipping_planes_vertex","color_fragment","color_pars_fragment","color_pars_vertex","color_vertex","common","cube_uv_reflection_fragment","defaultnormal_vertex","displacementmap_pars_vertex","displacementmap_vertex","emissivemap_fragment","emissivemap_pars_fragment","encodings_fragment","encodings_pars_fragment","envmap_fragment","envmap_common_pars_fragment","envmap_pars_fragment","envmap_pars_vertex","envmap_vertex","fog_vertex","fog_pars_vertex","fog_fragment","fog_pars_fragment","gradientmap_pars_fragment","lightmap_fragment","lightmap_pars_fragment","lights_lambert_vertex","lights_pars_begin","envmap_physical_pars_fragment","lights_toon_fragment","lights_toon_pars_fragment","lights_phong_fragment","lights_phong_pars_fragment","lights_physical_fragment","lights_physical_pars_fragment","lights_fragment_begin","lights_fragment_maps","lights_fragment_end","logdepthbuf_fragment","logdepthbuf_pars_fragment","logdepthbuf_pars_vertex","logdepthbuf_vertex","map_fragment","map_pars_fragment","map_particle_fragment","map_particle_pars_fragment","metalnessmap_fragment","metalnessmap_pars_fragment","morphnormal_vertex","morphtarget_pars_vertex","morphtarget_vertex","normal_fragment_begin","normal_fragment_maps","normalmap_pars_fragment","clearcoat_normal_fragment_begin","clearcoat_normal_fragment_maps","clearcoat_pars_fragment","packing","premultiplied_alpha_fragment","project_vertex","dithering_fragment","dithering_pars_fragment","roughnessmap_fragment","roughnessmap_pars_fragment","shadowmap_pars_fragment","shadowmap_pars_vertex","shadowmap_vertex","shadowmask_pars_fragment","skinbase_vertex","skinning_pars_vertex","skinning_vertex","skinnormal_vertex","specularmap_fragment","specularmap_pars_fragment","tonemapping_fragment","tonemapping_pars_fragment","transmissionmap_fragment","transmissionmap_pars_fragment","uv_pars_fragment","uv_pars_vertex","uv_vertex","uv2_pars_fragment","uv2_pars_vertex","uv2_vertex","worldpos_vertex","background_frag","background_vert","cube_frag","cube_vert","depth_frag","depth_vert","distanceRGBA_frag","distanceRGBA_vert","equirect_frag","equirect_vert","linedashed_frag","linedashed_vert","meshbasic_frag","meshbasic_vert","meshlambert_frag","meshlambert_vert","meshmatcap_frag","meshmatcap_vert","meshtoon_frag","meshtoon_vert","meshphong_frag","meshphong_vert","meshphysical_frag","meshphysical_vert","normal_frag","normal_vert","points_frag","points_vert","shadow_frag","shadow_vert","sprite_frag","sprite_vert","ShaderChunk","UniformsLib","diffuse","uvTransform","uv2Transform","specularmap","envmap","flipEnvMap","maxMipLevel","aomap","lightmap","emissivemap","bumpmap","normalmap","displacementmap","roughnessmap","metalnessmap","gradientmap","fogDensity","fogNear","fogFar","fogColor","ambientLightColor","lightProbe","directionalLights","directionalLightShadows","shadowBias","shadowNormalBias","shadowRadius","shadowMapSize","directionalShadowMap","directionalShadowMatrix","spotLights","coneCos","penumbraCos","decay","spotLightShadows","spotShadowMap","spotShadowMatrix","pointLights","pointLightShadows","shadowCameraNear","shadowCameraFar","pointShadowMap","pointShadowMatrix","hemisphereLights","skyColor","groundColor","rectAreaLights","ltc_1","ltc_2","ShaderLib","lambert","phong","standard","toon","dashed","totalSize","background","t2D","cube","equirect","distanceRGBA","referencePosition","nearDistance","farDistance","shadow","WebGLBackground","cubemaps","clearColor","planeMesh","boxMesh","clearAlpha","currentBackground","currentBackgroundVersion","currentTonemapping","forceClear","isScene","environmentBlendMode","setClear","autoClear","autoClearColor","autoClearDepth","autoClearStencil","isCubeTexture","copyPosition","toneMapping","getClearColor","setClearColor","getClearAlpha","setClearAlpha","WebGLBindingStates","maxVertexAttributes","getParameter","vaoAvailable","bindingStates","defaultState","createBindingState","currentState","setup","program","updateBuffers","getBindingState","bindVertexArrayObject","saveCache","setupVertexAttributes","createVertexArrayObject","createVertexArray","createVertexArrayOES","vao","bindVertexArray","bindVertexArrayOES","deleteVertexArrayObject","deleteVertexArray","deleteVertexArrayOES","programMap","stateMap","newAttributes","enabledAttributes","attributeDivisors","cachedAttributes","geometryAttributes","cachedAttribute","geometryAttribute","initAttributes","enableAttribute","enableAttributeAndDivisor","meshPerAttribute","enableVertexAttribArray","disableUnusedAttributes","disableVertexAttribArray","vertexAttribPointer","stride","vertexAttribIPointer","isInstancedBufferGeometry","programAttributes","getAttributes","materialDefaultAttributeValues","programAttribute","isInstancedInterleavedBuffer","_maxInstanceCount","isInstancedBufferAttribute","instanceColor","vertexAttrib2fv","vertexAttrib3fv","vertexAttrib4fv","vertexAttrib1fv","geometryId","programId","releaseStatesOfGeometry","releaseStatesOfProgram","resetDefaultState","WebGLBufferRenderer","setMode","drawArrays","renderInstances","primcount","methodName","WebGLCapabilities","maxAnisotropy","getMaxAnisotropy","MAX_TEXTURE_MAX_ANISOTROPY_EXT","getMaxPrecision","getShaderPrecisionFormat","WebGL2RenderingContext","WebGL2ComputeRenderingContext","maxPrecision","logarithmicDepthBuffer","maxTextures","maxVertexTextures","maxTextureSize","maxCubemapSize","maxAttributes","maxVertexUniforms","maxVaryings","maxFragmentUniforms","vertexTextures","floatFragmentTextures","floatVertexTextures","maxSamples","WebGLClipping","globalState","numGlobalPlanes","localClippingEnabled","renderingShadows","viewNormalMatrix","resetGlobalState","numPlanes","numIntersection","projectPlanes","skipTransform","nPlanes","dstArray","flatSize","viewMatrix","i4","enableLocalClipping","beginShadows","endShadows","setState","useCache","materialProperties","nGlobal","lGlobal","clippingState","WebGLCubeMaps","mapTextureMapping","cubemap","currentRenderList","getRenderList","currentRenderState","getRenderState","setRenderList","setRenderState","WebGLExtensions","getExtension","WebGLGeometries","wireframeAttributes","onGeometryDispose","buffergeometry","memory","_bufferGeometry","updateWireframeAttribute","geometryIndex","geometryPosition","previousAttribute","getWireframeAttribute","currentAttribute","WebGLIndexedBufferRenderer","drawElements","WebGLInfo","calls","triangles","lines","instanceCount","programs","autoReset","numericalSort","absNumericalSort","WebGLMorphtargets","influencesList","workInfluences","objectInfluences","influences","MAX_SAFE_INTEGER","morphInfluencesSum","morphBaseInfluence","getUniforms","setValue","WebGLObjects","updateMap","CubeTexture","DataTexture2DArray","wrapR","DataTexture3D","physical","transmission","transmissionMap","isDataTexture2DArray","isDataTexture3D","emptyTexture","emptyTexture2dArray","emptyTexture3d","emptyCubeTexture","arrayCacheF32","arrayCacheI32","mat4array","mat3array","mat2array","nBlocks","blockSize","firstElem","arraysEqual","allocTexUnits","allocateTextureUnit","setValueV1f","uniform1f","addr","setValueV2f","uniform2f","uniform2fv","setValueV3f","uniform3f","uniform3fv","setValueV4f","uniform4f","uniform4fv","setValueM2","uniformMatrix2fv","setValueM3","uniformMatrix3fv","setValueM4","uniformMatrix4fv","setValueT1","unit","uniform1i","safeSetTexture2D","setValueT2DArray1","setTexture2DArray","setValueT3D1","setTexture3D","setValueT6","safeSetTextureCube","setValueV1i","setValueV2i","uniform2iv","setValueV3i","uniform3iv","setValueV4i","uniform4iv","setValueV1ui","uniform1ui","getSingularSetter","setValueV1fArray","uniform1fv","setValueV1iArray","uniform1iv","setValueV2iArray","setValueV3iArray","setValueV4iArray","setValueV2fArray","setValueV3fArray","setValueV4fArray","setValueM2Array","setValueM3Array","setValueM4Array","setValueT1Array","units","setValueT6Array","getPureArraySetter","SingleUniform","activeInfo","PureArrayUniform","StructuredUniform","seq","updateCache","RePathPart","addUniform","uniformObject","parseUniform","pathLength","matchEnd","idIsIndex","subscript","WebGLUniforms","getProgramParameter","getActiveUniform","getUniformLocation","WebGLShader","createShader","shaderSource","compileShader","setOptional","upload","seqWithValue","programIdCount","addLineNumbers","getEncodingComponents","getShaderErrors","getShaderParameter","getShaderInfoLog","getShaderSource","getTexelDecodingFunction","functionName","getTexelEncodingFunction","getToneMappingFunction","toneMappingName","generateExtensions","extensionDerivatives","envMapCubeUV","tangentSpaceNormalMap","shaderID","extensionFragDepth","rendererExtensionFragDepth","extensionDrawBuffers","rendererExtensionDrawBuffers","extensionShaderTextureLOD","rendererExtensionShaderTextureLod","filterEmptyLine","generateDefines","fetchAttributeLocations","getActiveAttrib","getAttribLocation","replaceLightNums","numDirLights","numSpotLights","numRectAreaLights","numPointLights","numHemiLights","numDirLightShadows","numSpotLightShadows","numPointLightShadows","replaceClippingPlaneNums","numClippingPlanes","numClipIntersection","includePattern","resolveIncludes","includeReplacer","deprecatedUnrollLoopPattern","unrollLoopPattern","unrollLoops","loopReplacer","deprecatedLoopReplacer","snippet","generatePrecision","precisionstring","generateShadowMapTypeDefine","shadowMapTypeDefine","shadowMapType","generateEnvMapTypeDefine","envMapTypeDefine","envMapMode","generateEnvMapModeDefine","envMapModeDefine","generateEnvMapBlendingDefine","envMapBlendingDefine","WebGLProgram","gammaFactorDefine","customExtensions","customDefines","createProgram","prefixVertex","prefixFragment","versionString","isRawShaderMaterial","shaderName","instancing","instancingColor","supportsVertexTextures","maxBones","useFog","fogExp2","objectSpaceNormalMap","vertexTangents","uvsVertexOnly","useVertexTexture","doubleSided","flipSided","shadowMapEnabled","physicallyCorrectLights","mapEncoding","matcapEncoding","envMapEncoding","emissiveMapEncoding","lightMapEncoding","outputEncoding","depthPacking","vertexGlsl","fragmentGlsl","glVertexShader","glFragmentShader","attachShader","bindAttribLocation","linkProgram","checkShaderErrors","programLog","getProgramInfoLog","vertexLog","fragmentLog","runnable","haveDiagnostics","vertexErrors","fragmentErrors","getError","diagnostics","cachedUniforms","deleteShader","deleteProgram","usedTimes","WebGLPrograms","shaderIDs","MeshDepthMaterial","MeshDistanceMaterial","MeshNormalMaterial","MeshLambertMaterial","MeshPhongMaterial","MeshToonMaterial","MeshStandardMaterial","MeshPhysicalMaterial","MeshMatcapMaterial","LineBasicMaterial","LineDashedMaterial","PointsMaterial","ShadowMaterial","SpriteMaterial","parameterNames","getMaxBones","skeleton","nVertexUniforms","nVertexMatrices","getTextureEncodingFromMap","getParameters","shadows","environment","isMeshStandardMaterial","isFogExp2","maxMorphTargets","maxMorphNormals","directional","spot","rectArea","hemi","shadowMap","getProgramCacheKey","acquireProgram","pl","preexistingProgram","releaseProgram","WebGLProperties","painterSortStable","groupOrder","reversePainterSortStable","WebGLRenderList","renderItems","renderItemsIndex","opaque","defaultProgram","getNextRenderItem","renderItem","customOpaqueSort","customTransparentSort","finish","WebGLRenderLists","lists","cameras","UniformsCache","halfWidth","halfHeight","ShadowUniformsCache","nextVersion","shadowCastingLightsFirst","lightA","lightB","WebGLLights","shadowCache","directionalLength","pointLength","spotLength","rectAreaLength","hemiLength","numDirectionalShadows","numPointShadows","numSpotShadows","ambient","probe","directionalShadow","spotShadow","rectAreaLTC1","rectAreaLTC2","pointShadow","vector3","matrix42","intensity","isAmbientLight","isLightProbe","sh","coefficients","isDirectionalLight","shadowUniforms","bias","normalBias","mapSize","isSpotLight","penumbra","isRectAreaLight","isPointLight","isHemisphereLight","LTC_1","LTC_2","WebGLRenderState","lightsArray","shadowsArray","pushLight","pushShadow","shadowLight","setupLights","WebGLRenderStates","renderStates","renderState","isMeshDepthMaterial","isMeshDistanceMaterial","vsm_frag","vsm_vert","WebGLShadowMap","_renderer","_objects","_frustum","_shadowMapSize","_viewportSize","_viewport","_depthMaterials","_distanceMaterials","_materialCache","shadowMaterialVertical","SAMPLE_RATE","HALF_SAMPLE_RATE","shadow_pass","resolution","shadowMaterialHorizonal","HORIZONAL_PASS","fullScreenTri","fullScreenMesh","VSMPass","mapPass","renderBufferDirect","getDepthMaterialVariant","useMorphing","useSkinning","useInstancing","getDistanceMaterialVariant","getDepthMaterial","getMaterialVariant","customMaterial","customDepthMaterial","customDistanceMaterial","keyA","keyB","materialsForVariant","cachedMaterial","renderObject","shadowCamera","intersectsObject","depthMaterial","autoUpdate","activeCubeFace","getActiveCubeFace","activeMipmapLevel","getActiveMipmapLevel","_state","setBlending","setTest","setScissorTest","shadowFrameExtents","getFrameExtents","isPointLightShadow","pars","viewportCount","getViewportCount","vp","getViewport","updateMatrices","getFrustum","WebGLState","ColorBuffer","locked","currentColorMask","currentColorClear","setMask","colorMask","setLocked","DepthBuffer","currentDepthMask","currentDepthFunc","currentDepthClear","depthMask","setFunc","clearDepth","StencilBuffer","currentStencilMask","currentStencilFunc","currentStencilRef","currentStencilFuncMask","currentStencilFail","currentStencilZFail","currentStencilZPass","currentStencilClear","stencilTest","stencilMask","setOp","stencilOp","clearStencil","colorBuffer","enabledCapabilities","currentProgram","currentBlendingEnabled","currentBlending","currentBlendEquation","currentBlendSrc","currentBlendDst","currentBlendEquationAlpha","currentBlendSrcAlpha","currentBlendDstAlpha","currentPremultipledAlpha","currentFlipSided","currentCullFace","currentLineWidth","currentPolygonOffsetFactor","currentPolygonOffsetUnits","lineWidthAvailable","glVersion","currentTextureSlot","currentBoundTextures","currentScissor","currentViewport","createTexture","bindTexture","texParameteri","texImage2D","emptyTextures","useProgram","setFlipSided","setCullFace","equationToGL","MIN_EXT","MAX_EXT","factorToGL","blendEquationSeparate","blendFuncSeparate","blendFunc","setMaterial","frontFaceCW","setPolygonOffset","frontFace","cullFace","setLineWidth","lineWidth","activeTexture","webglSlot","webglType","webglTexture","boundTexture","unbindTexture","compressedTexImage2D","texImage3D","WebGLTextures","_gl","utils","_videoTextures","useOffscreenCanvas","OffscreenCanvas","createCanvas","resizeImage","needsPowerOfTwo","needsNewCanvas","maxSize","HTMLImageElement","ImageBitmap","textureNeedsPowerOfTwo","textureNeedsGenerateMipmaps","supportsMips","generateMipmap","textureProperties","__maxMipLevel","LOG2E","getInternalFormat","internalFormatName","glFormat","glType","filterFallback","onTextureDispose","deallocateTexture","isVideoTexture","onRenderTargetDispose","deallocateRenderTarget","__webglInit","deleteTexture","__webglTexture","renderTargetProperties","deleteFramebuffer","__webglFramebuffer","__webglDepthbuffer","deleteRenderbuffer","__webglMultisampledFramebuffer","__webglColorRenderbuffer","__webglDepthRenderbuffer","textureUnits","resetTextureUnits","textureUnit","setTexture2D","updateVideoTexture","__version","uploadTexture","setTextureCube","initTexture","pixelStorei","isCompressed","isCompressedTexture","cubeImage","glInternalFormat","setTextureParameters","mipmap","mipmapImage","setTextureCubeDynamic","wrappingToGL","filterToGL","textureType","__currentAnisotropy","texParameterf","TEXTURE_MAX_ANISOTROPY_EXT","isDepthTexture","setupFrameBufferTexture","framebuffer","attachment","textureTarget","bindFramebuffer","framebufferTexture2D","setupRenderBufferStorage","renderbuffer","isMultisample","bindRenderbuffer","getRenderTargetSamples","renderbufferStorageMultisample","renderbufferStorage","framebufferRenderbuffer","setupDepthTexture","isCube","webglDepthTexture","setupDepthRenderbuffer","createRenderbuffer","setupRenderTarget","createFramebuffer","updateRenderTargetMipmap","updateMultisampleRenderTarget","blitFramebuffer","warnedTexture2D","warnedTextureCube","WebGLUtils","HALF_FLOAT_OES","COMPRESSED_RGB_S3TC_DXT1_EXT","COMPRESSED_RGBA_S3TC_DXT1_EXT","COMPRESSED_RGBA_S3TC_DXT3_EXT","COMPRESSED_RGBA_S3TC_DXT5_EXT","COMPRESSED_RGB_PVRTC_4BPPV1_IMG","COMPRESSED_RGB_PVRTC_2BPPV1_IMG","COMPRESSED_RGBA_PVRTC_4BPPV1_IMG","COMPRESSED_RGBA_PVRTC_2BPPV1_IMG","COMPRESSED_RGB_ETC1_WEBGL","COMPRESSED_RGB8_ETC2","COMPRESSED_RGBA8_ETC2_EAC","UNSIGNED_INT_24_8_WEBGL","ArrayCamera","Group","WebXRController","_targetRay","_grip","_hand","WebXRManager","framebufferScaleFactor","referenceSpace","referenceSpaceType","pose","controllers","inputSourcesMap","cameraL","cameraR","cameraVR","_currentDepthNear","_currentDepthFar","onSessionEvent","inputSource","onSessionEnd","setFramebuffer","isPresenting","onRequestReferenceSpace","updateInputSources","inputSources","added","getController","getTargetRaySpace","getControllerGrip","getGripSpace","getHand","getHandSpace","setFramebufferScaleFactor","setReferenceSpaceType","getReferenceSpace","getContextAttributes","xrCompatible","makeXRCompatible","layerInit","antialias","baseLayer","XRWebGLLayer","updateRenderState","requestReferenceSpace","cameraLPos","cameraRPos","setProjectionFromUnion","ipd","projL","projR","topFov","bottomFov","leftFov","rightFov","zOffset","xOffset","near2","far2","left2","right2","top2","bottom2","updateCamera","getCamera","depthNear","depthFar","onAnimationFrameCallback","getViewerPose","views","cameraVRNeedsUpdate","WebGLMaterials","refreshFogUniforms","isFog","density","refreshMaterialUniforms","pixelRatio","refreshUniformsCommon","isMeshLambertMaterial","refreshUniformsLambert","isMeshToonMaterial","refreshUniformsToon","isMeshPhongMaterial","refreshUniformsPhong","isMeshPhysicalMaterial","refreshUniformsPhysical","refreshUniformsStandard","isMeshMatcapMaterial","refreshUniformsMatcap","refreshUniformsDepth","refreshUniformsDistance","isMeshNormalMaterial","refreshUniformsNormal","isLineBasicMaterial","refreshUniformsLine","isLineDashedMaterial","refreshUniformsDash","isPointsMaterial","refreshUniformsPoints","isSpriteMaterial","refreshUniformsSprites","isShadowMaterial","uvScaleMap","uv2ScaleMap","WebGLRenderer","_context","_alpha","_depth","_stencil","_antialias","_premultipliedAlpha","_preserveDrawingBuffer","preserveDrawingBuffer","_powerPreference","powerPreference","_failIfMajorPerformanceCaveat","failIfMajorPerformanceCaveat","domElement","sortObjects","toneMappingExposure","_isContextLost","_framebuffer","_currentActiveCubeFace","_currentActiveMipmapLevel","_currentRenderTarget","_currentFramebuffer","_currentMaterialId","_currentCamera","_currentArrayCamera","_currentViewport","_currentScissor","_currentScissorTest","_width","_height","_pixelRatio","_opaqueSort","_transparentSort","_scissor","_scissorTest","_clippingEnabled","_localClippingEnabled","_projScreenMatrix","_vector3","_emptyScene","overrideMaterial","getTargetPixelRatio","programCache","renderLists","morphtargets","bufferRenderer","indexedBufferRenderer","contextNames","contextAttributes","contextName","onContextLost","onContextRestore","isWebGL1Renderer","initGLContext","onMaterialDispose","deallocateMaterial","releaseMaterialProgramReference","programInfo","renderObjectImmediate","renderBufferImmediate","forceContextLoss","loseContext","forceContextRestore","restoreContext","getPixelRatio","setPixelRatio","setViewport","getDrawingBufferSize","setDrawingBufferSize","getCurrentViewport","getScissor","setScissor","getScissorTest","boolean","setOpaqueSort","setTransparentSort","hasPositions","hasNormals","hasUvs","positionArray","normalArray","uvArray","colorArray","setProgram","rangeFactor","dataCount","rangeStart","rangeCount","drawStart","drawEnd","drawCount","isLineSegments","isLineLoop","isSprite","compile","compiled","material2","initMaterial","projectObject","isGroup","isLOD","intersectsSprite","isImmediateRenderObject","renderObjects","isArrayCamera","camera2","lightsStateVersion","programCacheKey","programChange","needsLights","materialNeedsLights","progUniforms","uniformsList","refreshProgram","refreshMaterial","refreshLights","p_uniforms","m_uniforms","uCamPos","cameraPosition","isOrthographicCamera","boneTexture","boneMatrices","boneTextureSize","markUniformsLightsNeedsUpdate","setFromProjectionMatrix","opaqueObjects","transparentObjects","readRenderTargetPixels","activeCubeFaceIndex","restore","textureFormat","checkFramebufferStatus","readPixels","copyFramebufferToTexture","levelScale","copyTexImage2D","copyTextureToTexture","srcTexture","dstTexture","texSubImage2D","compressedTexSubImage2D","__THREE_DEVTOOLS__","CustomEvent","detail","WebGL1Renderer","joints","pinching","XRHand","LITTLE_PHALANX_TIP","joint","inputPose","gripPose","handPose","targetRay","grip","hand","jointPose","getJointPose","jointRadius","indexTip","INDEX_PHALANX_TIP","thumbTip","THUMB_PHALANX_TIP","distanceToPinch","handedness","getPose","targetRaySpace","gripSpace","FogExp2","Fog","Scene","InterleavedBuffer","isInterleavedBuffer","arrayBuffers","_uuid","ib","_vector$6","InterleavedBufferAttribute","interleavedBuffer","_geometry","interleavedBuffers","_intersectPoint","_worldScale","_mvPosition","_alignedPosition","_rotatedPosition","_viewWorldMatrix","_vA$1","_vB$1","_vC$1","_uvA$1","_uvB$1","_uvC$1","Sprite","float32Array","transformVertex","vertexPosition","mvPosition","setFromMatrixScale","_v1$4","_v2$2","LOD","_currentLevel","levels","SkinnedMesh","bindMode","bindMatrix","bindMatrixInverse","addLevel","getCurrentLevel","getObjectForDistance","calculateInverses","normalizeSkinWeights","skinWeight","manhattanLength","basePosition","skinIndex","weight","getComponent","boneIndex","boneInverses","_offsetMatrix","_identityMatrix","Skeleton","Bone","isBone","getBoneByName","_instanceLocalMatrix","_instanceWorldMatrix","_instanceIntersects","_mesh","InstancedMesh","linecap","linejoin","setColorAt","getMatrixAt","raycastTimes","instanceId","setMatrixAt","_start","_end","_inverseMatrix$1","_ray$1","_sphere$2","Line","computeLineDistances","localThreshold","localThresholdSq","vStart","vEnd","interSegment","interRay","distSq","distanceSqToSegment","nbVertices","_start$1","_end$1","LineSegments","LineLoop","_inverseMatrix$2","_ray$2","_sphere$3","_position$1","Points","testPoint","rayPointDistanceSq","intersectPoint","closestPointToPoint","distanceToRay","VideoTexture","video","updateVideo","requestVideoFrameCallback","CompressedTexture","CanvasTexture","DepthTexture","hasVideoFrameCallback","HAVE_CURRENT_DATA","isCanvasTexture","WireframeGeometry","edge","edges","edge1","edge2","ol","ParametricGeometry","slices","stacks","ParametricBufferGeometry","pu","pv","sliceCount","PolyhedronGeometry","PolyhedronBufferGeometry","vertexBuffer","uvBuffer","subdivide","getVertexByIndex","subdivideFace","cols","aj","bj","rows","pushVertex","applyRadius","generateUVs","azimuth","inclination","correctUVs","correctSeam","centroid","uvA","uvB","uvC","azi","correctUV","TetrahedronGeometry","TetrahedronBufferGeometry","OctahedronGeometry","OctahedronBufferGeometry","IcosahedronGeometry","IcosahedronBufferGeometry","DodecahedronGeometry","DodecahedronBufferGeometry","TubeGeometry","tubularSegments","radialSegments","closed","taper","bufferGeometry","TubeBufferGeometry","tangents","binormals","frames","computeFrenetFrames","generateBufferData","generateSegment","generateIndices","getPointAt","N","TorusKnotGeometry","tube","heightScale","TorusKnotBufferGeometry","P1","P2","calculatePositionOnCurve","cu","su","quOverP","cs","TorusGeometry","arc","TorusBufferGeometry","Earcut","triangulate","holeIndices","dim","hasHoles","outerLen","outerNode","linkedList","invSize","eliminateHoles","earcutLinked","clockwise","signedArea","insertNode","filterPoints","again","steiner","ear","pass","indexCurve","isEarHashed","isEar","cureLocalIntersections","splitEarcut","pointInTriangle","minTX","minTY","maxTX","maxTY","zOrder","prevZ","nextZ","locallyInside","isValidDiagonal","splitPolygon","getLeftmost","compareX","eliminateHole","hole","findHoleBridge","hx","hy","mx","my","tanMin","sectorContainsSector","sortLinked","tail","numMerges","pSize","qSize","inSize","leftmost","px","py","intersectsPolygon","middleInside","q1","q2","o1","o2","o3","o4","onSegment","inside","an","bp","sum","ShapeUtils","contour","isClockWise","pts","triangulateShape","holes","removeDupEndPts","addContour","holeIndex","ExtrudeGeometry","ExtrudeBufferGeometry","verticesArray","addShape","curveSegments","bevelEnabled","bevelThickness","bevelSize","bevelOffset","bevelSegments","extrudePath","uvgen","UVGenerator","WorldUVGenerator","amount","extrudePts","splineTube","binormal","position2","extrudeByPath","getSpacedPoints","shapePoints","extractPoints","hl","ahole","scalePt2","pt","vec","vlen","flen","getBevelVec","inPt","inPrev","inNext","v_trans_x","v_trans_y","shrink_by","v_prev_x","v_prev_y","v_next_x","v_next_y","v_prev_lensq","collinear0","v_prev_len","v_next_len","ptPrevShift_x","ptPrevShift_y","ptNextShift_x","ptNextShift_y","sf","v_trans_lensq","direction_eq","contourMovements","holesMovements","oneHoleMovements","verticesMovements","bs","vert","buildLidFaces","layer","f3","buildSideFaces","layeroffset","sidewalls","sl","slen1","slen2","f4","addVertex","nextIndex","generateTopUV","addUV","generateSideWallUV","vector2","indexA","indexB","indexC","a_x","a_y","b_x","b_y","c_x","c_y","indexD","a_z","b_z","c_z","d_x","d_y","d_z","TextGeometry","TextBufferGeometry","font","isFont","generateShapes","SphereGeometry","phiStart","phiLength","thetaStart","thetaLength","SphereBufferGeometry","thetaEnd","grid","verticesRow","uOffset","RingGeometry","innerRadius","outerRadius","thetaSegments","phiSegments","RingBufferGeometry","radiusStep","thetaSegmentLevel","LatheGeometry","LatheBufferGeometry","inverseSegments","n1","n2","ShapeGeometry","ShapeBufferGeometry","toJSON$1","indexOffset","shapeVertices","shapeHoles","shapeHole","EdgesGeometry","thresholdAngle","thresholdDot","sourceVertices","face1","face2","CylinderGeometry","radiusTop","radiusBottom","openEnded","CylinderBufferGeometry","indexArray","generateTorso","slope","indexRow","sinTheta","cosTheta","generateCap","centerIndexStart","centerIndexEnd","ConeGeometry","ConeBufferGeometry","CircleGeometry","CircleBufferGeometry","Geometries","RawShaderMaterial","Materials","AnimationUtils","arraySlice","convertArray","forceClone","getKeyframeOrder","times","compareTime","sortedArray","nValues","srcOffset","flattenJSON","jsonKeys","valuePropertyName","subclip","sourceClip","startFrame","endFrame","fps","clip","tracks","valueSize","getValueSize","minStartTime","resetDuration","makeClipAdditive","targetClip","referenceFrame","referenceClip","numTracks","referenceTime","referenceTrack","referenceTrackType","ValueTypeName","targetTrack","referenceOffset","referenceValueSize","createInterpolant","isInterpolantFactoryMethodGLTFCubicSpline","targetOffset","targetValueSize","referenceValue","startIndex","endIndex","interpolant","referenceQuat","numTimes","valueStart","multiplyQuaternionsFlat","valueEnd","blendMode","Interpolant","parameterPositions","sampleValues","sampleSize","_cachedIndex","CubicInterpolant","_weightPrev","_offsetPrev","_weightNext","_offsetNext","LinearInterpolant","DiscreteInterpolant","KeyframeTrack","interpolation","TimeBufferType","ValueBufferType","setInterpolation","DefaultInterpolation","BooleanKeyframeTrack","ColorKeyframeTrack","NumberKeyframeTrack","QuaternionLinearInterpolant","QuaternionKeyframeTrack","StringKeyframeTrack","VectorKeyframeTrack","AnimationClip","getTrackTypeForValueTypeName","typeName","parseKeyframeTrack","trackType","pp","validate_interval","seek","linear_scan","forward_scan","giveUpAt","afterEnd_","t1global","beforeStart_","mid","intervalChanged_","interpolate_","DefaultSettings_","getSettings_","copySampleValue_","endingStart","endingEnd","iPrev","iNext","tPrev","tNext","halfDt","o0","oP","oN","wP","wN","ppp","sP","sN","offset1","offset0","weight1","weight0","getInterpolation","InterpolantFactoryMethodDiscrete","InterpolantFactoryMethodLinear","InterpolantFactoryMethodSmooth","factoryMethod","timeScale","nKeys","currTime","optimize","smoothInterpolation","writeIndex","keep","timeNext","offsetP","offsetN","readOffset","writeOffset","TypedKeyframeTrack","slerpFlat","jsonTracks","frameTime","clipTracks","CreateFromMorphTargetSequence","morphTargetSequence","noLoop","numMorphTargets","findByName","objectOrClipArray","clipArray","animations","CreateClipsFromMorphTargetSequences","animationToMorphTargets","animationMorphTargets","clips","parseAnimation","addNonemptyTrack","trackName","animationKeys","destTracks","clipName","hierarchyTracks","hierarchy","morphTargetNames","morphTargetName","animationKey","boneName","Cache","files","file","LoadingManager","itemsLoaded","itemsTotal","urlModifier","onStart","itemStart","itemEnd","resolveURL","setURLModifier","addHandler","removeHandler","DefaultLoadingManager","Loader","crossOrigin","resourcePath","loadAsync","setCrossOrigin","setResourcePath","FileLoader","AnimationLoader","CompressedTextureLoader","ImageLoader","CubeTextureLoader","DataTextureLoader","TextureLoader","Curve","arcLengthDivisions","EllipseCurve","aX","aY","xRadius","yRadius","aStartAngle","aEndAngle","aClockwise","aRotation","ArcCurve","aRadius","CubicPoly","c0","initCatmullRom","x3","tension","initNonuniformCatmullRom","dt0","dt1","dt2","t2","calc","t3","dataUriRegex","dataUriRegexResult","mimeType","isBase64","atob","DOMParser","parseFromString","overrideMimeType","setWithCredentials","setMimeType","loaded","loadTexture","texDatas","mipmapCount","isCubemap","onImageLoad","onImageError","urls","texData","isJPEG","getPoint","optionalTarget","getUtoTmapping","getPoints","divisions","lengths","getLengths","cacheArcLengths","updateArcLengths","arcLengths","targetArcLength","comparison","lengthBefore","lengthAfter","segmentLength","segmentFraction","getTangent","pt1","pt2","getTangentAt","mat","MAX_VALUE","tz","makeRotationAxis","fromJSON","isEllipseCurve","twoPi","deltaAngle","samePoints","isArcCurve","pz","CatmullRomCurve3","curveType","CatmullRom","QuadraticBezierP0","QuadraticBezierP1","QuadraticBezierP2","QuadraticBezier","CubicBezierP0","CubicBezierP1","CubicBezierP2","CubicBezierP3","CubicBezier","CubicBezierCurve","v3","CubicBezierCurve3","LineCurve","LineCurve3","QuadraticBezierCurve","QuadraticBezierCurve3","SplineCurve","isCatmullRomCurve3","intPoint","isCubicBezierCurve","isCubicBezierCurve3","isLineCurve","isLineCurve3","isQuadraticBezierCurve","isQuadraticBezierCurve3","isSplineCurve","Curves","CurvePath","curves","autoClose","Path","currentPoint","Shape","Light","HemisphereLight","LightShadow","_frameExtents","_viewportCount","_viewports","SpotLightShadow","SpotLight","power","PointLightShadow","_cubeDirections","_cubeUps","PointLight","OrthographicCamera","DirectionalLightShadow","DirectionalLight","AmbientLight","RectAreaLight","curve","closePath","startPoint","endPoint","curveLengths","getCurveLengths","cacheLengths","sums","moveTo","lineTo","quadraticCurveTo","aCPx","aCPy","bezierCurveTo","aCP1x","aCP1y","aCP2x","aCP2y","splineThru","npts","absarc","absellipse","ellipse","firstPoint","lastPoint","getPointsHoles","holesPts","_lightPositionWorld","_lookTarget","shadowMatrix","projScreenMatrix","lookTarget","lightPositionWorld","viewportIndex","isSpotLightShadow","scaleW","scaleH","makeOrthographic","isDirectionalLightShadow","SphericalHarmonics3","shBasis","LightProbe","MaterialLoader","getTexture","shading","setTextures","LoaderUtils","extractUrlBase","InstancedBufferGeometry","InstancedBufferAttribute","BufferGeometryLoader","interleavedBufferMap","arrayBufferMap","getInterleavedBuffer","getArrayBuffer","TYPED_ARRAYS","arrayBuffer","typedArray","bufferAttribute","bufferAttributeConstr","drawcalls","offsets","ObjectLoader","parseShape","parseGeometries","parseImages","parseTextures","parseMaterials","parseObject","parseAnimations","geometryShapes","bufferGeometryLoader","loadImage","currentUrl","parseConstant","TEXTURE_MAPPING","TEXTURE_WRAPPING","TEXTURE_FILTER","getGeometry","getMaterial","ImageBitmapLoader","createImageBitmap","ShapePath","subPaths","currentPath","Font","createPaths","chars","line_height","yMax","yMin","underlineThickness","char","createPath","glyph","glyphs","familyName","cpx","cpy","cpx1","cpy1","cpx2","cpy2","outline","_cachedOutline","ha","FontLoader","isImageBitmapLoader","setOptions","imageBitmap","toShapes","isCCW","noHoles","toShapesNoHoles","inSubpaths","tmpPath","tmpShape","isPointInsidePolygon","inPolygon","polyLen","edgeLowPt","edgeHighPt","edgeDx","edgeDy","perpEdge","holesFirst","betterShapeHoles","newShapes","tmpPoints","tmpHoles","newShapeHoles","mainIdx","ambiguous","toChange","sIdx","sLen","sho","hIdx","ho","hole_unassigned","s2Idx","froms","tos","AudioContext","webkitAudioContext","AudioLoader","HemisphereLightProbe","sky","ground","AmbientLightProbe","bufferCopy","decodeAudioData","audioBuffer","isHemisphereLightProbe","isAmbientLightProbe","_eyeRight","_eyeLeft","StereoCamera","eyeSep","_cache","eyeSepHalf","eyeSepOnProjection","ymax","xmin","xmax","Audio","gain","createGain","getInput","autoplay","detune","loopStart","loopEnd","playbackRate","isPlaying","hasPlaybackControl","sourceType","_startedAt","_progress","_connected","filters","audioNode","createMediaElementSource","mediaStream","createMediaStreamSource","play","createBufferSource","onended","onEnded","setDetune","setPlaybackRate","getOutput","setTargetAtTime","getFilters","setFilters","AudioAnalyser","audio","fftSize","analyser","createAnalyser","frequencyBinCount","getByteFrequencyData","getFrequencyData","PropertyMixer","mixFunction","mixFunctionAdditive","setIdentity","_slerp","_slerpAdditive","_setAdditiveIdentityQuaternion","_workIndex","_select","_setAdditiveIdentityOther","_lerp","_lerpAdditive","_setAdditiveIdentityNumeric","_mixBufferRegion","_mixBufferRegionAdditive","_setIdentity","_origIndex","_addIndex","cumulativeWeight","cumulativeWeightAdditive","useCount","referenceCount","accumulate","accuIndex","currentWeight","mix","accumulateAdditive","weightAdditive","originalValueOffset","saveOriginalState","restoreOriginalState","targetIndex","workOffset","_RESERVED_CHARS_RE","_reservedRe","_wordChar","_wordCharOrDot","_directoryRe","_nodeRe","_objectRe","_propertyRe","_trackRe","_supportedObjectNames","Composite","targetGroup","optionalParsedPath","parsedPath","PropertyBinding","parseTrackName","_targetGroup","_bindings","subscribe_","rootNode","findNode","AnimationObjectGroup","nCachedObjects_","_indicesByUUID","_paths","_parsedPaths","_bindingsIndicesByPath","stats","firstValidIndex","bindings","isAnimationObjectGroup","sanitizeNodeName","objectName","objectIndex","propertyIndex","lastDot","searchNodeSubtree","subTreeNode","_getValue_unavailable","_setValue_unavailable","BindingType","Direct","EntireArray","ArrayElement","HasFromToArray","Versioning","None","NeedsUpdate","MatrixWorldNeedsUpdate","GetterByBindingType","resolvedProperty","SetterByBindingTypeAndVersioning","targetObject","targetArray","sourceArray","nodeProperty","versioning","bindingType","_getValue_unbound","_setValue_unbound","indicesByUUID","parsedPaths","nBindings","knownObject","nObjects","nCachedObjects","firstActiveIndex","lastCachedObject","bindingsForPath","lastCached","lastCachedIndex","firstActiveObject","firstActive","uncache","lastObject","indicesByPath","unsubscribe_","lastBindingsIndex","lastBindings","lastBindingsPath","AnimationAction","mixer","localRoot","_mixer","_clip","_localRoot","nTracks","interpolants","interpolantSettings","_interpolantSettings","_interpolants","_propertyBindings","_cacheIndex","_byClipCacheIndex","_timeScaleInterpolant","_weightInterpolant","_loopCount","_startTime","_effectiveTimeScale","_effectiveWeight","repetitions","clampWhenFinished","zeroSlopeAtStart","zeroSlopeAtEnd","_activateAction","_deactivateAction","stopFading","stopWarping","_isActiveAction","_scheduleFading","fadeOutAction","warp","fadeOut","fadeIn","fadeInDuration","fadeOutDuration","startEndRatio","endStartRatio","fadeInAction","crossFadeFrom","weightInterpolant","_takeBackControlInterpolant","startTimeScale","endTimeScale","_lendControlInterpolant","timeScaleInterpolant","_root","deltaTime","timeDirection","_updateWeight","timeRunning","_updateTimeScale","clipTime","_updateTime","propertyMixers","interpolantValue","loopCount","pingPong","_setEndings","handle_stop","loopDelta","atStart","atEnd","weightNow","weightThen","AnimationMixer","_initMemoryManager","_accuIndex","_bindAction","prototypeAction","rootUuid","bindingsByRoot","_bindingsByRootAndName","bindingsByName","_addInactiveBinding","clipUuid","actionsForClip","_actionsByClip","knownActions","_addInactiveAction","_lendBinding","_lendAction","_takeBackBinding","_takeBackAction","_nActiveActions","_nActiveBindings","_controlInterpolants","_nActiveControlInterpolants","controlInterpolants","actionsByClip","actionByRoot","_removeInactiveAction","lastInactiveAction","cacheIndex","knownActionsForClip","lastKnownAction","byClipCacheIndex","_removeInactiveBindingsForAction","_removeInactiveBinding","prevIndex","lastActiveIndex","firstInactiveAction","firstInactiveIndex","lastActiveAction","bindingByName","propBinding","lastInactiveBinding","firstInactiveBinding","lastActiveBinding","_controlInterpolantsResultBuffer","__cacheIndex","lastActiveInterpolant","clipAction","optionalRoot","clipObject","existingAction","newAction","stopAllAction","nActions","timeInSeconds","getRoot","uncacheClip","actionsToRemove","uncacheRoot","uncacheAction","Uniform","InstancedInterleavedBuffer","GLBufferAttribute","Raycaster","PointCloud","ascSort","intersectObject","setBuffer","setType","setItemSize","setCount","setFromCamera","coords","unproject","intersectObjects","Spherical","setFromCartesianCoords","_vector$7","Box2","_startP","_startEnd","Line3","clampToLine","startEnd2","startEnd_startP","closestPointToPointParameter","ImmediateRenderObject","_vector$9","_boneMatrix","_matrixWorldInv","SkeletonHelper","getBoneList","isSkeletonHelper","boneList","GridHelper","AxesHelper","LOD_MIN","LOD_MAX","EXTRA_LOD_SIGMA","TOTAL_LODS","_lodPlanes","_sizeLods","_sigmas","_createPlanes","PHI","INV_PHI","lod","sizeLod","sigma","texelSize","cubeFaces","positionSize","uvSize","faceIndexSize","coordinates","ClosedSplineCurve3","SplineCurve3","Spline","construct","createPointsGeometry","createGeometry","createSpacedPointsGeometry","fromPoints","initFromArray","getControlPointsArray","reparametrizeByArcLength","setColors","Handlers","setTexturePath","isIntersectionBox","isIntersectionSphere","setFromMatrix","random16","nearestPowerOfTwo","nextPowerOfTwo","flattenToArrayOffset","multiplyVector3","multiplyVector3Array","applyToBufferAttribute","applyToVector3Array","extractPosition","getPosition","multiplyToArray","multiplyVector4","rotateAxis","crossVector","rotateByAxis","makeFrustum","isIntersectionLine","intersectsLine","isIntersectionPlane","getArea","barycoordFromPoint","midpoint","getMidpoint","getPlane","extractAllPoints","extrude","makeGeometry","fromAttribute","distanceToManhattan","manhattanDistanceTo","lengthManhattan","setEulerFromRotationMatrix","setEulerFromQuaternion","getPositionFromMatrix","getScaleFromMatrix","getColumnFromMatrix","applyProjection","computeTangents","applyMatrix","getChildByName","renderDepth","getWorldRotation","eulerOrder","useQuaternion","setDrawMode","drawMode","initBones","setLens","onlyShadow","shadowCameraFov","shadowCameraLeft","shadowCameraRight","shadowCameraTop","shadowCameraBottom","shadowCameraVisible","shadowDarkness","shadowMapWidth","shadowMapHeight","dynamic","setDynamic","copyIndicesArray","setArray","addIndex","addAttribute","addDrawCall","clearDrawCalls","computeOffsets","maxInstancedCount","linePrecision","getArrays","addShapeList","wrapAround","overdraw","wrapRGB","metal","transparency","clearTarget","getCurrentRenderTarget","getPrecision","resetGLState","supportsFloatTextures","supportsHalfFloatTextures","supportsStandardDerivatives","supportsCompressedTextureS3TC","supportsCompressedTexturePVRTC","supportsBlendMinMax","supportsInstancedArrays","enableScissorTest","addPrePlugin","addPostPlugin","updateShadowMap","setFaceCulling","allocTextureUnit","setTexture","getActiveMipMapLevel","shadowMapCullFace","vr","gammaInput","gammaOutput","toneMappingWhitePoint","renderReverseSided","renderSingleSided","audioLoader","updateCubeMap","loadTextureCube","loadCompressedTexture","loadCompressedTextureCube","revision","authentication","commons_1","authResult","own","IS_FORCED","IS_GLOBAL","IS_STATIC","IS_PROTO","IS_BIND","expProto","U","W","isInGroup","listItemGroup","VListItemActionText","VListItemContent","VListItemTitle","VListItemSubtitle","VList","VListGroup","VListItem","VListItemAction","VListItemAvatar","VListItemIcon","FieldName","HEADERS","GraphqlOperationName","GRAPHQL_ENDPOINT","cloneArrayBuffer","cloneDataView","dataView","listCacheDelete","listCacheGet","listCacheHas","listCacheSet","ListCache","continuous","cycle","delimiterIcon","hideDelimiters","hideDelimiterBackground","interval","mandatory","progressColor","showArrows","verticalDelimiters","slideTimeout","isVertical","restartTimeout","startTimeout","genControlIcons","internalIndex","genDelimiters","assignArguments","isObjectOrArray","classof","builtinExec","customOptions","installed","vuetify","vuetifyFramework","defaultOptions","VueTelInputVuetify","GlobalVue","castArrayLikeObject","BaseItemGroup","internalLazyValue","selectedItem","selectedItems","valueComparator","intern","updateInternalValue","selectedValues","updateMandatory","updateItem","valueIndex","updateMultiple","updateSingle","itemGroup","objectCtorString","shared","breakpointProps","offsetProps","orderProps","alignSelf","hasColClasses","webpackPolyfill","baseIsMatch","baseMatches","matchData","__lookupSetter__","K","baseGet","baseToString","baseTrim","castSlice","charsStartIndex","META","setDesc","FREEZE","preventExtensions","setMeta","fastKey","getWeak","onFreeze","NEED","offIcon","onIcon","hasLabel","hasState","rippleState","focused","radioAttrs","computedName","genRipple","onChange","genRadio","assocIndexOf","IObject","EXP_TABLE","LOG_TABLE","XHR","JSONP","websocket","xd","xs","jsonp","isSSL","forceJSONP","baseMap","baseSortBy","baseUnary","baseOrderBy","iteratees","arrayReduce","initAccum","DESCRIPTORS","define","HAS_SYMBOLS","makeSuper","_super","newMethod","__init","fnTest","processProperty","processDescriptor","reFlags","cloneRegExp","arrayLikeKeys","inherited","isArg","skipIndexes","_deconstructPacket","_placeholder","_reconstructPacket","packetData","_removeBlobs","curKey","containingObject","pendingBlobs","fileReader","$router","tabsBar","extended","floating","smAndDown","breakingProps","replacement","img","genExtension","_callbacks","removeAllListeners","hasListeners","createBaseFor","_h","wrapperClasses","selectClasses","selectLabel","sortedCountries","shaped","rounded","backgroundColor","menuProps","inputHeight","onChangeCountryCode","activeCountry","iso2","$$v","countryCode","textFieldClasses","hint","hideDetails","clearable","persistentHint","singleLine","persistentPlaceholder","autofocus","inputId","maxLen","inputOptions","onMouseDown","onMouseUp","onSpace","phone","getDefault","getParents","memo","parsedMemo","vNode","compName","__vueClickOutside__","disabledFetchingCountry","invalidMsg","allCountries","defaultCountry","preferredCountries","onlyCountries","ignoredCountries","inputClasses","finishMounted","typeToFindInput","typeToFindTimer","cursorPosition","getCountries","filteredCountries","country","phoneObject","parsedMode","phoneText","isDropdownOpened","findCountry","choose","fallbackCountry","highlighted","lastPreferred","preferred","dialCode","toEmitInputEvent","selectionStart","selEle","typedCountryI","needToScrollTop","needToScrollBottom","initializeCountry","VSelect","VTextField","intValue","increment","useVedic","decimal","errorOnInvalid","fromCents","negativePattern","divide","distribute","dollars","cents","baseIsTypedArray","nodeUtil","nodeIsTypedArray","typedArrayTags","INFINITY","objectCreate","baseCreate","baseHooks","createHookObject","getHooks","processHooks","enableHooks","ACTIVATE_HOOKS","withHooks","_hooks","hookTypes","returnHook","hookObject","afterHookObject","errorHookObject","hookMixin","methodNames","activateHooks","reAsciiWord","asciiWords","Themeable","themeableProvide","functionalThemeClasses","validateAttachTarget","removeActivator","hasDetached","initDetach","hasContent","isConnected","__g","eio","Manager","nsps","reconnection","reconnectionAttempts","reconnectionDelay","reconnectionDelayMax","randomizationFactor","backoff","lastPing","packetBuffer","_parser","encoder","decoder","emitAll","updateSocketIds","generateId","_reconnection","_reconnectionAttempts","_reconnectionDelay","_randomizationFactor","_reconnectionDelayMax","_timeout","maybeReconnectOnOpen","skipReconnect","openSub","errorSub","cleanup","timer","onping","onpong","ondata","ondecoded","onConnecting","processPacketQueue","subsLength","onreconnect","attempt","Patterns","PATTERN000","PATTERN001","PATTERN010","PATTERN011","PATTERN100","PATTERN101","PATTERN110","PATTERN111","PenaltyScores","N1","N2","N3","N4","getMaskAt","maskPattern","getPenaltyN1","sameCountCol","sameCountRow","lastCol","lastRow","getPenaltyN2","getPenaltyN3","bitsCol","bitsRow","getPenaltyN4","darkCount","modulesCount","applyMask","getBestMask","setupFormatFunc","numPatterns","bestPattern","lowerPenalty","penalty","__webpack_modules__","3099","6077","__unused_webpack_exports","__webpack_require__","1223","wellKnownSymbol","definePropertyModule","UNSCOPABLES","ArrayPrototype","1530","5787","9670","4019","260","NATIVE_ARRAY_BUFFER","createNonEnumerableProperty","Int8ArrayPrototype","Uint8ClampedArrayPrototype","TypedArray","TypedArrayPrototype","ObjectPrototype","isPrototypeOf","TO_STRING_TAG","TYPED_ARRAY_TAG","NATIVE_ARRAY_BUFFER_VIEWS","opera","TYPED_ARRAY_TAG_REQIRED","TypedArrayConstructorsList","BigIntArrayConstructorsList","BigInt64Array","BigUint64Array","aTypedArray","aTypedArrayConstructor","ARRAY","TypedArrayConstructor","exportTypedArrayMethod","forced","exportTypedArrayStaticMethod","3331","redefineAll","anInstance","toIndex","IEEE754","arrayFill","InternalStateModule","getInternalState","setInternalState","ARRAY_BUFFER","DATA_VIEW","WRONG_LENGTH","WRONG_INDEX","NativeArrayBuffer","$ArrayBuffer","$DataView","$DataViewPrototype","RangeError","packIEEE754","unpackIEEE754","unpack","packInt8","packInt16","packInt32","unpackInt32","packFloat32","packFloat64","addGetter","isLittleEndian","intIndex","conversion","ArrayBufferPrototype","testView","nativeSetInt8","setInt8","getInt8","setUint8","unsafe","bufferLength","getInt16","getInt32","getFloat64","setInt16","setUint16","setInt32","setUint32","setFloat32","setFloat64","1048","toAbsoluteIndex","copyWithin","inc","1285","argumentsLength","endPos","8533","$forEach","arrayMethodIsStrict","STRICT_METHOD","8457","callWithSafeIterationClosing","isArrayIteratorMethod","createProperty","getIteratorMethod","mapfn","iteratorMethod","1318","toIndexedObject","createMethod","IS_INCLUDES","$this","2092","IndexedObject","arraySpeciesCreate","TYPE","IS_MAP","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","IS_FILTER_OUT","NO_HOLES","specificCreate","boundFunction","filterOut","6583","nativeLastIndexOf","NEGATIVE_ZERO","searchElement","1194","V8_VERSION","METHOD_NAME","foo","9341","argument","3671","IS_RIGHT","5417","originalArray","3411","iteratorClose","ENTRIES","7072","SAFE_CLOSING","iteratorWithReturn","SKIP_CLOSING","ITERATION_SUPPORT","4326","648","TO_STRING_TAG_SUPPORT","classofRaw","CORRECT_ARGUMENTS","9920","getOwnPropertyDescriptorModule","8544","4994","createPropertyDescriptor","IteratorConstructor","8880","9114","6135","propertyKey","654","createIteratorConstructor","IS_PURE","IteratorsCore","BUGGY_SAFARI_ITERATORS","Iterable","CurrentIteratorPrototype","getIterationMethod","KIND","defaultIterator","IterablePrototype","INCORRECT_VALUES_NAME","nativeIterator","anyNativeIterator","9781","317","EXISTS","8324","CSSRuleList","CSSStyleDeclaration","CSSValueList","ClientRectList","DOMRectList","DOMStringList","DOMTokenList","DataTransferItemList","FileList","HTMLAllCollection","HTMLCollection","HTMLFormElement","MediaList","MimeTypeArray","NamedNodeMap","NodeList","PaintRequestList","Plugin","PluginArray","SVGLengthList","SVGNumberList","SVGPathSegList","SVGPointList","SVGStringList","SVGTransformList","SourceBufferList","StyleSheetList","TextTrackCueList","TextTrackList","TouchList","8113","getBuiltIn","7392","versions","v8","748","2109","setGlobal","copyConstructorProperties","isForced","targetProperty","sourceProperty","TARGET","GLOBAL","STATIC","stat","noTargetGet","sham","7293","7007","REPLACE_KEEPS_$0","REPLACE","REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE","stringMethod","regexMethod","9974","5005","variable","1246","8554","647","SUBSTITUTION_SYMBOLS","SUBSTITUTION_SYMBOLS_NO_NAMED","matched","captures","namedCaptures","tailPos","7854","6656","3501","490","4664","1179","mantissaLength","exponent","mantissa","exponentLength","eMax","eBias","rt","nBits","8361","9587","Wrapper","NewTarget","NewTargetPrototype","2788","functionToString","9909","NATIVE_WEAK_MAP","objectHas","sharedKey","hiddenKeys","enforce","getterFor","wmget","wmhas","wmset","facade","STATE","7659","3157","4705","feature","detection","POLYFILL","NATIVE","111","1913","7850","9212","returnMethod","3383","PrototypeOfArrayIteratorPrototype","arrayIterator","NEW_ITERATOR_PROTOTYPE","7497","133","590","searchParams","URLSearchParams","username","8536","1574","objectKeys","getOwnPropertySymbolsModule","propertyIsEnumerableModule","nativeAssign","30","activeXDocument","documentCreateElement","GT","LT","SCRIPT","EmptyConstructor","scriptTag","NullProtoObjectViaActiveX","temp","parentWindow","NullProtoObjectViaIFrame","JS","NullProtoObject","ActiveXObject","6048","3070","__unused_webpack_module","nativeDefineProperty","Attributes","1236","nativeGetOwnPropertyDescriptor","8006","internalObjectKeys","5181","9518","CORRECT_PROTOTYPE_GETTER","6324","1956","5296","nativePropertyIsEnumerable","NASHORN_BUG","V","7674","aPossiblePrototype","CORRECT_SETTER","288","3887","getOwnPropertyNamesModule","857","2248","1320","enforceInternalState","TEMPLATE","7651","2261","stickyHelpers","UNSUPPORTED_Y","BROKEN_CARET","charsAdded","strCopy","7066","dotAll","2999","RE","4488","3505","6340","CONSTRUCTOR_NAME","8003","6200","5465","2309","6707","defaultConstructor","8710","requireObjectCoercible","CONVERT_TO_STRING","codeAt","3197","maxInt","tMin","tMax","damp","initialBias","initialN","regexNonASCII","regexSeparators","OVERFLOW_ERROR","baseMinusTMin","stringFromCharCode","ucs2decode","digitToBasic","digit","adapt","numPoints","firstTime","inputLength","basicLength","handledCPCount","handledCPCountPlusOne","qMinusT","baseMinusT","6091","whitespaces","non","3111","whitespace","ltrim","rtrim","1400","integer","7067","5656","9958","7466","7908","4590","toPositiveInteger","BYTES","3002","7593","PREFERRED_STRING","1694","9843","TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS","ArrayBufferViewCore","ArrayBufferModule","toOffset","typedArrayFrom","setSpecies","fromList","isArrayBuffer","isTypedArrayIndex","wrappedGetOwnPropertyDescriptor","wrappedDefineProperty","CLAMPED","GETTER","SETTER","NativeTypedArrayConstructor","TypedArrayConstructorPrototype","exported","addElement","typedArrayOffset","$length","$len","3832","checkCorrectnessOfIteration","iterable","3074","7321","9711","postfix","3307","NATIVE_SYMBOL","5112","USE_SYMBOL_AS_UID","WellKnownSymbolsStore","createWellKnownSymbol","withoutSetter","1361","8264","arrayBufferModule","2222","arrayMethodHasSpeciesSupport","IS_CONCAT_SPREADABLE","MAXIMUM_ALLOWED_INDEX_EXCEEDED","IS_CONCAT_SPREADABLE_SUPPORT","SPECIES_SUPPORT","spreadable","E","7327","$filter","HAS_SPECIES_SUPPORT","2772","$indexOf","nativeIndexOf","6992","addToUnscopables","defineIterator","ARRAY_ITERATOR","iterated","Arguments","1249","$map","7042","nativeSlice","fin","561","MAXIMUM_ALLOWED_LENGTH_EXCEEDED","deleteCount","insertCount","actualDeleteCount","actualStart","8309","FunctionPrototype","FunctionPrototypeToString","nameRE","489","nativeGetPrototypeOf","FAILS_ON_PRIMITIVES","1539","4916","9714","RegExpPrototype","nativeToString","NOT_GENERIC","INCORRECT_NAME","rf","8783","STRING_ITERATOR","4723","fixRegExpWellKnownSymbolLogic","nativeMatch","matcher","5306","getSubstitution","maybeToString","UNSAFE_SUBSTITUTE","searchValue","replaceValue","functionalReplace","accumulatedResult","nextSourcePosition","replacerArgs","3123","nativeSplit","3210","$trim","forcedStringTrimMethod","2990","$copyWithin","8927","$every","3105","$fill","5035","fromSpeciesAndList","7174","$findIndex","4345","$find","2846","4731","$includes","7209","6319","ArrayIterators","arrayValues","arrayEntries","nativeTypedArrayIterator","CORRECT_ITER_NAME","typedArrayValues","8867","$join","7789","$lastIndexOf","3739","4483","$reduceRight","9368","$reduce","2056","middle","3462","678","$slice","7462","$some","3824","5021","begin","beginIndex","2974","$toLocaleString","toLocaleString","TO_LOCALE_STRING_BUG","5016","Uint8ArrayPrototype","arrayToString","arrayJoin","IS_NOT_ARRAY_METHOD","2472","createTypedArrayConstructor","4747","DOMIterables","COLLECTION_NAME","Collection","CollectionPrototype","3948","ArrayIteratorMethods","ArrayValues","1637","USE_NATIVE_URL","getIterator","$fetch","URL_SEARCH_PARAMS","URL_SEARCH_PARAMS_ITERATOR","getInternalParamsState","getInternalIteratorState","plus","sequences","percentSequence","percentDecode","sequence","deserialize","parseSearchParams","updateSearchParams","validateArgumentsLength","passed","URLSearchParamsIterator","URLSearchParamsConstructor","entryIterator","entryNext","updateURL","URLSearchParamsPrototype","getAll","entriesIndex","sliceIndex","getState","285","EOF","toASCII","URLSearchParamsModule","NativeURL","getInternalSearchParamsState","getInternalURLState","INVALID_AUTHORITY","INVALID_SCHEME","INVALID_HOST","INVALID_PORT","ALPHA","DIGIT","HEX_START","OCT","DEC","HEX","FORBIDDEN_HOST_CODE_POINT","FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT","LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE","TAB_AND_NEW_LINE","parseHost","codePoints","parseIPv6","isSpecial","parseIPv4","percentEncode","C0ControlPercentEncodeSet","partsLength","ipv4","numbersSeen","ipv4Piece","swaps","swap","address","pieceIndex","pointer","findLongestZeroSequence","maxIndex","maxLength","currStart","currLength","serializeHost","ignore0","fragmentPercentEncodeSet","pathPercentEncodeSet","userinfoPercentEncodeSet","specialSchemes","ftp","https","wss","scheme","includesCredentials","password","cannotHaveUsernamePasswordPort","cannotBeABaseURL","isWindowsDriveLetter","startsWithWindowsDriveLetter","third","shortenURLsPath","pathSize","isSingleDot","isDoubleDot","SCHEME_START","SCHEME","NO_SCHEME","SPECIAL_RELATIVE_OR_AUTHORITY","PATH_OR_AUTHORITY","RELATIVE","RELATIVE_SLASH","SPECIAL_AUTHORITY_SLASHES","SPECIAL_AUTHORITY_IGNORE_SLASHES","AUTHORITY","HOST","HOSTNAME","PORT","FILE","FILE_SLASH","FILE_HOST","PATH_START","PATH","CANNOT_BE_A_BASE_URL_PATH","QUERY","FRAGMENT","parseURL","stateOverride","bufferCodePoints","failure","seenAt","seenBracket","seenPasswordToken","fragment","codePoint","encodedCodePoints","URLConstructor","baseState","urlString","searchParamsState","serializeURL","getProtocol","getUsername","getPassword","getHost","getHostname","getPort","getPathname","getSearch","getSearchParams","getHash","URLPrototype","accessorDescriptor","nativeCreateObjectURL","nativeRevokeObjectURL","revokeObjectURL","__webpack_module_cache__","moduleId","__webpack_exports__","Dropzone","dropzone_dist","_createForOfIteratorHelper","allowArrayLike","_unsupportedIterableToArray","normalCompletion","didErr","_e2","return","minLen","_arrayLikeToArray","arr2","_classCallCheck","_defineProperties","_createClass","protoProps","staticProps","_len","_step","_iterator","makeEvent","bubbles","initCustomEvent","preview_template","options_createForOfIteratorHelper","options_unsupportedIterableToArray","options_arrayLikeToArray","parallelUploads","uploadMultiple","chunking","forceChunking","parallelChunkUploads","retryChunks","retryChunksLimit","maxFilesize","paramName","createImageThumbnails","maxThumbnailFilesize","thumbnailWidth","thumbnailHeight","thumbnailMethod","resizeWidth","resizeHeight","resizeMimeType","resizeQuality","resizeMethod","filesizeBase","maxFiles","clickable","ignoreHiddenFiles","acceptedFiles","acceptedMimeTypes","autoProcessQueue","autoQueue","addRemoveLinks","previewsContainer","disablePreviews","hiddenInputContainer","renameFilename","renameFile","forceFallback","dictDefaultMessage","dictFallbackMessage","dictFallbackText","dictFileTooBig","dictInvalidFileType","dictResponseError","dictCancelUpload","dictUploadCanceled","dictCancelUploadConfirmation","dictRemoveFile","dictRemoveFileConfirmation","dictMaxFilesExceeded","dictFileSizeUnits","tb","gb","mb","kb","dzuuid","dzchunkindex","dztotalfilesize","dzchunksize","dztotalchunkcount","totalChunkCount","dzchunkbyteoffset","accept","chunksUploaded","fallback","messageElement","span","getFallbackForm","resize","srcX","srcY","srcWidth","srcHeight","srcRatio","trgRatio","trgWidth","trgHeight","transformFile","previewTemplate","drop","dragstart","dragend","dragenter","dragover","dragleave","paste","addedfile","previewElement","_step2","_iterator2","_step3","_iterator3","filesize","_removeLink","_step4","removeFileEvent","UPLOADING","confirm","removeFile","_iterator4","removeLink","removedfile","_updateMaxFilesReachedClass","thumbnail","dataUrl","_step5","_iterator5","thumbnailElement","alt","_step6","_iterator6","errormultiple","processing","processingmultiple","uploadprogress","bytesSent","_step7","_iterator7","totaluploadprogress","sending","sendingmultiple","successmultiple","canceled","canceledmultiple","completemultiple","maxfilesexceeded","maxfilesreached","queuecomplete","addedfiles","src_options","dropzone_createForOfIteratorHelper","dropzone_unsupportedIterableToArray","dropzone_arrayLikeToArray","dropzone_classCallCheck","dropzone_defineProperties","dropzone_createClass","_inherits","subClass","superClass","_setPrototypeOf","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_getPrototypeOf","_possibleConstructorReturn","_assertThisInitialized","ReferenceError","Proxy","_Emitter","clickableElements","dropzone","elementOptions","optionsForElement","getExistingFallback","getElement","getElements","accepted","getFilesWithStatus","QUEUED","ADDED","_this2","setupHiddenFileInput","hiddenFileInput","visibility","addFile","webkitURL","updateTotalUploadProgress","getAddedFiles","getUploadingFiles","getQueuedFiles","containsFiles","dataTransfer","noPropagation","returnValue","efct","effectAllowed","dropEffect","clickableElement","elementInside","removeAllFiles","totalUploadProgress","totalBytesSent","totalBytes","activeFiles","getActiveFiles","existingFallback","fieldsString","_getParamName","getFallback","_arr","elementListeners","_this3","cancelUpload","setupEventListeners","selectedSize","selectedUnit","cutoff","getAcceptedFiles","webkitGetAsEntry","_addFilesFromItems","handleFiles","__guard__","clipboardData","_this4","isFile","getAsFile","isDirectory","_addFilesFromDirectory","directory","_this5","dirReader","createReader","__guardMethod__","readEntries","fullPath","isValidFile","_this6","uuidv4","filename","_renameFile","_enqueueThumbnail","_errorProcessing","enqueueFile","_step8","_iterator8","_this7","processQueue","_this8","_thumbnailQueue","_processThumbnailQueue","_this9","_processingThumbnail","createThumbnail","without","cancelIfNecessary","_step9","_iterator9","_this10","resizedDataURL","ExifRestore","dataURL","dataURItoBlob","fixOrientation","_this11","createThumbnailFromUrl","mockFile","imageUrl","_this12","resizeThumbnail","_this13","loadExif","EXIF","orientation","resizeInfo","drawImageIOSFix","trgX","trgY","processingLength","queuedFiles","processFiles","processFile","_step10","_iterator10","uploadFiles","_step11","groupedFiles","_getFilesWithXhr","_iterator11","groupedFile","CANCELED","abort","_step12","_iterator12","_groupedFile","_this14","_transformFiles","transformedFiles","transformedFile","chunked","_transformedFile","handleNextChunk","chunkIndex","startedChunkCount","dataBlock","webkitSlice","retries","_uploadData","finishedChunkUpload","allFinished","SUCCESS","_finished","dataBlocks","_i2","_step13","_this15","_iterator13","resolveOption","_finishedUploading","ontimeout","_handleUploadError","progressObj","onprogress","_updateFilesUploadProgress","Accept","headerName","headerValue","additionalParams","_getChunk","_step14","_iterator14","_file","_addFormElementData","_i3","submitRequest","_this16","doneCounter","_loop","_step15","_iterator15","inputName","inputType","_step16","_iterator16","_file2","_step17","_iterator17","getResponseHeader","_step18","_iterator18","_step19","_iterator19","_len2","_key2","_i4","initClass","forElement","autoDiscover","discover","dropzones","checkElements","_step20","_iterator20","_step21","_iterator21","blockedBrowsers","capableBrowser","blacklistedBrowsers","_step22","_iterator22","dataURI","byteString","mimeString","ia","asc","rejectedItem","div","els","_step23","_iterator23","_step24","_iterator24","question","rejected","_step25","baseMimeType","_iterator25","validType","jQuery","ACCEPTED","PROCESSING","detectVerticalSquash","naturalWidth","ih","naturalHeight","_ctx$getImageData","getImageData","ey","ratio","sw","dw","dh","vertSquashRatio","KEY_STR","chr1","chr2","chr3","enc1","enc2","enc3","enc4","origFileBase64","resizedFileBase64","rawImage","decode64","slice2Segments","exifManipulation","encode64","exifArray","getExifArray","newImageArray","insertExif","aBuffer","seg","imageData","separatePoint","mae","ato","rawImageArray","base64test","contentLoaded","win","rem","doScroll","createEventObject","frameElement","_autoDiscoverFunction","fromString","lcStr","bit","hashHas","b64DecodeUnicode","mapCacheClear","mapCacheDelete","mapCacheHas","MapCache","equalObjects","baseIsEqualDeep","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","BitBuffer","bufIndex","putBit","getLengthInBits","windowNames","getWindowNames","isCssColor","colorToInt","rgb","intToHex","hexColor","colorToHex","toSJISFunction","CODEWORDS_COUNT","getSymbolSize","getSymbolTotalCodewords","getBCHDigit","setToSJISFunction","isKanjiModeEnabled","Hash","symbolsFunc","linear","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","getOffset","totalOffset","offsetParent","getContainer","goTo","_settings","easing","appOffset","framework","isDrawer","isClipped","targetLocation","startLocation","ease","timeElapsed","reachBottom","scrollHeight","makeWatcher","stackClear","stackGet","stackSet","reHasUnicodeWord","hasUnicodeWord","setCacheAdd","basePullAt","indexes","makeUrl","HOST_NAME","createSymbol","managers","newConnection","forceNew","multiplex","createSimpleFunctional","addOnceEventListener","passiveSupported","testListenerOpts","addPassiveEventListener","getNestedValue","deepEqual","getObjectValueByPath","getPropertyFromItem","createRange","getZIndex","getPropertyValue","tagsToReplace","escapeHTML","filterObjectOnKeys","filtered","convertToUnit","kebabCase","tab","backspace","remapInternalIcon","icons","iconPath","override","upperFirst","wrapInArray","customSorters","stringCollator","Intl","Collator","sensitivity","sortKey","sortA","sortB","customResult","defaultFilter","searchItems","getSlotType","getPrefixedScopedSlots","getSlot","optional","padEnd","camelizeObjectKeys","mergeDeep","fillArray","composedPath","createCaseFirst","roundedClasses","horizontal","block","depressed","fab","plain","retainFocusOnClick","isElevated","hasBg","isRound","sizeableClasses","computedElevation","defaultRipple","elevation","genLoader","__e","arraybuffer","encoded1","encoded2","encoded3","encoded4","thisArg","hasPath","isGreater","intersectable","onVisible","dirtyTypes","appendOuterIcon","clearIcon","counterValue","prependInnerIcon","solo","soloInverted","badInput","labelWidth","prefixWidth","prependWidth","initialValue","isClearing","isSingle","isSolo","isEnclosed","hasDetails","hasCounter","_this$lazyValue","isDirty","labelValue","isLabelActive","setLabelWidth","setPrefixWidth","tryAutofocus","onResize","genSlot","genPrependInnerSlot","clearableCallback","_this$$scopedSlots$co","_this$$scopedSlots$co2","_this$$scopedSlots","maxlength","computedCounterValue","genControl","genFieldset","genTextFieldSlot","genClearIcon","genIconSlot","genLegend","showLabel","labelPosition","VLabel","inputAttrs","quiet","showDetails","messagesNode","genMessages","counterNode","genCounter","genAffix","validity","hasMouseDown","scrollWidth","setPrependWidth","isInList","isInMenu","isInNav","expand","nav","subheader","threeLine","twoLine","__importDefault","AdapterService","errors_1","filter_query_1","callMethod","NotImplemented","alwaysMulti","paginate","multi","whitelist","operators","always","allowsMulti","MethodNotAllowed","BadRequest","$fails","wksDefine","enumKeys","_create","gOPNExt","$GOPD","$GOPS","$DP","$JSON","_stringify","TO_PRIMITIVE","isEnum","SymbolRegistry","AllSymbols","OPSymbols","USE_NATIVE","QObject","findChild","setSymbolDesc","protoDesc","sym","$defineProperties","$create","$propertyIsEnumerable","$getOwnPropertyDescriptor","$getOwnPropertyNames","$getOwnPropertySymbols","IS_OP","es6Symbols","wellKnownSymbols","keyFor","useSetter","useSimple","$replacer","__createBinding","k2","__setModuleDefault","__importStar","defaults","defaultStorage","AuthenticationClient","getDefaultStorage","core_1","storage_1","storageKey","locationKey","locationErrorKey","jwtStrategy","Authentication","authenticate","reAuthenticate","logout","populateHeader","buggy","encodeReserveRE","encodeReserveReplacer","commaRE","resolveQuery","extraQuery","_parseQuery","parsedQuery","castQueryParamValue","stringifyQuery","val2","trailingSlashRE","createRoute","redirectedFrom","router","route","getFullPath","formatMatch","START","_stringifyQuery","isSameRoute","onlyPath","isObjectEqual","aKeys","bKeys","aVal","bKey","bVal","isIncludedRoute","queryIncludes","handleRouteEntered","enteredCbs","View","routerView","_routerViewCache","inactive","_routerRoot","vnodeData","routerViewDepth","cachedData","cachedComponent","configProps","fillPropsinData","registerRouteInstance","propsToPass","resolveProps","resolvePath","firstChar","hashIndex","queryIndex","cleanPath","isarray","pathToRegexp_1","pathToRegexp","parse_1","compile_1","tokensToFunction_1","tokensToFunction","tokensToRegExp_1","tokensToRegExp","PATH_REGEXP","defaultDelimiter","escaped","asterisk","escapeGroup","escapeString","encodeURIComponentPretty","encodeURI","encodeAsterisk","pretty","attachKeys","sensitive","regexpToRegexp","arrayToRegexp","stringToRegexp","endsWithDelimiter","regexpCompileCache","fillParams","routeMsg","filler","pathMatch","normalizeLocation","params$1","rawPath","basePath","toTypes","eventTypes","Link","ariaCurrentValue","globalActiveClass","linkActiveClass","globalExactActiveClass","linkExactActiveClass","activeClassFallback","exactActiveClassFallback","compareTarget","guardEvent","scopedSlot","navigate","isExactActive","findAnchor","aData","handler$1","event$1","aAttrs","metaKey","defaultPrevented","registerInstance","callVal","_router","_route","beforeRouteEnter","beforeRouteLeave","beforeRouteUpdate","createRouteMap","routes","oldPathList","oldPathMap","oldNameMap","parentRoute","pathList","pathMap","nameMap","addRouteRecord","matchAs","pathToRegexpOptions","normalizedPath","normalizePath","caseSensitive","compileRouteRegex","childMatchAs","aliases","aliasRoute","createMatcher","addRoutes","addRoute","parentOrRoute","getRoutes","currentRoute","_createRoute","paramNames","record$1","originalRedirect","resolveRecordPath","resolvedPath","aliasedPath","aliasedMatch","aliasedRecord","Time","genStateKey","getStateKey","setStateKey","positionStore","setupScroll","scrollRestoration","protocolAndPath","absolutePath","stateCopy","handlePopState","handleScroll","isPop","behavior","scrollBehavior","getScrollPosition","shouldScroll","scrollToPosition","saveScrollPosition","getElementPosition","docEl","docRect","elRect","isValidPosition","normalizePosition","normalizeOffset","hashStartsWithNumberRE","scrollTo","supportsPushState","ua","pushState","runQueue","NavigationFailureType","redirected","aborted","duplicated","createNavigationRedirectedError","createRouterError","stringifyRoute","createNavigationDuplicatedError","createNavigationCancelledError","createNavigationAbortedError","_isRouter","propertiesToLog","isNavigationFailure","errorType","resolveAsyncComponents","hasAsync","flatMapComponents","resolvedDef","isESModule","History","normalizeBase","ready","readyCbs","readyErrorCbs","errorCbs","baseEl","resolveQueue","deactivated","extractGuards","records","guards","extractGuard","extractLeaveGuards","bindGuard","extractUpdateHooks","extractEnterGuards","bindEnterGuard","listen","errorCb","transitionTo","onComplete","onAbort","confirmTransition","updateRoute","ensureURL","afterHooks","lastRouteIndex","lastCurrentIndex","beforeHooks","enterGuards","resolveHooks","setupListeners","cleanupListener","HTML5History","_startLocation","getLocation","expectScroll","supportsScroll","handleRoutingEvent","go","fromRoute","getCurrentLocation","pathLowerCase","baseLowerCase","HashHistory","checkFallback","ensureSlash","replaceHash","pushHash","getUrl","AbstractHistory","VueRouter","apps","registerHook","createHref","handleInitialScroll","routeOrError","beforeEach","beforeResolve","afterEach","back","forward","getMatchedComponents","normalizedTo","START_LOCATION","NonError","captureStackTrace","commonProperties","destroyCircular","to_","serializeError","deserializeError","newError","Polynomial","ReedSolomonEncoder","genPoly","paddedData","remainder","buff","reTrimStart","srgbForwardMatrix","srgbForwardTransform","srgbReverseMatrix","srgbReverseTransform","fromXYZ","xyz","toXYZ","backgroundOpacity","bufferValue","striped","backgroundStyle","__cachedBarType","__cachedIndeterminate","__cachedDeterminate","genProgressBar","normalizedBuffer","isReversed","reactive","genListeners","__cachedStream","__cachedBackground","__cachedBuffer","__cachedBar","isNew","checkboxColor","sortIcon","everyItem","someItems","showGroupBy","singleSelect","_this$checkboxColor","VSimpleCheckbox","sortByText","sortIndex","beingSorted","isDesc","sortable","genSortIcon","VChip","closeOnContentClick","genSortChip","genSelectAll","sortHeaders","genSortSelect","th","tr","$t","ariaSort","divider","getAria","groupable","genGroupByToggle","dedupeModelListeners","rebuildFunctionalSlots","mobile","VDataTableHeaderMobile","VDataTableHeaderDesktop","needsTd","_slot$","computedSlots","columns","slotName","regularSlot","isMobile","textAlign","cellClass","headerClass","summaryClass","hideDefaultHeader","mobileRowChildren","filterFn","searchTableItems","headersWithCustomFilters","headersWithoutCustomFilters","matchesColumnFilters","matchesSearchTerm","VDataIterator","showSelect","showExpand","caption","headerProps","calculateWidths","headersLength","expandIcon","itemClass","internalGroupBy","openCache","widths","defaultHeader","colspan","computedHeaders","filterable","itemsPerPageOptions","sanitizedFooterProps","firstOption","calcWidths","columnSorters","createItemProps","colspanAttrs","sanitizedHeaderProps","toggleSelectAll","genLoading","genEmpty","genGroupedRows","genRows","genDefaultGroupedRow","isOpen","toggleFn","removeFn","VBtn","RowGroup","genScopedRows","genDefaultRows","isExpanded","genDefaultExpandedRow","genDefaultSimpleRow","headerRow","expandedRow","isSelected","isSelectable","MobileRow","Row","itemKey","contextmenu","dblclick","_this$$scopedSlots$fo","foot","hideDefaultFooter","VDataFooter","simpleProps","VSimpleTable","proxySlot","genCaption","genColgroup","genHeaders","genBody","genFoot","genFooters","VData","$props","customFilterWithColumns","customSortWithHeaders","computedItemsPerPage","internalCurrentItems","genDefaultScopedSlot","reHasRegExpChar","escapeRegExp","IntersectionObserver","_el$_observe","_observe","_el$_observe2","unobserve","Intersect","isLE","mLen","nBytes","eLen","TrackballControls","NONE","ZOOM","TOUCH_ROTATE","TOUCH_ZOOM_PAN","screen","rotateSpeed","zoomSpeed","panSpeed","noRotate","noZoom","noPan","staticMoving","dynamicDampingFactor","minDistance","maxDistance","mouseButtons","lastPosition","lastZoom","_keyState","_eye","_movePrev","_moveCurr","_lastAxis","_lastAngle","_zoomStart","_zoomEnd","_touchZoomDistanceStart","_touchZoomDistanceEnd","_panStart","_panEnd","target0","position0","up0","zoom0","changeEvent","endEvent","handleResize","clientLeft","clientTop","getMouseOnScreen","pageX","pageY","getMouseOnCircle","pointerType","onPointerMove","onPointerUp","keyup","mousewheel","deltaMode","deltaY","touchmove","touchend","rotateCamera","eyeDirection","objectUpDirection","objectSidewaysDirection","moveDirection","setLength","zoomCamera","panCamera","mouseChange","objectUp","pan","scale_x","scale_y","checkDistances","FINDER_PATTERN_SIZE","getPositions","eachFunc","asyncTag","proxyTag","G15","G15_MASK","G15_BCH","getEncodedBits","noCustomizer","Op","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","innerFn","outerFn","tryLocsList","protoGenerator","Generator","Context","_invoke","makeInvokeMethod","tryCatch","GenStateSuspendedStart","GenStateSuspendedYield","GenStateExecuting","GenStateCompleted","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","getProto","NativeIteratorPrototype","Gp","defineIteratorMethods","AsyncIterator","PromiseImpl","__await","unwrapped","previousPromise","callInvokeWithMethodAndArg","doneResult","delegate","delegateResult","maybeInvokeDelegate","_sent","dispatchException","abrupt","resultName","nextLoc","pushTryEntry","locs","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","displayName","isGeneratorFunction","genFun","mark","awrap","iter","skipTempReset","rootEntry","rootRecord","rval","handle","loc","caught","hasCatch","hasFinally","finallyEntry","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","idCounter","uniqueId","freeProcess","require","VCardActions","VCardSubtitle","VCardText","VCardTitle","InvalidCharacterError","polyfill","ArrayProto","eager","ALPHA_NUM_CHARS","AlphanumericData","queryWhen","fetchQuery","fetchParams","editScope","temps","isFindPending","_get","pageInfo","defaultScope","findData","fetchData","$FeathersVuex","serverAlias","isGetPending","getArgs","queryToUse","__awaiter","_arguments","adopt","fulfilled","__isTemp","unwatchClone","markAsDirty","debounce","debouncedHandler","_debounce","createClone","maybePromise","baseCreateElement","latestQuery","pageNumber","lq","canPrev","canNext","toStart","toEnd","toPage","clients","byAlias","byHost","addClient","client","assertIsEventEmitter","eeKey","makeBaseModel","addModel","prepareAddModel","ExistingBaseModel","globalModels","keepCopiesInStore","copiesByIdOnModel","copiesById","instanceDefaults","setupInstance","getFromStore","_commit","hasValidId","tempId","hasValidTempId","existingItem","existingClone","getGetterWithId","_getters","_dispatch","idOrParams","__isClone","_clone","preferUpdate","_merge","BaseModelEventEmitter","makeDefaultState","nonStateProps","tempsById","defaultLimit","defaultSkip","paramsForServer","debounceEventsTime","isCreatePending","isUpdatePending","isPatchPending","isRemovePending","errorOnFind","errorOnGet","errorOnCreate","errorOnUpdate","errorOnPatch","errorOnRemove","isIdCreatePending","isIdUpdatePending","isIdPatchPending","isIdRemovePending","startingState","FILTERS","additionalOperators","getCopiesById","makeServiceGetters","isRef","filterQuery","$select","cleanQuery","tempRecord","getCopyById","isCreatePendingById","isUpdatePendingById","isPatchPendingById","isRemovePendingById","isSavePendingById","isPendingById","makeServiceMutations","addItems","isTemp","updateItems","replaceItems","addOnUpsert","mergeInstance","addItem","updateTemp","tempClone","idToBeRemoved","isIdOk","removeTemps","tempIds","removeItems","containsObjects","idsToRemove","mapOfIdsToRemove","mapOfIndexesToRemove","indexesInReverseOrder","indexInIdsArray","clearAll","createCopy","resetCopy","commitCopy","clearCopy","updatePaginationForQuery","queriedAt","mostRecent","qidData","queryData","pageData","newState","setPending","uppercaseMethod","unsetPending","setIdPending","isIdMethodPending","unsetIdPending","setError","clearError","makeServiceActions","serviceActions","skipRequestIfExists","getFromRemote","dataOrArray","FeathersVuexModel","diffOnPatch","idOrArray","handleFindResponse","mapItemFromState","mappedFromState","handleFindError","afterFind","addOrUpdateList","isPaginated","toAdd","toUpdate","toRemove","autoRemove","disableRemove","makeServiceModule","makeGetters","makeMutations","makeActions","fromOptions","_pick","finalModule","enableServiceEvents","debouncedQueue","addOrUpdateById","removeItemById","enqueueAddOrUpdate","flushAddOrUpdateQueue","enqueueRemoval","flushRemoveItemQueue","maxWait","debounceEventsMaxWait","handleEvent","mutationName","handleEvents","confirmOrArray","affectsStore","prepareMakeServicePlugin","globalOptions","enableEvents","setupAuthState","userService","responseEntityField","entityIdField","accessToken","isAuthenticatePending","isLogoutPending","errorOnAuthenticate","errorOnLogout","makeAuthGetters","userId","isAuthenticated","makeAuthMutations","setAccessToken","setPayload","setAuthenticatePending","unsetAuthenticatePending","setLogoutPending","unsetLogoutPending","setAuthenticateError","clearAuthenticateError","setLogoutError","clearLogoutError","makeAuthActions","feathersClient","responseHandler","populateUser","authPluginInit","setupState","defaultGetters","setupGetters","defaultMutations","setupMutations","defaultActions","setupActions","unwrapParams","getFetchParams","providedParams","provided","isPending","haveBeenRequested","haveLoaded","debounceTime","isLocal","computes","getterParams","serviceState","paginationData","findInStore","findDebounced","findProxy","paramsToUse","toRefs","isCountPending","serverTotal","FeathersVuex","shouldSetupComponents","FeathersVuexFind","FeathersVuexGet","FeathersVuexFormWrapper","FeathersVuexInputWrapper","FeathersVuexPagination","FeathersVuexCount","feathersVuex","makeServicePlugin","makeAuthPlugin","prepareMakeAuthPlugin","mapValues","indeterminateIcon","__exportStar","hookUtils","byteArray","byteCount","byteIndex","ucs2encode","checkScalarValue","createByte","encodeCodePoint","readContinuationByte","continuationByte","decodeSymbol","byte1","byte2","byte3","byte4","composite","defaultConditional","checkEvent","checkIsActive","ShadowRoot","_clickOutside","lastMousedownWasOutside","handleShadow","onMousedown","_el$_clickOutside","FIELD_REGEXP","FIELDS_MAPPING","FirstName","LastName","Country","City","PostalCode","Address1","Address2","Phone","Company","renderLineTemplate","template","lineIsEmpty","addressKey","province","getZone","zones","zoneCode","zone","_wrapNativeSuper","Class","_isNativeFunction","_construct","Parent","asyncGeneratorStep","gen","_next","_throw","_asyncToGenerator","loadCountries","memoizeAsync","_callee","countries","operationName","Countries","variables","CountryLoaderError","loadCountry","_callee2","_context2","_x2","_x3","_Error","errorMessage","asyncFunction","stringifiedArgs","LINE_DELIMITER","DEFAULT_FORM_LAYOUT","DEFAULT_SHOW_LAYOUT","ORDERED_COUNTRIES_CACHE","AddressFormatter","_getCountry","loadCountryFromCache","getCountry","_getCountries","_format","_callee3","layout","_context3","formatting","_getOrderedFields","_callee4","_context4","edit","getOrderedFields","arrLength","othLength","arrStacked","othStacked","arrValue","othValue","compared","othIndex","cloneSymbol","Proxyable","baseSetToString","ordinal","yearStart","formats","LTS","LL","LLL","LLLL","ll","lll","llll","$replace","fluid","PromiseCapability","$$resolve","$$reject","borderless","exportedName","__scrim","autoGrow","noResize","rowHeight","noResizeHandle","_this$$refs$input","calculateInputHeight","removeProperty","uniqBy","basePropertyOf","deburredLetters","numberFormatKeys","OBJECT_STRING","parseArgs","looseClone","escapeHtml","rawText","escapeParams","_i18n","i18n","$i18n","_getMessages","$tc","choice","_tc","$te","_te","$n","defineMixin","__INTLIFY_META__","__i18nBridge","__i18n","VueI18n","localeMessages","mergeLocaleMessage","_i18nWatcher","watchI18nData","rootI18n","fallbackLocale","formatFallbackMessages","silentTranslationWarn","silentFallbackWarn","pluralizationRules","preserveDirectiveContent","localeMessages$1","_i18n$1","sharedMessages","_localeWatcher","watchLocale","onComponentInstanceCreated","subscribeDataChanging","_subscribing","unsubscribeDataChanging","destroyVM","interpolationComponent","places","onlyHasDefaultPlace","useLegacyPlaces","createParamsFromPlaces","everyPlace","vnodeHasPlaceAttribute","assignChildPlace","assignChildIndex","place","numberComponent","_ntp","assert","oldVNode","localeEqual","_localeMessage","getLocaleMessage","_vt","_locale","ref$2","parseValue","tc","makeParams","BaseFormatter","_caches","interpolate","RE_TOKEN_LIST_VALUE","RE_TOKEN_NAMED_VALUE","isClosed","APPEND","PUSH","INC_SUB_PATH_DEPTH","PUSH_SUB_PATH","BEFORE_PATH","IN_PATH","BEFORE_IDENT","IN_IDENT","IN_SUB_PATH","IN_SINGLE_QUOTE","IN_DOUBLE_QUOTE","AFTER_PATH","pathStateMachine","literalValueRE","isLiteral","stripQuotes","getPathCharType","formatSubPath","trimmed","parse$1","newChar","typeMap","subPathDepth","maybeUnescapeQuote","nextChar","I18nPath","getPathValue","availabilities","htmlTagMatcher","linkKeyMatcher","linkKeyPrefixMatcher","bracketsMatcher","defaultModifiers","defaultFormatter","dateTimeFormats","datetimeFormats","numberFormats","_formatter","_modifiers","_missing","missing","_sync","_fallbackRoot","fallbackRoot","_formatFallbackMessages","_silentTranslationWarn","_silentFallbackWarn","_dateTimeFormatters","_numberFormatters","_path","_dataListeners","_componentInstanceCreatedListener","componentInstanceCreatedListener","_preserveDirectiveContent","_warnHtmlInMessage","warnHtmlInMessage","_postTranslation","postTranslation","_escapeParameterHtml","escapeParameterHtml","__VUE_I18N_BRIDGE__","getChoiceIndex","choicesLength","thisPrototype","prototypeGetChoiceIndex","_choice","_choicesLength","_exist","_checkLocaleMessage","_initVM","availableLocales","__VUE18N__INSTANCE__","composer","newI18n","_getDateTimeFormats","_getNumberFormats","_localeChainCache","orgLevel","_warnDefault","interpolateMode","missingRet","parsedArgs","_isFallbackRoot","_isSilentFallbackWarn","_isSilentFallback","_isSilentTranslationWarn","_interpolate","visitedLinkStack","pathRet","_link","linkKeyPrefixMatches","linkPrefix","formatterName","linkPlaceholder","translated","_translate","_createMessageContext","_list","_named","named","linked","linkedKey","_appendItemToChain","chain","blocks","follow","_appendLocaleToChain","_appendBlockToChain","_getLocaleChain","predefined","fetchChoice","choices","setLocaleMessage","getDateTimeFormat","setDateTimeFormat","_clearDateTimeFormat","mergeDateTimeFormat","_localizeDateTime","DateTimeFormat","getNumberFormat","setNumberFormat","_clearNumberFormat","mergeNumberFormat","_getNumberFormatter","NumberFormat","numberFormat","nf","formatToParts","intlDefined","dateTimeFormat","colorName","colorModifier","AlignmentPattern","FinderPattern","MaskPattern","ECCode","Version","FormatInfo","Segments","setupFinderPattern","setupTimingPattern","setupAlignmentPattern","setupVersionInfo","setupFormatInfo","setupData","bitIndex","createData","getCharCountIndicator","totalCodewords","ecTotalCodewords","dataTotalCodewordsBits","remainingByte","createCodewords","dataTotalCodewords","ecTotalBlocks","blocksInGroup2","blocksInGroup1","totalCodewordsInGroup1","dataCodewordsInGroup1","dataCodewordsInGroup2","ecCount","rs","dcData","ecData","maxDataSize","dataSize","estimatedVersion","rawSegments","rawSplit","getBestVersionForData","bestVersion","dataBits","moduleCount","toSJISFunc","rsAstralRange","rsVarRange","rsZWJ","reHasUnicode","$iterators","collections","explicit","inputIndeterminate","checkboxAttrs","genCheckbox","aspectRatio","computedAspectRatio","aspectStyle","__cachedSizer","hasIntersect","contain","gradient","lazySrc","rootMargin","srcset","currentSrc","calculatedAspectRatio","normalisedSrc","backgroundImage","backgroundPosition","lazyImg","Image","pollForSize","getSrc","__cachedImage","__genPlaceholder","OPERATORS","getLimit","lower","upper","convertSort","assignFilters","converter","converted","additionalFilters","FUNC_ERROR_TEXT","nativeMin","lastArgs","lastThis","timerId","lastCallTime","lastInvokeTime","maxing","invokeFunc","leadingEdge","timerExpired","remainingWait","timeSinceLastCall","timeSinceLastInvoke","timeWaiting","shouldInvoke","trailingEdge","debounced","isInvoking","raised","objProps","objLength","othProps","objStacked","skipCtor","objCtor","othCtor","words","rsApos","reApos","createCompounder","baseIntersection","arrays","caches","Application","baseObject","createApplication","NAN","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","byServicePath","ieee754","typedArraySupport","kMaxLength","TYPED_ARRAY_SUPPORT","encodingOrOffset","fromArrayBuffer","fromObject","assertSize","alloc","isEncoding","fromArrayLike","isnan","SlowBuffer","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","bidirectionalIndexOf","arrayIndexOf","indexSize","valLength","readUInt16BE","foundIndex","hexWrite","remaining","strLen","utf8Write","blitBuffer","asciiWrite","asciiToBytes","latin1Write","base64Write","ucs2Write","utf16leToBytes","secondByte","thirdByte","fourthByte","tempCodePoint","bytesPerSequence","decodeCodePointsArray","INSPECT_MAX_BYTES","poolSize","_augment","species","allocUnsafeSlow","_isBuffer","swap16","swap32","swap64","thisStart","thisEnd","thisCopy","targetCopy","MAX_ARGUMENTS_LENGTH","toHex","checkOffset","ext","checkInt","objectWriteUInt16","littleEndian","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","writeDouble","newBuf","sliceLen","readUIntLE","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","maxBytes","writeUIntBE","writeUInt8","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","INVALID_BASE64_RE","base64clean","stringtrim","leadSurrogate","hi","lo","genSwitch","switchAttrs","onSwipeLeft","onSwipeRight","switchData","searchChildren","isDependent","openDependents","getClickableDependentElements","Uberproto","providers","_setup","configure","isSubApp","isService","subApp","subPath","protoService","_isSetup","hideSelected","itemDisabled","itemText","itemValue","noFilter","searchInput","genTileContent","VDivider","getMaskedCharacters","genHighlight","VSubheader","hasItem","getDisabled","tileActiveClass","genAction","needsTile","genFilteredText","getText","parsedItems","genTile","genDivider","staticNoDataTile","defaultMenuProps","closeOnClick","disableKeys","openOnClick","cacheItems","chips","deletableChips","disableLookup","itemColor","openOnClear","returnObject","smallChips","cachedItems","menuIsBooted","isMenuActive","lastItem","keyboardLookupPrefix","keyboardLookupLastTime","filterDuplicates","hasChips","allItems","computedOwns","virtualizedItems","selectItem","VSelectList","listData","$_menuProps","auto","menuCanShow","normalisedProps","setSelectedItems","onMenuActiveChange","setMenuIndex","getContent","uniqueValues","menu","onChipInput","selections","genSelections","genHiddenInput","genMenu","extraData","keypress","onKeyPress","genListWithSlot","staticList","VMenu","scroll","genList","genSelection","genSlotSelection","genChipSelection","genCommaSelection","listIndex","isAppendInner","KEYBOARD_LOOKUP_THRESHOLD","getTiles","changeListIndex","activateMenu","onUpDown","onEscDown","onTabDown","onSpaceDown","getMenuIndex","tiles","which","showMoreItems","activeTile","hasClickableTiles","prevTile","nextTile","firstTile","lastTile","findExistingIndex","appendInner","__lookupGetter__","camelCase","word","hashGet","VersionCheck","Regex","ccBits","MIXED","getBestModeForData","dataStr","newPromiseCapability","promiseCapability","NumericData","getStringByteLength","unescape","getSegments","getSegmentsFromString","numSegs","alphaNumSegs","byteSegs","kanjiSegs","segs","getSegmentBitsLength","mergeSegments","prevSeg","buildNodes","buildGraph","prevNodeIds","nodeGroup","currentNodeIds","lastCount","prevNodeId","buildSingleSegment","modesHint","bestMode","optimizedSegs","reIsUint","getMatch","primus","authenticated","handleSocket","authPromise","tokenRegex","errorRegex","NotAuthenticated","getFromLocation","removeAccessToken","getAccessToken","shortOut","compact","authHeader","expanded","mobileBreakpoint","singleExpand","footerProps","selectableKey","expansion","shiftKeyDown","lastEntry","selectableItems","removedProps","onKeyUp","lastEntryKey","lastEntryKeySelected","multipleSelect","currentItem","filteredItemsLength","genEmptyWrapper","noData","noResults","outerProps","genFooter","genMessage","hideSpinButtons","messagesToDisplay","hasMessages","$_modelEvent","hasHint","validations","validation","validationResult","genPrependSlot","genAppendSlot","hasListener","mouseup","handleGesture","touchstartX","touchendX","touchstartY","touchendY","dirRatio","touchmoveX","touchmoveY","move","createHandlers","_touchHandlers","baseIsSet","__defineSetter__","disableIconRotate","hideActions","hasMousedown","registerHeader","unregisterHeader","G18","G18_BCH","getBestVersionForDataLength","currentVersion","getCapacity","getReservedBitsCount","getTotalBitsFromDataArray","totalBits","reservedBits","getBestVersionForMixedData","usableBits","ecl","padStart","targetLength","padString","SelectingTimes","ampm","ampmReadonly","hour","minute","period","useSeconds","selecting","displayedHour","displayedMinute","titleContent","genPickerButton","Hour","Minute","displayedSecond","Second","genTime","genAmPm","double","isDragging","valueOnMouseDown","valueOnMouseUp","roundCount","degreesPerUnit","displayedValue","isAllowed","isInner","innerRadiusScale","getTransform","handScale","rotateRadians","onDragMove","clock","innerClock","handAngle","insideClick","euclidean","checksCount","angleToValue","setMouseDownValue","mousemove","wheel","genHand","genValues","landscape","noTitle","defaultTitleColor","computedTitleColor","genBodyTransition","genTitle","headerColor","genPickerTitle","genPickerBody","genPickerActionsSlot","rangeHours24","rangeHours12am","rangeHours12pm","range60","selectingNames","3","allowedHours","allowedMinutes","allowedSeconds","ampmInTitle","inputHour","inputMinute","inputSecond","lazyInputHour","lazyInputMinute","lazyInputSecond","selectingHour","selectingMinute","selectingSecond","minHour","maxHour","isHourAllowed","isAllowedHourCb","minMinute","maxMinute","minTime","maxTime","isMinuteAllowed","isAllowedMinuteCb","minSecond","maxSecond","setInputData","setPeriod","genValue","newHour","firstAllowed","emitValue","convert12to24","isAmPm","emitChange","allowedFn","isAllowedSecondCb","convert24to12","genClockAmPm","genClock","genPicker","aa","Ca","Ia","ba","da","ea","fa","ja","ka","la","ma","oa","na","pa","ra","sa","ta","4","6","5","9","10","7","8","21","25","27","28","29","31","33","24","11","17","12","13","15","16","18","19","20","22","23","26","Ha","Ga","Fa","Ea","Da","32","34","36","39","40","41","43","44","45","46","47","48","49","51","52","53","54","55","56","57","58","60","61","62","63","64","65","66","81","82","84","86","90","91","92","93","94","95","98","211","212","213","216","218","220","221","222","223","224","225","226","227","228","229","230","231","232","233","234","235","236","237","238","239","240","241","242","243","244","245","246","247","248","249","250","251","252","253","254","255","256","257","258","261","262","263","264","265","266","267","268","269","290","291","297","298","299","350","351","352","353","354","355","356","357","358","359","370","371","372","373","374","375","376","377","378","380","381","382","383","385","386","387","389","420","421","423","500","501","502","503","504","505","506","507","508","509","591","592","593","594","595","596","597","598","599","670","672","673","674","675","676","677","679","680","681","682","683","685","686","687","688","689","690","691","692","800","808","850","852","853","855","856","870","878","880","881","882","883","886","888","960","961","962","963","964","965","966","967","968","970","971","972","973","974","975","976","977","979","992","993","994","995","996","998","AC","AD","AE","AF","AG","AI","AL","AM","AO","AR","AS","AT","AU","AW","AX","AZ","BA","BB","BD","BE","BF","BG","BH","BI","BJ","BL","BM","BN","BO","BQ","BR","BS","BT","BW","BY","BZ","CA","CC","CD","CF","CG","CH","CI","CK","CL","CM","CN","CO","CR","CU","CV","CW","CX","CY","CZ","DE","DJ","DK","DM","DO","DZ","EC","EE","EG","EH","ER","ES","ET","FI","FJ","FK","FM","FO","FR","GA","GB","GD","GE","GG","GH","GI","GL","GM","GN","GP","GQ","GR","GU","GW","GY","HK","HN","HR","HT","HU","ID","IE","IL","IM","IN","IO","IQ","IR","IS","IT","JE","JM","JO","JP","KE","KG","KH","KI","KM","KN","KP","KR","KW","KY","KZ","LA","LB","LC","LI","LK","LR","LS","LU","LV","LY","MA","MC","MD","ME","MF","MG","MH","MK","ML","MN","MO","MP","MQ","MR","MS","MT","MU","MV","MW","MX","MY","MZ","NA","NC","NE","NF","NG","NI","NL","NO","NP","NR","NU","NZ","OM","PA","PE","PF","PG","PH","PK","PL","PM","PR","PS","PT","PW","PY","QA","RO","RS","RU","RW","SA","SB","SC","SD","SE","SG","SH","SI","SJ","SK","SL","SM","SN","SO","SR","SS","ST","SV","SX","SY","SZ","TA","TC","TD","TG","TH","TJ","TK","TL","TM","TN","TO","TR","TT","TV","TW","TZ","UG","US","UY","UZ","VA","VC","VE","VG","VI","VN","VU","WF","XK","YE","YT","ZA","ZM","ZW","wa","xa","ya","I","J","Y","za","Aa","Ba","Ja","Ka","La","Ma","Na","Oa","Pa","Qa","Ra","Sa","Ta","Ua","Va","Wa","Xa","Ya","Za","$a","bb","db","eb","fb","hb","jb","ga","lb","nb","pb","rb","sb","ub","wb","xb","yb","zb","Ab","Bb","Cb","Db","regionCode","possibility","Eb","international","national","e164","rfc3966","significant","canBeInternationallyDialled","execScript","Fb","getCountryCodeForRegionCode","getRegionCodeForCountryCode","getSupportedRegionCodes","getSupportedCallingCodes","getExample","getAsYouType","isPossible","isFixedLine","getNumber","getNumberFrom","getRegionCode","getCountryCode","addChar","removeChar","getPhoneNumber","abv","ii","valIsDefined","valIsNull","valIsReflexive","valIsSymbol","othIsDefined","othIsNull","othIsReflexive","othIsSymbol","chipGroup","draggable","filterIcon","pill","textColor","hasClose","genFilter","genClose","nodeIsMap","parseuri","err_cb","bail","symbolToString","onMouseEnter","onMouseLeave","canPromise","QRCode","CanvasRenderer","SvgRenderer","renderCanvas","renderFunc","argsNum","isLastArgCb","toCanvas","rsAstral","rsFitz","rsModifier","rsNonAstral","rsRegional","rsSurrPair","reOptMod","rsOptVar","rsOptJoin","rsSeq","rsSymbol","reUnicode","mapped","priority","areaCodes","support","isDataView","viewClasses","isArrayBufferView","normalizeName","normalizeValue","iteratorFor","consumed","bodyUsed","fileReaderReady","readBlobAsArrayBuffer","readBlobAsText","readAsText","readArrayBufferAsText","bufferClone","Body","_initBody","_bodyInit","_bodyText","_bodyBlob","_bodyFormData","_bodyArrayBuffer","isConsumed","normalizeMethod","upcased","credentials","signal","reParamSearch","reQueryString","parseHeaders","rawHeaders","preProcessedHeaders","Response","bodyInit","ok","statusText","redirectStatuses","fixUrl","getAllResponseHeaders","responseURL","onabort","setCaretPosition","ctrl","createTextRange","moveEnd","moveStart","disabledFormatting","enabledCountryCode","enabledFlags","dropdownOptions","dynamicPlaceholder","requestTimeout","req","pollXhr","setDisableHeaderCheck","hasXDR","contentType","requestsCount","requests","fromError","unloadHandler","terminationEvent","comparer","gOPS","setCacheHas","getRowColCoords","posCount","intervals","posLength","BlobBuilder","WebKitBlobBuilder","MSBlobBuilder","MozBlobBuilder","blobSupported","blobSupportsArrayBufferView","blobBuilderSupported","getBlob","mapArrayBufferViews","BlobBuilderConstructor","BlobConstructor","nodeIsSet","createMessage","$_alreadyWarned","generateComponentTrace","consoleWarn","newMessage","breaking","classifyRE","classify","formatComponentName","includeFile","__file","currentRecursiveSequence","styleList","styleProp","parseStyle","styleMap","mergeTarget","mergeClasses","mergeStyles","mergeListeners","selectable","genAttrs","transports","transportOptions","writeBuffer","prevBufferLen","policyPort","rememberUpgrade","onlyBinaryUpgrades","product","upgrades","pingInterval","pingTimeout","pingIntervalTimer","pingTimeoutTimer","priorWebsocketSuccess","createTransport","setTransport","onDrain","failed","onTransportOpen","upgradeLosesBinary","upgrading","freezeTransport","onTransportClose","onupgrade","onHandshake","setPing","filterUpgrades","onHeartbeat","sendPacket","waitForUpgrade","cleanupAndClose","filteredUpgrades","_onResize","_el$_onResize","Resize","namespacesCache","enabledCache","enableOverride","newDebug","toNamespace","remainingNum","attachedRoot","getRootNode","composed","normalizeArray","allowAboveRoot","basename","matchedSlash","resolvedAbsolute","isAbsolute","trailingSlash","fromParts","toParts","samePartsLength","outputParts","sep","dirname","hasRoot","extname","startDot","startPart","preDotState","hasFunc","isHookObject","convertHookData","makeArguments","defaultMakeArguments","utils_1","appLast","appHooks","__hooks","serviceHooks","initialHookObject","updateCurrentHook","currentHook","hookData","allHooks","myHooks","resolver","memoized","basePropertyDeep","calculatedTopAuto","defaultOffset","hasJustFocused","resizeTimeout","menuWidth","calcLeftAuto","calcLeft","nudgeWidth","pageWidth","calculatedMaxWidth","calcTop","tabIndex","calculatedMaxHeight","contentHeight","calcTopAuto","calcScrollPosition","maxScrollTop","tileDistanceFromMenuTop","firstTileOffsetTop","rootThemeClasses","genDirectives","mouseEnterHandler","mouseLeaveHandler","relatedTarget","callDeactivate","mobileWidth","noopFn","condition","__assign","__values","__read","__spread","currentVue","currentVM","getCurrentVue","setCurrentVue","vue","getCurrentVM","setCurrentVM","currentVMInFn","defineComponentInstance","isComponentInstance","createSlotProxy","WatcherPreFlushQueueKey","WatcherPostFlushQueueKey","AccessControlIdentifierKey","ReactiveIdentifierKey","RawIdentifierKey","RefKey","RefImpl","createRef","seal","unref","isReactive","toRef","shallowRef","shallowReactive","triggerRef","AccessControlIdentifier","ReactiveIdentifier","RawIdentifier","isRaw","setupAccessControl","defineAccessControl","observed","e_1","markReactive","arguments_1","e_1_1","markRaw","toRaw","_install","set$1","__secret_vfa_state__","vmStateManager","unwrapRefProxy","asVmProperty","propName","propValue","updateTemplateRef","rawBindings","oldRefKeys","setupValue","newKeys","validNewKeys","slotsProxy","parentVode","curSlots","slotNames","activateCurrentInstance","preVm","functionApiInit","initSetup","createSetupContext","bindingFunc_1","bindingObj_1","bindingValue","methodReturnVoid","targetKey","srcKey","fallbackCreateElement","defineComponent","genName","createLifeCycle","lifeCyclehook","injectHookOption","mergeFn","wrapHookCall","fallbackVM","onBeforeMount","onMounted","onBeforeUpdate","onUpdated","onBeforeUnmount","onUnmounted","onErrorCaptured","onActivated","onDeactivated","onServerPrefetch","flushPreQueue","flushQueue","flushPostQueue","hasWatchEnv","installWatchEnv","getWatcherOption","getWatchEffectOption","getWatcherVM","queueFlushJob","fallbackFlush","createVueWatcher","immediateInvokeCallback","noRun","patchWatcherTeardown","runCleanup","_teardown","flushMode","registerCleanup","createScheduler","running_1","getter_1","watcher_1","originGet","applyCb","originalCallbck_1","shiftCallback_1","watchEffect","effect","computedHost","NOT_FOUND","provideCache_1","VueCompositionAPI","getCurrentInstance","overlayColor","overlayOpacity","animationFrame","createOverlay","checkPath","overflowY","overflowX","deltaX","alreadyAtStart","alreadyAtEnd","scrollingUp","scrollingDown","isInside","dialog","anchorNode","hasScrollbar","scrollListener","unicodeWords","rnds8","rng","byteToHex","v4","rnds","uncountable_words","men","people","tia","analyses","hives","lrves","aves","foves","movies","aeiouyies","series","xes","mice","buses","oes","shoes","crises","octopuses","summonses","oxen","matrices","feet","teeth","geese","quizzes","whereases","genera","singular","man","person","ox","octopus","summons","bus","buffalo","tium","sis","ffe","hive","aeiouyy","mouse","tooth","goose","quiz","whereas","criterion","genus","plural_rules","singular_rules","non_titlecased_words","id_suffix","underbar","space_or_underbar","uppercase","underbar_prefix","inflector","_apply_rules","ignore","from_index","compare_func","pluralize","singularize","inflect","low_first_letter","str_arr","str_path","underscore","all_upper_case","dasherize","titleize","demodulize","tableize","foreign_key","drop_id_ubar","ordinalize","ltd","ld","suf","baseProperty","authentication_1","populate_header_1","FeathersError","inheritsFrom","Child","PaymentError","Forbidden","NotFound","NotAcceptable","Timeout","Conflict","Gone","LengthRequired","Unprocessable","TooManyRequests","GeneralError","BadGateway","Unavailable","400","401","402","403","404","405","406","408","409","410","411","422","429","Toggleable","registerComponents","$_vuetify_subcomponents","$_vuetify_installed","$ssrContext","isHydrating","scrollBarWidth","sm","md","lg","iconfont","locales","cspNonce","customProperties","minifyTheme","themeCache","variations","themes","primary","secondary","accent","warning","parentPreset","defaultPreset","userPreset","preset","globalPreset","xl","xsOnly","smOnly","smAndUp","mdOnly","mdAndDown","mdAndUp","lgOnly","lgAndDown","lgAndUp","xlOnly","ssr","getClientHeight","getClientWidth","checkboxOn","checkboxOff","checkboxIndeterminate","subgroup","dropdown","radioOn","radioOff","ratingEmpty","ratingFull","ratingHalf","unfold","minus","convertToComponentDeclarations","iconSet","mdiSvg","mdi","fa4","faSvg","presets","LANG_PREFIX","getTranslation","usingDefault","defaultLocale","shortKey","translation","translator","defaultTranslator","currentLocale","cielabForwardTransform","cbrt","cielabReverseTransform","transformedY","lab","Ln","isItem","anchor","variant","parsedTheme","genVariations","genBaseColor","genVariantColor","genColorVariableName","genColorVariable","genStyles","cssVar","variablesCss","aColor","variants","variantValue","lighten","darken","vueMeta","fillVariant","isVueMeta23","applyVueMeta23","checkOrCreateStyleElement","styleEl","oldDark","applyTheme","clearCss","generatedStyles","$meta","initVueMeta","initSSR","initTheme","genStyleElement","defaultTheme","metaKeyName","keyName","metaInfo","vuetifyStylesheet","nonce","addApp","obs","currentTheme","debug_1","namespacedEmitterMethods","otherEmitterMethods","addEmitterMethods","timeoutId","HOT_COUNT","HOT_SPAN","nativeNow","lastCalled","stamp","prevIcon","nextIcon","firstIcon","lastIcon","itemsPerPageAllText","showFirstLastPage","showCurrentPage","disableItemsPerPage","genDataItemsPerPageOption","computedIPPO","computedDataItemsPerPageOptions","ippo","onChangeItemsPerPage","onPreviousPage","onNextPage","disableNextPageIcon","onFirstPage","onLastPage","genItemsPerPageSelect","genPaginationInfo","genIcons","rsDingbatRange","rsLowerRange","rsMathOpRange","rsNonCharRange","rsPunctuationRange","rsSpaceRange","rsUpperRange","rsBreakRange","rsBreak","rsDigits","rsDingbat","rsLower","rsMisc","rsUpper","rsMiscLower","rsMiscUpper","rsOptContrLower","rsOptContrUpper","rsOrdLower","rsOrdUpper","rsEmoji","reUnicodeWord","allowOverflow","offsetOverflow","positionX","positionY","absoluteX","absoluteY","relativeYOffset","hasWindow","inputActivator","stackClass","xOverflow","getOffsetLeft","documentHeight","getInnerHeight","toTop","absoluteYOffset","totalHeight","isOverflowing","deactivate","getOffsetTop","getRoundedBoundedClientRect","marginLeft","checkActivatorFixed","checkForPageYOffset","hasActivator","absolutePosition","measure","sneakPeek","offsetRect","reIsDeepProp","reIsPlainProp","showArrowsOnHover","touchless","changedByDelimiters","isReverse","updateReverse","_this$$scopedSlots$di","_this$$scopedSlots$di2","hasPrev","hasNext","getNextIndex","getPrevIndex","hasActiveItems","genContainer","cmp","cycles","aobj","bobj","clipped","disableResizeWatcher","disableRouteWatcher","expandOnHover","miniVariant","miniVariantWidth","permanent","stateless","temporary","isMouseover","touchArea","isMiniVariant","hasApp","computedMaxHeight","isBottom","computedWidth","reactsToResize","reactsToMobile","updateMiniVariant","parentRect","reactsToClick","genPosition","swipeLeft","swipeRight","transitionend","resizeEvent","initUIEvent","reactsToRoute","calculateTouchArea","genPrepend","genAppend","genBorder","service_1","otherFields","withNativeBuffer","withNativeArrayBuffer","_onScroll","_el$_onScroll","ReflectOwnKeys","ReflectApply","receiver","ProcessEmitWarning","NumberIsNaN","_eventsCount","_maxListeners","defaultMaxListeners","checkListener","_getMaxListeners","_addListener","newListener","onceWrapper","fired","wrapFn","_onceWrap","wrapped","unwrap","evlistener","unwrapListeners","arrayClone","listenerCount","spliceOne","errorListener","eventTargetAgnosticAddListener","addErrorHandlerIfEventEmitter","wrapListener","setMaxListeners","getMaxListeners","doError","er","addListener","prependListener","prependOnceListener","originalListener","rawListeners","eventNames","_isFinite","prevent","falseValue","trueValue","calculateUpdatedOffset","selectedElement","currentScrollOffset","totalWidth","itemOffset","additionalOffset","calculateCenteredOffset","offsetCentered","BaseSlideGroup","centerActive","internalItemsLength","startX","isSwipingHorizontal","isSwiping","scrollOffset","hasAffixes","setWidths","__cachedNext","onAffixClick","focusin","upperLocation","hasAffix","__cachedPrev","overflowCheck","onTouchStart","onTouchMove","onTouchEnd","newAbosluteOffset","canTouch","diffX","diffY","maxScrollOffset","lastItemPosition","wrapperPosition","calculateNewOffset","scrollIntoView","genPrev","genNext","slideGroup","newPath","oldPath","hasNew","hasOld","alignWithTitle","fixedTabs","grow","hideSlider","iconsAndText","sliderColor","sliderSize","transitionTime","callSlider","activeTab","VTabsBar","VTabsItems","VTabsSlider","sliderStyles","parseNodes","genBar","availableProps","compareNSB","compareArrays","compareStrings"],"mappings":"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C,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,MACjfC,IAAI,CAAC,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,MAAM1xG,IAAI,CAAC,MAAM2xG,IAAI,CAAC,MAAMC,IAAI,CAAC,KAAK,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,KAAK,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,KAAK,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,MACxfC,IAAI,CAAC,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,MAAMrjG,IAAI,CAAC,KAAK,KAAK,MAAMsjG,IAAI,CAAC,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,KAAK,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,MAAM5zF,IAAI,CAAC,MAAM6zF,IAAI,CAAC,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,MACxfC,IAAI,CAAC,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,OAAOC,IAAI,CAAC,OAAOC,IAAI,CAAC,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,OAAOC,IAAI,CAAC,OAAOC,IAAI,CAAC,MAAMC,IAAI,CAAC,OAAOC,IAAI,CAAC,OAAOC,IAAI,CAAC,OAAOC,IAAI,CAAC,MAAMC,IAAI,CAAC,OAAOC,IAAI,CAAC,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,OAAOC,IAAI,CAAC,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,MAAMC,IAAI,CAAC,OAAO72U,EAAE,CAAC82U,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,4BAA4B,CACpf,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,iCAAiC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAClf,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,YAAY,CAAC,CAAC,mBAAmB,QAAQ,CAAC,MAAM,CAAC,CAAC,2BAA2B,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,yDAAyD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,aAC7e,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,qBAAqB,QAAQ,CAAC,SAAS,CAAC,CAAC,wBAAwB,WAAW,CAAC,oBAAoB,OAAO,CAAC,CAAC,wBAAwB,WAAW,CAAC,UAAU,CAAC,CAAC,2BAA2B,WAAW,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,4CACre,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,GAAG,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,UAAU,CAAC,CAAC,2BAA2B,WAAW,CAAC,SAAS,QAAQ,CAAC,CAAC,CAAC,2BAA2B,WAAW,CAAC,SAAS,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,uCAAuC,CAAC,CAAC,CAAC,aAC5e,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,2DAA2D,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,uCAAuC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,0OAA0O,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IACrf,KAAK,EAAE,MAAM,IAAI,CAAC,CAAC,mBAAmB,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,oCAAoC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,4DAA4D,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,uCAAuC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,0OACzd,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,EAAE,MAAM,IAAI,CAAC,CAAC,oBAAoB,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,yDAAyD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,yGAAyG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,iBAClf,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,qBAAqB,QAAQ,CAAC,QAAQ,OAAO,CAAC,CAAC,wBAAwB,WAAW,CAAC,UAAU,OAAO,CAAC,CAAC,2BAA2B,WAAW,CAAC,iBAAiB,OAAO,CAAC,CAAC,mBAAmB,QAAQ,CAAC,WAAW,OAAO,CAAC,CAAC,2BAA2B,WAAW,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,gCAC1e,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,sFAAsF,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,wCAAwC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,4DAA4D,CAAC,CAAC,CAAC,YAAY,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,2BAA2B,WAAW,CAAC,SAAS,QAAQ,CAAC,CAAC,mBAAmB,QAAQ,CAAC,WAChf,SAAS,CAAC,CAAC,mBAAmB,QAAQ,CAAC,QAAQ,SAAS,CAAC,CAAC,mBAAmB,QAAQ,CAAC,SAAS,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,uCAAuC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,2BAA2B,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAClf,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,uCAAuC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,4pCAC5F,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,yqCACnC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,GAAG,KAAK,IAAI,CAAC,CAAC,0jBAC/K,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,KAAK,CAAC,qDAAqD,CAAC,CAAC,mBAAmB,QAAQ,CAAC,UAAU,CAAC,CAAC,mBAAmB,QAAQ,CAAC,UAAU,CAAC,CAAC,mBAAmB,QAAQ,CAAC,UAAU,CAAC,CAAC,2BAA2B,WAAW,CAAC,uFAAuF,kNACzU,kSAAkS,+WAClS,MAAM,CAAC,GAAG,CAAC,CAAC,2BAA2B,WAAW,CAAC,KAAK,MAAM,CAAC,GAAG,CAAC,CAAC,2BAA2B,WAAW,CAAC,QAAQ,OAAO,CAAC,CAAC,2BAA2B,WAAW,CAAC,QAAQ,MAAM,CAAC,GAAG,CAAC,CAAC,gCAAgC,cAAc,CAAC,yBAAyB,4FAA4F,wNAC3V,4SAA4S,wXAC5S,OAAO,CAAC,CAAC,gCAAgC,cAAc,CAAC,MAAM,OAAO,CAAC,CAAC,2BAA2B,WAAW,CAAC,KAAK,OAAO,CAAC,CAAC,gCAAgC,cAAc,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,2BAA2B,WAAW,CAAC,uFAAuF,kNACzT,kSAAkS,+WAClS,MAAM,CAAC,GAAG,CAAC,CAAC,2BAA2B,WAAW,CAAC,KAAK,MAAM,CAAC,GAAG,CAAC,CAAC,2BAA2B,WAAW,CAAC,QAAQ,OAAO,CAAC,CAAC,2BAA2B,WAAW,CAAC,QAAQ,MAAM,CAAC,GAAG,CAAC,CAAC,gCAAgC,cAAc,CAAC,yBAAyB,4FAA4F,wNAC3V,4SAA4S,yXAC5S,CAAC,CAAC,gCAAgC,cAAc,CAAC,OAAO,CAAC,CAAC,2BAA2B,WAAW,CAAC,KAAK,OAAO,CAAC,CAAC,gCAAgC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,wCAAwC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,mDAAmD,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,uCACvd,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,0OAA0O,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,EAAE,MAAM,IAAI,CAAC,CAAC,mBAAmB,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,mKACxd,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,2VAA2V,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,4CAA4C,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,eACnf,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,6CAA6C,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,oCAAoC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,kDAAkD,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,GAAG,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,iBAAiB,OAAO,CAAC,CAAC,mBAAmB,QAAQ,CAAC,OAAO,OAAO,CAAC,CAAC,qBAAqB,QAAQ,CAAC,UAAU,OAAO,CAAC,CAAC,WAAW,KAAK,CAAC,MAC/e,CAAC,CAAC,sBAAsB,QAAQ,CAAC,uDAAuD,OAAO,CAAC,CAAC,qBAAqB,QAAQ,CAAC,kBAAkB,OAAO,CAAC,CAAC,6BAA6B,WAAW,CAAC,KAAK,OAAO,CAAC,CAAC,6BAA6B,WAAW,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,iBAAiB,OAAO,CAAC,CAAC,mBAAmB,QAAQ,CAAC,OAAO,OAAO,CAAC,CAAC,qBAAqB,QAAQ,CAAC,UAAU,OAAO,CAAC,CAAC,sBAAsB,QAAQ,CAAC,uDAAuD,OACnf,CAAC,CAAC,qBAAqB,QAAQ,CAAC,kBAAkB,OAAO,CAAC,CAAC,6BAA6B,WAAW,CAAC,KAAK,OAAO,CAAC,CAAC,6BAA6B,WAAW,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,+EAA+E,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,8aAChW,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,yGAAyG,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,mDAAmD,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,2CAA2C,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,sDAAsD,IAAI,CAAC,CAAC,cAC5e,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,qBAAqB,QAAQ,CAAC,MAAM,OAAO,CAAC,CAAC,2BAA2B,WAAW,CAAC,OAAO,CAAC,CAAC,mBAAmB,QAAQ,CAAC,OAAO,CAAC,CAAC,mBAAmB,QAAQ,CAAC,MAAM,SAAS,CAAC,CAAC,qBAAqB,QAAQ,CAAC,OAAO,CAAC,CAAC,6BAA6B,WAAW,CAAC,MAAM,OAAO,CAAC,CAAC,2BAA2B,WAAW,CAAC,QAAQ,OAAO,CAAC,CAAC,wBAAwB,WAAW,CAAC,UAAU,QAAQ,YAAY,CAAC,CAAC,2BAA2B,WAAW,CAAC,iBAAiB,CAAC,CAAC,2BAA2B,WAC3e,CAAC,SAAS,CAAC,CAAC,CAAC,qBAAqB,QAAQ,CAAC,MAAM,OAAO,CAAC,CAAC,6BAA6B,WAAW,CAAC,MAAM,OAAO,CAAC,CAAC,2BAA2B,WAAW,CAAC,QAAQ,OAAO,CAAC,CAAC,wBAAwB,WAAW,CAAC,UAAU,QAAQ,YAAY,CAAC,CAAC,2BAA2B,WAAW,CAAC,kBAAkB,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,8DAA8D,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,8BACxd,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,2FAA2F,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,WAAW,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,4FAChb,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,qCAAqC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,sDAAsD,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,+IACtZ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,wCAAwC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,kHAAkH,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,oDAAoD,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,2BAA2B,WAAW,CAAC,UAAU,CAAC,CACpf,mCAAmC,cAAc,CAAC,MAAM,OAAO,CAAC,CAAC,mCAAmC,cAAc,CAAC,iBAAiB,qBAAqB,6BAA6B,SAAS,CAAC,CAAC,mCAAmC,cAAc,CAAC,UAAU,QAAQ,CAAC,CAAC,CAAC,mCAAmC,cAAc,CAAC,MAAM,OAAO,CAAC,CAAC,mCAAmC,cAAc,CAAC,iBAAiB,qBAAqB,6BAA6B,SAAS,CAAC,CAAC,mCAAmC,cAC5e,CAAC,UAAU,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,qCAAqC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,sJAAsJ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,2CAA2C,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IACrf,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,UAAU,CAAC,CAAC,2BAA2B,WAAW,CAAC,gBAAgB,OAAO,CAAC,CAAC,2BAA2B,WAAW,CAAC,eAAe,OAAO,CAAC,CAAC,mCAAmC,cAAc,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,2BAA2B,WAAW,CAAC,gBAAgB,OAAO,CAAC,CAAC,2BAA2B,WAAW,CAAC,eAAe,OAAO,CAAC,CAAC,mCAAmC,cAAc,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IACjf,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,mDAAmD,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,0IAA0I,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,wHAAwH,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,uCACle,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,kCAAkC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,0OAA0O,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,MAAM,IAAI,CAAC,CAAC,mBAAmB,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,+EACje,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,kFAAkF,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,kxCAC5J,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,uDAAuD,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,gDAAgD,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,qBAAqB,QAAQ,CAAC,kBAAkB,OAAO,CAAC,CAAC,qBAAqB,QAAQ,CAAC,qLAC3X,OAAO,CAAC,CAAC,qBAAqB,QAAQ,CAAC,aAAa,OAAO,CAAC,CAAC,kBAAkB,QAAQ,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,qFAAqF,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,6HACvZ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,GAAG,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,2BAA2B,WAAW,CAAC,aAAa,OAAO,CAAC,CAAC,gCAAgC,cAAc,CAAC,eAAe,OAAO,CAAC,CAAC,mCAAmC,cAAc,CAAC,UAAU,OAAO,CAAC,CAAC,mCAAmC,cAAc,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,+DAA+D,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IACrf,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,oGAAoG,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,oCAAoC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mCAAmC,cAAc,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,qCACvd,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,6FAA6F,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,mDAAmD,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,KAAK,CAAC,MAAM,CAAC,CAAC,6BAA6B,cAAc,CAAC,KAAK,OAAO,CAAC,CAAC,mBAAmB,QACjf,CAAC,mBAAmB,OAAO,CAAC,CAAC,0BAA0B,WAAW,CAAC,KAAK,OAAO,CAAC,CAAC,6BAA6B,WAAW,CAAC,uCAAuC,OAAO,CAAC,CAAC,2BAA2B,WAAW,CAAC,aAAa,OAAO,CAAC,CAAC,2BAA2B,WAAW,CAAC,aAAa,OAAO,CAAC,CAAC,6BAA6B,WAAW,CAAC,cAAc,OAAO,CAAC,CAAC,2BAA2B,WAAW,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,6BAA6B,cAAc,CAAC,KAAK,OAAO,CAAC,CAAC,mBAAmB,QAAQ,CAAC,mBACjf,OAAO,CAAC,CAAC,0BAA0B,WAAW,CAAC,KAAK,OAAO,CAAC,CAAC,6BAA6B,WAAW,CAAC,uCAAuC,OAAO,CAAC,CAAC,2BAA2B,WAAW,CAAC,aAAa,OAAO,CAAC,CAAC,2BAA2B,WAAW,CAAC,aAAa,OAAO,CAAC,CAAC,6BAA6B,WAAW,CAAC,cAAc,OAAO,CAAC,CAAC,2BAA2B,WAAW,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,0HAC/e,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,0FAA0F,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,kCAChe,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mCAAmC,cAAc,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,mCAAmC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,oCAAoC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,YACze,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mCAAmC,cAAc,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,iCAAiC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,yCAAyC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,aAAa,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CACpf,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,0CAA0C,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,iCAAiC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,uCAAuC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,0OAC3V,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,EAAE,MAAM,IAAI,CAAC,CAAC,mBAAmB,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,qDAAqD,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,WAAW,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IACpf,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,uNAAuN,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,cAAc,IACpf,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,QAAQ,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,WAAW,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,2BAA2B,WAAW,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,6DAA6D,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,6EAA6E,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CACpf,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,2FAA2F,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,kEAAkE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,uEAAuE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,YAAY,CACpf,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,yDAAyD,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,GAAG,yCAAyC,IAAI,CAAC,CAAC,8DAA8D,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,KAAK,CAAC,8EAA8E,CAAC,CAAC,mBAAmB,QAAQ,CAAC,oBAAoB,uBAAuB,CAAC,CAAC,mBAAmB,QAClf,CAAC,SAAS,6CAA6C,CAAC,CAAC,6BAA6B,WAAW,CAAC,iBAAiB,OAAO,CAAC,CAAC,mBAAmB,QAAQ,CAAC,MAAM,CAAC,CAAC,2BAA2B,WAAW,CAAC,8DAA8D,OAAO,cAAc,CAAC,CAAC,2BAA2B,WAAW,CAAC,sBAAsB,OAAO,eAAe,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,oBAAoB,uBAAuB,CAAC,CAAC,6BAA6B,WAAW,CAAC,iBACpe,OAAO,CAAC,CAAC,2BAA2B,WAAW,CAAC,8DAA8D,OAAO,cAAc,CAAC,CAAC,2BAA2B,WAAW,CAAC,sBAAsB,OAAO,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,4IAC/W,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,uKAAuK,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,oDAAoD,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,0OACjW,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,EAAE,MAAM,IAAI,CAAC,CAAC,mBAAmB,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,0DAA0D,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,UAAU,CAAC,CAAC,wBACpf,WAAW,CAAC,kBAAkB,CAAC,CAAC,mCAAmC,cAAc,CAAC,aAAa,CAAC,CAAC,CAAC,wBAAwB,WAAW,CAAC,kBAAkB,CAAC,CAAC,mCAAmC,cAAc,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,uDAAuD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,wKAChX,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,oCAAoC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,2CAA2C,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,OAAO,CAAC,CAAC,mBAAmB,QAAQ,CAAC,oBAAoB,CAAC,CAAC,2BAA2B,WAAW,CAAC,SAAS,CAAC,CAAC,2BAA2B,WAAW,CAAC,MAAM,CAAC,CAAC,2BAA2B,WACnf,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,mIAAmI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,gLAAgL,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,6CACxc,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,qCAAqC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,MAAM,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,OAAO,QAAQ,CAAC,CAAC,6BAA6B,WAAW,CAAC,OAAO,QAAQ,CAAC,CAAC,2BAA2B,WAAW,CAAC,oDAAoD,yFAC9a,SAAS,CAAC,CAAC,mCAAmC,cAAc,CAAC,2BAA2B,SAAS,CAAC,CAAC,mCAAmC,cAAc,CAAC,SAAS,SAAS,CAAC,CAAC,6BAA6B,WAAW,CAAC,QAAQ,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,iDAAiD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,gFAAgF,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,kBACve,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,UAAU,CAAC,CAAC,gCAAgC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,yLAC5W,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,yLAAyL,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,uCAAuC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,kPAC/V,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,cAAc,KAAK,EAAE,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,qEAAqE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,0IAA0I,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,yGACta,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,mDAAmD,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,2CAA2C,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,sDAAsD,IAAI,CAAC,CAAC,kBAAkB,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,CAAC,CACpf,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,sCAAsC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,2BAA2B,WAAW,CAAC,MAAM,OAAO,CAAC,CAAC,mBAAmB,QAAQ,CAAC,SAAS,OAAO,CAAC,CAAC,2BAA2B,WAAW,CAAC,KAAK,OAAO,CAAC,CAAC,2BAA2B,WAAW,CAAC,QAAQ,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CACpf,4BAA4B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mCAAmC,cAAc,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,4EAC9b,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,wBAAwB,WAAW,CAAC,MAAM,CAAC,CAAC,2BAA2B,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,uDAAuD,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAChf,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,GAAG,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,2BAA2B,WAAW,CAAC,aAAa,OAAO,CAAC,CAAC,mCAAmC,cAAc,CAAC,aAAa,OAAO,CAAC,CAAC,2CAA2C,iBAAiB,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,eACnf,CAAC,CAAC,CAAC,MAAMC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,qFAAqF,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,kEAAkE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gCAAgC,cAAc,CAAC,MAAM,CAAC,CAAC,mCAAmC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CACpf,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,gCAAgC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,qCAAqC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,oXACzZ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,oXAAoX,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,cAAc,CACpf,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,yDAAyD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,KAAK,CAAC,8BAA8B,CAAC,CAAC,mBAAmB,QAAQ,CAAC,MAAM,QAAQ,QAAQ,CAAC,CAAC,2BAA2B,WAAW,CAAC,OAAO,CAAC,CAAC,wBAAwB,WAAW,CAAC,WAAW,QAAQ,CAAC,CAAC,wBAAwB,WAAW,CAAC,WAAW,CAAC,CAAC,2BAA2B,WAAW,CAAC,oDAAoD,QACpf,CAAC,CAAC,6BAA6B,WAAW,CAAC,SAAS,CAAC,CAAC,2BAA2B,WAAW,CAAC,MAAM,CAAC,CAAC,mCAAmC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,MAAM,QAAQ,QAAQ,CAAC,CAAC,2BAA2B,WAAW,CAAC,OAAO,CAAC,CAAC,wBAAwB,WAAW,CAAC,WAAW,QAAQ,CAAC,CAAC,wBAAwB,WAAW,CAAC,WAAW,CAAC,CAAC,2BAA2B,WAAW,CAAC,oDAAoD,QAAQ,CAAC,CAAC,6BAA6B,WAClf,CAAC,SAAS,CAAC,CAAC,2BAA2B,WAAW,CAAC,MAAM,CAAC,CAAC,mCAAmC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mCAAmC,cACnf,CAAC,OAAO,CAAC,CAAC,wCAAwC,iBAAiB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,sHAAsH,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,i3BACtT,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,iFAAiF,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,sVACvP,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,GAAG,6BAA6B,IAAI,CAAC,CAAC,4BAA4B,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,aAAa,KAAK,CAAC,OAAO,CAAC,CAAC,qBAAqB,QAAQ,CAAC,uBAAuB,+BAA+B,iCAAiC,MAAM,UAAU,CAAC,CAAC,mBAAmB,QAAQ,CAAC,QAAQ,sDAAsD,2EAA2E,CAAC,CAAC,mBACle,QAAQ,CAAC,WAAW,CAAC,CAAC,qBAAqB,QAAQ,CAAC,+QAA+Q,4SACnU,qUAAqU,wUACrU,MAAM,UAAU,CAAC,CAAC,mBAAmB,QAAQ,CAAC,QAAQ,sDAAsD,kqBAC5G,kuBACA,CAAC,CAAC,2BAA2B,WAAW,CAAC,cAAc,CAAC,CAAC,2BAA2B,WAAW,CAAC,2BAA2B,2BAA2B,8DAA8D,MAAM,SAAS,GAAG,CAAC,CAAC,2BAA2B,WAAW,CAAC,iMAAiM,MAAM,SAAS,GAAG,CAAC,CAAC,qBACpe,QAAQ,CAAC,MAAM,CAAC,CAAC,2BAA2B,WAAW,CAAC,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,2BAA2B,WAAW,CAAC,WAAW,MAAM,SAAS,GAAG,CAAC,CAAC,2BAA2B,WAAW,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,mCAAmC,cAAc,CAAC,QAAQ,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,qBAAqB,QAAQ,CAAC,uBAAuB,+BAA+B,iCAAiC,MAAM,UAAU,CAAC,CAAC,qBAAqB,QAAQ,CAAC,+QACnc,4SAA4S,qUAC5S,wUAAwU,MAAM,UAAU,CAAC,CAAC,2BAA2B,WAAW,CAAC,cAAc,CAAC,CAAC,2BAA2B,WAAW,CAAC,2BAA2B,2BAA2B,8DAC9e,MAAM,SAAS,GAAG,CAAC,CAAC,2BAA2B,WAAW,CAAC,iMAAiM,MAAM,SAAS,GAAG,CAAC,CAAC,qBAAqB,QAAQ,CAAC,MAAM,CAAC,CAAC,2BAA2B,WAAW,CAAC,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,2BAA2B,WAAW,CAAC,WAAW,MAAM,SAAS,GAAG,CAAC,CAAC,2BAA2B,WAAW,CAAC,UAAU,CAAC,UAC/e,CAAC,CAAC,mCAAmC,cAAc,CAAC,QAAQ,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,0CAA0C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,mDAAmD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,0CAA0C,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,kIAAkI,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,aACpf,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,GAAG,4BAA4B,IAAI,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,QAAQ,CAAC,qBAAqB,OAAO,WAAW,CAAC,CAAC,mBAAmB,QAAQ,CAAC,KAAK,QAAQ,CAAC,CAAC,mBAAmB,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,wBAAwB,WAAW,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,gBAAgB,QAAQ,CAAC,qBAAqB,OAAO,WAAW,CAAC,CAAC,mBAAmB,QAClf,CAAC,KAAK,QAAQ,CAAC,CAAC,mBAAmB,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,wBAAwB,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,gDAAgD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,8CAA8C,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,kEAAkE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IACtf,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,kCAAkC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,sCAAsC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,2BAA2B,WAAW,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,gDAAgD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,2FAA2F,CAAC,CAAC,CAAC,WAClf,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,GAAG,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,qBAAqB,QAAQ,CAAC,eAAe,SAAS,CAAC,CAAC,kBAAkB,QAAQ,CAAC,KAAK,SAAS,CAAC,CAAC,gBAAgB,QAAQ,CAAC,KAAK,OAAO,CAAC,CAAC,mBAAmB,QAAQ,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,4DACpf,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,WAAW,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,2BAA2B,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,mCAAmC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,uHAChY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,2CAA2C,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,WAAW,CAAC,CAAC,wBAAwB,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,qEAAqE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,4JAC5e,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,yGAAyG,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,mDAAmD,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,2CAA2C,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,sDAAsD,IAAI,CAAC,CAAC,kBAC5e,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CACpf,CAAC,CAAC,CAAC,qCAAqC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,2CAA2C,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,0CAA0C,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,2BAA2B,WAAW,CAAC,mBAAmB,CAAC,CAAC,mCACte,cAAc,CAAC,OAAO,CAAC,CAAC,mCAAmC,cAAc,CAAC,MAAM,CAAC,CAAC,mCAAmC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,gBAAgBC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,gMAAgM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GACnf,GAAG,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,geAAge,CACpf,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,4CAA4C,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,uCAAuC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,0CAA0C,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,GAAG,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,sBAAsB,QAAQ,CAAC,kBAAkB,OAAO,CAAC,CAAC,sBACte,QAAQ,CAAC,sGAAsG,gHAAgH,OAAO,CAAC,CAAC,sBAAsB,QAAQ,CAAC,uGAAuG,4bAC9W,OAAO,CAAC,CAAC,mBAAmB,QAAQ,CAAC,OAAO,OAAO,CAAC,CAAC,sBAAsB,QAAQ,CAAC,KAAK,OAAO,CAAC,CAAC,sBAAsB,QAAQ,CAAC,OAAO,OAAO,CAAC,CAAC,2BAA2B,WAAW,CAAC,eAAe,OAAO,CAAC,CAAC,qBAAqB,QAAQ,CAAC,SAAS,OAAO,CAAC,CAAC,sBAAsB,QAAQ,CAAC,KAAK,OAAO,CAAC,CAAC,mBAAmB,QAAQ,CAAC,MAAM,OAAO,SAAS,OAAO,CAAC,CAAC,2BAA2B,WAAW,CAAC,KAAK,OAAO,CAAC,CAAC,mBAAmB,QAAQ,CAAC,UAAU,OAAO,CAAC,CAAC,mBAAmB,QAAQ,CAAC,YAAY,OACpf,CAAC,CAAC,mBAAmB,QAAQ,CAAC,YAAY,OAAO,CAAC,CAAC,mBAAmB,QAAQ,CAAC,MAAM,OAAO,CAAC,CAAC,6BAA6B,WAAW,CAAC,iBAAiB,OAAO,CAAC,CAAC,2BAA2B,WAAW,CAAC,WAAW,OAAO,CAAC,CAAC,2BAA2B,WAAW,CAAC,MAAM,QAAQ,CAAC,CAAC,CAAC,CAAC,iCAAiC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,4HACtc,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,GAAG,MAAMC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mCAAmC,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,wCAAwC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,wCACtd,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,mCAAmC,cAAc,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,uDAAuD,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,6DAA6D,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IACjf,CAAC,CAAC,CAAC,uCAAuC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,0OAA0O,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,EAAE,MAAM,IAAI,CAAC,CAAC,mBAAmB,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KACrfC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,mWAAmW,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,6DACpe,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,0OAA0O,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,EAAE,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IACnf,CAAC,CAAC,CAAC,wDAAwD,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,oEAAoE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mCAAmC,cAAc,CAAC,SAAS,OAAO,CAAC,CAAC,mCAAmC,cAAc,CAAC,KAAK,OAClf,CAAC,CAAC,mCAAmC,cAAc,CAAC,SAAS,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,kCAAkC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,0DAA0D,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,KAAK,IAAI,CAAC,CACpf,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,UAAU,CAAC,CAAC,wBAAwB,WAAW,CAAC,SAAS,SAAS,CAAC,CAAC,2BAA2B,WAAW,CAAC,KAAK,OAAO,CAAC,CAAC,6BAA6B,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,wBAAwB,WAAW,CAAC,UAAU,CAAC,CAAC,2BAA2B,WAAW,CAAC,KAAK,OAAO,CAAC,CAAC,6BAA6B,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,6CAA6C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,2CACpf,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,gSAAgS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,sCAAsC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CACpf,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,mDAAmD,iFAAiF,CAAC,CAAC,qBAAqB,QAAQ,CAAC,sBAAsB,6BAA6B,CAAC,CAAC,2BAA2B,WAAW,CAAC,MAAM,CAAC,CAAC,2BAA2B,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,yCACld,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,6FAA6F,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,GAAG,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,kBAAkB,QAAQ,CAAC,QAAQ,OAAO,CAAC,CAAC,qBAAqB,QAAQ,CAAC,gCAAgC,OAAO,CAAC,CAAC,2BAA2B,WAAW,CAAC,SACpf,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,6DAA6D,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,aAAa,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAClf,CAAC,IAAI,CAAC,CAAC,CAAC,kDAAkD,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,wBAAwB,WAAW,CAAC,SAAS,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,wLACzY,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,8EAA8E,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,KAAK,CAAC,QAAQ,CAAC,CAAC,WAAW,KAAK,CAAC,UAAU,CAAC,CAAC,2BAA2B,WAAW,CAAC,WAAW,CAAC,CAAC,mCAAmC,cAAc,CAAC,WAAW,CAAC,CAAC,CAAC,2BAA2B,WAAW,CAAC,WAChf,CAAC,CAAC,mCAAmC,cAAc,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,4qBACrM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,2BAA2B,WAAW,CAAC,UAAU,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,2EAA2E,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,4CAA4C,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,qCAChe,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,sDAAsD,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,KAAK,CAAC,UAAU,OAAO,CAAC,CAAC,kBAAkB,QAAQ,CAAC,mCAAmC,OAAO,CAAC,CAAC,WAAW,KAAK,CAAC,OAAO,CAAC,CAAC,qBAAqB,QAAQ,CAAC,yBAAyB,OAAO,CAAC,CAAC,qBAAqB,QAAQ,CAAC,iBAAiB,OAAO,CAAC,CACrf,sBAAsB,QAAQ,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,kBAAkB,QAAQ,CAAC,mCAAmC,OAAO,CAAC,CAAC,qBAAqB,QAAQ,CAAC,yBAAyB,OAAO,CAAC,CAAC,qBAAqB,QAAQ,CAAC,iBAAiB,OAAO,CAAC,CAAC,sBAAsB,QAAQ,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,iBAAiB,CAAC,CAAC,CAAC,uIAAuI,CAAC,CAAC,CAAC,+IAC1c,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,qCAAqC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,2CAA2C,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,2CAA2C,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,eAAe,CAAC,CAAC,2BAA2B,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACpf,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,0FAA0F,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,0FAC5b,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,yCAAyC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,uBAAuB,CACpf,CAAC,CAAC,UAAU,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,4DAA4D,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,2FAA2F,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,oCACzd,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa,KAAK,GAAG,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,KAAK,CAAC,OAAO,CAAC,CAAC,mBAAmB,QAAQ,CAAC,MAAM,CAAC,CAAC,mCAAmC,cAAc,CAAC,KAAK,QAAQ,CAAC,CAAC,wCAAwC,iBAAiB,CAAC,UAAU,QAAQ,CAAC,CAAC,CAAC,mCAAmC,cAAc,CAAC,KAAK,QAAQ,CAAC,CAAC,wCAAwC,iBAAiB,CAAC,UAAU,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,aAC7e,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,oCAAoC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,qEAAqE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,0DAA0D,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,gCAAgC,cAAc,CAAC,SAAS,OAAO,CAAC,CAAC,mCAAmC,cAAc,CAAC,MAAM,CAAC,CAAC,mCACze,cAAc,CAAC,WAAW,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,qCAAqC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,s9CAClL,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,4NAA4N,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,iCAAiC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,8DAA8D,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,aACpf,CAAC,CAAC,CAAC,KAAK,KAAK,GAAG,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,MAAM,OAAO,QAAQ,SAAS,WAAW,OAAO,CAAC,CAAC,2BAA2B,WAAW,CAAC,MAAM,OAAO,QAAQ,UAAU,OAAO,CAAC,CAAC,mBAAmB,QAAQ,CAAC,OAAO,OAAO,CAAC,CAAC,qBAAqB,QAAQ,CAAC,yBAAyB,qCAAqC,oDAAoD,OAAO,CAAC,CAAC,qBAAqB,QAAQ,CAAC,0BAA0B,OAAO,CAAC,CAAC,2BAA2B,WAAW,CAAC,sBACnf,kCAAkC,OAAO,CAAC,CAAC,mBAAmB,QAAQ,CAAC,KAAK,OAAO,CAAC,CAAC,2BAA2B,WAAW,CAAC,UAAU,QAAQ,CAAC,CAAC,CAAC,CAAC,2FAA2F,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,8GACvZ,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,oEAAoE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,uCAAuC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,0OAA0O,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IACjf,KAAK,EAAE,MAAM,IAAI,CAAC,CAAC,mBAAmB,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,wFAAwF,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,+QACzS,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,aAAa,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,2BAA2B,WAAW,CAAC,MAAM,OAAO,CAAC,CAAC,mCAAmC,cAAc,CAAC,MAAM,OAAO,CAAC,CAAC,mCAAmC,cAAc,CAAC,SAAS,CAAC,CAAC,mCAAmC,cAAc,CAAC,SAAS,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKr/T,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,6BACve,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,8DAA8D,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,kCAAkC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mCAAmC,cAAc,CAAC,SAAS,OAAO,CAAC,CAAC,mCAAmC,cAAc,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKs/T,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,kDAClf,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,oCAAoC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,iCAAiC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,6DAA6D,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,GAAG,KAAK,IAAI,CAAC,CAAC,oBAAoB,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,2FACva,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,qMAAqM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,+DAA+D,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAChf,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,iBAAiB,CAAC,CAAC,mBAAmB,QAAQ,CAAC,KAAK,OAAO,CAAC,CAAC,2BAA2B,WAAW,CAAC,SAAS,QAAQ,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,KAAK,OAAO,CAAC,CAAC,2BAA2B,WAAW,CAAC,SAAS,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,qDAC3d,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,gDAAgD,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,cAC1e,CAAC,CAAC,CAAC,UAAU,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,2BAA2B,WAAW,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,sHAAsH,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,gCAAgC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QACpf,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,wEAAwE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mCAAmC,cAAc,CAAC,MAAM,CAAC,CAAC,mCAAmC,cACxe,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,iCAAiC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,yFAAyF,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,yCAAyC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,aAAa,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mCAAmC,cAAc,CAAC,SACnf,OAAO,CAAC,CAAC,mCAAmC,cAAc,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,oCAAoC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,qDAAqD,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,2BAA2B,WAAW,CAAC,UAClf,CAAC,CAAC,mBAAmB,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,iDAAiD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,mXAC5L,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,iCAAiC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,2BAA2B,WAAW,CAAC,SAAS,CAAC,CAAC,mBAAmB,QAAQ,CAAC,+DAA+D,CAAC,CAAC,2BAA2B,WAAW,CAAC,WAAW,CAAC,CAAC,6BAC1e,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKnsG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,UAAU,CAAC,CAAC,2BAA2B,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAClf,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKosG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,gOAAgO,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,gOAC1W,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,uCAAuC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,0OAA0O,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,EAAE,MAAM,IAAI,CAAC,CAAC,mBAAmB,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CACpf,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,OAAO,CAAC,CAAC,2BAA2B,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,yCAAyC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CACrf,CAAC,8GAA8G,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,sDAAsD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EACnf,EAAE,KAAK,CAAC,CAAC,CAAC,oIAAoI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,kSAAkS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAC/e,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,kCAAkC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,uEAAuE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,0BAA0B,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,qBAAqB,QAAQ,CAAC,MAAM,SAAS,CAAC,CAAC,mBAAmB,QAAQ,CAAC,mCAAmC,CAAC,CAAC,2BAA2B,WAAW,CAAC,MAAM,CAAC,CAAC,mCAAmC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,mQACzd,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,yCAAyC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,ySAAyS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,eAC9e,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,YAAY,CAAC,CAAC,2BAA2B,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,iEAAiE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,sDACxc,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,sEAAsE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,6BAA6B,WAAW,CAAC,SAAS,OAAO,CAAC,CAAC,6BAA6B,WAAW,CAAC,KAAK,OAAO,CAAC,CAAC,wBAAwB,WAAW,CAAC,KAAK,OAAO,CAAC,CAAC,6BAC7e,WAAW,CAAC,QAAQ,OAAO,CAAC,CAAC,6BAA6B,WAAW,CAAC,KAAK,OAAO,CAAC,CAAC,6BAA6B,WAAW,CAAC,SAAS,OAAO,CAAC,CAAC,2BAA2B,WAAW,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,mCAAmC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,sCAC/e,CAAC,CAAC,CAAC,YAAY,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,2BAA2B,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,6EAA6E,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,WAC7e,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,KAAK,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,wBAAwB,WAAW,CAAC,KAAK,WAAW,CAAC,CAAC,2BAA2B,WAAW,CAAC,wDAAwD,WAAW,CAAC,CAAC,6BAA6B,WAAW,CAAC,SAAS,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,+EAA+E,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,IAClf,CAAC,CAAC,CAAC,kcAAkc,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,qBAC9e,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,sDAAsD,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,GAAG,SAAS,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,wBAAwB,WAAW,CAAC,OAAO,CAAC,CAAC,qBAAqB,QAAQ,CAAC,gBAAgB,SAAS,CAAC,CAAC,qBAAqB,QAAQ,CAAC,OAAO,OAAO,CAAC,CAAC,qBAAqB,QAAQ,CAAC,UAAU,SAAS,CAAC,CAAC,6BAA6B,WAChf,CAAC,aAAa,OAAO,CAAC,CAAC,qBAAqB,QAAQ,CAAC,KAAK,OAAO,CAAC,CAAC,2BAA2B,WAAW,CAAC,OAAO,OAAO,CAAC,CAAC,gCAAgC,cAAc,CAAC,MAAM,OAAO,CAAC,CAAC,6BAA6B,WAAW,CAAC,KAAK,OAAO,CAAC,CAAC,mCAAmC,cAAc,CAAC,QAAQ,CAAC,CAAC,mCAAmC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,wBAAwB,WAAW,CAAC,OAAO,CAAC,CAAC,qBAAqB,QAAQ,CAAC,gBAAgB,SAAS,CAAC,CAAC,qBAAqB,QAAQ,CAAC,OAAO,OAClf,CAAC,CAAC,qBAAqB,QAAQ,CAAC,UAAU,SAAS,CAAC,CAAC,6BAA6B,WAAW,CAAC,aAAa,OAAO,CAAC,CAAC,qBAAqB,QAAQ,CAAC,KAAK,OAAO,CAAC,CAAC,2BAA2B,WAAW,CAAC,OAAO,OAAO,CAAC,CAAC,gCAAgC,cAAc,CAAC,MAAM,OAAO,CAAC,CAAC,6BAA6B,WAAW,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,0CAA0C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,sDAChf,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,0KAA0K,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,mCAAmC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,KAClf,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,kCAAkC,SAAS,CAAC,CAAC,mBAAmB,QAAQ,CAAC,SAAS,SAAS,CAAC,CAAC,0BAA0B,WAAW,CAAC,KAAK,SAAS,CAAC,CAAC,6BAA6B,WAAW,CAAC,wBAAwB,SAAS,CAAC,CAAC,2BAA2B,WAAW,CAAC,MAAM,OAAO,CAAC,CAAC,2BAA2B,WAAW,CAAC,MAAM,SAAS,CAAC,CAAC,2BAA2B,WAAW,CAAC,QAAQ,OAAO,CAAC,CAAC,2BAA2B,WAAW,CAAC,MAAM,CAAC,CAAC,2BAChe,WAAW,CAAC,KAAK,SAAS,CAAC,CAAC,gCAAgC,cAAc,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,wFAAwF,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,MAAMC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,gDAAgD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,uDAAuD,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,0HACjd,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,2CAA2C,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,uFAAuF,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,gBAAgB,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,QAAQ,CAAC,CAAC,2BAA2B,WAAW,CAAC,QAAQ,CAAC,CAAC,wBAAwB,WAAW,CAAC,WAAW,OACjf,CAAC,CAAC,2BAA2B,WAAW,CAAC,QAAQ,OAAO,CAAC,CAAC,2BAA2B,WAAW,CAAC,OAAO,CAAC,CAAC,mBAAmB,QAAQ,CAAC,QAAQ,CAAC,CAAC,gCAAgC,cAAc,CAAC,WAAW,CAAC,CAAC,qCAAqC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,MAAMC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,oCAAoC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,gCAAgC,CAAC,CAAC,CAAC,aACjf,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,wDAAwD,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,iEAAiE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,cAAc,KAAK,GAAG,KAAK,IAAI,CAAC,CAAC,oBAAoB,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,8EAA8E,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KACtfC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,0CAA0C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,0uCACpF,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,+/BACnC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,sDAAsD,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,GAAG,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,KAAK,CAAC,QAAQ,CAAC,CAAC,WAAW,KAAK,CAAC,8BAA8B,4CAA4C,8CAA8C,CAAC,CAAC,GAAG,CAAC,CAAC,qBAAqB,QAAQ,CAAC,MAAM,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,2BAA2B,WAC/e,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,2BAA2B,WAAW,CAAC,qCAAqC,2DAA2D,4FAA4F,MAAM,CAAC,GAAG,CAAC,CAAC,2BAA2B,WAAW,CAAC,sYACrS,meAAme,ykBACne,MAAM,CAAC,GAAG,CAAC,CAAC,2BAA2B,WAAW,CAAC,iKAAiK,wSACpN,mWAAmW,MAAM,CAAC,GAAG,CAAC,CAAC,mBAAmB,QAAQ,CAAC,SAAS,MAAM,CAAC,GAAG,CAAC,CAAC,6BAA6B,WAAW,CAAC,eAAe,iBAAiB,CAAC,CAAC,GAAG,CAAC,CAAC,mCAChf,cAAc,CAAC,MAAM,CAAC,CAAC,mCAAmC,cAAc,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,KAAK,CAAC,8BAA8B,4CAA4C,8CAA8C,CAAC,CAAC,GAAG,CAAC,CAAC,qBAAqB,QAAQ,CAAC,MAAM,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,2BAA2B,WAAW,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,2BAA2B,WAAW,CAAC,qCAAqC,2DAA2D,4FACvd,MAAM,CAAC,GAAG,CAAC,CAAC,2BAA2B,WAAW,CAAC,sYAAsY,meACzb,ykBACA,MAAM,CAAC,GAAG,CAAC,CAAC,2BAA2B,WAAW,CAAC,iKAAiK,wSACpN,mWAAmW,MAAM,CAAC,GAAG,CAAC,CAAC,mBAAmB,QAAQ,CAAC,SAAS,MAAM,CAAC,GAAG,CAAC,CAAC,6BAA6B,WAAW,CAAC,eAAe,iBAAiB,CAAC,CAAC,GAAG,CAAC,CAAC,mCAChf,cAAc,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,gFAAgF,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,oCACxe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,2DAA2D,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,wBAAwB,WAAW,CAAC,KAAK,OAAO,CAAC,CAAC,6BAA6B,WAAW,CAAC,SAAS,OAAO,CAAC,CAAC,2BAA2B,WAAW,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CACpf,CAAC,CAAC,CAAC,wCAAwC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,4MAA4M,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,uIAAuI,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IACpf,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,GAAG,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,KAAK,CAAC,MAAM,OAAO,CAAC,CAAC,qBAAqB,QAAQ,CAAC,4EAA4E,OAAO,CAAC,CAAC,6BAA6B,WAAW,CAAC,KAAK,OAAO,CAAC,CAAC,2BAA2B,WAAW,CAAC,SAAS,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,0FAA0F,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,2EACpd,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,6JAA6J,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,mJAAmJ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,mFACrd,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,4BAA4B,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,UAAU,CAAC,CAAC,2BAA2B,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,qCAAqC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,oFAAoF,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,8aACte,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,iHAAiH,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,KAAK,CAAC,gBAAgB,4BAC5e,CAAC,CAAC,WAAW,KAAK,CAAC,cAAc,CAAC,CAAC,qBAAqB,QAAQ,CAAC,UAAU,CAAC,CAAC,qBAAqB,QAAQ,CAAC,wCAAwC,0DAA0D,CAAC,CAAC,qBAAqB,QAAQ,CAAC,mCAAmC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,QAAQ,CAAC,CAAC,6BAA6B,WAAW,CAAC,YAAY,CAAC,CAAC,6BAA6B,WAAW,CAAC,uBAAuB,CAAC,CAAC,6BAA6B,WAAW,CAAC,wBAAwB,CAAC,CAAC,2BACpf,WAAW,CAAC,UAAU,CAAC,CAAC,2BAA2B,WAAW,CAAC,MAAM,CAAC,CAAC,6BAA6B,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,qBAAqB,QAAQ,CAAC,UAAU,CAAC,CAAC,qBAAqB,QAAQ,CAAC,wCAAwC,0DAA0D,CAAC,CAAC,qBAAqB,QAAQ,CAAC,mCAAmC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,QAAQ,CAAC,CAAC,6BAA6B,WAAW,CAAC,YAAY,CAAC,CAAC,6BAA6B,WAAW,CAAC,uBAC/e,CAAC,CAAC,6BAA6B,WAAW,CAAC,wBAAwB,CAAC,CAAC,2BAA2B,WAAW,CAAC,UAAU,CAAC,CAAC,2BAA2B,WAAW,CAAC,MAAM,CAAC,CAAC,6BAA6B,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,MAAMC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,oCAAoC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,wDAAwD,CAAC,CAAC,CAAC,cAClf,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,wGAAwG,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,cAAc,KAAK,GAAG,KAAK,IAAI,CAAC,CAAC,sBAAsB,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,2FAA2F,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,gHAC3b,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,uOAAuO,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,yKAChW,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,uCAAuC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,0OAA0O,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,EAAE,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACpf,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,qCAAqC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,ieACxE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,wBAAwB,WAAW,CAAC,aAAa,SAAS,CAAC,CAAC,qBAAqB,QAAQ,CAAC,QAAQ,OAAO,CAAC,CAAC,mBAAmB,QAAQ,CAAC,MAAM,OAAO,CAAC,CAAC,wBAAwB,WAAW,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,YACze,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,0DAA0D,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,wQAAwQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,oBACpe,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,uGAAuG,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,GAAG,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,MAAM,OAAO,QAAQ,cAAc,CAAC,CAAC,2BAA2B,WAAW,CAAC,iBAAiB,OAAO,CAAC,CAAC,wBAAwB,WAAW,CAAC,6FAC1d,gLAAgL,uMAAuM,OAAO,CAAC,CAAC,2BAA2B,WAAW,CAAC,MAAM,OAAO,CAAC,CAAC,wBAAwB,WAAW,CAAC,wBAAwB,2CAClf,OAAO,CAAC,CAAC,2BAA2B,WAAW,CAAC,qVAAqV,gnBACrY,gsBACA,iuBACA,OAAO,CAAC,CAAC,2BAA2B,WAAW,CAAC,oCAAoC,OAAO,CAAC,CAAC,6BAA6B,WAAW,CAAC,MAAM,SAAS,CAAC,CAAC,2BAA2B,WAAW,CAAC,QAAQ,CAAC,CAAC,2BAA2B,WAAW,CAAC,OAAO,OAAO,CAAC,CAAC,2BAA2B,WAAW,CAAC,WAAW,OAAO,CAAC,CAAC,6BAA6B,WAAW,CAAC,MAAM,CAAC,CAAC,6BAA6B,WAAW,CAAC,MAAM,CAAC,CAAC,6BAA6B,WAAW,CAAC,MAAM,CAAC,CAAC,6BAA6B,WAC1e,CAAC,OAAO,CAAC,CAAC,CAAC,2BAA2B,WAAW,CAAC,iBAAiB,OAAO,CAAC,CAAC,wBAAwB,WAAW,CAAC,6FAA6F,gLAAgL,uMAC7X,OAAO,CAAC,CAAC,2BAA2B,WAAW,CAAC,MAAM,OAAO,CAAC,CAAC,wBAAwB,WAAW,CAAC,wBAAwB,2CAA2C,OAAO,CAAC,CAAC,2BAA2B,WAAW,CAAC,qVACtN,gnBACA,gsBACA,iuBACA,OAAO,CAAC,CAAC,2BAA2B,WAAW,CAAC,oCAAoC,OAAO,CAAC,CAAC,2BAA2B,WAAW,CAAC,OAAO,OAAO,CAAC,CAAC,2BAA2B,WAAW,CAAC,WAAW,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,iFAAiF,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,2DAA2D,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,uFAC1d,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,8CAA8C,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,qBAAqB,QAAQ,CAAC,UAAU,OAAO,CAAC,CAAC,mBAAmB,QAAQ,CAAC,QAAQ,OAAO,CAAC,CAAC,6BAA6B,WAAW,CAAC,QAAQ,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,kCAC/e,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,sQAAsQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,+FAA+F,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CACpf,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,uBAAuB,OAAO,CAAC,CAAC,2BAA2B,WAAW,CAAC,eAAe,OAAO,CAAC,CAAC,kCAAkC,cAAc,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,2IACnX,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,0JAA0J,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,WAAW,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,6BAA6B,WAAW,CAAC,SAAS,OAAO,CAAC,CAAC,2BAA2B,WAAW,CAAC,OACpf,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,mDAAmD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,uIAAuI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,2DAA2D,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,sCAAsC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IACjf,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,2BAA2B,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,uDAC/e,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,6CAA6C,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,uCAAuC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,0OAA0O,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,EAAE,MAAM,IAAI,CAAC,CAAC,mBACjf,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,iCAAiC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,2DAA2D,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,2BAA2B,WAAW,CAAC,KAAK,OAAO,CAAC,CAAC,wBAAwB,WAAW,CAAC,SAAS,OAAO,CAAC,CAAC,2BAChf,WAAW,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,iDAAiD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,2GAA2G,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,kFAAkF,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,yFACva,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,mDAAmD,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,GAAG,sDAAsD,IAAI,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,KAAK,CAAC,YAAY,aAAa,eAAe,OAAO,CAAC,CAAC,qBAAqB,QAAQ,CAAC,gCAAgC,MAAM,WAAW,CAAC,CACpf,mBAAmB,QAAQ,CAAC,MAAM,CAAC,CAAC,0BAA0B,WAAW,CAAC,KAAK,MAAM,WAAW,CAAC,CAAC,2BAA2B,WAAW,CAAC,QAAQ,MAAM,WAAW,CAAC,CAAC,6BAA6B,WAAW,CAAC,iBAAiB,MAAM,WAAW,CAAC,CAAC,2BAA2B,WAAW,CAAC,QAAQ,MAAM,WAAW,CAAC,CAAC,2BAA2B,WAAW,CAAC,MAAM,SAAS,CAAC,CAAC,2BAA2B,WAAW,CAAC,KAAK,MAAM,WAAW,CAAC,CAAC,6BAA6B,WAAW,CAAC,MAAM,CAAC,CAAC,mCAC3d,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,qBAAqB,QAAQ,CAAC,gCAAgC,MAAM,WAAW,CAAC,CAAC,mBAAmB,QAAQ,CAAC,MAAM,CAAC,CAAC,0BAA0B,WAAW,CAAC,KAAK,MAAM,WAAW,CAAC,CAAC,2BAA2B,WAAW,CAAC,QAAQ,MAAM,WAAW,CAAC,CAAC,6BAA6B,WAAW,CAAC,iBAAiB,MAAM,WAAW,CAAC,CAAC,2BAA2B,WAAW,CAAC,QAAQ,MAAM,WAAW,CAAC,CAAC,2BAA2B,WAAW,CAAC,KAAK,MAAM,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,aAC9e,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,6CAA6C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,mFAAmF,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,kCAAkC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,gFAAgF,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,uQACjX,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,qBAAqB,QAAQ,CAAC,kCAAkC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,yHAAyH,CAAC,CAAC,CAAC,aACpf,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,wGAAwG,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,uCAAuC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,kCAAkC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,0OAC/Q,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,EAAE,MAAM,IAAI,CAAC,CAAC,mBAAmB,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,qCAAqC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,4dACvP,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,4CAA4C,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,EAAE,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,6CAA6C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,wCAC9d,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,oDAAoD,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,2BAA2B,WAAW,CAAC,qBAAqB,OAAO,CAAC,CAAC,mCAAmC,cAAc,CAAC,aAAa,OAAO,CAAC,CAAC,mCAAmC,cAAc,CAAC,QAAQ,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CACpf,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,8FAA8F,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,sFAAsF,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,wBAAwB,WAAW,CAAC,iDACpd,OAAO,CAAC,CAAC,2BAA2B,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,iEAAiE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,0FAA0F,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,uCAAuC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IACtf,CAAC,CAAC,CAAC,0OAA0O,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,EAAE,MAAM,IAAI,CAAC,CAAC,mBAAmB,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,oCAAoC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,yFACtc,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,0FAA0F,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,qCAAqC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,4CAA4C,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,2BAA2B,WAAW,CAAC,sBAAsB,2BAA2B,CAAC,UAAU,CAAC,CAAC,2BAA2B,WAAW,CAAC,MAAM,CAAC,CAAC,2BACne,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,2BAA2B,WAAW,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,+GAA+G,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,gCAAgC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CACpf,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,GAAG,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,2BAA2B,WAAW,CAAC,KAAK,OAAO,CAAC,CAAC,2BAA2B,WAAW,CAAC,WAAW,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,wCAAwC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,yDAAyD,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,YACpf,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,wBAAwB,WAAW,CAAC,SAAS,OAAO,CAAC,CAAC,2BAA2B,WAAW,CAAC,KAAK,OAAO,CAAC,CAAC,2BAA2B,WAAW,CAAC,UAAU,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACpf,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK1uG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,gCAAgC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,YAAY,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,wBACze,WAAW,CAAC,WAAW,SAAS,CAAC,GAAG,CAAC,CAAC,2BAA2B,WAAW,CAAC,SAAS,OAAO,CAAC,GAAG,CAAC,CAAC,mBAAmB,QAAQ,CAAC,uBAAuB,SAAS,CAAC,GAAG,CAAC,CAAC,mBAAmB,QAAQ,CAAC,SAAS,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK2uG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,yEAAyE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,8FAC9Z,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,yCAAyC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,gCAAgC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,oDAAoD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,oEAAoE,CAAC,UAAU,CAAC,CAAC,2BAA2B,WAAW,CAAC,oEACrf,CAAC,UAAU,CAAC,CAAC,2BAA2B,WAAW,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,qCAAqC,cAAc,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAC,2BAA2B,WAAW,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC,mCAAmC,cAAc,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,2BAA2B,WAAW,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,6CAA6C,iBAAiB,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAC,qCAAqC,cAChf,CAAC,mDAAmD,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,2BAA2B,WAAW,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KACjfC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,2NAA2N,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,SAAS,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IACtf,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,sLAAsL,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,6DAA6D,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,aAAa,KAAK,IAAI,KAAK,IACnf,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,aAAa,iBAAiB,mBAAmB,OAAO,CAAC,CAAC,mCAAmC,cAAc,CAAC,SAAS,OAAO,CAAC,CAAC,mBAAmB,QAAQ,CAAC,6BAA6B,0CAA0C,OAAO,CAAC,CAAC,mBAAmB,QAAQ,CAAC,KAAK,OAAO,CAAC,CAAC,mBAAmB,QAAQ,CAAC,SAAS,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,6BAChe,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,6CAA6C,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,2BAA2B,WAAW,CAAC,OAAO,CAAC,CAAC,2BAA2B,WAAW,CAAC,KAAK,OAAO,CAAC,CAAC,mCAAmC,cAAc,CAAC,UAAU,CAAC,CAAC,wCAAwC,iBAAiB,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,2BAA2B,WAAW,CAAC,KACrf,OAAO,CAAC,CAAC,mCAAmC,cAAc,CAAC,UAAU,CAAC,CAAC,wCAAwC,iBAAiB,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,iDAAiD,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,mCAAmC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAClf,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,YAAY,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,QAAQ,OAAO,CAAC,CAAC,2BAA2B,WAAW,CAAC,QAAQ,OAAO,CAAC,CAAC,2BAA2B,WAAW,CAAC,UAAU,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,oCAAoC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,gGAAgG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,sCAC5e,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,6BAA6B,WAAW,CAAC,SAAS,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,iCAAiC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,oDAAoD,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,yCACpf,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,aAAa,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,2EAA2E,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,KACnf,IAAI,KAAK,IAAI,CAAC,CAAC,oBAAoB,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,mCAAmC,cAAc,CAAC,QAAQ,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,kCAAkC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,kCAAkC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,KAAK,IAAI,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACpf,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,uMAAuM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,6FAA6F,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,YAC1e,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,wBAAwB,WAAW,CAAC,gCAAgC,OAAO,CAAC,CAAC,2BAA2B,WAAW,CAAC,SAAS,OAAO,CAAC,CAAC,gCAAgC,cAAc,CAAC,QAAQ,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,2EAA2E,CAAC,CAAC,CAAC,YAC3e,CAAC,CAAC,CAAC,8DAA8D,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,KAAK,CAAC,oBAAoB,iDAAiD,CAAC,CAAC,mCAAmC,cAAc,CAAC,YAAY,CAAC,CAAC,CAAC,mCAAmC,cAAc,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKhzQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,oEACxe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,yhCAC3B,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,mMAAmM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,gCAAgC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,wBAAwB,WAAW,CAAC,QAAQ,OAAO,CAAC,CAAC,2BAChf,WAAW,CAAC,6DAA6D,OAAO,CAAC,CAAC,0BAA0B,WAAW,CAAC,QAAQ,OAAO,CAAC,CAAC,6BAA6B,WAAW,CAAC,iBAAiB,OAAO,CAAC,CAAC,0BAA0B,WAAW,CAAC,+BAA+B,OAAO,CAAC,CAAC,wBAAwB,WAAW,CAAC,KAAK,OAAO,CAAC,CAAC,2BAA2B,WAAW,CAAC,KAAK,OAAO,CAAC,CAAC,gCAAgC,cAAc,CAAC,MAAM,OAAO,CAAC,CAAC,wBAAwB,WAAW,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CACpf,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKizQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,qHAAqH,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,yDAAyD,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,gDAAgD,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,MACjf,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,2BAA2B,WAAW,CAAC,SAAS,OAAO,CAAC,CAAC,mBAAmB,QAAQ,CAAC,WAAW,CAAC,CAAC,qBAAqB,QAAQ,CAAC,cAAc,OAAO,CAAC,CAAC,qBAAqB,QAAQ,CAAC,sCAAsC,4CAA4C,OAAO,CAAC,CAAC,qBAAqB,QAAQ,CAAC,QAAQ,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,kCAAkC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,wCAC9c,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,sGAAsG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,MAAM,CAAC,CAAC,mBAAmB,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,8GACzd,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,8GAA8G,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,uCAAuC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,0OACpR,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,EAAE,MAAM,IAAI,CAAC,CAAC,mBAAmB,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,mCAAmC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,yDAAyD,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,0CAA0C,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,aAAa,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,IACpf,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mCAAmC,cAAc,CAAC,SAAS,OAAO,CAAC,CAAC,mCAAmC,cAAc,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,iCAAiC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mCAAmC,cAClf,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,sCAAsC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,uCAAuC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,0OACnX,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,EAAE,MAAM,IAAI,CAAC,CAAC,kBAAkB,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,wCAAwC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,2DAA2D,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,yEAAyE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,kEAAkE,CAAC,CAAC,CACpf,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,oCAAoC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,qGAAqG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,8FAC9a,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,kBAAkB,CAAC,CAAC,mBAAmB,QAAQ,CAAC,MAAM,CAAC,CAAC,mBAAmB,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,2CAA2C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,qEACve,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,sCAAsC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,mBAAmB,CAAC,CAAC,2BAA2B,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,sCAAsC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,+BAC9e,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,qCAAqC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,wBAAwB,WAAW,CAAC,UAAU,OAAO,CAAC,CAAC,2BAA2B,WAAW,CAAC,KAAK,OAAO,CAAC,CAAC,mCAAmC,cAAc,CAAC,WAAW,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,qHACzb,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,0bAA0b,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,+0BACnf,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,GAAG,QAAQ,KAAK,CAAC,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,KAAK,CAAC,OAAO,CAAC,CAAC,2BAA2B,WAAW,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,CAAC,2BAA2B,WAAW,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,gCAAgC,WAAW,CAAC,oBAAoB,CAAC,CAAC,GAAG,CAAC,CAAC,gCACxd,WAAW,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,2BAA2B,WAAW,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,CAAC,2BAA2B,WAAW,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,gCAAgC,WAAW,CAAC,oBAAoB,CAAC,CAAC,GAAG,CAAC,CAAC,gCAAgC,WAAW,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,iCAAiC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,mXACnZ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,oQAAoQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,mGACrb,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,GAAG,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,wBAAwB,WAAW,CAAC,UAAU,OAAO,CAAC,CAAC,6BAA6B,WAAW,CAAC,6BAA6B,OAAO,CAAC,CAAC,wBAAwB,WAAW,CAAC,KAAK,OAAO,CAAC,CAAC,gCAAgC,cAAc,CAAC,YAAY,CAAC,CAAC,2BAA2B,WAAW,CAAC,MAAM,OAAO,CAAC,CAAC,2BAA2B,WAAW,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,mBACle,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,0CAA0C,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,6BAA6B,WAAW,CAAC,cAAc,CAAC,CAAC,2BAA2B,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,0WACzc,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,YAAY,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,2BAA2B,WAAW,CAAC,MAAM,OAAO,CAAC,CAAC,6BAA6B,WAAW,CAAC,KAAK,OAAO,CAAC,CAAC,2BAA2B,WAAW,CAAC,MAAM,OAAO,CAAC,CAAC,2BAA2B,WAAW,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACpf,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,qCAAqC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,mCAAmC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,KAAK,CAAC,WAAW,CAAC,CAAC,2BAA2B,WAAW,CAAC,eAAe,CAAC,CAAC,CAAC,2BAA2B,WAAW,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CACpf,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,iGAAiG,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,2BAA2B,WAAW,CAAC,OAAO,CAAC,CAAC,mCAAmC,cAAc,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CACpf,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,uCAAuC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,mBAAmB,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,WAAW,CAAC,CAAC,gBAAgB,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,sDACxc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,4KAA4K,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,mGAAmG,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,MAAM,IAClf,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,2BAA2B,WAAW,CAAC,MAAM,OAAO,CAAC,CAAC,0BAA0B,WAAW,CAAC,0BAA0B,OAAO,CAAC,CAAC,6BAA6B,WAAW,CAAC,gBAAgB,OAAO,CAAC,CAAC,6BAA6B,WAAW,CAAC,SAAS,OAAO,CAAC,CAAC,6BAA6B,WAAW,CAAC,QAAQ,OAAO,CAAC,CAAC,6BAA6B,WAAW,CAAC,QAAQ,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,8BAC/e,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,gGAAgG,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,+EAA+E,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,0PAClf,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,KAAK,CAAC,gBAAgB,CAAC,CAAC,qBAAqB,QAAQ,CAAC,OAAO,CAAC,CAAC,WAAW,KAAK,CAAC,MAAM,CAAC,CAAC,qBAAqB,QAAQ,CAAC,SAAS,OAAO,CAAC,CAAC,mBAAmB,QAAQ,CAAC,MAAM,OAAO,CAAC,CAAC,gBAAgB,QAAQ,CAAC,KAAK,OAAO,CAAC,CACrf,2BAA2B,WAAW,CAAC,2CAA2C,OAAO,CAAC,CAAC,2BAA2B,WAAW,CAAC,cAAc,OAAO,CAAC,CAAC,2BAA2B,WAAW,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,qBAAqB,QAAQ,CAAC,SAAS,OAAO,CAAC,CAAC,mBAAmB,QAAQ,CAAC,MAAM,OAAO,CAAC,CAAC,gBAAgB,QAAQ,CAAC,KAAK,OAAO,CAAC,CAAC,2BAA2B,WAAW,CAAC,2CAA2C,OAAO,CAAC,CAAC,2BAA2B,WAAW,CAAC,cAAc,OAAO,CAAC,CAAC,2BAC3e,WAAW,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,4GAA4G,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,6HAA6H,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,wDAAwD,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,6BACte,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,2BAA2B,WAAW,CAAC,aAAa,CAAC,CAAC,mCAAmC,cAAc,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,kDAAkD,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,eAC7e,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,mHAAmH,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,uCAAuC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,QAAQ,CAAC,UAAU,OAAO,CAAC,CAAC,mBAC1e,QAAQ,CAAC,mCAAmC,OAAO,CAAC,CAAC,mBAAmB,QAAQ,CAAC,MAAM,CAAC,CAAC,2BAA2B,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,gBAAgB,QAAQ,CAAC,UAAU,OAAO,CAAC,CAAC,mBAAmB,QAAQ,CAAC,mCAAmC,OAAO,CAAC,CAAC,mBAAmB,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,mCAAmC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,gCAAgC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IACtf,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IACtf,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,8FAA8F,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,6DAA6D,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,wDAAwD,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAClf,KAAK,GAAG,aAAa,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,qBAAqB,QAAQ,CAAC,YAAY,OAAO,CAAC,CAAC,6BAA6B,WAAW,CAAC,kBAAkB,yBAAyB,OAAO,CAAC,CAAC,wBAAwB,WAAW,CAAC,6BAA6B,OAAO,CAAC,CAAC,6BAA6B,WAAW,CAAC,sBAAsB,OAAO,CAAC,CAAC,6BAA6B,WAAW,CAAC,YAAY,OAAO,CAAC,CAAC,6BAA6B,WAAW,CAAC,6BAA6B,QAAQ,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,WAC9e,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,yDAAyD,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,6CAA6C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,kEAAkE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,qCAAqC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,qBACje,QAAQ,CAAC,SAAS,CAAC,CAAC,mBAAmB,QAAQ,CAAC,MAAM,CAAC,CAAC,mBAAmB,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,oDAAoD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,0bACvP,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,mDAAmD,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,qCAAqC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,8CAA8C,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,aAAa,CAAC,CAAC,mBAAmB,QAAQ,CAAC,SAAS,CAAC,CAAC,2BAA2B,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,wBAClf,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,kKAAkK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,GAAG,uBAAuB,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,MAAM,SACnf,CAAC,CAAC,gBAAgB,QAAQ,CAAC,KAAK,SAAS,CAAC,CAAC,mBAAmB,QAAQ,CAAC,SAAS,SAAS,CAAC,CAAC,2BAA2B,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACtf,2BAA2B,WAAW,CAAC,OAAO,CAAC,CAAC,mCAAmC,cAAc,CAAC,aAAa,CAAC,CAAC,mCAAmC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,mDAAmD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,iEAAiE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,UAC3e,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,iBAAiB,CAAC,CAAC,mBAAmB,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,kDAAkD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,+GACha,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,sFAAsF,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,GAAG,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,QAAQ,CAAC,KAAK,SAAS,CAAC,CAAC,qBAAqB,QAAQ,CAAC,qEAAqE,uHACjb,SAAS,CAAC,CAAC,mBAAmB,QAAQ,CAAC,wBAAwB,iCAAiC,SAAS,CAAC,CAAC,wBAAwB,WAAW,CAAC,KAAK,SAAS,CAAC,CAAC,2BAA2B,WAAW,CAAC,gBAAgB,SAAS,CAAC,CAAC,2BAA2B,WAAW,CAAC,QAAQ,OAAO,CAAC,CAAC,2BAA2B,WAAW,CAAC,MAAM,CAAC,CAAC,qCAAqC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,kKACjd,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,qQAAqQ,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,oCAAoC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,YAClf,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,GAAG,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,6BAA6B,WAAW,CAAC,SAAS,OAAO,CAAC,CAAC,mBAAmB,QAAQ,CAAC,MAAM,CAAC,CAAC,qBAAqB,QAAQ,CAAC,kJAAkJ,uKAClV,SAAS,CAAC,CAAC,qBAAqB,QAAQ,CAAC,8DAA8D,SAAS,CAAC,CAAC,mBAAmB,QAAQ,CAAC,MAAM,SAAS,CAAC,CAAC,mBAAmB,QAAQ,CAAC,KAAK,OAAO,CAAC,CAAC,mCAAmC,cAAc,CAAC,qDAAqD,SAAS,CAAC,CAAC,mCAAmC,cAAc,CAAC,UAAU,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,qNACva,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,oDAAoD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,6IAA6I,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,oFAAoF,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAC9e,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,KAAK,CAAC,OAAO,CAAC,CAAC,mBAAmB,QAAQ,CAAC,UAAU,CAAC,CAAC,2BAA2B,WAAW,CAAC,iFAAiF,oFAAoF,CAAC,CAAC,6BAA6B,WAAW,CAAC,OAAO,CAAC,CAAC,2BAA2B,WAAW,CAAC,mDAC1c,CAAC,CAAC,mCAAmC,cAAc,CAAC,gCAAgC,CAAC,CAAC,6BAA6B,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KACpf,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,2BAA2B,WAAW,CAAC,QAAQ,OAAO,CAAC,CAAC,mCAAmC,cAAc,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,uCAAuC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,0OACre,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,EAAE,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,iCAAiC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,kDAAkD,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,wBAAwB,WACpf,CAAC,UAAU,OAAO,CAAC,CAAC,2BAA2B,WAAW,CAAC,KAAK,OAAO,CAAC,CAAC,2BAA2B,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,oCAAoC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,2EAA2E,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,8EAA8E,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,8DACxd,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,2BAA2B,WAAW,CAAC,UAAU,CAAC,CAAC,2BAA2B,WAAW,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,cAAcC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,iCAAiC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,wFAC7a,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,yDAAyD,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,uDAAuD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,mPAC9Y,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,wCAAwC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,qBAAqB,QAAQ,CAAC,UAAU,OAAO,CAAC,CAAC,mBAAmB,QAAQ,CAAC,yCAAyC,SAAS,CAAC,CAAC,qBAAqB,QAAQ,CAAC,0DAA0D,SAAS,CAAC,CAAC,6BAC9e,WAAW,CAAC,wDAAwD,SAAS,CAAC,CAAC,2BAA2B,WAAW,CAAC,OAAO,CAAC,CAAC,mBAAmB,QAAQ,CAAC,sBAAsB,OAAO,CAAC,CAAC,2BAA2B,WAAW,CAAC,SAAS,OAAO,CAAC,CAAC,2BAA2B,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,2CAA2C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,gCAAgC,CAAC,CAAC,CAAC,WAC/e,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,aAAa,CAAC,CAAC,mBAAmB,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK5uG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,kCAAkC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,gHACne,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,kCAAkC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mCAAmC,cAAc,CAAC,UAAU,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK6uG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,oCAAoC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,2DAA2D,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,gEAC5e,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,GAAG,KAAK,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,SAAS,cAAc,OAAO,CAAC,CAAC,mBAAmB,QAAQ,CAAC,UAAU,OAAO,CAAC,CAAC,2BAA2B,WAAW,CAAC,SAAS,OAAO,CAAC,CAAC,2BAA2B,WAAW,CAAC,WAAW,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,YAC/e,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,wGAAwG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,oGAAoG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CACpf,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,qBAAqB,QAAQ,CAAC,wBAAwB,OAAO,CAAC,CAAC,sBAAsB,QAAQ,CAAC,UAAU,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,wKAAwK,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,UACpf,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,EAAE,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,2BAA2B,WAAW,CAAC,WAAW,CAAC,CAAC,mCAAmC,cAAc,CAAC,qBAAqB,6CAA6C,iEAAiE,SAAS,CAAC,GAAG,CAAC,CAAC,gCACrd,cAAc,CAAC,sBAAsB,2EAA2E,8LAA8L,SAAS,CAAC,GAAG,CAAC,CAAC,2BAA2B,WAAW,CAAC,KAAK,SAAS,CAAC,GAAG,CAAC,CAAC,mCAAmC,cAAc,CAAC,4BAA4B,SAAS,CAAC,GAAG,CAAC,CAAC,mCACrd,cAAc,CAAC,KAAK,WAAW,CAAC,CAAC,CAAC,mCAAmC,cAAc,CAAC,qBAAqB,6CAA6C,iEAAiE,SAAS,CAAC,GAAG,CAAC,CAAC,gCAAgC,cAAc,CAAC,sBAAsB,2EAA2E,8LACtX,SAAS,CAAC,GAAG,CAAC,CAAC,2BAA2B,WAAW,CAAC,KAAK,SAAS,CAAC,GAAG,CAAC,CAAC,mCAAmC,cAAc,CAAC,4BAA4B,SAAS,CAAC,GAAG,CAAC,CAAC,mCAAmC,cAAc,CAAC,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,iCAAiC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CACpf,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mCAAmC,cAAc,CAAC,MAAM,CAAC,CAAC,2BAA2B,WAAW,CAAC,SAAS,OAAO,CAAC,CAAC,2BAA2B,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,0DAA0D,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,kDAC1e,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,MAAM,CAAC,CAAC,2BAA2B,WAAW,CAAC,KAAK,OAAO,CAAC,CAAC,2BAA2B,WAAW,CAAC,KAAK,OAAO,CAAC,CAAC,6BAA6B,WAAW,CAAC,MAAM,OAAO,CAAC,CAAC,2BAA2B,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,aAC9e,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,iDAAiD,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,gHAAgH,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,gCAAgC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CACpf,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,kCAAkC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,WAAW,KAAK,IAAI,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,wBAAwB,WAAW,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,0BAC3e,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,2BAA2B,WAAW,CAAC,QAAQ,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,0EAA0E,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,meACvZ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,iEAAiE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,GAAG,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,6BAA6B,WAAW,CAAC,MAAM,OAAO,CAAC,CAAC,mBAAmB,QAAQ,CAAC,mBAAmB,OAAO,CAAC,CAAC,2BAA2B,WAAW,CAAC,0CACre,OAAO,CAAC,CAAC,kCAAkC,cAAc,CAAC,KAAK,OAAO,CAAC,CAAC,6BAA6B,WAAW,CAAC,wHAAwH,OAAO,CAAC,CAAC,6BAA6B,WAAW,CAAC,iBAAiB,OAAO,CAAC,CAAC,qCAAqC,cAAc,CAAC,qDAAqD,OAAO,CAAC,CAAC,mCAAmC,cAAc,CAAC,QAAQ,OAAO,CAAC,CAAC,gCAC1e,cAAc,CAAC,KAAK,OAAO,CAAC,CAAC,mCAAmC,cAAc,CAAC,iFAAiF,OAAO,CAAC,CAAC,mCAAmC,cAAc,CAAC,KAAK,OAAO,CAAC,CAAC,2CAA2C,iBAAiB,CAAC,QAAQ,QAAQ,CAAC,CAAC,CAAC,6BAA6B,WAAW,CAAC,OAAO,CAAC,CAAC,mBAAmB,QAAQ,CAAC,oBAAoB,CAAC,CAAC,2BAA2B,WAAW,CAAC,2CAA2C,CAAC,CAAC,kCACjf,cAAc,CAAC,MAAM,CAAC,CAAC,6BAA6B,WAAW,CAAC,yHAAyH,CAAC,CAAC,6BAA6B,WAAW,CAAC,kBAAkB,CAAC,CAAC,qCAAqC,cAAc,CAAC,sDAAsD,CAAC,CAAC,mCAAmC,cAAc,CAAC,SAAS,CAAC,CAAC,gCAAgC,cAAc,CAAC,MAAM,CAAC,CAAC,mCACxd,cAAc,CAAC,kFAAkF,CAAC,CAAC,mCAAmC,cAAc,CAAC,MAAM,CAAC,CAAC,2CAA2C,iBAAiB,CAAC,UAAU,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,MAAMC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,+CAA+C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,gEACjd,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,yEAAyE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,KAAK,CAAC,cAAc,sCAAsC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,4BAA4B,CAAC,CAAC,2BAA2B,WAAW,CAAC,MAAM,CAAC,CAAC,2BAClf,WAAW,CAAC,MAAM,CAAC,CAAC,2BAA2B,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,4BAA4B,CAAC,CAAC,2BAA2B,WAAW,CAAC,MAAM,CAAC,CAAC,2BAA2B,WAAW,CAAC,MAAM,CAAC,CAAC,2BAA2B,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,gCAAgC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAClf,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,mCAAmC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,iCAAiC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,iEAAiE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CACpf,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,wFAAwF,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,uBAAuB,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,qBAAqB,QAAQ,CAAC,WAAW,OAAO,CAAC,CAAC,mBAAmB,QAAQ,CAAC,QAAQ,OAAO,CAAC,CAAC,2BAA2B,WAAW,CAAC,yBAAyB,OAAO,CAAC,CAAC,gCAAgC,cAAc,CAAC,UAAU,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,mCACve,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,kDAAkD,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,yCACre,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,wHAAwH,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,6DAA6D,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,0BAA0B,WAC7e,CAAC,MAAM,OAAO,CAAC,CAAC,6BAA6B,WAAW,CAAC,cAAc,mBAAmB,OAAO,CAAC,CAAC,mBAAmB,QAAQ,CAAC,MAAM,QAAQ,OAAO,CAAC,CAAC,gCAAgC,cAAc,CAAC,KAAK,OAAO,CAAC,CAAC,2BAA2B,WAAW,CAAC,SAAS,OAAO,CAAC,CAAC,mCAAmC,cAAc,CAAC,SAAS,QAAQ,CAAC,CAAC,CAAC,0BAA0B,WAAW,CAAC,MAAM,OAAO,CAAC,CAAC,6BAA6B,WAAW,CAAC,cAAc,mBAAmB,OAAO,CAAC,CAAC,gCAC1d,cAAc,CAAC,KAAK,OAAO,CAAC,CAAC,2BAA2B,WAAW,CAAC,SAAS,OAAO,CAAC,CAAC,mCAAmC,cAAc,CAAC,SAAS,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,4DAA4D,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,4CAA4C,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CACpf,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,WAAW,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,KAAK,CAAC,CACpf,CAAC,gBAAgB,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,KAAK,CAAC,SAAS,CAAC,CAAC,mCAAmC,cAAc,CAAC,UAAU,CAAC,CAAC,mBAAmB,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,mCAAmC,cAAc,CAAC,UAAU,CAAC,CAAC,mBAAmB,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,uDAAuD,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,yDAC7b,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,kDAAkD,CAAC,CAAC,CAAC,aAAa,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mCAAmC,cAAc,CAAC,MAAM,CAAC,CAAC,mCAAmC,cAAc,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,uDAAuD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,CACpf,4EAA4E,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,yHAAyH,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,WAAW,CAAC,CAAC,WAAW,KAAK,CAAC,UAAU,CAAC,CAAC,gBAAgB,QAAQ,CAAC,kCAAkC,CAAC,CAAC,gBACxe,QAAQ,CAAC,YAAY,CAAC,CAAC,2BAA2B,WAAW,CAAC,iBAAiB,CAAC,CAAC,qBAAqB,QAAQ,CAAC,sCAAsC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,8CAA8C,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CACpf,CAAC,CAAC,CAAC,CAAC,2BAA2B,WAAW,CAAC,OAAO,CAAC,CAAC,mBAAmB,QAAQ,CAAC,UAAU,CAAC,CAAC,mBAAmB,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,2BAA2B,WAAW,CAAC,QAAQ,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACpf,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,2CAA2C,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,sCAAsC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,+CAA+C,CAAC,CAAC,CAAC,WAClf,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,sEAAsE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,SAAS,CAAC,CAAC,mBAAmB,QAAQ,CAAC,UAAU,CAAC,CAAC,2BAA2B,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,sCAC7d,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,qCAAqC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,8CAA8C,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,uCAAuC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,0OAC5Q,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,EAAE,MAAM,IAAI,CAAC,CAAC,eAAe,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,+EAA+E,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,6BAA6B,WAC/e,CAAC,SAAS,MAAM,CAAC,GAAG,CAAC,CAAC,2BAA2B,WAAW,CAAC,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,oCAAoC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,WAAW,CAAC,CAAC,mBAC3e,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,oCAAoC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,sDAC9c,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,uCAAuC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,0OAA0O,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,MAAM,IAAI,CAAC,CAAC,qBAAqB,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACpf,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,mCAAmC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,mCAAmC,cAAc,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,4CAC7e,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mCAAmC,cAAc,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,6CAA6C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,qDAAqD,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,6CAA6C,CAAC,CAAC,CAAC,YAChf,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,UAAU,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,wBAAwB,WAAW,CAAC,KAAK,OAAO,CAAC,CAAC,6BAA6B,WAAW,CAAC,UAAU,OAAO,CAAC,CAAC,2BAA2B,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,oEAC9e,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,iEAAiE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,wBAAwB,WAAW,CAAC,MAAM,SAAS,CAAC,CAAC,2BAA2B,WAAW,CAAC,iBAAiB,CAAC,CAAC,wBAAwB,WAAW,CAAC,WAAW,CAAC,CAAC,2BAA2B,WAAW,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KACtfC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,oCAAoC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,iCAAiC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAC3e,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,eAAe,CAAC,CAAC,mBAAmB,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,mHAAmH,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IACrf,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,mCAAmC,cAAc,CAAC,MAAM,UAAU,CAAC,CAAC,gCAAgC,cAAc,CAAC,SAAS,UAAU,CAAC,CAAC,mBAAmB,QAAQ,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,oCAAoC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,gFAAgF,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,aAC5e,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,2BAA2B,WAAW,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,oDAAoD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,yDAAyD,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,uEAAuE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAClf,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,oCAAoC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,MAAM,CAAC,CAAC,mBAAmB,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,iDAAiD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,sIACzb,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,gEAAgE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,sCAAsC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,GAAG,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,wBAAwB,WAAW,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,2BAA2B,WAAW,CAAC,mBAAmB,MAAM,CAAC,GAAG,CAAC,CAAC,mCAC7e,cAAc,CAAC,iBAAiB,kBAAkB,oBAAoB,MAAM,CAAC,GAAG,CAAC,CAAC,mCAAmC,cAAc,CAAC,oBAAoB,QAAQ,CAAC,GAAG,CAAC,CAAC,6BAA6B,WAAW,CAAC,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,2BAA2B,WAAW,CAAC,mBAAmB,MAAM,CAAC,GAAG,CAAC,CAAC,mCAAmC,cAAc,CAAC,iBAAiB,kBAAkB,oBAAoB,MAAM,CAAC,GAAG,CAAC,CAAC,mCAAmC,cAAc,CAAC,oBAAoB,QAAQ,CAAC,GAAG,CAAC,CAAC,6BAClf,WAAW,CAAC,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,oGAAoG,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,oGAAoG,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,uCAC3d,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,0OAA0O,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,EAAE,MAAM,IAAI,CAAC,CAAC,sBAAsB,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CACpf,yBAAyB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,MAAM,CAAC,CAAC,mBAAmB,QAAQ,CAAC,OAAO,CAAC,CAAC,mBAAmB,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,+CAA+C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,6fACte,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,oCAAoC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,mDAAmD,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,KAAK,KAAK,IAAI,mBAAmB,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,wBAAwB,WAAW,CAAC,OAAO,OAAO,CAAC,CAAC,6BAA6B,WAAW,CAAC,UAAU,OAAO,CAAC,CAAC,0BACxe,WAAW,CAAC,wCAAwC,gDAAgD,OAAO,CAAC,CAAC,2BAA2B,WAAW,CAAC,QAAQ,OAAO,CAAC,CAAC,6BAA6B,WAAW,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,0CAA0C,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,WAChf,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,KAAK,IAAI,UAAU,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,2BAA2B,WAAW,CAAC,QAAQ,OAAO,CAAC,CAAC,2BAA2B,WAAW,CAAC,QAAQ,OAAO,CAAC,CAAC,2BAA2B,WAAW,CAAC,QAAQ,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,oCAAoC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK/2T,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,2CAA2C,CAAC,CACpf,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,qCAAqC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,2BAA2B,WAAW,CAAC,8DAA8D,mFAAmF,OAAO,CAAC,CAAC,2BAA2B,WAChf,CAAC,8EAA8E,wFAAwF,OAAO,CAAC,CAAC,mBAAmB,QAAQ,CAAC,SAAS,OAAO,CAAC,CAAC,6BAA6B,WAAW,CAAC,QAAQ,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKg3T,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,qCAAqC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,yHACha,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,4DAA4D,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,UAAU,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,MAAM,QAAQ,OAAO,CAAC,CAAC,mBAAmB,QAAQ,CAAC,2BAA2B,OAAO,CAAC,CAAC,mBAAmB,QAAQ,CAAC,QAAQ,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,cACjf,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,gxBACnB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,gxBAC3B,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,uCAAuC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,0OAA0O,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,EAAE,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,UAAU,CAAC,CAAC,2BAC5d,aAAa,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,2BAA2B,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,4CAA4C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,+CAA+C,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,qCAAqC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,mBAC7e,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,YAAY,OAAO,CAAC,CAAC,2BAA2B,WAAW,CAAC,KAAK,OAAO,CAAC,CAAC,mBAAmB,QAAQ,CAAC,UAAU,CAAC,CAAC,2BAA2B,WAAW,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,mXACxV,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,qsCACnB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,mCAAmC,cAAc,CAAC,UAAU,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,+EAA+E,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,wBACnf,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,iHAAiH,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,MAAMC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IACjf,CAAC,CAAC,CAAC,8FAA8F,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,kEAAkE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,uCAAuC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,0OACzU,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,MAAM,IAAI,CAAC,CAAC,mBAAmB,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,uCAAuC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,+DAA+D,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAClf,KAAK,GAAG,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,YAAY,MAAM,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,sEAAsE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,wGAAwG,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,uCACjd,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,0OAA0O,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,EAAE,MAAM,IAAI,CAAC,CAAC,qBAAqB,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,8BAC1d,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,0JAA0J,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,0JAA0J,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,uCAAuC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,0OAC7e,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,EAAE,MAAM,IAAI,CAAC,CAAC,mBAAmB,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,mDAAmD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,+FAA+F,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,yFAAyF,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,oCAC1d,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,UAAU,MAAM,CAAC,GAAG,CAAC,CAAC,mBAAmB,QAAQ,CAAC,MAAM,MAAM,CAAC,GAAG,CAAC,CAAC,qBAAqB,QAAQ,CAAC,MAAM,MAAM,CAAC,GAAG,CAAC,CAAC,qBAAqB,QAAQ,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,mCAAmC,cAAc,CAAC,QAAQ,MAAM,CAAC,GAAG,CAAC,CAAC,2BAA2B,WAAW,CAAC,UAAU,MAAM,CAAC,GAAG,CAAC,CAAC,2BACze,WAAW,CAAC,SAAS,MAAM,CAAC,GAAG,CAAC,CAAC,2BAA2B,WAAW,CAAC,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,MAAM,MAAM,CAAC,GAAG,CAAC,CAAC,qBAAqB,QAAQ,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,mCAAmC,cAAc,CAAC,QAAQ,MAAM,CAAC,GAAG,CAAC,CAAC,2BAA2B,WAAW,CAAC,UAAU,MAAM,CAAC,GAAG,CAAC,CAAC,2BAA2B,WAAW,CAAC,SAAS,MAAM,CAAC,GAAG,CAAC,CAAC,2BAA2B,WAAW,CAAC,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,oCACxe,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,qCAAqC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,wDAAwD,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,SAAS,CACpf,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,qCAAqC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,2BAA2B,WAAW,CAAC,UAAU,CAAC,CAAC,mCAAmC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK9ha,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,gDACve,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,kCAAkC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,yCAAyC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,KAAK,CAAC,iBAAiB,CAAC,CAAC,qBAAqB,QAAQ,CAAC,SAAS,CAAC,CAAC,mBAAmB,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK+ha,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,wCAAwC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACpf,IAAI,CAAC,CAAC,CAAC,qCAAqC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,QAAQ,OAAO,CAAC,CAAC,2BAA2B,WAAW,CAAC,SAAS,OAAO,CAAC,CAAC,2BAA2B,WAAW,CAAC,QAAQ,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,+BACne,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,qFAAqF,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,0BAA0B,WAAW,CAAC,kBAAkB,OAAO,CAAC,CAAC,2BAA2B,WAAW,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,4BAC/d,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,0CAA0C,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,iEAAiE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,mFAAmF,CAAC,CAAC,CAAC,YACpf,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,4RAA4R,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,mGACvd,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,qBAAqB,QAAQ,CAAC,UAAU,OAAO,CAAC,CAAC,6BAA6B,WAAW,CAAC,UAAU,OAAO,CAAC,CAAC,2BAA2B,WAAW,CAAC,OAAO,OAAO,CAAC,CAAC,2BAA2B,WAAW,CAAC,SAAS,OAAO,CAAC,CAAC,2BAA2B,WAAW,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,oCAAoC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CACpf,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,UAAU,CAAC,CAAC,2BAA2B,WAAW,CAAC,QAAQ,OAAO,CAAC,CAAC,mBAAmB,QAAQ,CAAC,QAAQ,QAAQ,CAAC,CAAC,CAAC,2BAA2B,WAAW,CAAC,QAAQ,OAAO,CAAC,CAAC,mBAAmB,QAAQ,CAAC,QAAQ,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CACpf,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,wHAAwH,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,2mBAC9K,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,gCAAgC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,0CAA0C,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,qBAAqB,QAAQ,CAAC,0FAA0F,OAAO,CAAC,CAAC,0BAA0B,WAAW,CAAC,QAAQ,OAAO,CAAC,CAAC,mBAAmB,QAAQ,CAAC,MAAM,OACjf,CAAC,CAAC,mBAAmB,QAAQ,CAAC,6CAA6C,8EAA8E,SAAS,CAAC,CAAC,2BAA2B,WAAW,CAAC,KAAK,OAAO,CAAC,CAAC,6BAA6B,WAAW,CAAC,+CAA+C,iDAAiD,OAAO,CAAC,CAAC,mBAAmB,QAAQ,CAAC,KAAK,OAAO,CAAC,CAAC,qBAAqB,QAAQ,CAAC,6IACnb,OAAO,CAAC,CAAC,6BAA6B,WAAW,CAAC,mBAAmB,OAAO,CAAC,CAAC,qBAAqB,QAAQ,CAAC,aAAa,YAAY,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKpR,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CACpf,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKM,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,uCAAuC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACpf,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,2BAA2B,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,gBAAgB,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,2BAA2B,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAClf,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,wBAAwB,WAAW,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,yDAAyD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,qDAAqD,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CACpf,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,mJAAmJ,CAAC,CAAC,CAAC,gBAAgB,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,WAAW,CAAC,CAAC,mBAAmB,QAAQ,CAAC,MAAM,CAAC,CAAC,2BAA2B,WAAW,CAAC,SAAS,CAAC,CAAC,2BAA2B,WAAW,CAAC,UAAU,CAAC,CAAC,6BAA6B,WAAW,CAAC,MAAM,CAAC,CAAC,2BAA2B,WAAW,CAAC,WAAW,CAAC,CAAC,2BACjf,WAAW,CAAC,OAAO,CAAC,CAAC,6BAA6B,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,MAAMC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,8CAA8C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,oDAAoD,CAAC,CAAC,CAAC,aAAa,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,2BAA2B,WAAW,CAAC,QAAQ,CAAC,CAAC,2BACje,WAAW,CAAC,MAAM,CAAC,CAAC,2BAA2B,WAAW,CAAC,WAAW,CAAC,CAAC,mCAAmC,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,2BAA2B,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKkB,IAAI,CAAC,CAAC,CAAC,CAAC,CACpf,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,wBAAwB,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAgB9S,SAASh6Q,IAAIzqJ,KAAKg/J,EAAE,GAAGvU,EAAEuU,OAAE,EAAOvU,EAAEjgJ,EAAE,WAAW,OAAOigJ,EAAEuU,EAAEvU,EAAEuU,EAAEvU,EAAEuU,EAAE,IAAIvU,GACxE,IAAIqpR,EAAG,CAACj5V,EAAE,IAAID,EAAE,IAAID,EAAE,IAAI83U,EAAE,IAAI0D,EAAE,IAAIE,EAAE,IAAID,EAAE,IAAII,EAAE,IAAIC,EAAE,IAAIH,EAAE,IAAI,IAAS,IAAI,IAAS,IAAI,IAAS,IAAI,IAAS,IAAI,IAAS,IAAI,IAAS,IAAI,IAAS,IAAI,IAAS,IAAI,IAAS,IAAI,IAAS,IAAI,IAAS,IAAI,IAAS,IAAI,IAAS,IAAI,IAAS,IAAI,IAAS,IAAI,IAAS,IAAI,IAAS,IAAI,IAAS,IAAI,IAAS,IAAI,IAAS,IAAI,IAAS,IAAI,IAAS,IAAI,IAAS,IAAI,IAAS,IAAI,IAAS,IAAI,IAAS,IAAI,IAAS,IAAI,IAAS,IAAI,IAAS,IAAI,IAAS,KAAKyd,EAAG,CAACl5V,EAAE,IAAID,EAAE,IAAID,EAAE,IAAI83U,EAAE,IAAI0D,EAAE,IAAIE,EAAE,IAAID,EAAE,IACrfI,EAAE,IAAIC,EAAE,IAAIH,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK0d,EAAG,CAACn5V,EAAE,IAAID,EAAE,IAAID,EAAE,IAAI83U,EAAE,IAAI0D,EAAE,IAAIE,EAAE,IAAID,EAAE,IAAII,EAAE,IAAIC,EAAE,IAAIH,EAAE,IAAI,IAAS,IAAI,IAAS,IAAI,IAAS,IAAI,IAAS,IAAI,IAAS,IAAI,IAAS,IAAI,IAAS,IAAI,IAAS,IAAI,IAAS,IAAI,IAAS,IAAI,IAAS,IAAI,IAAS,IAAI,IAAS,IAAI,IAAS,IAAI,IAAS,IAAI,IAAS,IAAI,IAAS,IAAI,IAAS,IAAI,IAAS,IAAI,IAAS,IAAI,IAAS,IAAI,IAAS,IAAI,IAAS,IAAI,IAAS,IAAI,IAAS,IAAI,IAAS,IAAI,IAAS,IAAI,IAAS,IAAI,IAAS,IAAI,IAAS,IAAIllT,EAAE,IACnfjjB,EAAE,IAAIh3E,EAAE,IAAImlK,EAAE,IAAI0rJ,EAAE,IAAInkU,EAAE,IAAIqqF,EAAE,IAAIu8D,EAAE,IAAIwpR,EAAE,IAAIC,EAAE,IAAIv6H,EAAE,IAAIrvJ,EAAE,IAAIC,EAAE,IAAI0/G,EAAE,IAAIzhL,EAAE,IAAI5kF,EAAE,IAAI4mJ,EAAE,IAAIvzI,EAAE,IAAItR,EAAE,IAAIonF,EAAE,IAAI2nN,EAAE,IAAIsrB,EAAE,IAAIrrB,EAAE,IAAIpjJ,EAAE,IAAI4iR,EAAE,IAAIh1P,EAAE,KAAKi1P,EAAG,uCAAuCC,EAAGnsa,OAAO,SAAc+ra,EAAE/ra,OAAO,UAAeosa,EAAGpsa,OAAO,oBAAkDitZ,EAAGjtZ,OAAO,oBAAuDgwZ,EAAG,YAAYD,EAAG/vZ,OAAO,4BAA0D8vZ,EAAG,uBACpc,SAASkc,EAAE9ua,GAAG,MAAM,qBAAmDA,EAAE,KACzE,SAAS2yZ,KAAK,MAAM,QAAQmc,EAAE,MAAM,4EAAyIA,EAAE,MAAM,qDAAoGA,EAAE,KAAK,WAAaA,EAAE,KAAK,yCAA0DA,EAAE,MAAM,sCAAuDA,EAAE,KAAK,KACpb,IAAIpc,GAAG,IAAI5vZ,OAAO,MAAM6vZ,KAAK,KAAK,KAAK3C,GAAG,IAAIltZ,OAAO,oJAAua6vZ,KAAK,MAAM,KAAKwc,GAAG,SAC/eC,GAAG,cAAc,SAASC,GAAGrva,GAAG,QAAO,EAAEA,EAAE/E,SAAUs5S,GAAEy7G,GAAGhwZ,GAAG,SAASsva,GAAGtva,GAAG,OAAOu0S,GAAEq+G,EAAG5yZ,GAAGklJ,GAAEllJ,EAAE4ua,GAAI1pR,GAAEllJ,EAAE0ua,GAAI,SAASa,GAAGvva,GAAG,IAAIC,EAAEqva,GAAGtva,EAAEtG,YAAYsyG,EAAEhsG,GAAGA,EAAE45J,EAAE35J,GAAG,SAASuva,KAAK,OAAOl2a,OAAOsD,KAAKksF,GAAGzkE,QAAO,SAASrkB,GAAG,OAAO+yF,MAAM/yF,MAAK,SAASyva,KAAK,OAAOn2a,OAAOsD,KAAKksF,GAAGzkE,QAAO,SAASrkB,GAAG,OAAO+yF,MAAM/yF,MAAKnB,KAAI,SAASmB,GAAG,OAAOwc,SAASxc,EAAE,OAAM,SAAS0va,KAAK,IAAI1va,EAAE1G,OAAOsD,KAAK6B,GAAG,MAAM,IAAIgxa,QAAQzva,EAAEnB,KAAI,SAASoB,GAAG,OAAOuc,SAASvc,EAAE,QAAO,SAAS0va,GAAG3va,GAAG,OAAO,MAAMA,IAAI,GAAG2nE,EAAE3nE,EAAE,KAAK,GAAGgoE,EAAEhoE,EAAE,GAAG,IAC7e,SAASklJ,GAAEllJ,EAAEC,GAAG,IAAI,IAAYgoE,EAARwH,EAAE,IAAIw8B,EAAI7xG,EAAE4F,EAAE/E,OAAOi6B,EAAE,EAAEA,EAAE96B,IAAI86B,EAAE+yC,EAAEjoE,EAAET,OAAO21B,GAAG+yC,EAAEhoE,EAAEgoE,EAAEorC,eAAe,MAAMprC,GAAGwH,EAAEmqF,EAAE3xF,GAAG,OAAOwH,EAAE/1E,WAAW,SAASk2a,GAAG5va,GAAG,OAAO,GAAGA,EAAE/E,QAAQm0a,GAAG9ra,KAAKtD,GAAG,SAASmlJ,GAAEnlJ,GAAG,OAAO,MAAMA,GAAG+yF,MAAM/yF,IAAIA,EAAEqzG,gBAAgBvqB,EAAE,SAAS+7K,GAAE7kQ,EAAEC,EAAEwvE,GAAG,GAAG,GAAGO,EAAE/vE,EAAE,IAAI8nE,EAAE9nE,EAAE,GAAG,CAAC,IAAIgoE,EAAE6e,EAAE7mF,EAAE,GAAG,GAAG,EAAEgoE,EAAEhtE,OAAO,OAAOgtE,EAAEA,EAAE6e,EAAE7mF,EAAE,GAAG,IAAI7F,EAAEgpF,GAAEnjF,GAAG,OAAG,GAAGwvE,EAASogW,GAAG5nW,EAAE,EAAE7tE,EAAE,IAAS6tE,KAAKxpE,GAAYuB,EAAExB,GAAEwB,EAAEioE,EAAEp2D,GAAEo2D,IAAIhoE,EAAE6va,GAAG7va,EAAED,EAAEyvE,GAAGr1E,EAAE21a,GAAG31a,EAAE4F,EAAEyvE,GAAUogW,GAAG5nW,EAAEwH,EAAEr1E,EAAE6F,IAAxD7F,EAA2D,SAASoE,GAAEwB,EAAEC,EAAEwvE,GAAG,OAAelvE,GAAEP,EAAX,OAAOyvE,EAAM,GAAGxvE,EAAOwvE,GACpe,SAASugW,GAAGhwa,EAAEC,GAAG,IAAIwvE,EAAEkY,GAAE,IAAIw9D,GAAEllJ,GAAG,OAAO4kQ,GAAEp1L,EAAEzvE,EAAE,GAAG,IAAIioE,EAAE6e,EAAE9mF,EAAE,GAAG5F,EAAEgpF,GAAEpjF,GAAG,KAAKioE,KAAKxpE,GAAG,OAAOrE,EAAE,GAAG,GAAG6tE,GAAG,GAAG,MAAMhoE,GAAGxB,EAAE,GAAG+J,SAASvI,EAAEozG,eAAe,OAAOprC,EAAE,IAAI48L,GAAEp1L,EAAEzvE,EAAE,QAAQ,GAAGioE,GAAGgoW,GAAGxgW,EAAExvE,GAAG,OAAO4kQ,GAAEp1L,EAAEzvE,EAAE,GAAG,IAAIk1B,EAAE30B,GAAEkvE,EAAExvE,GAAG25J,EAAE9yE,EAAE5xD,EAAE,IAAgF,OAA5Ej1B,EAAE,GAAG8nE,EAAE7yC,EAAE,IAAIj1B,EAAE6mF,EAAE5xD,EAAE,IAAIq/Q,GAAEy6H,EAAGp1Q,KAAK35J,EAAE25J,GAAGnqF,EAAEjxE,GAAEixE,EAAExH,EAAEp2D,GAAEo2D,IAAI7tE,EAAE21a,GAAG31a,EAAEq1E,EAAE,GAAGzvE,EAAE8va,GAAG9va,EAAEyvE,EAAE,GAAU,EAAExvE,EAAEhF,OAAOgF,EAAE,IAAIgoE,EAAE,IAAI7tE,EAAE4F,EAAE6va,GAAG5nW,EAAE,EAAE7tE,EAAE4F,GAAG,SAASojF,GAAEpjF,GAAG,IAAI+nE,EAAE/nE,EAAE,GAAG,MAAM,GAAG,IAAIC,EAAE,GAAG+vE,EAAEhwE,EAAE,GAAG,OAAO+nE,EAAE/nE,EAAE,IAAIgwE,EAAEhwE,EAAE,IAAI,EAAE8mF,EAAE9mF,EAAE,GAAG2B,MAAMmlF,EAAE9mF,EAAE,GAAG,GAAG/D,KAAK,KAAKgE,EAAEA,EACxc,SAAS4va,GAAG7va,EAAEC,EAAEwvE,EAAExH,GAAG,OAAOhoE,GAAG,KAAK,EAAE,MAAM,IAAID,EAAEyvE,EAAExH,EAAE,KAAK,EAAE,MAAM,IAAIjoE,EAAE,IAAIyvE,EAAExH,EAAE,KAAK,EAAE,MAAM,QAAQjoE,EAAE,IAAIyvE,EAAExH,EAAE,QAAQ,OAAOwH,EAAExH,GACjI,SAAS8nW,GAAG/va,EAAEC,EAAEwvE,GAAGzvE,EAAE,CAACC,EAAE,GAAG+nE,EAAE/nE,EAAE,IAAIhF,QAAQ,GAAGw0E,EAAEzH,EAAE/nE,EAAE,IAAI+nE,EAAE/nE,EAAE,IAAI,IAAI,IAAIgoE,EAAE7tE,EAAE6F,EAAEhF,OAAOi6B,EAAE,EAAEA,EAAE96B,IAAI86B,EAAE,CAAC+yC,EAAEhoE,EAAEi1B,GAAG,IAAI0kI,EAAEjyF,EAAEM,EAAE,GAAG,IAAG,GAAG2xF,GAAG,GAAG55J,EAAEua,OAAOy1D,EAAE/H,EAAE,EAAE2xF,EAAE,OAAOA,EAAE,IAAI92J,OAAOktE,EAAE/H,EAAE,IAAIssO,GAAE36I,EAAE55J,IAAG,CAACC,EAAEgoE,EAAE,MAAMjoE,GAAGC,EAAE,KACnC,OADwC,MAAMA,IAAO7F,EAAE6F,EAAEA,EAAE6mF,EAAE1sF,EAAE,GAAG6tE,EAAE,IAAInlE,OAAOktE,EAAE51E,EAAE,IAAI0sF,EAAE1sF,EAAE,GAAGA,EAAE0sF,EAAE1sF,EAAE,GAAG4F,EAAE,GAAGyvE,GAAG,MAAMr1E,GAAG,EAAEA,EAAEa,OAAO+E,EAAE2C,QAAQslE,EAAEhoE,EAAE0C,QAAQwsa,GAAG/0a,IAAI4F,EAAE2C,QAAQslE,EAAEhoE,GAAG,GAAGwvE,IAAIzvE,EAAEA,EAAE2C,QAAQG,OAAO,0CAAoI,IAAI9C,EACpfA,EAAE2C,QAAQG,OAAO,wCAAkI,KAAK,OAD2D2sE,EAAEzvE,EAC3CyvE,EAAE,SAASygW,GAAGlwa,EAAEC,GAAG,IAAIwvE,EAAEkY,GAAE,IAAIw9D,GAAEnlJ,GAAG,OAAO,KAAKC,EAAEkwa,GAAG5va,GAAEkvE,EAAEzvE,GAAGC,GAAG,IAAI,GAAG8nE,EAAE9nE,EAAE,GAAG,CAAC,IAAIgoE,EAAE+H,EAAE/vE,EAAE,GAAG,OAAOmwa,GAAG3gW,EAAExH,EAAEjoE,IAAI,MAAM5F,IAAI,OAAO,KAAK,SAAS01a,GAAG9va,EAAEC,EAAEwvE,GAAG,OAAO1H,EAAE/nE,EAAE,IAAI,GAAGgwE,EAAEhwE,EAAE,GAAG/E,OAAO,GAAGw0E,EAAE,QAAQO,EAAEhwE,EAAE,GAAG+nE,EAAE9nE,EAAE,IAAI+vE,EAAE/vE,EAAE,IAAI6mF,EAAE9mF,EAAE,GAAG,SAAS8mF,EAAE9mF,EAAE,GAAG,GAC3Z,SAASmwa,GAAGnwa,EAAEC,GAAG,OAAOA,GAAG,KAAK,EAAE,OAAO+vE,EAAEhwE,EAAE,GAAG,KAAK,EAAE,OAAOgwE,EAAEhwE,EAAE,GAAG,KAAK,EAAE,OAAOgwE,EAAEhwE,EAAE,GAAG,KAAK,EAAE,KAAK,EAAE,OAAOgwE,EAAEhwE,EAAE,GAAG,KAAK,EAAE,OAAOgwE,EAAEhwE,EAAE,GAAG,KAAK,EAAE,OAAOgwE,EAAEhwE,EAAE,GAAG,KAAK,EAAE,OAAOgwE,EAAEhwE,EAAE,GAAG,KAAK,EAAE,OAAOgwE,EAAEhwE,EAAE,IAAI,KAAK,EAAE,OAAOgwE,EAAEhwE,EAAE,IAAI,KAAK,GAAG,OAAOgwE,EAAEhwE,EAAE,IAAI,QAAQ,OAAOgwE,EAAEhwE,EAAE,IAAI,SAASk9K,GAAGl9K,EAAEC,GAAG,OAAOqvS,GAAEtvS,EAAEgwE,EAAE/vE,EAAE,IAAIqvS,GAAEtvS,EAAEgwE,EAAE/vE,EAAE,IAAI,EAAEqvS,GAAEtvS,EAAEgwE,EAAE/vE,EAAE,IAAI,EAAEqvS,GAAEtvS,EAAEgwE,EAAE/vE,EAAE,IAAI,EAAEqvS,GAAEtvS,EAAEgwE,EAAE/vE,EAAE,IAAI,EAAEqvS,GAAEtvS,EAAEgwE,EAAE/vE,EAAE,IAAI,EAAEqvS,GAAEtvS,EAAEgwE,EAAE/vE,EAAE,KAAK,EAAEqvS,GAAEtvS,EAAEgwE,EAAE/vE,EAAE,KAAK,EAAEqvS,GAAEtvS,EAAEgwE,EAAE/vE,EAAE,KAAK,GAAGqvS,GAAEtvS,EAAEgwE,EAAE/vE,EAAE,IAAI+vE,EAAE/vE,EAAE,KAAKqvS,GAAEtvS,EAAEgwE,EAAE/vE,EAAE,IAAI,EAAE,GAAG+vE,EAAE/vE,EAAE,KAAKqvS,GAAEtvS,EAAEgwE,EAAE/vE,EAAE,IAAI,GAAG,GAAG,EACxe,SAASM,GAAEP,EAAEC,GAAG,GAAG,MAAMA,EAAE,OAAO,KAAKA,EAAEA,EAAEozG,cAAc,IAAI5jC,EAAEzvE,EAAE45J,EAAE35J,GAAG,GAAG,MAAMwvE,EAAE,CAAQ,GAAPA,EAAEqZ,EAAE7oF,GAAM,MAAMwvE,EAAE,OAAO,KAAKA,GAAE,IAAKv3B,GAAG0hH,EAAEsd,EAAEnvG,IAAI0H,GAAGzvE,EAAE45J,EAAE35J,GAAGwvE,EAAE,OAAOA,EAAE,SAAS6/N,GAAEtvS,EAAEC,GAAG,IAAIwvE,EAAEzvE,EAAE/E,OAAO,QAAO,EAAE0sE,EAAE1nE,EAAE,KAAK,GAAG+nE,EAAE/nE,EAAE,GAAGiQ,QAAQu/D,KAAM8kO,GAAEztN,EAAE7mF,EAAE,GAAGD,GAAG,SAASqwa,GAAGrwa,GAAG,IAAIC,EAAE0nF,GAAElY,EAAEhK,GAAGxlE,EAAED,GAAOioE,EAAE6e,EAAE9mF,EAAE,GAAO5F,EAAEoE,GAAEyB,EAAEgoE,EAAEwH,GAA6D,OAA1D,MAAMr1E,GAAG,OAAOq1E,GAAGxH,GAAGgoW,GAAGhwa,EAAEwvE,GAAGr1E,GAAE,GAAI4F,EAAEojF,GAAEpjF,GAAG5F,GAAG,GAAG8iL,GAAGl9K,EAAE5F,IAAWA,EAC1W,SAASqrE,GAAGzlE,EAAEC,GAAG,GAAG,MAAMA,EAAE,OAAO,KAAK,IAAIwvE,EAAEqX,EAAE7mF,EAAE,GAAU,GAAPwvE,EAAEhxE,EAAEgxE,GAAM,MAAMA,EAAEzvE,EAAE,UAAU,GAAG,GAAGyvE,EAAEx0E,OAAO+E,EAAEyvE,EAAE,QAAQzvE,EAAE,CAACC,EAAEmjF,GAAEnjF,GAAG,IAAI,IAAIgoE,EAAE7tE,EAAEq1E,EAAEx0E,OAAOi6B,EAAE,EAAEA,EAAE96B,EAAE86B,IAAI,CAAC+yC,EAAEwH,EAAEv6C,GAAG,IAAI0kI,EAAEr5J,GAAEP,EAAEioE,GAAG,GAAGF,EAAE6xF,EAAE,KAAK,GAAG,GAAG35J,EAAEsa,OAAOy1D,EAAE4pF,EAAE,KAAK,CAAC55J,EAAEioE,EAAE,MAAMjoE,QAAQ,IAAI,GAAGk9K,GAAGj9K,EAAE25J,GAAG,CAAC55J,EAAEioE,EAAE,MAAMjoE,GAAGA,EAAE,KAAK,OAAOA,EAAE,SAAS6R,GAAE7R,GAAU,OAAPA,EAAEvB,EAAEuB,GAAU,MAAMA,EAAE,KAAKA,EAAE,GAAG,SAASiwa,GAAGjwa,EAAEC,GAAY,GAATD,EAAEO,GAAEP,EAAEC,GAAM,MAAMD,EAAE,MAAM4D,MAAM,wBAAwB3D,GAAG,OAAO6mF,EAAE9mF,EAAE,IAAI,SAASswa,GAAGtwa,GAAW,OAARA,EAAEuwa,GAAGvwa,GAAU,GAAGA,GAAG,GAAGA,EAClc,SAASwwa,GAAGxwa,EAAEC,EAAEwvE,EAAExH,GAAG,IAAI7tE,EAAE+1a,GAAG1gW,EAAExH,GAAG/yC,EAAE,GAAGyyC,EAAEvtE,EAAE,GAAG4tE,EAAEgI,EAAEP,EAAE,GAAG,GAAGzH,EAAE5tE,EAAE,GAAa,GAAVA,EAAE4tE,EAAE5tE,EAAE,IAAO,GAAG6tE,EAAE,KAAG0nW,GAAGQ,GAAG1gW,EAAE,IAAmI,OAAO+gW,GAAGxwa,EAAEC,EAAEwvE,EAAE,GAA/IzvE,EAAEmwa,GAAG1gW,EAAE,GAAGkgW,GAAG3va,KAAKk1B,EAAEA,EAAEl5B,OAAO,GAAG2rE,EAAE3nE,EAAE,GAAGgoE,EAAEgI,EAAEP,EAAE,GAAG,GAAGzH,EAAEhoE,EAAE,IAAIk1B,EAAEqsC,OAAO,GAAGnnE,EAAEa,OAAOb,EAAE4tE,EAAEhoE,EAAE,KAAK5F,EAAEA,EAAE4B,OAAOgsE,EAAEhoE,EAAE,KAAK5F,EAAEmnE,SAAiC,OAAI,GAAGrsC,EAAE,GAAU,GAAEj1B,EAAEA,EAAEhF,QAAW,EAAEb,EAAE8V,QAAQjQ,GAAU,GAAEwvE,EAAEv6C,EAAE,GAAUu6C,GAAGxvE,EAAE,EAAEwvE,EAAExvE,EAAE,EAAEi1B,EAAEA,EAAEj6B,OAAO,GAAGgF,EAAE,GAAG,EAAEi1B,EAAEhlB,QAAQjQ,EAAE,GAAG,EAAE,IAAE,SAASswa,GAAGvwa,GAAG,IAAIC,EAAE0nF,GAAElY,EAAE2T,GAAEpjF,GAAY,OAATA,EAAE8mF,EAAE9mF,EAAE,GAAQA,KAAKvB,GAAYuB,EAAExB,GAAEyB,EAAED,EAAE6R,GAAE7R,IAAWwwa,GAAGvwa,EAAEwvE,EAAEzvE,GAAG,IAAjC,EAC/a,SAASk4U,GAAGl4U,EAAEC,GAAkB,GAAfD,EAAEA,EAAEtG,WAAc,GAAGsG,EAAE/E,QAAQ,KAAK+E,EAAET,OAAO,GAAG,OAAO,EAAE,IAAI,IAAIkwE,EAAExH,EAAEjoE,EAAE/E,OAAOb,EAAE,EAAE,GAAGA,GAAGA,GAAG6tE,IAAI7tE,EAAE,GAAGq1E,EAAEjzD,SAASxc,EAAE80F,UAAU,EAAE16F,GAAG,IAAIq1E,KAAKhxE,EAAE,OAAOwB,EAAE25J,EAAE55J,EAAE80F,UAAU16F,IAAIq1E,EAAE,OAAO,EAChM,SAASghW,GAAGzwa,EAAEC,EAAEwvE,EAAExH,EAAE7tE,GAAG,GAAG,GAAG6F,EAAEhF,OAAO,OAAO,EAAa,IAAIi6B,EAAfj1B,EAAE,IAAIgsG,EAAEhsG,GAAS,MAAMwvE,IAAIv6C,EAAE86C,EAAEP,EAAE,KAAK,MAAMv6C,IAAIA,EAAE,YAAY,IAAI0kI,EAAE35J,EAAEvG,WAAW,GAAG,GAAGkgK,EAAE3+J,OAAOi6B,EAAE,QAAQ,GAAG25Y,EAAEvra,KAAKs2J,GAAGA,EAAEA,EAAEj3J,QAAQksa,EAAE,IAAI7iU,EAAE/rG,GAAGA,EAAE25J,EAAE01Q,GAAG11Q,IAAI1kI,EAAE,MAAM,CAAsC,GAArC0kI,EAAE,IAAI92J,OAAOoyB,GAAGq6Y,GAAGtva,GAAGi1B,EAAEj1B,EAAEvG,WAAc,GAAGw7B,EAAE3a,OAAOq/I,GAAG,CAACA,EAAE1kI,EAAEyH,MAAMi9H,GAAG,GAAG3+J,OAAO,IAAIK,EAAE45B,EAAE4/D,UAAU8kE,GAAGj9H,MAAMuyY,GAAI5za,GAAG,MAAMA,EAAE,IAAI,EAAEA,EAAE,GAAGL,QAAQ,KAAKiqJ,GAAE5pJ,EAAE,GAAGoza,GAAIx5Y,GAAE,GAAI82E,EAAE/rG,GAAGA,EAAE25J,EAAE1kI,EAAE4/D,UAAU8kE,IAAI1kI,GAAE,QAASA,GAAE,EAAGA,EAAEA,EAAE,EAAE,GAAG,GAAG,IAAIA,EAAE,CAAC,GAAG,GAAGj1B,EAAEmF,EAAEnK,OAAO,MAAM2I,MAAM,oCACzc,GAD6e5D,EAAEk4U,GAAGj4U,EACrfgoE,GAAM,GAAGjoE,EAAE,OAAO4nE,EAAExtE,EAAE,EAAE4F,GAAGA,EAAE,MAAM4D,MAAM,gCAAiC,OAAG,MAAM6rE,IAAIv6C,EAAE4xD,EAAErX,EAAE,IAAImqF,EAAE,GAAG1kI,EAAE55B,EAAE2E,EAAEvG,WAAW,GAAG4B,EAAEujG,YAAY+6D,EAAE,KAAKA,EAAE,IAAI3tD,EAAE3wG,EAAEw5F,UAAU8kE,EAAE3+J,SAASK,EAAE00E,EAAEP,EAAE,GAAGn0E,EAAE,IAAIwH,OAAOgkF,EAAExrF,EAAE,IAAIm/P,GAAG7gG,EAAEnqF,EAAE,MAAMmqF,EAAEA,EAAElgK,YAAY66S,GAAEj5S,EAAE2E,EAAEvG,aAAa66S,GAAEj5S,EAAEs+J,IAAI,GAAG42Q,GAAGxwa,EAAEC,EAAEvG,WAAW+1E,GAAG,MAAYxH,EAAE2xF,EAAEA,GAAGhyF,EAAExtE,EAAE,EAAE86B,GAAGA,IAAE0yC,EAAExtE,EAAE,EAAE,GAAU,GAC1U,SAASqgQ,GAAGz6P,EAAEC,EAAEwvE,GAAG,IAAIxH,EAAEjoE,EAAEtG,WAAWU,EAAE6tE,EAAEhtE,OAAOi6B,EAAE86C,EAAE/vE,EAAE,IAAI,GAAG,GAAG7F,GAAG,MAAM86B,GAAG,GAAGA,EAAEj6B,OAAO,CAAC,IAAI2+J,EAAE,IAAI92J,OAAO,OAAOoyB,EAAE,KAAK,GAAG96B,EAAEw/J,EAAEp8I,KAAKyqD,GAAG,CAAC/yC,EAAE,IAAIpyB,OAAOgkF,EAAE9W,EAAE/vE,EAAE,GAAG,IAAI,IAAI3E,EAAEi5S,GAAEr/Q,EAAE+yC,GAAG7rD,EAAEhiB,EAAEa,OAAO,EAAEgF,EAAE+vE,EAAE/vE,EAAE,IAAO,MAAMA,GAAG,GAAGA,EAAEhF,QAAQ,MAAMb,EAAEgiB,IAAI,GAAGhiB,EAAEgiB,GAAGnhB,OAAYK,IAAGi5S,GAAEr/Q,EAAE+yC,EAAE6sB,UAAU16F,EAAE,GAAGa,WAAS,MAAMw0E,GAAG,EAAErzD,GAAG,MAAMhiB,EAAEgiB,IAAIqzD,EAAEmqF,EAAEx/J,EAAE,IAAI4F,EAAEif,IAAIgpD,EAAE6sB,UAAU16F,EAAE,GAAGa,WAAiBgtE,EAAEA,EAAEtlE,QAAQi3J,EAAE35J,KAAI3E,GAAGi5S,GAAEr/Q,EAAE+yC,MAAG,MAAMwH,GAAG,EAAErzD,GAAGqzD,EAAEmqF,EAAEx/J,EAAE,IAAI4F,EAAEif,IAAIgpD,OACva,SAASmoW,GAAGpwa,EAAEC,EAAEwvE,GAAG,GAAG,MAAMxvE,EAAE,MAAM2D,MAAM,yDAAyD,GAAG,IAAI3D,EAAEhF,OAAO,MAAM2I,MAAM,wDAAwD,IAAIqkE,EAAE,IAAIgkC,EAAE7xG,EAAE6F,EAAEiQ,QAAQ,mBAAmB,GAAG,GAAG9V,EAAE,CAAC,IAAI86B,EAAE96B,EAAE,GAAG,GAAG,KAAK6F,EAAEV,OAAO21B,GAAG,CAAC,IAAI0kI,EAAE35J,EAAEiQ,QAAQ,IAAIglB,GAAG,EAAE0kI,EAAE3xF,EAAE2xF,EAAE35J,EAAE60F,UAAU5/D,EAAE0kI,IAAI3xF,EAAE2xF,EAAE35J,EAAE60F,UAAU5/D,IAAIA,EAAEj1B,EAAEiQ,QAAQ,QAAQ+3D,EAAE2xF,EAAE35J,EAAE60F,UAAU,GAAG5/D,EAAEA,EAAE,EAAE,EAAE96B,SAASA,EAAE6tE,EAAE2xF,EAAE1kI,EAAEj1B,EAAEsa,OAAOw1Y,GAAI,GAAG76X,GAAGj1B,EAAEA,EAAE60F,UAAU5/D,GAAGj1B,EAAEA,EAAE0C,QAAQkwZ,EAAG,IAAI39X,EAAEj1B,EAAEsa,OAAOu4Y,GAAI,GAAG59X,IAAIj1B,EAAEA,EAAE60F,UAAU,EAAE5/D,KAAKj1B,EAAE,GACpf7F,EAAEH,KAAKguE,EAAEhoE,GAA0E,GAAvEA,EAAEgoE,EAAEvuE,WAAWU,EAAE6F,EAAEiQ,QAAQ,UAAU,EAAE9V,IAAI4xG,EAAE/jC,GAAGA,EAAE2xF,EAAE35J,EAAE60F,UAAU,EAAE16F,MAASi1a,GAAGpnW,EAAEvuE,YAAY,MAAMkK,MAAM,yDAAwE,GAAf3D,EAAEgoE,EAAEvuE,aAAgByrJ,GAAE11E,IAAI,MAAMxvE,GAAG,EAAEA,EAAEhF,QAAQ4za,EAAEvra,KAAKrD,IAAI,MAAM2D,MAAM,gCAAgC3D,EAAE,IAAI2iU,EAAE5iU,EAAE,CAA+B,GAA9B5F,EAAE6tE,EAAEvuE,WAAWw7B,EAAE96B,EAAEmgB,OAAOm4Y,IAAO,GAAGx9X,GAAGm6Y,GAAGj1a,EAAE06F,UAAU,EAAE5/D,IAAI,CAAC0kI,EAAEx/J,EAAEuiC,MAAM+1X,IAAI,IAAI,IAAIp3Z,EAAEs+J,EAAE3+J,OAAOmhB,EAAE,EAAEA,EAAE9gB,IAAI8gB,EAAE,GAAG,MAAMw9I,EAAEx9I,IAAI,EAAEw9I,EAAEx9I,GAAGnhB,OAAO,CAAC+wG,EAAE/jC,GAAGA,EAAE2xF,EAAEx/J,EAAE06F,UAAU,EAAE5/D,IAAI96B,EAAEw/J,EAAEx9I,GAAG,MAAMpc,GAAG5F,EAAE,GAAG,EAAEA,EAAEa,QAAQ2sE,EAAE3nE,EAAE,EAAE7F,GAAG86B,EAAE30B,GAAEP,EAAEyvE,GAAGr1E,EACpf,IAAI6xG,EAAE2tD,EAAE,EAAEt+J,EAAE2sE,EAAEvuE,WAAW,IAAIkgK,EAAE62Q,GAAGzwa,EAAE1E,EAAE45B,EAAE96B,EAAE6F,GAAG,MAAMmlJ,GAAG,GAAG,gCAAgCA,EAAEzhJ,UAASkra,EAAEvra,KAAKhI,GAA4D,MAAM8pJ,EAA9D,GAAG9pJ,EAAEA,EAAEqH,QAAQksa,EAAE,IAAIj1Q,EAAE62Q,GAAGzwa,EAAE1E,EAAE45B,EAAE96B,EAAE6F,GAAG,GAAG25J,EAAE,MAAMxU,EAA0G,GAAzF,GAAGwU,GAAG3xF,EAAEp2D,GAAE+nJ,GAAG3xF,GAAGwH,IAAIv6C,EAAE12B,GAAEwB,EAAE45J,EAAE3xF,MAAMsnW,GAAGtnW,GAAG7tE,EAAEw/J,EAAE3xF,EAAEvuE,YAAY,MAAM+1E,IAAImqF,EAAE9yE,EAAE5xD,EAAE,IAAI0yC,EAAE3nE,EAAE,EAAE25J,KAAQ,EAAEx/J,EAAEgL,EAAEnK,OAAO,MAAM2I,MAAM,yDAAoL,GAA3H,MAAMsxB,IAAIu6C,EAAE,IAAIw8B,EAAE7xG,EAAEV,YAAY+gQ,GAAGhrL,EAAEv6C,EAAE,IAAI+2E,GAAGjsG,EAAEwwa,GAAGxwa,EAAEyvE,EAAE/1E,WAAWw7B,GAAG,GAAG,GAAGl1B,GAAG,GAAGA,GAAG,GAAGA,IAAI5F,EAAEq1E,IAAIzvE,EAAE5F,EAAEV,WAAW+1E,EAAEzvE,EAAE/E,OAAU,EAAEw0E,EAAE,MAAM7rE,MAAM,yDAC5e,GAAG,GAAG6rE,EAAE,MAAM7rE,MAAM,wDAAwD,GAAG,EAAE5D,EAAE/E,QAAQ,KAAK+E,EAAET,OAAO,GAAG,CAAW,IAAVqoE,EAAE3nE,EAAE,GAAE,GAAQwvE,EAAE,EAAEA,EAAEzvE,EAAE/E,OAAO,GAAG,KAAK+E,EAAET,OAAOkwE,IAAIA,IAAI,GAAGA,GAAG7H,EAAE3nE,EAAE,EAAEwvE,GAAyB,OAAtB7H,EAAE3nE,EAAE,EAAEuc,SAASxc,EAAE,KAAYC,EAAsG,SAASs0S,GAAEv0S,EAAEC,GAAG,UAAOD,EAAE,iBAAiBA,EAAEC,EAAE08B,MAAM,OAAO38B,EAAE,MAAMC,EAAE08B,MAAM38B,KAAKA,EAAE,GAAG/E,QAAQgF,EAAEhF,QAAc,SAASy1a,GAAG1wa,GAAGpF,KAAKy1Z,GAAGvtZ,OAAO,KAAUlI,KAAK01Z,GAAG,GAAG11Z,KAAK+sE,EAAE,IAAIskC,EAAErxG,KAAKwS,GAAG,GAAGxS,KAAKsF,EAAE,IAAI+rG,EAAErxG,KAAKk1Z,GAAG,IAAI7jT,EAAErxG,KAAKksF,GAAE,EAAGlsF,KAAKs1Z,GAAGt1Z,KAAKq1Z,GAAGr1Z,KAAK81Z,IAAG,EAAG91Z,KAAK61Z,GAAGprQ,EAAEjgJ,IAAIxK,KAAKi8K,EAAE,EAAEj8K,KAAKwK,EAAE,IAAI6mG,EAAErxG,KAAK+1a,IAAG,EAAG/1a,KAAK0oE,EAAE,GAAG1oE,KAAKg/J,EAAE,IAAI3tD,EAAErxG,KAAKgY,EAAE,GAAGhY,KAAK21Z,GAAGvwZ,EAAEpF,KAAKgyM,GAAGhyM,KAAKU,EAAE88U,GAAGx9U,KAAKA,KAAK21Z,IAAldlrQ,EAAE9rJ,UAAUwxV,GAAG,SAAS/qV,GAAG,IAAIC,EAAEM,GAAE3F,KAAK6qE,GAAG7qE,KAAKoF,IAAI,OAAG,MAAMC,IAAWD,EAAEojF,GAAEpjF,IAAUsvS,GAAEtvS,EAAEgwE,EAAE/vE,EAAE,OAAwX,IAAI2wa,GAAG,IAAI15P,EAAEtvG,EAAEgpW,GAAG,GAAG,MAC5rB,IAAIz4F,GAAGr1U,OAAO,kIAAgZ+ta,GAAG,OACja,SAASz4F,GAAGp4U,EAAEC,GAAG,IAAIwvE,EAAEzvE,EAAEywZ,GAAmC,OAAhCxwZ,EAAEklJ,GAAEllJ,GAAGgwa,GAAGxgW,EAAExvE,GAAG,EAAED,EAAEO,GAAEP,EAAEywZ,GAAG5+Y,GAAE5R,IAAW,MAAMD,EAAEA,EAAE4wa,GAAG,SAASp3T,GAAGx5G,GAAG,IAAI,IAAIC,EAAED,EAAE4S,EAAE3X,OAAOw0E,EAAE,EAAEA,EAAExvE,IAAIwvE,EAAE,CAAC,IAAIxH,EAAEjoE,EAAE4S,EAAE68D,GAAGr1E,EAAE0sF,EAAE7e,EAAE,GAAG,GAAGjoE,EAAEoN,IAAIhT,EAAE,OAAM,EAAG,IAAI86B,EAAEl1B,EAAM45J,EAAE3xF,EAAE3sE,EAAEwrF,EAAE8yE,EAAE,GAAG5tD,EAAE92E,EAAEyyC,GAAG,IAAIvrD,EAAE8Y,EAAE0kI,EAAE9yE,EAAE8yE,EAAE,GAAG,IAAIxU,EAAE,kBAAkBzoH,MAAMrhC,GAAG,GAAuI,GAApI8pJ,EAAEnqJ,OAAOmhB,EAAEw9I,EAAEx0J,EAAEnK,OAAOmhB,EAAE,IAAIA,EAAEgpI,EAAEziJ,QAAQ,IAAIG,OAAOxH,EAAE,KAAKs+J,GAAGx9I,EAAEA,EAAEzZ,QAAQG,OAAO,IAAI,KAAK,MAAW,EAAEsZ,EAAEnhB,QAAQi6B,EAAEyyC,EAAEiyF,EAAEx9I,GAAG8Y,GAAE,GAAIA,GAAE,EAAMA,EAAE,OAAOl1B,EAAEoN,GAAGhT,EAAE4F,EAAE2wa,GAAGE,GAAGvta,KAAK0sE,EAAE/H,EAAE,IAAIjoE,EAAE62K,EAAE,GAAE,EAAG,OAAO72K,EAAE8mF,GAAE,EAChc,SAASgqV,GAAG9wa,EAAEC,GAAG,IAAI,IAAIwvE,EAAE,GAAGxH,EAAEhoE,EAAEhF,OAAO,EAAEb,EAAE4F,EAAE4S,EAAE3X,OAAOi6B,EAAE,EAAEA,EAAE96B,IAAI86B,EAAE,CAAC,IAAI0kI,EAAE55J,EAAE4S,EAAEsiB,GAAG,GAAGyyC,EAAEiyF,EAAE,GAAGnqF,EAAEltE,KAAKvC,EAAE4S,EAAEsiB,KAAK0kI,EAAE5pF,EAAE4pF,EAAE,EAAE16J,KAAKiW,IAAI8yD,EAAEN,EAAEiyF,EAAE,GAAG,IAAI,GAAG35J,EAAEsa,OAAOq/I,IAAInqF,EAAEltE,KAAKvC,EAAE4S,EAAEsiB,KAAKl1B,EAAE4S,EAAE68D,EAC9K,SAASykH,GAAGl0L,EAAEC,GAAGD,EAAEE,EAAE05J,EAAE35J,GAAG,IAAIwvE,EAAExvE,EAAqH,GAAnHiva,EAAG5ra,KAAKmsE,IAAI,GAAGzvE,EAAEE,EAAEkF,EAAEnK,QAAQg0a,EAAG3ra,KAAKmsE,IAAI,KAAKxvE,GAAGwvE,EAAExvE,EAAED,EAAE8vZ,GAAGl2P,EAAE35J,KAAKwvE,EAAEi/V,EAAGzua,GAAGD,EAAE8vZ,GAAGl2P,EAAEnqF,GAAGzvE,EAAE45J,EAAEA,EAAEnqF,IAAIxvE,EAAEwvE,IAAIzvE,EAAE8mF,GAAE,EAAG9mF,EAAE0wZ,IAAG,IAAQ1wZ,EAAE8mF,EAAE,CAAC,IAAI9mF,EAAE0wZ,GAAG,GAAGqgB,GAAG/wa,IAAI,GAAGgxa,GAAGhxa,GAAG,OAAOi4U,GAAGj4U,QAAQ,GAAG,EAAEA,EAAEsjE,EAAEroE,SAASgF,EAAED,EAAE45J,EAAElgK,WAAWsyG,EAAEhsG,EAAE45J,GAAG55J,EAAE45J,EAAEA,EAAE55J,EAAEsjE,GAAGtjE,EAAE45J,EAAEA,EAAE35J,GAAGA,EAAED,EAAEoF,EAAE1L,WAAW+1E,EAAExvE,EAAE4+F,YAAY7+F,EAAEsjE,GAAG0oC,EAAEhsG,EAAEoF,GAAGpF,EAAEoF,EAAEw0J,EAAE35J,EAAE60F,UAAU,EAAErlB,KAAKzvE,EAAEsjE,GAAG2tW,GAAGjxa,GAAG,OAAOA,EAAEoF,EAAEw0J,EAAE,KAAKq+K,GAAGj4U,GAAG,OAAOA,EAAEE,EAAExG,WAAW,OAAOsG,EAAE8vZ,GAAG1qZ,EAAEnK,QAAQ,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO+E,EAAEE,EAAExG,WAAW,KAAK,EAAE,IAAGq3a,GAAG/wa,GAAgB,OAAOA,EAAEsjE,EAAE2tW,GAAGjxa,GACrf2sM,GAAG3sM,GADudA,EAAEkwZ,IAAG,EACzd,QAAQ,OAAGlwZ,EAAEkwZ,IAAU8gB,GAAGhxa,KAAKA,EAAEkwZ,IAAG,GAAIlwZ,EAAEoF,EAAE1L,WAAWsG,EAAE45J,EAAElgK,YAAc,EAAEsG,EAAE4S,EAAE3X,QAAQgF,EAAEixa,GAAGlxa,EAAEC,GAAGwvE,EAAE0hW,GAAGnxa,GAAM,EAAEyvE,EAAEx0E,OAAcw0E,GAAEqhW,GAAG9wa,EAAEA,EAAE45J,EAAElgK,YAAmB8/G,GAAGx5G,GAAGoxa,GAAGpxa,GAAGA,EAAE8mF,EAAEuqV,GAAGrxa,EAAEC,GAAGD,EAAEE,EAAExG,aAAkBizM,GAAG3sM,IAAI,SAASi4U,GAAGj4U,GAA8C,OAA3CA,EAAE8mF,GAAE,EAAG9mF,EAAEkwZ,IAAG,EAAGlwZ,EAAE4S,EAAE,GAAG5S,EAAE62K,EAAE,EAAE7qE,EAAEhsG,EAAE2nE,GAAG3nE,EAAEoN,GAAG,GAAUu/L,GAAG3sM,GAC3R,SAASmxa,GAAGnxa,GAAG,IAAI,IAAIC,EAAED,EAAE45J,EAAElgK,WAAW+1E,EAAEzvE,EAAE4S,EAAE3X,OAAOgtE,EAAE,EAAEA,EAAEwH,IAAIxH,EAAE,CAAC,IAAI7tE,EAAE4F,EAAE4S,EAAEq1D,GAAG/yC,EAAE4xD,EAAE1sF,EAAE,GAAG,GAAG,IAAK0I,OAAO,OAAOoyB,EAAE,MAAO5xB,KAAKrD,KAAKD,EAAE2wa,GAAGE,GAAGvta,KAAK0sE,EAAE51E,EAAE,IAAIA,EAAE6F,EAAE0C,QAAQ,IAAIG,OAAOoyB,EAAE,KAAK86C,EAAE51E,EAAE,IAAIA,EAAEi3a,GAAGrxa,EAAE5F,GAAG8qJ,GAAE9qJ,EAAEu0a,IAAK3ua,EAAE8vZ,IAAI,OAAO11Z,EAAE,MAAM,GAAG,SAASi3a,GAAGrxa,EAAEC,GAAG,IAAIwvE,EAAEzvE,EAAEoF,EAAEA,EAAEnK,OAAO,OAAO+E,EAAE2wa,IAAI,EAAElhW,GAAG,KAAKzvE,EAAEoF,EAAE1L,WAAW6F,OAAOkwE,EAAE,GAAGzvE,EAAEoF,EAAE,IAAInF,EAAED,EAAEoF,EAAEnF,EAC3U,SAAS0sM,GAAG3sM,GAAG,IAAIC,EAAED,EAAE45J,EAAElgK,WAAW,GAAG,GAAGuG,EAAEhF,OAAO,CAAC,IAAI,IAAIw0E,EAAEzvE,EAAEiwZ,IAAI,GAAGjwZ,EAAEsjE,EAAEroE,QAAQ,EAAE0sE,EAAE3nE,EAAE1E,EAAE,IAAI0sE,EAAEhoE,EAAE1E,EAAE,IAAI0sE,EAAEhoE,EAAE1E,EAAE,IAAI2sE,EAAEwH,EAAEx0E,OAAOb,EAAE,EAAEA,EAAE6tE,IAAI7tE,EAAE,CAAC,IAAI86B,EAAEu6C,EAAEr1E,GAAG,EAAE4F,EAAEsjE,EAAEroE,QAAQ20a,GAAG9oV,EAAE5xD,EAAE,MAAM86C,EAAE96C,EAAE,KAAK6yC,EAAE7yC,EAAE,KAAK,GAAGl1B,EAAEsjE,EAAEroE,QAAQ+E,EAAEiwZ,IAAI2f,GAAG9oV,EAAE5xD,EAAE,KAAK86C,EAAE96C,EAAE,KAAKijT,GAAG70U,KAAKwjF,EAAE5xD,EAAE,KAAKl1B,EAAE4S,EAAErQ,KAAK2yB,GAAmB,OAAhB47Y,GAAG9wa,EAAEC,GAAGA,EAAEkxa,GAAGnxa,GAAU,EAAEC,EAAEhF,OAAOgF,EAAEu5G,GAAGx5G,GAAGoxa,GAAGpxa,GAAGA,EAAEE,EAAExG,WAAW,OAAO23a,GAAGrxa,EAAEC,GAAG,SAASmxa,GAAGpxa,GAAG,IAAIC,EAAED,EAAE45J,EAAElgK,WAAW+1E,EAAExvE,EAAEhF,OAAO,GAAG,EAAEw0E,EAAE,CAAC,IAAI,IAAIxH,EAAE,GAAG7tE,EAAE,EAAEA,EAAEq1E,EAAEr1E,IAAI6tE,EAAEipW,GAAGlxa,EAAEC,EAAEV,OAAOnF,IAAI,OAAO4F,EAAE8mF,EAAEuqV,GAAGrxa,EAAEioE,GAAGjoE,EAAEE,EAAExG,WAAW,OAAOsG,EAAEoF,EAAE1L,WACze,SAASu3a,GAAGjxa,GAAG,IAAIC,EAAED,EAAE45J,EAAElgK,WAAW+1E,EAAE,EAAE,GAAG,GAAGzvE,EAAE1E,EAAEkzR,KAAK,IAAIvmN,GAAE,OAAQA,EAAEjoE,EAAE45J,EAAElgK,WAAWuuE,EAAE,KAAKA,EAAE1oE,OAAO,IAAI,KAAK0oE,EAAE1oE,OAAO,IAAI,KAAK0oE,EAAE1oE,OAAO,GAAmN,OAAhN0oE,GAAGwH,EAAE,EAAEzvE,EAAEoF,EAAEw0J,EAAE,KAAKA,EAAE,KAAK55J,EAAEiwZ,IAAG,GAAIloV,EAAE/nE,EAAE1E,EAAE,MAAM2sE,EAAE,IAAInlE,OAAO,OAAOktE,EAAEhwE,EAAE1E,EAAE,IAAI,KAAK2sE,EAAEhoE,EAAE08B,MAAMsrC,GAAG,MAAMA,GAAG,MAAMA,EAAE,IAAI,EAAEA,EAAE,GAAGhtE,SAAS+E,EAAEiwZ,IAAG,EAAGxgV,EAAExH,EAAE,GAAGhtE,OAAO+E,EAAEoF,EAAEw0J,EAAE35J,EAAE60F,UAAU,EAAErlB,MAAMu8B,EAAEhsG,EAAE45J,GAAG55J,EAAE45J,EAAEA,EAAE35J,EAAE60F,UAAUrlB,IAAWxvE,EAAE60F,UAAU,EAAErlB,GAClX,SAASshW,GAAG/wa,GAAG,IAAIC,EAAED,EAAE8vZ,GAAGp2Z,WAAW+1E,EAAE,IAAI3sE,OAAO,WAAWktE,EAAEhwE,EAAE1E,EAAE,IAAI,KAAkB,OAAbm0E,EAAExvE,EAAE08B,MAAM8yC,GAAU,MAAMA,GAAG,MAAMA,EAAE,IAAI,EAAEA,EAAE,GAAGx0E,SAAQ+E,EAAEiwZ,IAAG,EAAGxgV,EAAEA,EAAE,GAAGx0E,OAAO+wG,EAAEhsG,EAAE45J,GAAG55J,EAAE45J,EAAEA,EAAE35J,EAAE60F,UAAUrlB,IAAIu8B,EAAEhsG,EAAEoF,GAAGpF,EAAEoF,EAAEw0J,EAAE35J,EAAE60F,UAAU,EAAErlB,IAAI,KAAKxvE,EAAEV,OAAO,IAAIS,EAAEoF,EAAEw0J,EAAE,MAAK,GAAO,SAASo3Q,GAAGhxa,GAAG,GAAG,GAAGA,EAAE45J,EAAEx0J,EAAEnK,OAAO,OAAM,EAAG,IAAIgF,EAAE,IAAIgsG,EAAEx8B,EAAEyoQ,GAAGl4U,EAAE45J,EAAE35J,GAAG,OAAG,GAAGwvE,IAAWu8B,EAAEhsG,EAAE45J,GAAG55J,EAAE45J,EAAEA,EAAE35J,EAAEvG,YAAYuG,EAAE4R,GAAE49D,GAAG,OAAOxvE,EAAED,EAAE1E,EAAEiF,GAAEP,EAAEywZ,GAAG,GAAGhhV,GAAGxvE,GAAGD,EAAEuwZ,KAAKvwZ,EAAE1E,EAAE88U,GAAGp4U,EAAEC,IAAID,EAAEoF,EAAEw0J,EAAE,GAAGnqF,GAAGmqF,EAAE,KAAK55J,EAAEsjE,EAAE,IAAS,GACjc,SAAS4tW,GAAGlxa,EAAEC,GAAG,IAAIwvE,EAAEzvE,EAAE2nE,EAAEjuE,WAAW,GAAG,GAAG+1E,EAAEqlB,UAAU90F,EAAE62K,GAAGt8J,OAAOva,EAAEqwZ,IAAI,CAAC,IAAIpoV,EAAEwH,EAAEl1D,OAAOva,EAAEqwZ,IAA8C,OAA1CpwZ,EAAEwvE,EAAE9sE,QAAQ3C,EAAEqwZ,GAAGpwZ,GAAG+rG,EAAEhsG,EAAE2nE,GAAG3nE,EAAE2nE,EAAEiyF,EAAE35J,GAAGD,EAAE62K,EAAE5uG,EAAShoE,EAAE60F,UAAU,EAAE90F,EAAE62K,EAAE,GAAmC,OAAhC,GAAG72K,EAAE4S,EAAE3X,SAAS+E,EAAE8mF,GAAE,GAAI9mF,EAAEoN,GAAG,GAAUpN,EAAEE,EAAExG,WAgBjN,IAAIiuF,GAAE09D,EAAEjgJ,IAAI,SAASksa,GAAGtxa,GAAG,IAAIC,EAAE0nF,GAAElY,EAAEhK,GAAGxlE,EAAED,GAAmD,OAAhDC,EAAEzB,GAAEyB,EAAE6mF,EAAE9mF,EAAE,GAAGyvE,GAAG,MAAMxvE,EAAED,GAAG,GAAGA,EAAEojF,GAAEpjF,GAAGA,EAAEk9K,GAAGl9K,EAAEC,IAAWD,GAAG,KAAK,EAAE,MAAM,aAAa,KAAK,EAAE,MAAM,uBAAuB,KAAK,EAAE,MAAM,SAAS,KAAK,EAAE,MAAM,QAAQ,KAAK,EAAE,MAAM,kBAAkB,KAAK,EAAE,MAAM,eAAe,KAAK,EAAE,MAAM,cAAc,KAAK,EAAE,MAAM,YAAY,KAAK,EAAE,MAAM,MAAM,KAAK,EAAE,MAAM,OAAO,QAAQ,KAAM,EAAE,MAAM,WAC5X,SAASuxa,GAAGvxa,GAAG,OAAOA,GAAG,IAAK,aAAa,OAAO,EAAE,IAAK,uBAAuB,OAAO,EAAE,IAAK,SAAS,OAAO,EAAE,IAAK,QAAQ,OAAO,EAAE,IAAK,kBAAkB,OAAO,EAAE,IAAK,eAAe,OAAO,EAAE,IAAK,cAAc,OAAO,EAAE,IAAK,YAAY,OAAO,EAAE,IAAK,MAAM,OAAO,EAAE,IAAK,OAAO,OAAO,EAAE,QAAQ,IAAK,UAAU,OAAO,GAChU,SAASwxa,GAAGxxa,GAAG,IAAI,OAAOuwa,GAAGvwa,IAAI,KAAK,EAAE,MAAM,cAAc,KAAK,EAAE,MAAM,uBAAuB,KAAK,EAAE,MAAM,WAAW,KAAK,EAAE,MAAM,YAAY,GAAGswa,GAAGtwa,GAAG,MAAM,cAAc,MAAMC,IAAI,MAAM,UAAU,SAASwxa,GAAGzxa,GAAG,GAAG,MAAMA,EAAET,OAAO,GAAG,MAAM,CAAC0yK,OAAOhyK,EAAEkwZ,GAAG1gV,GAAG,IAAI,IAAIxvE,EAAEmwa,GAAGzoV,GAAE3nF,OAAE,GAAQ,MAAM5F,IAAI,GAAG6F,EAAE,CAAC,IAAIwvE,EAAEhK,GAAGkiB,GAAE1nF,GAAG,GAAG,MAAMwvE,GAAG,OAAOA,EAAE,MAAM,CAACwiG,OAAOhyK,EAAEkwZ,GAAG1gV,GAAG,IAAI,IAAIxH,EAAE,EAAE,EAAEA,IAAIA,EAAE,CAAU,GAATwH,OAAE,EAAUzvE,EAAE/E,OAAOgtE,EAAE,EAAE,MAAM,CAACgqG,OAAOhyK,EAAEkwZ,GAAG1gV,GAA2B,GAAxBA,EAAE59D,GAAE7R,EAAE80F,UAAU,EAAE7sB,EAAE,IAAO,OAAOwH,EAAE,MAAM,CAAC0gV,GAAG1gV,GAAG,MAAM,CAACwiG,OAAOhyK,EAAEkwZ,QAAG,GAC5e,SAASv1F,GAAE56T,EAAEC,GAAG,KAAKrF,gBAAgBggU,IAAG,OAAO,IAAIA,GAAE56T,EAAEC,GAAG,GAAG,kBAAkBD,EAAE,IAAIyvE,GAAE,OAAQ,IAAI4gW,GAAGrwa,GAAGyvE,GAAE,EAAG,MAAMr1E,GAAGq1E,GAAE,EAAG,IAAIxH,EAAE,IAAIwH,GAAG,kBAAkBzvE,EAAE,MAAM4D,MAAM,2CAA2C,IAAI6rE,GAAG,MAAMxvE,GAAG,kBAAkBA,EAAE,MAAM2D,MAAM,0CAA8K,GAApI6rE,IAAIzvE,EAAEA,EAAE8wC,OAAO7wC,GAAG,MAAMD,EAAET,OAAO,KAAKU,EAAE,MAAMA,KAAKkwZ,GAAGlwZ,EAAE,KAAKgyK,OAAOhqG,GAAGwpW,GAAGzxa,KAAKpF,KAAKg/J,EAAE,CAAChnE,OAAO,GAAG8+U,WAAWzxa,EAAE2pJ,OAAM,EAAGjoD,UAAS,GAAOlyB,EAAE70E,KAAKwK,EAAEpF,MAAM,CAAmC,GAAlCpF,KAAKwK,EAAE,KAAKxK,KAAKg/J,EAAEhnE,OAAOrpD,MAAMvpC,GAAMC,EACpd,YADudrF,KAAKg/J,EAAE+3Q,YACrf,wBAA8B,GAAG,IAAIC,GAAG3xa,GAA8C,YAA1CrF,KAAKg/J,EAAE+3Q,YAAY,wBAA8B,IAAI/2a,KAAKwK,EAAE6iE,GAAImoW,GAAGzoV,GAAE3nF,EAAEC,GAAG,MAAM7F,GAA4B,YAAzBQ,KAAKg/J,EAAE+3Q,YAAYH,GAAGxxa,KAAWpF,KAAKg/J,EAAEhnE,OAAOi/U,cAAchtK,GAAEl9K,GAAE/sF,KAAKwK,EAAE,GAAGxK,KAAKg/J,EAAEhnE,OAAOk/U,SAASjtK,GAAEl9K,GAAE/sF,KAAKwK,EAAE,GAAGxK,KAAKg/J,EAAEhnE,OAAOm/U,KAAKltK,GAAEl9K,GAAE/sF,KAAKwK,EAAE,GAAGxK,KAAKg/J,EAAEhnE,OAAOo/U,QAAQntK,GAAEl9K,GAAE/sF,KAAKwK,EAAE,GAAGxK,KAAKg/J,EAAEhnE,OAAOq/U,YAAY7uV,GAAExoF,KAAKwK,GAAGxK,KAAKg/J,EAAEs4Q,4BAA4BvqV,GAAEojQ,GAAGnwV,KAAKwK,GAAGxK,KAAKg/J,EAAEj4D,SAAS2uU,GAAG11a,KAAKwK,GAAGxK,KAAKg/J,EAAEhQ,MAAMymR,GAAGz1a,KAAKwK,GAAGxK,KAAKg/J,EAAE50J,KAAKssa,GAAG12a,KAAKwK,GAAGxK,KAAKg/J,EAAE+3Q,YAAYH,GAAG52a,KAAKwK,GAC7e,IAA2H2pa,GAAvHx/H,GAAE,CAAC,iCAAiCpjJ,GAAE2jQ,EAAGvgH,GAAE,KAAKpjJ,IAAG,oBAAoBA,GAAEgmR,YAAYhmR,GAAEgmR,WAAW,OAAO5iI,GAAE,IAAI,KAAUA,GAAEt0S,SAAS8za,GAAEx/H,GAAEnnP,UAAUmnP,GAAEt0S,aAAQ,IAAS2/T,GAAmCzuK,GAAjCA,GAAE4iR,KAAI5iR,GAAE4iR,MAAKz1a,OAAOC,UAAUw1a,IAAK5iR,GAAE4iR,IAAK5iR,GAAE4iR,IAAG,GAAG5iR,GAAE4iR,IAAGn0G,GAAE,SAASg3G,GAAG5xa,GAAG,OAAOmlJ,GAAEnlJ,GAAGiwa,GAAGtoV,GAAE3nF,GAAG,EAA0F,SAASoya,GAAGpya,GAAG,IAAIC,EAAE,GAAG,OAAOD,EAAEqkB,OAAOorD,IAAOxvE,EAAEzG,eAAei2E,KAAYxvE,EAAEwvE,GAAG,GAAQ,IAGlK,SAASsqG,GAAE/5K,GAAGpF,KAAKU,EAAE0E,EAAEpF,KAAKgY,EAAE,IAAI89Z,GAAG1wa,GAAGpF,KAAKg/J,EAAEh/J,KAAKwK,EAAE,GAHrEw1T,GAAEy3G,4BAA4BT,GAAGh3G,GAAE03G,4BAA4B,SAAStya,GAAG,OAAO6R,GAAE7R,IAAkG46T,GAAE23G,wBAAwB,WAAW,OAAOH,GAAG5C,OAC9e50G,GAAE43G,yBAAyB,WAAW,OAAOJ,GAAG1C,OAAO90G,GAAE63G,WAAW,SAASzya,EAAEC,GAAG,IAAIwvE,EAA4B,OAAxBA,EAAEygW,GAAGlwa,EAAPC,EAASsxa,GAAGtxa,GAAW,GAAU,IAAI26T,GAAEnrP,EAAEzvE,IAAI46T,GAAE83G,aAAa,SAAS1ya,GAAG,OAAO,IAAI+5K,GAAE/5K,IAAI46T,GAAErhU,UAAU8gB,OAAO,WAAW,OAAOzf,KAAKg/J,GAAGghK,GAAErhU,UAAU8gB,OAAOugT,GAAErhU,UAAU8gB,OAAOugT,GAAErhU,UAAUwxV,GAAG,WAAW,OAAOnwV,KAAKg/J,EAAEs4Q,6BAA6Bt3G,GAAErhU,UAAU24a,4BAA4Bt3G,GAAErhU,UAAUwxV,GAAGnwB,GAAErhU,UAAUy1a,GAAG,WAAW,OAAOp0a,KAAKg/J,EAAEhQ,OAAOgxK,GAAErhU,UAAUmvB,QAAQkyS,GAAErhU,UAAUy1a,GAAGp0G,GAAErhU,UAAUq1a,GAAG,WAAW,OAAOh0a,KAAKg/J,EAAEj4D,UAC1fi5N,GAAErhU,UAAUo5a,WAAW/3G,GAAErhU,UAAUq1a,GAAGh0G,GAAErhU,UAAU8yW,GAAG,WAAW,OAAOzxW,KAAKg/J,EAAE50J,MAAM41T,GAAErhU,UAAUokH,QAAQi9M,GAAErhU,UAAU8yW,GAAGzxC,GAAErhU,UAAUo1a,GAAG,WAAW,MAAM,WAAW/za,KAAKg/J,EAAE50J,MAAM,yBAAyBpK,KAAKg/J,EAAE50J,MAAM41T,GAAErhU,UAAUo9W,SAAS/7C,GAAErhU,UAAUo1a,GAAG/zG,GAAErhU,UAAUm1a,GAAG,WAAW,MAAM,eAAe9za,KAAKg/J,EAAE50J,MAAM,yBAAyBpK,KAAKg/J,EAAE50J,MAAM41T,GAAErhU,UAAUq5a,YAAYh4G,GAAErhU,UAAUm1a,GAAG9zG,GAAErhU,UAAU06L,GAAG,SAASj0L,GAAG,OAAOpF,KAAKg/J,EAAEhnE,OAAO,MAAM5yF,EAAE,OAAOA,IAAI46T,GAAErhU,UAAUs5a,UAAUj4G,GAAErhU,UAAU06L,GACve2mI,GAAErhU,UAAUq3Z,GAAG,SAAS5wZ,GAAG,OAAOgwa,GAAGp1a,KAAKwK,EAAEpF,IAAI46T,GAAErhU,UAAUu5a,cAAcl4G,GAAErhU,UAAUq3Z,GAAGh2F,GAAErhU,UAAUu3Z,GAAG,WAAW,OAAOl2Z,KAAKg/J,EAAE83Q,YAAY92G,GAAErhU,UAAUw5a,cAAcn4G,GAAErhU,UAAUu3Z,GAAGl2F,GAAErhU,UAAUi1R,GAAG,WAAW,OAAOojJ,GAAGh3a,KAAKg/J,EAAE83Q,aAAa92G,GAAErhU,UAAUy5a,eAAep4G,GAAErhU,UAAUi1R,GAA4Dz0G,GAAExgL,UAAUo3Z,GAAG,SAAS3wZ,GAAGpF,KAAKwK,GAAGpF,EAAE,IAAIC,EAAErF,KAAKgY,EAAe,OAAb3S,EAAEqwZ,GAAGp8N,GAAGj0L,EAAED,GAAUpF,KAAKg/J,EAAE35J,EAAEqwZ,IAAIv2O,GAAExgL,UAAU05a,QAAQl5P,GAAExgL,UAAUo3Z,GAAG52O,GAAExgL,UAAU01a,GAAG,WAAW,OAAOr0a,KAAKg/J,GAC7emgB,GAAExgL,UAAUq5F,OAAOmnF,GAAExgL,UAAU01a,GAAGl1P,GAAExgL,UAAU21a,GAAG,WAAW,MAAM,KAAKt0a,KAAKwK,EAAExK,KAAKg/J,EAAEh/J,KAAKib,MAAMjb,KAAKwK,EAAE/E,MAAM,EAAEzF,KAAKwK,EAAEnK,OAAO,KAAK8+K,GAAExgL,UAAU25a,WAAWn5P,GAAExgL,UAAU21a,GAAGn1P,GAAExgL,UAAUsc,MAAM,SAAS7V,GAAG,IAAIC,EAAErF,KAAKgY,EAA8J,GAA5J3S,EAAEqwZ,GAAG,GAAGtkT,EAAE/rG,EAAEC,GAAG8rG,EAAE/rG,EAAE6vZ,IAAI9jT,EAAE/rG,EAAE0nE,GAAG1nE,EAAE42K,EAAE,EAAE52K,EAAEmN,GAAG,GAAG4+F,EAAE/rG,EAAEmF,GAAGnF,EAAEqjE,EAAE,GAAG0oC,EAAE/rG,EAAE25J,GAAG35J,EAAE6mF,GAAE,EAAG7mF,EAAEywZ,IAAG,EAAGzwZ,EAAEgwZ,IAAG,EAAGhwZ,EAAEiwZ,IAAG,EAAGjwZ,EAAE2S,EAAE,GAAG3S,EAAE0wa,IAAG,EAAG1wa,EAAE3E,GAAG2E,EAAE2sM,KAAK3sM,EAAE3E,EAAE88U,GAAGn4U,EAAEA,EAAEswZ,KAAK31Z,KAAKg/J,EAAEh/J,KAAKwK,EAAE,GAAMpF,EAAE,CAACC,EAAE,EAAE,IAAI,IAAIwvE,EAAEzvE,EAAE/E,OAAOgF,EAAEwvE,IAAIxvE,EAAErF,KAAK+1Z,GAAG3wZ,EAAET,OAAOU,IAAI,OAAOrF,KAAKg/J,GAAGmgB,GAAExgL,UAAUsc,MAAMkkK,GAAExgL,UAAUsc,MACtdkkK,GAAExgL,UAAUs3Z,GAAG,WAAW,OAAO,IAAIj2F,GAAEhgU,KAAKg/J,EAAEh/J,KAAKU,IAAIy+K,GAAExgL,UAAU45a,eAAep5P,GAAExgL,UAAUs3Z,KAAM52Z,KACvC,qBAAnBK,EAAOC,SAA2BD,EAAOC,SACzD,qBAAfkB,YAA8BA,YACnB,qBAAXiW,GAA0BA,GACf,qBAAXvF,QAA0BA,QACjB,qBAATF,MAAwBA,MAC/BrR,Q,yCC/hBJ,IAAIqZ,EAAK,EACLg1P,EAAK/pQ,KAAKyW,SACdrb,EAAOC,QAAU,SAAUkD,GACzB,MAAO,UAAUzB,YAAenC,IAAR4D,EAAoB,GAAKA,EAAK,QAASwW,EAAKg1P,GAAIvvQ,SAAS,O,0CCInFY,EAAOC,QAAU,SAASg+V,EAAar3U,EAAOC,GAC5C,IAAIsyH,EAAQ8kN,EAAYrpV,WAIxB,GAHAgS,EAAQA,GAAS,EACjBC,EAAMA,GAAOsyH,EAET8kN,EAAYl4V,MAAS,OAAOk4V,EAAYl4V,MAAM6gB,EAAOC,GAMzD,GAJID,EAAQ,IAAKA,GAASuyH,GACtBtyH,EAAM,IAAKA,GAAOsyH,GAClBtyH,EAAMsyH,IAAStyH,EAAMsyH,GAErBvyH,GAASuyH,GAASvyH,GAASC,GAAiB,IAAVsyH,EACpC,OAAO,IAAIijB,YAAY,GAKzB,IAFA,IAAI08Q,EAAM,IAAIr4a,WAAWw9V,GACrBl+V,EAAS,IAAIU,WAAWomB,EAAMD,GACzB7lB,EAAI6lB,EAAOmyZ,EAAK,EAAGh4a,EAAI8lB,EAAK9lB,IAAKg4a,IACxCh5a,EAAOg5a,GAAMD,EAAI/3a,GAEnB,OAAOhB,EAAOulB,S,kCC1BhB,IAAIwjT,EAAmB,EAAQ,QAC3B3yJ,EAAO,EAAQ,QACfn0K,EAAY,EAAQ,QACpB4rF,EAAY,EAAQ,QAMxB5tF,EAAOC,QAAU,EAAQ,OAAR,CAA0BoH,MAAO,SAAS,SAAU4hU,EAAU3lU,GAC7EhD,KAAKkqH,GAAK58B,EAAUq7O,GACpB3oU,KAAKwc,GAAK,EACVxc,KAAKsqH,GAAKtnH,KAET,WACD,IAAIwlF,EAAIxoF,KAAKkqH,GACTlnH,EAAOhD,KAAKsqH,GACZ1kH,EAAQ5F,KAAKwc,KACjB,OAAKgsE,GAAK5iF,GAAS4iF,EAAEnoF,QACnBL,KAAKkqH,QAAKjrH,EACH42K,EAAK,IAEaA,EAAK,EAApB,QAAR7yK,EAA+B4C,EACvB,UAAR5C,EAAiCwlF,EAAE5iF,GACxB,CAACA,EAAO4iF,EAAE5iF,OACxB,UAGHlE,EAAUknU,UAAYlnU,EAAUqF,MAEhCyhU,EAAiB,QACjBA,EAAiB,UACjBA,EAAiB,Y,qBCjCjB,IAAIxiL,EAAW,EAAQ,QAUvB,SAAShjD,EAAiB7jG,EAAOu7B,GAC/B,GAAIv7B,IAAUu7B,EAAO,CACnB,IAAIg+Y,OAAyBz5a,IAAVE,EACfw5a,EAAsB,OAAVx5a,EACZy5a,EAAiBz5a,IAAUA,EAC3B05a,EAAc7yR,EAAS7mJ,GAEvB25a,OAAyB75a,IAAVy7B,EACfq+Y,EAAsB,OAAVr+Y,EACZs+Y,EAAiBt+Y,IAAUA,EAC3Bu+Y,EAAcjzR,EAAStrH,GAE3B,IAAMq+Y,IAAcE,IAAgBJ,GAAe15a,EAAQu7B,GACtDm+Y,GAAeC,GAAgBE,IAAmBD,IAAcE,GAChEN,GAAaG,GAAgBE,IAC5BN,GAAgBM,IACjBJ,EACH,OAAO,EAET,IAAMD,IAAcE,IAAgBI,GAAe95a,EAAQu7B,GACtDu+Y,GAAeP,GAAgBE,IAAmBD,IAAcE,GAChEE,GAAaL,GAAgBE,IAC5BE,GAAgBF,IACjBI,EACH,OAAQ,EAGZ,OAAO,EAGTt5a,EAAOC,QAAUqjG,G,qBCxCjB,IAAI9H,EAAK,EAAQ,QAUjB,SAASmgN,EAAazqS,EAAO/N,GAC3B,IAAIxC,EAASuQ,EAAMvQ,OACnB,MAAOA,IACL,GAAI66F,EAAGtqF,EAAMvQ,GAAQ,GAAIwC,GACvB,OAAOxC,EAGX,OAAQ,EAGVX,EAAOC,QAAU07S,G,qBCpBjB,IAAI7lS,EAAW,EAAQ,QACvB9V,EAAOC,QAAU,SAAU4oG,GACzB,IAAK/yF,EAAS+yF,GAAK,MAAMw+C,UAAUx+C,EAAK,sBACxC,OAAOA,I,kCCHT,sIAiBe,sBAAO,OAAW,OAAU,OAAU,OAAW,eAAiB,aAAc,eAAkB,eAAeziG,OAAO,CACrIpC,KAAM,SACNsC,MAAO,CACL+tH,OAAQ,CACN3pH,KAAMlE,QACNmE,SAAS,GAEXqyF,YAAa,CACXtyF,KAAM7E,OAEN,UACE,OAAKvF,KAAKk5a,UACHl5a,KAAKk5a,UAAUx8U,YADM,KAKhC5sF,MAAO5J,QACP+H,UAAW,CACT7D,KAAM7E,OACN8E,QAAS,WAEXwD,WAAY,CACVzD,KAAM7E,OACN8E,QAAS,kBAEXlE,SAAUD,QACViza,UAAWjza,QACXujB,OAAQvjB,QACRkza,WAAY,CACVhva,KAAM7E,OACN8E,QAAS,aAEXmsC,MAAOtwC,QACP42F,KAAM52F,QACNiI,SAAUjI,QACVmza,KAAMnza,QACN5G,IAAK,CACH8K,KAAM7E,OACN8E,QAAS,QAEXiva,UAAW/za,OACXpG,MAAO,MAETY,KAAM,KAAM,CACVk9F,WAAY,mBAEdt2F,SAAU,CACR,UACE,MAAO,CACL,UAAU,KACP,OAASC,QAAQD,SAASE,QAAQxH,KAAKW,MAC1C,oBAAqBA,KAAKm9F,YAC1B,mBAAoBn9F,KAAKmG,SACzB,oBAAqBnG,KAAKm5a,UAC1B,gBAAiBn5a,KAAKw2C,MACtB,eAAgBx2C,KAAKo9F,OACrB,oBAAqBp9F,KAAK2O,MAC1B,mBAAoB3O,KAAKmO,SACzB,eAAgBnO,KAAKq5a,KACrB,oBAAqBr5a,KAAKu5a,YACvBv5a,KAAK4vF,gBACL5vF,KAAKq9V,mBACLr9V,KAAKk/F,eAIZ,WACE,OAAOh5F,QAAQlG,KAAK8P,QAGtB,cACE,OAAO5J,QAAQ,OAASU,QAAQD,SAASw2F,YAAY99F,KAAKW,OAASA,KAAKk5a,aAK5E,UACE,MAAM56H,EAAgB,CAAC,CAAC,UAAW,YAAa,CAAC,WAAY,eAAgB,CAAC,QAAS,UAAW,CAAC,SAAU,iBAG7GA,EAAc3/R,QAAQ,EAAEmuB,EAAUyxQ,MAC5Bv+S,KAAK8G,OAAOlI,eAAekuC,IAAW,eAASA,EAAUyxQ,EAAav+S,SAI9E4C,QAAS,CACP,MAAMpD,GACJQ,KAAKq1F,MAAM,QAAS71F,GACpBQ,KAAKk5a,WAAal5a,KAAK+P,UAGzB,YACE,MAAMlE,EAAW,GAWjB,OATI7L,KAAKoH,UACPyE,EAASlE,KAAK3H,KAAK0O,eAAe,OAAO,CACvCJ,YAAa,iBACbtI,MAAO,CACLuF,MAAM,IAEPvL,KAAKo5a,aAGHp5a,KAAK0O,eAAe,OAAoB7C,IAGjD,WACE,OAAO7L,KAAK0O,eAAe,OAAO,CAChCJ,YAAa,gBACbtI,MAAO,CACL6oF,OAAO,EACP1hF,KAAM,IAER2B,MAAO,CACL,aAAc9O,KAAK+O,SAASC,KAAKC,EAAEjP,KAAK6N,aAE1CnD,GAAI,CACFwE,MAAO1P,IACLA,EAAE2lK,kBACF3lK,EAAE+5K,iBACFv5K,KAAKq1F,MAAM,eACXr1F,KAAKq1F,MAAM,iBAAiB,MAG/Br1F,KAAKiO,YAGV,aACE,OAAOjO,KAAK0O,eAAe,OAAQ,CACjCJ,YAAa,mBACZ,CAACtO,KAAKypB,QAAUzpB,KAAKw5a,YAAax5a,KAAKuP,OAAOlF,QAASrK,KAAKu5a,UAAYv5a,KAAKy5a,eAKpF,OAAOjva,GACL,MAAMqB,EAAW,CAAC7L,KAAK0P,cACvB,IAAI,IACFpQ,EAAG,KACHS,GACEC,KAAKyzJ,oBACT1zJ,EAAK+O,MAAQ,IAAK/O,EAAK+O,MACrBqqa,UAAWn5a,KAAKm5a,UAAY,YAASl6a,EACrC62F,SAAU91F,KAAKk5a,YAAcl5a,KAAKmG,SAAW,EAAIpG,EAAK+O,MAAMgnF,UAE9D/1F,EAAKqQ,WAAWzI,KAAK,CACnBjE,KAAM,OACNvE,MAAOa,KAAK+zH,SAEdh0H,EAAOC,KAAKwO,mBAAmBxO,KAAK2O,MAAO5O,GAC3C,MAAM4O,EAAQ3O,KAAKs5a,WAAat5a,KAAKmO,UAAYnO,KAAK2O,MACtD,OAAOnE,EAAElL,EAAKU,KAAKsQ,aAAa3B,EAAO5O,GAAO8L,O,qBCxKlD,IAAI4tF,EAAY,EAAQ,QACpB0iN,EAAY,EAAQ,SACpB+H,EAAW,EAAQ,QAGnBw1H,EAAYx1H,GAAYA,EAAS73J,MAmBjCA,EAAQqtR,EAAYv9H,EAAUu9H,GAAajgV,EAE/C/5F,EAAOC,QAAU0sJ,G,qBCrBjB,IAAIstR,EAAW,EAAQ,QACnBxoa,EAAQ,EAAQ,OAAR,CAAiB,wBAiB7B,SAASua,EAAKxZ,EAAKo4W,GACjB,IAAIzwR,EAAM3nF,EAGVo4W,EAAMA,GAA4B,qBAAbloW,UAA4BA,SAC7C,MAAQlQ,IAAKA,EAAMo4W,EAAI9nW,SAAW,KAAO8nW,EAAI/nW,MAG7C,kBAAoBrQ,IAClB,MAAQA,EAAIvN,OAAO,KAEnBuN,EADE,MAAQA,EAAIvN,OAAO,GACf2lX,EAAI9nW,SAAWtQ,EAEfo4W,EAAI/nW,KAAOrQ,GAIhB,sBAAsBxJ,KAAKwJ,KAC9Bf,EAAM,uBAAwBe,GAE5BA,EADE,qBAAuBo4W,EACnBA,EAAI9nW,SAAW,KAAOtQ,EAEtB,WAAaA,GAKvBf,EAAM,WAAYe,GAClB2nF,EAAM8/U,EAASzna,IAIZ2nF,EAAI9kF,OACH,cAAcrM,KAAKmxF,EAAIr3E,UACzBq3E,EAAI9kF,KAAO,KACF,eAAerM,KAAKmxF,EAAIr3E,YACjCq3E,EAAI9kF,KAAO,QAIf8kF,EAAItkF,KAAOskF,EAAItkF,MAAQ,IAEvB,IAAIH,GAAkC,IAA3BykF,EAAIt3E,KAAKjN,QAAQ,KACxBiN,EAAOnN,EAAO,IAAMykF,EAAIt3E,KAAO,IAAMs3E,EAAIt3E,KAO7C,OAJAs3E,EAAIxgF,GAAKwgF,EAAIr3E,SAAW,MAAQD,EAAO,IAAMs3E,EAAI9kF,KAEjD8kF,EAAI5rE,KAAO4rE,EAAIr3E,SAAW,MAAQD,GAAQ+nW,GAAOA,EAAIv1W,OAAS8kF,EAAI9kF,KAAO,GAAM,IAAM8kF,EAAI9kF,MAElF8kF,EA7DTn6F,EAAOC,QAAU+rB,G,mBCVjB,SAASyhB,EAAMhd,EAAO9Z,EAAUuja,GAC5B,IAAIC,GAAO,EAIX,OAHAD,EAASA,GAAU/6Z,EACnB0oG,EAAMp3F,MAAQA,EAEI,IAAVA,EAAe9Z,IAAakxG,EAEpC,SAASA,EAAMx0G,EAAKtT,GAChB,GAAI8nH,EAAMp3F,OAAS,EACf,MAAM,IAAInnB,MAAM,iCAElBu+G,EAAMp3F,MAGJpd,GACA8ma,GAAO,EACPxja,EAAStD,GAETsD,EAAWuja,GACY,IAAhBryT,EAAMp3F,OAAgB0pZ,GAC7Bxja,EAAS,KAAM5W,IAK3B,SAASof,KA3BTnf,EAAOC,QAAUwtC,G,kCCAjB,oDAMe,sBAAO,eAAiB,kBAAmB,oBAAqB,sBAAuB,eAAmB,kBAAkB,IAEzIrnC,OAAO,CACPpC,KAAM,oBACNsC,MAAO,CACLG,SAAUD,QACVO,SAAUP,SAGZ,OACE,MAAO,CACLo7B,QAAS,KACTp4B,OAAQ,KACR5B,cAAc,IAIlBX,SAAU,CACR,UACE,MAAO,CACL,4BAA6B3G,KAAKoH,SAClC,iCAAkCpH,KAAKsH,aACvC,8BAA+BtH,KAAKivJ,cACjCjvJ,KAAKk/F,eAIZ,aACE,OAAOl/F,KAAK+F,gBAAgBI,UAAYnG,KAAKmG,UAG/C,aACE,OAAOnG,KAAK+F,gBAAgBU,UAAYzG,KAAKyG,WAIjD7D,QAAS,CACP,gBAAgB89G,GACd1gH,KAAKshC,QAAUo/E,GAGjB,oBACE1gH,KAAKshC,QAAU,MAGjB,eAAeo/E,GACb1gH,KAAKkJ,OAASw3G,EACdA,EAAG+O,IAAI,QAASzvH,KAAKu6C,UAGvB,mBACEv6C,KAAKkJ,OAAS,MAGhB,QAAQ1J,GACFA,EAAEq+P,QAAQ79P,KAAKkJ,OAAOkgF,IAAI+nE,OAC9BnxJ,KAAKq1F,MAAM,QAAS71F,GACpBQ,KAAK0vJ,YAAc1vJ,KAAKivJ,YAAcjvJ,KAAK+P,UAG7C,SACE/P,KAAK00F,UAAU,IAAM10F,KAAKq1F,MAAM,aAKpC,OAAO7qF,GACL,OAAOA,EAAE,MAAO,CACd8D,YAAa,oBACbC,MAAOvO,KAAK6G,QACZiI,MAAO,CACL,gBAAiBvJ,OAAOvF,KAAKoH,YAE9B,eAAQpH,W,mBC/Df,SAASurF,EAASpsF,GAChB,OAAOA,EAGTO,EAAOC,QAAU4rF,G,qBCpBjB,IAAIjoE,EAAM,EAAQ,QACdgqE,EAAY,EAAQ,QACpBktT,EAAe,EAAQ,OAAR,EAA6B,GAC5CxpT,EAAW,EAAQ,OAAR,CAAyB,YAExCtxF,EAAOC,QAAU,SAAU+H,EAAQ4jJ,GACjC,IAGIzoJ,EAHA2lF,EAAI8E,EAAU5lF,GACdjH,EAAI,EACJhB,EAAS,GAEb,IAAKoD,KAAO2lF,EAAO3lF,GAAOmuF,GAAU1tE,EAAIklE,EAAG3lF,IAAQpD,EAAOkI,KAAK9E,GAE/D,MAAOyoJ,EAAMjrJ,OAASI,EAAO6iB,EAAIklE,EAAG3lF,EAAMyoJ,EAAM7qJ,SAC7C+5Y,EAAa/6Y,EAAQoD,IAAQpD,EAAOkI,KAAK9E,IAE5C,OAAOpD,I,kCCfT,0BAIe,cAAUqG,OAAO,CAC9BpC,KAAM,YACNsC,MAAO,CACLO,MAAOL,QACPgqI,SAAUhqI,SAGZ,OAAOsE,GAEL,IAAIu/U,EAMJ,OAJK/pV,KAAK8G,OAAOmJ,MAA6B,cAArBjQ,KAAK8G,OAAOmJ,OACnC85U,EAAc/pV,KAAKkwI,SAAW,WAAa,cAGtC1lI,EAAE,KAAM,CACb+D,MAAO,CACL,aAAa,EACb,mBAAoBvO,KAAKuG,MACzB,sBAAuBvG,KAAKkwI,YACzBlwI,KAAK4vF,cAEV9gF,MAAO,CACLmB,KAAM,YACN,mBAAoB85U,KACjB/pV,KAAK8G,QAEV4D,GAAI1K,KAAK4pF,iB,qBC/Bf,IAAIprF,EAAS,EAAQ,QACjB81J,EAAW,EAAQ,QACnBttJ,EAAU,EAAQ,QAClBg/I,EAAW,EAAQ,QAGnBq+J,EAAW,IAGXtoN,EAAcv9F,EAASA,EAAOG,eAAYM,EAC1C66a,EAAiB/9U,EAAcA,EAAYj9F,cAAWG,EAU1D,SAAS46S,EAAa16S,GAEpB,GAAoB,iBAATA,EACT,OAAOA,EAET,GAAI6H,EAAQ7H,GAEV,OAAOm1J,EAASn1J,EAAO06S,GAAgB,GAEzC,GAAI7zJ,EAAS7mJ,GACX,OAAO26a,EAAiBA,EAAez6a,KAAKF,GAAS,GAEvD,IAAIM,EAAUN,EAAQ,GACtB,MAAkB,KAAVM,GAAkB,EAAIN,IAAWklT,EAAY,KAAO5kT,EAG9DC,EAAOC,QAAUk6S,G,kCCpCjB,oDAMe,sBAAO,OAAW,QAE/B/zS,OAAO,CACPpC,KAAM,UACNsC,MAAO,CACLG,SAAU,CACRiE,KAAMlE,QACNmE,SAAS,GAEXlL,MAAO,CACLiL,KAAMlE,QACNmE,aAASpL,IAGb2D,QAAS,CACP,eACE5C,KAAKixJ,SAAS,SAGhB,eACEjxJ,KAAKixJ,SAAS,WAKlB,SACE,IAAKjxJ,KAAK6P,aAAaxF,cAA0BpL,IAAfe,KAAKb,MAErC,OADA,eAAY,yDAA0Da,MAC/D,KAGT,IAAIqiB,EAaJ,OAVIriB,KAAK6P,aAAaxF,UACpBgY,EAAUriB,KAAK6P,aAAaxF,QAAQ,CAClChE,MAAOrG,KAAKoH,YAIZL,MAAMC,QAAQqb,IAA+B,IAAnBA,EAAQhiB,SACpCgiB,EAAUA,EAAQ,IAGfA,IAAWtb,MAAMC,QAAQqb,IAAaA,EAAQ/iB,KAK9CU,KAAKmG,WACRkc,EAAQtiB,KAAOsiB,EAAQtiB,MAAQ,GAE/BC,KAAKyqH,GAAGpoG,EAAQtiB,KAAM,CACpBklK,WAAYjlK,KAAK+5a,aACjB70Q,WAAYllK,KAAKg6a,gBAId33Z,IAbL,eAAY,+CAAgDriB,MACrDqiB,O,4CCpDb,IAAI8zR,EAAY,EAAQ,QACpBpxO,EAAM,EAAQ,QACd4vR,EAAW,EAAQ,QAGnBxlN,EAAmB,IAYvB,SAAS4pN,EAASl2V,EAAK1D,GACrB,IAAIY,EAAOC,KAAKkgG,SAChB,GAAIngG,aAAgBo2S,EAAW,CAC7B,IAAI3rI,EAAQzqK,EAAKmgG,SACjB,IAAKn7B,GAAQylG,EAAMnqK,OAAS8uI,EAAmB,EAG7C,OAFAq7B,EAAM7iK,KAAK,CAAC9E,EAAK1D,IACjBa,KAAKmN,OAASpN,EAAKoN,KACZnN,KAETD,EAAOC,KAAKkgG,SAAW,IAAIy0P,EAASnqL,GAItC,OAFAzqK,EAAKskB,IAAIxhB,EAAK1D,GACda,KAAKmN,KAAOpN,EAAKoN,KACVnN,KAGTN,EAAOC,QAAUo5V,G,qBChCjB,MAAMkhF,EAAa,EAAQ,QAErBC,EAAS,EAAQ,QACjBC,EAAiB,EAAQ,QACzBC,EAAc,EAAQ,QAE5B,SAASC,EAAcC,EAAYhhR,EAAQjrJ,EAAMvN,EAAM+pE,GACrD,MAAMtuD,EAAO,GAAG9W,MAAMpG,KAAKod,UAAW,GAChC89Z,EAAUh+Z,EAAKlc,OACfm6a,EAA2C,oBAAtBj+Z,EAAKg+Z,EAAU,GAE1C,IAAKC,IAAgBP,IACnB,MAAM,IAAIjxa,MAAM,sCAGlB,IAAIwxa,EAoBG,CACL,GAAID,EAAU,EACZ,MAAM,IAAIvxa,MAAM,8BAYlB,OATgB,IAAZuxa,GACFlsa,EAAOirJ,EACPA,EAASx4J,OAAO7B,GACK,IAAZs7a,GAAkBjhR,EAAO/0I,aAClCzjB,EAAOuN,EACPA,EAAOirJ,EACPA,OAASr6J,GAGJ,IAAImY,SAAQ,SAAU2sG,EAAS8L,GACpC,IACE,MAAM9vH,EAAOm6a,EAAO3qU,OAAOlhG,EAAMvN,GACjCijH,EAAQu2T,EAAWv6a,EAAMu5J,EAAQx4J,IACjC,MAAOtB,GACPqwH,EAAOrwH,OAtCX,GAAI+6a,EAAU,EACZ,MAAM,IAAIvxa,MAAM,8BAGF,IAAZuxa,GACF1vW,EAAKx8D,EACLA,EAAOirJ,EACPA,EAASx4J,OAAO7B,GACK,IAAZs7a,IACLjhR,EAAO/0I,YAA4B,qBAAPsmD,GAC9BA,EAAK/pE,EACLA,OAAO7B,IAEP4rE,EAAK/pE,EACLA,EAAOuN,EACPA,EAAOirJ,EACPA,OAASr6J,IA2Bf,IACE,MAAMc,EAAOm6a,EAAO3qU,OAAOlhG,EAAMvN,GACjC+pE,EAAG,KAAMyvW,EAAWv6a,EAAMu5J,EAAQx4J,IAClC,MAAOtB,GACPqrE,EAAGrrE,IAIPG,EAAQ4vG,OAAS2qU,EAAO3qU,OACxB5vG,EAAQ86a,SAAWJ,EAAav9Z,KAAK,KAAMq9Z,EAAe3pa,QAC1D7Q,EAAQq6J,UAAYqgR,EAAav9Z,KAAK,KAAMq9Z,EAAergR,iBAG3Dn6J,EAAQb,SAAWu7a,EAAav9Z,KAAK,MAAM,SAAU/c,EAAMw+B,EAAGz9B,GAC5D,OAAOs5a,EAAY5pa,OAAOzQ,EAAMe,O,mBCzElC,IAAI+yY,EAAgB,kBAChBlqO,EAAoB,kBACpBC,EAAwB,kBACxBC,EAAsB,kBACtBC,EAAeH,EAAoBC,EAAwBC,EAC3DiqO,EAAa,iBAGb4mC,EAAW,IAAM7mC,EAAgB,IACjC9pO,EAAU,IAAMD,EAAe,IAC/B6wQ,EAAS,2BACTC,EAAa,MAAQ7wQ,EAAU,IAAM4wQ,EAAS,IAC9CE,EAAc,KAAOhnC,EAAgB,IACrCinC,EAAa,kCACbC,EAAa,qCACbhnC,EAAQ,UAGRinC,EAAWJ,EAAa,IACxBK,EAAW,IAAMnnC,EAAa,KAC9BonC,EAAY,MAAQnnC,EAAQ,MAAQ,CAAC8mC,EAAaC,EAAYC,GAAY15a,KAAK,KAAO,IAAM45a,EAAWD,EAAW,KAClHG,EAAQF,EAAWD,EAAWE,EAC9BE,EAAW,MAAQ,CAACP,EAAc9wQ,EAAU,IAAKA,EAAS+wQ,EAAYC,EAAYL,GAAUr5a,KAAK,KAAO,IAGxGg6a,EAAYnza,OAAOyya,EAAS,MAAQA,EAAS,KAAOS,EAAWD,EAAO,KAS1E,SAASttV,EAAeE,GACtB,OAAOA,EAAOhsD,MAAMs5Y,IAAc,GAGpC37a,EAAOC,QAAUkuF,G,kCCrCjB,EAAQ,OAAR,CAA0B,WAAW,SAAU2D,GAC7C,OAAO,WACL,OAAOA,EAAWxxF,KAAM,IAAK,GAAI,S,kCCJrC,gBAUe,oBAAI8F,OAAO,CACxBpC,KAAM,eACN3D,KAAM,KAAM,CACV40F,UAAU,IAGZ,UAIEpjF,OAAO1E,sBAAsB,KAC3B7M,KAAKopF,IAAI1vE,aAAa,cAAe,QACrC1Z,KAAK20F,UAAW,Q,qBCtBtB,IAAI2/D,EAAW,EAAQ,QACnB8jP,EAAmB,EAAQ,QAC3B1sT,EAAW,EAAQ,QACnBssN,EAAsB,EAAQ,QAmB9B7zF,EAAez4H,GAAS,SAAS2sT,GACnC,IAAIijC,EAAShnR,EAAS+jP,EAAQrgG,GAC9B,OAAQsjI,EAAOj7a,QAAUi7a,EAAO,KAAOjjC,EAAO,GAC1CD,EAAiBkjC,GACjB,MAGN57a,EAAOC,QAAUwkN,G,4CC7BjB,IAAI41F,EAAY,EAAQ,QACpBnsN,EAAa,EAAQ,QACrBE,EAAgB,EAAQ,QACxBhvF,EAAW,EAAQ,QASvB,SAAS49V,EAAgBt4H,GACvB,OAAO,SAASr2I,GACdA,EAASjvF,EAASivF,GAElB,IAAI4hD,EAAa/hD,EAAWG,GACxBD,EAAcC,QACd9uF,EAEA+iL,EAAMryC,EACNA,EAAW,GACX5hD,EAAOppF,OAAO,GAEdyZ,EAAWuxH,EACXoqK,EAAUpqK,EAAY,GAAGtuI,KAAK,IAC9B0sF,EAAOtoF,MAAM,GAEjB,OAAOu8K,EAAIoiD,KAAgBhmN,GAI/B1e,EAAOC,QAAU+8V,G,kCC9BjB,EAAQ,OAAR,CAA0B,SAAS,SAAUlrQ,GAC3C,OAAO,WACL,OAAOA,EAAWxxF,KAAM,KAAM,GAAI,S,wICYtC,MAAMqhT,EAAe,CACnB,CACE,6BACA,KACA,MAEF,CACE,qBACA,KACA,OAEF,CACE,uBACA,KACA,OAEF,CACE,iBACA,KACA,QAEF,CACE,UACA,KACA,OAEF,CACE,SACA,KACA,OAEF,CACE,WACA,KACA,QAEF,CACE,sBACA,KACA,QAEF,CACE,YACA,KACA,MAEF,CACE,qBACA,KACA,OAEF,CACE,QACA,KACA,OAEF,CACE,YACA,KACA,KACA,GAEF,CACE,uBACA,KACA,MAEF,CACE,0BACA,KACA,OAEF,CACE,UACA,KACA,QAEF,CACE,uBACA,KACA,OAEF,CACE,wBACA,KACA,OAEF,CACE,WACA,KACA,QAEF,CACE,qBACA,KACA,OAEF,CACE,mBACA,KACA,MAEF,CACE,SACA,KACA,OAEF,CACE,gBACA,KACA,OAEF,CACE,UACA,KACA,QAEF,CACE,iBACA,KACA,OAEF,CACE,UACA,KACA,OAEF,CACE,+CACA,KACA,OAEF,CACE,WACA,KACA,OAEF,CACE,kBACA,KACA,MAEF,CACE,iCACA,KACA,OAEF,CACE,yBACA,KACA,QAEF,CACE,SACA,KACA,OAEF,CACE,sBACA,KACA,OAEF,CACE,eACA,KACA,OAEF,CACE,qBACA,KACA,OAEF,CACE,qBACA,KACA,OAEF,CACE,sBACA,KACA,OAEF,CACE,SACA,KACA,IACA,EACA,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,QAElS,CACE,0BACA,KACA,OAEF,CACE,wBACA,KACA,MACA,GAEF,CACE,iBACA,KACA,QAEF,CACE,uDACA,KACA,OAEF,CACE,eACA,KACA,OAEF,CACE,QACA,KACA,MAEF,CACE,aACA,KACA,MAEF,CACE,mBACA,KACA,KACA,GAEF,CACE,0BACA,KACA,KACA,GAEF,CACE,WACA,KACA,MAEF,CACE,yBACA,KACA,OAEF,CACE,iDACA,KACA,OAEF,CACE,uCACA,KACA,OAEF,CACE,eACA,KACA,OAEF,CACE,aACA,KACA,OAEF,CACE,gBACA,KACA,OAEF,CACE,qBACA,KACA,OAEF,CACE,OACA,KACA,MAEF,CACE,UACA,KACA,MACA,GAEF,CACE,kBACA,KACA,OAEF,CACE,mCACA,KACA,OAEF,CACE,oBACA,KACA,MAEF,CACE,WACA,KACA,OAEF,CACE,WACA,KACA,QAEF,CACE,4CACA,KACA,IACA,EACA,CAAC,MAAO,MAAO,QAEjB,CACE,UACA,KACA,OAEF,CACE,iBACA,KACA,MAEF,CACE,cACA,KACA,OAEF,CACE,wCACA,KACA,OAEF,CACE,UACA,KACA,OAEF,CACE,kBACA,KACA,OAEF,CACE,WACA,KACA,OAEF,CACE,oCACA,KACA,OAEF,CACE,0BACA,KACA,OAEF,CACE,OACA,KACA,OAEF,CACE,kBACA,KACA,MACA,GAEF,CACE,SACA,KACA,MAEF,CACE,mCACA,KACA,OAEF,CACE,yCACA,KACA,OAEF,CACE,QACA,KACA,OAEF,CACE,SACA,KACA,OAEF,CACE,uBACA,KACA,OAEF,CACE,wBACA,KACA,MAEF,CACE,gBACA,KACA,OAEF,CACE,YACA,KACA,OAEF,CACE,kBACA,KACA,MAEF,CACE,+BACA,KACA,OAEF,CACE,UACA,KACA,QAEF,CACE,aACA,KACA,MACA,GAEF,CACE,OACA,KACA,QAEF,CACE,YACA,KACA,OAEF,CACE,WACA,KACA,KACA,GAEF,CACE,kBACA,KACA,OAEF,CACE,+BACA,KACA,OAEF,CACE,SACA,KACA,OAEF,CACE,QACA,KACA,OAEF,CACE,WACA,KACA,OAEF,CACE,iBACA,KACA,OAEF,CACE,yBACA,KACA,MAEF,CACE,mBACA,KACA,OAEF,CACE,eACA,KACA,MAEF,CACE,YACA,KACA,MAEF,CACE,kBACA,KACA,MAEF,CACE,mBACA,KACA,OAEF,CACE,UACA,KACA,OAEF,CACE,cACA,KACA,KACA,GAEF,CACE,oBACA,KACA,OAEF,CACE,iBACA,KACA,KACA,GAEF,CACE,UACA,KACA,QAEF,CACE,aACA,KACA,MAEF,CACE,SACA,KACA,KACA,GAEF,CACE,qBACA,KACA,OAEF,CACE,yBACA,KACA,IACA,GAEF,CACE,QACA,KACA,OAEF,CACE,WACA,KACA,OAEF,CACE,SACA,KACA,OAEF,CACE,qBACA,KACA,OAEF,CACE,0BACA,KACA,OAEF,CACE,aACA,KACA,OAEF,CACE,mBACA,KACA,OAEF,CACE,qBACA,KACA,OAEF,CACE,UACA,KACA,OAEF,CACE,UACA,KACA,OAEF,CACE,mBACA,KACA,OAEF,CACE,gBACA,KACA,OAEF,CACE,sBACA,KACA,OAEF,CACE,aACA,KACA,OAEF,CACE,aACA,KACA,OAEF,CACE,iCACA,KACA,OAEF,CACE,4BACA,KACA,OAEF,CACE,SACA,KACA,OAEF,CACE,WACA,KACA,MAEF,CACE,WACA,KACA,OAEF,CACE,OACA,KACA,OAEF,CACE,QACA,KACA,OAEF,CACE,mBACA,KACA,OAEF,CACE,aACA,KACA,OAEF,CACE,4BACA,KACA,OAEF,CACE,oBACA,KACA,OAEF,CACE,UACA,KACA,MACA,GAEF,CACE,kBACA,KACA,MAEF,CACE,aACA,KACA,OAEF,CACE,8BACA,KACA,OAEF,CACE,SACA,KACA,OAEF,CACE,oBACA,KACA,OAEF,CACE,yBACA,KACA,OAEF,CACE,aACA,KACA,QAEF,CACE,sBACA,KACA,MACA,GAEF,CACE,0BACA,KACA,OAEF,CACE,2BACA,KACA,MAEF,CACE,oBACA,KACA,OAEF,CACE,QACA,KACA,OAEF,CACE,gBACA,KACA,OAEF,CACE,0BACA,KACA,MAEF,CACE,qCACA,KACA,OAEF,CACE,cACA,KACA,MAEF,CACE,YACA,KACA,OAEF,CACE,gBACA,KACA,OAEF,CACE,UACA,KACA,OAEF,CACE,OACA,KACA,OAEF,CACE,iBACA,KACA,OAEF,CACE,+BACA,KACA,OAEF,CACE,2BACA,KACA,QAEF,CACE,iBACA,KACA,KACA,GAEF,CACE,kBACA,KACA,OAEF,CACE,wBACA,KACA,MAEF,CACE,QACA,KACA,OAEF,CACE,wBACA,KACA,OAEF,CACE,kBACA,KACA,OAEF,CACE,mBACA,KACA,OAEF,CACE,WACA,KACA,OAEF,CACE,cACA,KACA,MAEF,CACE,cACA,KACA,MAEF,CACE,kBACA,KACA,MAEF,CACE,WACA,KACA,OAEF,CACE,cACA,KACA,IACA,EACA,CAAC,MAAO,QAEV,CACE,iBACA,KACA,OAEF,CACE,uBACA,KACA,MACA,GAEF,CACE,oBACA,KACA,MAEF,CACE,kBACA,KACA,IACA,GAEF,CACE,SACA,KACA,OAEF,CACE,mBACA,KACA,MACA,GAEF,CACE,eACA,KACA,OAEF,CACE,wBACA,KACA,QAEF,CACE,cACA,KACA,QAEF,CACE,iDACA,KACA,MACA,GAEF,CACE,uDACA,KACA,OAEF,CACE,mCACA,KACA,QAEF,CACE,QACA,KACA,OAEF,CACE,aACA,KACA,OAEF,CACE,8CACA,KACA,OAEF,CACE,6CACA,KACA,OAEF,CACE,oBACA,KACA,OAEF,CACE,kBACA,KACA,OAEF,CACE,aACA,KACA,OAEF,CACE,eACA,KACA,OAEF,CACE,YACA,KACA,MAEF,CACE,eACA,KACA,QAEF,CACE,uBACA,KACA,OAEF,CACE,uBACA,KACA,OAEF,CACE,kBACA,KACA,OAEF,CACE,uBACA,KACA,OAEF,CACE,eACA,KACA,MAEF,CACE,qBACA,KACA,MAEF,CACE,gCACA,KACA,OAEF,CACE,iBACA,KACA,MAEF,CACE,0BACA,KACA,MAEF,CACE,qBACA,KACA,OAEF,CACE,WACA,KACA,OAEF,CACE,yBACA,KACA,KACA,GAEF,CACE,YACA,KACA,OAEF,CACE,mBACA,KACA,MAEF,CACE,wBACA,KACA,MAEF,CACE,mBACA,KACA,OAEF,CACE,cACA,KACA,OAEF,CACE,aACA,KACA,OAEF,CACE,WACA,KACA,OAEF,CACE,iBACA,KACA,MAEF,CACE,cACA,KACA,OAEF,CACE,OACA,KACA,OAEF,CACE,UACA,KACA,OAEF,CACE,QACA,KACA,OAEF,CACE,sBACA,KACA,QAEF,CACE,oBACA,KACA,OAEF,CACE,mBACA,KACA,MAEF,CACE,eACA,KACA,OAEF,CACE,2BACA,KACA,QAEF,CACE,SACA,KACA,OAEF,CACE,sBACA,KACA,QAEF,CACE,SACA,KACA,OAEF,CACE,oBACA,KACA,OAEF,CACE,qDACA,KACA,OAEF,CACE,iBACA,KACA,KACA,GAEF,CACE,gBACA,KACA,IACA,GAEF,CACE,UACA,KACA,OAEF,CACE,2BACA,KACA,OAEF,CACE,UACA,KACA,OAEF,CACE,oCACA,KACA,KACA,GAEF,CACE,YACA,KACA,MAEF,CACE,qBACA,KACA,MAEF,CACE,uCACA,KACA,OAEF,CACE,sCACA,KACA,MACA,GAEF,CACE,mBACA,KACA,OAEF,CACE,SACA,KACA,OAEF,CACE,WACA,KACA,OAEF,CACE,gBACA,KACA,MACA,IAIWA,QAAap9S,IAAIg+S,IAAW,CACzCv+S,KAAMu+S,EAAQ,GACdvC,KAAMuC,EAAQ,GAAGxpM,cACjBmqM,SAAUX,EAAQ,GAClBs5H,SAAUt5H,EAAQ,IAAM,EACxBu5H,UAAWv5H,EAAQ,IAAM,QCtvCvBnrS,EACqB,qBAAfjW,YAA8BA,YACrB,qBAATwQ,MAAwBA,MACb,qBAAXyF,GAA0BA,EAEhC2ka,E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,EAAK,OAAOp5F,EAE7B,OAAQ,I,4CCRV;;;;;;;;IASE,SAAWob,EAAMmzG,GAEf,EAAO,GAAI,EAAF,EAAS,kEAFtB,CAQGhvH,GAAM,WAOP,IAAIgyb,EAAoB,CAEtB,gBACA,YACA,cACA,SACA,aACA,MACA,MACA,WACA,UACA,QACA,WACA,aAEA,aACA,YAGA,QACA,UAGA,OAGA,UAEA,QACA,SAEA,QAEA,SAEA,SACA,YACA,OACA,QACA,QACA,QACA,aACA,cAGA,UAEA,OAGA,UACA,OAEA,OAEA,YACA,YACA,cAGA,cACA,YAEA,OACA,YACA,SACA,WACA,YAIA,OACA,UAEA,QACA,MACA,OAGA,OACA,MAEA,YAEA,UACA,UACA,SAEA,WAEA,OACA,OACA,SAEA,YACA,QAEA,QACA,aAGA,YACA,WACA,OACA,OACA,SACA,SACA,OAEA,OACA,WACA,UACA,QACA,cACA,YACA,SACA,SACA,WAEA,MACA,aACA,YACA,cAEA,YAEA,OACA,QAEA,MAGA,UAEA,OAIA,SAEA,YAGA,OAEA,WACA,OACA,UACA,UACA,YACA,WACA,WACA,cACA,aACA,SACA,YACA,QACA,aAEA,OACA,UAEA,WACA,YACA,QAEA,aACA,UACA,SACA,cACA,aACA,UAGA,UACA,OACA,QACA,QAEA,MACA,QACA,QAEA,SACA,OACA,WACA,WACA,UACA,YAEA,YACA,UAEA,SAIA,QACA,WAEA,UACA,SACA,YACA,UAEA,QAIA,aACA,YACA,cAIA,SAEA,SAGA,aACA,cACA,WACA,UACA,UACA,OACA,UACA,MAEA,SAKA,UACA,UACA,UACA,SACA,QACA,QACA,WAEA,QAEA,QACA,UACA,OACA,OACA,WACA,OAGA,YAEA,UAGA,QAEA,QACA,YAGA,WACA,WAGA,SACA,SACA,UACA,SAKA,UACA,iBAEA,QAGA,YACA,eACA,QAGA,WACA,OACA,aACA,gBACA,YACA,WAEA,WAEA,SAEA,SACA,UAEA,UACA,QAGA,WAEA,SAMA,OAEA,OACA,WAQEtva,EAAQ,CACVmvE,OAAS,CACPogW,IAAY,IAAI/pb,OAAQ,cAAmC,MAC3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","file":"js/chunk-vendors.b7af6646.js","sourcesContent":["var Symbol = require('./_Symbol');\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 * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n  var isOwn = hasOwnProperty.call(value, symToStringTag),\n      tag = value[symToStringTag];\n\n  try {\n    value[symToStringTag] = undefined;\n    var unmasked = true;\n  } catch (e) {}\n\n  var result = nativeObjectToString.call(value);\n  if (unmasked) {\n    if (isOwn) {\n      value[symToStringTag] = tag;\n    } else {\n      delete value[symToStringTag];\n    }\n  }\n  return result;\n}\n\nmodule.exports = getRawTag;\n","const encodeUtf8 = require('encode-utf8')\nconst Mode = require('./mode')\n\nfunction ByteData (data) {\n  this.mode = Mode.BYTE\n  this.data = new Uint8Array(encodeUtf8(data))\n}\n\nByteData.getBitsLength = function getBitsLength (length) {\n  return length * 8\n}\n\nByteData.prototype.getLength = function getLength () {\n  return this.data.length\n}\n\nByteData.prototype.getBitsLength = function getBitsLength () {\n  return ByteData.getBitsLength(this.data.length)\n}\n\nByteData.prototype.write = function (bitBuffer) {\n  for (let i = 0, l = this.data.length; i < l; i++) {\n    bitBuffer.put(this.data[i], 8)\n  }\n}\n\nmodule.exports = ByteData\n","// browser shim for xmlhttprequest module\n\nvar hasCORS = require('has-cors');\nvar globalThis = require('./globalThis');\n\nmodule.exports = function (opts) {\n  var xdomain = opts.xdomain;\n\n  // scheme must be same when usign XDomainRequest\n  // http://blogs.msdn.com/b/ieinternals/archive/2010/05/13/xdomainrequest-restrictions-limitations-and-workarounds.aspx\n  var xscheme = opts.xscheme;\n\n  // XDomainRequest has a flow of not sending cookie, therefore it should be disabled as a default.\n  // https://github.com/Automattic/engine.io-client/pull/217\n  var enablesXDR = opts.enablesXDR;\n\n  // XMLHttpRequest can be disabled on IE\n  try {\n    if ('undefined' !== typeof XMLHttpRequest && (!xdomain || hasCORS)) {\n      return new XMLHttpRequest();\n    }\n  } catch (e) { }\n\n  // Use XDomainRequest for IE8 if enablesXDR is true\n  // because loading bar keeps flashing when using jsonp-polling\n  // https://github.com/yujiosaka/socke.io-ie8-loading-example\n  try {\n    if ('undefined' !== typeof XDomainRequest && !xscheme && enablesXDR) {\n      return new XDomainRequest();\n    }\n  } catch (e) { }\n\n  if (!xdomain) {\n    try {\n      return new globalThis[['Active'].concat('Object').join('X')]('Microsoft.XMLHTTP');\n    } catch (e) { }\n  }\n};\n","'use strict';\nvar LIBRARY = require('./_library');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar $iterCreate = require('./_iter-create');\nvar setToStringTag = require('./_set-to-string-tag');\nvar getPrototypeOf = require('./_object-gpo');\nvar ITERATOR = require('./_wks')('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n  $iterCreate(Constructor, NAME, next);\n  var getMethod = function (kind) {\n    if (!BUGGY && kind in proto) return proto[kind];\n    switch (kind) {\n      case KEYS: return function keys() { return new Constructor(this, kind); };\n      case VALUES: return function values() { return new Constructor(this, kind); };\n    } return function entries() { return new Constructor(this, kind); };\n  };\n  var TAG = NAME + ' Iterator';\n  var DEF_VALUES = DEFAULT == VALUES;\n  var VALUES_BUG = false;\n  var proto = Base.prototype;\n  var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n  var $default = $native || getMethod(DEFAULT);\n  var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n  var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n  var methods, key, IteratorPrototype;\n  // Fix native\n  if ($anyNative) {\n    IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n    if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n      // Set @@toStringTag to native iterators\n      setToStringTag(IteratorPrototype, TAG, true);\n      // fix for some old engines\n      if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n    }\n  }\n  // fix Array#{values, @@iterator}.name in V8 / FF\n  if (DEF_VALUES && $native && $native.name !== VALUES) {\n    VALUES_BUG = true;\n    $default = function values() { return $native.call(this); };\n  }\n  // Define iterator\n  if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n    hide(proto, ITERATOR, $default);\n  }\n  // Plug for library\n  Iterators[NAME] = $default;\n  Iterators[TAG] = returnThis;\n  if (DEFAULT) {\n    methods = {\n      values: DEF_VALUES ? $default : getMethod(VALUES),\n      keys: IS_SET ? $default : getMethod(KEYS),\n      entries: $entries\n    };\n    if (FORCED) for (key in methods) {\n      if (!(key in proto)) redefine(proto, key, methods[key]);\n    } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n  }\n  return methods;\n};\n","'use strict';\n\nvar alphabet = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_'.split('')\n  , length = 64\n  , map = {}\n  , seed = 0\n  , i = 0\n  , prev;\n\n/**\n * Return a string representing the specified number.\n *\n * @param {Number} num The number to convert.\n * @returns {String} The string representation of the number.\n * @api public\n */\nfunction encode(num) {\n  var encoded = '';\n\n  do {\n    encoded = alphabet[num % length] + encoded;\n    num = Math.floor(num / length);\n  } while (num > 0);\n\n  return encoded;\n}\n\n/**\n * Return the integer value specified by the given string.\n *\n * @param {String} str The string to convert.\n * @returns {Number} The integer value represented by the string.\n * @api public\n */\nfunction decode(str) {\n  var decoded = 0;\n\n  for (i = 0; i < str.length; i++) {\n    decoded = decoded * length + map[str.charAt(i)];\n  }\n\n  return decoded;\n}\n\n/**\n * Yeast: A tiny growing id generator.\n *\n * @returns {String} A unique id.\n * @api public\n */\nfunction yeast() {\n  var now = encode(+new Date());\n\n  if (now !== prev) return seed = 0, prev = now;\n  return now +'.'+ encode(seed++);\n}\n\n//\n// Map each character to its index.\n//\nfor (; i < length; i++) map[alphabet[i]] = i;\n\n//\n// Expose the `yeast`, `encode` and `decode` functions.\n//\nyeast.encode = encode;\nyeast.decode = decode;\nmodule.exports = yeast;\n","var toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n// true  -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n  return function (that, pos) {\n    var s = String(defined(that));\n    var i = toInteger(pos);\n    var l = s.length;\n    var a, b;\n    if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n    a = s.charCodeAt(i);\n    return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n      ? TO_STRING ? s.charAt(i) : a\n      : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n  };\n};\n","'use strict';\nvar at = require('./_string-at')(true);\n\n // `AdvanceStringIndex` abstract operation\n// https://tc39.github.io/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n  return index + (unicode ? at(S, index).length : 1);\n};\n","// Styles\nimport \"../../../src/components/VExpansionPanel/VExpansionPanel.sass\"; // Components\n\nimport { BaseItemGroup } from '../VItemGroup/VItemGroup'; // Utilities\n\nimport { breaking } from '../../util/console';\n/* @vue/component */\n\nexport default BaseItemGroup.extend({\n  name: 'v-expansion-panels',\n\n  provide() {\n    return {\n      expansionPanels: this\n    };\n  },\n\n  props: {\n    accordion: Boolean,\n    disabled: Boolean,\n    flat: Boolean,\n    hover: Boolean,\n    focusable: Boolean,\n    inset: Boolean,\n    popout: Boolean,\n    readonly: Boolean,\n    tile: Boolean\n  },\n  computed: {\n    classes() {\n      return { ...BaseItemGroup.options.computed.classes.call(this),\n        'v-expansion-panels': true,\n        'v-expansion-panels--accordion': this.accordion,\n        'v-expansion-panels--flat': this.flat,\n        'v-expansion-panels--hover': this.hover,\n        'v-expansion-panels--focusable': this.focusable,\n        'v-expansion-panels--inset': this.inset,\n        'v-expansion-panels--popout': this.popout,\n        'v-expansion-panels--tile': this.tile\n      };\n    }\n\n  },\n\n  created() {\n    /* istanbul ignore next */\n    if (this.$attrs.hasOwnProperty('expand')) {\n      breaking('expand', 'multiple', this);\n    }\n    /* istanbul ignore next */\n\n\n    if (Array.isArray(this.value) && this.value.length > 0 && typeof this.value[0] === 'boolean') {\n      breaking(':value=\"[true, false, true]\"', ':value=\"[0, 2]\"', this);\n    }\n  },\n\n  methods: {\n    updateItem(item, index) {\n      const value = this.getValue(item, index);\n      const nextValue = this.getValue(item, index + 1);\n      item.isActive = this.toggleMethod(value);\n      item.nextIsActive = this.toggleMethod(nextValue);\n    }\n\n  }\n});\n//# sourceMappingURL=VExpansionPanels.js.map","var isPrototype = require('./_isPrototype'),\n    nativeKeys = require('./_nativeKeys');\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 * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n  if (!isPrototype(object)) {\n    return nativeKeys(object);\n  }\n  var result = [];\n  for (var key in Object(object)) {\n    if (hasOwnProperty.call(object, key) && key != 'constructor') {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nmodule.exports = baseKeys;\n","const numeric = '[0-9]+'\nconst alphanumeric = '[A-Z $%*+\\\\-./:]+'\nlet kanji = '(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|' +\n  '[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|' +\n  '[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|' +\n  '[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+'\nkanji = kanji.replace(/u/g, '\\\\u')\n\nconst byte = '(?:(?![A-Z0-9 $%*+\\\\-./:]|' + kanji + ')(?:.|[\\r\\n]))+'\n\nexports.KANJI = new RegExp(kanji, 'g')\nexports.BYTE_KANJI = new RegExp('[^A-Z0-9 $%*+\\\\-./:]+', 'g')\nexports.BYTE = new RegExp(byte, 'g')\nexports.NUMERIC = new RegExp(numeric, 'g')\nexports.ALPHANUMERIC = new RegExp(alphanumeric, 'g')\n\nconst TEST_KANJI = new RegExp('^' + kanji + '$')\nconst TEST_NUMERIC = new RegExp('^' + numeric + '$')\nconst TEST_ALPHANUMERIC = new RegExp('^[A-Z0-9 $%*+\\\\-./:]+$')\n\nexports.testKanji = function testKanji (str) {\n  return TEST_KANJI.test(str)\n}\n\nexports.testNumeric = function testNumeric (str) {\n  return TEST_NUMERIC.test(str)\n}\n\nexports.testAlphanumeric = function testAlphanumeric (str) {\n  return TEST_ALPHANUMERIC.test(str)\n}\n","'use strict';\n\nvar base64_url_decode = require('./base64_url_decode');\n\nfunction InvalidTokenError(message) {\n  this.message = message;\n}\n\nInvalidTokenError.prototype = new Error();\nInvalidTokenError.prototype.name = 'InvalidTokenError';\n\nmodule.exports = function (token,options) {\n  if (typeof token !== 'string') {\n    throw new InvalidTokenError('Invalid token specified');\n  }\n\n  options = options || {};\n  var pos = options.header === true ? 0 : 1;\n  try {\n    return JSON.parse(base64_url_decode(token.split('.')[pos]));\n  } catch (e) {\n    throw new InvalidTokenError('Invalid token specified: ' + e.message);\n  }\n};\n\nmodule.exports.InvalidTokenError = InvalidTokenError;\n","var Symbol = require('./_Symbol'),\n    isArguments = require('./isArguments'),\n    isArray = require('./isArray');\n\n/** Built-in value references. */\nvar spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n  return isArray(value) || isArguments(value) ||\n    !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\nmodule.exports = isFlattenable;\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 mergeData from '../../util/mergeData';\n\nfunction mergeTransitions(dest = [], ...transitions) {\n  /* eslint-disable-next-line no-array-constructor */\n  return Array().concat(dest, ...transitions);\n}\n\nexport function createSimpleTransition(name, origin = 'top center 0', mode) {\n  return {\n    name,\n    functional: true,\n    props: {\n      group: {\n        type: Boolean,\n        default: false\n      },\n      hideOnLeave: {\n        type: Boolean,\n        default: false\n      },\n      leaveAbsolute: {\n        type: Boolean,\n        default: false\n      },\n      mode: {\n        type: String,\n        default: mode\n      },\n      origin: {\n        type: String,\n        default: origin\n      }\n    },\n\n    render(h, context) {\n      const tag = `transition${context.props.group ? '-group' : ''}`;\n      const data = {\n        props: {\n          name,\n          mode: context.props.mode\n        },\n        on: {\n          beforeEnter(el) {\n            el.style.transformOrigin = context.props.origin;\n            el.style.webkitTransformOrigin = context.props.origin;\n          }\n\n        }\n      };\n\n      if (context.props.leaveAbsolute) {\n        data.on.leave = mergeTransitions(data.on.leave, el => {\n          const {\n            offsetTop,\n            offsetLeft,\n            offsetWidth,\n            offsetHeight\n          } = el;\n          el._transitionInitialStyles = {\n            position: el.style.position,\n            top: el.style.top,\n            left: el.style.left,\n            width: el.style.width,\n            height: el.style.height\n          };\n          el.style.position = 'absolute';\n          el.style.top = offsetTop + 'px';\n          el.style.left = offsetLeft + 'px';\n          el.style.width = offsetWidth + 'px';\n          el.style.height = offsetHeight + 'px';\n        });\n        data.on.afterLeave = mergeTransitions(data.on.afterLeave, el => {\n          if (el && el._transitionInitialStyles) {\n            const {\n              position,\n              top,\n              left,\n              width,\n              height\n            } = el._transitionInitialStyles;\n            delete el._transitionInitialStyles;\n            el.style.position = position || '';\n            el.style.top = top || '';\n            el.style.left = left || '';\n            el.style.width = width || '';\n            el.style.height = height || '';\n          }\n        });\n      }\n\n      if (context.props.hideOnLeave) {\n        data.on.leave = mergeTransitions(data.on.leave, el => {\n          el.style.setProperty('display', 'none', 'important');\n        });\n      }\n\n      return h(tag, mergeData(context.data, data), context.children);\n    }\n\n  };\n}\nexport function createJavascriptTransition(name, functions, mode = 'in-out') {\n  return {\n    name,\n    functional: true,\n    props: {\n      mode: {\n        type: String,\n        default: mode\n      }\n    },\n\n    render(h, context) {\n      return h('transition', mergeData(context.data, {\n        props: {\n          name\n        },\n        on: functions\n      }), context.children);\n    }\n\n  };\n}\n//# sourceMappingURL=createTransition.js.map","import { upperFirst } from '../../util/helpers';\nexport default function (expandedParentClass = '', x = false) {\n  const sizeProperty = x ? 'width' : 'height';\n  const offsetProperty = `offset${upperFirst(sizeProperty)}`;\n  return {\n    beforeEnter(el) {\n      el._parent = el.parentNode;\n      el._initialStyle = {\n        transition: el.style.transition,\n        overflow: el.style.overflow,\n        [sizeProperty]: el.style[sizeProperty]\n      };\n    },\n\n    enter(el) {\n      const initialStyle = el._initialStyle;\n      el.style.setProperty('transition', 'none', 'important'); // Hide overflow to account for collapsed margins in the calculated height\n\n      el.style.overflow = 'hidden';\n      const offset = `${el[offsetProperty]}px`;\n      el.style[sizeProperty] = '0';\n      void el.offsetHeight; // force reflow\n\n      el.style.transition = initialStyle.transition;\n\n      if (expandedParentClass && el._parent) {\n        el._parent.classList.add(expandedParentClass);\n      }\n\n      requestAnimationFrame(() => {\n        el.style[sizeProperty] = offset;\n      });\n    },\n\n    afterEnter: resetStyles,\n    enterCancelled: resetStyles,\n\n    leave(el) {\n      el._initialStyle = {\n        transition: '',\n        overflow: el.style.overflow,\n        [sizeProperty]: el.style[sizeProperty]\n      };\n      el.style.overflow = 'hidden';\n      el.style[sizeProperty] = `${el[offsetProperty]}px`;\n      void el.offsetHeight; // force reflow\n\n      requestAnimationFrame(() => el.style[sizeProperty] = '0');\n    },\n\n    afterLeave,\n    leaveCancelled: afterLeave\n  };\n\n  function afterLeave(el) {\n    if (expandedParentClass && el._parent) {\n      el._parent.classList.remove(expandedParentClass);\n    }\n\n    resetStyles(el);\n  }\n\n  function resetStyles(el) {\n    const size = el._initialStyle[sizeProperty];\n    el.style.overflow = el._initialStyle.overflow;\n    if (size != null) el.style[sizeProperty] = size;\n    delete el._initialStyle;\n  }\n}\n//# sourceMappingURL=expand-transition.js.map","import { createSimpleTransition, createJavascriptTransition } from './createTransition';\nimport ExpandTransitionGenerator from './expand-transition'; // Component specific transitions\n\nexport const VCarouselTransition = createSimpleTransition('carousel-transition');\nexport const VCarouselReverseTransition = createSimpleTransition('carousel-reverse-transition');\nexport const VTabTransition = createSimpleTransition('tab-transition');\nexport const VTabReverseTransition = createSimpleTransition('tab-reverse-transition');\nexport const VMenuTransition = createSimpleTransition('menu-transition');\nexport const VFabTransition = createSimpleTransition('fab-transition', 'center center', 'out-in'); // Generic transitions\n\nexport const VDialogTransition = createSimpleTransition('dialog-transition');\nexport const VDialogBottomTransition = createSimpleTransition('dialog-bottom-transition');\nexport const VDialogTopTransition = createSimpleTransition('dialog-top-transition');\nexport const VFadeTransition = createSimpleTransition('fade-transition');\nexport const VScaleTransition = createSimpleTransition('scale-transition');\nexport const VScrollXTransition = createSimpleTransition('scroll-x-transition');\nexport const VScrollXReverseTransition = createSimpleTransition('scroll-x-reverse-transition');\nexport const VScrollYTransition = createSimpleTransition('scroll-y-transition');\nexport const VScrollYReverseTransition = createSimpleTransition('scroll-y-reverse-transition');\nexport const VSlideXTransition = createSimpleTransition('slide-x-transition');\nexport const VSlideXReverseTransition = createSimpleTransition('slide-x-reverse-transition');\nexport const VSlideYTransition = createSimpleTransition('slide-y-transition');\nexport const VSlideYReverseTransition = createSimpleTransition('slide-y-reverse-transition'); // Javascript transitions\n\nexport const VExpandTransition = createJavascriptTransition('expand-transition', ExpandTransitionGenerator());\nexport const VExpandXTransition = createJavascriptTransition('expand-x-transition', ExpandTransitionGenerator('', true));\nexport default {\n  $_vuetify_subcomponents: {\n    VCarouselTransition,\n    VCarouselReverseTransition,\n    VDialogTransition,\n    VDialogBottomTransition,\n    VDialogTopTransition,\n    VFabTransition,\n    VFadeTransition,\n    VMenuTransition,\n    VScaleTransition,\n    VScrollXTransition,\n    VScrollXReverseTransition,\n    VScrollYTransition,\n    VScrollYReverseTransition,\n    VSlideXTransition,\n    VSlideXReverseTransition,\n    VSlideYTransition,\n    VSlideYReverseTransition,\n    VTabReverseTransition,\n    VTabTransition,\n    VExpandTransition,\n    VExpandXTransition\n  }\n};\n//# sourceMappingURL=index.js.map","// Styles\nimport \"../../../src/components/VAlert/VAlert.sass\"; // Extensions\n\nimport VSheet from '../VSheet'; // Components\n\nimport VBtn from '../VBtn';\nimport VIcon from '../VIcon'; // Mixins\n\nimport Toggleable from '../../mixins/toggleable';\nimport Themeable from '../../mixins/themeable';\nimport Transitionable from '../../mixins/transitionable'; // Utilities\n\nimport mixins from '../../util/mixins';\nimport { breaking } from '../../util/console';\n/* @vue/component */\n\nexport default mixins(VSheet, Toggleable, Transitionable).extend({\n  name: 'v-alert',\n  props: {\n    border: {\n      type: String,\n\n      validator(val) {\n        return ['top', 'right', 'bottom', 'left'].includes(val);\n      }\n\n    },\n    closeLabel: {\n      type: String,\n      default: '$vuetify.close'\n    },\n    coloredBorder: Boolean,\n    dense: Boolean,\n    dismissible: Boolean,\n    closeIcon: {\n      type: String,\n      default: '$cancel'\n    },\n    icon: {\n      default: '',\n      type: [Boolean, String],\n\n      validator(val) {\n        return typeof val === 'string' || val === false;\n      }\n\n    },\n    outlined: Boolean,\n    prominent: Boolean,\n    text: Boolean,\n    type: {\n      type: String,\n\n      validator(val) {\n        return ['info', 'error', 'success', 'warning'].includes(val);\n      }\n\n    },\n    value: {\n      type: Boolean,\n      default: true\n    }\n  },\n  computed: {\n    __cachedBorder() {\n      if (!this.border) return null;\n      let data = {\n        staticClass: 'v-alert__border',\n        class: {\n          [`v-alert__border--${this.border}`]: true\n        }\n      };\n\n      if (this.coloredBorder) {\n        data = this.setBackgroundColor(this.computedColor, data);\n        data.class['v-alert__border--has-color'] = true;\n      }\n\n      return this.$createElement('div', data);\n    },\n\n    __cachedDismissible() {\n      if (!this.dismissible) return null;\n      const color = this.iconColor;\n      return this.$createElement(VBtn, {\n        staticClass: 'v-alert__dismissible',\n        props: {\n          color,\n          icon: true,\n          small: true\n        },\n        attrs: {\n          'aria-label': this.$vuetify.lang.t(this.closeLabel)\n        },\n        on: {\n          click: () => this.isActive = false\n        }\n      }, [this.$createElement(VIcon, {\n        props: {\n          color\n        }\n      }, this.closeIcon)]);\n    },\n\n    __cachedIcon() {\n      if (!this.computedIcon) return null;\n      return this.$createElement(VIcon, {\n        staticClass: 'v-alert__icon',\n        props: {\n          color: this.iconColor\n        }\n      }, this.computedIcon);\n    },\n\n    classes() {\n      const classes = { ...VSheet.options.computed.classes.call(this),\n        'v-alert--border': Boolean(this.border),\n        'v-alert--dense': this.dense,\n        'v-alert--outlined': this.outlined,\n        'v-alert--prominent': this.prominent,\n        'v-alert--text': this.text\n      };\n\n      if (this.border) {\n        classes[`v-alert--border-${this.border}`] = true;\n      }\n\n      return classes;\n    },\n\n    computedColor() {\n      return this.color || this.type;\n    },\n\n    computedIcon() {\n      if (this.icon === false) return false;\n      if (typeof this.icon === 'string' && this.icon) return this.icon;\n      if (!['error', 'info', 'success', 'warning'].includes(this.type)) return false;\n      return `$${this.type}`;\n    },\n\n    hasColoredIcon() {\n      return this.hasText || Boolean(this.border) && this.coloredBorder;\n    },\n\n    hasText() {\n      return this.text || this.outlined;\n    },\n\n    iconColor() {\n      return this.hasColoredIcon ? this.computedColor : undefined;\n    },\n\n    isDark() {\n      if (this.type && !this.coloredBorder && !this.outlined) return true;\n      return Themeable.options.computed.isDark.call(this);\n    }\n\n  },\n\n  created() {\n    /* istanbul ignore next */\n    if (this.$attrs.hasOwnProperty('outline')) {\n      breaking('outline', 'outlined', this);\n    }\n  },\n\n  methods: {\n    genWrapper() {\n      const children = [this.$slots.prepend || this.__cachedIcon, this.genContent(), this.__cachedBorder, this.$slots.append, this.$scopedSlots.close ? this.$scopedSlots.close({\n        toggle: this.toggle\n      }) : this.__cachedDismissible];\n      const data = {\n        staticClass: 'v-alert__wrapper'\n      };\n      return this.$createElement('div', data, children);\n    },\n\n    genContent() {\n      return this.$createElement('div', {\n        staticClass: 'v-alert__content'\n      }, this.$slots.default);\n    },\n\n    genAlert() {\n      let data = {\n        staticClass: 'v-alert',\n        attrs: {\n          role: 'alert'\n        },\n        on: this.listeners$,\n        class: this.classes,\n        style: this.styles,\n        directives: [{\n          name: 'show',\n          value: this.isActive\n        }]\n      };\n\n      if (!this.coloredBorder) {\n        const setColor = this.hasText ? this.setTextColor : this.setBackgroundColor;\n        data = setColor(this.computedColor, data);\n      }\n\n      return this.$createElement('div', data, [this.genWrapper()]);\n    },\n\n    /** @public */\n    toggle() {\n      this.isActive = !this.isActive;\n    }\n\n  },\n\n  render(h) {\n    const render = this.genAlert();\n    if (!this.transition) return render;\n    return h('transition', {\n      props: {\n        name: this.transition,\n        origin: this.origin,\n        mode: this.mode\n      }\n    }, [render]);\n  }\n\n});\n//# sourceMappingURL=VAlert.js.map","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n  return false;\n}\n\nmodule.exports = stubFalse;\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","/**\n * Module dependencies.\n */\n\nvar Transport = require('../transport');\nvar parser = require('engine.io-parser');\nvar parseqs = require('parseqs');\nvar inherit = require('component-inherit');\nvar yeast = require('yeast');\nvar debug = require('debug')('engine.io-client:websocket');\n\nvar BrowserWebSocket, NodeWebSocket;\n\nif (typeof WebSocket !== 'undefined') {\n  BrowserWebSocket = WebSocket;\n} else if (typeof self !== 'undefined') {\n  BrowserWebSocket = self.WebSocket || self.MozWebSocket;\n}\n\nif (typeof window === 'undefined') {\n  try {\n    NodeWebSocket = require('ws');\n  } catch (e) { }\n}\n\n/**\n * Get either the `WebSocket` or `MozWebSocket` globals\n * in the browser or try to resolve WebSocket-compatible\n * interface exposed by `ws` for Node-like environment.\n */\n\nvar WebSocketImpl = BrowserWebSocket || NodeWebSocket;\n\n/**\n * Module exports.\n */\n\nmodule.exports = WS;\n\n/**\n * WebSocket transport constructor.\n *\n * @api {Object} connection options\n * @api public\n */\n\nfunction WS (opts) {\n  var forceBase64 = (opts && opts.forceBase64);\n  if (forceBase64) {\n    this.supportsBinary = false;\n  }\n  this.perMessageDeflate = opts.perMessageDeflate;\n  this.usingBrowserWebSocket = BrowserWebSocket && !opts.forceNode;\n  this.protocols = opts.protocols;\n  if (!this.usingBrowserWebSocket) {\n    WebSocketImpl = NodeWebSocket;\n  }\n  Transport.call(this, opts);\n}\n\n/**\n * Inherits from Transport.\n */\n\ninherit(WS, Transport);\n\n/**\n * Transport name.\n *\n * @api public\n */\n\nWS.prototype.name = 'websocket';\n\n/*\n * WebSockets support binary\n */\n\nWS.prototype.supportsBinary = true;\n\n/**\n * Opens socket.\n *\n * @api private\n */\n\nWS.prototype.doOpen = function () {\n  if (!this.check()) {\n    // let probe timeout\n    return;\n  }\n\n  var uri = this.uri();\n  var protocols = this.protocols;\n\n  var opts = {};\n\n  if (!this.isReactNative) {\n    opts.agent = this.agent;\n    opts.perMessageDeflate = this.perMessageDeflate;\n\n    // SSL options for Node.js client\n    opts.pfx = this.pfx;\n    opts.key = this.key;\n    opts.passphrase = this.passphrase;\n    opts.cert = this.cert;\n    opts.ca = this.ca;\n    opts.ciphers = this.ciphers;\n    opts.rejectUnauthorized = this.rejectUnauthorized;\n  }\n\n  if (this.extraHeaders) {\n    opts.headers = this.extraHeaders;\n  }\n  if (this.localAddress) {\n    opts.localAddress = this.localAddress;\n  }\n\n  try {\n    this.ws =\n      this.usingBrowserWebSocket && !this.isReactNative\n        ? protocols\n          ? new WebSocketImpl(uri, protocols)\n          : new WebSocketImpl(uri)\n        : new WebSocketImpl(uri, protocols, opts);\n  } catch (err) {\n    return this.emit('error', err);\n  }\n\n  if (this.ws.binaryType === undefined) {\n    this.supportsBinary = false;\n  }\n\n  if (this.ws.supports && this.ws.supports.binary) {\n    this.supportsBinary = true;\n    this.ws.binaryType = 'nodebuffer';\n  } else {\n    this.ws.binaryType = 'arraybuffer';\n  }\n\n  this.addEventListeners();\n};\n\n/**\n * Adds event listeners to the socket\n *\n * @api private\n */\n\nWS.prototype.addEventListeners = function () {\n  var self = this;\n\n  this.ws.onopen = function () {\n    self.onOpen();\n  };\n  this.ws.onclose = function () {\n    self.onClose();\n  };\n  this.ws.onmessage = function (ev) {\n    self.onData(ev.data);\n  };\n  this.ws.onerror = function (e) {\n    self.onError('websocket error', e);\n  };\n};\n\n/**\n * Writes data to socket.\n *\n * @param {Array} array of packets.\n * @api private\n */\n\nWS.prototype.write = function (packets) {\n  var self = this;\n  this.writable = false;\n\n  // encodePacket efficient as it uses WS framing\n  // no need for encodePayload\n  var total = packets.length;\n  for (var i = 0, l = total; i < l; i++) {\n    (function (packet) {\n      parser.encodePacket(packet, self.supportsBinary, function (data) {\n        if (!self.usingBrowserWebSocket) {\n          // always create a new object (GH-437)\n          var opts = {};\n          if (packet.options) {\n            opts.compress = packet.options.compress;\n          }\n\n          if (self.perMessageDeflate) {\n            var len = 'string' === typeof data ? Buffer.byteLength(data) : data.length;\n            if (len < self.perMessageDeflate.threshold) {\n              opts.compress = false;\n            }\n          }\n        }\n\n        // Sometimes the websocket has already been closed but the browser didn't\n        // have a chance of informing us about it yet, in that case send will\n        // throw an error\n        try {\n          if (self.usingBrowserWebSocket) {\n            // TypeError is thrown when passing the second argument on Safari\n            self.ws.send(data);\n          } else {\n            self.ws.send(data, opts);\n          }\n        } catch (e) {\n          debug('websocket closed before onclose event');\n        }\n\n        --total || done();\n      });\n    })(packets[i]);\n  }\n\n  function done () {\n    self.emit('flush');\n\n    // fake drain\n    // defer to next tick to allow Socket to clear writeBuffer\n    setTimeout(function () {\n      self.writable = true;\n      self.emit('drain');\n    }, 0);\n  }\n};\n\n/**\n * Called upon close\n *\n * @api private\n */\n\nWS.prototype.onClose = function () {\n  Transport.prototype.onClose.call(this);\n};\n\n/**\n * Closes socket.\n *\n * @api private\n */\n\nWS.prototype.doClose = function () {\n  if (typeof this.ws !== 'undefined') {\n    this.ws.close();\n  }\n};\n\n/**\n * Generates uri for connection.\n *\n * @api private\n */\n\nWS.prototype.uri = function () {\n  var query = this.query || {};\n  var schema = this.secure ? 'wss' : 'ws';\n  var port = '';\n\n  // avoid port if default for schema\n  if (this.port && (('wss' === schema && Number(this.port) !== 443) ||\n    ('ws' === schema && Number(this.port) !== 80))) {\n    port = ':' + this.port;\n  }\n\n  // append timestamp to URI\n  if (this.timestampRequests) {\n    query[this.timestampParam] = yeast();\n  }\n\n  // communicate binary support capabilities\n  if (!this.supportsBinary) {\n    query.b64 = 1;\n  }\n\n  query = parseqs.encode(query);\n\n  // prepend ? to query\n  if (query.length) {\n    query = '?' + query;\n  }\n\n  var ipv6 = this.hostname.indexOf(':') !== -1;\n  return schema + '://' + (ipv6 ? '[' + this.hostname + ']' : this.hostname) + port + this.path + query;\n};\n\n/**\n * Feature detection for WebSocket.\n *\n * @return {Boolean} whether this transport is available.\n * @api public\n */\n\nWS.prototype.check = function () {\n  return !!WebSocketImpl && !('__initialize' in WebSocketImpl && this.name === WS.prototype.name);\n};\n","var isObject = require('./isObject');\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n *  equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n  return value === value && !isObject(value);\n}\n\nmodule.exports = isStrictComparable;\n","/**\n * Module dependencies.\n */\n\nvar Transport = require('../transport');\nvar parseqs = require('parseqs');\nvar parser = require('engine.io-parser');\nvar inherit = require('component-inherit');\nvar yeast = require('yeast');\nvar debug = require('debug')('engine.io-client:polling');\n\n/**\n * Module exports.\n */\n\nmodule.exports = Polling;\n\n/**\n * Is XHR2 supported?\n */\n\nvar hasXHR2 = (function () {\n  var XMLHttpRequest = require('xmlhttprequest-ssl');\n  var xhr = new XMLHttpRequest({ xdomain: false });\n  return null != xhr.responseType;\n})();\n\n/**\n * Polling interface.\n *\n * @param {Object} opts\n * @api private\n */\n\nfunction Polling (opts) {\n  var forceBase64 = (opts && opts.forceBase64);\n  if (!hasXHR2 || forceBase64) {\n    this.supportsBinary = false;\n  }\n  Transport.call(this, opts);\n}\n\n/**\n * Inherits from Transport.\n */\n\ninherit(Polling, Transport);\n\n/**\n * Transport name.\n */\n\nPolling.prototype.name = 'polling';\n\n/**\n * Opens the socket (triggers polling). We write a PING message to determine\n * when the transport is open.\n *\n * @api private\n */\n\nPolling.prototype.doOpen = function () {\n  this.poll();\n};\n\n/**\n * Pauses polling.\n *\n * @param {Function} callback upon buffers are flushed and transport is paused\n * @api private\n */\n\nPolling.prototype.pause = function (onPause) {\n  var self = this;\n\n  this.readyState = 'pausing';\n\n  function pause () {\n    debug('paused');\n    self.readyState = 'paused';\n    onPause();\n  }\n\n  if (this.polling || !this.writable) {\n    var total = 0;\n\n    if (this.polling) {\n      debug('we are currently polling - waiting to pause');\n      total++;\n      this.once('pollComplete', function () {\n        debug('pre-pause polling complete');\n        --total || pause();\n      });\n    }\n\n    if (!this.writable) {\n      debug('we are currently writing - waiting to pause');\n      total++;\n      this.once('drain', function () {\n        debug('pre-pause writing complete');\n        --total || pause();\n      });\n    }\n  } else {\n    pause();\n  }\n};\n\n/**\n * Starts polling cycle.\n *\n * @api public\n */\n\nPolling.prototype.poll = function () {\n  debug('polling');\n  this.polling = true;\n  this.doPoll();\n  this.emit('poll');\n};\n\n/**\n * Overloads onData to detect payloads.\n *\n * @api private\n */\n\nPolling.prototype.onData = function (data) {\n  var self = this;\n  debug('polling got data %s', data);\n  var callback = function (packet, index, total) {\n    // if its the first message we consider the transport open\n    if ('opening' === self.readyState && packet.type === 'open') {\n      self.onOpen();\n    }\n\n    // if its a close packet, we close the ongoing requests\n    if ('close' === packet.type) {\n      self.onClose();\n      return false;\n    }\n\n    // otherwise bypass onData and handle the message\n    self.onPacket(packet);\n  };\n\n  // decode payload\n  parser.decodePayload(data, this.socket.binaryType, callback);\n\n  // if an event did not trigger closing\n  if ('closed' !== this.readyState) {\n    // if we got data we're not polling\n    this.polling = false;\n    this.emit('pollComplete');\n\n    if ('open' === this.readyState) {\n      this.poll();\n    } else {\n      debug('ignoring poll - transport state \"%s\"', this.readyState);\n    }\n  }\n};\n\n/**\n * For polling, send a close packet.\n *\n * @api private\n */\n\nPolling.prototype.doClose = function () {\n  var self = this;\n\n  function close () {\n    debug('writing close packet');\n    self.write([{ type: 'close' }]);\n  }\n\n  if ('open' === this.readyState) {\n    debug('transport open - closing');\n    close();\n  } else {\n    // in case we're trying to close while\n    // handshaking is in progress (GH-164)\n    debug('transport not open - deferring close');\n    this.once('open', close);\n  }\n};\n\n/**\n * Writes a packets payload.\n *\n * @param {Array} data packets\n * @param {Function} drain callback\n * @api private\n */\n\nPolling.prototype.write = function (packets) {\n  var self = this;\n  this.writable = false;\n  var callbackfn = function () {\n    self.writable = true;\n    self.emit('drain');\n  };\n\n  parser.encodePayload(packets, this.supportsBinary, function (data) {\n    self.doWrite(data, callbackfn);\n  });\n};\n\n/**\n * Generates uri for connection.\n *\n * @api private\n */\n\nPolling.prototype.uri = function () {\n  var query = this.query || {};\n  var schema = this.secure ? 'https' : 'http';\n  var port = '';\n\n  // cache busting is forced\n  if (false !== this.timestampRequests) {\n    query[this.timestampParam] = yeast();\n  }\n\n  if (!this.supportsBinary && !query.sid) {\n    query.b64 = 1;\n  }\n\n  query = parseqs.encode(query);\n\n  // avoid port if default for schema\n  if (this.port && (('https' === schema && Number(this.port) !== 443) ||\n     ('http' === schema && Number(this.port) !== 80))) {\n    port = ':' + this.port;\n  }\n\n  // prepend ? to query\n  if (query.length) {\n    query = '?' + query;\n  }\n\n  var ipv6 = this.hostname.indexOf(':') !== -1;\n  return schema + '://' + (ipv6 ? '[' + this.hostname + ']' : this.hostname) + port + this.path + query;\n};\n","// https://github.com/tc39/proposal-promise-finally\n'use strict';\nvar $export = require('./_export');\nvar core = require('./_core');\nvar global = require('./_global');\nvar speciesConstructor = require('./_species-constructor');\nvar promiseResolve = require('./_promise-resolve');\n\n$export($export.P + $export.R, 'Promise', { 'finally': function (onFinally) {\n  var C = speciesConstructor(this, core.Promise || global.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 * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n  var index = fromIndex - 1,\n      length = array.length;\n\n  while (++index < length) {\n    if (array[index] === value) {\n      return index;\n    }\n  }\n  return -1;\n}\n\nmodule.exports = strictIndexOf;\n","/**\n * Module requirements.\n */\n\nvar Polling = require('./polling');\nvar inherit = require('component-inherit');\nvar globalThis = require('../globalThis');\n\n/**\n * Module exports.\n */\n\nmodule.exports = JSONPPolling;\n\n/**\n * Cached regular expressions.\n */\n\nvar rNewline = /\\n/g;\nvar rEscapedNewline = /\\\\n/g;\n\n/**\n * Global JSONP callbacks.\n */\n\nvar callbacks;\n\n/**\n * Noop.\n */\n\nfunction empty () { }\n\n/**\n * JSONP Polling constructor.\n *\n * @param {Object} opts.\n * @api public\n */\n\nfunction JSONPPolling (opts) {\n  Polling.call(this, opts);\n\n  this.query = this.query || {};\n\n  // define global callbacks array if not present\n  // we do this here (lazily) to avoid unneeded global pollution\n  if (!callbacks) {\n    // we need to consider multiple engines in the same page\n    callbacks = globalThis.___eio = (globalThis.___eio || []);\n  }\n\n  // callback identifier\n  this.index = callbacks.length;\n\n  // add callback to jsonp global\n  var self = this;\n  callbacks.push(function (msg) {\n    self.onData(msg);\n  });\n\n  // append to query string\n  this.query.j = this.index;\n\n  // prevent spurious errors from being emitted when the window is unloaded\n  if (typeof addEventListener === 'function') {\n    addEventListener('beforeunload', function () {\n      if (self.script) self.script.onerror = empty;\n    }, false);\n  }\n}\n\n/**\n * Inherits from Polling.\n */\n\ninherit(JSONPPolling, Polling);\n\n/*\n * JSONP only supports binary as base64 encoded strings\n */\n\nJSONPPolling.prototype.supportsBinary = false;\n\n/**\n * Closes the socket.\n *\n * @api private\n */\n\nJSONPPolling.prototype.doClose = function () {\n  if (this.script) {\n    this.script.parentNode.removeChild(this.script);\n    this.script = null;\n  }\n\n  if (this.form) {\n    this.form.parentNode.removeChild(this.form);\n    this.form = null;\n    this.iframe = null;\n  }\n\n  Polling.prototype.doClose.call(this);\n};\n\n/**\n * Starts a poll cycle.\n *\n * @api private\n */\n\nJSONPPolling.prototype.doPoll = function () {\n  var self = this;\n  var script = document.createElement('script');\n\n  if (this.script) {\n    this.script.parentNode.removeChild(this.script);\n    this.script = null;\n  }\n\n  script.async = true;\n  script.src = this.uri();\n  script.onerror = function (e) {\n    self.onError('jsonp poll error', e);\n  };\n\n  var insertAt = document.getElementsByTagName('script')[0];\n  if (insertAt) {\n    insertAt.parentNode.insertBefore(script, insertAt);\n  } else {\n    (document.head || document.body).appendChild(script);\n  }\n  this.script = script;\n\n  var isUAgecko = 'undefined' !== typeof navigator && /gecko/i.test(navigator.userAgent);\n\n  if (isUAgecko) {\n    setTimeout(function () {\n      var iframe = document.createElement('iframe');\n      document.body.appendChild(iframe);\n      document.body.removeChild(iframe);\n    }, 100);\n  }\n};\n\n/**\n * Writes with a hidden iframe.\n *\n * @param {String} data to send\n * @param {Function} called upon flush.\n * @api private\n */\n\nJSONPPolling.prototype.doWrite = function (data, fn) {\n  var self = this;\n\n  if (!this.form) {\n    var form = document.createElement('form');\n    var area = document.createElement('textarea');\n    var id = this.iframeId = 'eio_iframe_' + this.index;\n    var iframe;\n\n    form.className = 'socketio';\n    form.style.position = 'absolute';\n    form.style.top = '-1000px';\n    form.style.left = '-1000px';\n    form.target = id;\n    form.method = 'POST';\n    form.setAttribute('accept-charset', 'utf-8');\n    area.name = 'd';\n    form.appendChild(area);\n    document.body.appendChild(form);\n\n    this.form = form;\n    this.area = area;\n  }\n\n  this.form.action = this.uri();\n\n  function complete () {\n    initIframe();\n    fn();\n  }\n\n  function initIframe () {\n    if (self.iframe) {\n      try {\n        self.form.removeChild(self.iframe);\n      } catch (e) {\n        self.onError('jsonp polling iframe removal error', e);\n      }\n    }\n\n    try {\n      // ie6 dynamic iframes with target=\"\" support (thanks Chris Lambacher)\n      var html = '<iframe src=\"javascript:0\" name=\"' + self.iframeId + '\">';\n      iframe = document.createElement(html);\n    } catch (e) {\n      iframe = document.createElement('iframe');\n      iframe.name = self.iframeId;\n      iframe.src = 'javascript:0';\n    }\n\n    iframe.id = self.iframeId;\n\n    self.form.appendChild(iframe);\n    self.iframe = iframe;\n  }\n\n  initIframe();\n\n  // escape \\n to prevent it from being converted into \\r\\n by some UAs\n  // double escaping is required for escaped new lines because unescaping of new lines can be done safely on server-side\n  data = data.replace(rEscapedNewline, '\\\\\\n');\n  this.area.value = data.replace(rNewline, '\\\\n');\n\n  try {\n    this.form.submit();\n  } catch (e) {}\n\n  if (this.iframe.attachEvent) {\n    this.iframe.onreadystatechange = function () {\n      if (self.iframe.readyState === 'complete') {\n        complete();\n      }\n    };\n  } else {\n    this.iframe.onload = complete;\n  }\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","\n/**\n * Expose `Backoff`.\n */\n\nmodule.exports = Backoff;\n\n/**\n * Initialize backoff timer with `opts`.\n *\n * - `min` initial timeout in milliseconds [100]\n * - `max` max timeout [10000]\n * - `jitter` [0]\n * - `factor` [2]\n *\n * @param {Object} opts\n * @api public\n */\n\nfunction Backoff(opts) {\n  opts = opts || {};\n  this.ms = opts.min || 100;\n  this.max = opts.max || 10000;\n  this.factor = opts.factor || 2;\n  this.jitter = opts.jitter > 0 && opts.jitter <= 1 ? opts.jitter : 0;\n  this.attempts = 0;\n}\n\n/**\n * Return the backoff duration.\n *\n * @return {Number}\n * @api public\n */\n\nBackoff.prototype.duration = function(){\n  var ms = this.ms * Math.pow(this.factor, this.attempts++);\n  if (this.jitter) {\n    var rand =  Math.random();\n    var deviation = Math.floor(rand * this.jitter * ms);\n    ms = (Math.floor(rand * 10) & 1) == 0  ? ms - deviation : ms + deviation;\n  }\n  return Math.min(ms, this.max) | 0;\n};\n\n/**\n * Reset the number of attempts.\n *\n * @api public\n */\n\nBackoff.prototype.reset = function(){\n  this.attempts = 0;\n};\n\n/**\n * Set the minimum duration\n *\n * @api public\n */\n\nBackoff.prototype.setMin = function(min){\n  this.ms = min;\n};\n\n/**\n * Set the maximum duration\n *\n * @api public\n */\n\nBackoff.prototype.setMax = function(max){\n  this.max = max;\n};\n\n/**\n * Set the jitter\n *\n * @api public\n */\n\nBackoff.prototype.setJitter = function(jitter){\n  this.jitter = jitter;\n};\n\n","'use strict';\n// 21.2.5.3 get RegExp.prototype.flags\nvar anObject = require('./_an-object');\nmodule.exports = function () {\n  var that = anObject(this);\n  var result = '';\n  if (that.global) result += 'g';\n  if (that.ignoreCase) result += 'i';\n  if (that.multiline) result += 'm';\n  if (that.unicode) result += 'u';\n  if (that.sticky) result += 'y';\n  return result;\n};\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","/* eslint-disable no-console, local-rules/disallow-side-effects */\n/**\n * Keep references on console methods to avoid triggering patched behaviors\n *\n * NB: in some setup, console could already be patched by another SDK.\n * In this case, some display messages can be sent by the other SDK\n * but we should be safe from infinite loop nonetheless.\n */\nexport var ConsoleApiName = {\n    log: 'log',\n    debug: 'debug',\n    info: 'info',\n    warn: 'warn',\n    error: 'error',\n};\nexport var display = function (api) {\n    var args = [];\n    for (var _i = 1; _i < arguments.length; _i++) {\n        args[_i - 1] = arguments[_i];\n    }\n    if (!Object.prototype.hasOwnProperty.call(ConsoleApiName, api)) {\n        api = ConsoleApiName.log;\n    }\n    display[api].apply(display, args);\n};\ndisplay.debug = console.debug.bind(console);\ndisplay.log = console.log.bind(console);\ndisplay.info = console.info.bind(console);\ndisplay.warn = console.warn.bind(console);\ndisplay.error = console.error.bind(console);\n//# sourceMappingURL=display.js.map","import { display } from './display';\nexport function catchUserErrors(fn, errorMsg) {\n    return function () {\n        var args = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            args[_i] = arguments[_i];\n        }\n        try {\n            return fn.apply(void 0, args);\n        }\n        catch (err) {\n            display.error(errorMsg, err);\n        }\n    };\n}\n//# sourceMappingURL=catchUserErrors.js.map","var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n    if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n        if (ar || !(i in from)) {\n            if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n            ar[i] = from[i];\n        }\n    }\n    return to.concat(ar || Array.prototype.slice.call(from));\n};\nimport { ConsoleApiName, display } from './display';\nvar onMonitorErrorCollected;\nvar debugMode = false;\nexport function startMonitorErrorCollection(newOnMonitorErrorCollected) {\n    onMonitorErrorCollected = newOnMonitorErrorCollected;\n}\nexport function setDebugMode(newDebugMode) {\n    debugMode = newDebugMode;\n}\nexport function resetMonitor() {\n    onMonitorErrorCollected = undefined;\n    debugMode = false;\n}\nexport function monitored(_, __, descriptor) {\n    var originalMethod = descriptor.value;\n    descriptor.value = function () {\n        var args = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            args[_i] = arguments[_i];\n        }\n        var decorated = onMonitorErrorCollected ? monitor(originalMethod) : originalMethod;\n        return decorated.apply(this, args);\n    };\n}\nexport function monitor(fn) {\n    return function () {\n        // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n        return callMonitored(fn, this, arguments);\n    }; // consider output type has input type\n}\nexport function callMonitored(fn, context, args) {\n    try {\n        // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n        return fn.apply(context, args);\n    }\n    catch (e) {\n        displayIfDebugEnabled(ConsoleApiName.error, e);\n        if (onMonitorErrorCollected) {\n            try {\n                onMonitorErrorCollected(e);\n            }\n            catch (e) {\n                displayIfDebugEnabled(ConsoleApiName.error, e);\n            }\n        }\n    }\n}\nexport function displayIfDebugEnabled(api) {\n    var args = [];\n    for (var _i = 1; _i < arguments.length; _i++) {\n        args[_i - 1] = arguments[_i];\n    }\n    if (debugMode) {\n        display.apply(void 0, __spreadArray([api, '[MONITOR]'], args, false));\n    }\n}\n//# sourceMappingURL=monitor.js.map","import { display } from './display';\nimport { monitor } from './monitor';\nexport var ONE_SECOND = 1000;\nexport var ONE_MINUTE = 60 * ONE_SECOND;\nexport var ONE_HOUR = 60 * ONE_MINUTE;\nexport var ONE_DAY = 24 * ONE_HOUR;\nexport var ONE_YEAR = 365 * ONE_DAY;\nexport var ONE_KIBI_BYTE = 1024;\nexport var ONE_MEBI_BYTE = 1024 * ONE_KIBI_BYTE;\n// use lodash API\nexport function throttle(fn, wait, options) {\n    var needLeadingExecution = options && options.leading !== undefined ? options.leading : true;\n    var needTrailingExecution = options && options.trailing !== undefined ? options.trailing : true;\n    var inWaitPeriod = false;\n    var pendingExecutionWithParameters;\n    var pendingTimeoutId;\n    return {\n        throttled: function () {\n            var parameters = [];\n            for (var _i = 0; _i < arguments.length; _i++) {\n                parameters[_i] = arguments[_i];\n            }\n            if (inWaitPeriod) {\n                pendingExecutionWithParameters = parameters;\n                return;\n            }\n            if (needLeadingExecution) {\n                fn.apply(void 0, parameters);\n            }\n            else {\n                pendingExecutionWithParameters = parameters;\n            }\n            inWaitPeriod = true;\n            pendingTimeoutId = setTimeout(function () {\n                if (needTrailingExecution && pendingExecutionWithParameters) {\n                    fn.apply(void 0, pendingExecutionWithParameters);\n                }\n                inWaitPeriod = false;\n                pendingExecutionWithParameters = undefined;\n            }, wait);\n        },\n        cancel: function () {\n            clearTimeout(pendingTimeoutId);\n            inWaitPeriod = false;\n            pendingExecutionWithParameters = undefined;\n        },\n    };\n}\nexport function assign(target) {\n    var toAssign = [];\n    for (var _i = 1; _i < arguments.length; _i++) {\n        toAssign[_i - 1] = arguments[_i];\n    }\n    toAssign.forEach(function (source) {\n        for (var key in source) {\n            if (Object.prototype.hasOwnProperty.call(source, key)) {\n                target[key] = source[key];\n            }\n        }\n    });\n    return target;\n}\nexport function shallowClone(object) {\n    return assign({}, object);\n}\n/**\n * UUID v4\n * from https://gist.github.com/jed/982883\n */\nexport function generateUUID(placeholder) {\n    return placeholder\n        ? // eslint-disable-next-line  no-bitwise\n            (parseInt(placeholder, 10) ^ ((Math.random() * 16) >> (parseInt(placeholder, 10) / 4))).toString(16)\n        : \"\".concat(1e7, \"-\").concat(1e3, \"-\").concat(4e3, \"-\").concat(8e3, \"-\").concat(1e11).replace(/[018]/g, generateUUID);\n}\n/**\n * Return true if the draw is successful\n * @param threshold between 0 and 100\n */\nexport function performDraw(threshold) {\n    return threshold !== 0 && Math.random() * 100 <= threshold;\n}\nexport function round(num, decimals) {\n    return +num.toFixed(decimals);\n}\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nexport function noop() { }\n/**\n * Custom implementation of JSON.stringify that ignores some toJSON methods. We need to do that\n * because some sites badly override toJSON on certain objects. Removing all toJSON methods from\n * nested values would be too costly, so we just detach them from the root value, and native classes\n * used to build JSON values (Array and Object).\n *\n * Note: this still assumes that JSON.stringify is correct.\n */\nexport function jsonStringify(value, replacer, space) {\n    if (typeof value !== 'object' || value === null) {\n        return JSON.stringify(value);\n    }\n    // Note: The order matter here. We need to detach toJSON methods on parent classes before their\n    // subclasses.\n    var restoreObjectPrototypeToJson = detachToJsonMethod(Object.prototype);\n    var restoreArrayPrototypeToJson = detachToJsonMethod(Array.prototype);\n    var restoreValuePrototypeToJson = detachToJsonMethod(Object.getPrototypeOf(value));\n    var restoreValueToJson = detachToJsonMethod(value);\n    try {\n        return JSON.stringify(value, replacer, space);\n    }\n    catch (_a) {\n        return '<error: unable to serialize object>';\n    }\n    finally {\n        restoreObjectPrototypeToJson();\n        restoreArrayPrototypeToJson();\n        restoreValuePrototypeToJson();\n        restoreValueToJson();\n    }\n}\nfunction detachToJsonMethod(value) {\n    var object = value;\n    var objectToJson = object.toJSON;\n    if (objectToJson) {\n        delete object.toJSON;\n        return function () {\n            object.toJSON = objectToJson;\n        };\n    }\n    return noop;\n}\nexport function includes(candidate, search) {\n    return candidate.indexOf(search) !== -1;\n}\nexport function arrayFrom(arrayLike) {\n    if (Array.from) {\n        return Array.from(arrayLike);\n    }\n    var array = [];\n    if (arrayLike instanceof Set) {\n        arrayLike.forEach(function (item) { return array.push(item); });\n    }\n    else {\n        for (var i = 0; i < arrayLike.length; i++) {\n            array.push(arrayLike[i]);\n        }\n    }\n    return array;\n}\nexport function find(array, predicate) {\n    for (var i = 0; i < array.length; i += 1) {\n        var item = array[i];\n        if (predicate(item, i)) {\n            return item;\n        }\n    }\n    return undefined;\n}\nexport function findLast(array, predicate) {\n    for (var i = array.length - 1; i >= 0; i -= 1) {\n        var item = array[i];\n        if (predicate(item, i, array)) {\n            return item;\n        }\n    }\n    return undefined;\n}\nexport function isPercentage(value) {\n    return isNumber(value) && value >= 0 && value <= 100;\n}\nexport function isNumber(value) {\n    return typeof value === 'number';\n}\nexport function objectValues(object) {\n    return Object.keys(object).map(function (key) { return object[key]; });\n}\nexport function objectHasValue(object, value) {\n    return Object.keys(object).some(function (key) { return object[key] === value; });\n}\nexport function objectEntries(object) {\n    return Object.keys(object).map(function (key) { return [key, object[key]]; });\n}\nexport function isEmptyObject(object) {\n    return Object.keys(object).length === 0;\n}\nexport function mapValues(object, fn) {\n    var newObject = {};\n    for (var _i = 0, _a = Object.keys(object); _i < _a.length; _i++) {\n        var key = _a[_i];\n        newObject[key] = fn(object[key]);\n    }\n    return newObject;\n}\nexport function startsWith(candidate, search) {\n    return candidate.slice(0, search.length) === search;\n}\nexport function endsWith(candidate, search) {\n    return candidate.slice(-search.length) === search;\n}\n/**\n * inspired by https://mathiasbynens.be/notes/globalthis\n */\nexport function getGlobalObject() {\n    if (typeof globalThis === 'object') {\n        return globalThis;\n    }\n    Object.defineProperty(Object.prototype, '_dd_temp_', {\n        get: function () {\n            return this;\n        },\n        configurable: true,\n    });\n    // @ts-ignore _dd_temp is defined using defineProperty\n    var globalObject = _dd_temp_;\n    // @ts-ignore _dd_temp is defined using defineProperty\n    delete Object.prototype._dd_temp_;\n    if (typeof globalObject !== 'object') {\n        // on safari _dd_temp_ is available on window but not globally\n        // fallback on other browser globals check\n        if (typeof self === 'object') {\n            globalObject = self;\n        }\n        else if (typeof window === 'object') {\n            globalObject = window;\n        }\n        else {\n            globalObject = {};\n        }\n    }\n    return globalObject;\n}\nexport function getLocationOrigin() {\n    return getLinkElementOrigin(window.location);\n}\n/**\n * IE fallback\n * https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils/origin\n */\nexport function getLinkElementOrigin(element) {\n    if (element.origin) {\n        return element.origin;\n    }\n    var sanitizedHost = element.host.replace(/(:80|:443)$/, '');\n    return \"\".concat(element.protocol, \"//\").concat(sanitizedHost);\n}\nexport function findCommaSeparatedValue(rawString, name) {\n    var regex = new RegExp(\"(?:^|;)\\\\s*\".concat(name, \"\\\\s*=\\\\s*([^;]+)\"));\n    var matches = regex.exec(rawString);\n    return matches ? matches[1] : undefined;\n}\nexport function safeTruncate(candidate, length, suffix) {\n    if (suffix === void 0) { suffix = ''; }\n    var lastChar = candidate.charCodeAt(length - 1);\n    var isLastCharSurrogatePair = lastChar >= 0xd800 && lastChar <= 0xdbff;\n    var correctedLength = isLastCharSurrogatePair ? length + 1 : length;\n    if (candidate.length <= correctedLength)\n        return candidate;\n    return \"\".concat(candidate.slice(0, correctedLength)).concat(suffix);\n}\n/**\n * Add an event listener to an event emitter object (Window, Element, mock object...).  This provides\n * a few conveniences compared to using `element.addEventListener` directly:\n *\n * * supports IE11 by: using an option object only if needed and emulating the `once` option\n *\n * * wraps the listener with a `monitor` function\n *\n * * returns a `stop` function to remove the listener\n */\nexport function addEventListener(emitter, event, listener, options) {\n    return addEventListeners(emitter, [event], listener, options);\n}\n/**\n * Add event listeners to an event emitter object (Window, Element, mock object...).  This provides\n * a few conveniences compared to using `element.addEventListener` directly:\n *\n * * supports IE11 by: using an option object only if needed and emulating the `once` option\n *\n * * wraps the listener with a `monitor` function\n *\n * * returns a `stop` function to remove the listener\n *\n * * with `once: true`, the listener will be called at most once, even if different events are listened\n */\nexport function addEventListeners(emitter, events, listener, _a) {\n    var _b = _a === void 0 ? {} : _a, once = _b.once, capture = _b.capture, passive = _b.passive;\n    var wrappedListener = monitor(once\n        ? function (event) {\n            stop();\n            listener(event);\n        }\n        : listener);\n    var options = passive ? { capture: capture, passive: passive } : capture;\n    events.forEach(function (event) { return emitter.addEventListener(event, wrappedListener, options); });\n    var stop = function () { return events.forEach(function (event) { return emitter.removeEventListener(event, wrappedListener, options); }); };\n    return {\n        stop: stop,\n    };\n}\nexport function elementMatches(element, selector) {\n    if (element.matches) {\n        return element.matches(selector);\n    }\n    // IE11 support\n    if (element.msMatchesSelector) {\n        return element.msMatchesSelector(selector);\n    }\n    return false;\n}\nexport function runOnReadyState(expectedReadyState, callback) {\n    if (document.readyState === expectedReadyState || document.readyState === 'complete') {\n        callback();\n    }\n    else {\n        var eventName = expectedReadyState === 'complete' ? \"load\" /* LOAD */ : \"DOMContentLoaded\" /* DOM_CONTENT_LOADED */;\n        addEventListener(window, eventName, callback, { once: true });\n    }\n}\n/**\n * Similar to `typeof`, but distinguish plain objects from `null` and arrays\n */\nexport function getType(value) {\n    if (value === null) {\n        return 'null';\n    }\n    if (Array.isArray(value)) {\n        return 'array';\n    }\n    return typeof value;\n}\nfunction createCircularReferenceChecker() {\n    if (typeof WeakSet !== 'undefined') {\n        var set_1 = new WeakSet();\n        return {\n            hasAlreadyBeenSeen: function (value) {\n                var has = set_1.has(value);\n                if (!has) {\n                    set_1.add(value);\n                }\n                return has;\n            },\n        };\n    }\n    var array = [];\n    return {\n        hasAlreadyBeenSeen: function (value) {\n            var has = array.indexOf(value) >= 0;\n            if (!has) {\n                array.push(value);\n            }\n            return has;\n        },\n    };\n}\n/**\n * Iterate over source and affect its sub values into destination, recursively.\n * If the source and destination can't be merged, return source.\n */\nexport function mergeInto(destination, source, circularReferenceChecker) {\n    if (circularReferenceChecker === void 0) { circularReferenceChecker = createCircularReferenceChecker(); }\n    // ignore the source if it is undefined\n    if (source === undefined) {\n        return destination;\n    }\n    if (typeof source !== 'object' || source === null) {\n        // primitive values - just return source\n        return source;\n    }\n    else if (source instanceof Date) {\n        return new Date(source.getTime());\n    }\n    else if (source instanceof RegExp) {\n        var flags = source.flags ||\n            // old browsers compatibility\n            [\n                source.global ? 'g' : '',\n                source.ignoreCase ? 'i' : '',\n                source.multiline ? 'm' : '',\n                source.sticky ? 'y' : '',\n                source.unicode ? 'u' : '',\n            ].join('');\n        return new RegExp(source.source, flags);\n    }\n    if (circularReferenceChecker.hasAlreadyBeenSeen(source)) {\n        // remove circular references\n        return undefined;\n    }\n    else if (Array.isArray(source)) {\n        var merged_1 = Array.isArray(destination) ? destination : [];\n        for (var i = 0; i < source.length; ++i) {\n            merged_1[i] = mergeInto(merged_1[i], source[i], circularReferenceChecker);\n        }\n        return merged_1;\n    }\n    var merged = getType(destination) === 'object' ? destination : {};\n    for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n            merged[key] = mergeInto(merged[key], source[key], circularReferenceChecker);\n        }\n    }\n    return merged;\n}\n/**\n * A simplistic implementation of a deep clone algorithm.\n * Caveats:\n * - It doesn't maintain prototype chains - don't use with instances of custom classes.\n * - It doesn't handle Map and Set\n */\nexport function deepClone(value) {\n    return mergeInto(undefined, value);\n}\nexport function combine() {\n    var sources = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        sources[_i] = arguments[_i];\n    }\n    var destination;\n    for (var _a = 0, sources_1 = sources; _a < sources_1.length; _a++) {\n        var source = sources_1[_a];\n        // Ignore any undefined or null sources.\n        if (source === undefined || source === null) {\n            continue;\n        }\n        destination = mergeInto(destination, source);\n    }\n    return destination;\n}\nexport function requestIdleCallback(callback, opts) {\n    // Use 'requestIdleCallback' when available: it will throttle the mutation processing if the\n    // browser is busy rendering frames (ex: when frames are below 60fps). When not available, the\n    // fallback on 'requestAnimationFrame' will still ensure the mutations are processed after any\n    // browser rendering process (Layout, Recalculate Style, etc.), so we can serialize DOM nodes\n    // efficiently.\n    if (window.requestIdleCallback) {\n        var id_1 = window.requestIdleCallback(monitor(callback), opts);\n        return function () { return window.cancelIdleCallback(id_1); };\n    }\n    var id = window.requestAnimationFrame(monitor(callback));\n    return function () { return window.cancelAnimationFrame(id); };\n}\nexport function removeDuplicates(array) {\n    var set = new Set();\n    array.forEach(function (item) { return set.add(item); });\n    return arrayFrom(set);\n}\nexport function matchList(list, value) {\n    return list.some(function (item) {\n        if (typeof item === 'function') {\n            try {\n                return item(value);\n            }\n            catch (e) {\n                display.error(e);\n                return false;\n            }\n        }\n        if (item instanceof RegExp) {\n            return item.test(value);\n        }\n        return item === value;\n    });\n}\n// https://github.com/jquery/jquery/blob/a684e6ba836f7c553968d7d026ed7941e1a612d8/src/selector/escapeSelector.js\nexport function cssEscape(str) {\n    if (window.CSS && window.CSS.escape) {\n        return window.CSS.escape(str);\n    }\n    // eslint-disable-next-line no-control-regex\n    return str.replace(/([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\x80-\\uFFFF\\w-]/g, function (ch, asCodePoint) {\n        if (asCodePoint) {\n            // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n            if (ch === '\\0') {\n                return '\\uFFFD';\n            }\n            // Control characters and (dependent upon position) numbers get escaped as code points\n            return \"\".concat(ch.slice(0, -1), \"\\\\\").concat(ch.charCodeAt(ch.length - 1).toString(16), \" \");\n        }\n        // Other potentially-special ASCII characters get backslash-escaped\n        return \"\\\\\".concat(ch);\n    });\n}\n//# sourceMappingURL=utils.js.map","import { catchUserErrors } from '../tools/catchUserErrors';\nimport { setDebugMode } from '../tools/monitor';\nimport { assign } from '../tools/utils';\nexport function makePublicApi(stub) {\n    var publicApi = assign({\n        version: \"4.25.0\",\n        // This API method is intentionally not monitored, since the only thing executed is the\n        // user-provided 'callback'.  All SDK usages executed in the callback should be monitored, and\n        // we don't want to interfere with the user uncaught exceptions.\n        onReady: function (callback) {\n            callback();\n        },\n    }, stub);\n    // Add a \"hidden\" property to set debug mode. We define it that way to hide it\n    // as much as possible but of course it's not a real protection.\n    Object.defineProperty(publicApi, '_setDebug', {\n        get: function () {\n            return setDebugMode;\n        },\n        enumerable: false,\n    });\n    return publicApi;\n}\nexport function defineGlobal(global, name, api) {\n    var existingGlobalVariable = global[name];\n    global[name] = api;\n    if (existingGlobalVariable && existingGlobalVariable.q) {\n        existingGlobalVariable.q.forEach(function (fn) { return catchUserErrors(fn, 'onReady callback threw an error:')(); });\n    }\n}\n//# sourceMappingURL=init.js.map","/* eslint-disable no-console, local-rules/disallow-side-effects */\n/**\n * Keep references on console methods to avoid triggering patched behaviors\n *\n * NB: in some setup, console could already be patched by another SDK.\n * In this case, some display messages can be sent by the other SDK\n * but we should be safe from infinite loop nonetheless.\n */\nexport var ConsoleApiName = {\n    log: 'log',\n    debug: 'debug',\n    info: 'info',\n    warn: 'warn',\n    error: 'error',\n};\nexport var display = function (api) {\n    var args = [];\n    for (var _i = 1; _i < arguments.length; _i++) {\n        args[_i - 1] = arguments[_i];\n    }\n    if (!Object.prototype.hasOwnProperty.call(ConsoleApiName, api)) {\n        api = ConsoleApiName.log;\n    }\n    display[api].apply(display, args);\n};\ndisplay.debug = console.debug.bind(console);\ndisplay.log = console.log.bind(console);\ndisplay.info = console.info.bind(console);\ndisplay.warn = console.warn.bind(console);\ndisplay.error = console.error.bind(console);\n//# sourceMappingURL=display.js.map","var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n    if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n        if (ar || !(i in from)) {\n            if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n            ar[i] = from[i];\n        }\n    }\n    return to.concat(ar || Array.prototype.slice.call(from));\n};\nimport { ConsoleApiName, display } from './display';\nvar onMonitorErrorCollected;\nvar debugMode = false;\nexport function startMonitorErrorCollection(newOnMonitorErrorCollected) {\n    onMonitorErrorCollected = newOnMonitorErrorCollected;\n}\nexport function setDebugMode(newDebugMode) {\n    debugMode = newDebugMode;\n}\nexport function resetMonitor() {\n    onMonitorErrorCollected = undefined;\n    debugMode = false;\n}\nexport function monitored(_, __, descriptor) {\n    var originalMethod = descriptor.value;\n    descriptor.value = function () {\n        var args = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            args[_i] = arguments[_i];\n        }\n        var decorated = onMonitorErrorCollected ? monitor(originalMethod) : originalMethod;\n        return decorated.apply(this, args);\n    };\n}\nexport function monitor(fn) {\n    return function () {\n        // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n        return callMonitored(fn, this, arguments);\n    }; // consider output type has input type\n}\nexport function callMonitored(fn, context, args) {\n    try {\n        // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n        return fn.apply(context, args);\n    }\n    catch (e) {\n        displayIfDebugEnabled(ConsoleApiName.error, e);\n        if (onMonitorErrorCollected) {\n            try {\n                onMonitorErrorCollected(e);\n            }\n            catch (e) {\n                displayIfDebugEnabled(ConsoleApiName.error, e);\n            }\n        }\n    }\n}\nexport function displayIfDebugEnabled(api) {\n    var args = [];\n    for (var _i = 1; _i < arguments.length; _i++) {\n        args[_i - 1] = arguments[_i];\n    }\n    if (debugMode) {\n        display.apply(void 0, __spreadArray([api, '[MONITOR]'], args, false));\n    }\n}\n//# sourceMappingURL=monitor.js.map","import { display } from './display';\nimport { monitor } from './monitor';\nexport var ONE_SECOND = 1000;\nexport var ONE_MINUTE = 60 * ONE_SECOND;\nexport var ONE_HOUR = 60 * ONE_MINUTE;\nexport var ONE_DAY = 24 * ONE_HOUR;\nexport var ONE_YEAR = 365 * ONE_DAY;\nexport var ONE_KIBI_BYTE = 1024;\nexport var ONE_MEBI_BYTE = 1024 * ONE_KIBI_BYTE;\n// use lodash API\nexport function throttle(fn, wait, options) {\n    var needLeadingExecution = options && options.leading !== undefined ? options.leading : true;\n    var needTrailingExecution = options && options.trailing !== undefined ? options.trailing : true;\n    var inWaitPeriod = false;\n    var pendingExecutionWithParameters;\n    var pendingTimeoutId;\n    return {\n        throttled: function () {\n            var parameters = [];\n            for (var _i = 0; _i < arguments.length; _i++) {\n                parameters[_i] = arguments[_i];\n            }\n            if (inWaitPeriod) {\n                pendingExecutionWithParameters = parameters;\n                return;\n            }\n            if (needLeadingExecution) {\n                fn.apply(void 0, parameters);\n            }\n            else {\n                pendingExecutionWithParameters = parameters;\n            }\n            inWaitPeriod = true;\n            pendingTimeoutId = setTimeout(function () {\n                if (needTrailingExecution && pendingExecutionWithParameters) {\n                    fn.apply(void 0, pendingExecutionWithParameters);\n                }\n                inWaitPeriod = false;\n                pendingExecutionWithParameters = undefined;\n            }, wait);\n        },\n        cancel: function () {\n            clearTimeout(pendingTimeoutId);\n            inWaitPeriod = false;\n            pendingExecutionWithParameters = undefined;\n        },\n    };\n}\nexport function assign(target) {\n    var toAssign = [];\n    for (var _i = 1; _i < arguments.length; _i++) {\n        toAssign[_i - 1] = arguments[_i];\n    }\n    toAssign.forEach(function (source) {\n        for (var key in source) {\n            if (Object.prototype.hasOwnProperty.call(source, key)) {\n                target[key] = source[key];\n            }\n        }\n    });\n    return target;\n}\nexport function shallowClone(object) {\n    return assign({}, object);\n}\n/**\n * UUID v4\n * from https://gist.github.com/jed/982883\n */\nexport function generateUUID(placeholder) {\n    return placeholder\n        ? // eslint-disable-next-line  no-bitwise\n            (parseInt(placeholder, 10) ^ ((Math.random() * 16) >> (parseInt(placeholder, 10) / 4))).toString(16)\n        : \"\".concat(1e7, \"-\").concat(1e3, \"-\").concat(4e3, \"-\").concat(8e3, \"-\").concat(1e11).replace(/[018]/g, generateUUID);\n}\n/**\n * Return true if the draw is successful\n * @param threshold between 0 and 100\n */\nexport function performDraw(threshold) {\n    return threshold !== 0 && Math.random() * 100 <= threshold;\n}\nexport function round(num, decimals) {\n    return +num.toFixed(decimals);\n}\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nexport function noop() { }\n/**\n * Custom implementation of JSON.stringify that ignores some toJSON methods. We need to do that\n * because some sites badly override toJSON on certain objects. Removing all toJSON methods from\n * nested values would be too costly, so we just detach them from the root value, and native classes\n * used to build JSON values (Array and Object).\n *\n * Note: this still assumes that JSON.stringify is correct.\n */\nexport function jsonStringify(value, replacer, space) {\n    if (typeof value !== 'object' || value === null) {\n        return JSON.stringify(value);\n    }\n    // Note: The order matter here. We need to detach toJSON methods on parent classes before their\n    // subclasses.\n    var restoreObjectPrototypeToJson = detachToJsonMethod(Object.prototype);\n    var restoreArrayPrototypeToJson = detachToJsonMethod(Array.prototype);\n    var restoreValuePrototypeToJson = detachToJsonMethod(Object.getPrototypeOf(value));\n    var restoreValueToJson = detachToJsonMethod(value);\n    try {\n        return JSON.stringify(value, replacer, space);\n    }\n    catch (_a) {\n        return '<error: unable to serialize object>';\n    }\n    finally {\n        restoreObjectPrototypeToJson();\n        restoreArrayPrototypeToJson();\n        restoreValuePrototypeToJson();\n        restoreValueToJson();\n    }\n}\nfunction detachToJsonMethod(value) {\n    var object = value;\n    var objectToJson = object.toJSON;\n    if (objectToJson) {\n        delete object.toJSON;\n        return function () {\n            object.toJSON = objectToJson;\n        };\n    }\n    return noop;\n}\nexport function includes(candidate, search) {\n    return candidate.indexOf(search) !== -1;\n}\nexport function arrayFrom(arrayLike) {\n    if (Array.from) {\n        return Array.from(arrayLike);\n    }\n    var array = [];\n    if (arrayLike instanceof Set) {\n        arrayLike.forEach(function (item) { return array.push(item); });\n    }\n    else {\n        for (var i = 0; i < arrayLike.length; i++) {\n            array.push(arrayLike[i]);\n        }\n    }\n    return array;\n}\nexport function find(array, predicate) {\n    for (var i = 0; i < array.length; i += 1) {\n        var item = array[i];\n        if (predicate(item, i)) {\n            return item;\n        }\n    }\n    return undefined;\n}\nexport function findLast(array, predicate) {\n    for (var i = array.length - 1; i >= 0; i -= 1) {\n        var item = array[i];\n        if (predicate(item, i, array)) {\n            return item;\n        }\n    }\n    return undefined;\n}\nexport function isPercentage(value) {\n    return isNumber(value) && value >= 0 && value <= 100;\n}\nexport function isNumber(value) {\n    return typeof value === 'number';\n}\nexport function objectValues(object) {\n    return Object.keys(object).map(function (key) { return object[key]; });\n}\nexport function objectHasValue(object, value) {\n    return Object.keys(object).some(function (key) { return object[key] === value; });\n}\nexport function objectEntries(object) {\n    return Object.keys(object).map(function (key) { return [key, object[key]]; });\n}\nexport function isEmptyObject(object) {\n    return Object.keys(object).length === 0;\n}\nexport function mapValues(object, fn) {\n    var newObject = {};\n    for (var _i = 0, _a = Object.keys(object); _i < _a.length; _i++) {\n        var key = _a[_i];\n        newObject[key] = fn(object[key]);\n    }\n    return newObject;\n}\nexport function startsWith(candidate, search) {\n    return candidate.slice(0, search.length) === search;\n}\nexport function endsWith(candidate, search) {\n    return candidate.slice(-search.length) === search;\n}\n/**\n * inspired by https://mathiasbynens.be/notes/globalthis\n */\nexport function getGlobalObject() {\n    if (typeof globalThis === 'object') {\n        return globalThis;\n    }\n    Object.defineProperty(Object.prototype, '_dd_temp_', {\n        get: function () {\n            return this;\n        },\n        configurable: true,\n    });\n    // @ts-ignore _dd_temp is defined using defineProperty\n    var globalObject = _dd_temp_;\n    // @ts-ignore _dd_temp is defined using defineProperty\n    delete Object.prototype._dd_temp_;\n    if (typeof globalObject !== 'object') {\n        // on safari _dd_temp_ is available on window but not globally\n        // fallback on other browser globals check\n        if (typeof self === 'object') {\n            globalObject = self;\n        }\n        else if (typeof window === 'object') {\n            globalObject = window;\n        }\n        else {\n            globalObject = {};\n        }\n    }\n    return globalObject;\n}\nexport function getLocationOrigin() {\n    return getLinkElementOrigin(window.location);\n}\n/**\n * IE fallback\n * https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils/origin\n */\nexport function getLinkElementOrigin(element) {\n    if (element.origin) {\n        return element.origin;\n    }\n    var sanitizedHost = element.host.replace(/(:80|:443)$/, '');\n    return \"\".concat(element.protocol, \"//\").concat(sanitizedHost);\n}\nexport function findCommaSeparatedValue(rawString, name) {\n    var regex = new RegExp(\"(?:^|;)\\\\s*\".concat(name, \"\\\\s*=\\\\s*([^;]+)\"));\n    var matches = regex.exec(rawString);\n    return matches ? matches[1] : undefined;\n}\nexport function safeTruncate(candidate, length, suffix) {\n    if (suffix === void 0) { suffix = ''; }\n    var lastChar = candidate.charCodeAt(length - 1);\n    var isLastCharSurrogatePair = lastChar >= 0xd800 && lastChar <= 0xdbff;\n    var correctedLength = isLastCharSurrogatePair ? length + 1 : length;\n    if (candidate.length <= correctedLength)\n        return candidate;\n    return \"\".concat(candidate.slice(0, correctedLength)).concat(suffix);\n}\n/**\n * Add an event listener to an event emitter object (Window, Element, mock object...).  This provides\n * a few conveniences compared to using `element.addEventListener` directly:\n *\n * * supports IE11 by: using an option object only if needed and emulating the `once` option\n *\n * * wraps the listener with a `monitor` function\n *\n * * returns a `stop` function to remove the listener\n */\nexport function addEventListener(emitter, event, listener, options) {\n    return addEventListeners(emitter, [event], listener, options);\n}\n/**\n * Add event listeners to an event emitter object (Window, Element, mock object...).  This provides\n * a few conveniences compared to using `element.addEventListener` directly:\n *\n * * supports IE11 by: using an option object only if needed and emulating the `once` option\n *\n * * wraps the listener with a `monitor` function\n *\n * * returns a `stop` function to remove the listener\n *\n * * with `once: true`, the listener will be called at most once, even if different events are listened\n */\nexport function addEventListeners(emitter, events, listener, _a) {\n    var _b = _a === void 0 ? {} : _a, once = _b.once, capture = _b.capture, passive = _b.passive;\n    var wrappedListener = monitor(once\n        ? function (event) {\n            stop();\n            listener(event);\n        }\n        : listener);\n    var options = passive ? { capture: capture, passive: passive } : capture;\n    events.forEach(function (event) { return emitter.addEventListener(event, wrappedListener, options); });\n    var stop = function () { return events.forEach(function (event) { return emitter.removeEventListener(event, wrappedListener, options); }); };\n    return {\n        stop: stop,\n    };\n}\nexport function elementMatches(element, selector) {\n    if (element.matches) {\n        return element.matches(selector);\n    }\n    // IE11 support\n    if (element.msMatchesSelector) {\n        return element.msMatchesSelector(selector);\n    }\n    return false;\n}\nexport function runOnReadyState(expectedReadyState, callback) {\n    if (document.readyState === expectedReadyState || document.readyState === 'complete') {\n        callback();\n    }\n    else {\n        var eventName = expectedReadyState === 'complete' ? \"load\" /* LOAD */ : \"DOMContentLoaded\" /* DOM_CONTENT_LOADED */;\n        addEventListener(window, eventName, callback, { once: true });\n    }\n}\n/**\n * Similar to `typeof`, but distinguish plain objects from `null` and arrays\n */\nexport function getType(value) {\n    if (value === null) {\n        return 'null';\n    }\n    if (Array.isArray(value)) {\n        return 'array';\n    }\n    return typeof value;\n}\nfunction createCircularReferenceChecker() {\n    if (typeof WeakSet !== 'undefined') {\n        var set_1 = new WeakSet();\n        return {\n            hasAlreadyBeenSeen: function (value) {\n                var has = set_1.has(value);\n                if (!has) {\n                    set_1.add(value);\n                }\n                return has;\n            },\n        };\n    }\n    var array = [];\n    return {\n        hasAlreadyBeenSeen: function (value) {\n            var has = array.indexOf(value) >= 0;\n            if (!has) {\n                array.push(value);\n            }\n            return has;\n        },\n    };\n}\n/**\n * Iterate over source and affect its sub values into destination, recursively.\n * If the source and destination can't be merged, return source.\n */\nexport function mergeInto(destination, source, circularReferenceChecker) {\n    if (circularReferenceChecker === void 0) { circularReferenceChecker = createCircularReferenceChecker(); }\n    // ignore the source if it is undefined\n    if (source === undefined) {\n        return destination;\n    }\n    if (typeof source !== 'object' || source === null) {\n        // primitive values - just return source\n        return source;\n    }\n    else if (source instanceof Date) {\n        return new Date(source.getTime());\n    }\n    else if (source instanceof RegExp) {\n        var flags = source.flags ||\n            // old browsers compatibility\n            [\n                source.global ? 'g' : '',\n                source.ignoreCase ? 'i' : '',\n                source.multiline ? 'm' : '',\n                source.sticky ? 'y' : '',\n                source.unicode ? 'u' : '',\n            ].join('');\n        return new RegExp(source.source, flags);\n    }\n    if (circularReferenceChecker.hasAlreadyBeenSeen(source)) {\n        // remove circular references\n        return undefined;\n    }\n    else if (Array.isArray(source)) {\n        var merged_1 = Array.isArray(destination) ? destination : [];\n        for (var i = 0; i < source.length; ++i) {\n            merged_1[i] = mergeInto(merged_1[i], source[i], circularReferenceChecker);\n        }\n        return merged_1;\n    }\n    var merged = getType(destination) === 'object' ? destination : {};\n    for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n            merged[key] = mergeInto(merged[key], source[key], circularReferenceChecker);\n        }\n    }\n    return merged;\n}\n/**\n * A simplistic implementation of a deep clone algorithm.\n * Caveats:\n * - It doesn't maintain prototype chains - don't use with instances of custom classes.\n * - It doesn't handle Map and Set\n */\nexport function deepClone(value) {\n    return mergeInto(undefined, value);\n}\nexport function combine() {\n    var sources = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        sources[_i] = arguments[_i];\n    }\n    var destination;\n    for (var _a = 0, sources_1 = sources; _a < sources_1.length; _a++) {\n        var source = sources_1[_a];\n        // Ignore any undefined or null sources.\n        if (source === undefined || source === null) {\n            continue;\n        }\n        destination = mergeInto(destination, source);\n    }\n    return destination;\n}\nexport function requestIdleCallback(callback, opts) {\n    // Use 'requestIdleCallback' when available: it will throttle the mutation processing if the\n    // browser is busy rendering frames (ex: when frames are below 60fps). When not available, the\n    // fallback on 'requestAnimationFrame' will still ensure the mutations are processed after any\n    // browser rendering process (Layout, Recalculate Style, etc.), so we can serialize DOM nodes\n    // efficiently.\n    if (window.requestIdleCallback) {\n        var id_1 = window.requestIdleCallback(monitor(callback), opts);\n        return function () { return window.cancelIdleCallback(id_1); };\n    }\n    var id = window.requestAnimationFrame(monitor(callback));\n    return function () { return window.cancelAnimationFrame(id); };\n}\nexport function removeDuplicates(array) {\n    var set = new Set();\n    array.forEach(function (item) { return set.add(item); });\n    return arrayFrom(set);\n}\nexport function matchList(list, value) {\n    return list.some(function (item) {\n        if (typeof item === 'function') {\n            try {\n                return item(value);\n            }\n            catch (e) {\n                display.error(e);\n                return false;\n            }\n        }\n        if (item instanceof RegExp) {\n            return item.test(value);\n        }\n        return item === value;\n    });\n}\n// https://github.com/jquery/jquery/blob/a684e6ba836f7c553968d7d026ed7941e1a612d8/src/selector/escapeSelector.js\nexport function cssEscape(str) {\n    if (window.CSS && window.CSS.escape) {\n        return window.CSS.escape(str);\n    }\n    // eslint-disable-next-line no-control-regex\n    return str.replace(/([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\x80-\\uFFFF\\w-]/g, function (ch, asCodePoint) {\n        if (asCodePoint) {\n            // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n            if (ch === '\\0') {\n                return '\\uFFFD';\n            }\n            // Control characters and (dependent upon position) numbers get escaped as code points\n            return \"\".concat(ch.slice(0, -1), \"\\\\\").concat(ch.charCodeAt(ch.length - 1).toString(16), \" \");\n        }\n        // Other potentially-special ASCII characters get backslash-escaped\n        return \"\\\\\".concat(ch);\n    });\n}\n//# sourceMappingURL=utils.js.map","import { deepClone } from './utils';\nexport function createContextManager() {\n    var context = {};\n    return {\n        /** @deprecated use getContext instead */\n        get: function () { return context; },\n        /** @deprecated use setContextProperty instead */\n        add: function (key, value) {\n            context[key] = value;\n        },\n        /** @deprecated renamed to removeContextProperty */\n        remove: function (key) {\n            delete context[key];\n        },\n        /** @deprecated use setContext instead */\n        set: function (newContext) {\n            context = newContext;\n        },\n        getContext: function () { return deepClone(context); },\n        setContext: function (newContext) {\n            context = deepClone(newContext);\n        },\n        setContextProperty: function (key, property) {\n            context[key] = deepClone(property);\n        },\n        removeContextProperty: function (key) {\n            delete context[key];\n        },\n        clearContext: function () {\n            context = {};\n        },\n    };\n}\n//# sourceMappingURL=contextManager.js.map","var BUFFER_LIMIT = 500;\nvar BoundedBuffer = /** @class */ (function () {\n    function BoundedBuffer() {\n        this.buffer = [];\n    }\n    BoundedBuffer.prototype.add = function (callback) {\n        var length = this.buffer.push(callback);\n        if (length > BUFFER_LIMIT) {\n            this.buffer.splice(0, 1);\n        }\n    };\n    BoundedBuffer.prototype.drain = function () {\n        this.buffer.forEach(function (callback) { return callback(); });\n        this.buffer.length = 0;\n    };\n    return BoundedBuffer;\n}());\nexport { BoundedBuffer };\n//# sourceMappingURL=boundedBuffer.js.map","import { isNumber, ONE_YEAR, round } from './utils';\nexport function relativeToClocks(relative) {\n    return { relative: relative, timeStamp: getCorrectedTimeStamp(relative) };\n}\nfunction getCorrectedTimeStamp(relativeTime) {\n    var correctedOrigin = (dateNow() - performance.now());\n    // apply correction only for positive drift\n    if (correctedOrigin > getNavigationStart()) {\n        return Math.round(addDuration(correctedOrigin, relativeTime));\n    }\n    return getTimeStamp(relativeTime);\n}\nexport function currentDrift() {\n    return Math.round(dateNow() - addDuration(getNavigationStart(), performance.now()));\n}\nexport function toServerDuration(duration) {\n    if (!isNumber(duration)) {\n        return duration;\n    }\n    return round(duration * 1e6, 0);\n}\nexport function dateNow() {\n    // Do not use `Date.now` because sometimes websites are wrongly \"polyfilling\" it. For example, we\n    // had some users using a very old version of `datejs`, which patched `Date.now` to return a Date\n    // instance instead of a timestamp[1]. Those users are unlikely to fix this, so let's handle this\n    // case ourselves.\n    // [1]: https://github.com/datejs/Datejs/blob/97f5c7c58c5bc5accdab8aa7602b6ac56462d778/src/core-debug.js#L14-L16\n    return new Date().getTime();\n}\nexport function timeStampNow() {\n    return dateNow();\n}\nexport function relativeNow() {\n    return performance.now();\n}\nexport function clocksNow() {\n    return { relative: relativeNow(), timeStamp: timeStampNow() };\n}\nexport function clocksOrigin() {\n    return { relative: 0, timeStamp: getNavigationStart() };\n}\nexport function elapsed(start, end) {\n    return (end - start);\n}\nexport function addDuration(a, b) {\n    return a + b;\n}\n/**\n * Get the time since the navigation was started.\n *\n * Note: this does not use `performance.timeOrigin` because it doesn't seem to reflect the actual\n * time on which the navigation has started: it may be much farther in the past, at least in Firefox 71.\n * Related issue in Firefox: https://bugzilla.mozilla.org/show_bug.cgi?id=1429926\n */\nexport function getRelativeTime(timestamp) {\n    return (timestamp - getNavigationStart());\n}\nexport function getTimeStamp(relativeTime) {\n    return Math.round(addDuration(getNavigationStart(), relativeTime));\n}\nexport function looksLikeRelativeTime(time) {\n    return time < ONE_YEAR;\n}\n/**\n * Navigation start slightly change on some rare cases\n */\nvar navigationStart;\nfunction getNavigationStart() {\n    if (navigationStart === undefined) {\n        navigationStart = performance.timing.navigationStart;\n    }\n    return navigationStart;\n}\nexport function resetNavigationStart() {\n    navigationStart = undefined;\n}\n//# sourceMappingURL=timeUtils.js.map","import { display } from '../tools/display';\nimport { findCommaSeparatedValue, generateUUID, ONE_SECOND } from '../tools/utils';\nexport var COOKIE_ACCESS_DELAY = ONE_SECOND;\nexport function setCookie(name, value, expireDelay, options) {\n    var date = new Date();\n    date.setTime(date.getTime() + expireDelay);\n    var expires = \"expires=\".concat(date.toUTCString());\n    var sameSite = options && options.crossSite ? 'none' : 'strict';\n    var domain = options && options.domain ? \";domain=\".concat(options.domain) : '';\n    var secure = options && options.secure ? ';secure' : '';\n    document.cookie = \"\".concat(name, \"=\").concat(value, \";\").concat(expires, \";path=/;samesite=\").concat(sameSite).concat(domain).concat(secure);\n}\nexport function getCookie(name) {\n    return findCommaSeparatedValue(document.cookie, name);\n}\nexport function deleteCookie(name, options) {\n    setCookie(name, '', 0, options);\n}\nexport function areCookiesAuthorized(options) {\n    if (document.cookie === undefined || document.cookie === null) {\n        return false;\n    }\n    try {\n        // Use a unique cookie name to avoid issues when the SDK is initialized multiple times during\n        // the test cookie lifetime\n        var testCookieName = \"dd_cookie_test_\".concat(generateUUID());\n        var testCookieValue = 'test';\n        setCookie(testCookieName, testCookieValue, ONE_SECOND, options);\n        var isCookieCorrectlySet = getCookie(testCookieName) === testCookieValue;\n        deleteCookie(testCookieName, options);\n        return isCookieCorrectlySet;\n    }\n    catch (error) {\n        display.error(error);\n        return false;\n    }\n}\n/**\n * No API to retrieve it, number of levels for subdomain and suffix are unknown\n * strategy: find the minimal domain on which cookies are allowed to be set\n * https://web.dev/same-site-same-origin/#site\n */\nvar getCurrentSiteCache;\nexport function getCurrentSite() {\n    if (getCurrentSiteCache === undefined) {\n        // Use a unique cookie name to avoid issues when the SDK is initialized multiple times during\n        // the test cookie lifetime\n        var testCookieName = \"dd_site_test_\".concat(generateUUID());\n        var testCookieValue = 'test';\n        var domainLevels = window.location.hostname.split('.');\n        var candidateDomain = domainLevels.pop();\n        while (domainLevels.length && !getCookie(testCookieName)) {\n            candidateDomain = \"\".concat(domainLevels.pop(), \".\").concat(candidateDomain);\n            setCookie(testCookieName, testCookieValue, ONE_SECOND, { domain: candidateDomain });\n        }\n        deleteCookie(testCookieName, { domain: candidateDomain });\n        getCurrentSiteCache = candidateDomain;\n    }\n    return getCurrentSiteCache;\n}\n//# sourceMappingURL=cookie.js.map","import { getCookie } from '../../browser/cookie';\nexport var SYNTHETICS_TEST_ID_COOKIE_NAME = 'datadog-synthetics-public-id';\nexport var SYNTHETICS_RESULT_ID_COOKIE_NAME = 'datadog-synthetics-result-id';\nexport var SYNTHETICS_INJECTS_RUM_COOKIE_NAME = 'datadog-synthetics-injects-rum';\nexport function willSyntheticsInjectRum() {\n    return Boolean(window._DATADOG_SYNTHETICS_INJECTS_RUM || getCookie(SYNTHETICS_INJECTS_RUM_COOKIE_NAME));\n}\nexport function getSyntheticsTestId() {\n    var value = window._DATADOG_SYNTHETICS_PUBLIC_ID || getCookie(SYNTHETICS_TEST_ID_COOKIE_NAME);\n    return typeof value === 'string' ? value : undefined;\n}\nexport function getSyntheticsResultId() {\n    var value = window._DATADOG_SYNTHETICS_RESULT_ID || getCookie(SYNTHETICS_RESULT_ID_COOKIE_NAME);\n    return typeof value === 'string' ? value : undefined;\n}\n//# sourceMappingURL=syntheticsWorkerValues.js.map","/**\n * LIMITATION:\n * For NPM setup, this feature flag singleton is shared between RUM and Logs product.\n * This means that an experimental flag set on the RUM product will be set on the Logs product.\n * So keep in mind that in certain configurations, your experimental feature flag may affect other products.\n */\nimport { includes } from '../../tools/utils';\nimport { display } from '../../tools/display';\nvar enabledExperimentalFeatures;\nexport function updateExperimentalFeatures(enabledFeatures) {\n    // Safely handle external data\n    if (!Array.isArray(enabledFeatures)) {\n        return;\n    }\n    if (!enabledExperimentalFeatures) {\n        enabledExperimentalFeatures = new Set(enabledFeatures);\n    }\n    enabledFeatures\n        .filter(function (flag) { return typeof flag === 'string'; })\n        .forEach(function (flag) {\n        if (includes(flag, '-')) {\n            display.warn(\"please use snake case for '\".concat(flag, \"'\"));\n        }\n        enabledExperimentalFeatures.add(flag);\n    });\n}\nexport function isExperimentalFeatureEnabled(featureName) {\n    return !!enabledExperimentalFeatures && enabledExperimentalFeatures.has(featureName);\n}\nexport function resetExperimentalFeatures() {\n    enabledExperimentalFeatures = new Set();\n}\nexport function getExperimentalFeatures() {\n    return enabledExperimentalFeatures || new Set();\n}\n//# sourceMappingURL=experimentalFeatures.js.map","import { endsWith, getGlobalObject } from '../tools/utils';\nexport function getEventBridge() {\n    var eventBridgeGlobal = getEventBridgeGlobal();\n    if (!eventBridgeGlobal) {\n        return;\n    }\n    return {\n        getAllowedWebViewHosts: function () {\n            return JSON.parse(eventBridgeGlobal.getAllowedWebViewHosts());\n        },\n        send: function (eventType, event) {\n            eventBridgeGlobal.send(JSON.stringify({ eventType: eventType, event: event }));\n        },\n    };\n}\nexport function canUseEventBridge(currentHost) {\n    var _a;\n    if (currentHost === void 0) { currentHost = (_a = getGlobalObject().location) === null || _a === void 0 ? void 0 : _a.hostname; }\n    var bridge = getEventBridge();\n    return (!!bridge &&\n        bridge\n            .getAllowedWebViewHosts()\n            .some(function (allowedHost) { return currentHost === allowedHost || endsWith(currentHost, \".\".concat(allowedHost)); }));\n}\nfunction getEventBridgeGlobal() {\n    return getGlobalObject().DatadogEventBridge;\n}\n//# sourceMappingURL=eventBridge.js.map","import { display } from './display';\nexport function catchUserErrors(fn, errorMsg) {\n    return function () {\n        var args = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            args[_i] = arguments[_i];\n        }\n        try {\n            return fn.apply(void 0, args);\n        }\n        catch (err) {\n            display.error(errorMsg, err);\n        }\n    };\n}\n//# sourceMappingURL=catchUserErrors.js.map","import { catchUserErrors } from '../tools/catchUserErrors';\nimport { setDebugMode } from '../tools/monitor';\nimport { assign } from '../tools/utils';\nexport function makePublicApi(stub) {\n    var publicApi = assign({\n        version: \"4.25.0\",\n        // This API method is intentionally not monitored, since the only thing executed is the\n        // user-provided 'callback'.  All SDK usages executed in the callback should be monitored, and\n        // we don't want to interfere with the user uncaught exceptions.\n        onReady: function (callback) {\n            callback();\n        },\n    }, stub);\n    // Add a \"hidden\" property to set debug mode. We define it that way to hide it\n    // as much as possible but of course it's not a real protection.\n    Object.defineProperty(publicApi, '_setDebug', {\n        get: function () {\n            return setDebugMode;\n        },\n        enumerable: false,\n    });\n    return publicApi;\n}\nexport function defineGlobal(global, name, api) {\n    var existingGlobalVariable = global[name];\n    global[name] = api;\n    if (existingGlobalVariable && existingGlobalVariable.q) {\n        existingGlobalVariable.q.forEach(function (fn) { return catchUserErrors(fn, 'onReady callback threw an error:')(); });\n    }\n}\n//# sourceMappingURL=init.js.map","import { startsWith } from '../../tools/utils';\nvar UNKNOWN_FUNCTION = '?';\n/**\n * Computes a stack trace for an exception.\n */\nexport function computeStackTrace(ex) {\n    var stack = [];\n    var stackProperty = tryToGetString(ex, 'stack');\n    var exString = String(ex);\n    if (stackProperty && startsWith(stackProperty, exString)) {\n        stackProperty = stackProperty.slice(exString.length);\n    }\n    if (stackProperty) {\n        stackProperty.split('\\n').forEach(function (line) {\n            var stackFrame = parseChromeLine(line) || parseChromeAnonymousLine(line) || parseWinLine(line) || parseGeckoLine(line);\n            if (stackFrame) {\n                if (!stackFrame.func && stackFrame.line) {\n                    stackFrame.func = UNKNOWN_FUNCTION;\n                }\n                stack.push(stackFrame);\n            }\n        });\n    }\n    return {\n        message: tryToGetString(ex, 'message'),\n        name: tryToGetString(ex, 'name'),\n        stack: stack,\n    };\n}\nvar fileUrl = '((?:file|https?|blob|chrome-extension|native|eval|webpack|<anonymous>|\\\\w+\\\\.|\\\\/).*?)';\nvar filePosition = '(?::(\\\\d+))';\nvar CHROME_LINE_RE = new RegExp(\"^\\\\s*at (.*?) ?\\\\(\".concat(fileUrl).concat(filePosition, \"?\").concat(filePosition, \"?\\\\)?\\\\s*$\"), 'i');\nvar CHROME_EVAL_RE = new RegExp(\"\\\\((\\\\S*)\".concat(filePosition).concat(filePosition, \"\\\\)\"));\nfunction parseChromeLine(line) {\n    var parts = CHROME_LINE_RE.exec(line);\n    if (!parts) {\n        return;\n    }\n    var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line\n    var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line\n    var submatch = CHROME_EVAL_RE.exec(parts[2]);\n    if (isEval && submatch) {\n        // throw out eval line/column and use top-most line/column number\n        parts[2] = submatch[1]; // url\n        parts[3] = submatch[2]; // line\n        parts[4] = submatch[3]; // column\n    }\n    return {\n        args: isNative ? [parts[2]] : [],\n        column: parts[4] ? +parts[4] : undefined,\n        func: parts[1] || UNKNOWN_FUNCTION,\n        line: parts[3] ? +parts[3] : undefined,\n        url: !isNative ? parts[2] : undefined,\n    };\n}\nvar CHROME_ANONYMOUS_FUNCTION_RE = new RegExp(\"^\\\\s*at ?\".concat(fileUrl).concat(filePosition, \"?\").concat(filePosition, \"??\\\\s*$\"), 'i');\nfunction parseChromeAnonymousLine(line) {\n    var parts = CHROME_ANONYMOUS_FUNCTION_RE.exec(line);\n    if (!parts) {\n        return;\n    }\n    return {\n        args: [],\n        column: parts[3] ? +parts[3] : undefined,\n        func: UNKNOWN_FUNCTION,\n        line: parts[2] ? +parts[2] : undefined,\n        url: parts[1],\n    };\n}\nvar WINJS_LINE_RE = /^\\s*at (?:((?:\\[object object\\])?.+) )?\\(?((?:file|ms-appx|https?|webpack|blob):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i;\nfunction parseWinLine(line) {\n    var parts = WINJS_LINE_RE.exec(line);\n    if (!parts) {\n        return;\n    }\n    return {\n        args: [],\n        column: parts[4] ? +parts[4] : undefined,\n        func: parts[1] || UNKNOWN_FUNCTION,\n        line: +parts[3],\n        url: parts[2],\n    };\n}\nvar GECKO_LINE_RE = /^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|capacitor|\\[native).*?|[^@]*bundle)(?::(\\d+))?(?::(\\d+))?\\s*$/i;\nvar GECKO_EVAL_RE = /(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i;\nfunction parseGeckoLine(line) {\n    var parts = GECKO_LINE_RE.exec(line);\n    if (!parts) {\n        return;\n    }\n    var isEval = parts[3] && parts[3].indexOf(' > eval') > -1;\n    var submatch = GECKO_EVAL_RE.exec(parts[3]);\n    if (isEval && submatch) {\n        // throw out eval line/column and use top-most line number\n        parts[3] = submatch[1];\n        parts[4] = submatch[2];\n        parts[5] = undefined; // no column when eval\n    }\n    return {\n        args: parts[2] ? parts[2].split(',') : [],\n        column: parts[5] ? +parts[5] : undefined,\n        func: parts[1] || UNKNOWN_FUNCTION,\n        line: parts[4] ? +parts[4] : undefined,\n        url: parts[3],\n    };\n}\nfunction tryToGetString(candidate, property) {\n    if (typeof candidate !== 'object' || !candidate || !(property in candidate)) {\n        return undefined;\n    }\n    var value = candidate[property];\n    return typeof value === 'string' ? value : undefined;\n}\n//# sourceMappingURL=computeStackTrace.js.map","import { computeStackTrace } from '../domain/tracekit';\nimport { callMonitored } from './monitor';\nimport { jsonStringify, noop } from './utils';\nexport var ErrorSource = {\n    AGENT: 'agent',\n    CONSOLE: 'console',\n    CUSTOM: 'custom',\n    LOGGER: 'logger',\n    NETWORK: 'network',\n    SOURCE: 'source',\n    REPORT: 'report',\n};\nexport function computeRawError(_a) {\n    var stackTrace = _a.stackTrace, originalError = _a.originalError, handlingStack = _a.handlingStack, startClocks = _a.startClocks, nonErrorPrefix = _a.nonErrorPrefix, source = _a.source, handling = _a.handling;\n    if (!stackTrace || (stackTrace.message === undefined && !(originalError instanceof Error))) {\n        return {\n            startClocks: startClocks,\n            source: source,\n            handling: handling,\n            originalError: originalError,\n            message: \"\".concat(nonErrorPrefix, \" \").concat(jsonStringify(originalError)),\n            stack: 'No stack, consider using an instance of Error',\n            handlingStack: handlingStack,\n            type: stackTrace && stackTrace.name,\n        };\n    }\n    return {\n        startClocks: startClocks,\n        source: source,\n        handling: handling,\n        originalError: originalError,\n        message: stackTrace.message || 'Empty message',\n        stack: toStackTraceString(stackTrace),\n        handlingStack: handlingStack,\n        type: stackTrace.name,\n        causes: flattenErrorCauses(originalError, source),\n    };\n}\nexport function toStackTraceString(stack) {\n    var result = formatErrorMessage(stack);\n    stack.stack.forEach(function (frame) {\n        var func = frame.func === '?' ? '<anonymous>' : frame.func;\n        var args = frame.args && frame.args.length > 0 ? \"(\".concat(frame.args.join(', '), \")\") : '';\n        var line = frame.line ? \":\".concat(frame.line) : '';\n        var column = frame.line && frame.column ? \":\".concat(frame.column) : '';\n        result += \"\\n  at \".concat(func).concat(args, \" @ \").concat(frame.url).concat(line).concat(column);\n    });\n    return result;\n}\nexport function getFileFromStackTraceString(stack) {\n    var _a;\n    return (_a = /@ (.+)/.exec(stack)) === null || _a === void 0 ? void 0 : _a[1];\n}\nexport function formatErrorMessage(stack) {\n    return \"\".concat(stack.name || 'Error', \": \").concat(stack.message);\n}\n/**\n Creates a stacktrace without SDK internal frames.\n \n Constraints:\n - Has to be called at the utmost position of the call stack.\n - No monitored function should encapsulate it, that is why we need to use callMonitored inside it.\n */\nexport function createHandlingStack() {\n    /**\n     * Skip the two internal frames:\n     * - SDK API (console.error, ...)\n     * - this function\n     * in order to keep only the user calls\n     */\n    var internalFramesToSkip = 2;\n    var error = new Error();\n    var formattedStack;\n    // IE needs to throw the error to fill in the stack trace\n    if (!error.stack) {\n        try {\n            throw error;\n        }\n        catch (e) {\n            noop();\n        }\n    }\n    callMonitored(function () {\n        var stackTrace = computeStackTrace(error);\n        stackTrace.stack = stackTrace.stack.slice(internalFramesToSkip);\n        formattedStack = toStackTraceString(stackTrace);\n    });\n    return formattedStack;\n}\nexport function flattenErrorCauses(error, parentSource) {\n    var currentError = error;\n    var causes = [];\n    while ((currentError === null || currentError === void 0 ? void 0 : currentError.cause) instanceof Error && causes.length < 10) {\n        var stackTrace = computeStackTrace(currentError.cause);\n        causes.push({\n            message: currentError.cause.message,\n            source: parentSource,\n            type: stackTrace === null || stackTrace === void 0 ? void 0 : stackTrace.name,\n            stack: stackTrace && toStackTraceString(stackTrace),\n        });\n        currentError = currentError.cause;\n    }\n    return causes.length ? causes : undefined;\n}\n//# sourceMappingURL=error.js.map","import { getLinkElementOrigin, getLocationOrigin } from './utils';\nexport function normalizeUrl(url) {\n    return buildUrl(url, getLocationOrigin()).href;\n}\nexport function isValidUrl(url) {\n    try {\n        return !!buildUrl(url);\n    }\n    catch (_a) {\n        return false;\n    }\n}\nexport function haveSameOrigin(url1, url2) {\n    return getOrigin(url1) === getOrigin(url2);\n}\nexport function getOrigin(url) {\n    return getLinkElementOrigin(buildUrl(url));\n}\nexport function getPathName(url) {\n    var pathname = buildUrl(url).pathname;\n    return pathname[0] === '/' ? pathname : \"/\".concat(pathname);\n}\nexport function getSearch(url) {\n    return buildUrl(url).search;\n}\nexport function getHash(url) {\n    return buildUrl(url).hash;\n}\nexport function buildUrl(url, base) {\n    if (checkURLSupported()) {\n        return base !== undefined ? new URL(url, base) : new URL(url);\n    }\n    if (base === undefined && !/:/.test(url)) {\n        throw new Error(\"Invalid URL: '\".concat(url, \"'\"));\n    }\n    var doc = document;\n    var anchorElement = doc.createElement('a');\n    if (base !== undefined) {\n        doc = document.implementation.createHTMLDocument('');\n        var baseElement = doc.createElement('base');\n        baseElement.href = base;\n        doc.head.appendChild(baseElement);\n        doc.body.appendChild(anchorElement);\n    }\n    anchorElement.href = url;\n    return anchorElement;\n}\nvar isURLSupported;\nfunction checkURLSupported() {\n    if (isURLSupported !== undefined) {\n        return isURLSupported;\n    }\n    try {\n        var url = new URL('http://test/path');\n        isURLSupported = url.href === 'http://test/path';\n        return isURLSupported;\n    }\n    catch (_a) {\n        isURLSupported = false;\n    }\n    return isURLSupported;\n}\n//# sourceMappingURL=urlPolyfill.js.map","import { display } from '../../tools/display';\nimport { assign, getType } from '../../tools/utils';\n/**\n * Clone input data and ensure known user properties (id, name, email)\n * are strings, as defined here:\n * https://docs.datadoghq.com/logs/log_configuration/attributes_naming_convention/#user-related-attributes\n */\nexport function sanitizeUser(newUser) {\n    // We shallow clone only to prevent mutation of user data.\n    var user = assign({}, newUser);\n    var keys = ['id', 'name', 'email'];\n    keys.forEach(function (key) {\n        if (key in user) {\n            user[key] = String(user[key]);\n        }\n    });\n    return user;\n}\n/**\n * Simple check to ensure user is valid\n */\nexport function checkUser(newUser) {\n    var isValid = getType(newUser) === 'object';\n    if (!isValid) {\n        display.error('Unsupported user:', newUser);\n    }\n    return isValid;\n}\n//# sourceMappingURL=user.js.map","export var INTAKE_SITE_STAGING = 'datad0g.com';\nexport var INTAKE_SITE_US1 = 'datadoghq.com';\nexport var INTAKE_SITE_US1_FED = 'ddog-gov.com';\n//# sourceMappingURL=intakeSites.js.map","import { timeStampNow } from '../../tools/timeUtils';\nimport { normalizeUrl } from '../../tools/urlPolyfill';\nimport { generateUUID } from '../../tools/utils';\nimport { INTAKE_SITE_US1 } from './intakeSites';\nexport var ENDPOINTS = {\n    logs: 'logs',\n    rum: 'rum',\n    sessionReplay: 'session-replay',\n};\nvar INTAKE_TRACKS = {\n    logs: 'logs',\n    rum: 'rum',\n    sessionReplay: 'replay',\n};\nexport function createEndpointBuilder(initConfiguration, endpointType, configurationTags) {\n    var _a = initConfiguration.site, site = _a === void 0 ? INTAKE_SITE_US1 : _a, clientToken = initConfiguration.clientToken;\n    var domainParts = site.split('.');\n    var extension = domainParts.pop();\n    var host = \"\".concat(ENDPOINTS[endpointType], \".browser-intake-\").concat(domainParts.join('-'), \".\").concat(extension);\n    var baseUrl = \"https://\".concat(host, \"/api/v2/\").concat(INTAKE_TRACKS[endpointType]);\n    var proxyUrl = initConfiguration.proxyUrl && normalizeUrl(initConfiguration.proxyUrl);\n    return {\n        build: function (retry) {\n            var tags = [\"sdk_version:\".concat(\"4.25.0\")].concat(configurationTags);\n            if (retry) {\n                tags.push(\"retry_count:\".concat(retry.count), \"retry_after:\".concat(retry.lastFailureStatus));\n            }\n            var parameters = 'ddsource=browser' +\n                \"&ddtags=\".concat(encodeURIComponent(tags.join(','))) +\n                \"&dd-api-key=\".concat(clientToken) +\n                \"&dd-evp-origin-version=\".concat(encodeURIComponent(\"4.25.0\")) +\n                '&dd-evp-origin=browser' +\n                \"&dd-request-id=\".concat(generateUUID());\n            if (endpointType === 'rum') {\n                parameters += \"&batch_time=\".concat(timeStampNow());\n            }\n            var endpointUrl = \"\".concat(baseUrl, \"?\").concat(parameters);\n            return proxyUrl ? \"\".concat(proxyUrl, \"?ddforward=\").concat(encodeURIComponent(endpointUrl)) : endpointUrl;\n        },\n        buildIntakeUrl: function () {\n            return proxyUrl ? \"\".concat(proxyUrl, \"?ddforward\") : baseUrl;\n        },\n        endpointType: endpointType,\n    };\n}\n//# sourceMappingURL=endpointBuilder.js.map","import { display } from '../../tools/display';\nexport var TAG_SIZE_LIMIT = 200;\nexport function buildTags(configuration) {\n    var env = configuration.env, service = configuration.service, version = configuration.version, datacenter = configuration.datacenter;\n    var tags = [];\n    if (env) {\n        tags.push(buildTag('env', env));\n    }\n    if (service) {\n        tags.push(buildTag('service', service));\n    }\n    if (version) {\n        tags.push(buildTag('version', version));\n    }\n    if (datacenter) {\n        tags.push(buildTag('datacenter', datacenter));\n    }\n    return tags;\n}\nvar FORBIDDEN_CHARACTERS = /[^a-z0-9_:./-]/;\nexport function buildTag(key, rawValue) {\n    // See https://docs.datadoghq.com/getting_started/tagging/#defining-tags for tags syntax. Note\n    // that the backend may not follow the exact same rules, so we only want to display an informal\n    // warning.\n    var valueSizeLimit = TAG_SIZE_LIMIT - key.length - 1;\n    if (rawValue.length > valueSizeLimit || FORBIDDEN_CHARACTERS.test(rawValue)) {\n        display.warn(\"\".concat(key, \" value doesn't meet tag requirements and will be sanitized\"));\n    }\n    // Let the backend do most of the sanitization, but still make sure multiple tags can't be crafted\n    // by forging a value containing commas.\n    var sanitizedValue = rawValue.replace(/,/g, '_');\n    return \"\".concat(key, \":\").concat(sanitizedValue);\n}\n//# sourceMappingURL=tags.js.map","import { assign, objectValues } from '../../tools/utils';\nimport { createEndpointBuilder } from './endpointBuilder';\nimport { buildTags } from './tags';\nimport { INTAKE_SITE_US1 } from './intakeSites';\nexport function computeTransportConfiguration(initConfiguration) {\n    var tags = buildTags(initConfiguration);\n    var endpointBuilders = computeEndpointBuilders(initConfiguration, tags);\n    var intakeEndpoints = objectValues(endpointBuilders).map(function (builder) { return builder.buildIntakeUrl(); });\n    var replicaConfiguration = computeReplicaConfiguration(initConfiguration, intakeEndpoints, tags);\n    return assign({\n        isIntakeUrl: function (url) { return intakeEndpoints.some(function (intakeEndpoint) { return url.indexOf(intakeEndpoint) === 0; }); },\n        replica: replicaConfiguration,\n        site: initConfiguration.site || INTAKE_SITE_US1,\n    }, endpointBuilders);\n}\nfunction computeEndpointBuilders(initConfiguration, tags) {\n    return {\n        logsEndpointBuilder: createEndpointBuilder(initConfiguration, 'logs', tags),\n        rumEndpointBuilder: createEndpointBuilder(initConfiguration, 'rum', tags),\n        sessionReplayEndpointBuilder: createEndpointBuilder(initConfiguration, 'sessionReplay', tags),\n    };\n}\nfunction computeReplicaConfiguration(initConfiguration, intakeEndpoints, tags) {\n    if (!initConfiguration.replica) {\n        return;\n    }\n    var replicaConfiguration = assign({}, initConfiguration, {\n        site: INTAKE_SITE_US1,\n        clientToken: initConfiguration.replica.clientToken,\n    });\n    var replicaEndpointBuilders = {\n        logsEndpointBuilder: createEndpointBuilder(replicaConfiguration, 'logs', tags),\n        rumEndpointBuilder: createEndpointBuilder(replicaConfiguration, 'rum', tags),\n    };\n    intakeEndpoints.push.apply(intakeEndpoints, objectValues(replicaEndpointBuilders).map(function (builder) { return builder.buildIntakeUrl(); }));\n    return assign({ applicationId: initConfiguration.replica.applicationId }, replicaEndpointBuilders);\n}\n//# sourceMappingURL=transportConfiguration.js.map","import { getCurrentSite } from '../../browser/cookie';\nimport { catchUserErrors } from '../../tools/catchUserErrors';\nimport { display } from '../../tools/display';\nimport { assign, isPercentage, ONE_KIBI_BYTE, ONE_SECOND } from '../../tools/utils';\nimport { updateExperimentalFeatures } from './experimentalFeatures';\nimport { computeTransportConfiguration } from './transportConfiguration';\nexport var DefaultPrivacyLevel = {\n    ALLOW: 'allow',\n    MASK: 'mask',\n    MASK_USER_INPUT: 'mask-user-input',\n};\nexport function validateAndBuildConfiguration(initConfiguration) {\n    var _a, _b, _c;\n    if (!initConfiguration || !initConfiguration.clientToken) {\n        display.error('Client Token is not configured, we will not send any data.');\n        return;\n    }\n    if (initConfiguration.sampleRate !== undefined && !isPercentage(initConfiguration.sampleRate)) {\n        display.error('Sample Rate should be a number between 0 and 100');\n        return;\n    }\n    if (initConfiguration.telemetrySampleRate !== undefined && !isPercentage(initConfiguration.telemetrySampleRate)) {\n        display.error('Telemetry Sample Rate should be a number between 0 and 100');\n        return;\n    }\n    if (initConfiguration.telemetryConfigurationSampleRate !== undefined &&\n        !isPercentage(initConfiguration.telemetryConfigurationSampleRate)) {\n        display.error('Telemetry Configuration Sample Rate should be a number between 0 and 100');\n        return;\n    }\n    // Set the experimental feature flags as early as possible, so we can use them in most places\n    updateExperimentalFeatures(initConfiguration.enableExperimentalFeatures);\n    return assign({\n        beforeSend: initConfiguration.beforeSend && catchUserErrors(initConfiguration.beforeSend, 'beforeSend threw an error:'),\n        cookieOptions: buildCookieOptions(initConfiguration),\n        sampleRate: (_a = initConfiguration.sampleRate) !== null && _a !== void 0 ? _a : 100,\n        telemetrySampleRate: (_b = initConfiguration.telemetrySampleRate) !== null && _b !== void 0 ? _b : 20,\n        telemetryConfigurationSampleRate: (_c = initConfiguration.telemetryConfigurationSampleRate) !== null && _c !== void 0 ? _c : 5,\n        service: initConfiguration.service,\n        silentMultipleInit: !!initConfiguration.silentMultipleInit,\n        /**\n         * beacon payload max queue size implementation is 64kb\n         * ensure that we leave room for logs, rum and potential other users\n         */\n        batchBytesLimit: 16 * ONE_KIBI_BYTE,\n        eventRateLimiterThreshold: 3000,\n        maxTelemetryEventsPerPage: 15,\n        /**\n         * flush automatically, aim to be lower than ALB connection timeout\n         * to maximize connection reuse.\n         */\n        flushTimeout: 30 * ONE_SECOND,\n        /**\n         * Logs intake limit\n         */\n        batchMessagesLimit: 50,\n        messageBytesLimit: 256 * ONE_KIBI_BYTE,\n    }, computeTransportConfiguration(initConfiguration));\n}\nexport function buildCookieOptions(initConfiguration) {\n    var cookieOptions = {};\n    cookieOptions.secure = mustUseSecureCookie(initConfiguration);\n    cookieOptions.crossSite = !!initConfiguration.useCrossSiteSessionCookie;\n    if (initConfiguration.trackSessionAcrossSubdomains) {\n        cookieOptions.domain = getCurrentSite();\n    }\n    return cookieOptions;\n}\nfunction mustUseSecureCookie(initConfiguration) {\n    return !!initConfiguration.useSecureSessionCookie || !!initConfiguration.useCrossSiteSessionCookie;\n}\nexport function serializeConfiguration(configuration) {\n    return {\n        session_sample_rate: configuration.sampleRate,\n        telemetry_sample_rate: configuration.telemetrySampleRate,\n        telemetry_configuration_sample_rate: configuration.telemetryConfigurationSampleRate,\n        use_before_send: !!configuration.beforeSend,\n        use_cross_site_session_cookie: configuration.useCrossSiteSessionCookie,\n        use_secure_session_cookie: configuration.useSecureSessionCookie,\n        use_proxy: configuration.proxyUrl !== undefined ? !!configuration.proxyUrl : undefined,\n        silent_multiple_init: configuration.silentMultipleInit,\n        track_session_across_subdomains: configuration.trackSessionAcrossSubdomains,\n        track_resources: configuration.trackResources,\n        track_long_task: configuration.trackLongTasks,\n    };\n}\n//# sourceMappingURL=configuration.js.map","import { serializeConfiguration, assign, DefaultPrivacyLevel, display, isPercentage, objectHasValue, validateAndBuildConfiguration, } from '@datadog/browser-core';\nexport function validateAndBuildRumConfiguration(initConfiguration) {\n    var _a, _b, _c, _d, _e;\n    if (!initConfiguration.applicationId) {\n        display.error('Application ID is not configured, no RUM data will be collected.');\n        return;\n    }\n    if (initConfiguration.sessionReplaySampleRate !== undefined &&\n        !isPercentage(initConfiguration.sessionReplaySampleRate)) {\n        display.error('Session Replay Sample Rate should be a number between 0 and 100');\n        return;\n    }\n    // TODO remove fallback in next major\n    var premiumSampleRate = (_a = initConfiguration.premiumSampleRate) !== null && _a !== void 0 ? _a : initConfiguration.replaySampleRate;\n    if (premiumSampleRate !== undefined && initConfiguration.sessionReplaySampleRate !== undefined) {\n        display.warn('Ignoring Premium Sample Rate because Session Replay Sample Rate is set');\n        premiumSampleRate = undefined;\n    }\n    if (premiumSampleRate !== undefined && !isPercentage(premiumSampleRate)) {\n        display.error('Premium Sample Rate should be a number between 0 and 100');\n        return;\n    }\n    if (initConfiguration.tracingSampleRate !== undefined && !isPercentage(initConfiguration.tracingSampleRate)) {\n        display.error('Tracing Sample Rate should be a number between 0 and 100');\n        return;\n    }\n    if (initConfiguration.allowedTracingOrigins !== undefined) {\n        if (!Array.isArray(initConfiguration.allowedTracingOrigins)) {\n            display.error('Allowed Tracing Origins should be an array');\n            return;\n        }\n        if (initConfiguration.allowedTracingOrigins.length !== 0 && initConfiguration.service === undefined) {\n            display.error('Service need to be configured when tracing is enabled');\n            return;\n        }\n    }\n    if (initConfiguration.excludedActivityUrls !== undefined && !Array.isArray(initConfiguration.excludedActivityUrls)) {\n        display.error('Excluded Activity Urls should be an array');\n        return;\n    }\n    var baseConfiguration = validateAndBuildConfiguration(initConfiguration);\n    if (!baseConfiguration) {\n        return;\n    }\n    var trackFrustrations = !!initConfiguration.trackFrustrations;\n    return assign({\n        applicationId: initConfiguration.applicationId,\n        version: initConfiguration.version,\n        actionNameAttribute: initConfiguration.actionNameAttribute,\n        sessionReplaySampleRate: (_c = (_b = initConfiguration.sessionReplaySampleRate) !== null && _b !== void 0 ? _b : premiumSampleRate) !== null && _c !== void 0 ? _c : 100,\n        oldPlansBehavior: initConfiguration.sessionReplaySampleRate === undefined,\n        allowedTracingOrigins: (_d = initConfiguration.allowedTracingOrigins) !== null && _d !== void 0 ? _d : [],\n        tracingSampleRate: initConfiguration.tracingSampleRate,\n        excludedActivityUrls: (_e = initConfiguration.excludedActivityUrls) !== null && _e !== void 0 ? _e : [],\n        trackInteractions: !!initConfiguration.trackInteractions || trackFrustrations,\n        trackFrustrations: trackFrustrations,\n        trackViewsManually: !!initConfiguration.trackViewsManually,\n        trackResources: initConfiguration.trackResources,\n        trackLongTasks: initConfiguration.trackLongTasks,\n        defaultPrivacyLevel: objectHasValue(DefaultPrivacyLevel, initConfiguration.defaultPrivacyLevel)\n            ? initConfiguration.defaultPrivacyLevel\n            : DefaultPrivacyLevel.MASK_USER_INPUT,\n    }, baseConfiguration);\n}\nexport function serializeRumConfiguration(configuration) {\n    var baseSerializedConfiguration = serializeConfiguration(configuration);\n    return assign({\n        premium_sample_rate: configuration.premiumSampleRate,\n        replay_sample_rate: configuration.replaySampleRate,\n        session_replay_sample_rate: configuration.sessionReplaySampleRate,\n        trace_sample_rate: configuration.tracingSampleRate,\n        action_name_attribute: configuration.actionNameAttribute,\n        use_allowed_tracing_origins: Array.isArray(configuration.allowedTracingOrigins) && configuration.allowedTracingOrigins.length > 0,\n        default_privacy_level: configuration.defaultPrivacyLevel,\n        use_excluded_activity_urls: Array.isArray(configuration.allowedTracingOrigins) && configuration.allowedTracingOrigins.length > 0,\n        track_frustrations: configuration.trackFrustrations,\n        track_views_manually: configuration.trackViewsManually,\n        track_interactions: configuration.trackInteractions,\n    }, baseSerializedConfiguration);\n}\n//# sourceMappingURL=configuration.js.map","import { isExperimentalFeatureEnabled, willSyntheticsInjectRum, assign, BoundedBuffer, buildCookieOptions, createContextManager, deepClone, makePublicApi, monitor, clocksNow, timeStampNow, display, callMonitored, createHandlingStack, canUseEventBridge, areCookiesAuthorized, checkUser, sanitizeUser, } from '@datadog/browser-core';\nimport { validateAndBuildRumConfiguration } from '../domain/configuration';\nexport function makeRumPublicApi(startRumImpl, recorderApi, _a) {\n    var _b = _a === void 0 ? {} : _a, _c = _b.ignoreInitIfSyntheticsWillInjectRum, ignoreInitIfSyntheticsWillInjectRum = _c === void 0 ? true : _c;\n    var isAlreadyInitialized = false;\n    var globalContextManager = createContextManager();\n    var userContextManager = createContextManager();\n    var getInternalContextStrategy = function () { return undefined; };\n    var getInitConfigurationStrategy = function () { return undefined; };\n    var bufferApiCalls = new BoundedBuffer();\n    var addTimingStrategy = function (name, time) {\n        if (time === void 0) { time = timeStampNow(); }\n        bufferApiCalls.add(function () { return addTimingStrategy(name, time); });\n    };\n    var startViewStrategy = function (options, startClocks) {\n        if (startClocks === void 0) { startClocks = clocksNow(); }\n        bufferApiCalls.add(function () { return startViewStrategy(options, startClocks); });\n    };\n    var addActionStrategy = function (action, commonContext) {\n        if (commonContext === void 0) { commonContext = {\n            context: globalContextManager.getContext(),\n            user: userContextManager.getContext(),\n        }; }\n        bufferApiCalls.add(function () { return addActionStrategy(action, commonContext); });\n    };\n    var addErrorStrategy = function (providedError, commonContext) {\n        if (commonContext === void 0) { commonContext = {\n            context: globalContextManager.getContext(),\n            user: userContextManager.getContext(),\n        }; }\n        bufferApiCalls.add(function () { return addErrorStrategy(providedError, commonContext); });\n    };\n    var addFeatureFlagEvaluationStrategy = function (key, value) {\n        bufferApiCalls.add(function () { return addFeatureFlagEvaluationStrategy(key, value); });\n    };\n    function initRum(initConfiguration) {\n        // If we are in a Synthetics test configured to automatically inject a RUM instance, we want to\n        // completely discard the customer application RUM instance by ignoring their init() call.  But,\n        // we should not ignore the init() call from the Synthetics-injected RUM instance, so the\n        // internal `ignoreInitIfSyntheticsWillInjectRum` option is here to bypass this condition.\n        if (ignoreInitIfSyntheticsWillInjectRum && willSyntheticsInjectRum()) {\n            return;\n        }\n        if (canUseEventBridge()) {\n            initConfiguration = overrideInitConfigurationForBridge(initConfiguration);\n        }\n        else if (!canHandleSession(initConfiguration)) {\n            return;\n        }\n        if (!canInitRum(initConfiguration)) {\n            return;\n        }\n        var configuration = validateAndBuildRumConfiguration(initConfiguration);\n        if (!configuration) {\n            return;\n        }\n        if (isExperimentalFeatureEnabled('feature_flags')) {\n            ;\n            rumPublicApi.addFeatureFlagEvaluation = monitor(function (key, value) {\n                addFeatureFlagEvaluationStrategy(key, value);\n            });\n        }\n        if (!configuration.trackViewsManually) {\n            doStartRum(initConfiguration, configuration);\n        }\n        else {\n            // drain beforeInitCalls by buffering them until we start RUM\n            // if we get a startView, drain re-buffered calls before continuing to drain beforeInitCalls\n            // in order to ensure that calls are processed in order\n            var beforeInitCalls = bufferApiCalls;\n            bufferApiCalls = new BoundedBuffer();\n            startViewStrategy = function (options) {\n                doStartRum(initConfiguration, configuration, options);\n            };\n            beforeInitCalls.drain();\n        }\n        getInitConfigurationStrategy = function () { return deepClone(initConfiguration); };\n        isAlreadyInitialized = true;\n    }\n    function doStartRum(initConfiguration, configuration, initialViewOptions) {\n        var startRumResults = startRumImpl(initConfiguration, configuration, function () { return ({\n            user: userContextManager.getContext(),\n            context: globalContextManager.getContext(),\n            hasReplay: recorderApi.isRecording() ? true : undefined,\n        }); }, recorderApi, initialViewOptions);\n        (startViewStrategy = startRumResults.startView, addActionStrategy = startRumResults.addAction, addErrorStrategy = startRumResults.addError, addTimingStrategy = startRumResults.addTiming, addFeatureFlagEvaluationStrategy = startRumResults.addFeatureFlagEvaluation, getInternalContextStrategy = startRumResults.getInternalContext);\n        bufferApiCalls.drain();\n        recorderApi.onRumStart(startRumResults.lifeCycle, configuration, startRumResults.session, startRumResults.viewContexts);\n    }\n    var startView = monitor(function (options) {\n        var sanitizedOptions = typeof options === 'object' ? options : { name: options };\n        startViewStrategy(sanitizedOptions);\n    });\n    var rumPublicApi = makePublicApi({\n        init: monitor(initRum),\n        /** @deprecated: use setGlobalContextProperty instead */\n        addRumGlobalContext: monitor(globalContextManager.add),\n        setGlobalContextProperty: monitor(globalContextManager.setContextProperty),\n        /** @deprecated: use removeGlobalContextProperty instead */\n        removeRumGlobalContext: monitor(globalContextManager.remove),\n        removeGlobalContextProperty: monitor(globalContextManager.removeContextProperty),\n        /** @deprecated: use getGlobalContext instead */\n        getRumGlobalContext: monitor(globalContextManager.get),\n        getGlobalContext: monitor(globalContextManager.getContext),\n        /** @deprecated: use setGlobalContext instead */\n        setRumGlobalContext: monitor(globalContextManager.set),\n        setGlobalContext: monitor(globalContextManager.setContext),\n        clearGlobalContext: monitor(globalContextManager.clearContext),\n        getInternalContext: monitor(function (startTime) { return getInternalContextStrategy(startTime); }),\n        getInitConfiguration: monitor(function () { return getInitConfigurationStrategy(); }),\n        addAction: monitor(function (name, context) {\n            addActionStrategy({\n                name: name,\n                context: deepClone(context),\n                startClocks: clocksNow(),\n                type: \"custom\" /* CUSTOM */,\n            });\n        }),\n        addError: function (error, context) {\n            var handlingStack = createHandlingStack();\n            callMonitored(function () {\n                addErrorStrategy({\n                    error: error,\n                    handlingStack: handlingStack,\n                    context: deepClone(context),\n                    startClocks: clocksNow(),\n                });\n            });\n        },\n        addTiming: monitor(function (name, time) {\n            addTimingStrategy(name, time);\n        }),\n        setUser: monitor(function (newUser) {\n            if (checkUser(newUser)) {\n                userContextManager.setContext(sanitizeUser(newUser));\n            }\n        }),\n        getUser: monitor(userContextManager.getContext),\n        setUserProperty: monitor(function (key, property) {\n            var _a;\n            var sanitizedProperty = sanitizeUser((_a = {}, _a[key] = property, _a))[key];\n            userContextManager.setContextProperty(key, sanitizedProperty);\n        }),\n        removeUserProperty: monitor(userContextManager.removeContextProperty),\n        /** @deprecated: renamed to clearUser */\n        removeUser: monitor(userContextManager.clearContext),\n        clearUser: monitor(userContextManager.clearContext),\n        startView: startView,\n        startSessionReplayRecording: monitor(recorderApi.start),\n        stopSessionReplayRecording: monitor(recorderApi.stop),\n    });\n    return rumPublicApi;\n    function canHandleSession(initConfiguration) {\n        if (!areCookiesAuthorized(buildCookieOptions(initConfiguration))) {\n            display.warn('Cookies are not authorized, we will not send any data.');\n            return false;\n        }\n        if (isLocalFile()) {\n            display.error('Execution is not allowed in the current context.');\n            return false;\n        }\n        return true;\n    }\n    function canInitRum(initConfiguration) {\n        if (isAlreadyInitialized) {\n            if (!initConfiguration.silentMultipleInit) {\n                display.error('DD_RUM is already initialized.');\n            }\n            return false;\n        }\n        return true;\n    }\n    function overrideInitConfigurationForBridge(initConfiguration) {\n        return assign({}, initConfiguration, {\n            applicationId: '00000000-aaaa-0000-aaaa-000000000000',\n            clientToken: 'empty',\n            sampleRate: 100,\n        });\n    }\n    function isLocalFile() {\n        return window.location.protocol === 'file:';\n    }\n}\n//# sourceMappingURL=rumPublicApi.js.map","var Observable = /** @class */ (function () {\n    function Observable(onFirstSubscribe) {\n        this.onFirstSubscribe = onFirstSubscribe;\n        this.observers = [];\n    }\n    Observable.prototype.subscribe = function (f) {\n        var _this = this;\n        if (!this.observers.length && this.onFirstSubscribe) {\n            this.onLastUnsubscribe = this.onFirstSubscribe() || undefined;\n        }\n        this.observers.push(f);\n        return {\n            unsubscribe: function () {\n                _this.observers = _this.observers.filter(function (other) { return f !== other; });\n                if (!_this.observers.length && _this.onLastUnsubscribe) {\n                    _this.onLastUnsubscribe();\n                }\n            },\n        };\n    };\n    Observable.prototype.notify = function (data) {\n        this.observers.forEach(function (observer) { return observer(data); });\n    };\n    return Observable;\n}());\nexport { Observable };\nexport function mergeObservables() {\n    var observables = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        observables[_i] = arguments[_i];\n    }\n    var globalObservable = new Observable(function () {\n        var subscriptions = observables.map(function (observable) {\n            return observable.subscribe(function (data) { return globalObservable.notify(data); });\n        });\n        return function () { return subscriptions.forEach(function (subscription) { return subscription.unsubscribe(); }); };\n    });\n    return globalObservable;\n}\n//# sourceMappingURL=observable.js.map","import { Observable } from '../tools/observable';\nimport { addEventListener } from '../tools/utils';\nexport function createPageExitObservable() {\n    var observable = new Observable(function () {\n        /**\n         * Only event that guarantee to fire on mobile devices when the page transitions to background state\n         * (e.g. when user switches to a different application, goes to homescreen, etc), or is being unloaded.\n         */\n        var stopVisibilityChangeListener = addEventListener(document, \"visibilitychange\" /* VISIBILITY_CHANGE */, function () {\n            if (document.visibilityState === 'hidden') {\n                observable.notify({ reason: \"visibility_hidden\" /* HIDDEN */ });\n            }\n        }, { capture: true }).stop;\n        /**\n         * Safari does not support yet to send a request during:\n         * - a visibility change during doc unload (cf: https://bugs.webkit.org/show_bug.cgi?id=194897)\n         * - a page hide transition (cf: https://bugs.webkit.org/show_bug.cgi?id=188329)\n         */\n        var stopBeforeUnloadListener = addEventListener(window, \"beforeunload\" /* BEFORE_UNLOAD */, function () {\n            observable.notify({ reason: \"before_unload\" /* UNLOADING */ });\n        }).stop;\n        return function () {\n            stopVisibilityChangeListener();\n            stopBeforeUnloadListener();\n        };\n    });\n    return observable;\n}\n//# sourceMappingURL=pageExitObservable.js.map","export var TelemetryType = {\n    log: 'log',\n    configuration: 'configuration',\n};\n//# sourceMappingURL=rawTelemetryEvent.types.js.map","import { ConsoleApiName } from '../../tools/display';\nimport { toStackTraceString } from '../../tools/error';\nimport { assign, combine, jsonStringify, performDraw, includes, startsWith, arrayFrom } from '../../tools/utils';\nimport { getExperimentalFeatures, INTAKE_SITE_STAGING, INTAKE_SITE_US1_FED } from '../configuration';\nimport { computeStackTrace } from '../tracekit';\nimport { Observable } from '../../tools/observable';\nimport { timeStampNow } from '../../tools/timeUtils';\nimport { displayIfDebugEnabled, startMonitorErrorCollection } from '../../tools/monitor';\nimport { TelemetryType } from './rawTelemetryEvent.types';\nvar ALLOWED_FRAME_URLS = [\n    'https://www.datadoghq-browser-agent.com',\n    'https://www.datad0g-browser-agent.com',\n    'http://localhost',\n    '<anonymous>',\n];\nvar TELEMETRY_EXCLUDED_SITES = [INTAKE_SITE_US1_FED];\nvar telemetryConfiguration = { maxEventsPerPage: 0, sentEventCount: 0, telemetryEnabled: false, telemetryConfigurationEnabled: false };\nvar onRawTelemetryEventCollected;\nexport function startTelemetry(telemetryService, configuration) {\n    var contextProvider;\n    var observable = new Observable();\n    telemetryConfiguration.telemetryEnabled = performDraw(configuration.telemetrySampleRate);\n    telemetryConfiguration.telemetryConfigurationEnabled =\n        telemetryConfiguration.telemetryEnabled && performDraw(configuration.telemetryConfigurationSampleRate);\n    onRawTelemetryEventCollected = function (event) {\n        if (!includes(TELEMETRY_EXCLUDED_SITES, configuration.site) && telemetryConfiguration.telemetryEnabled) {\n            observable.notify(toTelemetryEvent(telemetryService, event));\n        }\n    };\n    startMonitorErrorCollection(addTelemetryError);\n    assign(telemetryConfiguration, {\n        maxEventsPerPage: configuration.maxTelemetryEventsPerPage,\n        sentEventCount: 0,\n    });\n    function toTelemetryEvent(telemetryService, event) {\n        return combine({\n            type: 'telemetry',\n            date: timeStampNow(),\n            service: telemetryService,\n            version: \"4.25.0\",\n            source: 'browser',\n            _dd: {\n                format_version: 2,\n            },\n            telemetry: event,\n            experimental_features: arrayFrom(getExperimentalFeatures()),\n        }, contextProvider !== undefined ? contextProvider() : {});\n    }\n    return {\n        setContextProvider: function (provider) {\n            contextProvider = provider;\n        },\n        observable: observable,\n    };\n}\nexport function startFakeTelemetry() {\n    var events = [];\n    assign(telemetryConfiguration, {\n        maxEventsPerPage: Infinity,\n        sentEventCount: 0,\n    });\n    onRawTelemetryEventCollected = function (event) {\n        events.push(event);\n    };\n    return events;\n}\nexport function resetTelemetry() {\n    onRawTelemetryEventCollected = undefined;\n}\n/**\n * Avoid mixing telemetry events from different data centers\n * but keep replicating staging events for reliability\n */\nexport function isTelemetryReplicationAllowed(configuration) {\n    return configuration.site === INTAKE_SITE_STAGING;\n}\nexport function addTelemetryDebug(message, context) {\n    displayIfDebugEnabled(ConsoleApiName.debug, message, context);\n    addTelemetry(assign({\n        type: TelemetryType.log,\n        message: message,\n        status: \"debug\" /* debug */,\n    }, context));\n}\nexport function addTelemetryError(e) {\n    addTelemetry(assign({\n        type: TelemetryType.log,\n        status: \"error\" /* error */,\n    }, formatError(e)));\n}\nexport function addTelemetryConfiguration(configuration) {\n    if (telemetryConfiguration.telemetryConfigurationEnabled) {\n        addTelemetry({\n            type: TelemetryType.configuration,\n            configuration: configuration,\n        });\n    }\n}\nfunction addTelemetry(event) {\n    if (onRawTelemetryEventCollected && telemetryConfiguration.sentEventCount < telemetryConfiguration.maxEventsPerPage) {\n        telemetryConfiguration.sentEventCount += 1;\n        onRawTelemetryEventCollected(event);\n    }\n}\nexport function formatError(e) {\n    if (e instanceof Error) {\n        var stackTrace = computeStackTrace(e);\n        return {\n            error: {\n                kind: stackTrace.name,\n                stack: toStackTraceString(scrubCustomerFrames(stackTrace)),\n            },\n            message: stackTrace.message,\n        };\n    }\n    return {\n        error: {\n            stack: 'Not an instance of error',\n        },\n        message: \"Uncaught \".concat(jsonStringify(e)),\n    };\n}\nexport function scrubCustomerFrames(stackTrace) {\n    stackTrace.stack = stackTrace.stack.filter(function (frame) { return !frame.url || ALLOWED_FRAME_URLS.some(function (allowedFrameUrl) { return startsWith(frame.url, allowedFrameUrl); }); });\n    return stackTrace;\n}\n//# sourceMappingURL=telemetry.js.map","import { monitor, noop, Observable } from '@datadog/browser-core';\nexport function createDOMMutationObservable() {\n    var MutationObserver = getMutationObserverConstructor();\n    var observable = new Observable(function () {\n        if (!MutationObserver) {\n            return;\n        }\n        var observer = new MutationObserver(monitor(function () { return observable.notify(); }));\n        observer.observe(document, {\n            attributes: true,\n            characterData: true,\n            childList: true,\n            subtree: true,\n        });\n        return function () { return observer.disconnect(); };\n    });\n    return observable;\n}\nexport function getMutationObserverConstructor() {\n    var constructor;\n    var browserWindow = window;\n    // Angular uses Zone.js to provide a context persisting across async tasks.  Zone.js replaces the\n    // global MutationObserver constructor with a patched version to support the context propagation.\n    // There is an ongoing issue[1][2] with this setup when using a MutationObserver within a Angular\n    // component: on some occasions, the callback is being called in an infinite loop, causing the\n    // page to freeze (even if the callback is completely empty).\n    //\n    // To work around this issue, we try to get the original MutationObserver constructor stored by\n    // Zone.js.\n    //\n    // [1] https://github.com/angular/angular/issues/26948\n    // [2] https://github.com/angular/angular/issues/31712\n    if (browserWindow.Zone) {\n        var zoneSymbol = browserWindow.Zone.__symbol__;\n        // Zone.js 0.8.6+ is storing original class constructors into the browser 'window' object[3].\n        //\n        // [3] https://github.com/angular/angular/blob/6375fa79875c0fe7b815efc45940a6e6f5c9c9eb/packages/zone.js/lib/common/utils.ts#L288\n        constructor = browserWindow[zoneSymbol('MutationObserver')];\n        if (!constructor && browserWindow.MutationObserver) {\n            // Anterior Zone.js versions (used in Angular 2) does not expose the original MutationObserver\n            // in the 'window' object. Luckily, the patched MutationObserver class is storing an original\n            // instance in its properties[4]. Let's get the original MutationObserver constructor from\n            // there.\n            //\n            // [4] https://github.com/angular/zone.js/blob/v0.8.5/lib/common/utils.ts#L412\n            var patchedInstance = new browserWindow.MutationObserver(noop);\n            var originalInstance = patchedInstance[zoneSymbol('originalInstance')];\n            constructor = originalInstance && originalInstance.constructor;\n        }\n    }\n    if (!constructor) {\n        constructor = browserWindow.MutationObserver;\n    }\n    return constructor;\n}\n//# sourceMappingURL=domMutationObservable.js.map","import { assign, addTelemetryDebug, elapsed, getPathName, includes, isValidUrl, toServerDuration, } from '@datadog/browser-core';\nexport var FAKE_INITIAL_DOCUMENT = 'initial_document';\nvar RESOURCE_TYPES = [\n    [\"document\" /* DOCUMENT */, function (initiatorType) { return FAKE_INITIAL_DOCUMENT === initiatorType; }],\n    [\"xhr\" /* XHR */, function (initiatorType) { return 'xmlhttprequest' === initiatorType; }],\n    [\"fetch\" /* FETCH */, function (initiatorType) { return 'fetch' === initiatorType; }],\n    [\"beacon\" /* BEACON */, function (initiatorType) { return 'beacon' === initiatorType; }],\n    [\"css\" /* CSS */, function (_, path) { return /\\.css$/i.test(path); }],\n    [\"js\" /* JS */, function (_, path) { return /\\.js$/i.test(path); }],\n    [\n        \"image\" /* IMAGE */,\n        function (initiatorType, path) {\n            return includes(['image', 'img', 'icon'], initiatorType) || /\\.(gif|jpg|jpeg|tiff|png|svg|ico)$/i.exec(path) !== null;\n        },\n    ],\n    [\"font\" /* FONT */, function (_, path) { return /\\.(woff|eot|woff2|ttf)$/i.exec(path) !== null; }],\n    [\n        \"media\" /* MEDIA */,\n        function (initiatorType, path) {\n            return includes(['audio', 'video'], initiatorType) || /\\.(mp3|mp4)$/i.exec(path) !== null;\n        },\n    ],\n];\nexport function computeResourceKind(timing) {\n    var url = timing.name;\n    if (!isValidUrl(url)) {\n        addTelemetryDebug(\"Failed to construct URL for \\\"\".concat(timing.name, \"\\\"\"));\n        return \"other\" /* OTHER */;\n    }\n    var path = getPathName(url);\n    for (var _i = 0, RESOURCE_TYPES_1 = RESOURCE_TYPES; _i < RESOURCE_TYPES_1.length; _i++) {\n        var _a = RESOURCE_TYPES_1[_i], type = _a[0], isType = _a[1];\n        if (isType(timing.initiatorType, path)) {\n            return type;\n        }\n    }\n    return \"other\" /* OTHER */;\n}\nfunction areInOrder() {\n    var numbers = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        numbers[_i] = arguments[_i];\n    }\n    for (var i = 1; i < numbers.length; i += 1) {\n        if (numbers[i - 1] > numbers[i]) {\n            return false;\n        }\n    }\n    return true;\n}\nexport function isRequestKind(timing) {\n    return timing.initiatorType === 'xmlhttprequest' || timing.initiatorType === 'fetch';\n}\nexport function computePerformanceResourceDuration(entry) {\n    var duration = entry.duration, startTime = entry.startTime, responseEnd = entry.responseEnd;\n    // Safari duration is always 0 on timings blocked by cross origin policies.\n    if (duration === 0 && startTime < responseEnd) {\n        return toServerDuration(elapsed(startTime, responseEnd));\n    }\n    return toServerDuration(duration);\n}\nexport function computePerformanceResourceDetails(entry) {\n    var validEntry = toValidEntry(entry);\n    if (!validEntry) {\n        return undefined;\n    }\n    var startTime = validEntry.startTime, fetchStart = validEntry.fetchStart, redirectStart = validEntry.redirectStart, redirectEnd = validEntry.redirectEnd, domainLookupStart = validEntry.domainLookupStart, domainLookupEnd = validEntry.domainLookupEnd, connectStart = validEntry.connectStart, secureConnectionStart = validEntry.secureConnectionStart, connectEnd = validEntry.connectEnd, requestStart = validEntry.requestStart, responseStart = validEntry.responseStart, responseEnd = validEntry.responseEnd;\n    var details = {\n        download: formatTiming(startTime, responseStart, responseEnd),\n        first_byte: formatTiming(startTime, requestStart, responseStart),\n    };\n    // Make sure a connection occurred\n    if (connectEnd !== fetchStart) {\n        details.connect = formatTiming(startTime, connectStart, connectEnd);\n        // Make sure a secure connection occurred\n        if (areInOrder(connectStart, secureConnectionStart, connectEnd)) {\n            details.ssl = formatTiming(startTime, secureConnectionStart, connectEnd);\n        }\n    }\n    // Make sure a domain lookup occurred\n    if (domainLookupEnd !== fetchStart) {\n        details.dns = formatTiming(startTime, domainLookupStart, domainLookupEnd);\n    }\n    if (hasRedirection(entry)) {\n        details.redirect = formatTiming(startTime, redirectStart, redirectEnd);\n    }\n    return details;\n}\nexport function toValidEntry(entry) {\n    // Ensure timings are in the right order. On top of filtering out potential invalid\n    // RumPerformanceResourceTiming, it will ignore entries from requests where timings cannot be\n    // collected, for example cross origin requests without a \"Timing-Allow-Origin\" header allowing\n    // it.\n    if (!areInOrder(entry.startTime, entry.fetchStart, entry.domainLookupStart, entry.domainLookupEnd, entry.connectStart, entry.connectEnd, entry.requestStart, entry.responseStart, entry.responseEnd)) {\n        return undefined;\n    }\n    if (!hasRedirection(entry)) {\n        return entry;\n    }\n    var redirectStart = entry.redirectStart, redirectEnd = entry.redirectEnd;\n    // Firefox doesn't provide redirect timings on cross origin requests.\n    // Provide a default for those.\n    if (redirectStart < entry.startTime) {\n        redirectStart = entry.startTime;\n    }\n    if (redirectEnd < entry.startTime) {\n        redirectEnd = entry.fetchStart;\n    }\n    // Make sure redirect timings are in order\n    if (!areInOrder(entry.startTime, redirectStart, redirectEnd, entry.fetchStart)) {\n        return undefined;\n    }\n    return assign({}, entry, {\n        redirectEnd: redirectEnd,\n        redirectStart: redirectStart,\n    });\n}\nfunction hasRedirection(entry) {\n    // The only time fetchStart is different than startTime is if a redirection occurred.\n    return entry.fetchStart !== entry.startTime;\n}\nfunction formatTiming(origin, start, end) {\n    return {\n        duration: toServerDuration(elapsed(start, end)),\n        start: toServerDuration(elapsed(origin, start)),\n    };\n}\nexport function computeSize(entry) {\n    // Make sure a request actually occurred\n    if (entry.startTime < entry.responseStart) {\n        return entry.decodedBodySize;\n    }\n    return undefined;\n}\nexport function isAllowedRequestUrl(configuration, url) {\n    return url && !configuration.isIntakeUrl(url);\n}\n//# sourceMappingURL=resourceUtils.js.map","import { dateNow, findCommaSeparatedValue, ONE_MINUTE } from '@datadog/browser-core';\nexport var INITIAL_DOCUMENT_OUTDATED_TRACE_ID_THRESHOLD = 2 * ONE_MINUTE;\nexport function getDocumentTraceId(document) {\n    var data = getDocumentTraceDataFromMeta(document) || getDocumentTraceDataFromComment(document);\n    if (!data || data.traceTime <= dateNow() - INITIAL_DOCUMENT_OUTDATED_TRACE_ID_THRESHOLD) {\n        return undefined;\n    }\n    return data.traceId;\n}\nexport function getDocumentTraceDataFromMeta(document) {\n    var traceIdMeta = document.querySelector('meta[name=dd-trace-id]');\n    var traceTimeMeta = document.querySelector('meta[name=dd-trace-time]');\n    return createDocumentTraceData(traceIdMeta && traceIdMeta.content, traceTimeMeta && traceTimeMeta.content);\n}\nexport function getDocumentTraceDataFromComment(document) {\n    var comment = findTraceComment(document);\n    if (!comment) {\n        return undefined;\n    }\n    return createDocumentTraceData(findCommaSeparatedValue(comment, 'trace-id'), findCommaSeparatedValue(comment, 'trace-time'));\n}\nexport function createDocumentTraceData(traceId, rawTraceTime) {\n    var traceTime = rawTraceTime && Number(rawTraceTime);\n    if (!traceId || !traceTime) {\n        return undefined;\n    }\n    return {\n        traceId: traceId,\n        traceTime: traceTime,\n    };\n}\nexport function findTraceComment(document) {\n    // 1. Try to find the comment as a direct child of the document\n    // Note: TSLint advises to use a 'for of', but TS doesn't allow to use 'for of' if the iterated\n    // value is not an array or string (here, a NodeList).\n    for (var i = 0; i < document.childNodes.length; i += 1) {\n        var comment = getTraceCommentFromNode(document.childNodes[i]);\n        if (comment) {\n            return comment;\n        }\n    }\n    // 2. If the comment is placed after the </html> tag, but have some space or new lines before or\n    // after, the DOM parser will lift it (and the surrounding text) at the end of the <body> tag.\n    // Try to look for the comment at the end of the <body> by by iterating over its child nodes in\n    // reverse order, stopping if we come across a non-text node.\n    if (document.body) {\n        for (var i = document.body.childNodes.length - 1; i >= 0; i -= 1) {\n            var node = document.body.childNodes[i];\n            var comment = getTraceCommentFromNode(node);\n            if (comment) {\n                return comment;\n            }\n            if (!isTextNode(node)) {\n                break;\n            }\n        }\n    }\n}\nfunction getTraceCommentFromNode(node) {\n    if (node && isCommentNode(node)) {\n        var match = /^\\s*DATADOG;(.*?)\\s*$/.exec(node.data);\n        if (match) {\n            return match[1];\n        }\n    }\n}\nfunction isCommentNode(node) {\n    return node.nodeName === '#comment';\n}\nfunction isTextNode(node) {\n    return node.nodeName === '#text';\n}\n//# sourceMappingURL=getDocumentTraceId.js.map","import { monitor, Observable, throttle, addEventListener } from '@datadog/browser-core';\nvar viewportObservable;\nexport function initViewportObservable() {\n    if (!viewportObservable) {\n        viewportObservable = createViewportObservable();\n    }\n    return viewportObservable;\n}\nexport function createViewportObservable() {\n    var observable = new Observable(function () {\n        var updateDimension = throttle(monitor(function () {\n            observable.notify(getViewportDimension());\n        }), 200).throttled;\n        return addEventListener(window, \"resize\" /* RESIZE */, updateDimension, { capture: true, passive: true }).stop;\n    });\n    return observable;\n}\n// excludes the width and height of any rendered classic scrollbar that is fixed to the visual viewport\nexport function getViewportDimension() {\n    var visual = window.visualViewport;\n    if (visual) {\n        return {\n            width: Number(visual.width * visual.scale),\n            height: Number(visual.height * visual.scale),\n        };\n    }\n    return {\n        width: Number(window.innerWidth || 0),\n        height: Number(window.innerHeight || 0),\n    };\n}\n//# sourceMappingURL=viewportObservable.js.map","import { isExperimentalFeatureEnabled } from '@datadog/browser-core';\nimport { getViewportDimension, initViewportObservable } from '../../browser/viewportObservable';\nvar viewport;\nvar stopListeners;\nexport function getDisplayContext() {\n    if (!isExperimentalFeatureEnabled('clickmap'))\n        return;\n    if (!viewport) {\n        viewport = getViewportDimension();\n        stopListeners = initViewportObservable().subscribe(function (viewportDimension) {\n            viewport = viewportDimension;\n        }).unsubscribe;\n    }\n    return {\n        viewport: viewport,\n    };\n}\nexport function resetDisplayContext() {\n    if (stopListeners)\n        stopListeners();\n    viewport = undefined;\n}\n//# sourceMappingURL=displayContext.js.map","import { dateNow, assign, addEventListeners, getRelativeTime, isNumber, monitor, relativeNow, runOnReadyState, } from '@datadog/browser-core';\nimport { FAKE_INITIAL_DOCUMENT, isAllowedRequestUrl } from '../domain/rumEventsCollection/resource/resourceUtils';\nimport { getDocumentTraceId } from '../domain/tracing/getDocumentTraceId';\nfunction supportPerformanceObject() {\n    return window.performance !== undefined && 'getEntries' in performance;\n}\nexport function supportPerformanceTimingEvent(entryType) {\n    return (window.PerformanceObserver &&\n        PerformanceObserver.supportedEntryTypes !== undefined &&\n        PerformanceObserver.supportedEntryTypes.includes(entryType));\n}\nexport function startPerformanceCollection(lifeCycle, configuration) {\n    retrieveInitialDocumentResourceTiming(function (timing) {\n        handleRumPerformanceEntries(lifeCycle, configuration, [timing]);\n    });\n    if (supportPerformanceObject()) {\n        var performanceEntries_1 = performance.getEntries();\n        // Because the performance entry list can be quite large\n        // delay the computation to prevent the SDK from blocking the main thread on init\n        setTimeout(monitor(function () { return handleRumPerformanceEntries(lifeCycle, configuration, performanceEntries_1); }));\n    }\n    if (window.PerformanceObserver) {\n        var handlePerformanceEntryList_1 = monitor(function (entries) {\n            return handleRumPerformanceEntries(lifeCycle, configuration, entries.getEntries());\n        });\n        var mainEntries = ['resource', 'navigation', 'longtask', 'paint'];\n        var experimentalEntries = ['largest-contentful-paint', 'first-input', 'layout-shift'];\n        try {\n            // Experimental entries are not retrieved by performance.getEntries()\n            // use a single PerformanceObserver with buffered flag by type\n            // to get values that could happen before SDK init\n            experimentalEntries.forEach(function (type) {\n                var observer = new PerformanceObserver(handlePerformanceEntryList_1);\n                observer.observe({ type: type, buffered: true });\n            });\n        }\n        catch (e) {\n            // Some old browser versions (ex: chrome 67) don't support the PerformanceObserver type and buffered options\n            // In these cases, fallback to PerformanceObserver with entryTypes\n            mainEntries.push.apply(mainEntries, experimentalEntries);\n        }\n        var mainObserver = new PerformanceObserver(handlePerformanceEntryList_1);\n        mainObserver.observe({ entryTypes: mainEntries });\n        if (supportPerformanceObject() && 'addEventListener' in performance) {\n            // https://bugzilla.mozilla.org/show_bug.cgi?id=1559377\n            performance.addEventListener('resourcetimingbufferfull', function () {\n                performance.clearResourceTimings();\n            });\n        }\n    }\n    if (!supportPerformanceTimingEvent('navigation')) {\n        retrieveNavigationTiming(function (timing) {\n            handleRumPerformanceEntries(lifeCycle, configuration, [timing]);\n        });\n    }\n    if (!supportPerformanceTimingEvent('first-input')) {\n        retrieveFirstInputTiming(function (timing) {\n            handleRumPerformanceEntries(lifeCycle, configuration, [timing]);\n        });\n    }\n}\nexport function retrieveInitialDocumentResourceTiming(callback) {\n    runOnReadyState('interactive', function () {\n        var timing;\n        var forcedAttributes = {\n            entryType: 'resource',\n            initiatorType: FAKE_INITIAL_DOCUMENT,\n            traceId: getDocumentTraceId(document),\n        };\n        if (supportPerformanceTimingEvent('navigation') && performance.getEntriesByType('navigation').length > 0) {\n            var navigationEntry = performance.getEntriesByType('navigation')[0];\n            timing = assign(navigationEntry.toJSON(), forcedAttributes);\n        }\n        else {\n            var relativePerformanceTiming = computeRelativePerformanceTiming();\n            timing = assign(relativePerformanceTiming, {\n                decodedBodySize: 0,\n                duration: relativePerformanceTiming.responseEnd,\n                name: window.location.href,\n                startTime: 0,\n            }, forcedAttributes);\n        }\n        callback(timing);\n    });\n}\nfunction retrieveNavigationTiming(callback) {\n    function sendFakeTiming() {\n        callback(assign(computeRelativePerformanceTiming(), {\n            entryType: 'navigation',\n        }));\n    }\n    runOnReadyState('complete', function () {\n        // Send it a bit after the actual load event, so the \"loadEventEnd\" timing is accurate\n        setTimeout(monitor(sendFakeTiming));\n    });\n}\n/**\n * first-input timing entry polyfill based on\n * https://github.com/GoogleChrome/web-vitals/blob/master/src/lib/polyfills/firstInputPolyfill.ts\n */\nfunction retrieveFirstInputTiming(callback) {\n    var startTimeStamp = dateNow();\n    var timingSent = false;\n    var removeEventListeners = addEventListeners(window, [\"click\" /* CLICK */, \"mousedown\" /* MOUSE_DOWN */, \"keydown\" /* KEY_DOWN */, \"touchstart\" /* TOUCH_START */, \"pointerdown\" /* POINTER_DOWN */], function (evt) {\n        // Only count cancelable events, which should trigger behavior important to the user.\n        if (!evt.cancelable) {\n            return;\n        }\n        // This timing will be used to compute the \"first Input delay\", which is the delta between\n        // when the system received the event (e.g. evt.timeStamp) and when it could run the callback\n        // (e.g. performance.now()).\n        var timing = {\n            entryType: 'first-input',\n            processingStart: relativeNow(),\n            startTime: evt.timeStamp,\n        };\n        if (evt.type === \"pointerdown\" /* POINTER_DOWN */) {\n            sendTimingIfPointerIsNotCancelled(timing);\n        }\n        else {\n            sendTiming(timing);\n        }\n    }, { passive: true, capture: true }).stop;\n    /**\n     * Pointer events are a special case, because they can trigger main or compositor thread behavior.\n     * We differentiate these cases based on whether or not we see a pointercancel event, which are\n     * fired when we scroll. If we're scrolling we don't need to report input delay since FID excludes\n     * scrolling and pinch/zooming.\n     */\n    function sendTimingIfPointerIsNotCancelled(timing) {\n        addEventListeners(window, [\"pointerup\" /* POINTER_UP */, \"pointercancel\" /* POINTER_CANCEL */], function (event) {\n            if (event.type === \"pointerup\" /* POINTER_UP */) {\n                sendTiming(timing);\n            }\n        }, { once: true });\n    }\n    function sendTiming(timing) {\n        if (!timingSent) {\n            timingSent = true;\n            removeEventListeners();\n            // In some cases the recorded delay is clearly wrong, e.g. it's negative or it's larger than\n            // the time between now and when the page was loaded.\n            // - https://github.com/GoogleChromeLabs/first-input-delay/issues/4\n            // - https://github.com/GoogleChromeLabs/first-input-delay/issues/6\n            // - https://github.com/GoogleChromeLabs/first-input-delay/issues/7\n            var delay = timing.processingStart - timing.startTime;\n            if (delay >= 0 && delay < dateNow() - startTimeStamp) {\n                callback(timing);\n            }\n        }\n    }\n}\nfunction computeRelativePerformanceTiming() {\n    var result = {};\n    var timing = performance.timing;\n    for (var key in timing) {\n        if (isNumber(timing[key])) {\n            var numberKey = key;\n            var timingElement = timing[numberKey];\n            result[numberKey] = timingElement === 0 ? 0 : getRelativeTime(timingElement);\n        }\n    }\n    return result;\n}\nfunction handleRumPerformanceEntries(lifeCycle, configuration, entries) {\n    var rumPerformanceEntries = entries.filter(function (entry) {\n        return entry.entryType === 'resource' ||\n            entry.entryType === 'navigation' ||\n            entry.entryType === 'paint' ||\n            entry.entryType === 'longtask' ||\n            entry.entryType === 'largest-contentful-paint' ||\n            entry.entryType === 'first-input' ||\n            entry.entryType === 'layout-shift';\n    });\n    var rumAllowedPerformanceEntries = rumPerformanceEntries.filter(function (entry) { return !isIncompleteNavigation(entry) && !isForbiddenResource(configuration, entry); });\n    if (rumAllowedPerformanceEntries.length) {\n        lifeCycle.notify(0 /* PERFORMANCE_ENTRIES_COLLECTED */, rumAllowedPerformanceEntries);\n    }\n}\nfunction isIncompleteNavigation(entry) {\n    return entry.entryType === 'navigation' && entry.loadEventEnd <= 0;\n}\nfunction isForbiddenResource(configuration, entry) {\n    return entry.entryType === 'resource' && !isAllowedRequestUrl(configuration, entry.name);\n}\n//# sourceMappingURL=performanceCollection.js.map","import { ErrorSource } from './error';\nimport { clocksNow } from './timeUtils';\nimport { ONE_MINUTE } from './utils';\nexport function createEventRateLimiter(eventType, limit, onLimitReached) {\n    var eventCount = 0;\n    var allowNextEvent = false;\n    return {\n        isLimitReached: function () {\n            if (eventCount === 0) {\n                setTimeout(function () {\n                    eventCount = 0;\n                }, ONE_MINUTE);\n            }\n            eventCount += 1;\n            if (eventCount <= limit || allowNextEvent) {\n                allowNextEvent = false;\n                return false;\n            }\n            if (eventCount === limit + 1) {\n                allowNextEvent = true;\n                try {\n                    onLimitReached({\n                        message: \"Reached max number of \".concat(eventType, \"s by minute: \").concat(limit),\n                        source: ErrorSource.AGENT,\n                        startClocks: clocksNow(),\n                    });\n                }\n                finally {\n                    allowNextEvent = false;\n                }\n            }\n            return true;\n        },\n    };\n}\n//# sourceMappingURL=createEventRateLimiter.js.map","import { deepClone, getType } from './utils';\n/**\n * Current limitation:\n * - field path do not support array, 'a.b.c' only\n */\nexport function limitModification(object, modifiableFieldPaths, modifier) {\n    var clone = deepClone(object);\n    var result = modifier(clone);\n    modifiableFieldPaths.forEach(function (path) {\n        var originalValue = get(object, path);\n        var newValue = get(clone, path);\n        var originalType = getType(originalValue);\n        var newType = getType(newValue);\n        if (newType === originalType) {\n            set(object, path, newValue);\n        }\n        else if (originalType === 'object' && (newType === 'undefined' || newType === 'null')) {\n            set(object, path, {});\n        }\n    });\n    return result;\n}\nfunction get(object, path) {\n    var current = object;\n    for (var _i = 0, _a = path.split('.'); _i < _a.length; _i++) {\n        var field = _a[_i];\n        if (!isValidObjectContaining(current, field)) {\n            return;\n        }\n        current = current[field];\n    }\n    return current;\n}\nfunction set(object, path, value) {\n    var current = object;\n    var fields = path.split('.');\n    for (var i = 0; i < fields.length; i += 1) {\n        var field = fields[i];\n        if (!isValidObjectContaining(current, field)) {\n            return;\n        }\n        if (i !== fields.length - 1) {\n            current = current[field];\n        }\n        else {\n            current[field] = value;\n        }\n    }\n}\nfunction isValidObjectContaining(object, field) {\n    return typeof object === 'object' && object !== null && Object.prototype.hasOwnProperty.call(object, field);\n}\n//# sourceMappingURL=limitModification.js.map","import { getSyntheticsResultId, getSyntheticsTestId, willSyntheticsInjectRum } from '@datadog/browser-core';\nexport function getSyntheticsContext() {\n    var testId = getSyntheticsTestId();\n    var resultId = getSyntheticsResultId();\n    if (testId && resultId) {\n        return {\n            test_id: testId,\n            result_id: resultId,\n            injected: willSyntheticsInjectRum(),\n        };\n    }\n}\n//# sourceMappingURL=syntheticsContext.js.map","export function getCiTestContext() {\n    var _a;\n    var testExecutionId = (_a = window.Cypress) === null || _a === void 0 ? void 0 : _a.env('traceId');\n    if (typeof testExecutionId === 'string') {\n        return {\n            test_execution_id: testExecutionId,\n        };\n    }\n}\n//# sourceMappingURL=ciTestContext.js.map","import { combine, isEmptyObject, limitModification, timeStampNow, currentDrift, display, createEventRateLimiter, canUseEventBridge, } from '@datadog/browser-core';\nimport { getSyntheticsContext } from './contexts/syntheticsContext';\nimport { getCiTestContext } from './contexts/ciTestContext';\nimport { getDisplayContext } from './contexts/displayContext';\nvar VIEW_EVENTS_MODIFIABLE_FIELD_PATHS = [\n    // Fields with sensitive data\n    'view.url',\n    'view.referrer',\n    'action.target.name',\n    'error.message',\n    'error.stack',\n    'error.resource.url',\n    'resource.url',\n];\nvar OTHER_EVENTS_MODIFIABLE_FIELD_PATHS = VIEW_EVENTS_MODIFIABLE_FIELD_PATHS.concat([\n    // User-customizable field\n    'context',\n]);\nexport function startRumAssembly(configuration, lifeCycle, sessionManager, viewContexts, urlContexts, actionContexts, getCommonContext, reportError) {\n    var _a;\n    var eventRateLimiters = (_a = {},\n        _a[\"error\" /* ERROR */] = createEventRateLimiter(\"error\" /* ERROR */, configuration.eventRateLimiterThreshold, reportError),\n        _a[\"action\" /* ACTION */] = createEventRateLimiter(\"action\" /* ACTION */, configuration.eventRateLimiterThreshold, reportError),\n        _a);\n    var syntheticsContext = getSyntheticsContext();\n    var ciTestContext = getCiTestContext();\n    lifeCycle.subscribe(10 /* RAW_RUM_EVENT_COLLECTED */, function (_a) {\n        var startTime = _a.startTime, rawRumEvent = _a.rawRumEvent, domainContext = _a.domainContext, savedCommonContext = _a.savedCommonContext, customerContext = _a.customerContext;\n        var viewContext = viewContexts.findView(startTime);\n        var urlContext = urlContexts.findUrl(startTime);\n        // allow to send events if the session was tracked when they start\n        // except for views which are continuously updated\n        // TODO: stop sending view updates when session is expired\n        var session = sessionManager.findTrackedSession(rawRumEvent.type !== \"view\" /* VIEW */ ? startTime : undefined);\n        if (session && viewContext && urlContext) {\n            var commonContext = savedCommonContext || getCommonContext();\n            var actionId = actionContexts.findActionId(startTime);\n            var rumContext = {\n                _dd: {\n                    format_version: 2,\n                    drift: currentDrift(),\n                    session: {\n                        plan: session.plan,\n                    },\n                    browser_sdk_version: canUseEventBridge() ? \"4.25.0\" : undefined,\n                },\n                application: {\n                    id: configuration.applicationId,\n                },\n                date: timeStampNow(),\n                service: viewContext.service || configuration.service,\n                version: viewContext.version || configuration.version,\n                source: 'browser',\n                session: {\n                    id: session.id,\n                    type: syntheticsContext ? \"synthetics\" /* SYNTHETICS */ : ciTestContext ? \"ci_test\" /* CI_TEST */ : \"user\" /* USER */,\n                },\n                view: {\n                    id: viewContext.id,\n                    name: viewContext.name,\n                    url: urlContext.url,\n                    referrer: urlContext.referrer,\n                },\n                action: needToAssembleWithAction(rawRumEvent) && actionId ? { id: actionId } : undefined,\n                synthetics: syntheticsContext,\n                ci_test: ciTestContext,\n                display: getDisplayContext(),\n            };\n            var serverRumEvent = combine(rumContext, rawRumEvent);\n            serverRumEvent.context = combine(commonContext.context, customerContext);\n            if (!('has_replay' in serverRumEvent.session)) {\n                ;\n                serverRumEvent.session.has_replay = commonContext.hasReplay;\n            }\n            if (!isEmptyObject(commonContext.user)) {\n                ;\n                serverRumEvent.usr = commonContext.user;\n            }\n            if (shouldSend(serverRumEvent, configuration.beforeSend, domainContext, eventRateLimiters)) {\n                if (isEmptyObject(serverRumEvent.context)) {\n                    delete serverRumEvent.context;\n                }\n                lifeCycle.notify(11 /* RUM_EVENT_COLLECTED */, serverRumEvent);\n            }\n        }\n    });\n}\nfunction shouldSend(event, beforeSend, domainContext, eventRateLimiters) {\n    var _a;\n    if (beforeSend) {\n        var result = limitModification(event, event.type === \"view\" /* VIEW */ ? VIEW_EVENTS_MODIFIABLE_FIELD_PATHS : OTHER_EVENTS_MODIFIABLE_FIELD_PATHS, function (event) { return beforeSend(event, domainContext); });\n        if (result === false && event.type !== \"view\" /* VIEW */) {\n            return false;\n        }\n        if (result === false) {\n            display.warn(\"Can't dismiss view events using beforeSend!\");\n        }\n    }\n    var rateLimitReached = (_a = eventRateLimiters[event.type]) === null || _a === void 0 ? void 0 : _a.isLimitReached();\n    return !rateLimitReached;\n}\nfunction needToAssembleWithAction(event) {\n    return [\"error\" /* ERROR */, \"resource\" /* RESOURCE */, \"long_task\" /* LONG_TASK */].indexOf(event.type) !== -1;\n}\n//# sourceMappingURL=assembly.js.map","import { addDuration, addEventListener, elapsed, relativeNow, toServerDuration } from '@datadog/browser-core';\n// Arbitrary value to cap number of element mostly for backend & to save bandwidth\nexport var MAX_NUMBER_OF_SELECTABLE_FOREGROUND_PERIODS = 500;\n// Arbitrary value to cap number of element mostly for memory consumption in the browser\nexport var MAX_NUMBER_OF_STORED_FOREGROUND_PERIODS = 2500;\nvar foregroundPeriods = [];\nexport function startForegroundContexts() {\n    if (document.hasFocus()) {\n        addNewForegroundPeriod();\n    }\n    var stopForegroundTracking = trackFocus(addNewForegroundPeriod).stop;\n    var stopBlurTracking = trackBlur(closeForegroundPeriod).stop;\n    return {\n        isInForegroundAt: isInForegroundAt,\n        selectInForegroundPeriodsFor: selectInForegroundPeriodsFor,\n        stop: function () {\n            foregroundPeriods = [];\n            stopForegroundTracking();\n            stopBlurTracking();\n        },\n    };\n}\nexport function addNewForegroundPeriod() {\n    if (foregroundPeriods.length > MAX_NUMBER_OF_STORED_FOREGROUND_PERIODS) {\n        return;\n    }\n    var currentForegroundPeriod = foregroundPeriods[foregroundPeriods.length - 1];\n    var now = relativeNow();\n    if (currentForegroundPeriod !== undefined && currentForegroundPeriod.end === undefined) {\n        return;\n    }\n    foregroundPeriods.push({\n        start: now,\n    });\n}\nexport function closeForegroundPeriod() {\n    if (foregroundPeriods.length === 0) {\n        return;\n    }\n    var currentForegroundPeriod = foregroundPeriods[foregroundPeriods.length - 1];\n    var now = relativeNow();\n    if (currentForegroundPeriod.end !== undefined) {\n        return;\n    }\n    currentForegroundPeriod.end = now;\n}\nfunction trackFocus(onFocusChange) {\n    return addEventListener(window, \"focus\" /* FOCUS */, function (event) {\n        if (!event.isTrusted) {\n            return;\n        }\n        onFocusChange();\n    });\n}\nfunction trackBlur(onBlurChange) {\n    return addEventListener(window, \"blur\" /* BLUR */, function (event) {\n        if (!event.isTrusted) {\n            return;\n        }\n        onBlurChange();\n    });\n}\nfunction isInForegroundAt(startTime) {\n    for (var i = foregroundPeriods.length - 1; i >= 0; i--) {\n        var foregroundPeriod = foregroundPeriods[i];\n        if (foregroundPeriod.end !== undefined && startTime > foregroundPeriod.end) {\n            break;\n        }\n        if (startTime > foregroundPeriod.start &&\n            (foregroundPeriod.end === undefined || startTime < foregroundPeriod.end)) {\n            return true;\n        }\n    }\n    return false;\n}\nfunction selectInForegroundPeriodsFor(eventStartTime, duration) {\n    var eventEndTime = addDuration(eventStartTime, duration);\n    var filteredForegroundPeriods = [];\n    var earliestIndex = Math.max(0, foregroundPeriods.length - MAX_NUMBER_OF_SELECTABLE_FOREGROUND_PERIODS);\n    for (var i = foregroundPeriods.length - 1; i >= earliestIndex; i--) {\n        var foregroundPeriod = foregroundPeriods[i];\n        if (foregroundPeriod.end !== undefined && eventStartTime > foregroundPeriod.end) {\n            // event starts after the end of the current focus period\n            // since the array is sorted, we can stop looking for foreground periods\n            break;\n        }\n        if (eventEndTime < foregroundPeriod.start) {\n            // event ends before the start of the current focus period\n            // continue to previous one\n            continue;\n        }\n        var startTime = eventStartTime > foregroundPeriod.start ? eventStartTime : foregroundPeriod.start;\n        var startDuration = elapsed(eventStartTime, startTime);\n        var endTime = foregroundPeriod.end === undefined || eventEndTime < foregroundPeriod.end ? eventEndTime : foregroundPeriod.end;\n        var endDuration = elapsed(startTime, endTime);\n        filteredForegroundPeriods.unshift({\n            start: toServerDuration(startDuration),\n            duration: toServerDuration(endDuration),\n        });\n    }\n    return filteredForegroundPeriods;\n}\n//# sourceMappingURL=foregroundContexts.js.map","/**\n * Internal context keep returning v1 format\n * to not break compatibility with logs data format\n */\nexport function startInternalContext(applicationId, sessionManager, viewContexts, actionContexts, urlContexts) {\n    return {\n        get: function (startTime) {\n            var viewContext = viewContexts.findView(startTime);\n            var urlContext = urlContexts.findUrl(startTime);\n            var session = sessionManager.findTrackedSession(startTime);\n            if (session && viewContext && urlContext) {\n                var actionId = actionContexts.findActionId(startTime);\n                return {\n                    application_id: applicationId,\n                    session_id: session.id,\n                    user_action: actionId ? { id: actionId } : undefined,\n                    view: { id: viewContext.id, name: viewContext.name, referrer: urlContext.referrer, url: urlContext.url },\n                };\n            }\n        },\n    };\n}\n//# sourceMappingURL=internalContext.js.map","var LifeCycle = /** @class */ (function () {\n    function LifeCycle() {\n        this.callbacks = {};\n    }\n    LifeCycle.prototype.notify = function (eventType, data) {\n        var eventCallbacks = this.callbacks[eventType];\n        if (eventCallbacks) {\n            eventCallbacks.forEach(function (callback) { return callback(data); });\n        }\n    };\n    LifeCycle.prototype.subscribe = function (eventType, callback) {\n        var _this = this;\n        if (!this.callbacks[eventType]) {\n            this.callbacks[eventType] = [];\n        }\n        this.callbacks[eventType].push(callback);\n        return {\n            unsubscribe: function () {\n                _this.callbacks[eventType] = _this.callbacks[eventType].filter(function (other) { return callback !== other; });\n            },\n        };\n    };\n    return LifeCycle;\n}());\nexport { LifeCycle };\n//# sourceMappingURL=lifeCycle.js.map","import { instrumentMethodAndCallOriginal } from '../tools/instrumentMethod';\nimport { monitor } from '../tools/monitor';\nimport { Observable } from '../tools/observable';\nimport { elapsed, relativeNow, clocksNow, timeStampNow } from '../tools/timeUtils';\nimport { normalizeUrl } from '../tools/urlPolyfill';\nimport { shallowClone } from '../tools/utils';\nvar xhrObservable;\nvar xhrContexts = new WeakMap();\nexport function initXhrObservable() {\n    if (!xhrObservable) {\n        xhrObservable = createXhrObservable();\n    }\n    return xhrObservable;\n}\nfunction createXhrObservable() {\n    var observable = new Observable(function () {\n        var stopInstrumentingStart = instrumentMethodAndCallOriginal(XMLHttpRequest.prototype, 'open', {\n            before: openXhr,\n        }).stop;\n        var stopInstrumentingSend = instrumentMethodAndCallOriginal(XMLHttpRequest.prototype, 'send', {\n            before: function () {\n                sendXhr.call(this, observable);\n            },\n        }).stop;\n        var stopInstrumentingAbort = instrumentMethodAndCallOriginal(XMLHttpRequest.prototype, 'abort', {\n            before: abortXhr,\n        }).stop;\n        return function () {\n            stopInstrumentingStart();\n            stopInstrumentingSend();\n            stopInstrumentingAbort();\n        };\n    });\n    return observable;\n}\nfunction openXhr(method, url) {\n    xhrContexts.set(this, {\n        state: 'open',\n        method: method,\n        url: normalizeUrl(String(url)),\n    });\n}\nfunction sendXhr(observable) {\n    var _this = this;\n    var context = xhrContexts.get(this);\n    if (!context) {\n        return;\n    }\n    var startContext = context;\n    startContext.state = 'start';\n    startContext.startTime = relativeNow();\n    startContext.startClocks = clocksNow();\n    startContext.isAborted = false;\n    startContext.xhr = this;\n    var hasBeenReported = false;\n    var stopInstrumentingOnReadyStateChange = instrumentMethodAndCallOriginal(this, 'onreadystatechange', {\n        before: function () {\n            if (this.readyState === XMLHttpRequest.DONE) {\n                // Try to report the XHR as soon as possible, because the XHR may be mutated by the\n                // application during a future event. For example, Angular is calling .abort() on\n                // completed requests during a onreadystatechange event, so the status becomes '0'\n                // before the request is collected.\n                onEnd();\n            }\n        },\n    }).stop;\n    var onEnd = monitor(function () {\n        _this.removeEventListener('loadend', onEnd);\n        stopInstrumentingOnReadyStateChange();\n        if (hasBeenReported) {\n            return;\n        }\n        hasBeenReported = true;\n        var completeContext = context;\n        completeContext.state = 'complete';\n        completeContext.duration = elapsed(startContext.startClocks.timeStamp, timeStampNow());\n        completeContext.status = _this.status;\n        observable.notify(shallowClone(completeContext));\n    });\n    this.addEventListener('loadend', onEnd);\n    observable.notify(startContext);\n}\nfunction abortXhr() {\n    var context = xhrContexts.get(this);\n    if (context) {\n        context.isAborted = true;\n    }\n}\n//# sourceMappingURL=xhrObservable.js.map","import { ONE_HOUR, ONE_MINUTE } from '../../tools/utils';\nexport var SESSION_TIME_OUT_DELAY = 4 * ONE_HOUR;\nexport var SESSION_EXPIRATION_DELAY = 15 * ONE_MINUTE;\n//# sourceMappingURL=sessionConstants.js.map","import { relativeNow } from './timeUtils';\nimport { ONE_MINUTE } from './utils';\nvar END_OF_TIMES = Infinity;\nexport var CLEAR_OLD_CONTEXTS_INTERVAL = ONE_MINUTE;\n/**\n * Store and keep track of contexts spans. This whole class assumes that contexts are added in\n * chronological order (i.e. all entries have an increasing start time).\n */\nvar ContextHistory = /** @class */ (function () {\n    function ContextHistory(expireDelay) {\n        var _this = this;\n        this.expireDelay = expireDelay;\n        this.entries = [];\n        this.clearOldContextsInterval = setInterval(function () { return _this.clearOldContexts(); }, CLEAR_OLD_CONTEXTS_INTERVAL);\n    }\n    /**\n     * Add a context to the history associated with a start time. Returns a reference to this newly\n     * added entry that can be removed or closed.\n     */\n    ContextHistory.prototype.add = function (context, startTime) {\n        var _this = this;\n        var entry = {\n            context: context,\n            startTime: startTime,\n            endTime: END_OF_TIMES,\n            remove: function () {\n                var index = _this.entries.indexOf(entry);\n                if (index >= 0) {\n                    _this.entries.splice(index, 1);\n                }\n            },\n            close: function (endTime) {\n                entry.endTime = endTime;\n            },\n        };\n        this.entries.unshift(entry);\n        return entry;\n    };\n    /**\n     * Return the latest context that was active during `startTime`, or the currently active context\n     * if no `startTime` is provided. This method assumes that entries are not overlapping.\n     */\n    ContextHistory.prototype.find = function (startTime) {\n        if (startTime === void 0) { startTime = END_OF_TIMES; }\n        for (var _i = 0, _a = this.entries; _i < _a.length; _i++) {\n            var entry = _a[_i];\n            if (entry.startTime <= startTime) {\n                if (startTime <= entry.endTime) {\n                    return entry.context;\n                }\n                break;\n            }\n        }\n    };\n    /**\n     * Helper function to close the currently active context, if any. This method assumes that entries\n     * are not overlapping.\n     */\n    ContextHistory.prototype.closeActive = function (endTime) {\n        var latestEntry = this.entries[0];\n        if (latestEntry && latestEntry.endTime === END_OF_TIMES) {\n            latestEntry.close(endTime);\n        }\n    };\n    /**\n     * Return all contexts that were active during `startTime`, or all currently active contexts if no\n     * `startTime` is provided.\n     */\n    ContextHistory.prototype.findAll = function (startTime) {\n        if (startTime === void 0) { startTime = END_OF_TIMES; }\n        return this.entries\n            .filter(function (entry) { return entry.startTime <= startTime && startTime <= entry.endTime; })\n            .map(function (entry) { return entry.context; });\n    };\n    /**\n     * Remove all entries from this collection.\n     */\n    ContextHistory.prototype.reset = function () {\n        this.entries = [];\n    };\n    /**\n     * Stop internal garbage collection of past entries.\n     */\n    ContextHistory.prototype.stop = function () {\n        clearInterval(this.clearOldContextsInterval);\n    };\n    ContextHistory.prototype.clearOldContexts = function () {\n        var oldTimeThreshold = relativeNow() - this.expireDelay;\n        while (this.entries.length > 0 && this.entries[this.entries.length - 1].endTime < oldTimeThreshold) {\n            this.entries.pop();\n        }\n    };\n    return ContextHistory;\n}());\nexport { ContextHistory };\n//# sourceMappingURL=contextHistory.js.map","import { SESSION_TIME_OUT_DELAY, ContextHistory } from '@datadog/browser-core';\nexport var VIEW_CONTEXT_TIME_OUT_DELAY = SESSION_TIME_OUT_DELAY;\nexport function startViewContexts(lifeCycle) {\n    var viewContextHistory = new ContextHistory(VIEW_CONTEXT_TIME_OUT_DELAY);\n    lifeCycle.subscribe(2 /* VIEW_CREATED */, function (view) {\n        viewContextHistory.add(buildViewContext(view), view.startClocks.relative);\n    });\n    lifeCycle.subscribe(4 /* VIEW_ENDED */, function (_a) {\n        var endClocks = _a.endClocks;\n        viewContextHistory.closeActive(endClocks.relative);\n    });\n    lifeCycle.subscribe(8 /* SESSION_RENEWED */, function () {\n        viewContextHistory.reset();\n    });\n    function buildViewContext(view) {\n        return {\n            service: view.service,\n            version: view.version,\n            id: view.id,\n            name: view.name,\n            featureFlagEvaluations: view.featureFlagEvaluations,\n        };\n    }\n    return {\n        findView: function (startTime) { return viewContextHistory.find(startTime); },\n        stop: function () {\n            viewContextHistory.stop();\n        },\n    };\n}\n//# sourceMappingURL=viewContexts.js.map","import { callMonitored, monitor } from './monitor';\nimport { noop } from './utils';\nexport function instrumentMethod(object, method, instrumentationFactory) {\n    var original = object[method];\n    var instrumentation = instrumentationFactory(original);\n    var instrumentationWrapper = function () {\n        if (typeof instrumentation !== 'function') {\n            return undefined;\n        }\n        // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n        return instrumentation.apply(this, arguments);\n    };\n    object[method] = instrumentationWrapper;\n    return {\n        stop: function () {\n            if (object[method] === instrumentationWrapper) {\n                object[method] = original;\n            }\n            else {\n                instrumentation = original;\n            }\n        },\n    };\n}\nexport function instrumentMethodAndCallOriginal(object, method, _a) {\n    var before = _a.before, after = _a.after;\n    return instrumentMethod(object, method, function (original) {\n        return function () {\n            var args = arguments;\n            var result;\n            if (before) {\n                callMonitored(before, this, args);\n            }\n            if (typeof original === 'function') {\n                // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n                result = original.apply(this, args);\n            }\n            if (after) {\n                callMonitored(after, this, args);\n            }\n            // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n            return result;\n        };\n    });\n}\nexport function instrumentSetter(object, property, after) {\n    var originalDescriptor = Object.getOwnPropertyDescriptor(object, property);\n    if (!originalDescriptor || !originalDescriptor.set || !originalDescriptor.configurable) {\n        return { stop: noop };\n    }\n    var instrumentation = function (thisObject, value) {\n        // put hooked setter into event loop to avoid of set latency\n        setTimeout(monitor(function () {\n            after(thisObject, value);\n        }), 0);\n    };\n    var instrumentationWrapper = function (value) {\n        originalDescriptor.set.call(this, value);\n        instrumentation(this, value);\n    };\n    Object.defineProperty(object, property, {\n        set: instrumentationWrapper,\n    });\n    return {\n        stop: function () {\n            var _a;\n            if (((_a = Object.getOwnPropertyDescriptor(object, property)) === null || _a === void 0 ? void 0 : _a.set) === instrumentationWrapper) {\n                Object.defineProperty(object, property, originalDescriptor);\n            }\n            else {\n                instrumentation = noop;\n            }\n        },\n    };\n}\n//# sourceMappingURL=instrumentMethod.js.map","import { instrumentMethod } from '../tools/instrumentMethod';\nimport { callMonitored, monitor } from '../tools/monitor';\nimport { Observable } from '../tools/observable';\nimport { elapsed, clocksNow, timeStampNow } from '../tools/timeUtils';\nimport { normalizeUrl } from '../tools/urlPolyfill';\nvar fetchObservable;\nexport function initFetchObservable() {\n    if (!fetchObservable) {\n        fetchObservable = createFetchObservable();\n    }\n    return fetchObservable;\n}\nfunction createFetchObservable() {\n    var observable = new Observable(function () {\n        if (!window.fetch) {\n            return;\n        }\n        var stop = instrumentMethod(window, 'fetch', function (originalFetch) {\n            return function (input, init) {\n                var responsePromise;\n                var context = callMonitored(beforeSend, null, [observable, input, init]);\n                if (context) {\n                    responsePromise = originalFetch.call(this, context.input, context.init);\n                    callMonitored(afterSend, null, [observable, responsePromise, context]);\n                }\n                else {\n                    responsePromise = originalFetch.call(this, input, init);\n                }\n                return responsePromise;\n            };\n        }).stop;\n        return stop;\n    });\n    return observable;\n}\nfunction beforeSend(observable, input, init) {\n    var method = (init && init.method) || (typeof input === 'object' && input.method) || 'GET';\n    var url = normalizeUrl((typeof input === 'object' && input.url) || input);\n    var startClocks = clocksNow();\n    var context = {\n        state: 'start',\n        init: init,\n        input: input,\n        method: method,\n        startClocks: startClocks,\n        url: url,\n    };\n    observable.notify(context);\n    return context;\n}\nfunction afterSend(observable, responsePromise, startContext) {\n    var reportFetch = function (response) {\n        var context = startContext;\n        context.state = 'complete';\n        context.duration = elapsed(context.startClocks.timeStamp, timeStampNow());\n        if ('stack' in response || response instanceof Error) {\n            context.status = 0;\n            context.isAborted = response instanceof DOMException && response.code === DOMException.ABORT_ERR;\n            context.error = response;\n            observable.notify(context);\n        }\n        else if ('status' in response) {\n            context.response = response;\n            context.responseType = response.type;\n            context.status = response.status;\n            context.isAborted = false;\n            observable.notify(context);\n        }\n    };\n    responsePromise.then(monitor(reportFetch), monitor(reportFetch));\n}\n//# sourceMappingURL=fetchObservable.js.map","import { getOrigin, matchList, objectEntries, shallowClone, performDraw, isNumber } from '@datadog/browser-core';\n/**\n * Clear tracing information to avoid incomplete traces. Ideally, we should do it when the\n * request did not reach the server, but the browser does not expose this. So, we clear tracing\n * information if the request ended with status 0 without being aborted by the application.\n *\n * Reasoning:\n *\n * * Applications are usually aborting requests after a bit of time, for example when the user is\n * typing (autocompletion) or navigating away (in a SPA). With a performant device and good\n * network conditions, the request is likely to reach the server before being canceled.\n *\n * * Requests aborted otherwise (ex: lack of internet, CORS issue, blocked by a privacy extension)\n * are likely to finish quickly and without reaching the server.\n *\n * Of course, it might not be the case every time, but it should limit having incomplete traces a\n * bit.\n * */\nexport function clearTracingIfNeeded(context) {\n    if (context.status === 0 && !context.isAborted) {\n        context.traceId = undefined;\n        context.spanId = undefined;\n        context.traceSampled = undefined;\n    }\n}\nexport function startTracer(configuration, sessionManager) {\n    return {\n        clearTracingIfNeeded: clearTracingIfNeeded,\n        traceFetch: function (context) {\n            return injectHeadersIfTracingAllowed(configuration, context, sessionManager, function (tracingHeaders) {\n                var _a;\n                if (context.input instanceof Request && !((_a = context.init) === null || _a === void 0 ? void 0 : _a.headers)) {\n                    context.input = new Request(context.input);\n                    Object.keys(tracingHeaders).forEach(function (key) {\n                        ;\n                        context.input.headers.append(key, tracingHeaders[key]);\n                    });\n                }\n                else {\n                    context.init = shallowClone(context.init);\n                    var headers_1 = [];\n                    if (context.init.headers instanceof Headers) {\n                        context.init.headers.forEach(function (value, key) {\n                            headers_1.push([key, value]);\n                        });\n                    }\n                    else if (Array.isArray(context.init.headers)) {\n                        context.init.headers.forEach(function (header) {\n                            headers_1.push(header);\n                        });\n                    }\n                    else if (context.init.headers) {\n                        Object.keys(context.init.headers).forEach(function (key) {\n                            headers_1.push([key, context.init.headers[key]]);\n                        });\n                    }\n                    context.init.headers = headers_1.concat(objectEntries(tracingHeaders));\n                }\n            });\n        },\n        traceXhr: function (context, xhr) {\n            return injectHeadersIfTracingAllowed(configuration, context, sessionManager, function (tracingHeaders) {\n                Object.keys(tracingHeaders).forEach(function (name) {\n                    xhr.setRequestHeader(name, tracingHeaders[name]);\n                });\n            });\n        },\n    };\n}\nfunction injectHeadersIfTracingAllowed(configuration, context, sessionManager, inject) {\n    if (!isTracingSupported() || !isAllowedUrl(configuration, context.url) || !sessionManager.findTrackedSession()) {\n        return;\n    }\n    context.traceId = new TraceIdentifier();\n    context.spanId = new TraceIdentifier();\n    context.traceSampled = !isNumber(configuration.tracingSampleRate) || performDraw(configuration.tracingSampleRate);\n    inject(makeTracingHeaders(context.traceId, context.spanId, context.traceSampled));\n}\nfunction isAllowedUrl(configuration, requestUrl) {\n    return matchList(configuration.allowedTracingOrigins, getOrigin(requestUrl));\n}\nexport function isTracingSupported() {\n    return getCrypto() !== undefined;\n}\nfunction getCrypto() {\n    return window.crypto || window.msCrypto;\n}\n/**\n * When trace is not sampled, set priority to '0' instead of not adding the tracing headers\n * to prepare the implementation for sampling delegation.\n */\nfunction makeTracingHeaders(traceId, spanId, traceSampled) {\n    return {\n        'x-datadog-origin': 'rum',\n        'x-datadog-parent-id': spanId.toDecimalString(),\n        'x-datadog-sampling-priority': traceSampled ? '1' : '0',\n        'x-datadog-trace-id': traceId.toDecimalString(),\n    };\n}\n/* eslint-disable no-bitwise */\nvar TraceIdentifier = /** @class */ (function () {\n    function TraceIdentifier() {\n        this.buffer = new Uint8Array(8);\n        getCrypto().getRandomValues(this.buffer);\n        this.buffer[0] = this.buffer[0] & 0x7f; // force 63-bit\n    }\n    TraceIdentifier.prototype.toString = function (radix) {\n        var high = this.readInt32(0);\n        var low = this.readInt32(4);\n        var str = '';\n        do {\n            var mod = (high % radix) * 4294967296 + low;\n            high = Math.floor(high / radix);\n            low = Math.floor(mod / radix);\n            str = (mod % radix).toString(radix) + str;\n        } while (high || low);\n        return str;\n    };\n    /**\n     * Format used everywhere except the trace intake\n     */\n    TraceIdentifier.prototype.toDecimalString = function () {\n        return this.toString(10);\n    };\n    TraceIdentifier.prototype.readInt32 = function (offset) {\n        return (this.buffer[offset] * 16777216 +\n            (this.buffer[offset + 1] << 16) +\n            (this.buffer[offset + 2] << 8) +\n            this.buffer[offset + 3]);\n    };\n    return TraceIdentifier;\n}());\nexport { TraceIdentifier };\n/* eslint-enable no-bitwise */\n//# sourceMappingURL=tracer.js.map","import { initFetchObservable, initXhrObservable } from '@datadog/browser-core';\nimport { isAllowedRequestUrl } from './rumEventsCollection/resource/resourceUtils';\nimport { startTracer } from './tracing/tracer';\nvar nextRequestIndex = 1;\nexport function startRequestCollection(lifeCycle, configuration, sessionManager) {\n    var tracer = startTracer(configuration, sessionManager);\n    trackXhr(lifeCycle, configuration, tracer);\n    trackFetch(lifeCycle, configuration, tracer);\n}\nexport function trackXhr(lifeCycle, configuration, tracer) {\n    var subscription = initXhrObservable().subscribe(function (rawContext) {\n        var context = rawContext;\n        if (!isAllowedRequestUrl(configuration, context.url)) {\n            return;\n        }\n        switch (context.state) {\n            case 'start':\n                tracer.traceXhr(context, context.xhr);\n                context.requestIndex = getNextRequestIndex();\n                lifeCycle.notify(5 /* REQUEST_STARTED */, {\n                    requestIndex: context.requestIndex,\n                    url: context.url,\n                });\n                break;\n            case 'complete':\n                tracer.clearTracingIfNeeded(context);\n                lifeCycle.notify(6 /* REQUEST_COMPLETED */, {\n                    duration: context.duration,\n                    method: context.method,\n                    requestIndex: context.requestIndex,\n                    spanId: context.spanId,\n                    startClocks: context.startClocks,\n                    status: context.status,\n                    traceId: context.traceId,\n                    traceSampled: context.traceSampled,\n                    type: \"xhr\" /* XHR */,\n                    url: context.url,\n                    xhr: context.xhr,\n                });\n                break;\n        }\n    });\n    return { stop: function () { return subscription.unsubscribe(); } };\n}\nexport function trackFetch(lifeCycle, configuration, tracer) {\n    var subscription = initFetchObservable().subscribe(function (rawContext) {\n        var context = rawContext;\n        if (!isAllowedRequestUrl(configuration, context.url)) {\n            return;\n        }\n        switch (context.state) {\n            case 'start':\n                tracer.traceFetch(context);\n                context.requestIndex = getNextRequestIndex();\n                lifeCycle.notify(5 /* REQUEST_STARTED */, {\n                    requestIndex: context.requestIndex,\n                    url: context.url,\n                });\n                break;\n            case 'complete':\n                tracer.clearTracingIfNeeded(context);\n                lifeCycle.notify(6 /* REQUEST_COMPLETED */, {\n                    duration: context.duration,\n                    method: context.method,\n                    requestIndex: context.requestIndex,\n                    responseType: context.responseType,\n                    spanId: context.spanId,\n                    startClocks: context.startClocks,\n                    status: context.status,\n                    traceId: context.traceId,\n                    traceSampled: context.traceSampled,\n                    type: \"fetch\" /* FETCH */,\n                    url: context.url,\n                    response: context.response,\n                    init: context.init,\n                    input: context.input,\n                });\n                break;\n        }\n    });\n    return { stop: function () { return subscription.unsubscribe(); } };\n}\nfunction getNextRequestIndex() {\n    var result = nextRequestIndex;\n    nextRequestIndex += 1;\n    return result;\n}\n//# sourceMappingURL=requestCollection.js.map","import { noop } from '@datadog/browser-core';\nexport function trackEventCounts(lifeCycle, callback) {\n    if (callback === void 0) { callback = noop; }\n    var eventCounts = {\n        errorCount: 0,\n        longTaskCount: 0,\n        resourceCount: 0,\n        actionCount: 0,\n        frustrationCount: 0,\n    };\n    var subscription = lifeCycle.subscribe(11 /* RUM_EVENT_COLLECTED */, function (event) {\n        switch (event.type) {\n            case \"error\" /* ERROR */:\n                eventCounts.errorCount += 1;\n                callback(eventCounts);\n                break;\n            case \"action\" /* ACTION */:\n                eventCounts.actionCount += 1;\n                if (event.action.frustration) {\n                    eventCounts.frustrationCount += event.action.frustration.type.length;\n                }\n                callback(eventCounts);\n                break;\n            case \"long_task\" /* LONG_TASK */:\n                eventCounts.longTaskCount += 1;\n                callback(eventCounts);\n                break;\n            case \"resource\" /* RESOURCE */:\n                eventCounts.resourceCount += 1;\n                callback(eventCounts);\n                break;\n        }\n    });\n    return {\n        stop: function () {\n            subscription.unsubscribe();\n        },\n        eventCounts: eventCounts,\n    };\n}\n//# sourceMappingURL=trackEventCounts.js.map","import { instrumentMethodAndCallOriginal, matchList, monitor, Observable, timeStampNow } from '@datadog/browser-core';\n// Delay to wait for a page activity to validate the tracking process\nexport var PAGE_ACTIVITY_VALIDATION_DELAY = 100;\n// Delay to wait after a page activity to end the tracking process\nexport var PAGE_ACTIVITY_END_DELAY = 100;\n/**\n * Wait for the page activity end\n *\n * Detection lifecycle:\n * ```\n *                        Wait page activity end\n *              .-------------------'--------------------.\n *              v                                        v\n *     [Wait for a page activity ]          [Wait for a maximum duration]\n *     [timeout: VALIDATION_DELAY]          [  timeout: maxDuration     ]\n *          /                  \\                           |\n *         v                    v                          |\n *  [No page activity]   [Page activity]                   |\n *         |                   |,----------------------.   |\n *         v                   v                       |   |\n *     (Discard)     [Wait for a page activity]        |   |\n *                   [   timeout: END_DELAY   ]        |   |\n *                       /                \\            |   |\n *                      v                  v           |   |\n *             [No page activity]    [Page activity]   |   |\n *                      |                 |            |   |\n *                      |                 '------------'   |\n *                      '-----------. ,--------------------'\n *                                   v\n *                                 (End)\n * ```\n *\n * Note: by assuming that maxDuration is greater than VALIDATION_DELAY, we are sure that if the\n * process is still alive after maxDuration, it has been validated.\n */\nexport function waitPageActivityEnd(lifeCycle, domMutationObservable, configuration, pageActivityEndCallback, maxDuration) {\n    var pageActivityObservable = createPageActivityObservable(lifeCycle, domMutationObservable, configuration);\n    return doWaitPageActivityEnd(pageActivityObservable, pageActivityEndCallback, maxDuration);\n}\nexport function doWaitPageActivityEnd(pageActivityObservable, pageActivityEndCallback, maxDuration) {\n    var pageActivityEndTimeoutId;\n    var hasCompleted = false;\n    var validationTimeoutId = setTimeout(monitor(function () { return complete({ hadActivity: false }); }), PAGE_ACTIVITY_VALIDATION_DELAY);\n    var maxDurationTimeoutId = maxDuration &&\n        setTimeout(monitor(function () { return complete({ hadActivity: true, end: timeStampNow() }); }), maxDuration);\n    var pageActivitySubscription = pageActivityObservable.subscribe(function (_a) {\n        var isBusy = _a.isBusy;\n        clearTimeout(validationTimeoutId);\n        clearTimeout(pageActivityEndTimeoutId);\n        var lastChangeTime = timeStampNow();\n        if (!isBusy) {\n            pageActivityEndTimeoutId = setTimeout(monitor(function () { return complete({ hadActivity: true, end: lastChangeTime }); }), PAGE_ACTIVITY_END_DELAY);\n        }\n    });\n    var stop = function () {\n        hasCompleted = true;\n        clearTimeout(validationTimeoutId);\n        clearTimeout(pageActivityEndTimeoutId);\n        clearTimeout(maxDurationTimeoutId);\n        pageActivitySubscription.unsubscribe();\n    };\n    function complete(event) {\n        if (hasCompleted) {\n            return;\n        }\n        stop();\n        pageActivityEndCallback(event);\n    }\n    return { stop: stop };\n}\nexport function createPageActivityObservable(lifeCycle, domMutationObservable, configuration) {\n    var observable = new Observable(function () {\n        var subscriptions = [];\n        var firstRequestIndex;\n        var pendingRequestsCount = 0;\n        subscriptions.push(domMutationObservable.subscribe(notifyPageActivity), lifeCycle.subscribe(0 /* PERFORMANCE_ENTRIES_COLLECTED */, function (entries) {\n            if (entries.some(function (entry) { return entry.entryType === 'resource' && !isExcludedUrl(configuration, entry.name); })) {\n                notifyPageActivity();\n            }\n        }), lifeCycle.subscribe(5 /* REQUEST_STARTED */, function (startEvent) {\n            if (isExcludedUrl(configuration, startEvent.url)) {\n                return;\n            }\n            if (firstRequestIndex === undefined) {\n                firstRequestIndex = startEvent.requestIndex;\n            }\n            pendingRequestsCount += 1;\n            notifyPageActivity();\n        }), lifeCycle.subscribe(6 /* REQUEST_COMPLETED */, function (request) {\n            if (isExcludedUrl(configuration, request.url) ||\n                firstRequestIndex === undefined ||\n                // If the request started before the tracking start, ignore it\n                request.requestIndex < firstRequestIndex) {\n                return;\n            }\n            pendingRequestsCount -= 1;\n            notifyPageActivity();\n        }));\n        var stopTrackingWindowOpen = trackWindowOpen(notifyPageActivity).stop;\n        return function () {\n            stopTrackingWindowOpen();\n            subscriptions.forEach(function (s) { return s.unsubscribe(); });\n        };\n        function notifyPageActivity() {\n            observable.notify({ isBusy: pendingRequestsCount > 0 });\n        }\n    });\n    return observable;\n}\nfunction isExcludedUrl(configuration, requestUrl) {\n    return matchList(configuration.excludedActivityUrls, requestUrl);\n}\nfunction trackWindowOpen(callback) {\n    return instrumentMethodAndCallOriginal(window, 'open', { before: callback });\n}\n//# sourceMappingURL=waitPageActivityEnd.js.map","import { monitor, ONE_SECOND } from '@datadog/browser-core';\nexport var MAX_DURATION_BETWEEN_CLICKS = ONE_SECOND;\nexport var MAX_DISTANCE_BETWEEN_CLICKS = 100;\nexport function createClickChain(firstClick, onFinalize) {\n    var bufferedClicks = [];\n    var status = 0 /* WaitingForMoreClicks */;\n    var maxDurationBetweenClicksTimeout;\n    appendClick(firstClick);\n    function appendClick(click) {\n        click.stopObservable.subscribe(tryFinalize);\n        bufferedClicks.push(click);\n        clearTimeout(maxDurationBetweenClicksTimeout);\n        maxDurationBetweenClicksTimeout = setTimeout(monitor(dontAcceptMoreClick), MAX_DURATION_BETWEEN_CLICKS);\n    }\n    function tryFinalize() {\n        if (status === 1 /* WaitingForClicksToStop */ && bufferedClicks.every(function (click) { return click.isStopped(); })) {\n            status = 2 /* Finalized */;\n            onFinalize(bufferedClicks);\n        }\n    }\n    function dontAcceptMoreClick() {\n        clearTimeout(maxDurationBetweenClicksTimeout);\n        if (status === 0 /* WaitingForMoreClicks */) {\n            status = 1 /* WaitingForClicksToStop */;\n            tryFinalize();\n        }\n    }\n    return {\n        tryAppend: function (click) {\n            if (status !== 0 /* WaitingForMoreClicks */) {\n                return false;\n            }\n            if (bufferedClicks.length > 0 &&\n                !areEventsSimilar(bufferedClicks[bufferedClicks.length - 1].event, click.event)) {\n                dontAcceptMoreClick();\n                return false;\n            }\n            appendClick(click);\n            return true;\n        },\n        stop: function () {\n            dontAcceptMoreClick();\n        },\n    };\n}\n/**\n * Checks whether two events are similar by comparing their target, position and timestamp\n */\nfunction areEventsSimilar(first, second) {\n    return (first.target === second.target &&\n        mouseEventDistance(first, second) <= MAX_DISTANCE_BETWEEN_CLICKS &&\n        first.timeStamp - second.timeStamp <= MAX_DURATION_BETWEEN_CLICKS);\n}\nfunction mouseEventDistance(origin, other) {\n    return Math.sqrt(Math.pow(origin.clientX - other.clientX, 2) + Math.pow(origin.clientY - other.clientY, 2));\n}\n//# sourceMappingURL=clickChain.js.map","export function isIE() {\n    return Boolean(document.documentMode);\n}\nexport function isChromium() {\n    return !!window.chrome || /HeadlessChrome/.test(window.navigator.userAgent);\n}\n//# sourceMappingURL=browserDetection.js.map","import { safeTruncate, isIE, find } from '@datadog/browser-core';\n/**\n * Get the action name from the attribute 'data-dd-action-name' on the element or any of its parent.\n * It can also be retrieved from a user defined attribute.\n */\nexport var DEFAULT_PROGRAMMATIC_ACTION_NAME_ATTRIBUTE = 'data-dd-action-name';\nexport function getActionNameFromElement(element, userProgrammaticAttribute) {\n    // Proceed to get the action name in two steps:\n    // * first, get the name programmatically, explicitly defined by the user.\n    // * then, use strategies that are known to return good results. Those strategies will be used on\n    //   the element and a few parents, but it's likely that they won't succeed at all.\n    // * if no name is found this way, use strategies returning less accurate names as a fallback.\n    //   Those are much likely to succeed.\n    return (getActionNameFromElementProgrammatically(element, DEFAULT_PROGRAMMATIC_ACTION_NAME_ATTRIBUTE) ||\n        (userProgrammaticAttribute && getActionNameFromElementProgrammatically(element, userProgrammaticAttribute)) ||\n        getActionNameFromElementForStrategies(element, userProgrammaticAttribute, priorityStrategies) ||\n        getActionNameFromElementForStrategies(element, userProgrammaticAttribute, fallbackStrategies) ||\n        '');\n}\nfunction getActionNameFromElementProgrammatically(targetElement, programmaticAttribute) {\n    var elementWithAttribute;\n    // We don't use getActionNameFromElementForStrategies here, because we want to consider all parents,\n    // without limit. It is up to the user to declare a relevant naming strategy.\n    // If available, use element.closest() to match get the attribute from the element or any of its\n    // parent.  Else fallback to a more traditional implementation.\n    if (supportsElementClosest()) {\n        elementWithAttribute = targetElement.closest(\"[\".concat(programmaticAttribute, \"]\"));\n    }\n    else {\n        var element = targetElement;\n        while (element) {\n            if (element.hasAttribute(programmaticAttribute)) {\n                elementWithAttribute = element;\n                break;\n            }\n            element = element.parentElement;\n        }\n    }\n    if (!elementWithAttribute) {\n        return;\n    }\n    var name = elementWithAttribute.getAttribute(programmaticAttribute);\n    return truncate(normalizeWhitespace(name.trim()));\n}\nvar priorityStrategies = [\n    // associated LABEL text\n    function (element, userProgrammaticAttribute) {\n        // IE does not support element.labels, so we fallback to a CSS selector based on the element id\n        // instead\n        if (supportsLabelProperty()) {\n            if ('labels' in element && element.labels && element.labels.length > 0) {\n                return getTextualContent(element.labels[0], userProgrammaticAttribute);\n            }\n        }\n        else if (element.id) {\n            var label = element.ownerDocument &&\n                find(element.ownerDocument.querySelectorAll('label'), function (label) { return label.htmlFor === element.id; });\n            return label && getTextualContent(label, userProgrammaticAttribute);\n        }\n    },\n    // INPUT button (and associated) value\n    function (element) {\n        if (element.nodeName === 'INPUT') {\n            var input = element;\n            var type = input.getAttribute('type');\n            if (type === 'button' || type === 'submit' || type === 'reset') {\n                return input.value;\n            }\n        }\n    },\n    // BUTTON, LABEL or button-like element text\n    function (element, userProgrammaticAttribute) {\n        if (element.nodeName === 'BUTTON' || element.nodeName === 'LABEL' || element.getAttribute('role') === 'button') {\n            return getTextualContent(element, userProgrammaticAttribute);\n        }\n    },\n    function (element) { return element.getAttribute('aria-label'); },\n    // associated element text designated by the aria-labelledby attribute\n    function (element, userProgrammaticAttribute) {\n        var labelledByAttribute = element.getAttribute('aria-labelledby');\n        if (labelledByAttribute) {\n            return labelledByAttribute\n                .split(/\\s+/)\n                .map(function (id) { return getElementById(element, id); })\n                .filter(function (label) { return Boolean(label); })\n                .map(function (element) { return getTextualContent(element, userProgrammaticAttribute); })\n                .join(' ');\n        }\n    },\n    function (element) { return element.getAttribute('alt'); },\n    function (element) { return element.getAttribute('name'); },\n    function (element) { return element.getAttribute('title'); },\n    function (element) { return element.getAttribute('placeholder'); },\n    // SELECT first OPTION text\n    function (element, userProgrammaticAttribute) {\n        if ('options' in element && element.options.length > 0) {\n            return getTextualContent(element.options[0], userProgrammaticAttribute);\n        }\n    },\n];\nvar fallbackStrategies = [\n    function (element, userProgrammaticAttribute) { return getTextualContent(element, userProgrammaticAttribute); },\n];\n/**\n * Iterates over the target element and its parent, using the strategies list to get an action name.\n * Each strategies are applied on each element, stopping as soon as a non-empty value is returned.\n */\nvar MAX_PARENTS_TO_CONSIDER = 10;\nfunction getActionNameFromElementForStrategies(targetElement, userProgrammaticAttribute, strategies) {\n    var element = targetElement;\n    var recursionCounter = 0;\n    while (recursionCounter <= MAX_PARENTS_TO_CONSIDER &&\n        element &&\n        element.nodeName !== 'BODY' &&\n        element.nodeName !== 'HTML' &&\n        element.nodeName !== 'HEAD') {\n        for (var _i = 0, strategies_1 = strategies; _i < strategies_1.length; _i++) {\n            var strategy = strategies_1[_i];\n            var name_1 = strategy(element, userProgrammaticAttribute);\n            if (typeof name_1 === 'string') {\n                var trimmedName = name_1.trim();\n                if (trimmedName) {\n                    return truncate(normalizeWhitespace(trimmedName));\n                }\n            }\n        }\n        // Consider a FORM as a contextual limit to get the action name.  This is experimental and may\n        // be reconsidered in the future.\n        if (element.nodeName === 'FORM') {\n            break;\n        }\n        element = element.parentElement;\n        recursionCounter += 1;\n    }\n}\nfunction normalizeWhitespace(s) {\n    return s.replace(/\\s+/g, ' ');\n}\nfunction truncate(s) {\n    return s.length > 100 ? \"\".concat(safeTruncate(s, 100), \" [...]\") : s;\n}\nfunction getElementById(refElement, id) {\n    // Use the element ownerDocument here, because tests are executed in an iframe, so\n    // document.getElementById won't work.\n    return refElement.ownerDocument ? refElement.ownerDocument.getElementById(id) : null;\n}\nfunction getTextualContent(element, userProgrammaticAttribute) {\n    if (element.isContentEditable) {\n        return;\n    }\n    if ('innerText' in element) {\n        var text_1 = element.innerText;\n        var removeTextFromElements = function (query) {\n            var list = element.querySelectorAll(query);\n            for (var index = 0; index < list.length; index += 1) {\n                var element_1 = list[index];\n                if ('innerText' in element_1) {\n                    var textToReplace = element_1.innerText;\n                    if (textToReplace && textToReplace.trim().length > 0) {\n                        text_1 = text_1.replace(textToReplace, '');\n                    }\n                }\n            }\n        };\n        if (!supportsInnerTextScriptAndStyleRemoval()) {\n            // remove the inner text of SCRIPT and STYLES from the result. This is a bit dirty, but should\n            // be relatively fast and work in most cases.\n            removeTextFromElements('script, style');\n        }\n        // remove the text of elements with programmatic attribute value\n        removeTextFromElements(\"[\".concat(DEFAULT_PROGRAMMATIC_ACTION_NAME_ATTRIBUTE, \"]\"));\n        if (userProgrammaticAttribute) {\n            removeTextFromElements(\"[\".concat(userProgrammaticAttribute, \"]\"));\n        }\n        return text_1;\n    }\n    return element.textContent;\n}\n/**\n * Returns true if element.innerText excludes the text from inline SCRIPT and STYLE element. This\n * should be the case everywhere except on Internet Explorer 10 and 11 (see [1])\n *\n * The innerText property relies on what is actually rendered to compute its output, so to check if\n * it actually excludes SCRIPT and STYLE content, a solution would be to create a style element, set\n * its content to '*', inject it in the document body, and check if the style element innerText\n * property returns '*'. Using a new `document` instance won't work as it is not rendered.\n *\n * This solution requires specific CSP rules (see [2]) to be set by the customer. We want to avoid\n * this, so instead we rely on browser detection. In case of false negative, the impact should be\n * low, since we rely on this result to remove the SCRIPT and STYLE innerText (which will be empty)\n * from a parent element innerText.\n *\n * [1]: https://web.archive.org/web/20210602165716/http://perfectionkills.com/the-poor-misunderstood-innerText/#diff-with-textContent\n * [2]: https://github.com/DataDog/browser-sdk/issues/1084\n */\nfunction supportsInnerTextScriptAndStyleRemoval() {\n    return !isIE();\n}\n/**\n * Returns true if the browser supports the element.labels property.  This should be the case\n * everywhere except on Internet Explorer.\n * Note: The result is computed lazily, because we don't want any DOM access when the SDK is\n * evaluated.\n */\nvar supportsLabelPropertyResult;\nfunction supportsLabelProperty() {\n    if (supportsLabelPropertyResult === undefined) {\n        supportsLabelPropertyResult = 'labels' in HTMLInputElement.prototype;\n    }\n    return supportsLabelPropertyResult;\n}\n/**\n * Returns true if the browser supports the element.closest method.  This should be the case\n * everywhere except on Internet Explorer.\n * Note: The result is computed lazily, because we don't want any DOM access when the SDK is\n * evaluated.\n */\nvar supportsElementClosestResult;\nfunction supportsElementClosest() {\n    if (supportsElementClosestResult === undefined) {\n        supportsElementClosestResult = 'closest' in HTMLElement.prototype;\n    }\n    return supportsElementClosestResult;\n}\n//# sourceMappingURL=getActionNameFromElement.js.map","import { cssEscape } from '@datadog/browser-core';\nimport { DEFAULT_PROGRAMMATIC_ACTION_NAME_ATTRIBUTE } from './getActionNameFromElement';\n/**\n * Stable attributes are attributes that are commonly used to identify parts of a UI (ex:\n * component). Those attribute values should not be generated randomly (hardcoded most of the time)\n * and stay the same across deploys. They are not necessarily unique across the document.\n */\nexport var STABLE_ATTRIBUTES = [\n    DEFAULT_PROGRAMMATIC_ACTION_NAME_ATTRIBUTE,\n    // Common test attributes (list provided by google recorder)\n    'data-testid',\n    'data-test',\n    'data-qa',\n    'data-cy',\n    'data-test-id',\n    'data-qa-id',\n    'data-testing',\n    // FullStory decorator attributes:\n    'data-component',\n    'data-element',\n    'data-source-file',\n];\n// Selectors to use if they target a single element on the whole document. Those selectors are\n// considered as \"stable\" and uniquely identify an element regardless of the page state. If we find\n// one, we should consider the selector \"complete\" and stop iterating over ancestors.\nvar GLOBALLY_UNIQUE_SELECTOR_GETTERS = [getStableAttributeSelector, getIDSelector];\n// Selectors to use if they target a single element among an element descendants. Those selectors\n// are more brittle than \"globally unique\" selectors and should be combined with ancestor selectors\n// to improve specificity.\nvar UNIQUE_AMONG_CHILDREN_SELECTOR_GETTERS = [\n    getStableAttributeSelector,\n    getClassSelector,\n    getTagNameSelector,\n];\nexport function getSelectorFromElement(targetElement, actionNameAttribute) {\n    var targetElementSelector = '';\n    var element = targetElement;\n    while (element && element.nodeName !== 'HTML') {\n        var globallyUniqueSelector = findSelector(element, GLOBALLY_UNIQUE_SELECTOR_GETTERS, isSelectorUniqueGlobally, actionNameAttribute, targetElementSelector);\n        if (globallyUniqueSelector) {\n            return globallyUniqueSelector;\n        }\n        var uniqueSelectorAmongChildren = findSelector(element, UNIQUE_AMONG_CHILDREN_SELECTOR_GETTERS, isSelectorUniqueAmongSiblings, actionNameAttribute, targetElementSelector);\n        targetElementSelector =\n            uniqueSelectorAmongChildren || combineSelector(getPositionSelector(element), targetElementSelector);\n        element = element.parentElement;\n    }\n    return targetElementSelector;\n}\nfunction isGeneratedValue(value) {\n    // To compute the \"URL path group\", the backend replaces every URL path parts as a question mark\n    // if it thinks the part is an identifier. The condition it uses is to checks whether a digit is\n    // present.\n    //\n    // Here, we use the same strategy: if a the value contains a digit, we consider it generated. This\n    // strategy might be a bit naive and fail in some cases, but there are many fallbacks to generate\n    // CSS selectors so it should be fine most of the time. We might want to allow customers to\n    // provide their own `isGeneratedValue` at some point.\n    return /[0-9]/.test(value);\n}\nfunction getIDSelector(element) {\n    if (element.id && !isGeneratedValue(element.id)) {\n        return \"#\".concat(cssEscape(element.id));\n    }\n}\nfunction getClassSelector(element) {\n    if (element.tagName === 'BODY') {\n        return;\n    }\n    if (element.classList.length > 0) {\n        for (var i = 0; i < element.classList.length; i += 1) {\n            var className = element.classList[i];\n            if (isGeneratedValue(className)) {\n                continue;\n            }\n            return \"\".concat(element.tagName, \".\").concat(cssEscape(className));\n        }\n    }\n}\nfunction getTagNameSelector(element) {\n    return element.tagName;\n}\nfunction getStableAttributeSelector(element, actionNameAttribute) {\n    if (actionNameAttribute) {\n        var selector = getAttributeSelector(actionNameAttribute);\n        if (selector)\n            return selector;\n    }\n    for (var _i = 0, STABLE_ATTRIBUTES_1 = STABLE_ATTRIBUTES; _i < STABLE_ATTRIBUTES_1.length; _i++) {\n        var attributeName = STABLE_ATTRIBUTES_1[_i];\n        var selector = getAttributeSelector(attributeName);\n        if (selector)\n            return selector;\n    }\n    function getAttributeSelector(attributeName) {\n        if (element.hasAttribute(attributeName)) {\n            return \"\".concat(element.tagName, \"[\").concat(attributeName, \"=\\\"\").concat(cssEscape(element.getAttribute(attributeName)), \"\\\"]\");\n        }\n    }\n}\nfunction getPositionSelector(element) {\n    var sibling = element.parentElement.firstElementChild;\n    var elementIndex = 1;\n    while (sibling && sibling !== element) {\n        if (sibling.tagName === element.tagName) {\n            elementIndex += 1;\n        }\n        sibling = sibling.nextElementSibling;\n    }\n    return \"\".concat(element.tagName, \":nth-of-type(\").concat(elementIndex, \")\");\n}\nfunction findSelector(element, selectorGetters, predicate, actionNameAttribute, childSelector) {\n    for (var _i = 0, selectorGetters_1 = selectorGetters; _i < selectorGetters_1.length; _i++) {\n        var selectorGetter = selectorGetters_1[_i];\n        var elementSelector = selectorGetter(element, actionNameAttribute);\n        if (!elementSelector) {\n            continue;\n        }\n        var fullSelector = combineSelector(elementSelector, childSelector);\n        if (predicate(element, fullSelector)) {\n            return fullSelector;\n        }\n    }\n}\n/**\n * Check whether the selector is unique among the whole document.\n */\nfunction isSelectorUniqueGlobally(element, selector) {\n    return element.ownerDocument.querySelectorAll(selector).length === 1;\n}\n/**\n * Check whether the selector is unique among the element siblings. In other words, it returns true\n * if \"ELEMENT_PARENT > SELECTOR\" returns a single element.\n *\n * The result will be less accurate on browsers that don't support :scope (i. e. IE): it will check\n * for any element matching the selector contained in the parent (in other words,\n * \"ELEMENT_PARENT SELECTOR\" returns a single element), regardless of whether the selector is a\n * direct descendent of the element parent. This should not impact results too much: if it\n * inaccurately returns false, we'll just fall back to another strategy.\n */\nfunction isSelectorUniqueAmongSiblings(element, selector) {\n    return (element.parentElement.querySelectorAll(supportScopeSelector() ? combineSelector(':scope', selector) : selector)\n        .length === 1);\n}\nfunction combineSelector(parent, child) {\n    return child ? \"\".concat(parent, \">\").concat(child) : parent;\n}\nvar supportScopeSelectorCache;\nexport function supportScopeSelector() {\n    if (supportScopeSelectorCache === undefined) {\n        try {\n            document.querySelector(':scope');\n            supportScopeSelectorCache = true;\n        }\n        catch (_a) {\n            supportScopeSelectorCache = false;\n        }\n    }\n    return supportScopeSelectorCache;\n}\n//# sourceMappingURL=getSelectorFromElement.js.map","import { addEventListener, monitor } from '@datadog/browser-core';\nexport function listenActionEvents(_a) {\n    var onPointerDown = _a.onPointerDown, onClick = _a.onClick;\n    var hasSelectionChanged = false;\n    var selectionEmptyAtPointerDown;\n    var hasInputChanged = false;\n    var clickContext;\n    var listeners = [\n        addEventListener(window, \"pointerdown\" /* POINTER_DOWN */, function (event) {\n            hasSelectionChanged = false;\n            selectionEmptyAtPointerDown = isSelectionEmpty();\n            if (isMouseEventOnElement(event)) {\n                clickContext = onPointerDown(event);\n            }\n        }, { capture: true }),\n        addEventListener(window, \"selectionchange\" /* SELECTION_CHANGE */, function () {\n            if (!selectionEmptyAtPointerDown || !isSelectionEmpty()) {\n                hasSelectionChanged = true;\n            }\n        }, { capture: true }),\n        addEventListener(window, \"click\" /* CLICK */, function (clickEvent) {\n            if (isMouseEventOnElement(clickEvent) && clickContext) {\n                // Use a scoped variable to make sure the value is not changed by other clicks\n                var userActivity_1 = {\n                    selection: hasSelectionChanged,\n                    input: hasInputChanged,\n                };\n                if (!hasInputChanged) {\n                    setTimeout(monitor(function () {\n                        userActivity_1.input = hasInputChanged;\n                    }));\n                }\n                onClick(clickContext, clickEvent, function () { return userActivity_1; });\n                clickContext = undefined;\n            }\n        }, { capture: true }),\n        addEventListener(window, \"input\" /* INPUT */, function () {\n            hasInputChanged = true;\n        }, { capture: true }),\n    ];\n    return {\n        stop: function () {\n            listeners.forEach(function (listener) { return listener.stop(); });\n        },\n    };\n}\nfunction isSelectionEmpty() {\n    var selection = window.getSelection();\n    return !selection || selection.isCollapsed;\n}\nfunction isMouseEventOnElement(event) {\n    return event.target instanceof Element;\n}\n//# sourceMappingURL=listenActionEvents.js.map","import { elementMatches, ONE_SECOND } from '@datadog/browser-core';\nvar MIN_CLICKS_PER_SECOND_TO_CONSIDER_RAGE = 3;\nexport function computeFrustration(clicks, rageClick) {\n    if (isRage(clicks)) {\n        rageClick.addFrustration(\"rage_click\" /* RAGE_CLICK */);\n        if (clicks.some(isDead)) {\n            rageClick.addFrustration(\"dead_click\" /* DEAD_CLICK */);\n        }\n        if (rageClick.hasError) {\n            rageClick.addFrustration(\"error_click\" /* ERROR_CLICK */);\n        }\n        return { isRage: true };\n    }\n    var hasSelectionChanged = clicks.some(function (click) { return click.getUserActivity().selection; });\n    clicks.forEach(function (click) {\n        if (click.hasError) {\n            click.addFrustration(\"error_click\" /* ERROR_CLICK */);\n        }\n        if (isDead(click) &&\n            // Avoid considering clicks part of a double-click or triple-click selections as dead clicks\n            !hasSelectionChanged) {\n            click.addFrustration(\"dead_click\" /* DEAD_CLICK */);\n        }\n    });\n    return { isRage: false };\n}\nexport function isRage(clicks) {\n    if (clicks.some(function (click) { return click.getUserActivity().selection; })) {\n        return false;\n    }\n    for (var i = 0; i < clicks.length - (MIN_CLICKS_PER_SECOND_TO_CONSIDER_RAGE - 1); i += 1) {\n        if (clicks[i + MIN_CLICKS_PER_SECOND_TO_CONSIDER_RAGE - 1].event.timeStamp - clicks[i].event.timeStamp <=\n            ONE_SECOND) {\n            return true;\n        }\n    }\n    return false;\n}\nvar DEAD_CLICK_EXCLUDE_SELECTOR = \n// inputs that don't trigger a meaningful event like \"input\" when clicked, including textual\n// inputs (using a negative selector is shorter here)\n'input:not([type=\"checkbox\"]):not([type=\"radio\"]):not([type=\"button\"]):not([type=\"submit\"]):not([type=\"reset\"]):not([type=\"range\"]),' +\n    'textarea,' +\n    'select,' +\n    // canvas, as there is no good way to detect activity occurring on them\n    'canvas,' +\n    // links that are interactive (have an href attribute) or any of their descendants, as they can\n    // open a new tab or navigate to a hash without triggering a meaningful event\n    'a[href],' +\n    'a[href] *';\nexport function isDead(click) {\n    if (click.hasPageActivity || click.getUserActivity().input) {\n        return false;\n    }\n    return !elementMatches(click.event.target, DEAD_CLICK_EXCLUDE_SELECTOR);\n}\n//# sourceMappingURL=computeFrustration.js.map","import { timeStampNow, isExperimentalFeatureEnabled, Observable, assign, getRelativeTime, ONE_MINUTE, ContextHistory, generateUUID, clocksNow, ONE_SECOND, elapsed, } from '@datadog/browser-core';\nimport { trackEventCounts } from '../../trackEventCounts';\nimport { waitPageActivityEnd } from '../../waitPageActivityEnd';\nimport { createClickChain } from './clickChain';\nimport { getActionNameFromElement } from './getActionNameFromElement';\nimport { getSelectorFromElement } from './getSelectorFromElement';\nimport { listenActionEvents } from './listenActionEvents';\nimport { computeFrustration } from './computeFrustration';\n// Maximum duration for click actions\nexport var CLICK_ACTION_MAX_DURATION = 10 * ONE_SECOND;\nexport var ACTION_CONTEXT_TIME_OUT_DELAY = 5 * ONE_MINUTE; // arbitrary\nexport function trackClickActions(lifeCycle, domMutationObservable, configuration) {\n    var history = new ContextHistory(ACTION_CONTEXT_TIME_OUT_DELAY);\n    var stopObservable = new Observable();\n    var currentClickChain;\n    lifeCycle.subscribe(8 /* SESSION_RENEWED */, function () {\n        history.reset();\n    });\n    lifeCycle.subscribe(4 /* VIEW_ENDED */, stopClickChain);\n    var stopActionEventsListener = listenActionEvents({\n        onPointerDown: function (pointerDownEvent) { return processPointerDown(configuration, history, pointerDownEvent); },\n        onClick: function (clickActionBase, clickEvent, getUserActivity) {\n            return processClick(configuration, lifeCycle, domMutationObservable, history, stopObservable, appendClickToClickChain, clickActionBase, clickEvent, getUserActivity);\n        },\n    }).stop;\n    var actionContexts = {\n        findActionId: function (startTime) {\n            return configuration.trackFrustrations ? history.findAll(startTime) : history.find(startTime);\n        },\n    };\n    return {\n        stop: function () {\n            stopClickChain();\n            stopObservable.notify();\n            stopActionEventsListener();\n        },\n        actionContexts: actionContexts,\n    };\n    function appendClickToClickChain(click) {\n        if (!currentClickChain || !currentClickChain.tryAppend(click)) {\n            var rageClick_1 = click.clone();\n            currentClickChain = createClickChain(click, function (clicks) {\n                finalizeClicks(clicks, rageClick_1);\n            });\n        }\n    }\n    function stopClickChain() {\n        if (currentClickChain) {\n            currentClickChain.stop();\n        }\n    }\n}\nfunction processPointerDown(configuration, history, pointerDownEvent) {\n    if (!configuration.trackFrustrations && history.find()) {\n        // TODO: remove this in a future major version. To keep retrocompatibility, ignore any new\n        // action if another one is already occurring.\n        return;\n    }\n    var clickActionBase = computeClickActionBase(pointerDownEvent, configuration.actionNameAttribute);\n    if (!configuration.trackFrustrations && !clickActionBase.name) {\n        // TODO: remove this in a future major version. To keep retrocompatibility, ignore any action\n        // with a blank name\n        return;\n    }\n    return clickActionBase;\n}\nfunction processClick(configuration, lifeCycle, domMutationObservable, history, stopObservable, appendClickToClickChain, clickActionBase, clickEvent, getUserActivity) {\n    var click = newClick(lifeCycle, history, getUserActivity, clickActionBase, clickEvent);\n    if (configuration.trackFrustrations) {\n        appendClickToClickChain(click);\n    }\n    var stopWaitPageActivityEnd = waitPageActivityEnd(lifeCycle, domMutationObservable, configuration, function (pageActivityEndEvent) {\n        if (pageActivityEndEvent.hadActivity && pageActivityEndEvent.end < click.startClocks.timeStamp) {\n            // If the clock is looking weird, just discard the click\n            click.discard();\n        }\n        else {\n            click.stop(pageActivityEndEvent.hadActivity ? pageActivityEndEvent.end : undefined);\n            // Validate or discard the click only if we don't track frustrations. It'll be done when\n            // the click chain is finalized.\n            if (!configuration.trackFrustrations) {\n                if (!pageActivityEndEvent.hadActivity) {\n                    // If we are not tracking frustrations, we should discard the click to keep backward\n                    // compatibility.\n                    click.discard();\n                }\n                else {\n                    click.validate();\n                }\n            }\n        }\n    }, CLICK_ACTION_MAX_DURATION).stop;\n    var viewEndedSubscription = lifeCycle.subscribe(4 /* VIEW_ENDED */, function (_a) {\n        var endClocks = _a.endClocks;\n        click.stop(endClocks.timeStamp);\n    });\n    var stopSubscription = stopObservable.subscribe(function () {\n        click.stop();\n    });\n    click.stopObservable.subscribe(function () {\n        viewEndedSubscription.unsubscribe();\n        stopWaitPageActivityEnd();\n        stopSubscription.unsubscribe();\n    });\n}\nfunction computeClickActionBase(event, actionNameAttribute) {\n    var target;\n    var position;\n    if (isExperimentalFeatureEnabled('clickmap')) {\n        var rect = event.target.getBoundingClientRect();\n        target = {\n            width: Math.round(rect.width),\n            height: Math.round(rect.height),\n            selector: getSelectorFromElement(event.target, actionNameAttribute),\n        };\n        position = {\n            // Use clientX and Y because for SVG element offsetX and Y are relatives to the <svg> element\n            x: Math.round(event.clientX - rect.left),\n            y: Math.round(event.clientY - rect.top),\n        };\n    }\n    return {\n        type: \"click\" /* CLICK */,\n        target: target,\n        position: position,\n        name: getActionNameFromElement(event.target, actionNameAttribute),\n    };\n}\nfunction newClick(lifeCycle, history, getUserActivity, clickActionBase, clickEvent) {\n    var id = generateUUID();\n    var startClocks = clocksNow();\n    var historyEntry = history.add(id, startClocks.relative);\n    var eventCountsSubscription = trackEventCounts(lifeCycle);\n    var status = 0 /* ONGOING */;\n    var activityEndTime;\n    var frustrationTypes = [];\n    var stopObservable = new Observable();\n    function stop(newActivityEndTime) {\n        if (status !== 0 /* ONGOING */) {\n            return;\n        }\n        activityEndTime = newActivityEndTime;\n        status = 1 /* STOPPED */;\n        if (activityEndTime) {\n            historyEntry.close(getRelativeTime(activityEndTime));\n        }\n        else {\n            historyEntry.remove();\n        }\n        eventCountsSubscription.stop();\n        stopObservable.notify();\n    }\n    return {\n        event: clickEvent,\n        stop: stop,\n        stopObservable: stopObservable,\n        get hasError() {\n            return eventCountsSubscription.eventCounts.errorCount > 0;\n        },\n        get hasPageActivity() {\n            return activityEndTime !== undefined;\n        },\n        getUserActivity: getUserActivity,\n        addFrustration: function (frustrationType) {\n            frustrationTypes.push(frustrationType);\n        },\n        startClocks: startClocks,\n        isStopped: function () { return status === 1 /* STOPPED */ || status === 2 /* FINALIZED */; },\n        clone: function () { return newClick(lifeCycle, history, getUserActivity, clickActionBase, clickEvent); },\n        validate: function (domEvents) {\n            stop();\n            if (status !== 1 /* STOPPED */) {\n                return;\n            }\n            var _a = eventCountsSubscription.eventCounts, resourceCount = _a.resourceCount, errorCount = _a.errorCount, longTaskCount = _a.longTaskCount;\n            var clickAction = assign({\n                type: \"click\" /* CLICK */,\n                duration: activityEndTime && elapsed(startClocks.timeStamp, activityEndTime),\n                startClocks: startClocks,\n                id: id,\n                frustrationTypes: frustrationTypes,\n                counts: {\n                    resourceCount: resourceCount,\n                    errorCount: errorCount,\n                    longTaskCount: longTaskCount,\n                },\n                events: domEvents !== null && domEvents !== void 0 ? domEvents : [clickEvent],\n                event: clickEvent,\n            }, clickActionBase);\n            lifeCycle.notify(1 /* AUTO_ACTION_COMPLETED */, clickAction);\n            status = 2 /* FINALIZED */;\n        },\n        discard: function () {\n            stop();\n            status = 2 /* FINALIZED */;\n        },\n    };\n}\nexport function finalizeClicks(clicks, rageClick) {\n    var isRage = computeFrustration(clicks, rageClick).isRage;\n    if (isRage) {\n        clicks.forEach(function (click) { return click.discard(); });\n        rageClick.stop(timeStampNow());\n        rageClick.validate(clicks.map(function (click) { return click.event; }));\n    }\n    else {\n        rageClick.discard();\n        clicks.forEach(function (click) { return click.validate(); });\n    }\n}\n//# sourceMappingURL=trackClickActions.js.map","import { noop, assign, combine, toServerDuration, generateUUID } from '@datadog/browser-core';\nimport { trackClickActions } from './trackClickActions';\nexport function startActionCollection(lifeCycle, domMutationObservable, configuration, foregroundContexts) {\n    lifeCycle.subscribe(1 /* AUTO_ACTION_COMPLETED */, function (action) {\n        return lifeCycle.notify(10 /* RAW_RUM_EVENT_COLLECTED */, processAction(action, foregroundContexts));\n    });\n    var actionContexts = { findActionId: noop };\n    if (configuration.trackInteractions) {\n        actionContexts = trackClickActions(lifeCycle, domMutationObservable, configuration).actionContexts;\n    }\n    return {\n        addAction: function (action, savedCommonContext) {\n            lifeCycle.notify(10 /* RAW_RUM_EVENT_COLLECTED */, assign({\n                savedCommonContext: savedCommonContext,\n            }, processAction(action, foregroundContexts)));\n        },\n        actionContexts: actionContexts,\n    };\n}\nfunction processAction(action, foregroundContexts) {\n    var autoActionProperties = isAutoAction(action)\n        ? {\n            action: {\n                id: action.id,\n                loading_time: toServerDuration(action.duration),\n                frustration: {\n                    type: action.frustrationTypes,\n                },\n                error: {\n                    count: action.counts.errorCount,\n                },\n                long_task: {\n                    count: action.counts.longTaskCount,\n                },\n                resource: {\n                    count: action.counts.resourceCount,\n                },\n            },\n            _dd: {\n                action: {\n                    target: action.target,\n                    position: action.position,\n                },\n            },\n        }\n        : undefined;\n    var customerContext = !isAutoAction(action) ? action.context : undefined;\n    var actionEvent = combine({\n        action: {\n            id: generateUUID(),\n            target: {\n                name: action.name,\n            },\n            type: action.type,\n        },\n        date: action.startClocks.timeStamp,\n        type: \"action\" /* ACTION */,\n    }, autoActionProperties);\n    var inForeground = foregroundContexts.isInForegroundAt(action.startClocks.relative);\n    if (inForeground !== undefined) {\n        actionEvent.view = { in_foreground: inForeground };\n    }\n    return {\n        customerContext: customerContext,\n        rawRumEvent: actionEvent,\n        startTime: action.startClocks.relative,\n        domainContext: isAutoAction(action) ? { event: action.event, events: action.events } : {},\n    };\n}\nfunction isAutoAction(action) {\n    return action.type !== \"custom\" /* CUSTOM */;\n}\n//# sourceMappingURL=actionCollection.js.map","import { instrumentMethodAndCallOriginal } from '../../tools/instrumentMethod';\nimport { computeStackTrace } from './computeStackTrace';\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types\nvar ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;\n/**\n * Cross-browser collection of unhandled errors\n *\n * Supports:\n * - Firefox: full stack trace with line numbers, plus column number\n * on top frame; column number is not guaranteed\n * - Opera: full stack trace with line and column numbers\n * - Chrome: full stack trace with line and column numbers\n * - Safari: line and column number for the top frame only; some frames\n * may be missing, and column number is not guaranteed\n * - IE: line and column number for the top frame only; some frames\n * may be missing, and column number is not guaranteed\n *\n * In theory, TraceKit should work on all of the following versions:\n * - IE5.5+ (only 8.0 tested)\n * - Firefox 0.9+ (only 3.5+ tested)\n * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require\n * Exceptions Have Stacktrace to be enabled in opera:config)\n * - Safari 3+ (only 4+ tested)\n * - Chrome 1+ (only 5+ tested)\n * - Konqueror 3.5+ (untested)\n *\n * Tries to catch all unhandled errors and report them to the\n * callback.\n *\n * Callbacks receive a StackTrace object as described in the\n * computeStackTrace docs.\n *\n * @memberof TraceKit\n * @namespace\n */\nexport function startUnhandledErrorCollection(callback) {\n    var stopInstrumentingOnError = instrumentOnError(callback).stop;\n    var stopInstrumentingOnUnhandledRejection = instrumentUnhandledRejection(callback).stop;\n    return {\n        stop: function () {\n            stopInstrumentingOnError();\n            stopInstrumentingOnUnhandledRejection();\n        },\n    };\n}\n/**\n * Install a global onerror handler\n */\nfunction instrumentOnError(callback) {\n    return instrumentMethodAndCallOriginal(window, 'onerror', {\n        before: function (message, url, lineNo, columnNo, errorObj) {\n            var stack;\n            if (errorObj) {\n                stack = computeStackTrace(errorObj);\n                callback(stack, errorObj);\n            }\n            else {\n                var location_1 = {\n                    url: url,\n                    column: columnNo,\n                    line: lineNo,\n                };\n                var name_1;\n                var msg = message;\n                if ({}.toString.call(message) === '[object String]') {\n                    var groups = ERROR_TYPES_RE.exec(msg);\n                    if (groups) {\n                        name_1 = groups[1];\n                        msg = groups[2];\n                    }\n                }\n                stack = {\n                    name: name_1,\n                    message: typeof msg === 'string' ? msg : undefined,\n                    stack: [location_1],\n                };\n                callback(stack, message);\n            }\n        },\n    });\n}\n/**\n * Install a global onunhandledrejection handler\n */\nfunction instrumentUnhandledRejection(callback) {\n    return instrumentMethodAndCallOriginal(window, 'onunhandledrejection', {\n        before: function (e) {\n            var reason = e.reason || 'Empty reason';\n            var stack = computeStackTrace(reason);\n            callback(stack, reason);\n        },\n    });\n}\n//# sourceMappingURL=tracekit.js.map","import { ErrorSource, computeRawError } from '../../tools/error';\nimport { clocksNow } from '../../tools/timeUtils';\nimport { startUnhandledErrorCollection } from '../tracekit';\nexport function trackRuntimeError(errorObservable) {\n    return startUnhandledErrorCollection(function (stackTrace, originalError) {\n        errorObservable.notify(computeRawError({\n            stackTrace: stackTrace,\n            originalError: originalError,\n            startClocks: clocksNow(),\n            nonErrorPrefix: 'Uncaught',\n            source: ErrorSource.SOURCE,\n            handling: \"unhandled\" /* UNHANDLED */,\n        }));\n    });\n}\n//# sourceMappingURL=trackRuntimeError.js.map","import { computeStackTrace } from '../tracekit';\nimport { createHandlingStack, formatErrorMessage, toStackTraceString } from '../../tools/error';\nimport { mergeObservables, Observable } from '../../tools/observable';\nimport { find, jsonStringify } from '../../tools/utils';\nimport { ConsoleApiName } from '../../tools/display';\nimport { callMonitored } from '../../tools/monitor';\nvar consoleObservablesByApi = {};\nexport function initConsoleObservable(apis) {\n    var consoleObservables = apis.map(function (api) {\n        if (!consoleObservablesByApi[api]) {\n            consoleObservablesByApi[api] = createConsoleObservable(api);\n        }\n        return consoleObservablesByApi[api];\n    });\n    return mergeObservables.apply(void 0, consoleObservables);\n}\n/* eslint-disable no-console */\nfunction createConsoleObservable(api) {\n    var observable = new Observable(function () {\n        var originalConsoleApi = console[api];\n        console[api] = function () {\n            var params = [];\n            for (var _i = 0; _i < arguments.length; _i++) {\n                params[_i] = arguments[_i];\n            }\n            originalConsoleApi.apply(console, params);\n            var handlingStack = createHandlingStack();\n            callMonitored(function () {\n                observable.notify(buildConsoleLog(params, api, handlingStack));\n            });\n        };\n        return function () {\n            console[api] = originalConsoleApi;\n        };\n    });\n    return observable;\n}\nfunction buildConsoleLog(params, api, handlingStack) {\n    // Todo: remove console error prefix in the next major version\n    var message = params.map(function (param) { return formatConsoleParameters(param); }).join(' ');\n    var stack;\n    if (api === ConsoleApiName.error) {\n        var firstErrorParam = find(params, function (param) { return param instanceof Error; });\n        stack = firstErrorParam ? toStackTraceString(computeStackTrace(firstErrorParam)) : undefined;\n        message = \"console error: \".concat(message);\n    }\n    return {\n        api: api,\n        message: message,\n        stack: stack,\n        handlingStack: handlingStack,\n    };\n}\nfunction formatConsoleParameters(param) {\n    if (typeof param === 'string') {\n        return param;\n    }\n    if (param instanceof Error) {\n        return formatErrorMessage(computeStackTrace(param));\n    }\n    return jsonStringify(param, undefined, 2);\n}\n//# sourceMappingURL=consoleObservable.js.map","import { clocksNow, initConsoleObservable, ErrorSource, ConsoleApiName } from '@datadog/browser-core';\nexport function trackConsoleError(errorObservable) {\n    var subscription = initConsoleObservable([ConsoleApiName.error]).subscribe(function (consoleError) {\n        return errorObservable.notify({\n            startClocks: clocksNow(),\n            message: consoleError.message,\n            stack: consoleError.stack,\n            source: ErrorSource.CONSOLE,\n            handling: \"handled\" /* HANDLED */,\n            handlingStack: consoleError.handlingStack,\n        });\n    });\n    return {\n        stop: function () {\n            subscription.unsubscribe();\n        },\n    };\n}\n//# sourceMappingURL=trackConsoleError.js.map","import { toStackTraceString } from '../../tools/error';\nimport { monitor } from '../../tools/monitor';\nimport { mergeObservables, Observable } from '../../tools/observable';\nimport { includes, addEventListener, safeTruncate } from '../../tools/utils';\nexport var RawReportType = {\n    intervention: 'intervention',\n    deprecation: 'deprecation',\n    cspViolation: 'csp_violation',\n};\nexport function initReportObservable(apis) {\n    var observables = [];\n    if (includes(apis, RawReportType.cspViolation)) {\n        observables.push(createCspViolationReportObservable());\n    }\n    var reportTypes = apis.filter(function (api) { return api !== RawReportType.cspViolation; });\n    if (reportTypes.length) {\n        observables.push(createReportObservable(reportTypes));\n    }\n    return mergeObservables.apply(void 0, observables);\n}\nfunction createReportObservable(reportTypes) {\n    var observable = new Observable(function () {\n        if (!window.ReportingObserver) {\n            return;\n        }\n        var handleReports = monitor(function (reports) {\n            return reports.forEach(function (report) {\n                observable.notify(buildRawReportFromReport(report));\n            });\n        });\n        var observer = new window.ReportingObserver(handleReports, {\n            types: reportTypes,\n            buffered: true,\n        });\n        observer.observe();\n        return function () {\n            observer.disconnect();\n        };\n    });\n    return observable;\n}\nfunction createCspViolationReportObservable() {\n    var observable = new Observable(function () {\n        var handleCspViolation = monitor(function (event) {\n            observable.notify(buildRawReportFromCspViolation(event));\n        });\n        var stop = addEventListener(document, \"securitypolicyviolation\" /* SECURITY_POLICY_VIOLATION */, handleCspViolation).stop;\n        return stop;\n    });\n    return observable;\n}\nfunction buildRawReportFromReport(_a) {\n    var type = _a.type, body = _a.body;\n    return {\n        type: type,\n        subtype: body.id,\n        message: \"\".concat(type, \": \").concat(body.message),\n        stack: buildStack(body.id, body.message, body.sourceFile, body.lineNumber, body.columnNumber),\n    };\n}\nfunction buildRawReportFromCspViolation(event) {\n    var type = RawReportType.cspViolation;\n    var message = \"'\".concat(event.blockedURI, \"' blocked by '\").concat(event.effectiveDirective, \"' directive\");\n    return {\n        type: RawReportType.cspViolation,\n        subtype: event.effectiveDirective,\n        message: \"\".concat(type, \": \").concat(message),\n        stack: buildStack(event.effectiveDirective, event.originalPolicy\n            ? \"\".concat(message, \" of the policy \\\"\").concat(safeTruncate(event.originalPolicy, 100, '...'), \"\\\"\")\n            : 'no policy', event.sourceFile, event.lineNumber, event.columnNumber),\n    };\n}\nfunction buildStack(name, message, sourceFile, lineNumber, columnNumber) {\n    return (sourceFile &&\n        toStackTraceString({\n            name: name,\n            message: message,\n            stack: [\n                {\n                    func: '?',\n                    url: sourceFile,\n                    line: lineNumber,\n                    column: columnNumber,\n                },\n            ],\n        }));\n}\n//# sourceMappingURL=reportObservable.js.map","import { addEventListeners } from '@datadog/browser-core';\nvar trackFirstHiddenSingleton;\nvar stopListeners;\nexport function trackFirstHidden(emitter) {\n    if (emitter === void 0) { emitter = window; }\n    if (!trackFirstHiddenSingleton) {\n        if (document.visibilityState === 'hidden') {\n            trackFirstHiddenSingleton = {\n                timeStamp: 0,\n            };\n        }\n        else {\n            trackFirstHiddenSingleton = {\n                timeStamp: Infinity,\n            };\n            (stopListeners = addEventListeners(emitter, [\"pagehide\" /* PAGE_HIDE */, \"visibilitychange\" /* VISIBILITY_CHANGE */], function (event) {\n                if (event.type === 'pagehide' || document.visibilityState === 'hidden') {\n                    trackFirstHiddenSingleton.timeStamp = event.timeStamp;\n                    stopListeners();\n                }\n            }, { capture: true }).stop);\n        }\n    }\n    return trackFirstHiddenSingleton;\n}\nexport function resetFirstHidden() {\n    if (stopListeners) {\n        stopListeners();\n    }\n    trackFirstHiddenSingleton = undefined;\n}\n//# sourceMappingURL=trackFirstHidden.js.map","import { clocksNow, ErrorSource, initReportObservable, RawReportType } from '@datadog/browser-core';\nexport function trackReportError(errorObservable) {\n    var subscription = initReportObservable([RawReportType.cspViolation, RawReportType.intervention]).subscribe(function (reportError) {\n        return errorObservable.notify({\n            startClocks: clocksNow(),\n            message: reportError.message,\n            stack: reportError.stack,\n            type: reportError.subtype,\n            source: ErrorSource.REPORT,\n            handling: \"unhandled\" /* UNHANDLED */,\n        });\n    });\n    return {\n        stop: function () {\n            subscription.unsubscribe();\n        },\n    };\n}\n//# sourceMappingURL=trackReportError.js.map","import { isEmptyObject, assign, ErrorSource, generateUUID, computeRawError, computeStackTrace, Observable, trackRuntimeError, } from '@datadog/browser-core';\nimport { trackConsoleError } from './trackConsoleError';\nimport { trackReportError } from './trackReportError';\nexport function startErrorCollection(lifeCycle, foregroundContexts, viewContexts) {\n    var errorObservable = new Observable();\n    trackConsoleError(errorObservable);\n    trackRuntimeError(errorObservable);\n    trackReportError(errorObservable);\n    errorObservable.subscribe(function (error) { return lifeCycle.notify(12 /* RAW_ERROR_COLLECTED */, { error: error }); });\n    return doStartErrorCollection(lifeCycle, foregroundContexts, viewContexts);\n}\nexport function doStartErrorCollection(lifeCycle, foregroundContexts, viewContexts) {\n    lifeCycle.subscribe(12 /* RAW_ERROR_COLLECTED */, function (_a) {\n        var error = _a.error, customerContext = _a.customerContext, savedCommonContext = _a.savedCommonContext;\n        lifeCycle.notify(10 /* RAW_RUM_EVENT_COLLECTED */, assign({\n            customerContext: customerContext,\n            savedCommonContext: savedCommonContext,\n        }, processError(error, foregroundContexts, viewContexts)));\n    });\n    return {\n        addError: function (_a, savedCommonContext) {\n            var error = _a.error, handlingStack = _a.handlingStack, startClocks = _a.startClocks, customerContext = _a.context;\n            var stackTrace = error instanceof Error ? computeStackTrace(error) : undefined;\n            var rawError = computeRawError({\n                stackTrace: stackTrace,\n                originalError: error,\n                handlingStack: handlingStack,\n                startClocks: startClocks,\n                nonErrorPrefix: 'Provided',\n                source: ErrorSource.CUSTOM,\n                handling: \"handled\" /* HANDLED */,\n            });\n            lifeCycle.notify(12 /* RAW_ERROR_COLLECTED */, {\n                customerContext: customerContext,\n                savedCommonContext: savedCommonContext,\n                error: rawError,\n            });\n        },\n    };\n}\nfunction processError(error, foregroundContexts, viewContexts) {\n    var rawRumEvent = {\n        date: error.startClocks.timeStamp,\n        error: {\n            id: generateUUID(),\n            message: error.message,\n            source: error.source,\n            stack: error.stack,\n            handling_stack: error.handlingStack,\n            type: error.type,\n            handling: error.handling,\n            causes: error.causes,\n            source_type: 'browser',\n        },\n        type: \"error\" /* ERROR */,\n    };\n    var inForeground = foregroundContexts.isInForegroundAt(error.startClocks.relative);\n    if (inForeground) {\n        rawRumEvent.view = { in_foreground: inForeground };\n    }\n    var viewContext = viewContexts.findView(error.startClocks.relative);\n    if (viewContext && !isEmptyObject(viewContext.featureFlagEvaluations)) {\n        rawRumEvent.feature_flags = viewContext.featureFlagEvaluations;\n    }\n    return {\n        rawRumEvent: rawRumEvent,\n        startTime: error.startClocks.relative,\n        domainContext: {\n            error: error.originalError,\n        },\n    };\n}\n//# sourceMappingURL=errorCollection.js.map","import { toServerDuration, relativeToClocks, generateUUID } from '@datadog/browser-core';\nexport function startLongTaskCollection(lifeCycle, sessionManager) {\n    lifeCycle.subscribe(0 /* PERFORMANCE_ENTRIES_COLLECTED */, function (entries) {\n        for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) {\n            var entry = entries_1[_i];\n            if (entry.entryType !== 'longtask') {\n                break;\n            }\n            var session = sessionManager.findTrackedSession(entry.startTime);\n            if (!session || !session.longTaskAllowed) {\n                break;\n            }\n            var startClocks = relativeToClocks(entry.startTime);\n            var rawRumEvent = {\n                date: startClocks.timeStamp,\n                long_task: {\n                    id: generateUUID(),\n                    duration: toServerDuration(entry.duration),\n                },\n                type: \"long_task\" /* LONG_TASK */,\n                _dd: {\n                    discarded: false,\n                },\n            };\n            lifeCycle.notify(10 /* RAW_RUM_EVENT_COLLECTED */, {\n                rawRumEvent: rawRumEvent,\n                startTime: startClocks.relative,\n                domainContext: { performanceEntry: entry.toJSON() },\n            });\n        }\n    });\n}\n//# sourceMappingURL=longTaskCollection.js.map","import { addDuration } from '@datadog/browser-core';\nimport { toValidEntry } from './resourceUtils';\n/**\n * Look for corresponding timing in resource timing buffer\n *\n * Observations:\n * - Timing (start, end) are nested inside the request (start, end)\n * - Some timing can be not exactly nested, being off by < 1 ms\n *\n * Strategy:\n * - from valid nested entries (with 1 ms error margin)\n * - if a single timing match, return the timing\n * - otherwise we can't decide, return undefined\n */\nexport function matchRequestTiming(request) {\n    if (!performance || !('getEntriesByName' in performance)) {\n        return;\n    }\n    var sameNameEntries = performance.getEntriesByName(request.url, 'resource');\n    if (!sameNameEntries.length || !('toJSON' in sameNameEntries[0])) {\n        return;\n    }\n    var candidates = sameNameEntries\n        .map(function (entry) { return entry.toJSON(); })\n        .filter(toValidEntry)\n        .filter(function (entry) {\n        return isBetween(entry, request.startClocks.relative, endTime({ startTime: request.startClocks.relative, duration: request.duration }));\n    });\n    if (candidates.length === 1) {\n        return candidates[0];\n    }\n    return;\n}\nfunction endTime(timing) {\n    return addDuration(timing.startTime, timing.duration);\n}\nfunction isBetween(timing, start, end) {\n    var errorMargin = 1;\n    return timing.startTime >= start - errorMargin && endTime(timing) <= addDuration(end, errorMargin);\n}\n//# sourceMappingURL=matchRequestTiming.js.map","import { combine, generateUUID, toServerDuration, relativeToClocks, assign, isNumber, } from '@datadog/browser-core';\nimport { matchRequestTiming } from './matchRequestTiming';\nimport { computePerformanceResourceDetails, computePerformanceResourceDuration, computeResourceKind, computeSize, isRequestKind, } from './resourceUtils';\nexport function startResourceCollection(lifeCycle, configuration, sessionManager) {\n    lifeCycle.subscribe(6 /* REQUEST_COMPLETED */, function (request) {\n        lifeCycle.notify(10 /* RAW_RUM_EVENT_COLLECTED */, processRequest(request, configuration, sessionManager));\n    });\n    lifeCycle.subscribe(0 /* PERFORMANCE_ENTRIES_COLLECTED */, function (entries) {\n        for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) {\n            var entry = entries_1[_i];\n            if (entry.entryType === 'resource' && !isRequestKind(entry)) {\n                lifeCycle.notify(10 /* RAW_RUM_EVENT_COLLECTED */, processResourceEntry(entry, configuration, sessionManager));\n            }\n        }\n    });\n}\nfunction processRequest(request, configuration, sessionManager) {\n    var type = request.type === \"xhr\" /* XHR */ ? \"xhr\" /* XHR */ : \"fetch\" /* FETCH */;\n    var matchingTiming = matchRequestTiming(request);\n    var startClocks = matchingTiming ? relativeToClocks(matchingTiming.startTime) : request.startClocks;\n    var correspondingTimingOverrides = matchingTiming ? computePerformanceEntryMetrics(matchingTiming) : undefined;\n    var tracingInfo = computeRequestTracingInfo(request, configuration);\n    var indexingInfo = computeIndexingInfo(sessionManager, startClocks);\n    var resourceEvent = combine({\n        date: startClocks.timeStamp,\n        resource: {\n            id: generateUUID(),\n            type: type,\n            duration: toServerDuration(request.duration),\n            method: request.method,\n            status_code: request.status,\n            url: request.url,\n        },\n        type: \"resource\" /* RESOURCE */,\n    }, tracingInfo, correspondingTimingOverrides, indexingInfo);\n    return {\n        startTime: startClocks.relative,\n        rawRumEvent: resourceEvent,\n        domainContext: {\n            performanceEntry: matchingTiming && toPerformanceEntryRepresentation(matchingTiming),\n            xhr: request.xhr,\n            response: request.response,\n            requestInput: request.input,\n            requestInit: request.init,\n            error: request.error,\n        },\n    };\n}\nfunction processResourceEntry(entry, configuration, sessionManager) {\n    var type = computeResourceKind(entry);\n    var entryMetrics = computePerformanceEntryMetrics(entry);\n    var startClocks = relativeToClocks(entry.startTime);\n    var tracingInfo = computeEntryTracingInfo(entry, configuration);\n    var indexingInfo = computeIndexingInfo(sessionManager, startClocks);\n    var resourceEvent = combine({\n        date: startClocks.timeStamp,\n        resource: {\n            id: generateUUID(),\n            type: type,\n            url: entry.name,\n        },\n        type: \"resource\" /* RESOURCE */,\n    }, tracingInfo, entryMetrics, indexingInfo);\n    return {\n        startTime: startClocks.relative,\n        rawRumEvent: resourceEvent,\n        domainContext: {\n            performanceEntry: toPerformanceEntryRepresentation(entry),\n        },\n    };\n}\nfunction computePerformanceEntryMetrics(timing) {\n    return {\n        resource: assign({\n            duration: computePerformanceResourceDuration(timing),\n            size: computeSize(timing),\n        }, computePerformanceResourceDetails(timing)),\n    };\n}\nfunction computeRequestTracingInfo(request, configuration) {\n    var hasBeenTraced = request.traceSampled && request.traceId && request.spanId;\n    if (!hasBeenTraced) {\n        return undefined;\n    }\n    return {\n        _dd: {\n            span_id: request.spanId.toDecimalString(),\n            trace_id: request.traceId.toDecimalString(),\n            rule_psr: getRulePsr(configuration),\n        },\n    };\n}\nfunction computeEntryTracingInfo(entry, configuration) {\n    var hasBeenTraced = entry.traceId;\n    if (!hasBeenTraced) {\n        return undefined;\n    }\n    return {\n        _dd: {\n            trace_id: entry.traceId,\n            rule_psr: getRulePsr(configuration),\n        },\n    };\n}\n// TODO next major: use directly PerformanceEntry type in domain context\nfunction toPerformanceEntryRepresentation(entry) {\n    return entry;\n}\n/**\n * @returns number between 0 and 1 which represents tracing sample rate\n */\nfunction getRulePsr(configuration) {\n    return isNumber(configuration.tracingSampleRate) ? configuration.tracingSampleRate / 100 : undefined;\n}\nfunction computeIndexingInfo(sessionManager, resourceStart) {\n    var session = sessionManager.findTrackedSession(resourceStart.relative);\n    return {\n        _dd: {\n            discarded: !session || !session.resourceAllowed,\n        },\n    };\n}\n//# sourceMappingURL=resourceCollection.js.map","import { assign, addEventListeners, elapsed, ONE_MINUTE, find, findLast, relativeNow, } from '@datadog/browser-core';\nimport { trackFirstHidden } from './trackFirstHidden';\n// Discard LCP and FCP timings above a certain delay to avoid incorrect data\n// It happens in some cases like sleep mode or some browser implementations\nexport var TIMING_MAXIMUM_DELAY = 10 * ONE_MINUTE;\nexport function trackInitialViewTimings(lifeCycle, callback) {\n    var timings = {};\n    function setTimings(newTimings) {\n        assign(timings, newTimings);\n        callback(timings);\n    }\n    var stopNavigationTracking = trackNavigationTimings(lifeCycle, setTimings).stop;\n    var stopFCPTracking = trackFirstContentfulPaintTiming(lifeCycle, function (firstContentfulPaint) {\n        return setTimings({ firstContentfulPaint: firstContentfulPaint });\n    }).stop;\n    var stopLCPTracking = trackLargestContentfulPaintTiming(lifeCycle, window, function (largestContentfulPaint) {\n        setTimings({\n            largestContentfulPaint: largestContentfulPaint,\n        });\n    }).stop;\n    var stopFIDTracking = trackFirstInputTimings(lifeCycle, function (_a) {\n        var firstInputDelay = _a.firstInputDelay, firstInputTime = _a.firstInputTime;\n        setTimings({\n            firstInputDelay: firstInputDelay,\n            firstInputTime: firstInputTime,\n        });\n    }).stop;\n    return {\n        stop: function () {\n            stopNavigationTracking();\n            stopFCPTracking();\n            stopLCPTracking();\n            stopFIDTracking();\n        },\n    };\n}\nexport function trackNavigationTimings(lifeCycle, callback) {\n    var stop = lifeCycle.subscribe(0 /* PERFORMANCE_ENTRIES_COLLECTED */, function (entries) {\n        for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) {\n            var entry = entries_1[_i];\n            if (entry.entryType === 'navigation') {\n                callback({\n                    domComplete: entry.domComplete,\n                    domContentLoaded: entry.domContentLoadedEventEnd,\n                    domInteractive: entry.domInteractive,\n                    loadEvent: entry.loadEventEnd,\n                    // In some cases the value reported is negative or is larger\n                    // than the current page time. Ignore these cases:\n                    // https://github.com/GoogleChrome/web-vitals/issues/137\n                    // https://github.com/GoogleChrome/web-vitals/issues/162\n                    firstByte: entry.responseStart >= 0 && entry.responseStart <= relativeNow() ? entry.responseStart : undefined,\n                });\n            }\n        }\n    }).unsubscribe;\n    return { stop: stop };\n}\nexport function trackFirstContentfulPaintTiming(lifeCycle, callback) {\n    var firstHidden = trackFirstHidden();\n    var stop = lifeCycle.subscribe(0 /* PERFORMANCE_ENTRIES_COLLECTED */, function (entries) {\n        var fcpEntry = find(entries, function (entry) {\n            return entry.entryType === 'paint' &&\n                entry.name === 'first-contentful-paint' &&\n                entry.startTime < firstHidden.timeStamp &&\n                entry.startTime < TIMING_MAXIMUM_DELAY;\n        });\n        if (fcpEntry) {\n            callback(fcpEntry.startTime);\n        }\n    }).unsubscribe;\n    return { stop: stop };\n}\n/**\n * Track the largest contentful paint (LCP) occurring during the initial View.  This can yield\n * multiple values, only the most recent one should be used.\n * Documentation: https://web.dev/lcp/\n * Reference implementation: https://github.com/GoogleChrome/web-vitals/blob/master/src/getLCP.ts\n */\nexport function trackLargestContentfulPaintTiming(lifeCycle, emitter, callback) {\n    var firstHidden = trackFirstHidden();\n    // Ignore entries that come after the first user interaction.  According to the documentation, the\n    // browser should not send largest-contentful-paint entries after a user interact with the page,\n    // but the web-vitals reference implementation uses this as a safeguard.\n    var firstInteractionTimestamp = Infinity;\n    var stopEventListener = addEventListeners(emitter, [\"pointerdown\" /* POINTER_DOWN */, \"keydown\" /* KEY_DOWN */], function (event) {\n        firstInteractionTimestamp = event.timeStamp;\n    }, { capture: true, once: true }).stop;\n    var unsubscribeLifeCycle = lifeCycle.subscribe(0 /* PERFORMANCE_ENTRIES_COLLECTED */, function (entries) {\n        var lcpEntry = findLast(entries, function (entry) {\n            return entry.entryType === 'largest-contentful-paint' &&\n                entry.startTime < firstInteractionTimestamp &&\n                entry.startTime < firstHidden.timeStamp &&\n                entry.startTime < TIMING_MAXIMUM_DELAY;\n        });\n        if (lcpEntry) {\n            callback(lcpEntry.startTime);\n        }\n    }).unsubscribe;\n    return {\n        stop: function () {\n            stopEventListener();\n            unsubscribeLifeCycle();\n        },\n    };\n}\n/**\n * Track the first input occurring during the initial View to return:\n * - First Input Delay\n * - First Input Time\n * Callback is called at most one time.\n * Documentation: https://web.dev/fid/\n * Reference implementation: https://github.com/GoogleChrome/web-vitals/blob/master/src/getFID.ts\n */\nexport function trackFirstInputTimings(lifeCycle, callback) {\n    var firstHidden = trackFirstHidden();\n    var stop = lifeCycle.subscribe(0 /* PERFORMANCE_ENTRIES_COLLECTED */, function (entries) {\n        var firstInputEntry = find(entries, function (entry) {\n            return entry.entryType === 'first-input' && entry.startTime < firstHidden.timeStamp;\n        });\n        if (firstInputEntry) {\n            var firstInputDelay = elapsed(firstInputEntry.startTime, firstInputEntry.processingStart);\n            callback({\n                // Ensure firstInputDelay to be positive, see\n                // https://bugs.chromium.org/p/chromium/issues/detail?id=1185815\n                firstInputDelay: firstInputDelay >= 0 ? firstInputDelay : 0,\n                firstInputTime: firstInputEntry.startTime,\n            });\n        }\n    }).unsubscribe;\n    return {\n        stop: stop,\n    };\n}\n//# sourceMappingURL=trackInitialViewTimings.js.map","import { noop, round, ONE_SECOND, elapsed } from '@datadog/browser-core';\nimport { supportPerformanceTimingEvent } from '../../../browser/performanceCollection';\nimport { trackEventCounts } from '../../trackEventCounts';\nimport { waitPageActivityEnd } from '../../waitPageActivityEnd';\nexport function trackViewMetrics(lifeCycle, domMutationObservable, configuration, scheduleViewUpdate, loadingType, viewStart) {\n    var viewMetrics = {\n        eventCounts: {\n            errorCount: 0,\n            longTaskCount: 0,\n            resourceCount: 0,\n            actionCount: 0,\n            frustrationCount: 0,\n        },\n    };\n    var stopEventCountsTracking = trackEventCounts(lifeCycle, function (newEventCounts) {\n        viewMetrics.eventCounts = newEventCounts;\n        scheduleViewUpdate();\n    }).stop;\n    var _a = trackLoadingTime(lifeCycle, domMutationObservable, configuration, loadingType, viewStart, function (newLoadingTime) {\n        viewMetrics.loadingTime = newLoadingTime;\n        scheduleViewUpdate();\n    }), stopLoadingTimeTracking = _a.stop, setLoadEvent = _a.setLoadEvent;\n    var stopCLSTracking;\n    if (isLayoutShiftSupported()) {\n        viewMetrics.cumulativeLayoutShift = 0;\n        (stopCLSTracking = trackCumulativeLayoutShift(lifeCycle, function (cumulativeLayoutShift) {\n            viewMetrics.cumulativeLayoutShift = cumulativeLayoutShift;\n            scheduleViewUpdate();\n        }).stop);\n    }\n    else {\n        stopCLSTracking = noop;\n    }\n    return {\n        stop: function () {\n            stopEventCountsTracking();\n            stopLoadingTimeTracking();\n            stopCLSTracking();\n        },\n        setLoadEvent: setLoadEvent,\n        viewMetrics: viewMetrics,\n    };\n}\nfunction trackLoadingTime(lifeCycle, domMutationObservable, configuration, loadType, viewStart, callback) {\n    var isWaitingForLoadEvent = loadType === \"initial_load\" /* INITIAL_LOAD */;\n    var isWaitingForActivityLoadingTime = true;\n    var loadingTimeCandidates = [];\n    function invokeCallbackIfAllCandidatesAreReceived() {\n        if (!isWaitingForActivityLoadingTime && !isWaitingForLoadEvent && loadingTimeCandidates.length > 0) {\n            callback(Math.max.apply(Math, loadingTimeCandidates));\n        }\n    }\n    var stop = waitPageActivityEnd(lifeCycle, domMutationObservable, configuration, function (event) {\n        if (isWaitingForActivityLoadingTime) {\n            isWaitingForActivityLoadingTime = false;\n            if (event.hadActivity) {\n                loadingTimeCandidates.push(elapsed(viewStart.timeStamp, event.end));\n            }\n            invokeCallbackIfAllCandidatesAreReceived();\n        }\n    }).stop;\n    return {\n        stop: stop,\n        setLoadEvent: function (loadEvent) {\n            if (isWaitingForLoadEvent) {\n                isWaitingForLoadEvent = false;\n                loadingTimeCandidates.push(loadEvent);\n                invokeCallbackIfAllCandidatesAreReceived();\n            }\n        },\n    };\n}\n/**\n * Track the cumulative layout shifts (CLS).\n * Layout shifts are grouped into session windows.\n * The minimum gap between session windows is 1 second.\n * The maximum duration of a session window is 5 second.\n * The session window layout shift value is the sum of layout shifts inside it.\n * The CLS value is the max of session windows values.\n *\n * This yields a new value whenever the CLS value is updated (a higher session window value is computed).\n *\n * See isLayoutShiftSupported to check for browser support.\n *\n * Documentation:\n * https://web.dev/cls/\n * https://web.dev/evolving-cls/\n * Reference implementation: https://github.com/GoogleChrome/web-vitals/blob/master/src/getCLS.ts\n */\nfunction trackCumulativeLayoutShift(lifeCycle, callback) {\n    var maxClsValue = 0;\n    var window = slidingSessionWindow();\n    var stop = lifeCycle.subscribe(0 /* PERFORMANCE_ENTRIES_COLLECTED */, function (entries) {\n        for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) {\n            var entry = entries_1[_i];\n            if (entry.entryType === 'layout-shift' && !entry.hadRecentInput) {\n                window.update(entry);\n                if (window.value() > maxClsValue) {\n                    maxClsValue = window.value();\n                    callback(round(maxClsValue, 4));\n                }\n            }\n        }\n    }).unsubscribe;\n    return {\n        stop: stop,\n    };\n}\nfunction slidingSessionWindow() {\n    var value = 0;\n    var startTime;\n    var endTime;\n    return {\n        update: function (entry) {\n            var shouldCreateNewWindow = startTime === undefined ||\n                entry.startTime - endTime >= ONE_SECOND ||\n                entry.startTime - startTime >= 5 * ONE_SECOND;\n            if (shouldCreateNewWindow) {\n                startTime = endTime = entry.startTime;\n                value = entry.value;\n            }\n            else {\n                value += entry.value;\n                endTime = entry.startTime;\n            }\n        },\n        value: function () { return value; },\n    };\n}\n/**\n * Check whether `layout-shift` is supported by the browser.\n */\nfunction isLayoutShiftSupported() {\n    return supportPerformanceTimingEvent('layout-shift');\n}\n//# sourceMappingURL=trackViewMetrics.js.map","import { isExperimentalFeatureEnabled, shallowClone, assign, elapsed, generateUUID, monitor, ONE_MINUTE, throttle, clocksNow, clocksOrigin, timeStampNow, display, looksLikeRelativeTime, } from '@datadog/browser-core';\nimport { trackInitialViewTimings } from './trackInitialViewTimings';\nimport { trackViewMetrics } from './trackViewMetrics';\nexport var THROTTLE_VIEW_UPDATE_PERIOD = 3000;\nexport var SESSION_KEEP_ALIVE_INTERVAL = 5 * ONE_MINUTE;\nexport function trackViews(location, lifeCycle, domMutationObservable, configuration, locationChangeObservable, areViewsTrackedAutomatically, initialViewOptions) {\n    var _a = trackInitialView(initialViewOptions), stopInitialViewTracking = _a.stop, initialView = _a.initialView;\n    var currentView = initialView;\n    var stopViewLifeCycle = startViewLifeCycle().stop;\n    var locationChangeSubscription;\n    if (areViewsTrackedAutomatically) {\n        locationChangeSubscription = renewViewOnLocationChange(locationChangeObservable);\n    }\n    function trackInitialView(options) {\n        var initialView = newView(lifeCycle, domMutationObservable, configuration, location, \"initial_load\" /* INITIAL_LOAD */, clocksOrigin(), options);\n        var stop = trackInitialViewTimings(lifeCycle, function (timings) {\n            initialView.updateTimings(timings);\n            initialView.scheduleUpdate();\n        }).stop;\n        return { initialView: initialView, stop: stop };\n    }\n    function trackViewChange(startClocks, viewOptions) {\n        return newView(lifeCycle, domMutationObservable, configuration, location, \"route_change\" /* ROUTE_CHANGE */, startClocks, viewOptions);\n    }\n    function startViewLifeCycle() {\n        lifeCycle.subscribe(8 /* SESSION_RENEWED */, function () {\n            // do not trigger view update to avoid wrong data\n            currentView.end();\n            // Renew view on session renewal\n            currentView = trackViewChange(undefined, {\n                name: currentView.name,\n                service: currentView.service,\n                version: currentView.version,\n            });\n        });\n        // End the current view on page unload\n        lifeCycle.subscribe(9 /* PAGE_EXITED */, function (pageExitEvent) {\n            if (pageExitEvent.reason === \"before_unload\" /* UNLOADING */) {\n                currentView.end();\n                currentView.triggerUpdate();\n            }\n        });\n        // Session keep alive\n        var keepAliveInterval = window.setInterval(monitor(function () {\n            currentView.triggerUpdate();\n        }), SESSION_KEEP_ALIVE_INTERVAL);\n        return {\n            stop: function () {\n                clearInterval(keepAliveInterval);\n            },\n        };\n    }\n    function renewViewOnLocationChange(locationChangeObservable) {\n        return locationChangeObservable.subscribe(function (_a) {\n            var oldLocation = _a.oldLocation, newLocation = _a.newLocation;\n            if (areDifferentLocation(oldLocation, newLocation)) {\n                currentView.end();\n                currentView.triggerUpdate();\n                currentView = trackViewChange();\n                return;\n            }\n        });\n    }\n    return {\n        addTiming: function (name, time) {\n            if (time === void 0) { time = timeStampNow(); }\n            currentView.addTiming(name, time);\n            currentView.scheduleUpdate();\n        },\n        addFeatureFlagEvaluation: function (key, value) {\n            currentView.addFeatureFlagEvaluation(key, value);\n            currentView.scheduleUpdate();\n        },\n        startView: function (options, startClocks) {\n            currentView.end(startClocks);\n            currentView.triggerUpdate();\n            currentView = trackViewChange(startClocks, options);\n        },\n        stop: function () {\n            locationChangeSubscription === null || locationChangeSubscription === void 0 ? void 0 : locationChangeSubscription.unsubscribe();\n            stopInitialViewTracking();\n            stopViewLifeCycle();\n            currentView.end();\n        },\n    };\n}\nfunction newView(lifeCycle, domMutationObservable, configuration, initialLocation, loadingType, startClocks, viewOptions) {\n    if (startClocks === void 0) { startClocks = clocksNow(); }\n    // Setup initial values\n    var id = generateUUID();\n    var timings = {};\n    var featureFlagEvaluations = {};\n    var customTimings = {};\n    var documentVersion = 0;\n    var endClocks;\n    var location = shallowClone(initialLocation);\n    var name;\n    var service;\n    var version;\n    if (viewOptions) {\n        name = viewOptions.name;\n        service = viewOptions.service;\n        version = viewOptions.version;\n    }\n    lifeCycle.notify(2 /* VIEW_CREATED */, {\n        id: id,\n        name: name,\n        startClocks: startClocks,\n        service: service,\n        version: version,\n        featureFlagEvaluations: featureFlagEvaluations,\n    });\n    // Update the view every time the measures are changing\n    var _a = throttle(monitor(triggerViewUpdate), THROTTLE_VIEW_UPDATE_PERIOD, {\n        leading: false,\n    }), scheduleViewUpdate = _a.throttled, cancelScheduleViewUpdate = _a.cancel;\n    var _b = trackViewMetrics(lifeCycle, domMutationObservable, configuration, scheduleViewUpdate, loadingType, startClocks), setLoadEvent = _b.setLoadEvent, stopViewMetricsTracking = _b.stop, viewMetrics = _b.viewMetrics;\n    // Initial view update\n    triggerViewUpdate();\n    function triggerViewUpdate() {\n        documentVersion += 1;\n        var currentEnd = endClocks === undefined ? timeStampNow() : endClocks.timeStamp;\n        lifeCycle.notify(3 /* VIEW_UPDATED */, assign({\n            customTimings: customTimings,\n            documentVersion: documentVersion,\n            id: id,\n            name: name,\n            service: service,\n            version: version,\n            loadingType: loadingType,\n            location: location,\n            startClocks: startClocks,\n            timings: timings,\n            duration: elapsed(startClocks.timeStamp, currentEnd),\n            isActive: endClocks === undefined,\n            featureFlagEvaluations: featureFlagEvaluations,\n        }, viewMetrics));\n    }\n    return {\n        name: name,\n        service: service,\n        version: version,\n        scheduleUpdate: scheduleViewUpdate,\n        end: function (clocks) {\n            if (clocks === void 0) { clocks = clocksNow(); }\n            endClocks = clocks;\n            lifeCycle.notify(4 /* VIEW_ENDED */, { endClocks: endClocks });\n            stopViewMetricsTracking();\n        },\n        triggerUpdate: function () {\n            // cancel any pending view updates execution\n            cancelScheduleViewUpdate();\n            triggerViewUpdate();\n        },\n        updateTimings: function (newTimings) {\n            timings = newTimings;\n            if (newTimings.loadEvent !== undefined) {\n                setLoadEvent(newTimings.loadEvent);\n            }\n        },\n        addTiming: function (name, time) {\n            var relativeTime = looksLikeRelativeTime(time) ? time : elapsed(startClocks.timeStamp, time);\n            customTimings[sanitizeTiming(name)] = relativeTime;\n        },\n        addFeatureFlagEvaluation: function (key, value) {\n            var _a;\n            if (isExperimentalFeatureEnabled('feature_flags')) {\n                assign(featureFlagEvaluations, (_a = {}, _a[key] = value, _a));\n            }\n        },\n    };\n}\n/**\n * Timing name is used as facet path that must contain only letters, digits, or the characters - _ . @ $\n */\nfunction sanitizeTiming(name) {\n    var sanitized = name.replace(/[^a-zA-Z0-9-_.@$]/g, '_');\n    if (sanitized !== name) {\n        display.warn(\"Invalid timing name: \".concat(name, \", sanitized to: \").concat(sanitized));\n    }\n    return sanitized;\n}\nfunction areDifferentLocation(currentLocation, otherLocation) {\n    return (currentLocation.pathname !== otherLocation.pathname ||\n        (!isHashAnAnchor(otherLocation.hash) &&\n            getPathFromHash(otherLocation.hash) !== getPathFromHash(currentLocation.hash)));\n}\nfunction isHashAnAnchor(hash) {\n    var correspondingId = hash.substr(1);\n    return !!document.getElementById(correspondingId);\n}\nfunction getPathFromHash(hash) {\n    var index = hash.indexOf('?');\n    return index < 0 ? hash : hash.slice(0, index);\n}\n//# sourceMappingURL=trackViews.js.map","import { isEmptyObject, mapValues, toServerDuration, isNumber } from '@datadog/browser-core';\nimport { trackViews } from './trackViews';\nexport function startViewCollection(lifeCycle, configuration, location, domMutationObservable, locationChangeObservable, foregroundContexts, recorderApi, initialViewOptions) {\n    lifeCycle.subscribe(3 /* VIEW_UPDATED */, function (view) {\n        return lifeCycle.notify(10 /* RAW_RUM_EVENT_COLLECTED */, processViewUpdate(view, foregroundContexts, recorderApi));\n    });\n    return trackViews(location, lifeCycle, domMutationObservable, configuration, locationChangeObservable, !configuration.trackViewsManually, initialViewOptions);\n}\nfunction processViewUpdate(view, foregroundContexts, recorderApi) {\n    var replayStats = recorderApi.getReplayStats(view.id);\n    var viewEvent = {\n        _dd: {\n            document_version: view.documentVersion,\n            replay_stats: replayStats,\n        },\n        date: view.startClocks.timeStamp,\n        type: \"view\" /* VIEW */,\n        view: {\n            action: {\n                count: view.eventCounts.actionCount,\n            },\n            frustration: {\n                count: view.eventCounts.frustrationCount,\n            },\n            cumulative_layout_shift: view.cumulativeLayoutShift,\n            first_byte: toServerDuration(view.timings.firstByte),\n            dom_complete: toServerDuration(view.timings.domComplete),\n            dom_content_loaded: toServerDuration(view.timings.domContentLoaded),\n            dom_interactive: toServerDuration(view.timings.domInteractive),\n            error: {\n                count: view.eventCounts.errorCount,\n            },\n            first_contentful_paint: toServerDuration(view.timings.firstContentfulPaint),\n            first_input_delay: toServerDuration(view.timings.firstInputDelay),\n            first_input_time: toServerDuration(view.timings.firstInputTime),\n            is_active: view.isActive,\n            name: view.name,\n            largest_contentful_paint: toServerDuration(view.timings.largestContentfulPaint),\n            load_event: toServerDuration(view.timings.loadEvent),\n            loading_time: discardNegativeDuration(toServerDuration(view.loadingTime)),\n            loading_type: view.loadingType,\n            long_task: {\n                count: view.eventCounts.longTaskCount,\n            },\n            resource: {\n                count: view.eventCounts.resourceCount,\n            },\n            time_spent: toServerDuration(view.duration),\n            in_foreground_periods: foregroundContexts.selectInForegroundPeriodsFor(view.startClocks.relative, view.duration),\n        },\n        feature_flags: !isEmptyObject(view.featureFlagEvaluations) ? view.featureFlagEvaluations : undefined,\n        session: {\n            has_replay: replayStats ? true : undefined,\n        },\n    };\n    if (!isEmptyObject(view.customTimings)) {\n        viewEvent.view.custom_timings = mapValues(view.customTimings, toServerDuration);\n    }\n    return {\n        rawRumEvent: viewEvent,\n        startTime: view.startClocks.relative,\n        domainContext: {\n            location: view.location,\n        },\n    };\n}\nfunction discardNegativeDuration(duration) {\n    return isNumber(duration) && duration < 0 ? undefined : duration;\n}\n//# sourceMappingURL=viewCollection.js.map","import { getCookie, setCookie } from '../../browser/cookie';\nimport { isChromium } from '../../tools/browserDetection';\nimport { monitor } from '../../tools/monitor';\nimport { dateNow } from '../../tools/timeUtils';\nimport * as utils from '../../tools/utils';\nimport { SESSION_EXPIRATION_DELAY } from './sessionConstants';\nvar SESSION_ENTRY_REGEXP = /^([a-z]+)=([a-z0-9-]+)$/;\nvar SESSION_ENTRY_SEPARATOR = '&';\nexport var SESSION_COOKIE_NAME = '_dd_s';\n// arbitrary values\nexport var LOCK_RETRY_DELAY = 10;\nexport var MAX_NUMBER_OF_LOCK_RETRIES = 100;\nvar bufferedOperations = [];\nvar ongoingOperations;\nexport function withCookieLockAccess(operations, numberOfRetries) {\n    var _a;\n    if (numberOfRetries === void 0) { numberOfRetries = 0; }\n    if (!ongoingOperations) {\n        ongoingOperations = operations;\n    }\n    if (operations !== ongoingOperations) {\n        bufferedOperations.push(operations);\n        return;\n    }\n    if (numberOfRetries >= MAX_NUMBER_OF_LOCK_RETRIES) {\n        next();\n        return;\n    }\n    var currentLock;\n    var currentSession = retrieveSession();\n    if (isCookieLockEnabled()) {\n        // if someone has lock, retry later\n        if (currentSession.lock) {\n            retryLater(operations, numberOfRetries);\n            return;\n        }\n        // acquire lock\n        currentLock = utils.generateUUID();\n        currentSession.lock = currentLock;\n        setSession(currentSession, operations.options);\n        // if lock is not acquired, retry later\n        currentSession = retrieveSession();\n        if (currentSession.lock !== currentLock) {\n            retryLater(operations, numberOfRetries);\n            return;\n        }\n    }\n    var processedSession = operations.process(currentSession);\n    if (isCookieLockEnabled()) {\n        // if lock corrupted after process, retry later\n        currentSession = retrieveSession();\n        if (currentSession.lock !== currentLock) {\n            retryLater(operations, numberOfRetries);\n            return;\n        }\n    }\n    if (processedSession) {\n        persistSession(processedSession, operations.options);\n    }\n    if (isCookieLockEnabled()) {\n        // correctly handle lock around expiration would require to handle this case properly at several levels\n        // since we don't have evidence of lock issues around expiration, let's just not do the corruption check for it\n        if (!(processedSession && isExpiredState(processedSession))) {\n            // if lock corrupted after persist, retry later\n            currentSession = retrieveSession();\n            if (currentSession.lock !== currentLock) {\n                retryLater(operations, numberOfRetries);\n                return;\n            }\n            delete currentSession.lock;\n            setSession(currentSession, operations.options);\n            processedSession = currentSession;\n        }\n    }\n    // call after even if session is not persisted in order to perform operations on\n    // up-to-date cookie value, the value could have been modified by another tab\n    (_a = operations.after) === null || _a === void 0 ? void 0 : _a.call(operations, processedSession || currentSession);\n    next();\n}\n/**\n * Cookie lock strategy allows mitigating issues due to concurrent access to cookie.\n * This issue concerns only chromium browsers and enabling this on firefox increase cookie write failures.\n */\nfunction isCookieLockEnabled() {\n    return isChromium();\n}\nfunction retryLater(operations, currentNumberOfRetries) {\n    setTimeout(monitor(function () {\n        withCookieLockAccess(operations, currentNumberOfRetries + 1);\n    }), LOCK_RETRY_DELAY);\n}\nfunction next() {\n    ongoingOperations = undefined;\n    var nextOperations = bufferedOperations.shift();\n    if (nextOperations) {\n        withCookieLockAccess(nextOperations);\n    }\n}\nexport function persistSession(session, options) {\n    if (isExpiredState(session)) {\n        clearSession(options);\n        return;\n    }\n    session.expire = String(dateNow() + SESSION_EXPIRATION_DELAY);\n    setSession(session, options);\n}\nfunction setSession(session, options) {\n    setCookie(SESSION_COOKIE_NAME, toSessionString(session), SESSION_EXPIRATION_DELAY, options);\n}\nexport function toSessionString(session) {\n    return utils\n        .objectEntries(session)\n        .map(function (_a) {\n        var key = _a[0], value = _a[1];\n        return \"\".concat(key, \"=\").concat(value);\n    })\n        .join(SESSION_ENTRY_SEPARATOR);\n}\nexport function retrieveSession() {\n    var sessionString = getCookie(SESSION_COOKIE_NAME);\n    var session = {};\n    if (isValidSessionString(sessionString)) {\n        sessionString.split(SESSION_ENTRY_SEPARATOR).forEach(function (entry) {\n            var matches = SESSION_ENTRY_REGEXP.exec(entry);\n            if (matches !== null) {\n                var key = matches[1], value = matches[2];\n                session[key] = value;\n            }\n        });\n    }\n    return session;\n}\nfunction isValidSessionString(sessionString) {\n    return (sessionString !== undefined &&\n        (sessionString.indexOf(SESSION_ENTRY_SEPARATOR) !== -1 || SESSION_ENTRY_REGEXP.test(sessionString)));\n}\nfunction isExpiredState(session) {\n    return utils.isEmptyObject(session);\n}\nfunction clearSession(options) {\n    setCookie(SESSION_COOKIE_NAME, '', 0, options);\n}\n//# sourceMappingURL=sessionCookieStore.js.map","import { getCookie } from '../../browser/cookie';\nimport { SESSION_COOKIE_NAME, persistSession } from './sessionCookieStore';\nexport var OLD_SESSION_COOKIE_NAME = '_dd';\nexport var OLD_RUM_COOKIE_NAME = '_dd_r';\nexport var OLD_LOGS_COOKIE_NAME = '_dd_l';\n// duplicate values to avoid dependency issues\nexport var RUM_SESSION_KEY = 'rum';\nexport var LOGS_SESSION_KEY = 'logs';\n/**\n * This migration should remain in the codebase as long as older versions are available/live\n * to allow older sdk versions to be upgraded to newer versions without compatibility issues.\n */\nexport function tryOldCookiesMigration(options) {\n    var sessionString = getCookie(SESSION_COOKIE_NAME);\n    var oldSessionId = getCookie(OLD_SESSION_COOKIE_NAME);\n    var oldRumType = getCookie(OLD_RUM_COOKIE_NAME);\n    var oldLogsType = getCookie(OLD_LOGS_COOKIE_NAME);\n    if (!sessionString) {\n        var session = {};\n        if (oldSessionId) {\n            session.id = oldSessionId;\n        }\n        if (oldLogsType && /^[01]$/.test(oldLogsType)) {\n            session[LOGS_SESSION_KEY] = oldLogsType;\n        }\n        if (oldRumType && /^[012]$/.test(oldRumType)) {\n            session[RUM_SESSION_KEY] = oldRumType;\n        }\n        persistSession(session, options);\n    }\n}\n//# sourceMappingURL=oldCookiesMigration.js.map","import { COOKIE_ACCESS_DELAY } from '../../browser/cookie';\nimport { monitor } from '../../tools/monitor';\nimport { Observable } from '../../tools/observable';\nimport { dateNow } from '../../tools/timeUtils';\nimport * as utils from '../../tools/utils';\nimport { SESSION_TIME_OUT_DELAY } from './sessionConstants';\nimport { retrieveSession, withCookieLockAccess } from './sessionCookieStore';\n/**\n * Different session concepts:\n * - tracked, the session has an id and is updated along the user navigation\n * - not tracked, the session does not have an id but it is updated along the user navigation\n * - inactive, no session in store or session expired, waiting for a renew session\n */\nexport function startSessionStore(options, productKey, computeSessionState) {\n    var renewObservable = new Observable();\n    var expireObservable = new Observable();\n    var watchSessionTimeoutId = setInterval(monitor(watchSession), COOKIE_ACCESS_DELAY);\n    var sessionCache = retrieveActiveSession();\n    function expandOrRenewSession() {\n        var isTracked;\n        withCookieLockAccess({\n            options: options,\n            process: function (cookieSession) {\n                var synchronizedSession = synchronizeSession(cookieSession);\n                isTracked = expandOrRenewCookie(synchronizedSession);\n                return synchronizedSession;\n            },\n            after: function (cookieSession) {\n                if (isTracked && !hasSessionInCache()) {\n                    renewSession(cookieSession);\n                }\n                sessionCache = cookieSession;\n            },\n        });\n    }\n    function expandSession() {\n        withCookieLockAccess({\n            options: options,\n            process: function (cookieSession) { return (hasSessionInCache() ? synchronizeSession(cookieSession) : undefined); },\n        });\n    }\n    /**\n     * allows two behaviors:\n     * - if the session is active, synchronize the session cache without updating the session cookie\n     * - if the session is not active, clear the session cookie and expire the session cache\n     */\n    function watchSession() {\n        withCookieLockAccess({\n            options: options,\n            process: function (cookieSession) { return (!isActiveSession(cookieSession) ? {} : undefined); },\n            after: synchronizeSession,\n        });\n    }\n    function synchronizeSession(cookieSession) {\n        if (!isActiveSession(cookieSession)) {\n            cookieSession = {};\n        }\n        if (hasSessionInCache()) {\n            if (isSessionInCacheOutdated(cookieSession)) {\n                expireSession();\n            }\n            else {\n                sessionCache = cookieSession;\n            }\n        }\n        return cookieSession;\n    }\n    function expandOrRenewCookie(cookieSession) {\n        var _a = computeSessionState(cookieSession[productKey]), trackingType = _a.trackingType, isTracked = _a.isTracked;\n        cookieSession[productKey] = trackingType;\n        if (isTracked && !cookieSession.id) {\n            cookieSession.id = utils.generateUUID();\n            cookieSession.created = String(dateNow());\n        }\n        return isTracked;\n    }\n    function hasSessionInCache() {\n        return sessionCache[productKey] !== undefined;\n    }\n    function isSessionInCacheOutdated(cookieSession) {\n        return sessionCache.id !== cookieSession.id || sessionCache[productKey] !== cookieSession[productKey];\n    }\n    function expireSession() {\n        sessionCache = {};\n        expireObservable.notify();\n    }\n    function renewSession(cookieSession) {\n        sessionCache = cookieSession;\n        renewObservable.notify();\n    }\n    function retrieveActiveSession() {\n        var session = retrieveSession();\n        if (isActiveSession(session)) {\n            return session;\n        }\n        return {};\n    }\n    function isActiveSession(session) {\n        // created and expire can be undefined for versions which was not storing them\n        // these checks could be removed when older versions will not be available/live anymore\n        return ((session.created === undefined || dateNow() - Number(session.created) < SESSION_TIME_OUT_DELAY) &&\n            (session.expire === undefined || dateNow() < Number(session.expire)));\n    }\n    return {\n        expandOrRenewSession: utils.throttle(monitor(expandOrRenewSession), COOKIE_ACCESS_DELAY).throttled,\n        expandSession: expandSession,\n        getSession: function () { return sessionCache; },\n        renewObservable: renewObservable,\n        expireObservable: expireObservable,\n        stop: function () {\n            clearInterval(watchSessionTimeoutId);\n        },\n    };\n}\n//# sourceMappingURL=sessionStore.js.map","import * as utils from '../../tools/utils';\nimport { ContextHistory } from '../../tools/contextHistory';\nimport { relativeNow, clocksOrigin } from '../../tools/timeUtils';\nimport { monitor } from '../../tools/monitor';\nimport { tryOldCookiesMigration } from './oldCookiesMigration';\nimport { startSessionStore } from './sessionStore';\nimport { SESSION_TIME_OUT_DELAY } from './sessionConstants';\nexport var VISIBILITY_CHECK_DELAY = utils.ONE_MINUTE;\nvar SESSION_CONTEXT_TIMEOUT_DELAY = SESSION_TIME_OUT_DELAY;\nvar stopCallbacks = [];\nexport function startSessionManager(options, productKey, computeSessionState) {\n    tryOldCookiesMigration(options);\n    var sessionStore = startSessionStore(options, productKey, computeSessionState);\n    stopCallbacks.push(function () { return sessionStore.stop(); });\n    var sessionContextHistory = new ContextHistory(SESSION_CONTEXT_TIMEOUT_DELAY);\n    stopCallbacks.push(function () { return sessionContextHistory.stop(); });\n    sessionStore.renewObservable.subscribe(function () {\n        sessionContextHistory.add(buildSessionContext(), relativeNow());\n    });\n    sessionStore.expireObservable.subscribe(function () {\n        sessionContextHistory.closeActive(relativeNow());\n    });\n    sessionStore.expandOrRenewSession();\n    sessionContextHistory.add(buildSessionContext(), clocksOrigin().relative);\n    trackActivity(function () { return sessionStore.expandOrRenewSession(); });\n    trackVisibility(function () { return sessionStore.expandSession(); });\n    function buildSessionContext() {\n        return {\n            id: sessionStore.getSession().id,\n            trackingType: sessionStore.getSession()[productKey],\n        };\n    }\n    return {\n        findActiveSession: function (startTime) { return sessionContextHistory.find(startTime); },\n        renewObservable: sessionStore.renewObservable,\n        expireObservable: sessionStore.expireObservable,\n    };\n}\nexport function stopSessionManager() {\n    stopCallbacks.forEach(function (e) { return e(); });\n    stopCallbacks = [];\n}\nfunction trackActivity(expandOrRenewSession) {\n    var stop = utils.addEventListeners(window, [\"click\" /* CLICK */, \"touchstart\" /* TOUCH_START */, \"keydown\" /* KEY_DOWN */, \"scroll\" /* SCROLL */], expandOrRenewSession, { capture: true, passive: true }).stop;\n    stopCallbacks.push(stop);\n}\nfunction trackVisibility(expandSession) {\n    var expandSessionWhenVisible = monitor(function () {\n        if (document.visibilityState === 'visible') {\n            expandSession();\n        }\n    });\n    var stop = utils.addEventListener(document, \"visibilitychange\" /* VISIBILITY_CHANGE */, expandSessionWhenVisible).stop;\n    stopCallbacks.push(stop);\n    var visibilityCheckInterval = setInterval(expandSessionWhenVisible, VISIBILITY_CHECK_DELAY);\n    stopCallbacks.push(function () {\n        clearInterval(visibilityCheckInterval);\n    });\n}\n//# sourceMappingURL=sessionManager.js.map","import { performDraw, startSessionManager } from '@datadog/browser-core';\nexport var RUM_SESSION_KEY = 'rum';\nexport function startRumSessionManager(configuration, lifeCycle) {\n    var sessionManager = startSessionManager(configuration.cookieOptions, RUM_SESSION_KEY, function (rawTrackingType) {\n        return computeSessionState(configuration, rawTrackingType);\n    });\n    sessionManager.expireObservable.subscribe(function () {\n        lifeCycle.notify(7 /* SESSION_EXPIRED */);\n    });\n    sessionManager.renewObservable.subscribe(function () {\n        lifeCycle.notify(8 /* SESSION_RENEWED */);\n    });\n    return {\n        findTrackedSession: function (startTime) {\n            var session = sessionManager.findActiveSession(startTime);\n            if (!session || !isTypeTracked(session.trackingType)) {\n                return;\n            }\n            var plan = session.trackingType === \"1\" /* TRACKED_WITH_SESSION_REPLAY */\n                ? 2 /* WITH_SESSION_REPLAY */\n                : 1 /* WITHOUT_SESSION_REPLAY */;\n            return {\n                id: session.id,\n                plan: plan,\n                sessionReplayAllowed: plan === 2 /* WITH_SESSION_REPLAY */,\n                longTaskAllowed: configuration.trackLongTasks !== undefined\n                    ? configuration.trackLongTasks\n                    : configuration.oldPlansBehavior && plan === 2 /* WITH_SESSION_REPLAY */,\n                resourceAllowed: configuration.trackResources !== undefined\n                    ? configuration.trackResources\n                    : configuration.oldPlansBehavior && plan === 2 /* WITH_SESSION_REPLAY */,\n            };\n        },\n    };\n}\n/**\n * Start a tracked replay session stub\n */\nexport function startRumSessionManagerStub() {\n    var session = {\n        id: '00000000-aaaa-0000-aaaa-000000000000',\n        plan: 1 /* WITHOUT_SESSION_REPLAY */,\n        sessionReplayAllowed: false,\n        longTaskAllowed: true,\n        resourceAllowed: true,\n    };\n    return {\n        findTrackedSession: function () { return session; },\n    };\n}\nfunction computeSessionState(configuration, rawTrackingType) {\n    var trackingType;\n    if (hasValidRumSession(rawTrackingType)) {\n        trackingType = rawTrackingType;\n    }\n    else if (!performDraw(configuration.sampleRate)) {\n        trackingType = \"0\" /* NOT_TRACKED */;\n    }\n    else if (!performDraw(configuration.sessionReplaySampleRate)) {\n        trackingType = \"2\" /* TRACKED_WITHOUT_SESSION_REPLAY */;\n    }\n    else {\n        trackingType = \"1\" /* TRACKED_WITH_SESSION_REPLAY */;\n    }\n    return {\n        trackingType: trackingType,\n        isTracked: isTypeTracked(trackingType),\n    };\n}\nfunction hasValidRumSession(trackingType) {\n    return (trackingType === \"0\" /* NOT_TRACKED */ ||\n        trackingType === \"1\" /* TRACKED_WITH_SESSION_REPLAY */ ||\n        trackingType === \"2\" /* TRACKED_WITHOUT_SESSION_REPLAY */);\n}\nfunction isTypeTracked(rumSessionType) {\n    return (rumSessionType === \"2\" /* TRACKED_WITHOUT_SESSION_REPLAY */ ||\n        rumSessionType === \"1\" /* TRACKED_WITH_SESSION_REPLAY */);\n}\n//# sourceMappingURL=rumSessionManager.js.map","import { display } from '../tools/display';\nimport { jsonStringify, objectValues } from '../tools/utils';\nimport { monitor } from '../tools/monitor';\n// https://en.wikipedia.org/wiki/UTF-8\n// eslint-disable-next-line no-control-regex\nvar HAS_MULTI_BYTES_CHARACTERS = /[^\\u0000-\\u007F]/;\nvar Batch = /** @class */ (function () {\n    function Batch(request, batchMessagesLimit, batchBytesLimit, messageBytesLimit, flushTimeout, pageExitObservable) {\n        var _this = this;\n        this.request = request;\n        this.batchMessagesLimit = batchMessagesLimit;\n        this.batchBytesLimit = batchBytesLimit;\n        this.messageBytesLimit = messageBytesLimit;\n        this.flushTimeout = flushTimeout;\n        this.pageExitObservable = pageExitObservable;\n        this.pushOnlyBuffer = [];\n        this.upsertBuffer = {};\n        this.bufferBytesCount = 0;\n        this.bufferMessagesCount = 0;\n        pageExitObservable.subscribe(function () { return _this.flush(_this.request.sendOnExit); });\n        this.flushPeriodically();\n    }\n    Batch.prototype.add = function (message) {\n        this.addOrUpdate(message);\n    };\n    Batch.prototype.upsert = function (message, key) {\n        this.addOrUpdate(message, key);\n    };\n    Batch.prototype.flush = function (sendFn) {\n        if (sendFn === void 0) { sendFn = this.request.send; }\n        if (this.bufferMessagesCount !== 0) {\n            var messages = this.pushOnlyBuffer.concat(objectValues(this.upsertBuffer));\n            var bytesCount = this.bufferBytesCount;\n            this.pushOnlyBuffer = [];\n            this.upsertBuffer = {};\n            this.bufferBytesCount = 0;\n            this.bufferMessagesCount = 0;\n            sendFn({ data: messages.join('\\n'), bytesCount: bytesCount });\n        }\n    };\n    Batch.prototype.computeBytesCount = function (candidate) {\n        // Accurate bytes count computations can degrade performances when there is a lot of events to process\n        if (!HAS_MULTI_BYTES_CHARACTERS.test(candidate)) {\n            return candidate.length;\n        }\n        if (window.TextEncoder !== undefined) {\n            return new TextEncoder().encode(candidate).length;\n        }\n        return new Blob([candidate]).size;\n    };\n    Batch.prototype.addOrUpdate = function (message, key) {\n        var _a = this.process(message), processedMessage = _a.processedMessage, messageBytesCount = _a.messageBytesCount;\n        if (messageBytesCount >= this.messageBytesLimit) {\n            display.warn(\"Discarded a message whose size was bigger than the maximum allowed size \".concat(this.messageBytesLimit, \"KB.\"));\n            return;\n        }\n        if (this.hasMessageFor(key)) {\n            this.remove(key);\n        }\n        if (this.willReachedBytesLimitWith(messageBytesCount)) {\n            this.flush();\n        }\n        this.push(processedMessage, messageBytesCount, key);\n        if (this.isFull()) {\n            this.flush();\n        }\n    };\n    Batch.prototype.process = function (message) {\n        var processedMessage = jsonStringify(message);\n        var messageBytesCount = this.computeBytesCount(processedMessage);\n        return { processedMessage: processedMessage, messageBytesCount: messageBytesCount };\n    };\n    Batch.prototype.push = function (processedMessage, messageBytesCount, key) {\n        if (this.bufferMessagesCount > 0) {\n            // \\n separator at serialization\n            this.bufferBytesCount += 1;\n        }\n        if (key !== undefined) {\n            this.upsertBuffer[key] = processedMessage;\n        }\n        else {\n            this.pushOnlyBuffer.push(processedMessage);\n        }\n        this.bufferBytesCount += messageBytesCount;\n        this.bufferMessagesCount += 1;\n    };\n    Batch.prototype.remove = function (key) {\n        var removedMessage = this.upsertBuffer[key];\n        delete this.upsertBuffer[key];\n        var messageBytesCount = this.computeBytesCount(removedMessage);\n        this.bufferBytesCount -= messageBytesCount;\n        this.bufferMessagesCount -= 1;\n        if (this.bufferMessagesCount > 0) {\n            this.bufferBytesCount -= 1;\n        }\n    };\n    Batch.prototype.hasMessageFor = function (key) {\n        return key !== undefined && this.upsertBuffer[key] !== undefined;\n    };\n    Batch.prototype.willReachedBytesLimitWith = function (messageBytesCount) {\n        // byte of the separator at the end of the message\n        return this.bufferBytesCount + messageBytesCount + 1 >= this.batchBytesLimit;\n    };\n    Batch.prototype.isFull = function () {\n        return this.bufferMessagesCount === this.batchMessagesLimit || this.bufferBytesCount >= this.batchBytesLimit;\n    };\n    Batch.prototype.flushPeriodically = function () {\n        var _this = this;\n        setTimeout(monitor(function () {\n            _this.flush();\n            _this.flushPeriodically();\n        }), this.flushTimeout);\n    };\n    return Batch;\n}());\nexport { Batch };\n//# sourceMappingURL=batch.js.map","import { monitor } from '../tools/monitor';\nimport { clocksNow } from '../tools/timeUtils';\nimport { ONE_KIBI_BYTE, ONE_MEBI_BYTE, ONE_SECOND, ONE_MINUTE } from '../tools/utils';\nimport { ErrorSource } from '../tools/error';\nexport var MAX_ONGOING_BYTES_COUNT = 80 * ONE_KIBI_BYTE;\nexport var MAX_ONGOING_REQUESTS = 32;\nexport var MAX_QUEUE_BYTES_COUNT = 3 * ONE_MEBI_BYTE;\nexport var MAX_BACKOFF_TIME = ONE_MINUTE;\nexport var INITIAL_BACKOFF_TIME = ONE_SECOND;\nexport function sendWithRetryStrategy(payload, state, sendStrategy, endpointType, reportError) {\n    if (state.transportStatus === 0 /* UP */ &&\n        state.queuedPayloads.size() === 0 &&\n        state.bandwidthMonitor.canHandle(payload)) {\n        send(payload, state, sendStrategy, {\n            onSuccess: function () { return retryQueuedPayloads(0 /* AFTER_SUCCESS */, state, sendStrategy, endpointType, reportError); },\n            onFailure: function () {\n                state.queuedPayloads.enqueue(payload);\n                scheduleRetry(state, sendStrategy, endpointType, reportError);\n            },\n        });\n    }\n    else {\n        state.queuedPayloads.enqueue(payload);\n    }\n}\nfunction scheduleRetry(state, sendStrategy, endpointType, reportError) {\n    if (state.transportStatus !== 2 /* DOWN */) {\n        return;\n    }\n    setTimeout(monitor(function () {\n        var payload = state.queuedPayloads.first();\n        send(payload, state, sendStrategy, {\n            onSuccess: function () {\n                state.queuedPayloads.dequeue();\n                state.currentBackoffTime = INITIAL_BACKOFF_TIME;\n                retryQueuedPayloads(1 /* AFTER_RESUME */, state, sendStrategy, endpointType, reportError);\n            },\n            onFailure: function () {\n                state.currentBackoffTime = Math.min(MAX_BACKOFF_TIME, state.currentBackoffTime * 2);\n                scheduleRetry(state, sendStrategy, endpointType, reportError);\n            },\n        });\n    }), state.currentBackoffTime);\n}\nfunction send(payload, state, sendStrategy, _a) {\n    var onSuccess = _a.onSuccess, onFailure = _a.onFailure;\n    state.bandwidthMonitor.add(payload);\n    sendStrategy(payload, function (response) {\n        state.bandwidthMonitor.remove(payload);\n        if (!shouldRetryRequest(response)) {\n            state.transportStatus = 0 /* UP */;\n            onSuccess();\n        }\n        else {\n            // do not consider transport down if another ongoing request could succeed\n            state.transportStatus =\n                state.bandwidthMonitor.ongoingRequestCount > 0 ? 1 /* FAILURE_DETECTED */ : 2 /* DOWN */;\n            payload.retry = {\n                count: payload.retry ? payload.retry.count + 1 : 1,\n                lastFailureStatus: response.status,\n            };\n            onFailure();\n        }\n    });\n}\nfunction retryQueuedPayloads(reason, state, sendStrategy, endpointType, reportError) {\n    if (reason === 0 /* AFTER_SUCCESS */ && state.queuedPayloads.isFull() && !state.queueFullReported) {\n        reportError({\n            message: \"Reached max \".concat(endpointType, \" events size queued for upload: \").concat(MAX_QUEUE_BYTES_COUNT / ONE_MEBI_BYTE, \"MiB\"),\n            source: ErrorSource.AGENT,\n            startClocks: clocksNow(),\n        });\n        state.queueFullReported = true;\n    }\n    var previousQueue = state.queuedPayloads;\n    state.queuedPayloads = newPayloadQueue();\n    while (previousQueue.size() > 0) {\n        sendWithRetryStrategy(previousQueue.dequeue(), state, sendStrategy, endpointType, reportError);\n    }\n}\nfunction shouldRetryRequest(response) {\n    return response.status === 0 || response.status === 408 || response.status === 429 || response.status >= 500;\n}\nexport function newRetryState() {\n    return {\n        transportStatus: 0 /* UP */,\n        currentBackoffTime: INITIAL_BACKOFF_TIME,\n        bandwidthMonitor: newBandwidthMonitor(),\n        queuedPayloads: newPayloadQueue(),\n        queueFullReported: false,\n    };\n}\nfunction newPayloadQueue() {\n    var queue = [];\n    return {\n        bytesCount: 0,\n        enqueue: function (payload) {\n            if (this.isFull()) {\n                return;\n            }\n            queue.push(payload);\n            this.bytesCount += payload.bytesCount;\n        },\n        first: function () {\n            return queue[0];\n        },\n        dequeue: function () {\n            var payload = queue.shift();\n            if (payload) {\n                this.bytesCount -= payload.bytesCount;\n            }\n            return payload;\n        },\n        size: function () {\n            return queue.length;\n        },\n        isFull: function () {\n            return this.bytesCount >= MAX_QUEUE_BYTES_COUNT;\n        },\n    };\n}\nfunction newBandwidthMonitor() {\n    return {\n        ongoingRequestCount: 0,\n        ongoingByteCount: 0,\n        canHandle: function (payload) {\n            return (this.ongoingRequestCount === 0 ||\n                (this.ongoingByteCount + payload.bytesCount <= MAX_ONGOING_BYTES_COUNT &&\n                    this.ongoingRequestCount < MAX_ONGOING_REQUESTS));\n        },\n        add: function (payload) {\n            this.ongoingRequestCount += 1;\n            this.ongoingByteCount += payload.bytesCount;\n        },\n        remove: function (payload) {\n            this.ongoingRequestCount -= 1;\n            this.ongoingByteCount -= payload.bytesCount;\n        },\n    };\n}\n//# sourceMappingURL=sendWithRetryStrategy.js.map","import { addTelemetryError } from '../domain/telemetry';\nimport { monitor } from '../tools/monitor';\nimport { newRetryState, sendWithRetryStrategy } from './sendWithRetryStrategy';\nexport function createHttpRequest(endpointBuilder, bytesLimit, reportError) {\n    var retryState = newRetryState();\n    var sendStrategyForRetry = function (payload, onResponse) {\n        return fetchKeepAliveStrategy(endpointBuilder, bytesLimit, payload, onResponse);\n    };\n    return {\n        send: function (payload) {\n            sendWithRetryStrategy(payload, retryState, sendStrategyForRetry, endpointBuilder.endpointType, reportError);\n        },\n        /**\n         * Since fetch keepalive behaves like regular fetch on Firefox,\n         * keep using sendBeaconStrategy on exit\n         */\n        sendOnExit: function (payload) {\n            sendBeaconStrategy(endpointBuilder, bytesLimit, payload);\n        },\n    };\n}\nfunction sendBeaconStrategy(endpointBuilder, bytesLimit, _a) {\n    var data = _a.data, bytesCount = _a.bytesCount;\n    var url = endpointBuilder.build();\n    var canUseBeacon = !!navigator.sendBeacon && bytesCount < bytesLimit;\n    if (canUseBeacon) {\n        try {\n            var isQueued = navigator.sendBeacon(url, data);\n            if (isQueued) {\n                return;\n            }\n        }\n        catch (e) {\n            reportBeaconError(e);\n        }\n    }\n    sendXHR(url, data);\n}\nvar hasReportedBeaconError = false;\nfunction reportBeaconError(e) {\n    if (!hasReportedBeaconError) {\n        hasReportedBeaconError = true;\n        addTelemetryError(e);\n    }\n}\nexport function fetchKeepAliveStrategy(endpointBuilder, bytesLimit, _a, onResponse) {\n    var data = _a.data, bytesCount = _a.bytesCount, retry = _a.retry;\n    var url = endpointBuilder.build(retry);\n    var canUseKeepAlive = isKeepAliveSupported() && bytesCount < bytesLimit;\n    if (canUseKeepAlive) {\n        fetch(url, { method: 'POST', body: data, keepalive: true }).then(monitor(function (response) { return onResponse === null || onResponse === void 0 ? void 0 : onResponse({ status: response.status }); }), monitor(function () {\n            // failed to queue the request\n            sendXHR(url, data, onResponse);\n        }));\n    }\n    else {\n        sendXHR(url, data, onResponse);\n    }\n}\nfunction isKeepAliveSupported() {\n    // Request can throw, cf https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#errors\n    try {\n        return window.Request && 'keepalive' in new Request('http://a');\n    }\n    catch (_a) {\n        return false;\n    }\n}\nexport function sendXHR(url, data, onResponse) {\n    var request = new XMLHttpRequest();\n    var onLoadEnd = monitor(function () {\n        // prevent multiple onResponse callbacks\n        // if the xhr instance is reused by a third party\n        request.removeEventListener('loadend', onLoadEnd);\n        onResponse === null || onResponse === void 0 ? void 0 : onResponse({ status: request.status });\n    });\n    request.open('POST', url, true);\n    request.addEventListener('loadend', onLoadEnd);\n    request.send(data);\n}\n//# sourceMappingURL=httpRequest.js.map","import { Batch, combine, createHttpRequest, isTelemetryReplicationAllowed } from '@datadog/browser-core';\nexport function startRumBatch(configuration, lifeCycle, telemetryEventObservable, reportError, pageExitObservable) {\n    var batch = makeRumBatch(configuration, reportError, pageExitObservable);\n    lifeCycle.subscribe(11 /* RUM_EVENT_COLLECTED */, function (serverRumEvent) {\n        if (serverRumEvent.type === \"view\" /* VIEW */) {\n            batch.upsert(serverRumEvent, serverRumEvent.view.id);\n        }\n        else {\n            batch.add(serverRumEvent);\n        }\n    });\n    telemetryEventObservable.subscribe(function (event) { return batch.add(event, isTelemetryReplicationAllowed(configuration)); });\n}\nfunction makeRumBatch(configuration, reportError, pageExitObservable) {\n    var primaryBatch = createRumBatch(configuration.rumEndpointBuilder);\n    var replicaBatch;\n    var replica = configuration.replica;\n    if (replica !== undefined) {\n        replicaBatch = createRumBatch(replica.rumEndpointBuilder);\n    }\n    function createRumBatch(endpointBuilder) {\n        return new Batch(createHttpRequest(endpointBuilder, configuration.batchBytesLimit, reportError), configuration.batchMessagesLimit, configuration.batchBytesLimit, configuration.messageBytesLimit, configuration.flushTimeout, pageExitObservable);\n    }\n    function withReplicaApplicationId(message) {\n        return combine(message, { application: { id: replica.applicationId } });\n    }\n    return {\n        add: function (message, replicated) {\n            if (replicated === void 0) { replicated = true; }\n            primaryBatch.add(message);\n            if (replicaBatch && replicated) {\n                replicaBatch.add(withReplicaApplicationId(message));\n            }\n        },\n        upsert: function (message, key) {\n            primaryBatch.upsert(message, key);\n            if (replicaBatch) {\n                replicaBatch.upsert(withReplicaApplicationId(message), key);\n            }\n        },\n    };\n}\n//# sourceMappingURL=startRumBatch.js.map","import { getEventBridge } from '@datadog/browser-core';\nexport function startRumEventBridge(lifeCycle) {\n    var bridge = getEventBridge();\n    lifeCycle.subscribe(11 /* RUM_EVENT_COLLECTED */, function (serverRumEvent) {\n        bridge.send('rum', serverRumEvent);\n    });\n}\n//# sourceMappingURL=startRumEventBridge.js.map","import { SESSION_TIME_OUT_DELAY, relativeNow, ContextHistory } from '@datadog/browser-core';\n/**\n * We want to attach to an event:\n * - the url corresponding to its start\n * - the referrer corresponding to the previous view url (or document referrer for initial view)\n */\nexport var URL_CONTEXT_TIME_OUT_DELAY = SESSION_TIME_OUT_DELAY;\nexport function startUrlContexts(lifeCycle, locationChangeObservable, location) {\n    var urlContextHistory = new ContextHistory(URL_CONTEXT_TIME_OUT_DELAY);\n    var previousViewUrl;\n    lifeCycle.subscribe(4 /* VIEW_ENDED */, function (_a) {\n        var endClocks = _a.endClocks;\n        urlContextHistory.closeActive(endClocks.relative);\n    });\n    lifeCycle.subscribe(2 /* VIEW_CREATED */, function (_a) {\n        var startClocks = _a.startClocks;\n        var viewUrl = location.href;\n        urlContextHistory.add(buildUrlContext({\n            url: viewUrl,\n            referrer: !previousViewUrl ? document.referrer : previousViewUrl,\n        }), startClocks.relative);\n        previousViewUrl = viewUrl;\n    });\n    var locationChangeSubscription = locationChangeObservable.subscribe(function (_a) {\n        var newLocation = _a.newLocation;\n        var current = urlContextHistory.find();\n        if (current) {\n            var changeTime = relativeNow();\n            urlContextHistory.closeActive(changeTime);\n            urlContextHistory.add(buildUrlContext({\n                url: newLocation.href,\n                referrer: current.referrer,\n            }), changeTime);\n        }\n    });\n    function buildUrlContext(_a) {\n        var url = _a.url, referrer = _a.referrer;\n        return {\n            url: url,\n            referrer: referrer,\n        };\n    }\n    return {\n        findUrl: function (startTime) { return urlContextHistory.find(startTime); },\n        stop: function () {\n            locationChangeSubscription.unsubscribe();\n            urlContextHistory.stop();\n        },\n    };\n}\n//# sourceMappingURL=urlContexts.js.map","import { addEventListener, instrumentMethodAndCallOriginal, Observable, shallowClone, } from '@datadog/browser-core';\nexport function createLocationChangeObservable(location) {\n    var currentLocation = shallowClone(location);\n    var observable = new Observable(function () {\n        var stopHistoryTracking = trackHistory(onLocationChange).stop;\n        var stopHashTracking = trackHash(onLocationChange).stop;\n        return function () {\n            stopHistoryTracking();\n            stopHashTracking();\n        };\n    });\n    function onLocationChange() {\n        if (currentLocation.href === location.href) {\n            return;\n        }\n        var newLocation = shallowClone(location);\n        observable.notify({\n            newLocation: newLocation,\n            oldLocation: currentLocation,\n        });\n        currentLocation = newLocation;\n    }\n    return observable;\n}\nfunction trackHistory(onHistoryChange) {\n    var stopInstrumentingPushState = instrumentMethodAndCallOriginal(history, 'pushState', {\n        after: onHistoryChange,\n    }).stop;\n    var stopInstrumentingReplaceState = instrumentMethodAndCallOriginal(history, 'replaceState', {\n        after: onHistoryChange,\n    }).stop;\n    var removeListener = addEventListener(window, \"popstate\" /* POP_STATE */, onHistoryChange).stop;\n    return {\n        stop: function () {\n            stopInstrumentingPushState();\n            stopInstrumentingReplaceState();\n            removeListener();\n        },\n    };\n}\nfunction trackHash(onHashChange) {\n    return addEventListener(window, \"hashchange\" /* HASH_CHANGE */, onHashChange);\n}\n//# sourceMappingURL=locationChangeObservable.js.map","import { createPageExitObservable, addTelemetryConfiguration, startTelemetry, canUseEventBridge, getEventBridge, } from '@datadog/browser-core';\nimport { createDOMMutationObservable } from '../browser/domMutationObservable';\nimport { startPerformanceCollection } from '../browser/performanceCollection';\nimport { startRumAssembly } from '../domain/assembly';\nimport { startForegroundContexts } from '../domain/contexts/foregroundContexts';\nimport { startInternalContext } from '../domain/contexts/internalContext';\nimport { LifeCycle } from '../domain/lifeCycle';\nimport { startViewContexts } from '../domain/contexts/viewContexts';\nimport { startRequestCollection } from '../domain/requestCollection';\nimport { startActionCollection } from '../domain/rumEventsCollection/action/actionCollection';\nimport { startErrorCollection } from '../domain/rumEventsCollection/error/errorCollection';\nimport { startLongTaskCollection } from '../domain/rumEventsCollection/longTask/longTaskCollection';\nimport { startResourceCollection } from '../domain/rumEventsCollection/resource/resourceCollection';\nimport { startViewCollection } from '../domain/rumEventsCollection/view/viewCollection';\nimport { startRumSessionManager, startRumSessionManagerStub } from '../domain/rumSessionManager';\nimport { startRumBatch } from '../transport/startRumBatch';\nimport { startRumEventBridge } from '../transport/startRumEventBridge';\nimport { startUrlContexts } from '../domain/contexts/urlContexts';\nimport { createLocationChangeObservable } from '../browser/locationChangeObservable';\nimport { serializeRumConfiguration } from '../domain/configuration';\nexport function startRum(initConfiguration, configuration, getCommonContext, recorderApi, initialViewOptions) {\n    var lifeCycle = new LifeCycle();\n    var telemetry = startRumTelemetry(configuration);\n    telemetry.setContextProvider(function () {\n        var _a, _b;\n        return ({\n            application: {\n                id: configuration.applicationId,\n            },\n            session: {\n                id: (_a = session.findTrackedSession()) === null || _a === void 0 ? void 0 : _a.id,\n            },\n            view: {\n                id: (_b = viewContexts.findView()) === null || _b === void 0 ? void 0 : _b.id,\n            },\n            action: {\n                id: actionContexts.findActionId(),\n            },\n        });\n    });\n    var reportError = function (error) {\n        lifeCycle.notify(12 /* RAW_ERROR_COLLECTED */, { error: error });\n    };\n    if (!canUseEventBridge()) {\n        var pageExitObservable = createPageExitObservable();\n        pageExitObservable.subscribe(function (event) {\n            lifeCycle.notify(9 /* PAGE_EXITED */, event);\n        });\n        startRumBatch(configuration, lifeCycle, telemetry.observable, reportError, pageExitObservable);\n    }\n    else {\n        startRumEventBridge(lifeCycle);\n    }\n    var session = !canUseEventBridge() ? startRumSessionManager(configuration, lifeCycle) : startRumSessionManagerStub();\n    var domMutationObservable = createDOMMutationObservable();\n    var locationChangeObservable = createLocationChangeObservable(location);\n    var _a = startRumEventCollection(lifeCycle, configuration, location, session, locationChangeObservable, domMutationObservable, getCommonContext, reportError), viewContexts = _a.viewContexts, foregroundContexts = _a.foregroundContexts, urlContexts = _a.urlContexts, actionContexts = _a.actionContexts, addAction = _a.addAction;\n    addTelemetryConfiguration(serializeRumConfiguration(initConfiguration));\n    startLongTaskCollection(lifeCycle, session);\n    startResourceCollection(lifeCycle, configuration, session);\n    var _b = startViewCollection(lifeCycle, configuration, location, domMutationObservable, locationChangeObservable, foregroundContexts, recorderApi, initialViewOptions), addTiming = _b.addTiming, addFeatureFlagEvaluation = _b.addFeatureFlagEvaluation, startView = _b.startView;\n    var addError = startErrorCollection(lifeCycle, foregroundContexts, viewContexts).addError;\n    startRequestCollection(lifeCycle, configuration, session);\n    startPerformanceCollection(lifeCycle, configuration);\n    var internalContext = startInternalContext(configuration.applicationId, session, viewContexts, actionContexts, urlContexts);\n    return {\n        addAction: addAction,\n        addError: addError,\n        addTiming: addTiming,\n        addFeatureFlagEvaluation: addFeatureFlagEvaluation,\n        startView: startView,\n        lifeCycle: lifeCycle,\n        viewContexts: viewContexts,\n        session: session,\n        getInternalContext: internalContext.get,\n    };\n}\nfunction startRumTelemetry(configuration) {\n    var telemetry = startTelemetry(\"browser-rum-sdk\" /* RUM */, configuration);\n    if (canUseEventBridge()) {\n        var bridge_1 = getEventBridge();\n        telemetry.observable.subscribe(function (event) { return bridge_1.send('internal_telemetry', event); });\n    }\n    return telemetry;\n}\nexport function startRumEventCollection(lifeCycle, configuration, location, sessionManager, locationChangeObservable, domMutationObservable, getCommonContext, reportError) {\n    var viewContexts = startViewContexts(lifeCycle);\n    var urlContexts = startUrlContexts(lifeCycle, locationChangeObservable, location);\n    var foregroundContexts = startForegroundContexts();\n    var _a = startActionCollection(lifeCycle, domMutationObservable, configuration, foregroundContexts), addAction = _a.addAction, actionContexts = _a.actionContexts;\n    startRumAssembly(configuration, lifeCycle, sessionManager, viewContexts, urlContexts, actionContexts, getCommonContext, reportError);\n    return {\n        viewContexts: viewContexts,\n        foregroundContexts: foregroundContexts,\n        urlContexts: urlContexts,\n        addAction: addAction,\n        actionContexts: actionContexts,\n        stop: function () {\n            viewContexts.stop();\n            foregroundContexts.stop();\n        },\n    };\n}\n//# sourceMappingURL=startRum.js.map","import { startsWith } from '../../tools/utils';\nvar UNKNOWN_FUNCTION = '?';\n/**\n * Computes a stack trace for an exception.\n */\nexport function computeStackTrace(ex) {\n    var stack = [];\n    var stackProperty = tryToGetString(ex, 'stack');\n    var exString = String(ex);\n    if (stackProperty && startsWith(stackProperty, exString)) {\n        stackProperty = stackProperty.slice(exString.length);\n    }\n    if (stackProperty) {\n        stackProperty.split('\\n').forEach(function (line) {\n            var stackFrame = parseChromeLine(line) || parseChromeAnonymousLine(line) || parseWinLine(line) || parseGeckoLine(line);\n            if (stackFrame) {\n                if (!stackFrame.func && stackFrame.line) {\n                    stackFrame.func = UNKNOWN_FUNCTION;\n                }\n                stack.push(stackFrame);\n            }\n        });\n    }\n    return {\n        message: tryToGetString(ex, 'message'),\n        name: tryToGetString(ex, 'name'),\n        stack: stack,\n    };\n}\nvar fileUrl = '((?:file|https?|blob|chrome-extension|native|eval|webpack|<anonymous>|\\\\w+\\\\.|\\\\/).*?)';\nvar filePosition = '(?::(\\\\d+))';\nvar CHROME_LINE_RE = new RegExp(\"^\\\\s*at (.*?) ?\\\\(\".concat(fileUrl).concat(filePosition, \"?\").concat(filePosition, \"?\\\\)?\\\\s*$\"), 'i');\nvar CHROME_EVAL_RE = new RegExp(\"\\\\((\\\\S*)\".concat(filePosition).concat(filePosition, \"\\\\)\"));\nfunction parseChromeLine(line) {\n    var parts = CHROME_LINE_RE.exec(line);\n    if (!parts) {\n        return;\n    }\n    var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line\n    var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line\n    var submatch = CHROME_EVAL_RE.exec(parts[2]);\n    if (isEval && submatch) {\n        // throw out eval line/column and use top-most line/column number\n        parts[2] = submatch[1]; // url\n        parts[3] = submatch[2]; // line\n        parts[4] = submatch[3]; // column\n    }\n    return {\n        args: isNative ? [parts[2]] : [],\n        column: parts[4] ? +parts[4] : undefined,\n        func: parts[1] || UNKNOWN_FUNCTION,\n        line: parts[3] ? +parts[3] : undefined,\n        url: !isNative ? parts[2] : undefined,\n    };\n}\nvar CHROME_ANONYMOUS_FUNCTION_RE = new RegExp(\"^\\\\s*at ?\".concat(fileUrl).concat(filePosition, \"?\").concat(filePosition, \"??\\\\s*$\"), 'i');\nfunction parseChromeAnonymousLine(line) {\n    var parts = CHROME_ANONYMOUS_FUNCTION_RE.exec(line);\n    if (!parts) {\n        return;\n    }\n    return {\n        args: [],\n        column: parts[3] ? +parts[3] : undefined,\n        func: UNKNOWN_FUNCTION,\n        line: parts[2] ? +parts[2] : undefined,\n        url: parts[1],\n    };\n}\nvar WINJS_LINE_RE = /^\\s*at (?:((?:\\[object object\\])?.+) )?\\(?((?:file|ms-appx|https?|webpack|blob):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i;\nfunction parseWinLine(line) {\n    var parts = WINJS_LINE_RE.exec(line);\n    if (!parts) {\n        return;\n    }\n    return {\n        args: [],\n        column: parts[4] ? +parts[4] : undefined,\n        func: parts[1] || UNKNOWN_FUNCTION,\n        line: +parts[3],\n        url: parts[2],\n    };\n}\nvar GECKO_LINE_RE = /^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|capacitor|\\[native).*?|[^@]*bundle)(?::(\\d+))?(?::(\\d+))?\\s*$/i;\nvar GECKO_EVAL_RE = /(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i;\nfunction parseGeckoLine(line) {\n    var parts = GECKO_LINE_RE.exec(line);\n    if (!parts) {\n        return;\n    }\n    var isEval = parts[3] && parts[3].indexOf(' > eval') > -1;\n    var submatch = GECKO_EVAL_RE.exec(parts[3]);\n    if (isEval && submatch) {\n        // throw out eval line/column and use top-most line number\n        parts[3] = submatch[1];\n        parts[4] = submatch[2];\n        parts[5] = undefined; // no column when eval\n    }\n    return {\n        args: parts[2] ? parts[2].split(',') : [],\n        column: parts[5] ? +parts[5] : undefined,\n        func: parts[1] || UNKNOWN_FUNCTION,\n        line: parts[4] ? +parts[4] : undefined,\n        url: parts[3],\n    };\n}\nfunction tryToGetString(candidate, property) {\n    if (typeof candidate !== 'object' || !candidate || !(property in candidate)) {\n        return undefined;\n    }\n    var value = candidate[property];\n    return typeof value === 'string' ? value : undefined;\n}\n//# sourceMappingURL=computeStackTrace.js.map","import { computeStackTrace } from '../domain/tracekit';\nimport { callMonitored } from './monitor';\nimport { jsonStringify, noop } from './utils';\nexport var ErrorSource = {\n    AGENT: 'agent',\n    CONSOLE: 'console',\n    CUSTOM: 'custom',\n    LOGGER: 'logger',\n    NETWORK: 'network',\n    SOURCE: 'source',\n    REPORT: 'report',\n};\nexport function computeRawError(_a) {\n    var stackTrace = _a.stackTrace, originalError = _a.originalError, handlingStack = _a.handlingStack, startClocks = _a.startClocks, nonErrorPrefix = _a.nonErrorPrefix, source = _a.source, handling = _a.handling;\n    if (!stackTrace || (stackTrace.message === undefined && !(originalError instanceof Error))) {\n        return {\n            startClocks: startClocks,\n            source: source,\n            handling: handling,\n            originalError: originalError,\n            message: \"\".concat(nonErrorPrefix, \" \").concat(jsonStringify(originalError)),\n            stack: 'No stack, consider using an instance of Error',\n            handlingStack: handlingStack,\n            type: stackTrace && stackTrace.name,\n        };\n    }\n    return {\n        startClocks: startClocks,\n        source: source,\n        handling: handling,\n        originalError: originalError,\n        message: stackTrace.message || 'Empty message',\n        stack: toStackTraceString(stackTrace),\n        handlingStack: handlingStack,\n        type: stackTrace.name,\n        causes: flattenErrorCauses(originalError, source),\n    };\n}\nexport function toStackTraceString(stack) {\n    var result = formatErrorMessage(stack);\n    stack.stack.forEach(function (frame) {\n        var func = frame.func === '?' ? '<anonymous>' : frame.func;\n        var args = frame.args && frame.args.length > 0 ? \"(\".concat(frame.args.join(', '), \")\") : '';\n        var line = frame.line ? \":\".concat(frame.line) : '';\n        var column = frame.line && frame.column ? \":\".concat(frame.column) : '';\n        result += \"\\n  at \".concat(func).concat(args, \" @ \").concat(frame.url).concat(line).concat(column);\n    });\n    return result;\n}\nexport function getFileFromStackTraceString(stack) {\n    var _a;\n    return (_a = /@ (.+)/.exec(stack)) === null || _a === void 0 ? void 0 : _a[1];\n}\nexport function formatErrorMessage(stack) {\n    return \"\".concat(stack.name || 'Error', \": \").concat(stack.message);\n}\n/**\n Creates a stacktrace without SDK internal frames.\n \n Constraints:\n - Has to be called at the utmost position of the call stack.\n - No monitored function should encapsulate it, that is why we need to use callMonitored inside it.\n */\nexport function createHandlingStack() {\n    /**\n     * Skip the two internal frames:\n     * - SDK API (console.error, ...)\n     * - this function\n     * in order to keep only the user calls\n     */\n    var internalFramesToSkip = 2;\n    var error = new Error();\n    var formattedStack;\n    // IE needs to throw the error to fill in the stack trace\n    if (!error.stack) {\n        try {\n            throw error;\n        }\n        catch (e) {\n            noop();\n        }\n    }\n    callMonitored(function () {\n        var stackTrace = computeStackTrace(error);\n        stackTrace.stack = stackTrace.stack.slice(internalFramesToSkip);\n        formattedStack = toStackTraceString(stackTrace);\n    });\n    return formattedStack;\n}\nexport function flattenErrorCauses(error, parentSource) {\n    var currentError = error;\n    var causes = [];\n    while ((currentError === null || currentError === void 0 ? void 0 : currentError.cause) instanceof Error && causes.length < 10) {\n        var stackTrace = computeStackTrace(currentError.cause);\n        causes.push({\n            message: currentError.cause.message,\n            source: parentSource,\n            type: stackTrace === null || stackTrace === void 0 ? void 0 : stackTrace.name,\n            stack: stackTrace && toStackTraceString(stackTrace),\n        });\n        currentError = currentError.cause;\n    }\n    return causes.length ? causes : undefined;\n}\n//# sourceMappingURL=error.js.map","export var INTAKE_SITE_STAGING = 'datad0g.com';\nexport var INTAKE_SITE_US1 = 'datadoghq.com';\nexport var INTAKE_SITE_US1_FED = 'ddog-gov.com';\n//# sourceMappingURL=intakeSites.js.map","/**\n * LIMITATION:\n * For NPM setup, this feature flag singleton is shared between RUM and Logs product.\n * This means that an experimental flag set on the RUM product will be set on the Logs product.\n * So keep in mind that in certain configurations, your experimental feature flag may affect other products.\n */\nimport { includes } from '../../tools/utils';\nimport { display } from '../../tools/display';\nvar enabledExperimentalFeatures;\nexport function updateExperimentalFeatures(enabledFeatures) {\n    // Safely handle external data\n    if (!Array.isArray(enabledFeatures)) {\n        return;\n    }\n    if (!enabledExperimentalFeatures) {\n        enabledExperimentalFeatures = new Set(enabledFeatures);\n    }\n    enabledFeatures\n        .filter(function (flag) { return typeof flag === 'string'; })\n        .forEach(function (flag) {\n        if (includes(flag, '-')) {\n            display.warn(\"please use snake case for '\".concat(flag, \"'\"));\n        }\n        enabledExperimentalFeatures.add(flag);\n    });\n}\nexport function isExperimentalFeatureEnabled(featureName) {\n    return !!enabledExperimentalFeatures && enabledExperimentalFeatures.has(featureName);\n}\nexport function resetExperimentalFeatures() {\n    enabledExperimentalFeatures = new Set();\n}\nexport function getExperimentalFeatures() {\n    return enabledExperimentalFeatures || new Set();\n}\n//# sourceMappingURL=experimentalFeatures.js.map","var Observable = /** @class */ (function () {\n    function Observable(onFirstSubscribe) {\n        this.onFirstSubscribe = onFirstSubscribe;\n        this.observers = [];\n    }\n    Observable.prototype.subscribe = function (f) {\n        var _this = this;\n        if (!this.observers.length && this.onFirstSubscribe) {\n            this.onLastUnsubscribe = this.onFirstSubscribe() || undefined;\n        }\n        this.observers.push(f);\n        return {\n            unsubscribe: function () {\n                _this.observers = _this.observers.filter(function (other) { return f !== other; });\n                if (!_this.observers.length && _this.onLastUnsubscribe) {\n                    _this.onLastUnsubscribe();\n                }\n            },\n        };\n    };\n    Observable.prototype.notify = function (data) {\n        this.observers.forEach(function (observer) { return observer(data); });\n    };\n    return Observable;\n}());\nexport { Observable };\nexport function mergeObservables() {\n    var observables = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        observables[_i] = arguments[_i];\n    }\n    var globalObservable = new Observable(function () {\n        var subscriptions = observables.map(function (observable) {\n            return observable.subscribe(function (data) { return globalObservable.notify(data); });\n        });\n        return function () { return subscriptions.forEach(function (subscription) { return subscription.unsubscribe(); }); };\n    });\n    return globalObservable;\n}\n//# sourceMappingURL=observable.js.map","import { isNumber, ONE_YEAR, round } from './utils';\nexport function relativeToClocks(relative) {\n    return { relative: relative, timeStamp: getCorrectedTimeStamp(relative) };\n}\nfunction getCorrectedTimeStamp(relativeTime) {\n    var correctedOrigin = (dateNow() - performance.now());\n    // apply correction only for positive drift\n    if (correctedOrigin > getNavigationStart()) {\n        return Math.round(addDuration(correctedOrigin, relativeTime));\n    }\n    return getTimeStamp(relativeTime);\n}\nexport function currentDrift() {\n    return Math.round(dateNow() - addDuration(getNavigationStart(), performance.now()));\n}\nexport function toServerDuration(duration) {\n    if (!isNumber(duration)) {\n        return duration;\n    }\n    return round(duration * 1e6, 0);\n}\nexport function dateNow() {\n    // Do not use `Date.now` because sometimes websites are wrongly \"polyfilling\" it. For example, we\n    // had some users using a very old version of `datejs`, which patched `Date.now` to return a Date\n    // instance instead of a timestamp[1]. Those users are unlikely to fix this, so let's handle this\n    // case ourselves.\n    // [1]: https://github.com/datejs/Datejs/blob/97f5c7c58c5bc5accdab8aa7602b6ac56462d778/src/core-debug.js#L14-L16\n    return new Date().getTime();\n}\nexport function timeStampNow() {\n    return dateNow();\n}\nexport function relativeNow() {\n    return performance.now();\n}\nexport function clocksNow() {\n    return { relative: relativeNow(), timeStamp: timeStampNow() };\n}\nexport function clocksOrigin() {\n    return { relative: 0, timeStamp: getNavigationStart() };\n}\nexport function elapsed(start, end) {\n    return (end - start);\n}\nexport function addDuration(a, b) {\n    return a + b;\n}\n/**\n * Get the time since the navigation was started.\n *\n * Note: this does not use `performance.timeOrigin` because it doesn't seem to reflect the actual\n * time on which the navigation has started: it may be much farther in the past, at least in Firefox 71.\n * Related issue in Firefox: https://bugzilla.mozilla.org/show_bug.cgi?id=1429926\n */\nexport function getRelativeTime(timestamp) {\n    return (timestamp - getNavigationStart());\n}\nexport function getTimeStamp(relativeTime) {\n    return Math.round(addDuration(getNavigationStart(), relativeTime));\n}\nexport function looksLikeRelativeTime(time) {\n    return time < ONE_YEAR;\n}\n/**\n * Navigation start slightly change on some rare cases\n */\nvar navigationStart;\nfunction getNavigationStart() {\n    if (navigationStart === undefined) {\n        navigationStart = performance.timing.navigationStart;\n    }\n    return navigationStart;\n}\nexport function resetNavigationStart() {\n    navigationStart = undefined;\n}\n//# sourceMappingURL=timeUtils.js.map","export var TelemetryType = {\n    log: 'log',\n    configuration: 'configuration',\n};\n//# sourceMappingURL=rawTelemetryEvent.types.js.map","import { ConsoleApiName } from '../../tools/display';\nimport { toStackTraceString } from '../../tools/error';\nimport { assign, combine, jsonStringify, performDraw, includes, startsWith, arrayFrom } from '../../tools/utils';\nimport { getExperimentalFeatures, INTAKE_SITE_STAGING, INTAKE_SITE_US1_FED } from '../configuration';\nimport { computeStackTrace } from '../tracekit';\nimport { Observable } from '../../tools/observable';\nimport { timeStampNow } from '../../tools/timeUtils';\nimport { displayIfDebugEnabled, startMonitorErrorCollection } from '../../tools/monitor';\nimport { TelemetryType } from './rawTelemetryEvent.types';\nvar ALLOWED_FRAME_URLS = [\n    'https://www.datadoghq-browser-agent.com',\n    'https://www.datad0g-browser-agent.com',\n    'http://localhost',\n    '<anonymous>',\n];\nvar TELEMETRY_EXCLUDED_SITES = [INTAKE_SITE_US1_FED];\nvar telemetryConfiguration = { maxEventsPerPage: 0, sentEventCount: 0, telemetryEnabled: false, telemetryConfigurationEnabled: false };\nvar onRawTelemetryEventCollected;\nexport function startTelemetry(telemetryService, configuration) {\n    var contextProvider;\n    var observable = new Observable();\n    telemetryConfiguration.telemetryEnabled = performDraw(configuration.telemetrySampleRate);\n    telemetryConfiguration.telemetryConfigurationEnabled =\n        telemetryConfiguration.telemetryEnabled && performDraw(configuration.telemetryConfigurationSampleRate);\n    onRawTelemetryEventCollected = function (event) {\n        if (!includes(TELEMETRY_EXCLUDED_SITES, configuration.site) && telemetryConfiguration.telemetryEnabled) {\n            observable.notify(toTelemetryEvent(telemetryService, event));\n        }\n    };\n    startMonitorErrorCollection(addTelemetryError);\n    assign(telemetryConfiguration, {\n        maxEventsPerPage: configuration.maxTelemetryEventsPerPage,\n        sentEventCount: 0,\n    });\n    function toTelemetryEvent(telemetryService, event) {\n        return combine({\n            type: 'telemetry',\n            date: timeStampNow(),\n            service: telemetryService,\n            version: \"4.25.0\",\n            source: 'browser',\n            _dd: {\n                format_version: 2,\n            },\n            telemetry: event,\n            experimental_features: arrayFrom(getExperimentalFeatures()),\n        }, contextProvider !== undefined ? contextProvider() : {});\n    }\n    return {\n        setContextProvider: function (provider) {\n            contextProvider = provider;\n        },\n        observable: observable,\n    };\n}\nexport function startFakeTelemetry() {\n    var events = [];\n    assign(telemetryConfiguration, {\n        maxEventsPerPage: Infinity,\n        sentEventCount: 0,\n    });\n    onRawTelemetryEventCollected = function (event) {\n        events.push(event);\n    };\n    return events;\n}\nexport function resetTelemetry() {\n    onRawTelemetryEventCollected = undefined;\n}\n/**\n * Avoid mixing telemetry events from different data centers\n * but keep replicating staging events for reliability\n */\nexport function isTelemetryReplicationAllowed(configuration) {\n    return configuration.site === INTAKE_SITE_STAGING;\n}\nexport function addTelemetryDebug(message, context) {\n    displayIfDebugEnabled(ConsoleApiName.debug, message, context);\n    addTelemetry(assign({\n        type: TelemetryType.log,\n        message: message,\n        status: \"debug\" /* debug */,\n    }, context));\n}\nexport function addTelemetryError(e) {\n    addTelemetry(assign({\n        type: TelemetryType.log,\n        status: \"error\" /* error */,\n    }, formatError(e)));\n}\nexport function addTelemetryConfiguration(configuration) {\n    if (telemetryConfiguration.telemetryConfigurationEnabled) {\n        addTelemetry({\n            type: TelemetryType.configuration,\n            configuration: configuration,\n        });\n    }\n}\nfunction addTelemetry(event) {\n    if (onRawTelemetryEventCollected && telemetryConfiguration.sentEventCount < telemetryConfiguration.maxEventsPerPage) {\n        telemetryConfiguration.sentEventCount += 1;\n        onRawTelemetryEventCollected(event);\n    }\n}\nexport function formatError(e) {\n    if (e instanceof Error) {\n        var stackTrace = computeStackTrace(e);\n        return {\n            error: {\n                kind: stackTrace.name,\n                stack: toStackTraceString(scrubCustomerFrames(stackTrace)),\n            },\n            message: stackTrace.message,\n        };\n    }\n    return {\n        error: {\n            stack: 'Not an instance of error',\n        },\n        message: \"Uncaught \".concat(jsonStringify(e)),\n    };\n}\nexport function scrubCustomerFrames(stackTrace) {\n    stackTrace.stack = stackTrace.stack.filter(function (frame) { return !frame.url || ALLOWED_FRAME_URLS.some(function (allowedFrameUrl) { return startsWith(frame.url, allowedFrameUrl); }); });\n    return stackTrace;\n}\n//# sourceMappingURL=telemetry.js.map","import { monitor } from '../tools/monitor';\nimport { clocksNow } from '../tools/timeUtils';\nimport { ONE_KIBI_BYTE, ONE_MEBI_BYTE, ONE_SECOND, ONE_MINUTE } from '../tools/utils';\nimport { ErrorSource } from '../tools/error';\nexport var MAX_ONGOING_BYTES_COUNT = 80 * ONE_KIBI_BYTE;\nexport var MAX_ONGOING_REQUESTS = 32;\nexport var MAX_QUEUE_BYTES_COUNT = 3 * ONE_MEBI_BYTE;\nexport var MAX_BACKOFF_TIME = ONE_MINUTE;\nexport var INITIAL_BACKOFF_TIME = ONE_SECOND;\nexport function sendWithRetryStrategy(payload, state, sendStrategy, endpointType, reportError) {\n    if (state.transportStatus === 0 /* UP */ &&\n        state.queuedPayloads.size() === 0 &&\n        state.bandwidthMonitor.canHandle(payload)) {\n        send(payload, state, sendStrategy, {\n            onSuccess: function () { return retryQueuedPayloads(0 /* AFTER_SUCCESS */, state, sendStrategy, endpointType, reportError); },\n            onFailure: function () {\n                state.queuedPayloads.enqueue(payload);\n                scheduleRetry(state, sendStrategy, endpointType, reportError);\n            },\n        });\n    }\n    else {\n        state.queuedPayloads.enqueue(payload);\n    }\n}\nfunction scheduleRetry(state, sendStrategy, endpointType, reportError) {\n    if (state.transportStatus !== 2 /* DOWN */) {\n        return;\n    }\n    setTimeout(monitor(function () {\n        var payload = state.queuedPayloads.first();\n        send(payload, state, sendStrategy, {\n            onSuccess: function () {\n                state.queuedPayloads.dequeue();\n                state.currentBackoffTime = INITIAL_BACKOFF_TIME;\n                retryQueuedPayloads(1 /* AFTER_RESUME */, state, sendStrategy, endpointType, reportError);\n            },\n            onFailure: function () {\n                state.currentBackoffTime = Math.min(MAX_BACKOFF_TIME, state.currentBackoffTime * 2);\n                scheduleRetry(state, sendStrategy, endpointType, reportError);\n            },\n        });\n    }), state.currentBackoffTime);\n}\nfunction send(payload, state, sendStrategy, _a) {\n    var onSuccess = _a.onSuccess, onFailure = _a.onFailure;\n    state.bandwidthMonitor.add(payload);\n    sendStrategy(payload, function (response) {\n        state.bandwidthMonitor.remove(payload);\n        if (!shouldRetryRequest(response)) {\n            state.transportStatus = 0 /* UP */;\n            onSuccess();\n        }\n        else {\n            // do not consider transport down if another ongoing request could succeed\n            state.transportStatus =\n                state.bandwidthMonitor.ongoingRequestCount > 0 ? 1 /* FAILURE_DETECTED */ : 2 /* DOWN */;\n            payload.retry = {\n                count: payload.retry ? payload.retry.count + 1 : 1,\n                lastFailureStatus: response.status,\n            };\n            onFailure();\n        }\n    });\n}\nfunction retryQueuedPayloads(reason, state, sendStrategy, endpointType, reportError) {\n    if (reason === 0 /* AFTER_SUCCESS */ && state.queuedPayloads.isFull() && !state.queueFullReported) {\n        reportError({\n            message: \"Reached max \".concat(endpointType, \" events size queued for upload: \").concat(MAX_QUEUE_BYTES_COUNT / ONE_MEBI_BYTE, \"MiB\"),\n            source: ErrorSource.AGENT,\n            startClocks: clocksNow(),\n        });\n        state.queueFullReported = true;\n    }\n    var previousQueue = state.queuedPayloads;\n    state.queuedPayloads = newPayloadQueue();\n    while (previousQueue.size() > 0) {\n        sendWithRetryStrategy(previousQueue.dequeue(), state, sendStrategy, endpointType, reportError);\n    }\n}\nfunction shouldRetryRequest(response) {\n    return response.status === 0 || response.status === 408 || response.status === 429 || response.status >= 500;\n}\nexport function newRetryState() {\n    return {\n        transportStatus: 0 /* UP */,\n        currentBackoffTime: INITIAL_BACKOFF_TIME,\n        bandwidthMonitor: newBandwidthMonitor(),\n        queuedPayloads: newPayloadQueue(),\n        queueFullReported: false,\n    };\n}\nfunction newPayloadQueue() {\n    var queue = [];\n    return {\n        bytesCount: 0,\n        enqueue: function (payload) {\n            if (this.isFull()) {\n                return;\n            }\n            queue.push(payload);\n            this.bytesCount += payload.bytesCount;\n        },\n        first: function () {\n            return queue[0];\n        },\n        dequeue: function () {\n            var payload = queue.shift();\n            if (payload) {\n                this.bytesCount -= payload.bytesCount;\n            }\n            return payload;\n        },\n        size: function () {\n            return queue.length;\n        },\n        isFull: function () {\n            return this.bytesCount >= MAX_QUEUE_BYTES_COUNT;\n        },\n    };\n}\nfunction newBandwidthMonitor() {\n    return {\n        ongoingRequestCount: 0,\n        ongoingByteCount: 0,\n        canHandle: function (payload) {\n            return (this.ongoingRequestCount === 0 ||\n                (this.ongoingByteCount + payload.bytesCount <= MAX_ONGOING_BYTES_COUNT &&\n                    this.ongoingRequestCount < MAX_ONGOING_REQUESTS));\n        },\n        add: function (payload) {\n            this.ongoingRequestCount += 1;\n            this.ongoingByteCount += payload.bytesCount;\n        },\n        remove: function (payload) {\n            this.ongoingRequestCount -= 1;\n            this.ongoingByteCount -= payload.bytesCount;\n        },\n    };\n}\n//# sourceMappingURL=sendWithRetryStrategy.js.map","import { addTelemetryError } from '../domain/telemetry';\nimport { monitor } from '../tools/monitor';\nimport { newRetryState, sendWithRetryStrategy } from './sendWithRetryStrategy';\nexport function createHttpRequest(endpointBuilder, bytesLimit, reportError) {\n    var retryState = newRetryState();\n    var sendStrategyForRetry = function (payload, onResponse) {\n        return fetchKeepAliveStrategy(endpointBuilder, bytesLimit, payload, onResponse);\n    };\n    return {\n        send: function (payload) {\n            sendWithRetryStrategy(payload, retryState, sendStrategyForRetry, endpointBuilder.endpointType, reportError);\n        },\n        /**\n         * Since fetch keepalive behaves like regular fetch on Firefox,\n         * keep using sendBeaconStrategy on exit\n         */\n        sendOnExit: function (payload) {\n            sendBeaconStrategy(endpointBuilder, bytesLimit, payload);\n        },\n    };\n}\nfunction sendBeaconStrategy(endpointBuilder, bytesLimit, _a) {\n    var data = _a.data, bytesCount = _a.bytesCount;\n    var url = endpointBuilder.build();\n    var canUseBeacon = !!navigator.sendBeacon && bytesCount < bytesLimit;\n    if (canUseBeacon) {\n        try {\n            var isQueued = navigator.sendBeacon(url, data);\n            if (isQueued) {\n                return;\n            }\n        }\n        catch (e) {\n            reportBeaconError(e);\n        }\n    }\n    sendXHR(url, data);\n}\nvar hasReportedBeaconError = false;\nfunction reportBeaconError(e) {\n    if (!hasReportedBeaconError) {\n        hasReportedBeaconError = true;\n        addTelemetryError(e);\n    }\n}\nexport function fetchKeepAliveStrategy(endpointBuilder, bytesLimit, _a, onResponse) {\n    var data = _a.data, bytesCount = _a.bytesCount, retry = _a.retry;\n    var url = endpointBuilder.build(retry);\n    var canUseKeepAlive = isKeepAliveSupported() && bytesCount < bytesLimit;\n    if (canUseKeepAlive) {\n        fetch(url, { method: 'POST', body: data, keepalive: true }).then(monitor(function (response) { return onResponse === null || onResponse === void 0 ? void 0 : onResponse({ status: response.status }); }), monitor(function () {\n            // failed to queue the request\n            sendXHR(url, data, onResponse);\n        }));\n    }\n    else {\n        sendXHR(url, data, onResponse);\n    }\n}\nfunction isKeepAliveSupported() {\n    // Request can throw, cf https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#errors\n    try {\n        return window.Request && 'keepalive' in new Request('http://a');\n    }\n    catch (_a) {\n        return false;\n    }\n}\nexport function sendXHR(url, data, onResponse) {\n    var request = new XMLHttpRequest();\n    var onLoadEnd = monitor(function () {\n        // prevent multiple onResponse callbacks\n        // if the xhr instance is reused by a third party\n        request.removeEventListener('loadend', onLoadEnd);\n        onResponse === null || onResponse === void 0 ? void 0 : onResponse({ status: request.status });\n    });\n    request.open('POST', url, true);\n    request.addEventListener('loadend', onLoadEnd);\n    request.send(data);\n}\n//# sourceMappingURL=httpRequest.js.map","export var RecordType = {\n    FullSnapshot: 2,\n    IncrementalSnapshot: 3,\n    Meta: 4,\n    Focus: 6,\n    ViewEnd: 7,\n    VisualViewport: 8,\n    FrustrationRecord: 9,\n};\nexport var NodeType = {\n    Document: 0,\n    DocumentType: 1,\n    Element: 2,\n    Text: 3,\n    CDATA: 4,\n};\nexport var IncrementalSource = {\n    Mutation: 0,\n    MouseMove: 1,\n    MouseInteraction: 2,\n    Scroll: 3,\n    ViewportResize: 4,\n    Input: 5,\n    TouchMove: 6,\n    MediaInteraction: 7,\n    StyleSheetRule: 8,\n    // CanvasMutation : 9,\n    // Font : 10,\n};\nexport var MouseInteractionType = {\n    MouseUp: 0,\n    MouseDown: 1,\n    Click: 2,\n    ContextMenu: 3,\n    DblClick: 4,\n    Focus: 5,\n    Blur: 6,\n    TouchStart: 7,\n    TouchEnd: 9,\n};\nexport var MediaInteractionType = {\n    Play: 0,\n    Pause: 1,\n};\n//# sourceMappingURL=sessionReplayConstants.js.map","import { getLinkElementOrigin, getLocationOrigin } from './utils';\nexport function normalizeUrl(url) {\n    return buildUrl(url, getLocationOrigin()).href;\n}\nexport function isValidUrl(url) {\n    try {\n        return !!buildUrl(url);\n    }\n    catch (_a) {\n        return false;\n    }\n}\nexport function haveSameOrigin(url1, url2) {\n    return getOrigin(url1) === getOrigin(url2);\n}\nexport function getOrigin(url) {\n    return getLinkElementOrigin(buildUrl(url));\n}\nexport function getPathName(url) {\n    var pathname = buildUrl(url).pathname;\n    return pathname[0] === '/' ? pathname : \"/\".concat(pathname);\n}\nexport function getSearch(url) {\n    return buildUrl(url).search;\n}\nexport function getHash(url) {\n    return buildUrl(url).hash;\n}\nexport function buildUrl(url, base) {\n    if (checkURLSupported()) {\n        return base !== undefined ? new URL(url, base) : new URL(url);\n    }\n    if (base === undefined && !/:/.test(url)) {\n        throw new Error(\"Invalid URL: '\".concat(url, \"'\"));\n    }\n    var doc = document;\n    var anchorElement = doc.createElement('a');\n    if (base !== undefined) {\n        doc = document.implementation.createHTMLDocument('');\n        var baseElement = doc.createElement('base');\n        baseElement.href = base;\n        doc.head.appendChild(baseElement);\n        doc.body.appendChild(anchorElement);\n    }\n    anchorElement.href = url;\n    return anchorElement;\n}\nvar isURLSupported;\nfunction checkURLSupported() {\n    if (isURLSupported !== undefined) {\n        return isURLSupported;\n    }\n    try {\n        var url = new URL('http://test/path');\n        isURLSupported = url.href === 'http://test/path';\n        return isURLSupported;\n    }\n    catch (_a) {\n        isURLSupported = false;\n    }\n    return isURLSupported;\n}\n//# sourceMappingURL=urlPolyfill.js.map","import { getCurrentSite } from '../../browser/cookie';\nimport { catchUserErrors } from '../../tools/catchUserErrors';\nimport { display } from '../../tools/display';\nimport { assign, isPercentage, ONE_KIBI_BYTE, ONE_SECOND } from '../../tools/utils';\nimport { updateExperimentalFeatures } from './experimentalFeatures';\nimport { computeTransportConfiguration } from './transportConfiguration';\nexport var DefaultPrivacyLevel = {\n    ALLOW: 'allow',\n    MASK: 'mask',\n    MASK_USER_INPUT: 'mask-user-input',\n};\nexport function validateAndBuildConfiguration(initConfiguration) {\n    var _a, _b, _c;\n    if (!initConfiguration || !initConfiguration.clientToken) {\n        display.error('Client Token is not configured, we will not send any data.');\n        return;\n    }\n    if (initConfiguration.sampleRate !== undefined && !isPercentage(initConfiguration.sampleRate)) {\n        display.error('Sample Rate should be a number between 0 and 100');\n        return;\n    }\n    if (initConfiguration.telemetrySampleRate !== undefined && !isPercentage(initConfiguration.telemetrySampleRate)) {\n        display.error('Telemetry Sample Rate should be a number between 0 and 100');\n        return;\n    }\n    if (initConfiguration.telemetryConfigurationSampleRate !== undefined &&\n        !isPercentage(initConfiguration.telemetryConfigurationSampleRate)) {\n        display.error('Telemetry Configuration Sample Rate should be a number between 0 and 100');\n        return;\n    }\n    // Set the experimental feature flags as early as possible, so we can use them in most places\n    updateExperimentalFeatures(initConfiguration.enableExperimentalFeatures);\n    return assign({\n        beforeSend: initConfiguration.beforeSend && catchUserErrors(initConfiguration.beforeSend, 'beforeSend threw an error:'),\n        cookieOptions: buildCookieOptions(initConfiguration),\n        sampleRate: (_a = initConfiguration.sampleRate) !== null && _a !== void 0 ? _a : 100,\n        telemetrySampleRate: (_b = initConfiguration.telemetrySampleRate) !== null && _b !== void 0 ? _b : 20,\n        telemetryConfigurationSampleRate: (_c = initConfiguration.telemetryConfigurationSampleRate) !== null && _c !== void 0 ? _c : 5,\n        service: initConfiguration.service,\n        silentMultipleInit: !!initConfiguration.silentMultipleInit,\n        /**\n         * beacon payload max queue size implementation is 64kb\n         * ensure that we leave room for logs, rum and potential other users\n         */\n        batchBytesLimit: 16 * ONE_KIBI_BYTE,\n        eventRateLimiterThreshold: 3000,\n        maxTelemetryEventsPerPage: 15,\n        /**\n         * flush automatically, aim to be lower than ALB connection timeout\n         * to maximize connection reuse.\n         */\n        flushTimeout: 30 * ONE_SECOND,\n        /**\n         * Logs intake limit\n         */\n        batchMessagesLimit: 50,\n        messageBytesLimit: 256 * ONE_KIBI_BYTE,\n    }, computeTransportConfiguration(initConfiguration));\n}\nexport function buildCookieOptions(initConfiguration) {\n    var cookieOptions = {};\n    cookieOptions.secure = mustUseSecureCookie(initConfiguration);\n    cookieOptions.crossSite = !!initConfiguration.useCrossSiteSessionCookie;\n    if (initConfiguration.trackSessionAcrossSubdomains) {\n        cookieOptions.domain = getCurrentSite();\n    }\n    return cookieOptions;\n}\nfunction mustUseSecureCookie(initConfiguration) {\n    return !!initConfiguration.useSecureSessionCookie || !!initConfiguration.useCrossSiteSessionCookie;\n}\nexport function serializeConfiguration(configuration) {\n    return {\n        session_sample_rate: configuration.sampleRate,\n        telemetry_sample_rate: configuration.telemetrySampleRate,\n        telemetry_configuration_sample_rate: configuration.telemetryConfigurationSampleRate,\n        use_before_send: !!configuration.beforeSend,\n        use_cross_site_session_cookie: configuration.useCrossSiteSessionCookie,\n        use_secure_session_cookie: configuration.useSecureSessionCookie,\n        use_proxy: configuration.proxyUrl !== undefined ? !!configuration.proxyUrl : undefined,\n        silent_multiple_init: configuration.silentMultipleInit,\n        track_session_across_subdomains: configuration.trackSessionAcrossSubdomains,\n        track_resources: configuration.trackResources,\n        track_long_task: configuration.trackLongTasks,\n    };\n}\n//# sourceMappingURL=configuration.js.map","import { DefaultPrivacyLevel } from '@datadog/browser-core';\nexport var NodePrivacyLevel = {\n    IGNORE: 'ignore',\n    HIDDEN: 'hidden',\n    ALLOW: DefaultPrivacyLevel.ALLOW,\n    MASK: DefaultPrivacyLevel.MASK,\n    MASK_USER_INPUT: DefaultPrivacyLevel.MASK_USER_INPUT,\n};\nexport var PRIVACY_ATTR_NAME = 'data-dd-privacy';\n// Privacy Attrs\nexport var PRIVACY_ATTR_VALUE_ALLOW = 'allow';\nexport var PRIVACY_ATTR_VALUE_MASK = 'mask';\nexport var PRIVACY_ATTR_VALUE_MASK_USER_INPUT = 'mask-user-input';\nexport var PRIVACY_ATTR_VALUE_HIDDEN = 'hidden';\n// Privacy Classes - not all customers can set plain HTML attributes, so support classes too\nexport var PRIVACY_CLASS_ALLOW = 'dd-privacy-allow';\nexport var PRIVACY_CLASS_MASK = 'dd-privacy-mask';\nexport var PRIVACY_CLASS_MASK_USER_INPUT = 'dd-privacy-mask-user-input';\nexport var PRIVACY_CLASS_HIDDEN = 'dd-privacy-hidden';\n// Private Replacement Templates\nexport var CENSORED_STRING_MARK = '***';\nexport var CENSORED_IMG_MARK = 'data:image/gif;base64,R0lGODlhAQABAIAAAMLCwgAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==';\nexport var FORM_PRIVATE_TAG_NAMES = {\n    INPUT: true,\n    OUTPUT: true,\n    TEXTAREA: true,\n    SELECT: true,\n    OPTION: true,\n    DATALIST: true,\n    OPTGROUP: true,\n};\n//# sourceMappingURL=constants.js.map","import { NodePrivacyLevel, PRIVACY_ATTR_NAME, PRIVACY_ATTR_VALUE_ALLOW, PRIVACY_ATTR_VALUE_MASK, PRIVACY_ATTR_VALUE_MASK_USER_INPUT, PRIVACY_ATTR_VALUE_HIDDEN, PRIVACY_CLASS_ALLOW, PRIVACY_CLASS_MASK, PRIVACY_CLASS_MASK_USER_INPUT, PRIVACY_CLASS_HIDDEN, FORM_PRIVATE_TAG_NAMES, CENSORED_STRING_MARK, } from '../../constants';\nexport var MAX_ATTRIBUTE_VALUE_CHAR_LENGTH = 100000;\nvar TEXT_MASKING_CHAR = 'x';\n/**\n * Get node privacy level by iterating over its ancestors. When the direct parent privacy level is\n * know, it is best to use something like:\n *\n * derivePrivacyLevelGivenParent(getNodeSelfPrivacyLevel(node), parentNodePrivacyLevel)\n */\nexport function getNodePrivacyLevel(node, defaultPrivacyLevel) {\n    var parentNodePrivacyLevel = node.parentNode\n        ? getNodePrivacyLevel(node.parentNode, defaultPrivacyLevel)\n        : defaultPrivacyLevel;\n    var selfNodePrivacyLevel = getNodeSelfPrivacyLevel(node);\n    return reducePrivacyLevel(selfNodePrivacyLevel, parentNodePrivacyLevel);\n}\n/**\n * Reduces the next privacy level based on self + parent privacy levels\n */\nexport function reducePrivacyLevel(childPrivacyLevel, parentNodePrivacyLevel) {\n    switch (parentNodePrivacyLevel) {\n        // These values cannot be overridden\n        case NodePrivacyLevel.HIDDEN:\n        case NodePrivacyLevel.IGNORE:\n            return parentNodePrivacyLevel;\n    }\n    switch (childPrivacyLevel) {\n        case NodePrivacyLevel.ALLOW:\n        case NodePrivacyLevel.MASK:\n        case NodePrivacyLevel.MASK_USER_INPUT:\n        case NodePrivacyLevel.HIDDEN:\n        case NodePrivacyLevel.IGNORE:\n            return childPrivacyLevel;\n        default:\n            return parentNodePrivacyLevel;\n    }\n}\n/**\n * Determines the node's own privacy level without checking for ancestors.\n */\nexport function getNodeSelfPrivacyLevel(node) {\n    // Only Element types can have a privacy level set\n    if (!isElement(node)) {\n        return;\n    }\n    var privAttr = node.getAttribute(PRIVACY_ATTR_NAME);\n    // Overrules for replay purpose\n    if (node.tagName === 'BASE') {\n        return NodePrivacyLevel.ALLOW;\n    }\n    // Overrules to enforce end-user protection\n    if (node.tagName === 'INPUT') {\n        var inputElement = node;\n        if (inputElement.type === 'password' || inputElement.type === 'email' || inputElement.type === 'tel') {\n            return NodePrivacyLevel.MASK;\n        }\n        if (inputElement.type === 'hidden') {\n            return NodePrivacyLevel.MASK;\n        }\n        var autocomplete = inputElement.getAttribute('autocomplete');\n        // Handle input[autocomplete=cc-number/cc-csc/cc-exp/cc-exp-month/cc-exp-year]\n        if (autocomplete && autocomplete.indexOf('cc-') === 0) {\n            return NodePrivacyLevel.MASK;\n        }\n    }\n    // Check HTML privacy attributes and classes\n    if (privAttr === PRIVACY_ATTR_VALUE_HIDDEN || node.classList.contains(PRIVACY_CLASS_HIDDEN)) {\n        return NodePrivacyLevel.HIDDEN;\n    }\n    if (privAttr === PRIVACY_ATTR_VALUE_MASK || node.classList.contains(PRIVACY_CLASS_MASK)) {\n        return NodePrivacyLevel.MASK;\n    }\n    if (privAttr === PRIVACY_ATTR_VALUE_MASK_USER_INPUT || node.classList.contains(PRIVACY_CLASS_MASK_USER_INPUT)) {\n        return NodePrivacyLevel.MASK_USER_INPUT;\n    }\n    if (privAttr === PRIVACY_ATTR_VALUE_ALLOW || node.classList.contains(PRIVACY_CLASS_ALLOW)) {\n        return NodePrivacyLevel.ALLOW;\n    }\n    if (shouldIgnoreElement(node)) {\n        return NodePrivacyLevel.IGNORE;\n    }\n}\n/**\n * Helper aiming to unify `mask` and `mask-user-input` privacy levels:\n *\n * In the `mask` case, it is trivial: we should mask the element.\n *\n * In the `mask-user-input` case, we should mask the element only if it is a \"form\" element or the\n * direct parent is a form element for text nodes).\n *\n * Other `shouldMaskNode` cases are edge cases that should not matter too much (ex: should we mask a\n * node if it is ignored or hidden? it doesn't matter since it won't be serialized).\n */\nexport function shouldMaskNode(node, privacyLevel) {\n    switch (privacyLevel) {\n        case NodePrivacyLevel.MASK:\n        case NodePrivacyLevel.HIDDEN:\n        case NodePrivacyLevel.IGNORE:\n            return true;\n        case NodePrivacyLevel.MASK_USER_INPUT:\n            return isTextNode(node) ? isFormElement(node.parentNode) : isFormElement(node);\n        default:\n            return false;\n    }\n}\nfunction isElement(node) {\n    return node.nodeType === node.ELEMENT_NODE;\n}\nfunction isTextNode(node) {\n    return node.nodeType === node.TEXT_NODE;\n}\nfunction isFormElement(node) {\n    if (!node || node.nodeType !== node.ELEMENT_NODE) {\n        return false;\n    }\n    var element = node;\n    if (element.tagName === 'INPUT') {\n        switch (element.type) {\n            case 'button':\n            case 'color':\n            case 'reset':\n            case 'submit':\n                return false;\n        }\n    }\n    return !!FORM_PRIVATE_TAG_NAMES[element.tagName];\n}\n/**\n * Text censoring non-destructively maintains whitespace characters in order to preserve text shape\n * during replay.\n */\nexport var censorText = function (text) { return text.replace(/\\S/g, TEXT_MASKING_CHAR); };\nexport function getTextContent(textNode, ignoreWhiteSpace, parentNodePrivacyLevel) {\n    var _a;\n    // The parent node may not be a html element which has a tagName attribute.\n    // So just let it be undefined which is ok in this use case.\n    var parentTagName = (_a = textNode.parentElement) === null || _a === void 0 ? void 0 : _a.tagName;\n    var textContent = textNode.textContent || '';\n    if (ignoreWhiteSpace && !textContent.trim()) {\n        return;\n    }\n    var nodePrivacyLevel = parentNodePrivacyLevel;\n    var isStyle = parentTagName === 'STYLE' ? true : undefined;\n    var isScript = parentTagName === 'SCRIPT';\n    if (isScript) {\n        // For perf reasons, we don't record script (heuristic)\n        textContent = CENSORED_STRING_MARK;\n    }\n    else if (nodePrivacyLevel === NodePrivacyLevel.HIDDEN) {\n        // Should never occur, but just in case, we set to CENSORED_MARK.\n        textContent = CENSORED_STRING_MARK;\n    }\n    else if (shouldMaskNode(textNode, nodePrivacyLevel) &&\n        // Style tags are `overruled` (Use `hide` to enforce privacy)\n        !isStyle) {\n        if (\n        // Scrambling the child list breaks text nodes for DATALIST/SELECT/OPTGROUP\n        parentTagName === 'DATALIST' ||\n            parentTagName === 'SELECT' ||\n            parentTagName === 'OPTGROUP') {\n            if (!textContent.trim()) {\n                return;\n            }\n        }\n        else if (parentTagName === 'OPTION') {\n            // <Option> has low entropy in charset + text length, so use `CENSORED_STRING_MARK` when masked\n            textContent = CENSORED_STRING_MARK;\n        }\n        else {\n            textContent = censorText(textContent);\n        }\n    }\n    return textContent;\n}\n/**\n * TODO: Preserve CSS element order, and record the presence of the tag, just don't render\n * We don't need this logic on the recorder side.\n * For security related meta's, customer can mask themmanually given they\n * are easy to identify in the HEAD tag.\n */\nexport function shouldIgnoreElement(element) {\n    if (element.nodeName === 'SCRIPT') {\n        return true;\n    }\n    if (element.nodeName === 'LINK') {\n        var relAttribute = getLowerCaseAttribute('rel');\n        return (\n        // Scripts\n        (relAttribute === 'preload' && getLowerCaseAttribute('as') === 'script') ||\n            // Favicons\n            relAttribute === 'shortcut icon' ||\n            relAttribute === 'icon');\n    }\n    if (element.nodeName === 'META') {\n        var nameAttribute = getLowerCaseAttribute('name');\n        var relAttribute = getLowerCaseAttribute('rel');\n        var propertyAttribute = getLowerCaseAttribute('property');\n        return (\n        // Favicons\n        /^msapplication-tile(image|color)$/.test(nameAttribute) ||\n            nameAttribute === 'application-name' ||\n            relAttribute === 'icon' ||\n            relAttribute === 'apple-touch-icon' ||\n            relAttribute === 'shortcut icon' ||\n            // Description\n            nameAttribute === 'keywords' ||\n            nameAttribute === 'description' ||\n            // Social\n            /^(og|twitter|fb):/.test(propertyAttribute) ||\n            /^(og|twitter):/.test(nameAttribute) ||\n            nameAttribute === 'pinterest' ||\n            // Robots\n            nameAttribute === 'robots' ||\n            nameAttribute === 'googlebot' ||\n            nameAttribute === 'bingbot' ||\n            // Http headers. Ex: X-UA-Compatible, Content-Type, Content-Language, cache-control,\n            // X-Translated-By\n            element.hasAttribute('http-equiv') ||\n            // Authorship\n            nameAttribute === 'author' ||\n            nameAttribute === 'generator' ||\n            nameAttribute === 'framework' ||\n            nameAttribute === 'publisher' ||\n            nameAttribute === 'progid' ||\n            /^article:/.test(propertyAttribute) ||\n            /^product:/.test(propertyAttribute) ||\n            // Verification\n            nameAttribute === 'google-site-verification' ||\n            nameAttribute === 'yandex-verification' ||\n            nameAttribute === 'csrf-token' ||\n            nameAttribute === 'p:domain_verify' ||\n            nameAttribute === 'verify-v1' ||\n            nameAttribute === 'verification' ||\n            nameAttribute === 'shopify-checkout-api-token');\n    }\n    function getLowerCaseAttribute(name) {\n        return (element.getAttribute(name) || '').toLowerCase();\n    }\n    return false;\n}\n//# sourceMappingURL=privacy.js.map","import { buildUrl } from '@datadog/browser-core';\nimport { CENSORED_STRING_MARK } from '../../constants';\nimport { shouldMaskNode } from './privacy';\nvar serializedNodeIds = new WeakMap();\nexport function hasSerializedNode(node) {\n    return serializedNodeIds.has(node);\n}\nexport function nodeAndAncestorsHaveSerializedNode(node) {\n    var current = node;\n    while (current) {\n        if (!hasSerializedNode(current)) {\n            return false;\n        }\n        current = current.parentNode;\n    }\n    return true;\n}\nexport function getSerializedNodeId(node) {\n    return serializedNodeIds.get(node);\n}\nexport function setSerializedNodeId(node, serializeNodeId) {\n    serializedNodeIds.set(node, serializeNodeId);\n}\n/**\n * Get the element \"value\" to be serialized as an attribute or an input update record. It respects\n * the input privacy mode of the element.\n * PERFROMANCE OPTIMIZATION: Assumes that privacy level `HIDDEN` is never encountered because of earlier checks.\n */\nexport function getElementInputValue(element, nodePrivacyLevel) {\n    /*\n     BROWSER SPEC NOTE: <input>, <select>\n     For some <input> elements, the `value` is an exceptional property/attribute that has the\n     value synced between el.value and el.getAttribute()\n     input[type=button,checkbox,hidden,image,radio,reset,submit]\n     */\n    var tagName = element.tagName;\n    var value = element.value;\n    if (shouldMaskNode(element, nodePrivacyLevel)) {\n        var type = element.type;\n        if (tagName === 'INPUT' && (type === 'button' || type === 'submit' || type === 'reset')) {\n            // Overrule `MASK` privacy level for button-like element values, as they are used during replay\n            // to display their label. They can still be hidden via the \"hidden\" privacy attribute or class name.\n            return value;\n        }\n        else if (!value || tagName === 'OPTION') {\n            // <Option> value provides no benefit\n            return;\n        }\n        return CENSORED_STRING_MARK;\n    }\n    if (tagName === 'OPTION' || tagName === 'SELECT') {\n        return element.value;\n    }\n    if (tagName !== 'INPUT' && tagName !== 'TEXTAREA') {\n        return;\n    }\n    return value;\n}\nexport var URL_IN_CSS_REF = /url\\((?:(')([^']*)'|(\")([^\"]*)\"|([^)]*))\\)/gm;\nexport var ABSOLUTE_URL = /^[A-Za-z]+:|^\\/\\//;\nexport var DATA_URI = /^data:.*,/i;\nexport function switchToAbsoluteUrl(cssText, cssHref) {\n    return cssText.replace(URL_IN_CSS_REF, function (matchingSubstring, singleQuote, urlWrappedInSingleQuotes, doubleQuote, urlWrappedInDoubleQuotes, urlNotWrappedInQuotes) {\n        var url = urlWrappedInSingleQuotes || urlWrappedInDoubleQuotes || urlNotWrappedInQuotes;\n        if (!cssHref || !url || ABSOLUTE_URL.test(url) || DATA_URI.test(url)) {\n            return matchingSubstring;\n        }\n        var quote = singleQuote || doubleQuote || '';\n        return \"url(\".concat(quote).concat(makeUrlAbsolute(url, cssHref)).concat(quote, \")\");\n    });\n}\nexport function makeUrlAbsolute(url, baseUrl) {\n    try {\n        return buildUrl(url, baseUrl).href;\n    }\n    catch (_) {\n        return url;\n    }\n}\n//# sourceMappingURL=serializationUtils.js.map","import { assign, timeStampNow } from '@datadog/browser-core';\nimport { RecordType } from '../../types';\nexport function isTouchEvent(event) {\n    return Boolean(event.changedTouches);\n}\nexport function forEach(list, callback) {\n    Array.prototype.forEach.call(list, callback);\n}\nexport function assembleIncrementalSnapshot(source, data) {\n    return {\n        data: assign({\n            source: source,\n        }, data),\n        type: RecordType.IncrementalSnapshot,\n        timestamp: timeStampNow(),\n    };\n}\nexport function getPathToNestedCSSRule(rule) {\n    var path = [];\n    var currentRule = rule;\n    while (currentRule.parentRule) {\n        var rules_1 = Array.from(currentRule.parentRule.cssRules);\n        var index_1 = rules_1.indexOf(currentRule);\n        path.unshift(index_1);\n        currentRule = currentRule.parentRule;\n    }\n    // A rule may not be attached to a stylesheet\n    if (!currentRule.parentStyleSheet) {\n        return;\n    }\n    var rules = Array.from(currentRule.parentStyleSheet.cssRules);\n    var index = rules.indexOf(currentRule);\n    path.unshift(index);\n    return path;\n}\n//# sourceMappingURL=utils.js.map","import { assign, startsWith } from '@datadog/browser-core';\nimport { STABLE_ATTRIBUTES } from '@datadog/browser-rum-core';\nimport { NodePrivacyLevel, PRIVACY_ATTR_NAME, PRIVACY_ATTR_VALUE_HIDDEN, CENSORED_STRING_MARK, CENSORED_IMG_MARK, } from '../../constants';\nimport { NodeType } from '../../types';\nimport { getTextContent, shouldMaskNode, reducePrivacyLevel, getNodeSelfPrivacyLevel, MAX_ATTRIBUTE_VALUE_CHAR_LENGTH, } from './privacy';\nimport { getSerializedNodeId, setSerializedNodeId, getElementInputValue, switchToAbsoluteUrl, } from './serializationUtils';\nimport { forEach } from './utils';\nexport function serializeDocument(document, configuration, serializationContext) {\n    // We are sure that Documents are never ignored, so this function never returns null\n    return serializeNodeWithId(document, {\n        serializationContext: serializationContext,\n        parentNodePrivacyLevel: configuration.defaultPrivacyLevel,\n        configuration: configuration,\n    });\n}\nexport function serializeNodeWithId(node, options) {\n    var serializedNode = serializeNode(node, options);\n    if (!serializedNode) {\n        return null;\n    }\n    // Try to reuse the previous id\n    var id = getSerializedNodeId(node) || generateNextId();\n    var serializedNodeWithId = serializedNode;\n    serializedNodeWithId.id = id;\n    setSerializedNodeId(node, id);\n    if (options.serializedNodeIds) {\n        options.serializedNodeIds.add(id);\n    }\n    return serializedNodeWithId;\n}\nfunction serializeNode(node, options) {\n    switch (node.nodeType) {\n        case node.DOCUMENT_NODE:\n            return serializeDocumentNode(node, options);\n        case node.DOCUMENT_TYPE_NODE:\n            return serializeDocumentTypeNode(node);\n        case node.ELEMENT_NODE:\n            return serializeElementNode(node, options);\n        case node.TEXT_NODE:\n            return serializeTextNode(node, options);\n        case node.CDATA_SECTION_NODE:\n            return serializeCDataNode();\n    }\n}\nexport function serializeDocumentNode(document, options) {\n    return {\n        type: NodeType.Document,\n        childNodes: serializeChildNodes(document, options),\n    };\n}\nfunction serializeDocumentTypeNode(documentType) {\n    return {\n        type: NodeType.DocumentType,\n        name: documentType.name,\n        publicId: documentType.publicId,\n        systemId: documentType.systemId,\n    };\n}\n/**\n * Serializing Element nodes involves capturing:\n * 1. HTML ATTRIBUTES:\n * 2. JS STATE:\n * - scroll offsets\n * - Form fields (input value, checkbox checked, option selection, range)\n * - Canvas state,\n * - Media (video/audio) play mode + currentTime\n * - iframe contents\n * - webcomponents\n * 3. CUSTOM PROPERTIES:\n * - height+width for when `hidden` to cover the element\n * 4. EXCLUDED INTERACTION STATE:\n * - focus (possible, but not worth perf impact)\n * - hover (tracked only via mouse activity)\n * - fullscreen mode\n */\nexport function serializeElementNode(element, options) {\n    var _a;\n    var tagName = getValidTagName(element.tagName);\n    var isSVG = isSVGElement(element) || undefined;\n    // For performance reason, we don't use getNodePrivacyLevel directly: we leverage the\n    // parentNodePrivacyLevel option to avoid iterating over all parents\n    var nodePrivacyLevel = reducePrivacyLevel(getNodeSelfPrivacyLevel(element), options.parentNodePrivacyLevel);\n    if (nodePrivacyLevel === NodePrivacyLevel.HIDDEN) {\n        var _b = element.getBoundingClientRect(), width = _b.width, height = _b.height;\n        return {\n            type: NodeType.Element,\n            tagName: tagName,\n            attributes: (_a = {\n                    rr_width: \"\".concat(width, \"px\"),\n                    rr_height: \"\".concat(height, \"px\")\n                },\n                _a[PRIVACY_ATTR_NAME] = PRIVACY_ATTR_VALUE_HIDDEN,\n                _a),\n            childNodes: [],\n            isSVG: isSVG,\n        };\n    }\n    // Ignore Elements like Script and some Link, Metas\n    if (nodePrivacyLevel === NodePrivacyLevel.IGNORE) {\n        return;\n    }\n    var attributes = getAttributesForPrivacyLevel(element, nodePrivacyLevel, options);\n    var childNodes = [];\n    if (element.childNodes.length) {\n        // OBJECT POOLING OPTIMIZATION:\n        // We should not create a new object systematically as it could impact performances. Try to reuse\n        // the same object as much as possible, and clone it only if we need to.\n        var childNodesSerializationOptions = void 0;\n        if (options.parentNodePrivacyLevel === nodePrivacyLevel && options.ignoreWhiteSpace === (tagName === 'head')) {\n            childNodesSerializationOptions = options;\n        }\n        else {\n            childNodesSerializationOptions = assign({}, options, {\n                parentNodePrivacyLevel: nodePrivacyLevel,\n                ignoreWhiteSpace: tagName === 'head',\n            });\n        }\n        childNodes = serializeChildNodes(element, childNodesSerializationOptions);\n    }\n    return {\n        type: NodeType.Element,\n        tagName: tagName,\n        attributes: attributes,\n        childNodes: childNodes,\n        isSVG: isSVG,\n    };\n}\n/**\n * Text Nodes are dependant on Element nodes\n * Privacy levels are set on elements so we check the parentElement of a text node\n * for privacy level.\n */\nfunction serializeTextNode(textNode, options) {\n    var _a;\n    // The parent node may not be a html element which has a tagName attribute.\n    // So just let it be undefined which is ok in this use case.\n    var parentTagName = (_a = textNode.parentElement) === null || _a === void 0 ? void 0 : _a.tagName;\n    var textContent = getTextContent(textNode, options.ignoreWhiteSpace || false, options.parentNodePrivacyLevel);\n    if (!textContent) {\n        return;\n    }\n    return {\n        type: NodeType.Text,\n        textContent: textContent,\n        isStyle: parentTagName === 'STYLE' ? true : undefined,\n    };\n}\nfunction serializeCDataNode() {\n    return {\n        type: NodeType.CDATA,\n        textContent: '',\n    };\n}\nexport function serializeChildNodes(node, options) {\n    var result = [];\n    forEach(node.childNodes, function (childNode) {\n        var serializedChildNode = serializeNodeWithId(childNode, options);\n        if (serializedChildNode) {\n            result.push(serializedChildNode);\n        }\n    });\n    return result;\n}\nexport function serializeAttribute(element, nodePrivacyLevel, attributeName, configuration) {\n    if (nodePrivacyLevel === NodePrivacyLevel.HIDDEN) {\n        // dup condition for direct access case\n        return null;\n    }\n    var attributeValue = element.getAttribute(attributeName);\n    if (nodePrivacyLevel === NodePrivacyLevel.MASK &&\n        attributeName !== PRIVACY_ATTR_NAME &&\n        !STABLE_ATTRIBUTES.includes(attributeName) &&\n        attributeName !== configuration.actionNameAttribute) {\n        var tagName = element.tagName;\n        switch (attributeName) {\n            // Mask Attribute text content\n            case 'title':\n            case 'alt':\n            case 'placeholder':\n                return CENSORED_STRING_MARK;\n        }\n        // mask image URLs\n        if (tagName === 'IMG' || tagName === 'SOURCE') {\n            if (attributeName === 'src' || attributeName === 'srcset') {\n                return CENSORED_IMG_MARK;\n            }\n        }\n        // mask <a> URLs\n        if (tagName === 'A' && attributeName === 'href') {\n            return CENSORED_STRING_MARK;\n        }\n        // mask data-* attributes\n        if (attributeValue && startsWith(attributeName, 'data-')) {\n            // Exception: it's safe to reveal the `${PRIVACY_ATTR_NAME}` attr\n            return CENSORED_STRING_MARK;\n        }\n    }\n    if (!attributeValue || typeof attributeValue !== 'string') {\n        return attributeValue;\n    }\n    // Minimum Fix for customer.\n    if (attributeValue.length > MAX_ATTRIBUTE_VALUE_CHAR_LENGTH && attributeValue.slice(0, 5) === 'data:') {\n        return 'data:truncated';\n    }\n    return attributeValue;\n}\nvar _nextId = 1;\nfunction generateNextId() {\n    return _nextId++;\n}\nvar TAG_NAME_REGEX = /[^a-z1-6-_]/;\nfunction getValidTagName(tagName) {\n    var processedTagName = tagName.toLowerCase().trim();\n    if (TAG_NAME_REGEX.test(processedTagName)) {\n        // if the tag name is odd and we cannot extract\n        // anything from the string, then we return a\n        // generic div\n        return 'div';\n    }\n    return processedTagName;\n}\nfunction getCssRulesString(s) {\n    try {\n        var rules = s.rules || s.cssRules;\n        if (rules) {\n            var styleSheetCssText = Array.from(rules, getCssRuleString).join('');\n            return switchToAbsoluteUrl(styleSheetCssText, s.href);\n        }\n        return null;\n    }\n    catch (error) {\n        return null;\n    }\n}\nfunction getCssRuleString(rule) {\n    return isCSSImportRule(rule) ? getCssRulesString(rule.styleSheet) || '' : rule.cssText;\n}\nfunction isCSSImportRule(rule) {\n    return 'styleSheet' in rule;\n}\nfunction isSVGElement(el) {\n    return el.tagName === 'svg' || el instanceof SVGElement;\n}\nfunction getAttributesForPrivacyLevel(element, nodePrivacyLevel, options) {\n    var _a;\n    if (nodePrivacyLevel === NodePrivacyLevel.HIDDEN) {\n        return {};\n    }\n    var safeAttrs = {};\n    var tagName = getValidTagName(element.tagName);\n    var doc = element.ownerDocument;\n    for (var i = 0; i < element.attributes.length; i += 1) {\n        var attribute = element.attributes.item(i);\n        var attributeName = attribute.name;\n        var attributeValue = serializeAttribute(element, nodePrivacyLevel, attributeName, options.configuration);\n        if (attributeValue !== null) {\n            safeAttrs[attributeName] = attributeValue;\n        }\n    }\n    if (element.value &&\n        (tagName === 'textarea' || tagName === 'select' || tagName === 'option' || tagName === 'input')) {\n        var formValue = getElementInputValue(element, nodePrivacyLevel);\n        if (formValue !== undefined) {\n            safeAttrs.value = formValue;\n        }\n    }\n    /**\n     * <Option> can be selected, which occurs if its `value` matches ancestor `<Select>.value`\n     */\n    if (tagName === 'option' && nodePrivacyLevel === NodePrivacyLevel.ALLOW) {\n        // For privacy=`MASK`, all the values would be the same, so skip.\n        var optionElement = element;\n        if (optionElement.selected) {\n            safeAttrs.selected = optionElement.selected;\n        }\n    }\n    // remote css\n    if (tagName === 'link') {\n        var stylesheet = Array.from(doc.styleSheets).find(function (s) { return s.href === element.href; });\n        var cssText = getCssRulesString(stylesheet);\n        if (cssText && stylesheet) {\n            delete safeAttrs.rel;\n            delete safeAttrs.href;\n            safeAttrs._cssText = cssText;\n        }\n    }\n    // dynamic stylesheet\n    if (tagName === 'style' &&\n        element.sheet &&\n        // TODO: Currently we only try to get dynamic stylesheet when it is an empty style element\n        !(element.innerText || element.textContent || '').trim().length) {\n        var cssText = getCssRulesString(element.sheet);\n        if (cssText) {\n            safeAttrs._cssText = cssText;\n        }\n    }\n    /**\n     * Forms: input[type=checkbox,radio]\n     * The `checked` property for <input> is a little bit special:\n     * 1. el.checked is a setter that returns if truthy.\n     * 2. getAttribute returns the string value\n     * getAttribute('checked') does not sync with `Element.checked`, so use JS property\n     * NOTE: `checked` property exists on `HTMLInputElement`. For serializer assumptions, we check for type=radio|check.\n     */\n    var inputElement = element;\n    if (tagName === 'input' && (inputElement.type === 'radio' || inputElement.type === 'checkbox')) {\n        if (nodePrivacyLevel === NodePrivacyLevel.ALLOW) {\n            safeAttrs.checked = !!inputElement.checked;\n        }\n        else if (shouldMaskNode(inputElement, nodePrivacyLevel)) {\n            safeAttrs.checked = CENSORED_STRING_MARK;\n        }\n    }\n    /**\n     * Serialize the media playback state\n     */\n    if (tagName === 'audio' || tagName === 'video') {\n        var mediaElement = element;\n        safeAttrs.rr_mediaState = mediaElement.paused ? 'paused' : 'played';\n    }\n    /**\n     * Serialize the scroll state for each element only for full snapshot\n     */\n    var scrollTop;\n    var scrollLeft;\n    var serializationContext = options.serializationContext;\n    switch (serializationContext.status) {\n        case 0 /* INITIAL_FULL_SNAPSHOT */:\n            scrollTop = Math.round(element.scrollTop);\n            scrollLeft = Math.round(element.scrollLeft);\n            if (scrollTop || scrollLeft) {\n                serializationContext.elementsScrollPositions.set(element, { scrollTop: scrollTop, scrollLeft: scrollLeft });\n            }\n            break;\n        case 1 /* SUBSEQUENT_FULL_SNAPSHOT */:\n            if (serializationContext.elementsScrollPositions.has(element)) {\n                ;\n                (_a = serializationContext.elementsScrollPositions.get(element), scrollTop = _a.scrollTop, scrollLeft = _a.scrollLeft);\n            }\n            break;\n    }\n    if (scrollLeft) {\n        safeAttrs.rr_scrollLeft = scrollLeft;\n    }\n    if (scrollTop) {\n        safeAttrs.rr_scrollTop = scrollTop;\n    }\n    return safeAttrs;\n}\n//# sourceMappingURL=serialize.js.map","import { callMonitored, monitor } from './monitor';\nimport { noop } from './utils';\nexport function instrumentMethod(object, method, instrumentationFactory) {\n    var original = object[method];\n    var instrumentation = instrumentationFactory(original);\n    var instrumentationWrapper = function () {\n        if (typeof instrumentation !== 'function') {\n            return undefined;\n        }\n        // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n        return instrumentation.apply(this, arguments);\n    };\n    object[method] = instrumentationWrapper;\n    return {\n        stop: function () {\n            if (object[method] === instrumentationWrapper) {\n                object[method] = original;\n            }\n            else {\n                instrumentation = original;\n            }\n        },\n    };\n}\nexport function instrumentMethodAndCallOriginal(object, method, _a) {\n    var before = _a.before, after = _a.after;\n    return instrumentMethod(object, method, function (original) {\n        return function () {\n            var args = arguments;\n            var result;\n            if (before) {\n                callMonitored(before, this, args);\n            }\n            if (typeof original === 'function') {\n                // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n                result = original.apply(this, args);\n            }\n            if (after) {\n                callMonitored(after, this, args);\n            }\n            // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n            return result;\n        };\n    });\n}\nexport function instrumentSetter(object, property, after) {\n    var originalDescriptor = Object.getOwnPropertyDescriptor(object, property);\n    if (!originalDescriptor || !originalDescriptor.set || !originalDescriptor.configurable) {\n        return { stop: noop };\n    }\n    var instrumentation = function (thisObject, value) {\n        // put hooked setter into event loop to avoid of set latency\n        setTimeout(monitor(function () {\n            after(thisObject, value);\n        }), 0);\n    };\n    var instrumentationWrapper = function (value) {\n        originalDescriptor.set.call(this, value);\n        instrumentation(this, value);\n    };\n    Object.defineProperty(object, property, {\n        set: instrumentationWrapper,\n    });\n    return {\n        stop: function () {\n            var _a;\n            if (((_a = Object.getOwnPropertyDescriptor(object, property)) === null || _a === void 0 ? void 0 : _a.set) === instrumentationWrapper) {\n                Object.defineProperty(object, property, originalDescriptor);\n            }\n            else {\n                instrumentation = noop;\n            }\n        },\n    };\n}\n//# sourceMappingURL=instrumentMethod.js.map","import { noop, requestIdleCallback } from '@datadog/browser-core';\n/**\n * Maximum duration to wait before processing mutations. If the browser is idle, mutations will be\n * processed more quickly. If the browser is busy executing small tasks (ex: rendering frames), the\n * mutations will wait MUTATION_PROCESS_MAX_DELAY milliseconds before being processed. If the\n * browser is busy executing a longer task, mutations will be processed after this task.\n */\nvar MUTATION_PROCESS_MAX_DELAY = 100;\nexport function createMutationBatch(processMutationBatch) {\n    var cancelScheduledFlush = noop;\n    var pendingMutations = [];\n    function flush() {\n        cancelScheduledFlush();\n        processMutationBatch(pendingMutations);\n        pendingMutations = [];\n    }\n    return {\n        addMutations: function (mutations) {\n            if (pendingMutations.length === 0) {\n                cancelScheduledFlush = requestIdleCallback(flush, { timeout: MUTATION_PROCESS_MAX_DELAY });\n            }\n            pendingMutations.push.apply(pendingMutations, mutations);\n        },\n        flush: flush,\n        stop: function () {\n            cancelScheduledFlush();\n        },\n    };\n}\n//# sourceMappingURL=mutationBatch.js.map","import { monitor, noop } from '@datadog/browser-core';\nimport { getMutationObserverConstructor } from '@datadog/browser-rum-core';\nimport { NodePrivacyLevel } from '../../constants';\nimport { getNodePrivacyLevel, getTextContent } from './privacy';\nimport { getElementInputValue, getSerializedNodeId, hasSerializedNode, nodeAndAncestorsHaveSerializedNode, } from './serializationUtils';\nimport { serializeNodeWithId, serializeAttribute } from './serialize';\nimport { forEach } from './utils';\nimport { createMutationBatch } from './mutationBatch';\n/**\n * Buffers and aggregate mutations generated by a MutationObserver into MutationPayload\n */\nexport function startMutationObserver(controller, mutationCallback, configuration) {\n    var MutationObserver = getMutationObserverConstructor();\n    if (!MutationObserver) {\n        return { stop: noop };\n    }\n    var mutationBatch = createMutationBatch(function (mutations) {\n        processMutations(mutations.concat(observer.takeRecords()), mutationCallback, configuration);\n    });\n    var observer = new MutationObserver(monitor(mutationBatch.addMutations));\n    observer.observe(document, {\n        attributeOldValue: true,\n        attributes: true,\n        characterData: true,\n        characterDataOldValue: true,\n        childList: true,\n        subtree: true,\n    });\n    controller.onFlush(mutationBatch.flush);\n    return {\n        stop: function () {\n            observer.disconnect();\n            mutationBatch.stop();\n        },\n    };\n}\n/**\n * Controls how mutations are processed, allowing to flush pending mutations.\n */\nvar MutationController = /** @class */ (function () {\n    function MutationController() {\n    }\n    MutationController.prototype.flush = function () {\n        var _a;\n        (_a = this.flushListener) === null || _a === void 0 ? void 0 : _a.call(this);\n    };\n    MutationController.prototype.onFlush = function (listener) {\n        this.flushListener = listener;\n    };\n    return MutationController;\n}());\nexport { MutationController };\nfunction processMutations(mutations, mutationCallback, configuration) {\n    // Discard any mutation with a 'target' node that:\n    // * isn't injected in the current document or isn't known/serialized yet: those nodes are likely\n    // part of a mutation occurring in a parent Node\n    // * should be hidden or ignored\n    var filteredMutations = mutations.filter(function (mutation) {\n        return document.contains(mutation.target) &&\n            nodeAndAncestorsHaveSerializedNode(mutation.target) &&\n            getNodePrivacyLevel(mutation.target, configuration.defaultPrivacyLevel) !== NodePrivacyLevel.HIDDEN;\n    });\n    var _a = processChildListMutations(filteredMutations.filter(function (mutation) { return mutation.type === 'childList'; }), configuration), adds = _a.adds, removes = _a.removes, hasBeenSerialized = _a.hasBeenSerialized;\n    var texts = processCharacterDataMutations(filteredMutations.filter(function (mutation) {\n        return mutation.type === 'characterData' && !hasBeenSerialized(mutation.target);\n    }), configuration);\n    var attributes = processAttributesMutations(filteredMutations.filter(function (mutation) {\n        return mutation.type === 'attributes' && !hasBeenSerialized(mutation.target);\n    }), configuration);\n    if (!texts.length && !attributes.length && !removes.length && !adds.length) {\n        return;\n    }\n    mutationCallback({\n        adds: adds,\n        removes: removes,\n        texts: texts,\n        attributes: attributes,\n    });\n}\nfunction processChildListMutations(mutations, configuration) {\n    // First, we iterate over mutations to collect:\n    //\n    // * nodes that have been added in the document and not removed by a subsequent mutation\n    // * nodes that have been removed from the document but were not added in a previous mutation\n    //\n    // For this second category, we also collect their previous parent (mutation.target) because we'll\n    // need it to emit a 'remove' mutation.\n    //\n    // Those two categories may overlap: if a node moved from a position to another, it is reported as\n    // two mutation records, one with a \"removedNodes\" and the other with \"addedNodes\". In this case,\n    // the node will be in both sets.\n    var addedAndMovedNodes = new Set();\n    var removedNodes = new Map();\n    var _loop_1 = function (mutation) {\n        forEach(mutation.addedNodes, function (node) {\n            addedAndMovedNodes.add(node);\n        });\n        forEach(mutation.removedNodes, function (node) {\n            if (!addedAndMovedNodes.has(node)) {\n                removedNodes.set(node, mutation.target);\n            }\n            addedAndMovedNodes.delete(node);\n        });\n    };\n    for (var _i = 0, mutations_1 = mutations; _i < mutations_1.length; _i++) {\n        var mutation = mutations_1[_i];\n        _loop_1(mutation);\n    }\n    // Then, we sort nodes that are still in the document by topological order, for two reasons:\n    //\n    // * We will serialize each added nodes with their descendants. We don't want to serialize a node\n    // twice, so we need to iterate over the parent nodes first and skip any node that is contained in\n    // a precedent node.\n    //\n    // * To emit \"add\" mutations, we need references to the parent and potential next sibling of each\n    // added node. So we need to iterate over the parent nodes first, and when multiple nodes are\n    // siblings, we want to iterate from last to first. This will ensure that any \"next\" node is\n    // already serialized and have an id.\n    var sortedAddedAndMovedNodes = Array.from(addedAndMovedNodes);\n    sortAddedAndMovedNodes(sortedAddedAndMovedNodes);\n    // Then, we iterate over our sorted node sets to emit mutations. We collect the newly serialized\n    // node ids in a set to be able to skip subsequent related mutations.\n    var serializedNodeIds = new Set();\n    var addedNodeMutations = [];\n    for (var _a = 0, sortedAddedAndMovedNodes_1 = sortedAddedAndMovedNodes; _a < sortedAddedAndMovedNodes_1.length; _a++) {\n        var node = sortedAddedAndMovedNodes_1[_a];\n        if (hasBeenSerialized(node)) {\n            continue;\n        }\n        var parentNodePrivacyLevel = getNodePrivacyLevel(node.parentNode, configuration.defaultPrivacyLevel);\n        if (parentNodePrivacyLevel === NodePrivacyLevel.HIDDEN || parentNodePrivacyLevel === NodePrivacyLevel.IGNORE) {\n            continue;\n        }\n        var serializedNode = serializeNodeWithId(node, {\n            serializedNodeIds: serializedNodeIds,\n            parentNodePrivacyLevel: parentNodePrivacyLevel,\n            serializationContext: { status: 2 /* MUTATION */ },\n            configuration: configuration,\n        });\n        if (!serializedNode) {\n            continue;\n        }\n        addedNodeMutations.push({\n            nextId: getNextSibling(node),\n            parentId: getSerializedNodeId(node.parentNode),\n            node: serializedNode,\n        });\n    }\n    // Finally, we emit remove mutations.\n    var removedNodeMutations = [];\n    removedNodes.forEach(function (parent, node) {\n        if (hasSerializedNode(node)) {\n            removedNodeMutations.push({\n                parentId: getSerializedNodeId(parent),\n                id: getSerializedNodeId(node),\n            });\n        }\n    });\n    return { adds: addedNodeMutations, removes: removedNodeMutations, hasBeenSerialized: hasBeenSerialized };\n    function hasBeenSerialized(node) {\n        return hasSerializedNode(node) && serializedNodeIds.has(getSerializedNodeId(node));\n    }\n    function getNextSibling(node) {\n        var nextSibling = node.nextSibling;\n        while (nextSibling) {\n            if (hasSerializedNode(nextSibling)) {\n                return getSerializedNodeId(nextSibling);\n            }\n            nextSibling = nextSibling.nextSibling;\n        }\n        return null;\n    }\n}\nfunction processCharacterDataMutations(mutations, configuration) {\n    var _a;\n    var textMutations = [];\n    // Deduplicate mutations based on their target node\n    var handledNodes = new Set();\n    var filteredMutations = mutations.filter(function (mutation) {\n        if (handledNodes.has(mutation.target)) {\n            return false;\n        }\n        handledNodes.add(mutation.target);\n        return true;\n    });\n    // Emit mutations\n    for (var _i = 0, filteredMutations_1 = filteredMutations; _i < filteredMutations_1.length; _i++) {\n        var mutation = filteredMutations_1[_i];\n        var value = mutation.target.textContent;\n        if (value === mutation.oldValue) {\n            continue;\n        }\n        var parentNodePrivacyLevel = getNodePrivacyLevel(mutation.target.parentNode, configuration.defaultPrivacyLevel);\n        if (parentNodePrivacyLevel === NodePrivacyLevel.HIDDEN || parentNodePrivacyLevel === NodePrivacyLevel.IGNORE) {\n            continue;\n        }\n        textMutations.push({\n            id: getSerializedNodeId(mutation.target),\n            // TODO: pass a valid \"ignoreWhiteSpace\" argument\n            value: (_a = getTextContent(mutation.target, false, parentNodePrivacyLevel)) !== null && _a !== void 0 ? _a : null,\n        });\n    }\n    return textMutations;\n}\nfunction processAttributesMutations(mutations, configuration) {\n    var attributeMutations = [];\n    // Deduplicate mutations based on their target node and changed attribute\n    var handledElements = new Map();\n    var filteredMutations = mutations.filter(function (mutation) {\n        var handledAttributes = handledElements.get(mutation.target);\n        if (handledAttributes === null || handledAttributes === void 0 ? void 0 : handledAttributes.has(mutation.attributeName)) {\n            return false;\n        }\n        if (!handledAttributes) {\n            handledElements.set(mutation.target, new Set([mutation.attributeName]));\n        }\n        else {\n            handledAttributes.add(mutation.attributeName);\n        }\n        return true;\n    });\n    // Emit mutations\n    var emittedMutations = new Map();\n    for (var _i = 0, filteredMutations_2 = filteredMutations; _i < filteredMutations_2.length; _i++) {\n        var mutation = filteredMutations_2[_i];\n        var uncensoredValue = mutation.target.getAttribute(mutation.attributeName);\n        if (uncensoredValue === mutation.oldValue) {\n            continue;\n        }\n        var privacyLevel = getNodePrivacyLevel(mutation.target, configuration.defaultPrivacyLevel);\n        var attributeValue = serializeAttribute(mutation.target, privacyLevel, mutation.attributeName, configuration);\n        var transformedValue = void 0;\n        if (mutation.attributeName === 'value') {\n            var inputValue = getElementInputValue(mutation.target, privacyLevel);\n            if (inputValue === undefined) {\n                continue;\n            }\n            transformedValue = inputValue;\n        }\n        else if (typeof attributeValue === 'string') {\n            transformedValue = attributeValue;\n        }\n        else {\n            transformedValue = null;\n        }\n        var emittedMutation = emittedMutations.get(mutation.target);\n        if (!emittedMutation) {\n            emittedMutation = {\n                id: getSerializedNodeId(mutation.target),\n                attributes: {},\n            };\n            attributeMutations.push(emittedMutation);\n            emittedMutations.set(mutation.target, emittedMutation);\n        }\n        emittedMutation.attributes[mutation.attributeName] = transformedValue;\n    }\n    return attributeMutations;\n}\nexport function sortAddedAndMovedNodes(nodes) {\n    nodes.sort(function (a, b) {\n        var position = a.compareDocumentPosition(b);\n        /* eslint-disable no-bitwise */\n        if (position & Node.DOCUMENT_POSITION_CONTAINED_BY) {\n            return -1;\n        }\n        else if (position & Node.DOCUMENT_POSITION_CONTAINS) {\n            return 1;\n        }\n        else if (position & Node.DOCUMENT_POSITION_FOLLOWING) {\n            return 1;\n        }\n        else if (position & Node.DOCUMENT_POSITION_PRECEDING) {\n            return -1;\n        }\n        /* eslint-enable no-bitwise */\n        return 0;\n    });\n}\n//# sourceMappingURL=mutationObserver.js.map","/**\n * Browsers have not standardized various dimension properties. Mobile devices typically report\n * dimensions in reference to the visual viewport, while desktop uses the layout viewport. For example,\n * Mobile Chrome will change innerWidth when a pinch zoom takes place, while Chrome Desktop (mac) will not.\n *\n * With the new Viewport API, we now calculate and normalize dimension properties to the layout viewport.\n * If the VisualViewport API is not supported by a browser, it isn't reasonably possible to detect or normalize\n * which viewport is being measured. Therefore these exported functions will fallback to assuming that the layout\n * viewport is being measured by the browser\n */\n// Scrollbar widths vary across properties on different devices and browsers\nvar TOLERANCE = 25;\n/**\n * Use the Visual Viewport API's properties to measure scrollX/Y in reference to the layout viewport\n * in order to determine if window.scrollX/Y is measuring the layout or visual viewport.\n * This finding corresponds to which viewport mouseEvent.clientX/Y and window.innerWidth/Height measures.\n */\nfunction isVisualViewportFactoredIn() {\n    var visual = window.visualViewport;\n    return (Math.abs(visual.pageTop - visual.offsetTop - window.scrollY) > TOLERANCE ||\n        Math.abs(visual.pageLeft - visual.offsetLeft - window.scrollX) > TOLERANCE);\n}\nexport var convertMouseEventToLayoutCoordinates = function (clientX, clientY) {\n    var visual = window.visualViewport;\n    var normalised = {\n        layoutViewportX: clientX,\n        layoutViewportY: clientY,\n        visualViewportX: clientX,\n        visualViewportY: clientY,\n    };\n    if (!visual) {\n        // On old browsers, we cannot normalise, so fallback to clientX/Y\n        return normalised;\n    }\n    else if (isVisualViewportFactoredIn()) {\n        // Typically Mobile Devices\n        normalised.layoutViewportX = Math.round(clientX + visual.offsetLeft);\n        normalised.layoutViewportY = Math.round(clientY + visual.offsetTop);\n    }\n    else {\n        // Typically Desktop Devices\n        normalised.visualViewportX = Math.round(clientX - visual.offsetLeft);\n        normalised.visualViewportY = Math.round(clientY - visual.offsetTop);\n    }\n    return normalised;\n};\nexport var getVisualViewport = function () {\n    var visual = window.visualViewport;\n    return {\n        scale: visual.scale,\n        offsetLeft: visual.offsetLeft,\n        offsetTop: visual.offsetTop,\n        pageLeft: visual.pageLeft,\n        pageTop: visual.pageTop,\n        height: visual.height,\n        width: visual.width,\n    };\n};\nexport function getScrollX() {\n    var scrollX;\n    var visual = window.visualViewport;\n    if (visual) {\n        scrollX = visual.pageLeft - visual.offsetLeft;\n    }\n    else if (window.scrollX !== undefined) {\n        scrollX = window.scrollX;\n    }\n    else {\n        scrollX = window.pageXOffset || 0;\n    }\n    return Math.round(scrollX);\n}\nexport function getScrollY() {\n    var scrollY;\n    var visual = window.visualViewport;\n    if (visual) {\n        scrollY = visual.pageTop - visual.offsetTop;\n    }\n    else if (window.scrollY !== undefined) {\n        scrollY = window.scrollY;\n    }\n    else {\n        scrollY = window.pageYOffset || 0;\n    }\n    return Math.round(scrollY);\n}\n//# sourceMappingURL=viewports.js.map","var _a;\nimport { instrumentSetter, instrumentMethodAndCallOriginal, assign, monitor, throttle, addEventListeners, addEventListener, noop, } from '@datadog/browser-core';\nimport { initViewportObservable } from '@datadog/browser-rum-core';\nimport { NodePrivacyLevel } from '../../constants';\nimport { RecordType, IncrementalSource, MediaInteractionType, MouseInteractionType } from '../../types';\nimport { getNodePrivacyLevel, shouldMaskNode } from './privacy';\nimport { getElementInputValue, getSerializedNodeId, hasSerializedNode } from './serializationUtils';\nimport { assembleIncrementalSnapshot, forEach, getPathToNestedCSSRule, isTouchEvent } from './utils';\nimport { startMutationObserver } from './mutationObserver';\nimport { getVisualViewport, getScrollX, getScrollY, convertMouseEventToLayoutCoordinates } from './viewports';\nvar MOUSE_MOVE_OBSERVER_THRESHOLD = 50;\nvar SCROLL_OBSERVER_THRESHOLD = 100;\nvar VISUAL_VIEWPORT_OBSERVER_THRESHOLD = 200;\nvar recordIds = new WeakMap();\nvar nextId = 1;\nfunction getRecordIdForEvent(event) {\n    if (!recordIds.has(event)) {\n        recordIds.set(event, nextId++);\n    }\n    return recordIds.get(event);\n}\nexport function initObservers(o) {\n    var mutationHandler = initMutationObserver(o.mutationController, o.mutationCb, o.configuration);\n    var mousemoveHandler = initMoveObserver(o.mousemoveCb);\n    var mouseInteractionHandler = initMouseInteractionObserver(o.mouseInteractionCb, o.configuration.defaultPrivacyLevel);\n    var scrollHandler = initScrollObserver(o.scrollCb, o.configuration.defaultPrivacyLevel, o.elementsScrollPositions);\n    var viewportResizeHandler = initViewportResizeObserver(o.viewportResizeCb);\n    var inputHandler = initInputObserver(o.inputCb, o.configuration.defaultPrivacyLevel);\n    var mediaInteractionHandler = initMediaInteractionObserver(o.mediaInteractionCb, o.configuration.defaultPrivacyLevel);\n    var styleSheetObserver = initStyleSheetObserver(o.styleSheetCb);\n    var focusHandler = initFocusObserver(o.focusCb);\n    var visualViewportResizeHandler = initVisualViewportResizeObserver(o.visualViewportResizeCb);\n    var frustrationHandler = initFrustrationObserver(o.lifeCycle, o.frustrationCb);\n    return function () {\n        mutationHandler();\n        mousemoveHandler();\n        mouseInteractionHandler();\n        scrollHandler();\n        viewportResizeHandler();\n        inputHandler();\n        mediaInteractionHandler();\n        styleSheetObserver();\n        focusHandler();\n        visualViewportResizeHandler();\n        frustrationHandler();\n    };\n}\nfunction initMutationObserver(mutationController, cb, configuration) {\n    return startMutationObserver(mutationController, cb, configuration).stop;\n}\nfunction initMoveObserver(cb) {\n    var updatePosition = throttle(monitor(function (event) {\n        var target = event.target;\n        if (hasSerializedNode(target)) {\n            var _a = isTouchEvent(event) ? event.changedTouches[0] : event, clientX = _a.clientX, clientY = _a.clientY;\n            var position = {\n                id: getSerializedNodeId(target),\n                timeOffset: 0,\n                x: clientX,\n                y: clientY,\n            };\n            if (window.visualViewport) {\n                var _b = convertMouseEventToLayoutCoordinates(clientX, clientY), visualViewportX = _b.visualViewportX, visualViewportY = _b.visualViewportY;\n                position.x = visualViewportX;\n                position.y = visualViewportY;\n            }\n            cb([position], isTouchEvent(event) ? IncrementalSource.TouchMove : IncrementalSource.MouseMove);\n        }\n    }), MOUSE_MOVE_OBSERVER_THRESHOLD, {\n        trailing: false,\n    }).throttled;\n    return addEventListeners(document, [\"mousemove\" /* MOUSE_MOVE */, \"touchmove\" /* TOUCH_MOVE */], updatePosition, {\n        capture: true,\n        passive: true,\n    }).stop;\n}\nvar eventTypeToMouseInteraction = (_a = {},\n    _a[\"mouseup\" /* MOUSE_UP */] = MouseInteractionType.MouseUp,\n    _a[\"mousedown\" /* MOUSE_DOWN */] = MouseInteractionType.MouseDown,\n    _a[\"click\" /* CLICK */] = MouseInteractionType.Click,\n    _a[\"contextmenu\" /* CONTEXT_MENU */] = MouseInteractionType.ContextMenu,\n    _a[\"dblclick\" /* DBL_CLICK */] = MouseInteractionType.DblClick,\n    _a[\"focus\" /* FOCUS */] = MouseInteractionType.Focus,\n    _a[\"blur\" /* BLUR */] = MouseInteractionType.Blur,\n    _a[\"touchstart\" /* TOUCH_START */] = MouseInteractionType.TouchStart,\n    _a[\"touchend\" /* TOUCH_END */] = MouseInteractionType.TouchEnd,\n    _a);\nfunction initMouseInteractionObserver(cb, defaultPrivacyLevel) {\n    var handler = function (event) {\n        var target = event.target;\n        if (getNodePrivacyLevel(target, defaultPrivacyLevel) === NodePrivacyLevel.HIDDEN || !hasSerializedNode(target)) {\n            return;\n        }\n        var _a = isTouchEvent(event) ? event.changedTouches[0] : event, clientX = _a.clientX, clientY = _a.clientY;\n        var position = {\n            id: getSerializedNodeId(target),\n            type: eventTypeToMouseInteraction[event.type],\n            x: clientX,\n            y: clientY,\n        };\n        if (window.visualViewport) {\n            var _b = convertMouseEventToLayoutCoordinates(clientX, clientY), visualViewportX = _b.visualViewportX, visualViewportY = _b.visualViewportY;\n            position.x = visualViewportX;\n            position.y = visualViewportY;\n        }\n        var record = assign({ id: getRecordIdForEvent(event) }, assembleIncrementalSnapshot(IncrementalSource.MouseInteraction, position));\n        cb(record);\n    };\n    return addEventListeners(document, Object.keys(eventTypeToMouseInteraction), handler, {\n        capture: true,\n        passive: true,\n    }).stop;\n}\nfunction initScrollObserver(cb, defaultPrivacyLevel, elementsScrollPositions) {\n    var updatePosition = throttle(monitor(function (event) {\n        var target = event.target;\n        if (!target ||\n            getNodePrivacyLevel(target, defaultPrivacyLevel) === NodePrivacyLevel.HIDDEN ||\n            !hasSerializedNode(target)) {\n            return;\n        }\n        var id = getSerializedNodeId(target);\n        var scrollPositions = target === document\n            ? {\n                scrollTop: getScrollY(),\n                scrollLeft: getScrollX(),\n            }\n            : {\n                scrollTop: Math.round(target.scrollTop),\n                scrollLeft: Math.round(target.scrollLeft),\n            };\n        elementsScrollPositions.set(target, scrollPositions);\n        cb({\n            id: id,\n            x: scrollPositions.scrollLeft,\n            y: scrollPositions.scrollTop,\n        });\n    }), SCROLL_OBSERVER_THRESHOLD).throttled;\n    return addEventListener(document, \"scroll\" /* SCROLL */, updatePosition, { capture: true, passive: true }).stop;\n}\nfunction initViewportResizeObserver(cb) {\n    return initViewportObservable().subscribe(cb).unsubscribe;\n}\nexport function initInputObserver(cb, defaultPrivacyLevel) {\n    var lastInputStateMap = new WeakMap();\n    function onElementChange(target) {\n        var nodePrivacyLevel = getNodePrivacyLevel(target, defaultPrivacyLevel);\n        if (nodePrivacyLevel === NodePrivacyLevel.HIDDEN) {\n            return;\n        }\n        var type = target.type;\n        var inputState;\n        if (type === 'radio' || type === 'checkbox') {\n            if (shouldMaskNode(target, nodePrivacyLevel)) {\n                return;\n            }\n            inputState = { isChecked: target.checked };\n        }\n        else {\n            var value = getElementInputValue(target, nodePrivacyLevel);\n            if (value === undefined) {\n                return;\n            }\n            inputState = { text: value };\n        }\n        // Can be multiple changes on the same node within the same batched mutation observation.\n        cbWithDedup(target, inputState);\n        // If a radio was checked, other radios with the same name attribute will be unchecked.\n        var name = target.name;\n        if (type === 'radio' && name && target.checked) {\n            forEach(document.querySelectorAll(\"input[type=\\\"radio\\\"][name=\\\"\".concat(name, \"\\\"]\")), function (el) {\n                if (el !== target) {\n                    // TODO: Consider the privacy implications for various differing input privacy levels\n                    cbWithDedup(el, { isChecked: false });\n                }\n            });\n        }\n    }\n    /**\n     * There can be multiple changes on the same node within the same batched mutation observation.\n     */\n    function cbWithDedup(target, inputState) {\n        if (!hasSerializedNode(target)) {\n            return;\n        }\n        var lastInputState = lastInputStateMap.get(target);\n        if (!lastInputState ||\n            lastInputState.text !== inputState.text ||\n            lastInputState.isChecked !== inputState.isChecked) {\n            lastInputStateMap.set(target, inputState);\n            cb(assign({\n                id: getSerializedNodeId(target),\n            }, inputState));\n        }\n    }\n    var stopEventListeners = addEventListeners(document, [\"input\" /* INPUT */, \"change\" /* CHANGE */], function (event) {\n        if (event.target instanceof HTMLInputElement ||\n            event.target instanceof HTMLTextAreaElement ||\n            event.target instanceof HTMLSelectElement) {\n            onElementChange(event.target);\n        }\n    }, {\n        capture: true,\n        passive: true,\n    }).stop;\n    var instrumentationStoppers = [\n        instrumentSetter(HTMLInputElement.prototype, 'value', onElementChange),\n        instrumentSetter(HTMLInputElement.prototype, 'checked', onElementChange),\n        instrumentSetter(HTMLSelectElement.prototype, 'value', onElementChange),\n        instrumentSetter(HTMLTextAreaElement.prototype, 'value', onElementChange),\n        instrumentSetter(HTMLSelectElement.prototype, 'selectedIndex', onElementChange),\n    ];\n    return function () {\n        instrumentationStoppers.forEach(function (stopper) { return stopper.stop(); });\n        stopEventListeners();\n    };\n}\nexport function initStyleSheetObserver(cb) {\n    function checkStyleSheetAndCallback(styleSheet, callback) {\n        if (styleSheet && hasSerializedNode(styleSheet.ownerNode)) {\n            callback(getSerializedNodeId(styleSheet.ownerNode));\n        }\n    }\n    var instrumentationStoppers = [\n        instrumentMethodAndCallOriginal(CSSStyleSheet.prototype, 'insertRule', {\n            before: function (rule, index) {\n                checkStyleSheetAndCallback(this, function (id) { return cb({ id: id, adds: [{ rule: rule, index: index }] }); });\n            },\n        }),\n        instrumentMethodAndCallOriginal(CSSStyleSheet.prototype, 'deleteRule', {\n            before: function (index) {\n                checkStyleSheetAndCallback(this, function (id) { return cb({ id: id, removes: [{ index: index }] }); });\n            },\n        }),\n    ];\n    if (typeof CSSGroupingRule !== 'undefined') {\n        instrumentGroupingCSSRuleClass(CSSGroupingRule);\n    }\n    else {\n        instrumentGroupingCSSRuleClass(CSSMediaRule);\n        instrumentGroupingCSSRuleClass(CSSSupportsRule);\n    }\n    function instrumentGroupingCSSRuleClass(cls) {\n        instrumentationStoppers.push(instrumentMethodAndCallOriginal(cls.prototype, 'insertRule', {\n            before: function (rule, index) {\n                var _this = this;\n                checkStyleSheetAndCallback(this.parentStyleSheet, function (id) {\n                    var path = getPathToNestedCSSRule(_this);\n                    if (path) {\n                        path.push(index || 0);\n                        cb({ id: id, adds: [{ rule: rule, index: path }] });\n                    }\n                });\n            },\n        }), instrumentMethodAndCallOriginal(cls.prototype, 'deleteRule', {\n            before: function (index) {\n                var _this = this;\n                checkStyleSheetAndCallback(this.parentStyleSheet, function (id) {\n                    var path = getPathToNestedCSSRule(_this);\n                    if (path) {\n                        path.push(index);\n                        cb({ id: id, removes: [{ index: path }] });\n                    }\n                });\n            },\n        }));\n    }\n    return function () { return instrumentationStoppers.forEach(function (stopper) { return stopper.stop(); }); };\n}\nfunction initMediaInteractionObserver(mediaInteractionCb, defaultPrivacyLevel) {\n    var handler = function (event) {\n        var target = event.target;\n        if (!target ||\n            getNodePrivacyLevel(target, defaultPrivacyLevel) === NodePrivacyLevel.HIDDEN ||\n            !hasSerializedNode(target)) {\n            return;\n        }\n        mediaInteractionCb({\n            id: getSerializedNodeId(target),\n            type: event.type === \"play\" /* PLAY */ ? MediaInteractionType.Play : MediaInteractionType.Pause,\n        });\n    };\n    return addEventListeners(document, [\"play\" /* PLAY */, \"pause\" /* PAUSE */], handler, { capture: true, passive: true }).stop;\n}\nfunction initFocusObserver(focusCb) {\n    return addEventListeners(window, [\"focus\" /* FOCUS */, \"blur\" /* BLUR */], function () {\n        focusCb({ has_focus: document.hasFocus() });\n    }).stop;\n}\nfunction initVisualViewportResizeObserver(cb) {\n    if (!window.visualViewport) {\n        return noop;\n    }\n    var _a = throttle(monitor(function () {\n        cb(getVisualViewport());\n    }), VISUAL_VIEWPORT_OBSERVER_THRESHOLD, {\n        trailing: false,\n    }), updateDimension = _a.throttled, cancelThrottle = _a.cancel;\n    var removeListener = addEventListeners(window.visualViewport, [\"resize\" /* RESIZE */, \"scroll\" /* SCROLL */], updateDimension, {\n        capture: true,\n        passive: true,\n    }).stop;\n    return function stop() {\n        removeListener();\n        cancelThrottle();\n    };\n}\nexport function initFrustrationObserver(lifeCycle, frustrationCb) {\n    return lifeCycle.subscribe(10 /* RAW_RUM_EVENT_COLLECTED */, function (data) {\n        var _a, _b, _c;\n        if (data.rawRumEvent.type === \"action\" /* ACTION */ &&\n            data.rawRumEvent.action.type === \"click\" /* CLICK */ &&\n            ((_b = (_a = data.rawRumEvent.action.frustration) === null || _a === void 0 ? void 0 : _a.type) === null || _b === void 0 ? void 0 : _b.length) &&\n            'events' in data.domainContext &&\n            ((_c = data.domainContext.events) === null || _c === void 0 ? void 0 : _c.length)) {\n            frustrationCb({\n                timestamp: data.rawRumEvent.date,\n                type: RecordType.FrustrationRecord,\n                data: {\n                    frustrationTypes: data.rawRumEvent.action.frustration.type,\n                    recordIds: data.domainContext.events.map(function (e) { return getRecordIdForEvent(e); }),\n                },\n            });\n        }\n    }).unsubscribe;\n}\n//# sourceMappingURL=observers.js.map","export function createElementsScrollPositions() {\n    var scrollPositionsByElement = new WeakMap();\n    return {\n        set: function (element, scrollPositions) {\n            if (element === document && !document.scrollingElement) {\n                // cf https://drafts.csswg.org/cssom-view/#dom-document-scrollingelement,\n                // in some cases scrolling elements can not be defined, we don't support those for now\n                return;\n            }\n            scrollPositionsByElement.set(element === document ? document.scrollingElement : element, scrollPositions);\n        },\n        get: function (element) {\n            return scrollPositionsByElement.get(element);\n        },\n        has: function (element) {\n            return scrollPositionsByElement.has(element);\n        },\n    };\n}\n//# sourceMappingURL=elementsScrollPositions.js.map","import { timeStampNow } from '@datadog/browser-core';\nimport { getViewportDimension } from '@datadog/browser-rum-core';\nimport { RecordType, IncrementalSource } from '../../types';\nimport { serializeDocument } from './serialize';\nimport { initObservers } from './observers';\nimport { MutationController } from './mutationObserver';\nimport { getVisualViewport, getScrollX, getScrollY } from './viewports';\nimport { assembleIncrementalSnapshot } from './utils';\nimport { createElementsScrollPositions } from './elementsScrollPositions';\nexport function record(options) {\n    var emit = options.emit;\n    // runtime checks for user options\n    if (!emit) {\n        throw new Error('emit function is required');\n    }\n    var mutationController = new MutationController();\n    var elementsScrollPositions = createElementsScrollPositions();\n    var takeFullSnapshot = function (timestamp, serializationContext) {\n        if (timestamp === void 0) { timestamp = timeStampNow(); }\n        if (serializationContext === void 0) { serializationContext = { status: 0 /* INITIAL_FULL_SNAPSHOT */, elementsScrollPositions: elementsScrollPositions }; }\n        mutationController.flush(); // process any pending mutation before taking a full snapshot\n        var _a = getViewportDimension(), width = _a.width, height = _a.height;\n        emit({\n            data: {\n                height: height,\n                href: window.location.href,\n                width: width,\n            },\n            type: RecordType.Meta,\n            timestamp: timestamp,\n        });\n        emit({\n            data: {\n                has_focus: document.hasFocus(),\n            },\n            type: RecordType.Focus,\n            timestamp: timestamp,\n        });\n        emit({\n            data: {\n                node: serializeDocument(document, options.configuration, serializationContext),\n                initialOffset: {\n                    left: getScrollX(),\n                    top: getScrollY(),\n                },\n            },\n            type: RecordType.FullSnapshot,\n            timestamp: timestamp,\n        });\n        if (window.visualViewport) {\n            emit({\n                data: getVisualViewport(),\n                type: RecordType.VisualViewport,\n                timestamp: timestamp,\n            });\n        }\n    };\n    takeFullSnapshot();\n    var stopObservers = initObservers({\n        lifeCycle: options.lifeCycle,\n        configuration: options.configuration,\n        mutationController: mutationController,\n        elementsScrollPositions: elementsScrollPositions,\n        inputCb: function (v) { return emit(assembleIncrementalSnapshot(IncrementalSource.Input, v)); },\n        mediaInteractionCb: function (p) {\n            return emit(assembleIncrementalSnapshot(IncrementalSource.MediaInteraction, p));\n        },\n        mouseInteractionCb: function (mouseInteractionRecord) { return emit(mouseInteractionRecord); },\n        mousemoveCb: function (positions, source) { return emit(assembleIncrementalSnapshot(source, { positions: positions })); },\n        mutationCb: function (m) { return emit(assembleIncrementalSnapshot(IncrementalSource.Mutation, m)); },\n        scrollCb: function (p) { return emit(assembleIncrementalSnapshot(IncrementalSource.Scroll, p)); },\n        styleSheetCb: function (r) { return emit(assembleIncrementalSnapshot(IncrementalSource.StyleSheetRule, r)); },\n        viewportResizeCb: function (d) { return emit(assembleIncrementalSnapshot(IncrementalSource.ViewportResize, d)); },\n        frustrationCb: function (frustrationRecord) { return emit(frustrationRecord); },\n        focusCb: function (data) {\n            return emit({\n                data: data,\n                type: RecordType.Focus,\n                timestamp: timeStampNow(),\n            });\n        },\n        visualViewportResizeCb: function (data) {\n            emit({\n                data: data,\n                type: RecordType.VisualViewport,\n                timestamp: timeStampNow(),\n            });\n        },\n    });\n    return {\n        stop: stopObservers,\n        takeSubsequentFullSnapshot: function (timestamp) {\n            return takeFullSnapshot(timestamp, {\n                status: 1 /* SUBSEQUENT_FULL_SNAPSHOT */,\n                elementsScrollPositions: elementsScrollPositions,\n            });\n        },\n        flushMutations: function () { return mutationController.flush(); },\n    };\n}\n//# sourceMappingURL=record.js.map","import { objectEntries } from '@datadog/browser-core';\nexport function buildReplayPayload(data, metadata, rawSegmentBytesCount) {\n    var formData = new FormData();\n    formData.append('segment', new Blob([data], {\n        type: 'application/octet-stream',\n    }), \"\".concat(metadata.session.id, \"-\").concat(metadata.start));\n    toFormEntries(metadata, function (key, value) { return formData.append(key, value); });\n    formData.append('raw_segment_size', rawSegmentBytesCount.toString());\n    return { data: formData, bytesCount: data.byteLength };\n}\nexport function toFormEntries(input, onEntry, prefix) {\n    if (prefix === void 0) { prefix = ''; }\n    objectEntries(input).forEach(function (_a) {\n        var key = _a[0], value = _a[1];\n        if (typeof value === 'object' && value !== null) {\n            toFormEntries(value, onEntry, \"\".concat(prefix).concat(key, \".\"));\n        }\n        else {\n            onEntry(\"\".concat(prefix).concat(key), String(value));\n        }\n    });\n}\n//# sourceMappingURL=buildReplayPayload.js.map","export var MAX_STATS_HISTORY = 10;\nvar statsPerView;\nexport function getSegmentsCount(viewId) {\n    return getOrCreateReplayStats(viewId).segments_count;\n}\nexport function addSegment(viewId) {\n    getOrCreateReplayStats(viewId).segments_count += 1;\n}\nexport function addRecord(viewId) {\n    getOrCreateReplayStats(viewId).records_count += 1;\n}\nexport function addWroteData(viewId, additionalBytesCount) {\n    getOrCreateReplayStats(viewId).segments_total_raw_size += additionalBytesCount;\n}\nexport function getReplayStats(viewId) {\n    return statsPerView === null || statsPerView === void 0 ? void 0 : statsPerView.get(viewId);\n}\nexport function resetReplayStats() {\n    statsPerView = undefined;\n}\nfunction getOrCreateReplayStats(viewId) {\n    if (!statsPerView) {\n        statsPerView = new Map();\n    }\n    var replayStats;\n    if (statsPerView.has(viewId)) {\n        replayStats = statsPerView.get(viewId);\n    }\n    else {\n        replayStats = {\n            records_count: 0,\n            segments_count: 0,\n            segments_total_raw_size: 0,\n        };\n        statsPerView.set(viewId, replayStats);\n        if (statsPerView.size > MAX_STATS_HISTORY) {\n            deleteOldestStats();\n        }\n    }\n    return replayStats;\n}\nfunction deleteOldestStats() {\n    if (!statsPerView) {\n        return;\n    }\n    if (statsPerView.keys) {\n        statsPerView.delete(statsPerView.keys().next().value);\n    }\n    else {\n        // IE11 doesn't support map.keys\n        var isFirst_1 = true;\n        statsPerView.forEach(function (_value, key) {\n            if (isFirst_1) {\n                statsPerView.delete(key);\n                isFirst_1 = false;\n            }\n        });\n    }\n}\n//# sourceMappingURL=replayStats.js.map","import { addTelemetryDebug, assign, monitor } from '@datadog/browser-core';\nimport { RecordType } from '../../types';\nimport * as replayStats from '../replayStats';\nvar nextId = 0;\nvar Segment = /** @class */ (function () {\n    function Segment(worker, context, creationReason, initialRecord, onWrote, onFlushed) {\n        var _this = this;\n        this.worker = worker;\n        this.id = nextId++;\n        var viewId = context.view.id;\n        this.metadata = assign({\n            start: initialRecord.timestamp,\n            end: initialRecord.timestamp,\n            creation_reason: creationReason,\n            records_count: 1,\n            has_full_snapshot: initialRecord.type === RecordType.FullSnapshot,\n            index_in_view: replayStats.getSegmentsCount(viewId),\n            source: 'browser',\n        }, context);\n        replayStats.addSegment(viewId);\n        replayStats.addRecord(viewId);\n        var listener = monitor(function (_a) {\n            var data = _a.data;\n            if (data.type === 'errored' || data.type === 'initialized') {\n                return;\n            }\n            if (data.id === _this.id) {\n                replayStats.addWroteData(viewId, data.additionalBytesCount);\n                if (data.type === 'flushed') {\n                    onFlushed(data.result, data.rawBytesCount);\n                    worker.removeEventListener('message', listener);\n                }\n                else {\n                    onWrote(data.compressedBytesCount);\n                }\n            }\n            else if (data.id > _this.id) {\n                // Messages should be received in the same order as they are sent, so if we receive a\n                // message with an id superior to this Segment instance id, we know that another, more\n                // recent Segment instance is being used.\n                //\n                // In theory, a \"flush\" response should have been received at this point, so the listener\n                // should already have been removed. But if something goes wrong and we didn't receive a\n                // \"flush\" response, remove the listener to avoid any leak, and send a monitor message to\n                // help investigate the issue.\n                worker.removeEventListener('message', listener);\n                addTelemetryDebug(\"Segment did not receive a 'flush' response before being replaced.\");\n            }\n        });\n        worker.addEventListener('message', listener);\n        this.worker.postMessage({ data: \"{\\\"records\\\":[\".concat(JSON.stringify(initialRecord)), id: this.id, action: 'write' });\n    }\n    Segment.prototype.addRecord = function (record) {\n        var _a;\n        this.metadata.start = Math.min(this.metadata.start, record.timestamp);\n        this.metadata.end = Math.max(this.metadata.end, record.timestamp);\n        this.metadata.records_count += 1;\n        replayStats.addRecord(this.metadata.view.id);\n        (_a = this.metadata).has_full_snapshot || (_a.has_full_snapshot = record.type === RecordType.FullSnapshot);\n        this.worker.postMessage({ data: \",\".concat(JSON.stringify(record)), id: this.id, action: 'write' });\n    };\n    Segment.prototype.flush = function (reason) {\n        this.worker.postMessage({\n            data: \"],\".concat(JSON.stringify(this.metadata).slice(1), \"\\n\"),\n            id: this.id,\n            action: 'flush',\n        });\n        this.flushReason = reason;\n    };\n    return Segment;\n}());\nexport { Segment };\n//# sourceMappingURL=segment.js.map","var workerURL;\nexport function createDeflateWorker() {\n    // Lazily compute the worker URL to allow importing the SDK in NodeJS\n    if (!workerURL) {\n        workerURL = URL.createObjectURL(new Blob([\"(\".concat(workerCodeFn, \")(self)\")]));\n    }\n    return new Worker(workerURL);\n}\nfunction workerCodeFn() {\n    monitor(function () {\n        var _a = makePakoDeflate(), Deflate = _a.Deflate, constants = _a.constants, string2buf = _a.string2buf;\n        var deflate = new Deflate();\n        var rawBytesCount = 0;\n        self.addEventListener('message', monitor(function (event) {\n            var data = event.data;\n            switch (data.action) {\n                case 'init':\n                    self.postMessage({\n                        type: 'initialized',\n                    });\n                    break;\n                case 'write': {\n                    var additionalBytesCount = pushData(data.data);\n                    self.postMessage({\n                        type: 'wrote',\n                        id: data.id,\n                        compressedBytesCount: deflate.chunks.reduce(function (total, chunk) { return total + chunk.length; }, 0),\n                        additionalBytesCount: additionalBytesCount,\n                    });\n                    break;\n                }\n                case 'flush': {\n                    var additionalBytesCount = data.data ? pushData(data.data) : 0;\n                    deflate.push('', constants.Z_FINISH);\n                    self.postMessage({\n                        type: 'flushed',\n                        id: data.id,\n                        result: deflate.result,\n                        additionalBytesCount: additionalBytesCount,\n                        rawBytesCount: rawBytesCount,\n                    });\n                    deflate = new Deflate();\n                    rawBytesCount = 0;\n                    break;\n                }\n            }\n        }));\n        function pushData(data) {\n            // TextEncoder is not supported on old browser version like Edge 18, therefore we use string2buf\n            var binaryData = string2buf(data);\n            deflate.push(binaryData, constants.Z_SYNC_FLUSH);\n            rawBytesCount += binaryData.length;\n            return binaryData.length;\n        }\n    })();\n    function monitor(fn) {\n        return function () {\n            try {\n                return fn.apply(this, arguments);\n            }\n            catch (e) {\n                try {\n                    self.postMessage({\n                        type: 'errored',\n                        error: e,\n                    });\n                }\n                catch (_) {\n                    // DATA_CLONE_ERR, cf https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Structured_clone_algorithm\n                    self.postMessage({\n                        type: 'errored',\n                        error: \"\".concat(e),\n                    });\n                }\n            }\n        };\n    }\n    // https://github.com/nodeca/pako/blob/034669ba0f1a4c0590e45f7c2820128200f972b3/dist/pako_deflate.es5.js\n    function makePakoDeflate() {\n        /* eslint-disable camelcase, no-bitwise */\n        // (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n        //\n        // This software is provided 'as-is', without any express or implied\n        // warranty. In no event will the authors be held liable for any damages\n        // arising from the use of this software.\n        //\n        // Permission is granted to anyone to use this software for any purpose,\n        // including commercial applications, and to alter it and redistribute it\n        // freely, subject to the following restrictions:\n        //\n        // 1. The origin of this software must not be misrepresented; you must not\n        //   claim that you wrote the original software. If you use this software\n        //   in a product, an acknowledgment in the product documentation would be\n        //   appreciated but is not required.\n        // 2. Altered source versions must be plainly marked as such, and must not be\n        //   misrepresented as being the original software.\n        // 3. This notice may not be removed or altered from any source distribution.\n        /* Public constants ========================================================== */\n        /* =========================================================================== */\n        // const Z_FILTERED          = 1;\n        // const Z_HUFFMAN_ONLY      = 2;\n        // const Z_RLE               = 3;\n        var Z_FIXED = 4; // const Z_DEFAULT_STRATEGY  = 0;\n        /* Possible values of the data_type field (though see inflate()) */\n        var Z_BINARY = 0;\n        var Z_TEXT = 1; // const Z_ASCII             = 1; // = Z_TEXT\n        var Z_UNKNOWN = 2;\n        /* ============================================================================ */\n        function zero(buf) {\n            var len = buf.length;\n            while (--len >= 0) {\n                buf[len] = 0;\n            }\n        } // From zutil.h\n        var STORED_BLOCK = 0;\n        var STATIC_TREES = 1;\n        var DYN_TREES = 2;\n        /* The three kinds of block type */\n        var MIN_MATCH = 3;\n        var MAX_MATCH = 258;\n        /* The minimum and maximum match lengths */\n        // From deflate.h\n        /* ===========================================================================\n         * Internal compression state.\n         */\n        var LENGTH_CODES = 29;\n        /* number of length codes, not counting the special END_BLOCK code */\n        var LITERALS = 256;\n        /* number of literal bytes 0..255 */\n        var L_CODES = LITERALS + 1 + LENGTH_CODES;\n        /* number of Literal or Length codes, including the END_BLOCK code */\n        var D_CODES = 30;\n        /* number of distance codes */\n        var BL_CODES = 19;\n        /* number of codes used to transfer the bit lengths */\n        var HEAP_SIZE = 2 * L_CODES + 1;\n        /* maximum heap size */\n        var MAX_BITS = 15;\n        /* All codes must not exceed MAX_BITS bits */\n        var Buf_size = 16;\n        /* size of bit buffer in bi_buf */\n        /* ===========================================================================\n         * Constants\n         */\n        var MAX_BL_BITS = 7;\n        /* Bit length codes must not exceed MAX_BL_BITS bits */\n        var END_BLOCK = 256;\n        /* end of block literal code */\n        var REP_3_6 = 16;\n        /* repeat previous bit length 3-6 times (2 bits of repeat count) */\n        var REPZ_3_10 = 17;\n        /* repeat a zero length 3-10 times  (3 bits of repeat count) */\n        var REPZ_11_138 = 18;\n        /* repeat a zero length 11-138 times  (7 bits of repeat count) */\n        var extra_lbits = \n        /* extra bits for each length code */\n        new Uint8Array([0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0]);\n        var extra_dbits = \n        /* extra bits for each distance code */\n        new Uint8Array([0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13]);\n        var extra_blbits = \n        /* extra bits for each bit length code */\n        new Uint8Array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 7]);\n        var bl_order = new Uint8Array([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]);\n        /* eslint-enable comma-spacing,array-bracket-spacing */\n        /* The lengths of the bit length codes are sent in order of decreasing\n         * probability, to avoid transmitting the lengths for unused bit length codes.\n         */\n        /* ===========================================================================\n         * Local data. These are initialized only once.\n         */\n        // We pre-fill arrays with 0 to avoid uninitialized gaps\n        var DIST_CODE_LEN = 512;\n        /* see definition of array dist_code below */\n        // !!!! Use flat array instead of structure, Freq = i*2, Len = i*2+1\n        var static_ltree = new Array((L_CODES + 2) * 2);\n        zero(static_ltree);\n        /* The static literal tree. Since the bit lengths are imposed, there is no\n         * need for the L_CODES extra codes used during heap construction. However\n         * The codes 286 and 287 are needed to build a canonical tree (see _tr_init\n         * below).\n         */\n        var static_dtree = new Array(D_CODES * 2);\n        zero(static_dtree);\n        /* The static distance tree. (Actually a trivial tree since all codes use\n         * 5 bits.)\n         */\n        var _dist_code = new Array(DIST_CODE_LEN);\n        zero(_dist_code);\n        /* Distance codes. The first 256 values correspond to the distances\n         * 3 .. 258, the last 256 values correspond to the top 8 bits of\n         * the 15 bit distances.\n         */\n        var _length_code = new Array(MAX_MATCH - MIN_MATCH + 1);\n        zero(_length_code);\n        /* length code for each normalized match length (0 == MIN_MATCH) */\n        var base_length = new Array(LENGTH_CODES);\n        zero(base_length);\n        /* First normalized length for each code (0 = MIN_MATCH) */\n        var base_dist = new Array(D_CODES);\n        zero(base_dist);\n        /* First normalized distance for each code (0 = distance of 1) */\n        function StaticTreeDesc(static_tree, extra_bits, extra_base, elems, max_length) {\n            this.static_tree = static_tree;\n            /* static tree or NULL */\n            this.extra_bits = extra_bits;\n            /* extra bits for each code or NULL */\n            this.extra_base = extra_base;\n            /* base index for extra_bits */\n            this.elems = elems;\n            /* max number of elements in the tree */\n            this.max_length = max_length;\n            /* max bit length for the codes */\n            // show if `static_tree` has data or dummy - needed for monomorphic objects\n            this.has_stree = static_tree && static_tree.length;\n        }\n        var static_l_desc;\n        var static_d_desc;\n        var static_bl_desc;\n        function TreeDesc(dyn_tree, stat_desc) {\n            this.dyn_tree = dyn_tree;\n            /* the dynamic tree */\n            this.max_code = 0;\n            /* largest code with non zero frequency */\n            this.stat_desc = stat_desc;\n            /* the corresponding static tree */\n        }\n        var d_code = function d_code(dist) {\n            return dist < 256 ? _dist_code[dist] : _dist_code[256 + (dist >>> 7)];\n        };\n        /* ===========================================================================\n         * Output a short LSB first on the stream.\n         * IN assertion: there is enough room in pendingBuf.\n         */\n        var put_short = function put_short(s, w) {\n            //    put_byte(s, (uch)((w) & 0xff));\n            //    put_byte(s, (uch)((ush)(w) >> 8));\n            s.pending_buf[s.pending++] = w & 0xff;\n            s.pending_buf[s.pending++] = (w >>> 8) & 0xff;\n        };\n        /* ===========================================================================\n         * Send a value on a given number of bits.\n         * IN assertion: length <= 16 and value fits in length bits.\n         */\n        var send_bits = function send_bits(s, value, length) {\n            if (s.bi_valid > Buf_size - length) {\n                s.bi_buf |= (value << s.bi_valid) & 0xffff;\n                put_short(s, s.bi_buf);\n                s.bi_buf = value >> (Buf_size - s.bi_valid);\n                s.bi_valid += length - Buf_size;\n            }\n            else {\n                s.bi_buf |= (value << s.bi_valid) & 0xffff;\n                s.bi_valid += length;\n            }\n        };\n        var send_code = function send_code(s, c, tree) {\n            send_bits(s, tree[c * 2], \n            /* .Code */\n            tree[c * 2 + 1]\n            /* .Len */\n            );\n        };\n        /* ===========================================================================\n         * Reverse the first len bits of a code, using straightforward code (a faster\n         * method would use a table)\n         * IN assertion: 1 <= len <= 15\n         */\n        var bi_reverse = function bi_reverse(code, len) {\n            var res = 0;\n            do {\n                res |= code & 1;\n                code >>>= 1;\n                res <<= 1;\n            } while (--len > 0);\n            return res >>> 1;\n        };\n        /* ===========================================================================\n         * Flush the bit buffer, keeping at most 7 bits in it.\n         */\n        var bi_flush = function bi_flush(s) {\n            if (s.bi_valid === 16) {\n                put_short(s, s.bi_buf);\n                s.bi_buf = 0;\n                s.bi_valid = 0;\n            }\n            else if (s.bi_valid >= 8) {\n                s.pending_buf[s.pending++] = s.bi_buf & 0xff;\n                s.bi_buf >>= 8;\n                s.bi_valid -= 8;\n            }\n        };\n        /* ===========================================================================\n         * Compute the optimal bit lengths for a tree and update the total bit length\n         * for the current block.\n         * IN assertion: the fields freq and dad are set, heap[heap_max] and\n         *    above are the tree nodes sorted by increasing frequency.\n         * OUT assertions: the field len is set to the optimal bit length, the\n         *     array bl_count contains the frequencies for each bit length.\n         *     The length opt_len is updated; static_len is also updated if stree is\n         *     not null.\n         */\n        var gen_bitlen = function gen_bitlen(s, desc //    deflate_state *s; //    tree_desc *desc;    /* the tree descriptor */\n        ) {\n            var tree = desc.dyn_tree;\n            var max_code = desc.max_code;\n            var stree = desc.stat_desc.static_tree;\n            var has_stree = desc.stat_desc.has_stree;\n            var extra = desc.stat_desc.extra_bits;\n            var base = desc.stat_desc.extra_base;\n            var max_length = desc.stat_desc.max_length;\n            var h;\n            /* heap index */\n            var n;\n            var m;\n            /* iterate over the tree elements */\n            var bits;\n            /* bit length */\n            var xbits;\n            /* extra bits */\n            var f;\n            /* frequency */\n            var overflow = 0;\n            /* number of elements with bit length too large */\n            for (bits = 0; bits <= MAX_BITS; bits++) {\n                s.bl_count[bits] = 0;\n            }\n            /* In a first pass, compute the optimal bit lengths (which may\n             * overflow in the case of the bit length tree).\n             */\n            tree[s.heap[s.heap_max] * 2 + 1] =\n                /* .Len */\n                0;\n            /* root of the heap */\n            for (h = s.heap_max + 1; h < HEAP_SIZE; h++) {\n                n = s.heap[h];\n                bits =\n                    tree[tree[n * 2 + 1] *\n                        /* .Dad */\n                        2 +\n                        1] +\n                        /* .Len */\n                        1;\n                if (bits > max_length) {\n                    bits = max_length;\n                    overflow++;\n                }\n                tree[n * 2 + 1] =\n                    /* .Len */\n                    bits;\n                /* We overwrite tree[n].Dad which is no longer needed */\n                if (n > max_code) {\n                    continue;\n                }\n                /* not a leaf node */\n                s.bl_count[bits]++;\n                xbits = 0;\n                if (n >= base) {\n                    xbits = extra[n - base];\n                }\n                f = tree[n * 2];\n                /* .Freq */\n                s.opt_len += f * (bits + xbits);\n                if (has_stree) {\n                    s.static_len +=\n                        f *\n                            (stree[n * 2 + 1] +\n                                /* .Len */\n                                xbits);\n                }\n            }\n            if (overflow === 0) {\n                return;\n            } // Trace((stderr,\"\\nbit length overflow\\n\"));\n            /* This happens for example on obj2 and pic of the Calgary corpus */\n            /* Find the first bit length which could increase: */\n            do {\n                bits = max_length - 1;\n                while (s.bl_count[bits] === 0) {\n                    bits--;\n                }\n                s.bl_count[bits]--;\n                /* move one leaf down the tree */\n                s.bl_count[bits + 1] += 2;\n                /* move one overflow item as its brother */\n                s.bl_count[max_length]--;\n                /* The brother of the overflow item also moves one step up,\n                 * but this does not affect bl_count[max_length]\n                 */\n                overflow -= 2;\n            } while (overflow > 0);\n            /* Now recompute all bit lengths, scanning in increasing frequency.\n             * h is still equal to HEAP_SIZE. (It is simpler to reconstruct all\n             * lengths instead of fixing only the wrong ones. This idea is taken\n             * from 'ar' written by Haruhiko Okumura.)\n             */\n            for (bits = max_length; bits !== 0; bits--) {\n                n = s.bl_count[bits];\n                while (n !== 0) {\n                    m = s.heap[--h];\n                    if (m > max_code) {\n                        continue;\n                    }\n                    if (tree[m * 2 + 1] !==\n                        /* .Len */\n                        bits) {\n                        // Trace((stderr,\"code %d bits %d->%d\\n\", m, tree[m].Len, bits));\n                        s.opt_len +=\n                            (bits - tree[m * 2 + 1]) *\n                                /* .Len */\n                                tree[m * 2];\n                        /* .Freq */\n                        tree[m * 2 + 1] =\n                            /* .Len */\n                            bits;\n                    }\n                    n--;\n                }\n            }\n        };\n        /* ===========================================================================\n         * Generate the codes for a given tree and bit counts (which need not be\n         * optimal).\n         * IN assertion: the array bl_count contains the bit length statistics for\n         * the given tree and the field len is set for all tree elements.\n         * OUT assertion: the field code is set for all tree elements of non\n         *     zero code length.\n         */\n        var gen_codes = function gen_codes(tree, max_code, bl_count\n        //    ct_data *tree;             /* the tree to decorate */\n        //    int max_code;              /* largest code with non zero frequency */\n        //    ushf *bl_count;            /* number of codes at each bit length */\n        ) {\n            var next_code = new Array(MAX_BITS + 1);\n            /* next code value for each bit length */\n            var code = 0;\n            /* running code value */\n            var bits;\n            /* bit index */\n            var n;\n            /* code index */\n            /* The distribution counts are first used to generate the code values\n             * without bit reversal.\n             */\n            for (bits = 1; bits <= MAX_BITS; bits++) {\n                next_code[bits] = code = (code + bl_count[bits - 1]) << 1;\n            }\n            /* Check that the bit counts in bl_count are consistent. The last code\n             * must be all ones.\n             */\n            // Assert (code + bl_count[MAX_BITS]-1 == (1<<MAX_BITS)-1,\n            //        \"inconsistent bit counts\");\n            // Tracev((stderr,\"\\ngen_codes: max_code %d \", max_code));\n            for (n = 0; n <= max_code; n++) {\n                var len = tree[n * 2 + 1];\n                /* .Len */\n                if (len === 0) {\n                    continue;\n                }\n                /* Now reverse the bits */\n                tree[n * 2] =\n                    /* .Code */\n                    bi_reverse(next_code[len]++, len); // Tracecv(tree != static_ltree, (stderr,\"\\nn %3d %c l %2d c %4x (%x) \",\n                //     n, (isgraph(n) ? n : ' '), len, tree[n].Code, next_code[len]-1));\n            }\n        };\n        /* ===========================================================================\n         * Initialize the various 'constant' tables.\n         */\n        var tr_static_init = function tr_static_init() {\n            var n;\n            /* iterates over tree elements */\n            var bits;\n            /* bit counter */\n            var length;\n            /* length value */\n            var code;\n            /* code value */\n            var dist;\n            /* distance index */\n            var bl_count = new Array(MAX_BITS + 1);\n            /* number of codes at each bit length for an optimal tree */\n            // do check in _tr_init()\n            // if (static_init_done) return;\n            /* For some embedded targets, global variables are not initialized: */\n            /* #ifdef NO_INIT_GLOBAL_POINTERS\n            static_l_desc.static_tree = static_ltree;\n            static_l_desc.extra_bits = extra_lbits;\n            static_d_desc.static_tree = static_dtree;\n            static_d_desc.extra_bits = extra_dbits;\n            static_bl_desc.extra_bits = extra_blbits;\n          #endif */\n            /* Initialize the mapping length (0..255) -> length code (0..28) */\n            length = 0;\n            for (code = 0; code < LENGTH_CODES - 1; code++) {\n                base_length[code] = length;\n                for (n = 0; n < 1 << extra_lbits[code]; n++) {\n                    _length_code[length++] = code;\n                }\n            } // Assert (length == 256, \"tr_static_init: length != 256\");\n            /* Note that the length 255 (match length 258) can be represented\n             * in two different ways: code 284 + 5 bits or code 285, so we\n             * overwrite length_code[255] to use the best encoding:\n             */\n            _length_code[length - 1] = code;\n            /* Initialize the mapping dist (0..32K) -> dist code (0..29) */\n            dist = 0;\n            for (code = 0; code < 16; code++) {\n                base_dist[code] = dist;\n                for (n = 0; n < 1 << extra_dbits[code]; n++) {\n                    _dist_code[dist++] = code;\n                }\n            } // Assert (dist == 256, \"tr_static_init: dist != 256\");\n            dist >>= 7;\n            /* from now on, all distances are divided by 128 */\n            for (; code < D_CODES; code++) {\n                base_dist[code] = dist << 7;\n                for (n = 0; n < 1 << (extra_dbits[code] - 7); n++) {\n                    _dist_code[256 + dist++] = code;\n                }\n            } // Assert (dist == 256, \"tr_static_init: 256+dist != 512\");\n            /* Construct the codes of the static literal tree */\n            for (bits = 0; bits <= MAX_BITS; bits++) {\n                bl_count[bits] = 0;\n            }\n            n = 0;\n            while (n <= 143) {\n                static_ltree[n * 2 + 1] =\n                    /* .Len */\n                    8;\n                n++;\n                bl_count[8]++;\n            }\n            while (n <= 255) {\n                static_ltree[n * 2 + 1] =\n                    /* .Len */\n                    9;\n                n++;\n                bl_count[9]++;\n            }\n            while (n <= 279) {\n                static_ltree[n * 2 + 1] =\n                    /* .Len */\n                    7;\n                n++;\n                bl_count[7]++;\n            }\n            while (n <= 287) {\n                static_ltree[n * 2 + 1] =\n                    /* .Len */\n                    8;\n                n++;\n                bl_count[8]++;\n            }\n            /* Codes 286 and 287 do not exist, but we must include them in the\n             * tree construction to get a canonical Huffman tree (longest code\n             * all ones)\n             */\n            gen_codes(static_ltree, L_CODES + 1, bl_count);\n            /* The static distance tree is trivial: */\n            for (n = 0; n < D_CODES; n++) {\n                static_dtree[n * 2 + 1] =\n                    /* .Len */\n                    5;\n                static_dtree[n * 2] =\n                    /* .Code */\n                    bi_reverse(n, 5);\n            } // Now data ready and we can init static trees\n            static_l_desc = new StaticTreeDesc(static_ltree, extra_lbits, LITERALS + 1, L_CODES, MAX_BITS);\n            static_d_desc = new StaticTreeDesc(static_dtree, extra_dbits, 0, D_CODES, MAX_BITS);\n            static_bl_desc = new StaticTreeDesc(new Array(0), extra_blbits, 0, BL_CODES, MAX_BL_BITS);\n            // static_init_done = true;\n        };\n        /* ===========================================================================\n         * Initialize a new block.\n         */\n        var init_block = function init_block(s) {\n            var n;\n            /* iterates over tree elements */\n            /* Initialize the trees. */\n            for (n = 0; n < L_CODES; n++) {\n                s.dyn_ltree[n * 2] =\n                    /* .Freq */\n                    0;\n            }\n            for (n = 0; n < D_CODES; n++) {\n                s.dyn_dtree[n * 2] =\n                    /* .Freq */\n                    0;\n            }\n            for (n = 0; n < BL_CODES; n++) {\n                s.bl_tree[n * 2] =\n                    /* .Freq */\n                    0;\n            }\n            s.dyn_ltree[END_BLOCK * 2] =\n                /* .Freq */\n                1;\n            s.opt_len = s.static_len = 0;\n            s.last_lit = s.matches = 0;\n        };\n        /* ===========================================================================\n         * Flush the bit buffer and align the output on a byte boundary\n         */\n        var bi_windup = function bi_windup(s) {\n            if (s.bi_valid > 8) {\n                put_short(s, s.bi_buf);\n            }\n            else if (s.bi_valid > 0) {\n                // put_byte(s, (Byte)s->bi_buf);\n                s.pending_buf[s.pending++] = s.bi_buf;\n            }\n            s.bi_buf = 0;\n            s.bi_valid = 0;\n        };\n        /* ===========================================================================\n         * Copy a stored block, storing first the length and its\n         * one's complement if requested.\n         */\n        var copy_block = function copy_block(s, buf, len, header\n        // DeflateState *s;\n        // charf    *buf;    /* the input data */\n        // unsigned len;     /* its length */\n        // int      header;  /* true if block header must be written */\n        ) {\n            bi_windup(s);\n            /* align on byte boundary */\n            if (header) {\n                put_short(s, len);\n                put_short(s, ~len);\n            }\n            //  while (len--) {\n            //    put_byte(s, *buf++);\n            //  }\n            s.pending_buf.set(s.window.subarray(buf, buf + len), s.pending);\n            s.pending += len;\n        };\n        /* ===========================================================================\n         * Compares to subtrees, using the tree depth as tie breaker when\n         * the subtrees have equal frequency. This minimizes the worst case length.\n         */\n        var smaller = function smaller(tree, n, m, depth) {\n            var _n2 = n * 2;\n            var _m2 = m * 2;\n            return (tree[_n2] <\n                /* .Freq */\n                tree[_m2] ||\n                /* .Freq */\n                (tree[_n2] ===\n                    /* .Freq */\n                    tree[_m2] &&\n                    /* .Freq */\n                    depth[n] <= depth[m]));\n        };\n        /* ===========================================================================\n         * Restore the heap property by moving down the tree starting at node k,\n         * exchanging a node with the smallest of its two sons if necessary, stopping\n         * when the heap property is re-established (each father smaller than its\n         * two sons).\n         */\n        var pqdownheap = function pqdownheap(s, tree, k\n        //    deflate_state *s;\n        //    ct_data *tree;  /* the tree to restore */\n        //    int k;               /* node to move down */\n        ) {\n            var v = s.heap[k];\n            var j = k << 1;\n            /* left son of k */\n            while (j <= s.heap_len) {\n                /* Set j to the smallest of the two sons: */\n                if (j < s.heap_len && smaller(tree, s.heap[j + 1], s.heap[j], s.depth)) {\n                    j++;\n                }\n                /* Exit if v is smaller than both sons */\n                if (smaller(tree, v, s.heap[j], s.depth)) {\n                    break;\n                }\n                /* Exchange v with the smallest son */\n                s.heap[k] = s.heap[j];\n                k = j;\n                /* And continue down the tree, setting j to the left son of k */\n                j <<= 1;\n            }\n            s.heap[k] = v;\n        }; // inlined manually\n        // const SMALLEST = 1;\n        /* ===========================================================================\n         * Send the block data compressed using the given Huffman trees\n         */\n        var compress_block = function compress_block(s, ltree, dtree\n        //    deflate_state *s;\n        //    const ct_data *ltree; /* literal tree */\n        //    const ct_data *dtree; /* distance tree */\n        ) {\n            var dist;\n            /* distance of matched string */\n            var lc;\n            /* match length or unmatched char (if dist == 0) */\n            var lx = 0;\n            /* running index in l_buf */\n            var code;\n            /* the code to send */\n            var extra;\n            /* number of extra bits to send */\n            if (s.last_lit !== 0) {\n                do {\n                    dist = (s.pending_buf[s.d_buf + lx * 2] << 8) | s.pending_buf[s.d_buf + lx * 2 + 1];\n                    lc = s.pending_buf[s.l_buf + lx];\n                    lx++;\n                    if (dist === 0) {\n                        send_code(s, lc, ltree);\n                        /* send a literal byte */\n                        // Tracecv(isgraph(lc), (stderr,\" '%c' \", lc));\n                    }\n                    else {\n                        /* Here, lc is the match length - MIN_MATCH */\n                        code = _length_code[lc];\n                        send_code(s, code + LITERALS + 1, ltree);\n                        /* send the length code */\n                        extra = extra_lbits[code];\n                        if (extra !== 0) {\n                            lc -= base_length[code];\n                            send_bits(s, lc, extra);\n                            /* send the extra length bits */\n                        }\n                        dist--;\n                        /* dist is now the match distance - 1 */\n                        code = d_code(dist); // Assert (code < D_CODES, \"bad d_code\");\n                        send_code(s, code, dtree);\n                        /* send the distance code */\n                        extra = extra_dbits[code];\n                        if (extra !== 0) {\n                            dist -= base_dist[code];\n                            send_bits(s, dist, extra);\n                            /* send the extra distance bits */\n                        }\n                    }\n                    /* literal or match pair ? */\n                    /* Check that the overlay between pending_buf and d_buf+l_buf is ok: */\n                    // Assert((uInt)(s->pending) < s->lit_bufsize + 2*lx,\n                    //       \"pendingBuf overflow\");\n                } while (lx < s.last_lit);\n            }\n            send_code(s, END_BLOCK, ltree);\n        };\n        /* ===========================================================================\n         * Construct one Huffman tree and assigns the code bit strings and lengths.\n         * Update the total bit length for the current block.\n         * IN assertion: the field freq is set for all tree elements.\n         * OUT assertions: the fields len and code are set to the optimal bit length\n         *     and corresponding code. The length opt_len is updated; static_len is\n         *     also updated if stree is not null. The field max_code is set.\n         */\n        var build_tree = function build_tree(s, desc //    deflate_state *s; //    tree_desc *desc; /* the tree descriptor */\n        ) {\n            var tree = desc.dyn_tree;\n            var stree = desc.stat_desc.static_tree;\n            var has_stree = desc.stat_desc.has_stree;\n            var elems = desc.stat_desc.elems;\n            var n;\n            var m;\n            /* iterate over heap elements */\n            var max_code = -1;\n            /* largest code with non zero frequency */\n            var node;\n            /* new node being created */\n            /* Construct the initial heap, with least frequent element in\n             * heap[SMALLEST]. The sons of heap[n] are heap[2*n] and heap[2*n+1].\n             * heap[0] is not used.\n             */\n            s.heap_len = 0;\n            s.heap_max = HEAP_SIZE;\n            for (n = 0; n < elems; n++) {\n                if (tree[n * 2] !==\n                    /* .Freq */\n                    0) {\n                    s.heap[++s.heap_len] = max_code = n;\n                    s.depth[n] = 0;\n                }\n                else {\n                    tree[n * 2 + 1] =\n                        /* .Len */\n                        0;\n                }\n            }\n            /* The pkzip format requires that at least one distance code exists,\n             * and that at least one bit should be sent even if there is only one\n             * possible code. So to avoid special checks later on we force at least\n             * two codes of non zero frequency.\n             */\n            while (s.heap_len < 2) {\n                node = s.heap[++s.heap_len] = max_code < 2 ? ++max_code : 0;\n                tree[node * 2] =\n                    /* .Freq */\n                    1;\n                s.depth[node] = 0;\n                s.opt_len--;\n                if (has_stree) {\n                    s.static_len -= stree[node * 2 + 1];\n                    /* .Len */\n                }\n                /* node is 0 or 1 so it does not have extra bits */\n            }\n            desc.max_code = max_code;\n            /* The elements heap[heap_len/2+1 .. heap_len] are leaves of the tree,\n             * establish sub-heaps of increasing lengths:\n             */\n            for (n = s.heap_len >> 1; \n            /* int /2 */\n            n >= 1; n--) {\n                pqdownheap(s, tree, n);\n            }\n            /* Construct the Huffman tree by repeatedly combining the least two\n             * frequent nodes.\n             */\n            node = elems;\n            /* next internal node of the tree */\n            do {\n                // pqremove(s, tree, n);  /* n = node of least frequency */\n                /** * pqremove ** */\n                n = s.heap[1];\n                /* SMALLEST */\n                s.heap[1] = s.heap[s.heap_len--];\n                /* SMALLEST */\n                pqdownheap(s, tree, 1\n                /* SMALLEST */\n                );\n                /***/\n                m = s.heap[1];\n                /* SMALLEST */\n                /* m = node of next least frequency */\n                s.heap[--s.heap_max] = n;\n                /* keep the nodes sorted by frequency */\n                s.heap[--s.heap_max] = m;\n                /* Create a new node father of n and m */\n                tree[node * 2] =\n                    /* .Freq */\n                    tree[n * 2] +\n                        /* .Freq */\n                        tree[m * 2];\n                /* .Freq */\n                s.depth[node] = (s.depth[n] >= s.depth[m] ? s.depth[n] : s.depth[m]) + 1;\n                tree[n * 2 + 1] =\n                    /* .Dad */\n                    tree[m * 2 + 1] =\n                        /* .Dad */\n                        node;\n                /* and insert the new node in the heap */\n                s.heap[1] = node++;\n                /* SMALLEST */\n                pqdownheap(s, tree, 1\n                /* SMALLEST */\n                );\n            } while (s.heap_len >= 2);\n            s.heap[--s.heap_max] = s.heap[1];\n            /* SMALLEST */\n            /* At this point, the fields freq and dad are set. We can now\n             * generate the bit lengths.\n             */\n            gen_bitlen(s, desc);\n            /* The field len is now set, we can generate the bit codes */\n            gen_codes(tree, max_code, s.bl_count);\n        };\n        /* ===========================================================================\n         * Scan a literal or distance tree to determine the frequencies of the codes\n         * in the bit length tree.\n         */\n        var scan_tree = function scan_tree(s, tree, max_code\n        //    deflate_state *s;\n        //    ct_data *tree;   /* the tree to be scanned */\n        //    int max_code;    /* and its largest code of non zero frequency */\n        ) {\n            var n;\n            /* iterates over all tree elements */\n            var prevlen = -1;\n            /* last emitted length */\n            var curlen;\n            /* length of current code */\n            var nextlen = tree[0 * 2 + 1];\n            /* .Len */\n            /* length of next code */\n            var count = 0;\n            /* repeat count of the current code */\n            var max_count = 7;\n            /* max repeat count */\n            var min_count = 4;\n            /* min repeat count */\n            if (nextlen === 0) {\n                max_count = 138;\n                min_count = 3;\n            }\n            tree[(max_code + 1) * 2 + 1] =\n                /* .Len */\n                0xffff;\n            /* guard */\n            for (n = 0; n <= max_code; n++) {\n                curlen = nextlen;\n                nextlen = tree[(n + 1) * 2 + 1];\n                /* .Len */\n                if (++count < max_count && curlen === nextlen) {\n                    continue;\n                }\n                else if (count < min_count) {\n                    s.bl_tree[curlen * 2] +=\n                        /* .Freq */\n                        count;\n                }\n                else if (curlen !== 0) {\n                    if (curlen !== prevlen) {\n                        s.bl_tree[curlen * 2] /* .Freq */++;\n                    }\n                    s.bl_tree[REP_3_6 * 2] /* .Freq */++;\n                }\n                else if (count <= 10) {\n                    s.bl_tree[REPZ_3_10 * 2] /* .Freq */++;\n                }\n                else {\n                    s.bl_tree[REPZ_11_138 * 2] /* .Freq */++;\n                }\n                count = 0;\n                prevlen = curlen;\n                if (nextlen === 0) {\n                    max_count = 138;\n                    min_count = 3;\n                }\n                else if (curlen === nextlen) {\n                    max_count = 6;\n                    min_count = 3;\n                }\n                else {\n                    max_count = 7;\n                    min_count = 4;\n                }\n            }\n        };\n        /* ===========================================================================\n         * Send a literal or distance tree in compressed form, using the codes in\n         * bl_tree.\n         */\n        var send_tree = function send_tree(s, tree, max_code\n        //    deflate_state *s;\n        //    ct_data *tree; /* the tree to be scanned */\n        //    int max_code;       /* and its largest code of non zero frequency */\n        ) {\n            var n;\n            /* iterates over all tree elements */\n            var prevlen = -1;\n            /* last emitted length */\n            var curlen;\n            /* length of current code */\n            var nextlen = tree[0 * 2 + 1];\n            /* .Len */\n            /* length of next code */\n            var count = 0;\n            /* repeat count of the current code */\n            var max_count = 7;\n            /* max repeat count */\n            var min_count = 4;\n            /* min repeat count */\n            /* tree[max_code+1].Len = -1; */\n            /* guard already set */\n            if (nextlen === 0) {\n                max_count = 138;\n                min_count = 3;\n            }\n            for (n = 0; n <= max_code; n++) {\n                curlen = nextlen;\n                nextlen = tree[(n + 1) * 2 + 1];\n                /* .Len */\n                if (++count < max_count && curlen === nextlen) {\n                    continue;\n                }\n                else if (count < min_count) {\n                    do {\n                        send_code(s, curlen, s.bl_tree);\n                    } while (--count !== 0);\n                }\n                else if (curlen !== 0) {\n                    if (curlen !== prevlen) {\n                        send_code(s, curlen, s.bl_tree);\n                        count--;\n                    } // Assert(count >= 3 && count <= 6, \" 3_6?\");\n                    send_code(s, REP_3_6, s.bl_tree);\n                    send_bits(s, count - 3, 2);\n                }\n                else if (count <= 10) {\n                    send_code(s, REPZ_3_10, s.bl_tree);\n                    send_bits(s, count - 3, 3);\n                }\n                else {\n                    send_code(s, REPZ_11_138, s.bl_tree);\n                    send_bits(s, count - 11, 7);\n                }\n                count = 0;\n                prevlen = curlen;\n                if (nextlen === 0) {\n                    max_count = 138;\n                    min_count = 3;\n                }\n                else if (curlen === nextlen) {\n                    max_count = 6;\n                    min_count = 3;\n                }\n                else {\n                    max_count = 7;\n                    min_count = 4;\n                }\n            }\n        };\n        /* ===========================================================================\n         * Construct the Huffman tree for the bit lengths and return the index in\n         * bl_order of the last bit length code to send.\n         */\n        var build_bl_tree = function build_bl_tree(s) {\n            var max_blindex;\n            /* index of last bit length code of non zero freq */\n            /* Determine the bit length frequencies for literal and distance trees */\n            scan_tree(s, s.dyn_ltree, s.l_desc.max_code);\n            scan_tree(s, s.dyn_dtree, s.d_desc.max_code);\n            /* Build the bit length tree: */\n            build_tree(s, s.bl_desc);\n            /* opt_len now includes the length of the tree representations, except\n             * the lengths of the bit lengths codes and the 5+5+4 bits for the counts.\n             */\n            /* Determine the number of bit length codes to send. The pkzip format\n             * requires that at least 4 bit length codes be sent. (appnote.txt says\n             * 3 but the actual value used is 4.)\n             */\n            for (max_blindex = BL_CODES - 1; max_blindex >= 3; max_blindex--) {\n                if (s.bl_tree[bl_order[max_blindex] * 2 + 1] !==\n                    /* .Len */\n                    0) {\n                    break;\n                }\n            }\n            /* Update opt_len to include the bit length tree and counts */\n            s.opt_len += 3 * (max_blindex + 1) + 5 + 5 + 4; // Tracev((stderr, \"\\ndyn trees: dyn %ld, stat %ld\",\n            //        s->opt_len, s->static_len));\n            return max_blindex;\n        };\n        /* ===========================================================================\n         * Send the header for a block using dynamic Huffman trees: the counts, the\n         * lengths of the bit length codes, the literal tree and the distance tree.\n         * IN assertion: lcodes >= 257, dcodes >= 1, blcodes >= 4.\n         */\n        var send_all_trees = function send_all_trees(s, lcodes, dcodes, blcodes //    deflate_state *s; //    int lcodes, dcodes, blcodes; /* number of codes for each tree */\n        ) {\n            var rank;\n            /* index in bl_order */\n            // Assert (lcodes >= 257 && dcodes >= 1 && blcodes >= 4, \"not enough codes\");\n            // Assert (lcodes <= L_CODES && dcodes <= D_CODES && blcodes <= BL_CODES,\n            //        \"too many codes\");\n            // Tracev((stderr, \"\\nbl counts: \"));\n            send_bits(s, lcodes - 257, 5);\n            /* not +255 as stated in appnote.txt */\n            send_bits(s, dcodes - 1, 5);\n            send_bits(s, blcodes - 4, 4);\n            /* not -3 as stated in appnote.txt */\n            for (rank = 0; rank < blcodes; rank++) {\n                // Tracev((stderr, \"\\nbl code %2d \", bl_order[rank]));\n                send_bits(s, s.bl_tree[bl_order[rank] * 2 + 1], \n                /* .Len */\n                3);\n            } // Tracev((stderr, \"\\nbl tree: sent %ld\", s->bits_sent));\n            send_tree(s, s.dyn_ltree, lcodes - 1);\n            /* literal tree */\n            // Tracev((stderr, \"\\nlit tree: sent %ld\", s->bits_sent));\n            send_tree(s, s.dyn_dtree, dcodes - 1);\n            /* distance tree */\n            // Tracev((stderr, \"\\ndist tree: sent %ld\", s->bits_sent));\n        };\n        /* ===========================================================================\n         * Check if the data type is TEXT or BINARY, using the following algorithm:\n         * - TEXT if the two conditions below are satisfied:\n         *    a) There are no non-portable control characters belonging to the\n         *       \"black list\" (0..6, 14..25, 28..31).\n         *    b) There is at least one printable character belonging to the\n         *       \"white list\" (9 {TAB}, 10 {LF}, 13 {CR}, 32..255).\n         * - BINARY otherwise.\n         * - The following partially-portable control characters form a\n         *   \"gray list\" that is ignored in this detection algorithm:\n         *   (7 {BEL}, 8 {BS}, 11 {VT}, 12 {FF}, 26 {SUB}, 27 {ESC}).\n         * IN assertion: the fields Freq of dyn_ltree are set.\n         */\n        var detect_data_type = function detect_data_type(s) {\n            /* black_mask is the bit mask of black-listed bytes\n             * set bits 0..6, 14..25, and 28..31\n             * 0xf3ffc07f = binary 11110011111111111100000001111111\n             */\n            var black_mask = 0xf3ffc07f;\n            var n;\n            /* Check for non-textual (\"black-listed\") bytes. */\n            for (n = 0; n <= 31; n++, black_mask >>>= 1) {\n                if (black_mask & 1 &&\n                    s.dyn_ltree[n * 2] !==\n                        /* .Freq */\n                        0) {\n                    return Z_BINARY;\n                }\n            }\n            /* Check for textual (\"white-listed\") bytes. */\n            if (s.dyn_ltree[9 * 2] !==\n                /* .Freq */\n                0 ||\n                s.dyn_ltree[10 * 2] !==\n                    /* .Freq */\n                    0 ||\n                s.dyn_ltree[13 * 2] !==\n                    /* .Freq */\n                    0) {\n                return Z_TEXT;\n            }\n            for (n = 32; n < LITERALS; n++) {\n                if (s.dyn_ltree[n * 2] !==\n                    /* .Freq */\n                    0) {\n                    return Z_TEXT;\n                }\n            }\n            /* There are no \"black-listed\" or \"white-listed\" bytes:\n             * this stream either is empty or has tolerated (\"gray-listed\") bytes only.\n             */\n            return Z_BINARY;\n        };\n        var static_init_done = false;\n        /* ===========================================================================\n         * Initialize the tree data structures for a new zlib stream.\n         */\n        var _tr_init = function _tr_init(s) {\n            if (!static_init_done) {\n                tr_static_init();\n                static_init_done = true;\n            }\n            s.l_desc = new TreeDesc(s.dyn_ltree, static_l_desc);\n            s.d_desc = new TreeDesc(s.dyn_dtree, static_d_desc);\n            s.bl_desc = new TreeDesc(s.bl_tree, static_bl_desc);\n            s.bi_buf = 0;\n            s.bi_valid = 0;\n            /* Initialize the first block of the first file: */\n            init_block(s);\n        };\n        /* ===========================================================================\n         * Send a stored block\n         */\n        var _tr_stored_block = function _tr_stored_block(s, buf, stored_len, last\n        // DeflateState *s;\n        // charf *buf;       /* input block */\n        // ulg stored_len;   /* length of input block */\n        // int last;         /* one if this is the last block for a file */\n        ) {\n            send_bits(s, (STORED_BLOCK << 1) + (last ? 1 : 0), 3);\n            /* send block type */\n            copy_block(s, buf, stored_len, true);\n            /* with header */\n        };\n        /* ===========================================================================\n         * Send one empty static block to give enough lookahead for inflate.\n         * This takes 10 bits, of which 7 may remain in the bit buffer.\n         */\n        var _tr_align = function _tr_align(s) {\n            send_bits(s, STATIC_TREES << 1, 3);\n            send_code(s, END_BLOCK, static_ltree);\n            bi_flush(s);\n        };\n        /* ===========================================================================\n         * Determine the best encoding for the current block: dynamic trees, static\n         * trees or store, and output the encoded block to the zip file.\n         */\n        var _tr_flush_block = function _tr_flush_block(s, buf, stored_len, last\n        // DeflateState *s;\n        // charf *buf;       /* input block, or NULL if too old */\n        // ulg stored_len;   /* length of input block */\n        // int last;         /* one if this is the last block for a file */\n        ) {\n            var opt_lenb;\n            var static_lenb;\n            /* opt_len and static_len in bytes */\n            var max_blindex = 0;\n            /* index of last bit length code of non zero freq */\n            /* Build the Huffman trees unless a stored block is forced */\n            if (s.level > 0) {\n                /* Check if the file is binary or text */\n                if (s.strm.data_type === Z_UNKNOWN) {\n                    s.strm.data_type = detect_data_type(s);\n                }\n                /* Construct the literal and distance trees */\n                build_tree(s, s.l_desc); // Tracev((stderr, \"\\nlit data: dyn %ld, stat %ld\", s->opt_len,\n                //        s->static_len));\n                build_tree(s, s.d_desc); // Tracev((stderr, \"\\ndist data: dyn %ld, stat %ld\", s->opt_len,\n                //        s->static_len));\n                /* At this point, opt_len and static_len are the total bit lengths of\n                 * the compressed block data, excluding the tree representations.\n                 */\n                /* Build the bit length tree for the above two trees, and get the index\n                 * in bl_order of the last bit length code to send.\n                 */\n                max_blindex = build_bl_tree(s);\n                /* Determine the best encoding. Compute the block lengths in bytes. */\n                opt_lenb = (s.opt_len + 3 + 7) >>> 3;\n                static_lenb = (s.static_len + 3 + 7) >>> 3; // Tracev((stderr, \"\\nopt %lu(%lu) stat %lu(%lu) stored %lu lit %u \",\n                //        opt_lenb, s->opt_len, static_lenb, s->static_len, stored_len,\n                //        s->last_lit));\n                if (static_lenb <= opt_lenb) {\n                    opt_lenb = static_lenb;\n                }\n            }\n            else {\n                // Assert(buf != (char*)0, \"lost buf\");\n                opt_lenb = static_lenb = stored_len + 5;\n                /* force a stored block */\n            }\n            if (stored_len + 4 <= opt_lenb && buf !== -1) {\n                /* 4: two words for the lengths */\n                /* The test buf != NULL is only necessary if LIT_BUFSIZE > WSIZE.\n                 * Otherwise we can't have processed more than WSIZE input bytes since\n                 * the last block flush, because compression would have been\n                 * successful. If LIT_BUFSIZE <= WSIZE, it is never too late to\n                 * transform a block into a stored block.\n                 */\n                _tr_stored_block(s, buf, stored_len, last);\n            }\n            else if (s.strategy === Z_FIXED || static_lenb === opt_lenb) {\n                send_bits(s, (STATIC_TREES << 1) + (last ? 1 : 0), 3);\n                compress_block(s, static_ltree, static_dtree);\n            }\n            else {\n                send_bits(s, (DYN_TREES << 1) + (last ? 1 : 0), 3);\n                send_all_trees(s, s.l_desc.max_code + 1, s.d_desc.max_code + 1, max_blindex + 1);\n                compress_block(s, s.dyn_ltree, s.dyn_dtree);\n            } // Assert (s->compressed_len == s->bits_sent, \"bad compressed size\");\n            /* The above check is made mod 2^32, for files larger than 512 MB\n             * and uLong implemented on 32 bits.\n             */\n            init_block(s);\n            if (last) {\n                bi_windup(s);\n            } // Tracev((stderr,\"\\ncomprlen %lu(%lu) \", s->compressed_len>>3,\n            //       s->compressed_len-7*last));\n        };\n        /* ===========================================================================\n         * Save the match info and tally the frequency counts. Return true if\n         * the current block must be flushed.\n         */\n        var _tr_tally = function _tr_tally(s, dist, lc\n        //    deflate_state *s;\n        //    unsigned dist;  /* distance of matched string */\n        //    unsigned lc;    /* match length-MIN_MATCH or unmatched char (if dist==0) */\n        ) {\n            // let out_length, in_length, dcode;\n            s.pending_buf[s.d_buf + s.last_lit * 2] = (dist >>> 8) & 0xff;\n            s.pending_buf[s.d_buf + s.last_lit * 2 + 1] = dist & 0xff;\n            s.pending_buf[s.l_buf + s.last_lit] = lc & 0xff;\n            s.last_lit++;\n            if (dist === 0) {\n                /* lc is the unmatched char */\n                s.dyn_ltree[lc * 2] /* .Freq */++;\n            }\n            else {\n                s.matches++;\n                /* Here, lc is the match length - MIN_MATCH */\n                dist--;\n                /* dist = match distance - 1 */\n                // Assert((ush)dist < (ush)MAX_DIST(s) &&\n                //       (ush)lc <= (ush)(MAX_MATCH-MIN_MATCH) &&\n                //       (ush)d_code(dist) < (ush)D_CODES,  \"_tr_tally: bad match\");\n                s.dyn_ltree[(_length_code[lc] + LITERALS + 1) * 2] /* .Freq */++;\n                s.dyn_dtree[d_code(dist) * 2] /* .Freq */++;\n            } // (!) This block is disabled in zlib defaults,\n            // don't enable it for binary compatibility\n            // #ifdef TRUNCATE_BLOCK\n            //  /* Try to guess if it is profitable to stop the current block here */\n            //  if ((s.last_lit & 0x1fff) === 0 && s.level > 2) {\n            //    /* Compute an upper bound for the compressed length */\n            //    out_length = s.last_lit*8;\n            //    in_length = s.strstart - s.block_start;\n            //\n            //    for (dcode = 0; dcode < D_CODES; dcode++) {\n            //      out_length += s.dyn_dtree[dcode*2]/*.Freq*/ * (5 + extra_dbits[dcode]);\n            //    }\n            //    out_length >>>= 3;\n            //    //Tracev((stderr,\"\\nlast_lit %u, in %ld, out ~%ld(%ld%%) \",\n            //    //       s->last_lit, in_length, out_length,\n            //    //       100L - out_length*100L/in_length));\n            //    if (s.matches < (s.last_lit>>1)/*int /2*/ && out_length < (in_length>>1)/*int /2*/) {\n            //      return true;\n            //    }\n            //  }\n            // #endif\n            return s.last_lit === s.lit_bufsize - 1;\n            /* We avoid equality with lit_bufsize because of wraparound at 64K\n             * on 16 bit machines and because stored blocks are restricted to\n             * 64K-1 bytes.\n             */\n        };\n        var _tr_init_1 = _tr_init;\n        var _tr_stored_block_1 = _tr_stored_block;\n        var _tr_flush_block_1 = _tr_flush_block;\n        var _tr_tally_1 = _tr_tally;\n        var _tr_align_1 = _tr_align;\n        var trees = {\n            _tr_init: _tr_init_1,\n            _tr_stored_block: _tr_stored_block_1,\n            _tr_flush_block: _tr_flush_block_1,\n            _tr_tally: _tr_tally_1,\n            _tr_align: _tr_align_1,\n        };\n        // It isn't worth it to make additional optimizations as in original.\n        // Small size is preferable.\n        // (C) 1995-2013 Jean-loup Gailly and Mark Adler\n        // (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n        //\n        // This software is provided 'as-is', without any express or implied\n        // warranty. In no event will the authors be held liable for any damages\n        // arising from the use of this software.\n        //\n        // Permission is granted to anyone to use this software for any purpose,\n        // including commercial applications, and to alter it and redistribute it\n        // freely, subject to the following restrictions:\n        //\n        // 1. The origin of this software must not be misrepresented; you must not\n        //   claim that you wrote the original software. If you use this software\n        //   in a product, an acknowledgment in the product documentation would be\n        //   appreciated but is not required.\n        // 2. Altered source versions must be plainly marked as such, and must not be\n        //   misrepresented as being the original software.\n        // 3. This notice may not be removed or altered from any source distribution.\n        var adler32 = function adler32(adler, buf, len, pos) {\n            var s1 = (adler & 0xffff) | 0;\n            var s2 = ((adler >>> 16) & 0xffff) | 0;\n            var n = 0;\n            while (len !== 0) {\n                // Set limit ~ twice less than 5552, to keep\n                // s2 in 31-bits, because we force signed ints.\n                // in other case %= will fail.\n                n = len > 2000 ? 2000 : len;\n                len -= n;\n                do {\n                    s1 = (s1 + buf[pos++]) | 0;\n                    s2 = (s2 + s1) | 0;\n                } while (--n);\n                s1 %= 65521;\n                s2 %= 65521;\n            }\n            return s1 | (s2 << 16) | 0;\n        };\n        var adler32_1 = adler32;\n        // So write code to minimize size - no pregenerated tables\n        // and array tools dependencies.\n        // (C) 1995-2013 Jean-loup Gailly and Mark Adler\n        // (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n        //\n        // This software is provided 'as-is', without any express or implied\n        // warranty. In no event will the authors be held liable for any damages\n        // arising from the use of this software.\n        //\n        // Permission is granted to anyone to use this software for any purpose,\n        // including commercial applications, and to alter it and redistribute it\n        // freely, subject to the following restrictions:\n        //\n        // 1. The origin of this software must not be misrepresented; you must not\n        //   claim that you wrote the original software. If you use this software\n        //   in a product, an acknowledgment in the product documentation would be\n        //   appreciated but is not required.\n        // 2. Altered source versions must be plainly marked as such, and must not be\n        //   misrepresented as being the original software.\n        // 3. This notice may not be removed or altered from any source distribution.\n        // Use ordinary array, since untyped makes no boost here\n        var makeTable = function makeTable() {\n            var c;\n            var table = [];\n            for (var n = 0; n < 256; n++) {\n                c = n;\n                for (var k = 0; k < 8; k++) {\n                    c = c & 1 ? 0xedb88320 ^ (c >>> 1) : c >>> 1;\n                }\n                table[n] = c;\n            }\n            return table;\n        }; // Create table on load. Just 255 signed longs. Not a problem.\n        var crcTable = new Uint32Array(makeTable());\n        var crc32 = function crc32(crc, buf, len, pos) {\n            var t = crcTable;\n            var end = pos + len;\n            crc ^= -1;\n            for (var i = pos; i < end; i++) {\n                crc = (crc >>> 8) ^ t[(crc ^ buf[i]) & 0xff];\n            }\n            return crc ^ -1; // >>> 0;\n        };\n        var crc32_1 = crc32;\n        // (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n        //\n        // This software is provided 'as-is', without any express or implied\n        // warranty. In no event will the authors be held liable for any damages\n        // arising from the use of this software.\n        //\n        // Permission is granted to anyone to use this software for any purpose,\n        // including commercial applications, and to alter it and redistribute it\n        // freely, subject to the following restrictions:\n        //\n        // 1. The origin of this software must not be misrepresented; you must not\n        //   claim that you wrote the original software. If you use this software\n        //   in a product, an acknowledgment in the product documentation would be\n        //   appreciated but is not required.\n        // 2. Altered source versions must be plainly marked as such, and must not be\n        //   misrepresented as being the original software.\n        // 3. This notice may not be removed or altered from any source distribution.\n        var messages = {\n            2: 'need dictionary',\n            /* Z_NEED_DICT       2  */\n            1: 'stream end',\n            /* Z_STREAM_END      1  */\n            0: '',\n            /* Z_OK              0  */\n            '-1': 'file error',\n            /* Z_ERRNO         (-1) */\n            '-2': 'stream error',\n            /* Z_STREAM_ERROR  (-2) */\n            '-3': 'data error',\n            /* Z_DATA_ERROR    (-3) */\n            '-4': 'insufficient memory',\n            /* Z_MEM_ERROR     (-4) */\n            '-5': 'buffer error',\n            /* Z_BUF_ERROR     (-5) */\n            '-6': 'incompatible version',\n            /* Z_VERSION_ERROR (-6) */\n        };\n        // (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n        //\n        // This software is provided 'as-is', without any express or implied\n        // warranty. In no event will the authors be held liable for any damages\n        // arising from the use of this software.\n        //\n        // Permission is granted to anyone to use this software for any purpose,\n        // including commercial applications, and to alter it and redistribute it\n        // freely, subject to the following restrictions:\n        //\n        // 1. The origin of this software must not be misrepresented; you must not\n        //   claim that you wrote the original software. If you use this software\n        //   in a product, an acknowledgment in the product documentation would be\n        //   appreciated but is not required.\n        // 2. Altered source versions must be plainly marked as such, and must not be\n        //   misrepresented as being the original software.\n        // 3. This notice may not be removed or altered from any source distribution.\n        var constants = {\n            /* Allowed flush values; see deflate() and inflate() below for details */\n            Z_NO_FLUSH: 0,\n            Z_PARTIAL_FLUSH: 1,\n            Z_SYNC_FLUSH: 2,\n            Z_FULL_FLUSH: 3,\n            Z_FINISH: 4,\n            Z_BLOCK: 5,\n            Z_TREES: 6,\n            /* Return codes for the compression/decompression functions. Negative values\n             * are errors, positive values are used for special but normal events.\n             */\n            Z_OK: 0,\n            Z_STREAM_END: 1,\n            Z_NEED_DICT: 2,\n            Z_ERRNO: -1,\n            Z_STREAM_ERROR: -2,\n            Z_DATA_ERROR: -3,\n            Z_MEM_ERROR: -4,\n            Z_BUF_ERROR: -5,\n            // Z_VERSION_ERROR: -6,\n            /* compression levels */\n            Z_NO_COMPRESSION: 0,\n            Z_BEST_SPEED: 1,\n            Z_BEST_COMPRESSION: 9,\n            Z_DEFAULT_COMPRESSION: -1,\n            Z_FILTERED: 1,\n            Z_HUFFMAN_ONLY: 2,\n            Z_RLE: 3,\n            Z_FIXED: 4,\n            Z_DEFAULT_STRATEGY: 0,\n            /* Possible values of the data_type field (though see inflate()) */\n            Z_BINARY: 0,\n            Z_TEXT: 1,\n            // Z_ASCII:                1, // = Z_TEXT (deprecated)\n            Z_UNKNOWN: 2,\n            /* The deflate compression method */\n            Z_DEFLATED: 8, // Z_NULL:                 null // Use -1 or null inline, depending on var type\n        };\n        // (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n        //\n        // This software is provided 'as-is', without any express or implied\n        // warranty. In no event will the authors be held liable for any damages\n        // arising from the use of this software.\n        //\n        // Permission is granted to anyone to use this software for any purpose,\n        // including commercial applications, and to alter it and redistribute it\n        // freely, subject to the following restrictions:\n        //\n        // 1. The origin of this software must not be misrepresented; you must not\n        //   claim that you wrote the original software. If you use this software\n        //   in a product, an acknowledgment in the product documentation would be\n        //   appreciated but is not required.\n        // 2. Altered source versions must be plainly marked as such, and must not be\n        //   misrepresented as being the original software.\n        // 3. This notice may not be removed or altered from any source distribution.\n        var _tr_init$1 = trees._tr_init;\n        var _tr_stored_block$1 = trees._tr_stored_block;\n        var _tr_flush_block$1 = trees._tr_flush_block;\n        var _tr_tally$1 = trees._tr_tally;\n        var _tr_align$1 = trees._tr_align;\n        /* Public constants ========================================================== */\n        /* =========================================================================== */\n        var Z_NO_FLUSH = constants.Z_NO_FLUSH;\n        var Z_PARTIAL_FLUSH = constants.Z_PARTIAL_FLUSH;\n        var Z_FULL_FLUSH = constants.Z_FULL_FLUSH;\n        var Z_FINISH = constants.Z_FINISH;\n        var Z_BLOCK = constants.Z_BLOCK;\n        var Z_OK = constants.Z_OK;\n        var Z_STREAM_END = constants.Z_STREAM_END;\n        var Z_STREAM_ERROR = constants.Z_STREAM_ERROR;\n        var Z_DATA_ERROR = constants.Z_DATA_ERROR;\n        var Z_BUF_ERROR = constants.Z_BUF_ERROR;\n        var Z_DEFAULT_COMPRESSION = constants.Z_DEFAULT_COMPRESSION;\n        var Z_FILTERED = constants.Z_FILTERED;\n        var Z_HUFFMAN_ONLY = constants.Z_HUFFMAN_ONLY;\n        var Z_RLE = constants.Z_RLE;\n        var Z_FIXED$1 = constants.Z_FIXED;\n        var Z_DEFAULT_STRATEGY = constants.Z_DEFAULT_STRATEGY;\n        var Z_UNKNOWN$1 = constants.Z_UNKNOWN;\n        var Z_DEFLATED = constants.Z_DEFLATED;\n        /* ============================================================================ */\n        var MAX_MEM_LEVEL = 9;\n        /* Maximum value for memLevel in deflateInit2 */\n        var MAX_WBITS = 15;\n        /* 32K LZ77 window */\n        var DEF_MEM_LEVEL = 8;\n        var LENGTH_CODES$1 = 29;\n        /* number of length codes, not counting the special END_BLOCK code */\n        var LITERALS$1 = 256;\n        /* number of literal bytes 0..255 */\n        var L_CODES$1 = LITERALS$1 + 1 + LENGTH_CODES$1;\n        /* number of Literal or Length codes, including the END_BLOCK code */\n        var D_CODES$1 = 30;\n        /* number of distance codes */\n        var BL_CODES$1 = 19;\n        /* number of codes used to transfer the bit lengths */\n        var HEAP_SIZE$1 = 2 * L_CODES$1 + 1;\n        /* maximum heap size */\n        var MAX_BITS$1 = 15;\n        /* All codes must not exceed MAX_BITS bits */\n        var MIN_MATCH$1 = 3;\n        var MAX_MATCH$1 = 258;\n        var MIN_LOOKAHEAD = MAX_MATCH$1 + MIN_MATCH$1 + 1;\n        var PRESET_DICT = 0x20;\n        var INIT_STATE = 42;\n        var EXTRA_STATE = 69;\n        var NAME_STATE = 73;\n        var COMMENT_STATE = 91;\n        var HCRC_STATE = 103;\n        var BUSY_STATE = 113;\n        var FINISH_STATE = 666;\n        var BS_NEED_MORE = 1;\n        /* block not completed, need more input or more output */\n        var BS_BLOCK_DONE = 2;\n        /* block flush performed */\n        var BS_FINISH_STARTED = 3;\n        /* finish started, need only more output at next deflate */\n        var BS_FINISH_DONE = 4;\n        /* finish done, accept no more input or output */\n        var OS_CODE = 0x03; // Unix :) . Don't detect, use this default.\n        var err = function err(strm, errorCode) {\n            strm.msg = messages[errorCode];\n            return errorCode;\n        };\n        var rank = function rank(f) {\n            return (f << 1) - (f > 4 ? 9 : 0);\n        };\n        var zero$1 = function zero(buf) {\n            var len = buf.length;\n            while (--len >= 0) {\n                buf[len] = 0;\n            }\n        };\n        var HASH_ZLIB = function HASH_ZLIB(s, prev, data) {\n            return ((prev << s.hash_shift) ^ data) & s.hash_mask;\n        }; // This hash causes less collisions, https://github.com/nodeca/pako/issues/135\n        // But breaks binary compatibility\n        // let HASH_FAST = (s, prev, data) => ((prev << 8) + (prev >> 8) + (data << 4)) & s.hash_mask;\n        var HASH = HASH_ZLIB;\n        /* =========================================================================\n         * Flush as much pending output as possible. All deflate() output goes\n         * through this function so some applications may wish to modify it\n         * to avoid allocating a large strm->output buffer and copying into it.\n         * (See also read_buf()).\n         */\n        var flush_pending = function flush_pending(strm) {\n            var s = strm.state; // _tr_flush_bits(s);\n            var len = s.pending;\n            if (len > strm.avail_out) {\n                len = strm.avail_out;\n            }\n            if (len === 0) {\n                return;\n            }\n            strm.output.set(s.pending_buf.subarray(s.pending_out, s.pending_out + len), strm.next_out);\n            strm.next_out += len;\n            s.pending_out += len;\n            strm.total_out += len;\n            strm.avail_out -= len;\n            s.pending -= len;\n            if (s.pending === 0) {\n                s.pending_out = 0;\n            }\n        };\n        var flush_block_only = function flush_block_only(s, last) {\n            _tr_flush_block$1(s, s.block_start >= 0 ? s.block_start : -1, s.strstart - s.block_start, last);\n            s.block_start = s.strstart;\n            flush_pending(s.strm);\n        };\n        var put_byte = function put_byte(s, b) {\n            s.pending_buf[s.pending++] = b;\n        };\n        /* =========================================================================\n         * Put a short in the pending buffer. The 16-bit value is put in MSB order.\n         * IN assertion: the stream state is correct and there is enough room in\n         * pending_buf.\n         */\n        var putShortMSB = function putShortMSB(s, b) {\n            //  put_byte(s, (Byte)(b >> 8));\n            //  put_byte(s, (Byte)(b & 0xff));\n            s.pending_buf[s.pending++] = (b >>> 8) & 0xff;\n            s.pending_buf[s.pending++] = b & 0xff;\n        };\n        /* ===========================================================================\n         * Read a new buffer from the current input stream, update the adler32\n         * and total number of bytes read.  All deflate() input goes through\n         * this function so some applications may wish to modify it to avoid\n         * allocating a large strm->input buffer and copying from it.\n         * (See also flush_pending()).\n         */\n        var read_buf = function read_buf(strm, buf, start, size) {\n            var len = strm.avail_in;\n            if (len > size) {\n                len = size;\n            }\n            if (len === 0) {\n                return 0;\n            }\n            strm.avail_in -= len; // zmemcpy(buf, strm->next_in, len);\n            buf.set(strm.input.subarray(strm.next_in, strm.next_in + len), start);\n            if (strm.state.wrap === 1) {\n                strm.adler = adler32_1(strm.adler, buf, len, start);\n            }\n            else if (strm.state.wrap === 2) {\n                strm.adler = crc32_1(strm.adler, buf, len, start);\n            }\n            strm.next_in += len;\n            strm.total_in += len;\n            return len;\n        };\n        /* ===========================================================================\n         * Set match_start to the longest match starting at the given string and\n         * return its length. Matches shorter or equal to prev_length are discarded,\n         * in which case the result is equal to prev_length and match_start is\n         * garbage.\n         * IN assertions: cur_match is the head of the hash chain for the current\n         *   string (strstart) and its distance is <= MAX_DIST, and prev_length >= 1\n         * OUT assertion: the match length is not greater than s->lookahead.\n         */\n        var longest_match = function longest_match(s, cur_match) {\n            var chain_length = s.max_chain_length;\n            /* max hash chain length */\n            var scan = s.strstart;\n            /* current string */\n            var match;\n            /* matched string */\n            var len;\n            /* length of current match */\n            var best_len = s.prev_length;\n            /* best match length so far */\n            var nice_match = s.nice_match;\n            /* stop if match long enough */\n            var limit = s.strstart > s.w_size - MIN_LOOKAHEAD ? s.strstart - (s.w_size - MIN_LOOKAHEAD) : 0;\n            /* NIL */\n            var _win = s.window; // shortcut\n            var wmask = s.w_mask;\n            var prev = s.prev;\n            /* Stop when cur_match becomes <= limit. To simplify the code,\n             * we prevent matches with the string of window index 0.\n             */\n            var strend = s.strstart + MAX_MATCH$1;\n            var scan_end1 = _win[scan + best_len - 1];\n            var scan_end = _win[scan + best_len];\n            /* The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16.\n             * It is easy to get rid of this optimization if necessary.\n             */\n            // Assert(s->hash_bits >= 8 && MAX_MATCH == 258, \"Code too clever\");\n            /* Do not waste too much time if we already have a good match: */\n            if (s.prev_length >= s.good_match) {\n                chain_length >>= 2;\n            }\n            /* Do not look for matches beyond the end of the input. This is necessary\n             * to make deflate deterministic.\n             */\n            if (nice_match > s.lookahead) {\n                nice_match = s.lookahead;\n            } // Assert((ulg)s->strstart <= s->window_size-MIN_LOOKAHEAD, \"need lookahead\");\n            do {\n                // Assert(cur_match < s->strstart, \"no future\");\n                match = cur_match;\n                /* Skip to next match if the match length cannot increase\n                 * or if the match length is less than 2.  Note that the checks below\n                 * for insufficient lookahead only occur occasionally for performance\n                 * reasons.  Therefore uninitialized memory will be accessed, and\n                 * conditional jumps will be made that depend on those values.\n                 * However the length of the match is limited to the lookahead, so\n                 * the output of deflate is not affected by the uninitialized values.\n                 */\n                if (_win[match + best_len] !== scan_end ||\n                    _win[match + best_len - 1] !== scan_end1 ||\n                    _win[match] !== _win[scan] ||\n                    _win[++match] !== _win[scan + 1]) {\n                    continue;\n                }\n                /* The check at best_len-1 can be removed because it will be made\n                 * again later. (This heuristic is not always a win.)\n                 * It is not necessary to compare scan[2] and match[2] since they\n                 * are always equal when the other bytes match, given that\n                 * the hash keys are equal and that HASH_BITS >= 8.\n                 */\n                scan += 2;\n                match++; // Assert(*scan == *match, \"match[2]?\");\n                /* We check for insufficient lookahead only every 8th comparison;\n                 * the 256th check will be made at strstart+258.\n                 */\n                do {\n                    /* jshint noempty:false */\n                } while (_win[++scan] === _win[++match] &&\n                    _win[++scan] === _win[++match] &&\n                    _win[++scan] === _win[++match] &&\n                    _win[++scan] === _win[++match] &&\n                    _win[++scan] === _win[++match] &&\n                    _win[++scan] === _win[++match] &&\n                    _win[++scan] === _win[++match] &&\n                    _win[++scan] === _win[++match] &&\n                    scan < strend); // Assert(scan <= s->window+(unsigned)(s->window_size-1), \"wild scan\");\n                len = MAX_MATCH$1 - (strend - scan);\n                scan = strend - MAX_MATCH$1;\n                if (len > best_len) {\n                    s.match_start = cur_match;\n                    best_len = len;\n                    if (len >= nice_match) {\n                        break;\n                    }\n                    scan_end1 = _win[scan + best_len - 1];\n                    scan_end = _win[scan + best_len];\n                }\n            } while ((cur_match = prev[cur_match & wmask]) > limit && --chain_length !== 0);\n            if (best_len <= s.lookahead) {\n                return best_len;\n            }\n            return s.lookahead;\n        };\n        /* ===========================================================================\n         * Fill the window when the lookahead becomes insufficient.\n         * Updates strstart and lookahead.\n         *\n         * IN assertion: lookahead < MIN_LOOKAHEAD\n         * OUT assertions: strstart <= window_size-MIN_LOOKAHEAD\n         *    At least one byte has been read, or avail_in == 0; reads are\n         *    performed for at least two bytes (required for the zip translate_eol\n         *    option -- not supported here).\n         */\n        var fill_window = function fill_window(s) {\n            var _w_size = s.w_size;\n            var p;\n            var n;\n            var m;\n            var more;\n            var str; // Assert(s->lookahead < MIN_LOOKAHEAD, \"already enough lookahead\");\n            do {\n                more = s.window_size - s.lookahead - s.strstart; // JS ints have 32 bit, block below not needed\n                /* Deal with !@#$% 64K limit: */\n                // if (sizeof(int) <= 2) {\n                //    if (more == 0 && s->strstart == 0 && s->lookahead == 0) {\n                //        more = wsize;\n                //\n                //  } else if (more == (unsigned)(-1)) {\n                //        /* Very unlikely, but possible on 16 bit machine if\n                //         * strstart == 0 && lookahead == 1 (input done a byte at time)\n                //         */\n                //        more--;\n                //    }\n                // }\n                /* If the window is almost full and there is insufficient lookahead,\n                 * move the upper half to the lower one to make room in the upper half.\n                 */\n                if (s.strstart >= _w_size + (_w_size - MIN_LOOKAHEAD)) {\n                    s.window.set(s.window.subarray(_w_size, _w_size + _w_size), 0);\n                    s.match_start -= _w_size;\n                    s.strstart -= _w_size;\n                    /* we now have strstart >= MAX_DIST */\n                    s.block_start -= _w_size;\n                    /* Slide the hash table (could be avoided with 32 bit values\n                   at the expense of memory usage). We slide even when level == 0\n                   to keep the hash table consistent if we switch back to level > 0\n                   later. (Using level 0 permanently is not an optimal usage of\n                   zlib, so we don't care about this pathological case.)\n                   */\n                    n = s.hash_size;\n                    p = n;\n                    do {\n                        m = s.head[--p];\n                        s.head[p] = m >= _w_size ? m - _w_size : 0;\n                    } while (--n);\n                    n = _w_size;\n                    p = n;\n                    do {\n                        m = s.prev[--p];\n                        s.prev[p] = m >= _w_size ? m - _w_size : 0;\n                        /* If n is not on any hash chain, prev[n] is garbage but\n                         * its value will never be used.\n                         */\n                    } while (--n);\n                    more += _w_size;\n                }\n                if (s.strm.avail_in === 0) {\n                    break;\n                }\n                /* If there was no sliding:\n                 *    strstart <= WSIZE+MAX_DIST-1 && lookahead <= MIN_LOOKAHEAD - 1 &&\n                 *    more == window_size - lookahead - strstart\n                 * => more >= window_size - (MIN_LOOKAHEAD-1 + WSIZE + MAX_DIST-1)\n                 * => more >= window_size - 2*WSIZE + 2\n                 * In the BIG_MEM or MMAP case (not yet supported),\n                 *   window_size == input_size + MIN_LOOKAHEAD  &&\n                 *   strstart + s->lookahead <= input_size => more >= MIN_LOOKAHEAD.\n                 * Otherwise, window_size == 2*WSIZE so more >= 2.\n                 * If there was sliding, more >= WSIZE. So in all cases, more >= 2.\n                 */\n                // Assert(more >= 2, \"more < 2\");\n                n = read_buf(s.strm, s.window, s.strstart + s.lookahead, more);\n                s.lookahead += n;\n                /* Initialize the hash value now that we have some input: */\n                if (s.lookahead + s.insert >= MIN_MATCH$1) {\n                    str = s.strstart - s.insert;\n                    s.ins_h = s.window[str];\n                    /* UPDATE_HASH(s, s->ins_h, s->window[str + 1]); */\n                    s.ins_h = HASH(s, s.ins_h, s.window[str + 1]); // #if MIN_MATCH != 3\n                    //        Call update_hash() MIN_MATCH-3 more times\n                    // #endif\n                    while (s.insert) {\n                        /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */\n                        s.ins_h = HASH(s, s.ins_h, s.window[str + MIN_MATCH$1 - 1]);\n                        s.prev[str & s.w_mask] = s.head[s.ins_h];\n                        s.head[s.ins_h] = str;\n                        str++;\n                        s.insert--;\n                        if (s.lookahead + s.insert < MIN_MATCH$1) {\n                            break;\n                        }\n                    }\n                }\n                /* If the whole input has less than MIN_MATCH bytes, ins_h is garbage,\n                 * but this is not important since only literal bytes will be emitted.\n                 */\n            } while (s.lookahead < MIN_LOOKAHEAD && s.strm.avail_in !== 0);\n            /* If the WIN_INIT bytes after the end of the current data have never been\n             * written, then zero those bytes in order to avoid memory check reports of\n             * the use of uninitialized (or uninitialised as Julian writes) bytes by\n             * the longest match routines.  Update the high water mark for the next\n             * time through here.  WIN_INIT is set to MAX_MATCH since the longest match\n             * routines allow scanning to strstart + MAX_MATCH, ignoring lookahead.\n             */\n            //  if (s.high_water < s.window_size) {\n            //    const curr = s.strstart + s.lookahead;\n            //    let init = 0;\n            //\n            //    if (s.high_water < curr) {\n            //      /* Previous high water mark below current data -- zero WIN_INIT\n            //       * bytes or up to end of window, whichever is less.\n            //       */\n            //      init = s.window_size - curr;\n            //      if (init > WIN_INIT)\n            //        init = WIN_INIT;\n            //      zmemzero(s->window + curr, (unsigned)init);\n            //      s->high_water = curr + init;\n            //    }\n            //    else if (s->high_water < (ulg)curr + WIN_INIT) {\n            //      /* High water mark at or above current data, but below current data\n            //       * plus WIN_INIT -- zero out to current data plus WIN_INIT, or up\n            //       * to end of window, whichever is less.\n            //       */\n            //      init = (ulg)curr + WIN_INIT - s->high_water;\n            //      if (init > s->window_size - s->high_water)\n            //        init = s->window_size - s->high_water;\n            //      zmemzero(s->window + s->high_water, (unsigned)init);\n            //      s->high_water += init;\n            //    }\n            //  }\n            //\n            //  Assert((ulg)s->strstart <= s->window_size - MIN_LOOKAHEAD,\n            //    \"not enough room for search\");\n        };\n        /* ===========================================================================\n         * Copy without compression as much as possible from the input stream, return\n         * the current block state.\n         * This function does not insert new strings in the dictionary since\n         * uncompressible data is probably not useful. This function is used\n         * only for the level=0 compression option.\n         * NOTE: this function should be optimized to avoid extra copying from\n         * window to pending_buf.\n         */\n        var deflate_stored = function deflate_stored(s, flush) {\n            /* Stored blocks are limited to 0xffff bytes, pending_buf is limited\n             * to pending_buf_size, and each stored block has a 5 byte header:\n             */\n            var max_block_size = 0xffff;\n            if (max_block_size > s.pending_buf_size - 5) {\n                max_block_size = s.pending_buf_size - 5;\n            }\n            /* Copy as much as possible from input to output: */\n            for (;;) {\n                /* Fill the window as much as possible: */\n                if (s.lookahead <= 1) {\n                    // Assert(s->strstart < s->w_size+MAX_DIST(s) ||\n                    //  s->block_start >= (long)s->w_size, \"slide too late\");\n                    //      if (!(s.strstart < s.w_size + (s.w_size - MIN_LOOKAHEAD) ||\n                    //        s.block_start >= s.w_size)) {\n                    //        throw  new Error(\"slide too late\");\n                    //      }\n                    fill_window(s);\n                    if (s.lookahead === 0 && flush === Z_NO_FLUSH) {\n                        return BS_NEED_MORE;\n                    }\n                    if (s.lookahead === 0) {\n                        break;\n                    }\n                    /* flush the current block */\n                } // Assert(s->block_start >= 0L, \"block gone\");\n                //    if (s.block_start < 0) throw new Error(\"block gone\");\n                s.strstart += s.lookahead;\n                s.lookahead = 0;\n                /* Emit a stored block if pending_buf will be full: */\n                var max_start = s.block_start + max_block_size;\n                if (s.strstart === 0 || s.strstart >= max_start) {\n                    /* strstart == 0 is possible when wraparound on 16-bit machine */\n                    s.lookahead = s.strstart - max_start;\n                    s.strstart = max_start;\n                    /** * FLUSH_BLOCK(s, 0); ** */\n                    flush_block_only(s, false);\n                    if (s.strm.avail_out === 0) {\n                        return BS_NEED_MORE;\n                    }\n                    /***/\n                }\n                /* Flush if we may have to slide, otherwise block_start may become\n                 * negative and the data will be gone:\n                 */\n                if (s.strstart - s.block_start >= s.w_size - MIN_LOOKAHEAD) {\n                    /** * FLUSH_BLOCK(s, 0); ** */\n                    flush_block_only(s, false);\n                    if (s.strm.avail_out === 0) {\n                        return BS_NEED_MORE;\n                    }\n                    /***/\n                }\n            }\n            s.insert = 0;\n            if (flush === Z_FINISH) {\n                /** * FLUSH_BLOCK(s, 1); ** */\n                flush_block_only(s, true);\n                if (s.strm.avail_out === 0) {\n                    return BS_FINISH_STARTED;\n                }\n                /***/\n                return BS_FINISH_DONE;\n            }\n            if (s.strstart > s.block_start) {\n                /** * FLUSH_BLOCK(s, 0); ** */\n                flush_block_only(s, false);\n                if (s.strm.avail_out === 0) {\n                    return BS_NEED_MORE;\n                }\n                /***/\n            }\n            return BS_NEED_MORE;\n        };\n        /* ===========================================================================\n         * Compress as much as possible from the input stream, return the current\n         * block state.\n         * This function does not perform lazy evaluation of matches and inserts\n         * new strings in the dictionary only for unmatched strings or for short\n         * matches. It is used only for the fast compression options.\n         */\n        var deflate_fast = function deflate_fast(s, flush) {\n            var hash_head;\n            /* head of the hash chain */\n            var bflush;\n            /* set if current block must be flushed */\n            for (;;) {\n                /* Make sure that we always have enough lookahead, except\n                 * at the end of the input file. We need MAX_MATCH bytes\n                 * for the next match, plus MIN_MATCH bytes to insert the\n                 * string following the next match.\n                 */\n                if (s.lookahead < MIN_LOOKAHEAD) {\n                    fill_window(s);\n                    if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {\n                        return BS_NEED_MORE;\n                    }\n                    if (s.lookahead === 0) {\n                        break;\n                        /* flush the current block */\n                    }\n                }\n                /* Insert the string window[strstart .. strstart+2] in the\n                 * dictionary, and set hash_head to the head of the hash chain:\n                 */\n                hash_head = 0;\n                /* NIL */\n                if (s.lookahead >= MIN_MATCH$1) {\n                    /** * INSERT_STRING(s, s.strstart, hash_head); ** */\n                    s.ins_h = HASH(s, s.ins_h, s.window[s.strstart + MIN_MATCH$1 - 1]);\n                    hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n                    s.head[s.ins_h] = s.strstart;\n                    /***/\n                }\n                /* Find the longest match, discarding those <= prev_length.\n                 * At this point we have always match_length < MIN_MATCH\n                 */\n                if (hash_head !== 0 &&\n                    /* NIL */\n                    s.strstart - hash_head <= s.w_size - MIN_LOOKAHEAD) {\n                    /* To simplify the code, we prevent matches with the string\n                     * of window index 0 (in particular we have to avoid a match\n                     * of the string with itself at the start of the input file).\n                     */\n                    s.match_length = longest_match(s, hash_head);\n                    /* longest_match() sets match_start */\n                }\n                if (s.match_length >= MIN_MATCH$1) {\n                    // check_match(s, s.strstart, s.match_start, s.match_length); // for debug only\n                    /** * _tr_tally_dist(s, s.strstart - s.match_start,\n                                 s.match_length - MIN_MATCH, bflush); ** */\n                    bflush = _tr_tally$1(s, s.strstart - s.match_start, s.match_length - MIN_MATCH$1);\n                    s.lookahead -= s.match_length;\n                    /* Insert new strings in the hash table only if the match length\n                     * is not too large. This saves time but degrades compression.\n                     */\n                    if (s.match_length <= s.max_lazy_match &&\n                        /* max_insert_length */\n                        s.lookahead >= MIN_MATCH$1) {\n                        s.match_length--;\n                        /* string at strstart already in table */\n                        do {\n                            s.strstart++;\n                            /** * INSERT_STRING(s, s.strstart, hash_head); ** */\n                            s.ins_h = HASH(s, s.ins_h, s.window[s.strstart + MIN_MATCH$1 - 1]);\n                            hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n                            s.head[s.ins_h] = s.strstart;\n                            /***/\n                            /* strstart never exceeds WSIZE-MAX_MATCH, so there are\n                             * always MIN_MATCH bytes ahead.\n                             */\n                        } while (--s.match_length !== 0);\n                        s.strstart++;\n                    }\n                    else {\n                        s.strstart += s.match_length;\n                        s.match_length = 0;\n                        s.ins_h = s.window[s.strstart];\n                        /* UPDATE_HASH(s, s.ins_h, s.window[s.strstart+1]); */\n                        s.ins_h = HASH(s, s.ins_h, s.window[s.strstart + 1]); // #if MIN_MATCH != 3\n                        //                Call UPDATE_HASH() MIN_MATCH-3 more times\n                        // #endif\n                        /* If lookahead < MIN_MATCH, ins_h is garbage, but it does not\n                         * matter since it will be recomputed at next deflate call.\n                         */\n                    }\n                }\n                else {\n                    /* No match, output a literal byte */\n                    // Tracevv((stderr,\"%c\", s.window[s.strstart]));\n                    /** * _tr_tally_lit(s, s.window[s.strstart], bflush); ** */\n                    bflush = _tr_tally$1(s, 0, s.window[s.strstart]);\n                    s.lookahead--;\n                    s.strstart++;\n                }\n                if (bflush) {\n                    /** * FLUSH_BLOCK(s, 0); ** */\n                    flush_block_only(s, false);\n                    if (s.strm.avail_out === 0) {\n                        return BS_NEED_MORE;\n                    }\n                    /***/\n                }\n            }\n            s.insert = s.strstart < MIN_MATCH$1 - 1 ? s.strstart : MIN_MATCH$1 - 1;\n            if (flush === Z_FINISH) {\n                /** * FLUSH_BLOCK(s, 1); ** */\n                flush_block_only(s, true);\n                if (s.strm.avail_out === 0) {\n                    return BS_FINISH_STARTED;\n                }\n                /***/\n                return BS_FINISH_DONE;\n            }\n            if (s.last_lit) {\n                /** * FLUSH_BLOCK(s, 0); ** */\n                flush_block_only(s, false);\n                if (s.strm.avail_out === 0) {\n                    return BS_NEED_MORE;\n                }\n                /***/\n            }\n            return BS_BLOCK_DONE;\n        };\n        /* ===========================================================================\n         * Same as above, but achieves better compression. We use a lazy\n         * evaluation for matches: a match is finally adopted only if there is\n         * no better match at the next window position.\n         */\n        var deflate_slow = function deflate_slow(s, flush) {\n            var hash_head;\n            /* head of hash chain */\n            var bflush;\n            /* set if current block must be flushed */\n            var max_insert;\n            /* Process the input block. */\n            for (;;) {\n                /* Make sure that we always have enough lookahead, except\n                 * at the end of the input file. We need MAX_MATCH bytes\n                 * for the next match, plus MIN_MATCH bytes to insert the\n                 * string following the next match.\n                 */\n                if (s.lookahead < MIN_LOOKAHEAD) {\n                    fill_window(s);\n                    if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {\n                        return BS_NEED_MORE;\n                    }\n                    if (s.lookahead === 0) {\n                        break;\n                    }\n                    /* flush the current block */\n                }\n                /* Insert the string window[strstart .. strstart+2] in the\n                 * dictionary, and set hash_head to the head of the hash chain:\n                 */\n                hash_head = 0;\n                /* NIL */\n                if (s.lookahead >= MIN_MATCH$1) {\n                    /** * INSERT_STRING(s, s.strstart, hash_head); ** */\n                    s.ins_h = HASH(s, s.ins_h, s.window[s.strstart + MIN_MATCH$1 - 1]);\n                    hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n                    s.head[s.ins_h] = s.strstart;\n                    /***/\n                }\n                /* Find the longest match, discarding those <= prev_length.\n                 */\n                s.prev_length = s.match_length;\n                s.prev_match = s.match_start;\n                s.match_length = MIN_MATCH$1 - 1;\n                if (hash_head !== 0 &&\n                    /* NIL */\n                    s.prev_length < s.max_lazy_match &&\n                    s.strstart - hash_head <= s.w_size - MIN_LOOKAHEAD\n                /* MAX_DIST(s) */\n                ) {\n                    /* To simplify the code, we prevent matches with the string\n                     * of window index 0 (in particular we have to avoid a match\n                     * of the string with itself at the start of the input file).\n                     */\n                    s.match_length = longest_match(s, hash_head);\n                    /* longest_match() sets match_start */\n                    if (s.match_length <= 5 &&\n                        (s.strategy === Z_FILTERED || (s.match_length === MIN_MATCH$1 && s.strstart - s.match_start > 4096))\n                    /* TOO_FAR */\n                    ) {\n                        /* If prev_match is also MIN_MATCH, match_start is garbage\n                         * but we will ignore the current match anyway.\n                         */\n                        s.match_length = MIN_MATCH$1 - 1;\n                    }\n                }\n                /* If there was a match at the previous step and the current\n                 * match is not better, output the previous match:\n                 */\n                if (s.prev_length >= MIN_MATCH$1 && s.match_length <= s.prev_length) {\n                    max_insert = s.strstart + s.lookahead - MIN_MATCH$1;\n                    /* Do not insert strings in hash table beyond this. */\n                    // check_match(s, s.strstart-1, s.prev_match, s.prev_length);\n                    /** *_tr_tally_dist(s, s.strstart - 1 - s.prev_match,\n                                 s.prev_length - MIN_MATCH, bflush);** */\n                    bflush = _tr_tally$1(s, s.strstart - 1 - s.prev_match, s.prev_length - MIN_MATCH$1);\n                    /* Insert in hash table all strings up to the end of the match.\n                     * strstart-1 and strstart are already inserted. If there is not\n                     * enough lookahead, the last two strings are not inserted in\n                     * the hash table.\n                     */\n                    s.lookahead -= s.prev_length - 1;\n                    s.prev_length -= 2;\n                    do {\n                        if (++s.strstart <= max_insert) {\n                            /** * INSERT_STRING(s, s.strstart, hash_head); ** */\n                            s.ins_h = HASH(s, s.ins_h, s.window[s.strstart + MIN_MATCH$1 - 1]);\n                            hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n                            s.head[s.ins_h] = s.strstart;\n                            /***/\n                        }\n                    } while (--s.prev_length !== 0);\n                    s.match_available = 0;\n                    s.match_length = MIN_MATCH$1 - 1;\n                    s.strstart++;\n                    if (bflush) {\n                        /** * FLUSH_BLOCK(s, 0); ** */\n                        flush_block_only(s, false);\n                        if (s.strm.avail_out === 0) {\n                            return BS_NEED_MORE;\n                        }\n                        /***/\n                    }\n                }\n                else if (s.match_available) {\n                    /* If there was no match at the previous position, output a\n                     * single literal. If there was a match but the current match\n                     * is longer, truncate the previous match to a single literal.\n                     */\n                    // Tracevv((stderr,\"%c\", s->window[s->strstart-1]));\n                    /** * _tr_tally_lit(s, s.window[s.strstart-1], bflush); ** */\n                    bflush = _tr_tally$1(s, 0, s.window[s.strstart - 1]);\n                    if (bflush) {\n                        /** * FLUSH_BLOCK_ONLY(s, 0) ** */\n                        flush_block_only(s, false);\n                        /***/\n                    }\n                    s.strstart++;\n                    s.lookahead--;\n                    if (s.strm.avail_out === 0) {\n                        return BS_NEED_MORE;\n                    }\n                }\n                else {\n                    /* There is no previous match to compare with, wait for\n                     * the next step to decide.\n                     */\n                    s.match_available = 1;\n                    s.strstart++;\n                    s.lookahead--;\n                }\n            } // Assert (flush != Z_NO_FLUSH, \"no flush?\");\n            if (s.match_available) {\n                // Tracevv((stderr,\"%c\", s->window[s->strstart-1]));\n                /** * _tr_tally_lit(s, s.window[s.strstart-1], bflush); ** */\n                bflush = _tr_tally$1(s, 0, s.window[s.strstart - 1]);\n                s.match_available = 0;\n            }\n            s.insert = s.strstart < MIN_MATCH$1 - 1 ? s.strstart : MIN_MATCH$1 - 1;\n            if (flush === Z_FINISH) {\n                /** * FLUSH_BLOCK(s, 1); ** */\n                flush_block_only(s, true);\n                if (s.strm.avail_out === 0) {\n                    return BS_FINISH_STARTED;\n                }\n                /***/\n                return BS_FINISH_DONE;\n            }\n            if (s.last_lit) {\n                /** * FLUSH_BLOCK(s, 0); ** */\n                flush_block_only(s, false);\n                if (s.strm.avail_out === 0) {\n                    return BS_NEED_MORE;\n                }\n                /***/\n            }\n            return BS_BLOCK_DONE;\n        };\n        /* ===========================================================================\n         * For Z_RLE, simply look for runs of bytes, generate matches only of distance\n         * one.  Do not maintain a hash table.  (It will be regenerated if this run of\n         * deflate switches away from Z_RLE.)\n         */\n        var deflate_rle = function deflate_rle(s, flush) {\n            var bflush;\n            /* set if current block must be flushed */\n            var prev;\n            /* byte at distance one to match */\n            var scan;\n            var strend;\n            /* scan goes up to strend for length of run */\n            var _win = s.window;\n            for (;;) {\n                /* Make sure that we always have enough lookahead, except\n                 * at the end of the input file. We need MAX_MATCH bytes\n                 * for the longest run, plus one for the unrolled loop.\n                 */\n                if (s.lookahead <= MAX_MATCH$1) {\n                    fill_window(s);\n                    if (s.lookahead <= MAX_MATCH$1 && flush === Z_NO_FLUSH) {\n                        return BS_NEED_MORE;\n                    }\n                    if (s.lookahead === 0) {\n                        break;\n                    }\n                    /* flush the current block */\n                }\n                /* See how many times the previous byte repeats */\n                s.match_length = 0;\n                if (s.lookahead >= MIN_MATCH$1 && s.strstart > 0) {\n                    scan = s.strstart - 1;\n                    prev = _win[scan];\n                    if (prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan]) {\n                        strend = s.strstart + MAX_MATCH$1;\n                        do {\n                            /* jshint noempty:false */\n                        } while (prev === _win[++scan] &&\n                            prev === _win[++scan] &&\n                            prev === _win[++scan] &&\n                            prev === _win[++scan] &&\n                            prev === _win[++scan] &&\n                            prev === _win[++scan] &&\n                            prev === _win[++scan] &&\n                            prev === _win[++scan] &&\n                            scan < strend);\n                        s.match_length = MAX_MATCH$1 - (strend - scan);\n                        if (s.match_length > s.lookahead) {\n                            s.match_length = s.lookahead;\n                        }\n                    } // Assert(scan <= s->window+(uInt)(s->window_size-1), \"wild scan\");\n                }\n                /* Emit match if have run of MIN_MATCH or longer, else emit literal */\n                if (s.match_length >= MIN_MATCH$1) {\n                    // check_match(s, s.strstart, s.strstart - 1, s.match_length);\n                    /** * _tr_tally_dist(s, 1, s.match_length - MIN_MATCH, bflush); ** */\n                    bflush = _tr_tally$1(s, 1, s.match_length - MIN_MATCH$1);\n                    s.lookahead -= s.match_length;\n                    s.strstart += s.match_length;\n                    s.match_length = 0;\n                }\n                else {\n                    /* No match, output a literal byte */\n                    // Tracevv((stderr,\"%c\", s->window[s->strstart]));\n                    /** * _tr_tally_lit(s, s.window[s.strstart], bflush); ** */\n                    bflush = _tr_tally$1(s, 0, s.window[s.strstart]);\n                    s.lookahead--;\n                    s.strstart++;\n                }\n                if (bflush) {\n                    /** * FLUSH_BLOCK(s, 0); ** */\n                    flush_block_only(s, false);\n                    if (s.strm.avail_out === 0) {\n                        return BS_NEED_MORE;\n                    }\n                    /***/\n                }\n            }\n            s.insert = 0;\n            if (flush === Z_FINISH) {\n                /** * FLUSH_BLOCK(s, 1); ** */\n                flush_block_only(s, true);\n                if (s.strm.avail_out === 0) {\n                    return BS_FINISH_STARTED;\n                }\n                /***/\n                return BS_FINISH_DONE;\n            }\n            if (s.last_lit) {\n                /** * FLUSH_BLOCK(s, 0); ** */\n                flush_block_only(s, false);\n                if (s.strm.avail_out === 0) {\n                    return BS_NEED_MORE;\n                }\n                /***/\n            }\n            return BS_BLOCK_DONE;\n        };\n        /* ===========================================================================\n         * For Z_HUFFMAN_ONLY, do not look for matches.  Do not maintain a hash table.\n         * (It will be regenerated if this run of deflate switches away from Huffman.)\n         */\n        var deflate_huff = function deflate_huff(s, flush) {\n            var bflush;\n            /* set if current block must be flushed */\n            for (;;) {\n                /* Make sure that we have a literal to write. */\n                if (s.lookahead === 0) {\n                    fill_window(s);\n                    if (s.lookahead === 0) {\n                        if (flush === Z_NO_FLUSH) {\n                            return BS_NEED_MORE;\n                        }\n                        break;\n                        /* flush the current block */\n                    }\n                }\n                /* Output a literal byte */\n                s.match_length = 0; // Tracevv((stderr,\"%c\", s->window[s->strstart]));\n                /** * _tr_tally_lit(s, s.window[s.strstart], bflush); ** */\n                bflush = _tr_tally$1(s, 0, s.window[s.strstart]);\n                s.lookahead--;\n                s.strstart++;\n                if (bflush) {\n                    /** * FLUSH_BLOCK(s, 0); ** */\n                    flush_block_only(s, false);\n                    if (s.strm.avail_out === 0) {\n                        return BS_NEED_MORE;\n                    }\n                    /***/\n                }\n            }\n            s.insert = 0;\n            if (flush === Z_FINISH) {\n                /** * FLUSH_BLOCK(s, 1); ** */\n                flush_block_only(s, true);\n                if (s.strm.avail_out === 0) {\n                    return BS_FINISH_STARTED;\n                }\n                /***/\n                return BS_FINISH_DONE;\n            }\n            if (s.last_lit) {\n                /** * FLUSH_BLOCK(s, 0); ** */\n                flush_block_only(s, false);\n                if (s.strm.avail_out === 0) {\n                    return BS_NEED_MORE;\n                }\n                /***/\n            }\n            return BS_BLOCK_DONE;\n        };\n        /* Values for max_lazy_match, good_match and max_chain_length, depending on\n         * the desired pack level (0..9). The values given below have been tuned to\n         * exclude worst case performance for pathological files. Better values may be\n         * found for specific files.\n         */\n        function Config(good_length, max_lazy, nice_length, max_chain, func) {\n            this.good_length = good_length;\n            this.max_lazy = max_lazy;\n            this.nice_length = nice_length;\n            this.max_chain = max_chain;\n            this.func = func;\n        }\n        var configuration_table = [\n            /*      good lazy nice chain */\n            new Config(0, 0, 0, 0, deflate_stored),\n            /* 0 store only */\n            new Config(4, 4, 8, 4, deflate_fast),\n            /* 1 max speed, no lazy matches */\n            new Config(4, 5, 16, 8, deflate_fast),\n            /* 2 */\n            new Config(4, 6, 32, 32, deflate_fast),\n            /* 3 */\n            new Config(4, 4, 16, 16, deflate_slow),\n            /* 4 lazy matches */\n            new Config(8, 16, 32, 32, deflate_slow),\n            /* 5 */\n            new Config(8, 16, 128, 128, deflate_slow),\n            /* 6 */\n            new Config(8, 32, 128, 256, deflate_slow),\n            /* 7 */\n            new Config(32, 128, 258, 1024, deflate_slow),\n            /* 8 */\n            new Config(32, 258, 258, 4096, deflate_slow),\n            /* 9 max compression */\n        ];\n        /* ===========================================================================\n         * Initialize the \"longest match\" routines for a new zlib stream\n         */\n        var lm_init = function lm_init(s) {\n            s.window_size = 2 * s.w_size;\n            /** * CLEAR_HASH(s); ** */\n            zero$1(s.head); // Fill with NIL (= 0);\n            /* Set the default configuration parameters:\n             */\n            s.max_lazy_match = configuration_table[s.level].max_lazy;\n            s.good_match = configuration_table[s.level].good_length;\n            s.nice_match = configuration_table[s.level].nice_length;\n            s.max_chain_length = configuration_table[s.level].max_chain;\n            s.strstart = 0;\n            s.block_start = 0;\n            s.lookahead = 0;\n            s.insert = 0;\n            s.match_length = s.prev_length = MIN_MATCH$1 - 1;\n            s.match_available = 0;\n            s.ins_h = 0;\n        };\n        function DeflateState() {\n            this.strm = null;\n            /* pointer back to this zlib stream */\n            this.status = 0;\n            /* as the name implies */\n            this.pending_buf = null;\n            /* output still pending */\n            this.pending_buf_size = 0;\n            /* size of pending_buf */\n            this.pending_out = 0;\n            /* next pending byte to output to the stream */\n            this.pending = 0;\n            /* nb of bytes in the pending buffer */\n            this.wrap = 0;\n            /* bit 0 true for zlib, bit 1 true for gzip */\n            this.gzhead = null;\n            /* gzip header information to write */\n            this.gzindex = 0;\n            /* where in extra, name, or comment */\n            this.method = Z_DEFLATED;\n            /* can only be DEFLATED */\n            this.last_flush = -1;\n            /* value of flush param for previous deflate call */\n            this.w_size = 0;\n            /* LZ77 window size (32K by default) */\n            this.w_bits = 0;\n            /* log2(w_size)  (8..16) */\n            this.w_mask = 0;\n            /* w_size - 1 */\n            this.window = null;\n            /* Sliding window. Input bytes are read into the second half of the window,\n             * and move to the first half later to keep a dictionary of at least wSize\n             * bytes. With this organization, matches are limited to a distance of\n             * wSize-MAX_MATCH bytes, but this ensures that IO is always\n             * performed with a length multiple of the block size.\n             */\n            this.window_size = 0;\n            /* Actual size of window: 2*wSize, except when the user input buffer\n             * is directly used as sliding window.\n             */\n            this.prev = null;\n            /* Link to older string with same hash index. To limit the size of this\n             * array to 64K, this link is maintained only for the last 32K strings.\n             * An index in this array is thus a window index modulo 32K.\n             */\n            this.head = null;\n            /* Heads of the hash chains or NIL. */\n            this.ins_h = 0;\n            /* hash index of string to be inserted */\n            this.hash_size = 0;\n            /* number of elements in hash table */\n            this.hash_bits = 0;\n            /* log2(hash_size) */\n            this.hash_mask = 0;\n            /* hash_size-1 */\n            this.hash_shift = 0;\n            /* Number of bits by which ins_h must be shifted at each input\n             * step. It must be such that after MIN_MATCH steps, the oldest\n             * byte no longer takes part in the hash key, that is:\n             *   hash_shift * MIN_MATCH >= hash_bits\n             */\n            this.block_start = 0;\n            /* Window position at the beginning of the current output block. Gets\n             * negative when the window is moved backwards.\n             */\n            this.match_length = 0;\n            /* length of best match */\n            this.prev_match = 0;\n            /* previous match */\n            this.match_available = 0;\n            /* set if previous match exists */\n            this.strstart = 0;\n            /* start of string to insert */\n            this.match_start = 0;\n            /* start of matching string */\n            this.lookahead = 0;\n            /* number of valid bytes ahead in window */\n            this.prev_length = 0;\n            /* Length of the best match at previous step. Matches not greater than this\n             * are discarded. This is used in the lazy match evaluation.\n             */\n            this.max_chain_length = 0;\n            /* To speed up deflation, hash chains are never searched beyond this\n             * length.  A higher limit improves compression ratio but degrades the\n             * speed.\n             */\n            this.max_lazy_match = 0;\n            /* Attempt to find a better match only when the current match is strictly\n             * smaller than this value. This mechanism is used only for compression\n             * levels >= 4.\n             */\n            // That's alias to max_lazy_match, don't use directly\n            // this.max_insert_length = 0;\n            /* Insert new strings in the hash table only if the match length is not\n             * greater than this length. This saves time but degrades compression.\n             * max_insert_length is used only for compression levels <= 3.\n             */\n            this.level = 0;\n            /* compression level (1..9) */\n            this.strategy = 0;\n            /* favor or force Huffman coding */\n            this.good_match = 0;\n            /* Use a faster search when the previous match is longer than this */\n            this.nice_match = 0;\n            /* Stop searching when current match exceeds this */\n            /* used by trees.c: */\n            /* Didn't use ct_data typedef below to suppress compiler warning */\n            // struct ct_data_s dyn_ltree[HEAP_SIZE];   /* literal and length tree */\n            // struct ct_data_s dyn_dtree[2*D_CODES+1]; /* distance tree */\n            // struct ct_data_s bl_tree[2*BL_CODES+1];  /* Huffman tree for bit lengths */\n            // Use flat array of DOUBLE size, with interleaved fata,\n            // because JS does not support effective\n            this.dyn_ltree = new Uint16Array(HEAP_SIZE$1 * 2);\n            this.dyn_dtree = new Uint16Array((2 * D_CODES$1 + 1) * 2);\n            this.bl_tree = new Uint16Array((2 * BL_CODES$1 + 1) * 2);\n            zero$1(this.dyn_ltree);\n            zero$1(this.dyn_dtree);\n            zero$1(this.bl_tree);\n            this.l_desc = null;\n            /* desc. for literal tree */\n            this.d_desc = null;\n            /* desc. for distance tree */\n            this.bl_desc = null;\n            /* desc. for bit length tree */\n            // ush bl_count[MAX_BITS+1];\n            this.bl_count = new Uint16Array(MAX_BITS$1 + 1);\n            /* number of codes at each bit length for an optimal tree */\n            // int heap[2*L_CODES+1];      /* heap used to build the Huffman trees */\n            this.heap = new Uint16Array(2 * L_CODES$1 + 1);\n            /* heap used to build the Huffman trees */\n            zero$1(this.heap);\n            this.heap_len = 0;\n            /* number of elements in the heap */\n            this.heap_max = 0;\n            /* element of largest frequency */\n            /* The sons of heap[n] are heap[2*n] and heap[2*n+1]. heap[0] is not used.\n             * The same heap array is used to build all trees.\n             */\n            this.depth = new Uint16Array(2 * L_CODES$1 + 1); // uch depth[2*L_CODES+1];\n            zero$1(this.depth);\n            /* Depth of each subtree used as tie breaker for trees of equal frequency\n             */\n            this.l_buf = 0;\n            /* buffer index for literals or lengths */\n            this.lit_bufsize = 0;\n            /* Size of match buffer for literals/lengths.  There are 4 reasons for\n             * limiting lit_bufsize to 64K:\n             *   - frequencies can be kept in 16 bit counters\n             *   - if compression is not successful for the first block, all input\n             *     data is still in the window so we can still emit a stored block even\n             *     when input comes from standard input.  (This can also be done for\n             *     all blocks if lit_bufsize is not greater than 32K.)\n             *   - if compression is not successful for a file smaller than 64K, we can\n             *     even emit a stored file instead of a stored block (saving 5 bytes).\n             *     This is applicable only for zip (not gzip or zlib).\n             *   - creating new Huffman trees less frequently may not provide fast\n             *     adaptation to changes in the input data statistics. (Take for\n             *     example a binary file with poorly compressible code followed by\n             *     a highly compressible string table.) Smaller buffer sizes give\n             *     fast adaptation but have of course the overhead of transmitting\n             *     trees more frequently.\n             *   - I can't count above 4\n             */\n            this.last_lit = 0;\n            /* running index in l_buf */\n            this.d_buf = 0;\n            /* Buffer index for distances. To simplify the code, d_buf and l_buf have\n             * the same number of elements. To use different lengths, an extra flag\n             * array would be necessary.\n             */\n            this.opt_len = 0;\n            /* bit length of current block with optimal trees */\n            this.static_len = 0;\n            /* bit length of current block with static trees */\n            this.matches = 0;\n            /* number of string matches in current block */\n            this.insert = 0;\n            /* bytes at end of window left to insert */\n            this.bi_buf = 0;\n            /* Output buffer. bits are inserted starting at the bottom (least\n             * significant bits).\n             */\n            this.bi_valid = 0;\n            /* Number of valid bits in bi_buf.  All bits above the last valid bit\n             * are always zero.\n             */\n            // Used for window memory init. We safely ignore it for JS. That makes\n            // sense only for pointers and memory check tools.\n            // this.high_water = 0;\n            /* High water mark offset in window for initialized bytes -- bytes above\n             * this are set to zero in order to avoid memory check warnings when\n             * longest match routines access bytes past the input.  This is then\n             * updated to the new high water mark.\n             */\n        }\n        var deflateResetKeep = function deflateResetKeep(strm) {\n            if (!strm || !strm.state) {\n                return err(strm, Z_STREAM_ERROR);\n            }\n            strm.total_in = strm.total_out = 0;\n            strm.data_type = Z_UNKNOWN$1;\n            var s = strm.state;\n            s.pending = 0;\n            s.pending_out = 0;\n            if (s.wrap < 0) {\n                s.wrap = -s.wrap;\n                /* was made negative by deflate(..., Z_FINISH); */\n            }\n            s.status = s.wrap ? INIT_STATE : BUSY_STATE;\n            strm.adler =\n                s.wrap === 2\n                    ? 0 // crc32(0, Z_NULL, 0)\n                    : 1; // adler32(0, Z_NULL, 0)\n            s.last_flush = Z_NO_FLUSH;\n            _tr_init$1(s);\n            return Z_OK;\n        };\n        var deflateReset = function deflateReset(strm) {\n            var ret = deflateResetKeep(strm);\n            if (ret === Z_OK) {\n                lm_init(strm.state);\n            }\n            return ret;\n        };\n        var deflateSetHeader = function deflateSetHeader(strm, head) {\n            if (!strm || !strm.state) {\n                return Z_STREAM_ERROR;\n            }\n            if (strm.state.wrap !== 2) {\n                return Z_STREAM_ERROR;\n            }\n            strm.state.gzhead = head;\n            return Z_OK;\n        };\n        var deflateInit2 = function deflateInit2(strm, level, method, windowBits, memLevel, strategy) {\n            if (!strm) {\n                // === Z_NULL\n                return Z_STREAM_ERROR;\n            }\n            var wrap = 1;\n            if (level === Z_DEFAULT_COMPRESSION) {\n                level = 6;\n            }\n            if (windowBits < 0) {\n                /* suppress zlib wrapper */\n                wrap = 0;\n                windowBits = -windowBits;\n            }\n            else if (windowBits > 15) {\n                wrap = 2;\n                /* write gzip wrapper instead */\n                windowBits -= 16;\n            }\n            if (memLevel < 1 ||\n                memLevel > MAX_MEM_LEVEL ||\n                method !== Z_DEFLATED ||\n                windowBits < 8 ||\n                windowBits > 15 ||\n                level < 0 ||\n                level > 9 ||\n                strategy < 0 ||\n                strategy > Z_FIXED$1) {\n                return err(strm, Z_STREAM_ERROR);\n            }\n            if (windowBits === 8) {\n                windowBits = 9;\n            }\n            /* until 256-byte window bug fixed */\n            var s = new DeflateState();\n            strm.state = s;\n            s.strm = strm;\n            s.wrap = wrap;\n            s.gzhead = null;\n            s.w_bits = windowBits;\n            s.w_size = 1 << s.w_bits;\n            s.w_mask = s.w_size - 1;\n            s.hash_bits = memLevel + 7;\n            s.hash_size = 1 << s.hash_bits;\n            s.hash_mask = s.hash_size - 1;\n            s.hash_shift = ~~((s.hash_bits + MIN_MATCH$1 - 1) / MIN_MATCH$1);\n            s.window = new Uint8Array(s.w_size * 2);\n            s.head = new Uint16Array(s.hash_size);\n            s.prev = new Uint16Array(s.w_size); // Don't need mem init magic for JS.\n            // s.high_water = 0;  /* nothing written to s->window yet */\n            s.lit_bufsize = 1 << (memLevel + 6);\n            /* 16K elements by default */\n            s.pending_buf_size = s.lit_bufsize * 4;\n            // overlay = (ushf *) ZALLOC(strm, s->lit_bufsize, sizeof(ush)+2);\n            // s->pending_buf = (uchf *) overlay;\n            // It is offset from `s.pending_buf` (size is `s.lit_bufsize * 2`)\n            s.pending_buf = new Uint8Array(s.pending_buf_size);\n            // s->d_buf = overlay + s->lit_bufsize/sizeof(ush);\n            s.d_buf = 1 * s.lit_bufsize; // s->l_buf = s->pending_buf + (1+sizeof(ush))*s->lit_bufsize;\n            s.l_buf = (1 + 2) * s.lit_bufsize;\n            s.level = level;\n            s.strategy = strategy;\n            s.method = method;\n            return deflateReset(strm);\n        };\n        var deflateInit = function deflateInit(strm, level) {\n            return deflateInit2(strm, level, Z_DEFLATED, MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY);\n        };\n        var deflate = function deflate(strm, flush) {\n            var beg;\n            var val; // for gzip header write only\n            if (!strm || !strm.state || flush > Z_BLOCK || flush < 0) {\n                return strm ? err(strm, Z_STREAM_ERROR) : Z_STREAM_ERROR;\n            }\n            var s = strm.state;\n            if (!strm.output || (!strm.input && strm.avail_in !== 0) || (s.status === FINISH_STATE && flush !== Z_FINISH)) {\n                return err(strm, strm.avail_out === 0 ? Z_BUF_ERROR : Z_STREAM_ERROR);\n            }\n            s.strm = strm;\n            /* just in case */\n            var old_flush = s.last_flush;\n            s.last_flush = flush;\n            /* Write the header */\n            if (s.status === INIT_STATE) {\n                if (s.wrap === 2) {\n                    // GZIP header\n                    strm.adler = 0; // crc32(0L, Z_NULL, 0);\n                    put_byte(s, 31);\n                    put_byte(s, 139);\n                    put_byte(s, 8);\n                    if (!s.gzhead) {\n                        // s->gzhead == Z_NULL\n                        put_byte(s, 0);\n                        put_byte(s, 0);\n                        put_byte(s, 0);\n                        put_byte(s, 0);\n                        put_byte(s, 0);\n                        put_byte(s, s.level === 9 ? 2 : s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ? 4 : 0);\n                        put_byte(s, OS_CODE);\n                        s.status = BUSY_STATE;\n                    }\n                    else {\n                        put_byte(s, (s.gzhead.text ? 1 : 0) +\n                            (s.gzhead.hcrc ? 2 : 0) +\n                            (!s.gzhead.extra ? 0 : 4) +\n                            (!s.gzhead.name ? 0 : 8) +\n                            (!s.gzhead.comment ? 0 : 16));\n                        put_byte(s, s.gzhead.time & 0xff);\n                        put_byte(s, (s.gzhead.time >> 8) & 0xff);\n                        put_byte(s, (s.gzhead.time >> 16) & 0xff);\n                        put_byte(s, (s.gzhead.time >> 24) & 0xff);\n                        put_byte(s, s.level === 9 ? 2 : s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ? 4 : 0);\n                        put_byte(s, s.gzhead.os & 0xff);\n                        if (s.gzhead.extra && s.gzhead.extra.length) {\n                            put_byte(s, s.gzhead.extra.length & 0xff);\n                            put_byte(s, (s.gzhead.extra.length >> 8) & 0xff);\n                        }\n                        if (s.gzhead.hcrc) {\n                            strm.adler = crc32_1(strm.adler, s.pending_buf, s.pending, 0);\n                        }\n                        s.gzindex = 0;\n                        s.status = EXTRA_STATE;\n                    }\n                } // DEFLATE header\n                else {\n                    var header = (Z_DEFLATED + ((s.w_bits - 8) << 4)) << 8;\n                    var level_flags = -1;\n                    if (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2) {\n                        level_flags = 0;\n                    }\n                    else if (s.level < 6) {\n                        level_flags = 1;\n                    }\n                    else if (s.level === 6) {\n                        level_flags = 2;\n                    }\n                    else {\n                        level_flags = 3;\n                    }\n                    header |= level_flags << 6;\n                    if (s.strstart !== 0) {\n                        header |= PRESET_DICT;\n                    }\n                    header += 31 - (header % 31);\n                    s.status = BUSY_STATE;\n                    putShortMSB(s, header);\n                    /* Save the adler32 of the preset dictionary: */\n                    if (s.strstart !== 0) {\n                        putShortMSB(s, strm.adler >>> 16);\n                        putShortMSB(s, strm.adler & 0xffff);\n                    }\n                    strm.adler = 1; // adler32(0L, Z_NULL, 0);\n                }\n            } // #ifdef GZIP\n            if (s.status === EXTRA_STATE) {\n                if (s.gzhead.extra\n                /* != Z_NULL */\n                ) {\n                    beg = s.pending;\n                    /* start of bytes to update crc */\n                    while (s.gzindex < (s.gzhead.extra.length & 0xffff)) {\n                        if (s.pending === s.pending_buf_size) {\n                            if (s.gzhead.hcrc && s.pending > beg) {\n                                strm.adler = crc32_1(strm.adler, s.pending_buf, s.pending - beg, beg);\n                            }\n                            flush_pending(strm);\n                            beg = s.pending;\n                            if (s.pending === s.pending_buf_size) {\n                                break;\n                            }\n                        }\n                        put_byte(s, s.gzhead.extra[s.gzindex] & 0xff);\n                        s.gzindex++;\n                    }\n                    if (s.gzhead.hcrc && s.pending > beg) {\n                        strm.adler = crc32_1(strm.adler, s.pending_buf, s.pending - beg, beg);\n                    }\n                    if (s.gzindex === s.gzhead.extra.length) {\n                        s.gzindex = 0;\n                        s.status = NAME_STATE;\n                    }\n                }\n                else {\n                    s.status = NAME_STATE;\n                }\n            }\n            if (s.status === NAME_STATE) {\n                if (s.gzhead.name\n                /* != Z_NULL */\n                ) {\n                    beg = s.pending;\n                    /* start of bytes to update crc */\n                    // int val;\n                    do {\n                        if (s.pending === s.pending_buf_size) {\n                            if (s.gzhead.hcrc && s.pending > beg) {\n                                strm.adler = crc32_1(strm.adler, s.pending_buf, s.pending - beg, beg);\n                            }\n                            flush_pending(strm);\n                            beg = s.pending;\n                            if (s.pending === s.pending_buf_size) {\n                                val = 1;\n                                break;\n                            }\n                        } // JS specific: little magic to add zero terminator to end of string\n                        if (s.gzindex < s.gzhead.name.length) {\n                            val = s.gzhead.name.charCodeAt(s.gzindex++) & 0xff;\n                        }\n                        else {\n                            val = 0;\n                        }\n                        put_byte(s, val);\n                    } while (val !== 0);\n                    if (s.gzhead.hcrc && s.pending > beg) {\n                        strm.adler = crc32_1(strm.adler, s.pending_buf, s.pending - beg, beg);\n                    }\n                    if (val === 0) {\n                        s.gzindex = 0;\n                        s.status = COMMENT_STATE;\n                    }\n                }\n                else {\n                    s.status = COMMENT_STATE;\n                }\n            }\n            if (s.status === COMMENT_STATE) {\n                if (s.gzhead.comment\n                /* != Z_NULL */\n                ) {\n                    beg = s.pending;\n                    /* start of bytes to update crc */\n                    // int val;\n                    do {\n                        if (s.pending === s.pending_buf_size) {\n                            if (s.gzhead.hcrc && s.pending > beg) {\n                                strm.adler = crc32_1(strm.adler, s.pending_buf, s.pending - beg, beg);\n                            }\n                            flush_pending(strm);\n                            beg = s.pending;\n                            if (s.pending === s.pending_buf_size) {\n                                val = 1;\n                                break;\n                            }\n                        } // JS specific: little magic to add zero terminator to end of string\n                        if (s.gzindex < s.gzhead.comment.length) {\n                            val = s.gzhead.comment.charCodeAt(s.gzindex++) & 0xff;\n                        }\n                        else {\n                            val = 0;\n                        }\n                        put_byte(s, val);\n                    } while (val !== 0);\n                    if (s.gzhead.hcrc && s.pending > beg) {\n                        strm.adler = crc32_1(strm.adler, s.pending_buf, s.pending - beg, beg);\n                    }\n                    if (val === 0) {\n                        s.status = HCRC_STATE;\n                    }\n                }\n                else {\n                    s.status = HCRC_STATE;\n                }\n            }\n            if (s.status === HCRC_STATE) {\n                if (s.gzhead.hcrc) {\n                    if (s.pending + 2 > s.pending_buf_size) {\n                        flush_pending(strm);\n                    }\n                    if (s.pending + 2 <= s.pending_buf_size) {\n                        put_byte(s, strm.adler & 0xff);\n                        put_byte(s, (strm.adler >> 8) & 0xff);\n                        strm.adler = 0; // crc32(0L, Z_NULL, 0);\n                        s.status = BUSY_STATE;\n                    }\n                }\n                else {\n                    s.status = BUSY_STATE;\n                }\n            } // #endif\n            /* Flush as much pending output as possible */\n            if (s.pending !== 0) {\n                flush_pending(strm);\n                if (strm.avail_out === 0) {\n                    /* Since avail_out is 0, deflate will be called again with\n                     * more output space, but possibly with both pending and\n                     * avail_in equal to zero. There won't be anything to do,\n                     * but this is not an error situation so make sure we\n                     * return OK instead of BUF_ERROR at next call of deflate:\n                     */\n                    s.last_flush = -1;\n                    return Z_OK;\n                }\n                /* Make sure there is something to do and avoid duplicate consecutive\n                 * flushes. For repeated and useless calls with Z_FINISH, we keep\n                 * returning Z_STREAM_END instead of Z_BUF_ERROR.\n                 */\n            }\n            else if (strm.avail_in === 0 && rank(flush) <= rank(old_flush) && flush !== Z_FINISH) {\n                return err(strm, Z_BUF_ERROR);\n            }\n            /* User must not provide more input after the first FINISH: */\n            if (s.status === FINISH_STATE && strm.avail_in !== 0) {\n                return err(strm, Z_BUF_ERROR);\n            }\n            /* Start a new block or continue the current one.\n             */\n            if (strm.avail_in !== 0 || s.lookahead !== 0 || (flush !== Z_NO_FLUSH && s.status !== FINISH_STATE)) {\n                var bstate = s.strategy === Z_HUFFMAN_ONLY\n                    ? deflate_huff(s, flush)\n                    : s.strategy === Z_RLE\n                        ? deflate_rle(s, flush)\n                        : configuration_table[s.level].func(s, flush);\n                if (bstate === BS_FINISH_STARTED || bstate === BS_FINISH_DONE) {\n                    s.status = FINISH_STATE;\n                }\n                if (bstate === BS_NEED_MORE || bstate === BS_FINISH_STARTED) {\n                    if (strm.avail_out === 0) {\n                        s.last_flush = -1;\n                        /* avoid BUF_ERROR next call, see above */\n                    }\n                    return Z_OK;\n                    /* If flush != Z_NO_FLUSH && avail_out == 0, the next call\n                     * of deflate should use the same flush parameter to make sure\n                     * that the flush is complete. So we don't have to output an\n                     * empty block here, this will be done at next call. This also\n                     * ensures that for a very small output buffer, we emit at most\n                     * one empty block.\n                     */\n                }\n                if (bstate === BS_BLOCK_DONE) {\n                    if (flush === Z_PARTIAL_FLUSH) {\n                        _tr_align$1(s);\n                    }\n                    else if (flush !== Z_BLOCK) {\n                        /* FULL_FLUSH or SYNC_FLUSH */\n                        _tr_stored_block$1(s, 0, 0, false);\n                        /* For a full flush, this empty block will be recognized\n                         * as a special marker by inflate_sync().\n                         */\n                        if (flush === Z_FULL_FLUSH) {\n                            /** * CLEAR_HASH(s); ** */\n                            /* forget history */\n                            zero$1(s.head); // Fill with NIL (= 0);\n                            if (s.lookahead === 0) {\n                                s.strstart = 0;\n                                s.block_start = 0;\n                                s.insert = 0;\n                            }\n                        }\n                    }\n                    flush_pending(strm);\n                    if (strm.avail_out === 0) {\n                        s.last_flush = -1;\n                        /* avoid BUF_ERROR at next call, see above */\n                        return Z_OK;\n                    }\n                }\n            } // Assert(strm->avail_out > 0, \"bug2\");\n            // if (strm.avail_out <= 0) { throw new Error(\"bug2\");}\n            if (flush !== Z_FINISH) {\n                return Z_OK;\n            }\n            if (s.wrap <= 0) {\n                return Z_STREAM_END;\n            }\n            /* Write the trailer */\n            if (s.wrap === 2) {\n                put_byte(s, strm.adler & 0xff);\n                put_byte(s, (strm.adler >> 8) & 0xff);\n                put_byte(s, (strm.adler >> 16) & 0xff);\n                put_byte(s, (strm.adler >> 24) & 0xff);\n                put_byte(s, strm.total_in & 0xff);\n                put_byte(s, (strm.total_in >> 8) & 0xff);\n                put_byte(s, (strm.total_in >> 16) & 0xff);\n                put_byte(s, (strm.total_in >> 24) & 0xff);\n            }\n            else {\n                putShortMSB(s, strm.adler >>> 16);\n                putShortMSB(s, strm.adler & 0xffff);\n            }\n            flush_pending(strm);\n            /* If avail_out is zero, the application will call deflate again\n             * to flush the rest.\n             */\n            if (s.wrap > 0) {\n                s.wrap = -s.wrap;\n            }\n            /* write the trailer only once! */\n            return s.pending !== 0 ? Z_OK : Z_STREAM_END;\n        };\n        var deflateEnd = function deflateEnd(strm) {\n            if (!strm ||\n                /* == Z_NULL */\n                !strm.state\n            /* == Z_NULL */\n            ) {\n                return Z_STREAM_ERROR;\n            }\n            var status = strm.state.status;\n            if (status !== INIT_STATE &&\n                status !== EXTRA_STATE &&\n                status !== NAME_STATE &&\n                status !== COMMENT_STATE &&\n                status !== HCRC_STATE &&\n                status !== BUSY_STATE &&\n                status !== FINISH_STATE) {\n                return err(strm, Z_STREAM_ERROR);\n            }\n            strm.state = null;\n            return status === BUSY_STATE ? err(strm, Z_DATA_ERROR) : Z_OK;\n        };\n        /* =========================================================================\n         * Initializes the compression dictionary from the given byte\n         * sequence without producing any compressed output.\n         */\n        var deflateSetDictionary = function deflateSetDictionary(strm, dictionary) {\n            var dictLength = dictionary.length;\n            if (!strm ||\n                /* == Z_NULL */\n                !strm.state\n            /* == Z_NULL */\n            ) {\n                return Z_STREAM_ERROR;\n            }\n            var s = strm.state;\n            var wrap = s.wrap;\n            if (wrap === 2 || (wrap === 1 && s.status !== INIT_STATE) || s.lookahead) {\n                return Z_STREAM_ERROR;\n            }\n            /* when using zlib wrappers, compute Adler-32 for provided dictionary */\n            if (wrap === 1) {\n                /* adler32(strm->adler, dictionary, dictLength); */\n                strm.adler = adler32_1(strm.adler, dictionary, dictLength, 0);\n            }\n            s.wrap = 0;\n            /* avoid computing Adler-32 in read_buf */\n            /* if dictionary would fill window, just replace the history */\n            if (dictLength >= s.w_size) {\n                if (wrap === 0) {\n                    /* already empty otherwise */\n                    /** * CLEAR_HASH(s); ** */\n                    zero$1(s.head); // Fill with NIL (= 0);\n                    s.strstart = 0;\n                    s.block_start = 0;\n                    s.insert = 0;\n                }\n                /* use the tail */\n                // dictionary = dictionary.slice(dictLength - s.w_size);\n                var tmpDict = new Uint8Array(s.w_size);\n                tmpDict.set(dictionary.subarray(dictLength - s.w_size, dictLength), 0);\n                dictionary = tmpDict;\n                dictLength = s.w_size;\n            }\n            /* insert dictionary into window and hash */\n            var avail = strm.avail_in;\n            var next = strm.next_in;\n            var input = strm.input;\n            strm.avail_in = dictLength;\n            strm.next_in = 0;\n            strm.input = dictionary;\n            fill_window(s);\n            while (s.lookahead >= MIN_MATCH$1) {\n                var str = s.strstart;\n                var n = s.lookahead - (MIN_MATCH$1 - 1);\n                do {\n                    /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */\n                    s.ins_h = HASH(s, s.ins_h, s.window[str + MIN_MATCH$1 - 1]);\n                    s.prev[str & s.w_mask] = s.head[s.ins_h];\n                    s.head[s.ins_h] = str;\n                    str++;\n                } while (--n);\n                s.strstart = str;\n                s.lookahead = MIN_MATCH$1 - 1;\n                fill_window(s);\n            }\n            s.strstart += s.lookahead;\n            s.block_start = s.strstart;\n            s.insert = s.lookahead;\n            s.lookahead = 0;\n            s.match_length = s.prev_length = MIN_MATCH$1 - 1;\n            s.match_available = 0;\n            strm.next_in = next;\n            strm.input = input;\n            strm.avail_in = avail;\n            s.wrap = wrap;\n            return Z_OK;\n        };\n        var deflateInit_1 = deflateInit;\n        var deflateInit2_1 = deflateInit2;\n        var deflateReset_1 = deflateReset;\n        var deflateResetKeep_1 = deflateResetKeep;\n        var deflateSetHeader_1 = deflateSetHeader;\n        var deflate_2 = deflate;\n        var deflateEnd_1 = deflateEnd;\n        var deflateSetDictionary_1 = deflateSetDictionary;\n        var deflateInfo = 'pako deflate (from Nodeca project)';\n        /* Not implemented\n      module.exports.deflateBound = deflateBound;\n      module.exports.deflateCopy = deflateCopy;\n      module.exports.deflateParams = deflateParams;\n      module.exports.deflatePending = deflatePending;\n      module.exports.deflatePrime = deflatePrime;\n      module.exports.deflateTune = deflateTune;\n      */\n        var deflate_1 = {\n            deflateInit: deflateInit_1,\n            deflateInit2: deflateInit2_1,\n            deflateReset: deflateReset_1,\n            deflateResetKeep: deflateResetKeep_1,\n            deflateSetHeader: deflateSetHeader_1,\n            deflate: deflate_2,\n            deflateEnd: deflateEnd_1,\n            deflateSetDictionary: deflateSetDictionary_1,\n            deflateInfo: deflateInfo,\n        };\n        // Join array of chunks to single array.\n        function flattenChunks(chunks) {\n            // calculate data length\n            var len = 0;\n            for (var i = 0, l = chunks.length; i < l; i++) {\n                len += chunks[i].length;\n            } // join chunks\n            var result = new Uint8Array(len);\n            for (var _i = 0, pos = 0, _l = chunks.length; _i < _l; _i++) {\n                var chunk = chunks[_i];\n                result.set(chunk, pos);\n                pos += chunk.length;\n            }\n            return result;\n        }\n        // String encode/decode helpers\n        //\n        // - apply(Array) can fail on Android 2.2\n        // - apply(Uint8Array) can fail on iOS 5.1 Safari\n        //\n        // Table with utf8 lengths (calculated by first byte of sequence)\n        // Note, that 5 & 6-byte values and some 4-byte values can not be represented in JS,\n        // because max possible codepoint is 0x10ffff\n        var _utf8len = new Uint8Array(256);\n        for (var q = 0; q < 256; q++) {\n            _utf8len[q] = q >= 252 ? 6 : q >= 248 ? 5 : q >= 240 ? 4 : q >= 224 ? 3 : q >= 192 ? 2 : 1;\n        }\n        _utf8len[254] = _utf8len[254] = 1; // Invalid sequence start\n        // convert string to array (typed, when possible)\n        // (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n        //\n        // This software is provided 'as-is', without any express or implied\n        // warranty. In no event will the authors be held liable for any damages\n        // arising from the use of this software.\n        //\n        // Permission is granted to anyone to use this software for any purpose,\n        // including commercial applications, and to alter it and redistribute it\n        // freely, subject to the following restrictions:\n        //\n        // 1. The origin of this software must not be misrepresented; you must not\n        //   claim that you wrote the original software. If you use this software\n        //   in a product, an acknowledgment in the product documentation would be\n        //   appreciated but is not required.\n        // 2. Altered source versions must be plainly marked as such, and must not be\n        //   misrepresented as being the original software.\n        // 3. This notice may not be removed or altered from any source distribution.\n        function ZStream() {\n            /* next input byte */\n            this.input = null; // JS specific, because we have no pointers\n            this.next_in = 0;\n            /* number of bytes available at input */\n            this.avail_in = 0;\n            /* total number of input bytes read so far */\n            this.total_in = 0;\n            /* next output byte should be put there */\n            this.output = null; // JS specific, because we have no pointers\n            this.next_out = 0;\n            /* remaining free space at output */\n            this.avail_out = 0;\n            /* total number of bytes output so far */\n            this.total_out = 0;\n            /* last error message, NULL if no error */\n            this.msg = '';\n            /* Z_NULL */\n            /* not visible by applications */\n            this.state = null;\n            /* best guess about the data type: binary or text */\n            this.data_type = 2;\n            /* Z_UNKNOWN */\n            /* adler32 value of the uncompressed data */\n            this.adler = 0;\n        }\n        var zstream = ZStream;\n        // eslint-disable-next-line @typescript-eslint/unbound-method\n        var toString = Object.prototype.toString;\n        /* Public constants ========================================================== */\n        /* =========================================================================== */\n        var Z_NO_FLUSH$1 = constants.Z_NO_FLUSH;\n        var Z_SYNC_FLUSH = constants.Z_SYNC_FLUSH;\n        var Z_FULL_FLUSH$1 = constants.Z_FULL_FLUSH;\n        var Z_FINISH$1 = constants.Z_FINISH;\n        var Z_OK$1 = constants.Z_OK;\n        var Z_STREAM_END$1 = constants.Z_STREAM_END;\n        var Z_DEFAULT_COMPRESSION$1 = constants.Z_DEFAULT_COMPRESSION;\n        var Z_DEFAULT_STRATEGY$1 = constants.Z_DEFAULT_STRATEGY;\n        var Z_DEFLATED$1 = constants.Z_DEFLATED;\n        /* =========================================================================== */\n        /**\n         * class Deflate\n         *\n         * Generic JS-style wrapper for zlib calls. If you don't need\n         * streaming behaviour - use more simple functions: [[deflate]],\n         * [[deflateRaw]] and [[gzip]].\n         * */\n        /* internal\n         * Deflate.chunks -> Array\n         *\n         * Chunks of output data, if [[Deflate#onData]] not overridden.\n         * */\n        /**\n         * Deflate.result -> Uint8Array\n         *\n         * Compressed result, generated by default [[Deflate#onData]]\n         * and [[Deflate#onEnd]] handlers. Filled after you push last chunk\n         * (call [[Deflate#push]] with `Z_FINISH` / `true` param).\n         * */\n        /**\n         * Deflate.err -> Number\n         *\n         * Error code after deflate finished. 0 (Z_OK) on success.\n         * You will not need it in real life, because deflate errors\n         * are possible only on wrong options or bad `onData` / `onEnd`\n         * custom handlers.\n         * */\n        /**\n         * Deflate.msg -> String\n         *\n         * Error message, if [[Deflate.err]] != 0\n         * */\n        /**\n         * new Deflate(options)\n         * - options (Object): zlib deflate options.\n         *\n         * Creates new deflator instance with specified params. Throws exception\n         * on bad params. Supported options:\n         *\n         * - `level`\n         * - `windowBits`\n         * - `memLevel`\n         * - `strategy`\n         * - `dictionary`\n         *\n         * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n         * for more information on these.\n         *\n         * Additional options, for internal needs:\n         *\n         * * `chunkSize` - size of generated data chunks (16K by default)\n         * * `raw` (Boolean) - do raw deflate\n         * * `gzip` (Boolean) - create gzip wrapper\n         * * `header` (Object) - custom header for gzip\n         * ** `text` (Boolean) - true if compressed data believed to be text\n         * ** `time` (Number) - modification time, unix timestamp\n         * ** `os` (Number) - operation system code\n         * ** `extra` (Array) - array of bytes with extra data (max 65536)\n         * ** `name` (String) - file name (binary string)\n         * ** `comment` (String) - comment (binary string)\n         * ** `hcrc` (Boolean) - true if header crc should be added\n         *\n         * ##### Example:\n         *\n         * ```javascript\n         * const pako = require('pako')\n         *   , chunk1 = new Uint8Array([1,2,3,4,5,6,7,8,9])\n         *   , chunk2 = new Uint8Array([10,11,12,13,14,15,16,17,18,19]);\n         *\n         * const deflate = new pako.Deflate({ level: 3});\n         *\n         * deflate.push(chunk1, false);\n         * deflate.push(chunk2, true);  // true -> last chunk\n         *\n         * if (deflate.err) { throw new Error(deflate.err); }\n         *\n         * console.log(deflate.result);\n         * ```\n         * */\n        function Deflate() {\n            this.options = {\n                level: Z_DEFAULT_COMPRESSION$1,\n                method: Z_DEFLATED$1,\n                chunkSize: 16384,\n                windowBits: 15,\n                memLevel: 8,\n                strategy: Z_DEFAULT_STRATEGY$1,\n            };\n            var opt = this.options;\n            if (opt.raw && opt.windowBits > 0) {\n                opt.windowBits = -opt.windowBits;\n            }\n            else if (opt.gzip && opt.windowBits > 0 && opt.windowBits < 16) {\n                opt.windowBits += 16;\n            }\n            this.err = 0; // error code, if happens (0 = Z_OK)\n            this.msg = ''; // error message\n            this.ended = false; // used to avoid multiple onEnd() calls\n            this.chunks = []; // chunks of compressed data\n            this.strm = new zstream();\n            this.strm.avail_out = 0;\n            var status = deflate_1.deflateInit2(this.strm, opt.level, opt.method, opt.windowBits, opt.memLevel, opt.strategy);\n            if (status !== Z_OK$1) {\n                throw new Error(messages[status]);\n            }\n            if (opt.header) {\n                deflate_1.deflateSetHeader(this.strm, opt.header);\n            }\n            if (opt.dictionary) {\n                var dict; // Convert data if needed\n                if (toString.call(opt.dictionary) === '[object ArrayBuffer]') {\n                    dict = new Uint8Array(opt.dictionary);\n                }\n                else {\n                    dict = opt.dictionary;\n                }\n                status = deflate_1.deflateSetDictionary(this.strm, dict);\n                if (status !== Z_OK$1) {\n                    throw new Error(messages[status]);\n                }\n                this._dict_set = true;\n            }\n        }\n        /**\n         * Deflate#push(data[, flush_mode]) -> Boolean\n         * - data (Uint8Array|ArrayBuffer|String): input data. Strings will be\n         * converted to utf8 byte sequence.\n         * - flush_mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE modes.\n         * See constants. Skipped or `false` means Z_NO_FLUSH, `true` means Z_FINISH.\n         *\n         * Sends input data to deflate pipe, generating [[Deflate#onData]] calls with\n         * new compressed chunks. Returns `true` on success. The last data block must\n         * have `flush_mode` Z_FINISH (or `true`). That will flush internal pending\n         * buffers and call [[Deflate#onEnd]].\n         *\n         * On fail call [[Deflate#onEnd]] with error code and return false.\n         *\n         * ##### Example\n         *\n         * ```javascript\n         * push(chunk, false); // push one of data chunks\n         * ...\n         * push(chunk, true);  // push last chunk\n         * ```\n         * */\n        Deflate.prototype.push = function (data, flush_mode) {\n            var strm = this.strm;\n            var chunkSize = this.options.chunkSize;\n            var status;\n            var _flush_mode;\n            if (this.ended) {\n                return false;\n            }\n            if (flush_mode === ~~flush_mode) {\n                _flush_mode = flush_mode;\n            }\n            else {\n                _flush_mode = flush_mode === true ? Z_FINISH$1 : Z_NO_FLUSH$1;\n            } // Convert data if needed\n            if (toString.call(data) === '[object ArrayBuffer]') {\n                strm.input = new Uint8Array(data);\n            }\n            else {\n                strm.input = data;\n            }\n            strm.next_in = 0;\n            strm.avail_in = strm.input.length;\n            for (;;) {\n                if (strm.avail_out === 0) {\n                    strm.output = new Uint8Array(chunkSize);\n                    strm.next_out = 0;\n                    strm.avail_out = chunkSize;\n                } // Make sure avail_out > 6 to avoid repeating markers\n                if ((_flush_mode === Z_SYNC_FLUSH || _flush_mode === Z_FULL_FLUSH$1) && strm.avail_out <= 6) {\n                    this.onData(strm.output.subarray(0, strm.next_out));\n                    strm.avail_out = 0;\n                    continue;\n                }\n                status = deflate_1.deflate(strm, _flush_mode); // Ended => flush and finish\n                if (status === Z_STREAM_END$1) {\n                    if (strm.next_out > 0) {\n                        this.onData(strm.output.subarray(0, strm.next_out));\n                    }\n                    status = deflate_1.deflateEnd(this.strm);\n                    this.onEnd(status);\n                    this.ended = true;\n                    return status === Z_OK$1;\n                } // Flush if out buffer full\n                if (strm.avail_out === 0) {\n                    this.onData(strm.output);\n                    continue;\n                } // Flush if requested and has data\n                if (_flush_mode > 0 && strm.next_out > 0) {\n                    this.onData(strm.output.subarray(0, strm.next_out));\n                    strm.avail_out = 0;\n                    continue;\n                }\n                if (strm.avail_in === 0) {\n                    break;\n                }\n            }\n            return true;\n        };\n        /**\n         * Deflate#onData(chunk) -> Void\n         * - chunk (Uint8Array): output data.\n         *\n         * By default, stores data blocks in `chunks[]` property and glue\n         * those in `onEnd`. Override this handler, if you need another behaviour.\n         * */\n        Deflate.prototype.onData = function (chunk) {\n            this.chunks.push(chunk);\n        };\n        /**\n         * Deflate#onEnd(status) -> Void\n         * - status (Number): deflate status. 0 (Z_OK) on success,\n         * other if not.\n         *\n         * Called once after you tell deflate that the input stream is\n         * complete (Z_FINISH). By default - join collected chunks,\n         * free memory and fill `results` / `err` properties.\n         * */\n        Deflate.prototype.onEnd = function (status) {\n            // On success - join\n            if (status === Z_OK$1) {\n                this.result = flattenChunks(this.chunks);\n            }\n            this.chunks = [];\n            this.err = status;\n            this.msg = this.strm.msg;\n        };\n        // https://github.com/nodeca/pako/blob/26dff4fb3472c5532b3bd8856421146d35ab7592/lib/utils/strings.js#L26\n        function string2buf(str) {\n            if (typeof TextEncoder === 'function' && TextEncoder.prototype.encode) {\n                return new TextEncoder().encode(str);\n            }\n            var buf;\n            var c;\n            var c2;\n            var m_pos;\n            var i;\n            var str_len = str.length;\n            var buf_len = 0;\n            // count binary size\n            for (m_pos = 0; m_pos < str_len; m_pos++) {\n                c = str.charCodeAt(m_pos);\n                if ((c & 0xfc00) === 0xd800 && m_pos + 1 < str_len) {\n                    c2 = str.charCodeAt(m_pos + 1);\n                    if ((c2 & 0xfc00) === 0xdc00) {\n                        c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n                        m_pos++;\n                    }\n                }\n                buf_len += c < 0x80 ? 1 : c < 0x800 ? 2 : c < 0x10000 ? 3 : 4;\n            }\n            // allocate buffer\n            buf = new Uint8Array(buf_len);\n            // convert\n            for (i = 0, m_pos = 0; i < buf_len; m_pos++) {\n                c = str.charCodeAt(m_pos);\n                if ((c & 0xfc00) === 0xd800 && m_pos + 1 < str_len) {\n                    c2 = str.charCodeAt(m_pos + 1);\n                    if ((c2 & 0xfc00) === 0xdc00) {\n                        c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n                        m_pos++;\n                    }\n                }\n                if (c < 0x80) {\n                    /* one byte */\n                    buf[i++] = c;\n                }\n                else if (c < 0x800) {\n                    /* two bytes */\n                    buf[i++] = 0xc0 | (c >>> 6);\n                    buf[i++] = 0x80 | (c & 0x3f);\n                }\n                else if (c < 0x10000) {\n                    /* three bytes */\n                    buf[i++] = 0xe0 | (c >>> 12);\n                    buf[i++] = 0x80 | ((c >>> 6) & 0x3f);\n                    buf[i++] = 0x80 | (c & 0x3f);\n                }\n                else {\n                    /* four bytes */\n                    buf[i++] = 0xf0 | (c >>> 18);\n                    buf[i++] = 0x80 | ((c >>> 12) & 0x3f);\n                    buf[i++] = 0x80 | ((c >>> 6) & 0x3f);\n                    buf[i++] = 0x80 | (c & 0x3f);\n                }\n            }\n            return buf;\n        }\n        return { Deflate: Deflate, constants: constants, string2buf: string2buf };\n    }\n}\n//# sourceMappingURL=deflateWorker.js.map","import { isExperimentalFeatureEnabled, ONE_SECOND, monitor } from '@datadog/browser-core';\nimport { buildReplayPayload } from './buildReplayPayload';\nimport { Segment } from './segment';\nexport var SEGMENT_DURATION_LIMIT = 30 * ONE_SECOND;\n/**\n * beacon payload max queue size implementation is 64kb\n * ensure that we leave room for logs, rum and potential other users\n */\nexport var SEGMENT_BYTES_LIMIT = 60000;\n// Segments are the main data structure for session replays. They contain context information used\n// for indexing or UI needs, and a list of records (RRWeb 'events', renamed to avoid confusing\n// namings). They are stored without any processing from the intake, and fetched one after the\n// other while a session is being replayed. Their encoding (deflate) are carefully crafted to allow\n// concatenating multiple segments together. Segments have a size overhead (metadata), so our goal is to\n// build segments containing as many records as possible while complying with the various flush\n// strategies to guarantee a good replay quality.\n//\n// When the recording starts, a segment is initially created.  The segment is flushed (finalized and\n// sent) based on various events (non-exhaustive list):\n//\n// * the page visibility change or becomes to unload\n// * the segment duration reaches a limit\n// * the encoded segment bytes count reaches a limit\n// * ...\n//\n// A segment cannot be created without its context.  If the RUM session ends and no session id is\n// available when creating a new segment, records will be ignored, until the session is renewed and\n// a new session id is available.\n//\n// Empty segments (segments with no record) aren't useful and should be ignored.\n//\n// To help investigate session replays issues, each segment is created with a \"creation reason\",\n// indicating why the session has been created.\nexport function startSegmentCollection(lifeCycle, applicationId, sessionManager, viewContexts, httpRequest, worker) {\n    return doStartSegmentCollection(lifeCycle, function () { return computeSegmentContext(applicationId, sessionManager, viewContexts); }, httpRequest, worker);\n}\nexport function doStartSegmentCollection(lifeCycle, getSegmentContext, httpRequest, worker) {\n    var state = {\n        status: 0 /* WaitingForInitialRecord */,\n        nextSegmentCreationReason: 'init',\n    };\n    var unsubscribeViewCreated = lifeCycle.subscribe(2 /* VIEW_CREATED */, function () {\n        flushSegment('view_change');\n    }).unsubscribe;\n    var unsubscribePageExited = lifeCycle.subscribe(9 /* PAGE_EXITED */, function (pageExitEvent) {\n        flushSegment(pageExitEvent.reason);\n    }).unsubscribe;\n    function flushSegment(flushReason) {\n        if (state.status === 1 /* SegmentPending */) {\n            state.segment.flush(flushReason);\n            clearTimeout(state.expirationTimeoutId);\n        }\n        if (flushReason !== 'stop') {\n            state = {\n                status: 0 /* WaitingForInitialRecord */,\n                nextSegmentCreationReason: flushReason,\n            };\n        }\n        else {\n            state = {\n                status: 2 /* Stopped */,\n            };\n        }\n    }\n    function createNewSegment(creationReason, initialRecord) {\n        var context = getSegmentContext();\n        if (!context) {\n            return;\n        }\n        var segment = new Segment(worker, context, creationReason, initialRecord, function (compressedSegmentBytesCount) {\n            if (!segment.flushReason && compressedSegmentBytesCount > SEGMENT_BYTES_LIMIT) {\n                flushSegment('segment_bytes_limit');\n            }\n        }, function (data, rawSegmentBytesCount) {\n            var payload = buildReplayPayload(data, segment.metadata, rawSegmentBytesCount);\n            if (!isExperimentalFeatureEnabled('retry_replay') ||\n                segment.flushReason === 'visibility_hidden' ||\n                segment.flushReason === 'before_unload') {\n                httpRequest.sendOnExit(payload);\n            }\n            else {\n                httpRequest.send(payload);\n            }\n        });\n        state = {\n            status: 1 /* SegmentPending */,\n            segment: segment,\n            expirationTimeoutId: setTimeout(monitor(function () {\n                flushSegment('segment_duration_limit');\n            }), SEGMENT_DURATION_LIMIT),\n        };\n    }\n    return {\n        addRecord: function (record) {\n            switch (state.status) {\n                case 0 /* WaitingForInitialRecord */:\n                    createNewSegment(state.nextSegmentCreationReason, record);\n                    break;\n                case 1 /* SegmentPending */:\n                    state.segment.addRecord(record);\n                    break;\n            }\n        },\n        stop: function () {\n            flushSegment('stop');\n            unsubscribeViewCreated();\n            unsubscribePageExited();\n        },\n    };\n}\nexport function computeSegmentContext(applicationId, sessionManager, viewContexts) {\n    var session = sessionManager.findTrackedSession();\n    var viewContext = viewContexts.findView();\n    if (!session || !viewContext) {\n        return undefined;\n    }\n    return {\n        application: {\n            id: applicationId,\n        },\n        session: {\n            id: session.id,\n        },\n        view: {\n            id: viewContext.id,\n        },\n    };\n}\nexport function setSegmentBytesLimit(newSegmentBytesLimit) {\n    if (newSegmentBytesLimit === void 0) { newSegmentBytesLimit = 60000; }\n    SEGMENT_BYTES_LIMIT = newSegmentBytesLimit;\n}\n//# sourceMappingURL=segmentCollection.js.map","import { addTelemetryError, display, includes, monitor } from '@datadog/browser-core';\nimport { createDeflateWorker } from './deflateWorker';\nvar state = { status: 0 /* Nil */ };\nexport function startDeflateWorker(callback, createDeflateWorkerImpl) {\n    if (createDeflateWorkerImpl === void 0) { createDeflateWorkerImpl = createDeflateWorker; }\n    switch (state.status) {\n        case 0 /* Nil */:\n            state = { status: 1 /* Loading */, callbacks: [callback] };\n            doStartDeflateWorker(createDeflateWorkerImpl);\n            break;\n        case 1 /* Loading */:\n            state.callbacks.push(callback);\n            break;\n        case 2 /* Error */:\n            callback();\n            break;\n        case 3 /* Initialized */:\n            callback(state.worker);\n            break;\n    }\n}\nexport function resetDeflateWorkerState() {\n    state = { status: 0 /* Nil */ };\n}\n/**\n * Starts the deflate worker and handle messages and errors\n *\n * The spec allow browsers to handle worker errors differently:\n * - Chromium throws an exception\n * - Firefox fires an error event\n *\n * more details: https://bugzilla.mozilla.org/show_bug.cgi?id=1736865#c2\n */\nexport function doStartDeflateWorker(createDeflateWorkerImpl) {\n    if (createDeflateWorkerImpl === void 0) { createDeflateWorkerImpl = createDeflateWorker; }\n    try {\n        var worker_1 = createDeflateWorkerImpl();\n        worker_1.addEventListener('error', monitor(onError));\n        worker_1.addEventListener('message', monitor(function (_a) {\n            var data = _a.data;\n            if (data.type === 'errored') {\n                onError(data.error);\n            }\n            else if (data.type === 'initialized') {\n                onInitialized(worker_1);\n            }\n        }));\n        worker_1.postMessage({ action: 'init' });\n        return worker_1;\n    }\n    catch (error) {\n        onError(error);\n    }\n}\nfunction onInitialized(worker) {\n    if (state.status === 1 /* Loading */) {\n        state.callbacks.forEach(function (callback) { return callback(worker); });\n        state = { status: 3 /* Initialized */, worker: worker };\n    }\n}\nfunction onError(error) {\n    if (state.status === 1 /* Loading */) {\n        display.error('Session Replay recording failed to start: an error occurred while creating the Worker:', error);\n        if (error instanceof Event || (error instanceof Error && includes(error.message, 'Content Security Policy'))) {\n            display.error('Please make sure CSP is correctly configured ' +\n                'https://docs.datadoghq.com/real_user_monitoring/faq/content_security_policy');\n        }\n        else {\n            addTelemetryError(error);\n        }\n        state.callbacks.forEach(function (callback) { return callback(); });\n        state = { status: 2 /* Error */ };\n    }\n    else {\n        addTelemetryError(error);\n    }\n}\n//# sourceMappingURL=startDeflateWorker.js.map","import { timeStampNow, createHttpRequest } from '@datadog/browser-core';\nimport { record } from '../domain/record';\nimport { startSegmentCollection, SEGMENT_BYTES_LIMIT } from '../domain/segmentCollection';\nimport { RecordType } from '../types';\nexport function startRecording(lifeCycle, configuration, sessionManager, viewContexts, worker, httpRequest) {\n    var reportError = function (error) {\n        lifeCycle.notify(12 /* RAW_ERROR_COLLECTED */, { error: error });\n    };\n    var replayRequest = httpRequest || createHttpRequest(configuration.sessionReplayEndpointBuilder, SEGMENT_BYTES_LIMIT, reportError);\n    var _a = startSegmentCollection(lifeCycle, configuration.applicationId, sessionManager, viewContexts, replayRequest, worker), addRecord = _a.addRecord, stopSegmentCollection = _a.stop;\n    var _b = record({\n        emit: addRecord,\n        configuration: configuration,\n        lifeCycle: lifeCycle,\n    }), stopRecording = _b.stop, takeSubsequentFullSnapshot = _b.takeSubsequentFullSnapshot, flushMutations = _b.flushMutations;\n    var unsubscribeViewEnded = lifeCycle.subscribe(4 /* VIEW_ENDED */, function () {\n        flushMutations();\n        addRecord({\n            timestamp: timeStampNow(),\n            type: RecordType.ViewEnd,\n        });\n    }).unsubscribe;\n    var unsubscribeViewCreated = lifeCycle.subscribe(2 /* VIEW_CREATED */, function (view) {\n        takeSubsequentFullSnapshot(view.startClocks.timeStamp);\n    }).unsubscribe;\n    return {\n        stop: function () {\n            unsubscribeViewEnded();\n            unsubscribeViewCreated();\n            stopRecording();\n            stopSegmentCollection();\n        },\n    };\n}\n//# sourceMappingURL=startRecording.js.map","import { endsWith, getGlobalObject } from '../tools/utils';\nexport function getEventBridge() {\n    var eventBridgeGlobal = getEventBridgeGlobal();\n    if (!eventBridgeGlobal) {\n        return;\n    }\n    return {\n        getAllowedWebViewHosts: function () {\n            return JSON.parse(eventBridgeGlobal.getAllowedWebViewHosts());\n        },\n        send: function (eventType, event) {\n            eventBridgeGlobal.send(JSON.stringify({ eventType: eventType, event: event }));\n        },\n    };\n}\nexport function canUseEventBridge(currentHost) {\n    var _a;\n    if (currentHost === void 0) { currentHost = (_a = getGlobalObject().location) === null || _a === void 0 ? void 0 : _a.hostname; }\n    var bridge = getEventBridge();\n    return (!!bridge &&\n        bridge\n            .getAllowedWebViewHosts()\n            .some(function (allowedHost) { return currentHost === allowedHost || endsWith(currentHost, \".\".concat(allowedHost)); }));\n}\nfunction getEventBridgeGlobal() {\n    return getGlobalObject().DatadogEventBridge;\n}\n//# sourceMappingURL=eventBridge.js.map","import { canUseEventBridge, noop, runOnReadyState } from '@datadog/browser-core';\nimport { getReplayStats } from '../domain/replayStats';\nimport { startDeflateWorker } from '../domain/segmentCollection';\nexport function makeRecorderApi(startRecordingImpl, startDeflateWorkerImpl) {\n    if (startDeflateWorkerImpl === void 0) { startDeflateWorkerImpl = startDeflateWorker; }\n    if (canUseEventBridge() || !isBrowserSupported()) {\n        return {\n            start: noop,\n            stop: noop,\n            getReplayStats: function () { return undefined; },\n            onRumStart: noop,\n            isRecording: function () { return false; },\n        };\n    }\n    var state = {\n        status: 0 /* Stopped */,\n    };\n    var startStrategy = function () {\n        state = { status: 1 /* IntentToStart */ };\n    };\n    var stopStrategy = function () {\n        state = { status: 0 /* Stopped */ };\n    };\n    return {\n        start: function () { return startStrategy(); },\n        stop: function () { return stopStrategy(); },\n        getReplayStats: getReplayStats,\n        onRumStart: function (lifeCycle, configuration, sessionManager, viewContexts) {\n            lifeCycle.subscribe(7 /* SESSION_EXPIRED */, function () {\n                if (state.status === 2 /* Starting */ || state.status === 3 /* Started */) {\n                    stopStrategy();\n                    state = { status: 1 /* IntentToStart */ };\n                }\n            });\n            lifeCycle.subscribe(8 /* SESSION_RENEWED */, function () {\n                if (state.status === 1 /* IntentToStart */) {\n                    startStrategy();\n                }\n            });\n            startStrategy = function () {\n                var session = sessionManager.findTrackedSession();\n                if (!session || !session.sessionReplayAllowed) {\n                    state = { status: 1 /* IntentToStart */ };\n                    return;\n                }\n                if (state.status === 2 /* Starting */ || state.status === 3 /* Started */) {\n                    return;\n                }\n                state = { status: 2 /* Starting */ };\n                runOnReadyState('interactive', function () {\n                    if (state.status !== 2 /* Starting */) {\n                        return;\n                    }\n                    startDeflateWorkerImpl(function (worker) {\n                        if (state.status !== 2 /* Starting */) {\n                            return;\n                        }\n                        if (!worker) {\n                            state = {\n                                status: 0 /* Stopped */,\n                            };\n                            return;\n                        }\n                        var stopRecording = startRecordingImpl(lifeCycle, configuration, sessionManager, viewContexts, worker).stop;\n                        state = {\n                            status: 3 /* Started */,\n                            stopRecording: stopRecording,\n                        };\n                    });\n                });\n            };\n            stopStrategy = function () {\n                if (state.status === 0 /* Stopped */) {\n                    return;\n                }\n                if (state.status === 3 /* Started */) {\n                    state.stopRecording();\n                }\n                state = {\n                    status: 0 /* Stopped */,\n                };\n            };\n            if (state.status === 1 /* IntentToStart */) {\n                startStrategy();\n            }\n        },\n        isRecording: function () { return state.status === 3 /* Started */; },\n    };\n}\n/**\n * Test for Browser features used while recording\n */\nfunction isBrowserSupported() {\n    return (\n    // Array.from is a bit less supported by browsers than CSSSupportsRule, but has higher chances\n    // to be polyfilled. Test for both to be more confident. We could add more things if we find out\n    // this test is not sufficient.\n    typeof Array.from === 'function' && typeof CSSSupportsRule === 'function');\n}\n//# sourceMappingURL=recorderApi.js.map","// Keep the following in sync with packages/rum-slim/src/entries/main.ts\nimport { defineGlobal, getGlobalObject } from '@datadog/browser-core';\nimport { makeRumPublicApi, startRum } from '@datadog/browser-rum-core';\nimport { startRecording } from '../boot/startRecording';\nimport { makeRecorderApi } from '../boot/recorderApi';\nexport { DefaultPrivacyLevel } from '@datadog/browser-core';\nvar recorderApi = makeRecorderApi(startRecording);\nexport var datadogRum = makeRumPublicApi(startRum, recorderApi);\ndefineGlobal(getGlobalObject(), 'DD_RUM', datadogRum);\n//# sourceMappingURL=main.js.map","// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal');\nvar enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O) {\n  return $keys(O, enumBugKeys);\n};\n","// Styles\nimport \"../../../src/components/VVirtualScroll/VVirtualScroll.sass\"; // Mixins\n\nimport Measurable from '../../mixins/measurable'; // Directives\n\nimport Scroll from '../../directives/scroll'; // Utilities\n\nimport { convertToUnit, getSlot } from '../../util/helpers';\nexport default Measurable.extend({\n  name: 'v-virtual-scroll',\n  directives: {\n    Scroll\n  },\n  props: {\n    bench: {\n      type: [Number, String],\n      default: 0\n    },\n    itemHeight: {\n      type: [Number, String],\n      required: true\n    },\n    items: {\n      type: Array,\n      default: () => []\n    }\n  },\n  data: () => ({\n    first: 0,\n    last: 0,\n    scrollTop: 0\n  }),\n  computed: {\n    __bench() {\n      return parseInt(this.bench, 10);\n    },\n\n    __itemHeight() {\n      return parseInt(this.itemHeight, 10);\n    },\n\n    firstToRender() {\n      return Math.max(0, this.first - this.__bench);\n    },\n\n    lastToRender() {\n      return Math.min(this.items.length, this.last + this.__bench);\n    }\n\n  },\n  watch: {\n    height: 'onScroll',\n    itemHeight: 'onScroll'\n  },\n\n  mounted() {\n    this.last = this.getLast(0);\n  },\n\n  methods: {\n    getChildren() {\n      return this.items.slice(this.firstToRender, this.lastToRender).map(this.genChild);\n    },\n\n    genChild(item, index) {\n      index += this.firstToRender;\n      const top = convertToUnit(index * this.__itemHeight);\n      return this.$createElement('div', {\n        staticClass: 'v-virtual-scroll__item',\n        style: {\n          top\n        },\n        key: index\n      }, getSlot(this, 'default', {\n        index,\n        item\n      }));\n    },\n\n    getFirst() {\n      return Math.floor(this.scrollTop / this.__itemHeight);\n    },\n\n    getLast(first) {\n      const height = parseInt(this.height || 0, 10) || this.$el.clientHeight;\n      return first + Math.ceil(height / this.__itemHeight);\n    },\n\n    onScroll() {\n      this.scrollTop = this.$el.scrollTop;\n      this.first = this.getFirst();\n      this.last = this.getLast(this.first);\n    }\n\n  },\n\n  render(h) {\n    const content = h('div', {\n      staticClass: 'v-virtual-scroll__container',\n      style: {\n        height: convertToUnit(this.items.length * this.__itemHeight)\n      }\n    }, this.getChildren());\n    return h('div', {\n      staticClass: 'v-virtual-scroll',\n      style: this.measurableStyles,\n      directives: [{\n        name: 'scroll',\n        modifiers: {\n          self: true\n        },\n        value: this.onScroll\n      }],\n      on: this.$listeners\n    }, [content]);\n  }\n\n});\n//# sourceMappingURL=VVirtualScroll.js.map","var copyObject = require('./_copyObject'),\n    keysIn = require('./keysIn');\n\n/**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssignIn(object, source) {\n  return object && copyObject(source, keysIn(source), object);\n}\n\nmodule.exports = baseAssignIn;\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","import \"../../../src/components/VGrid/VGrid.sass\";\nimport Vue from 'vue';\nimport mergeData from '../../util/mergeData';\nimport { upperFirst } from '../../util/helpers'; // no xs\n\nconst breakpoints = ['sm', 'md', 'lg', 'xl'];\nconst ALIGNMENT = ['start', 'end', 'center'];\n\nfunction makeProps(prefix, def) {\n  return breakpoints.reduce((props, val) => {\n    props[prefix + upperFirst(val)] = def();\n    return props;\n  }, {});\n}\n\nconst alignValidator = str => [...ALIGNMENT, 'baseline', 'stretch'].includes(str);\n\nconst alignProps = makeProps('align', () => ({\n  type: String,\n  default: null,\n  validator: alignValidator\n}));\n\nconst justifyValidator = str => [...ALIGNMENT, 'space-between', 'space-around'].includes(str);\n\nconst justifyProps = makeProps('justify', () => ({\n  type: String,\n  default: null,\n  validator: justifyValidator\n}));\n\nconst alignContentValidator = str => [...ALIGNMENT, 'space-between', 'space-around', 'stretch'].includes(str);\n\nconst alignContentProps = makeProps('alignContent', () => ({\n  type: String,\n  default: null,\n  validator: alignContentValidator\n}));\nconst propMap = {\n  align: Object.keys(alignProps),\n  justify: Object.keys(justifyProps),\n  alignContent: Object.keys(alignContentProps)\n};\nconst classMap = {\n  align: 'align',\n  justify: 'justify',\n  alignContent: 'align-content'\n};\n\nfunction breakpointClass(type, prop, val) {\n  let className = classMap[type];\n\n  if (val == null) {\n    return undefined;\n  }\n\n  if (prop) {\n    // alignSm -> Sm\n    const breakpoint = prop.replace(type, '');\n    className += `-${breakpoint}`;\n  } // .align-items-sm-center\n\n\n  className += `-${val}`;\n  return className.toLowerCase();\n}\n\nconst cache = new Map();\nexport default Vue.extend({\n  name: 'v-row',\n  functional: true,\n  props: {\n    tag: {\n      type: String,\n      default: 'div'\n    },\n    dense: Boolean,\n    noGutters: Boolean,\n    align: {\n      type: String,\n      default: null,\n      validator: alignValidator\n    },\n    ...alignProps,\n    justify: {\n      type: String,\n      default: null,\n      validator: justifyValidator\n    },\n    ...justifyProps,\n    alignContent: {\n      type: String,\n      default: null,\n      validator: alignContentValidator\n    },\n    ...alignContentProps\n  },\n\n  render(h, {\n    props,\n    data,\n    children\n  }) {\n    // Super-fast memoization based on props, 5x faster than JSON.stringify\n    let cacheKey = '';\n\n    for (const prop in props) {\n      cacheKey += String(props[prop]);\n    }\n\n    let classList = cache.get(cacheKey);\n\n    if (!classList) {\n      classList = []; // Loop through `align`, `justify`, `alignContent` breakpoint props\n\n      let type;\n\n      for (type in propMap) {\n        propMap[type].forEach(prop => {\n          const value = props[prop];\n          const className = breakpointClass(type, prop, value);\n          if (className) classList.push(className);\n        });\n      }\n\n      classList.push({\n        'no-gutters': props.noGutters,\n        'row--dense': props.dense,\n        [`align-${props.align}`]: props.align,\n        [`justify-${props.justify}`]: props.justify,\n        [`align-content-${props.alignContent}`]: props.alignContent\n      });\n      cache.set(cacheKey, classList);\n    }\n\n    return h(props.tag, mergeData(data, {\n      staticClass: 'row',\n      class: classList\n    }), children);\n  }\n\n});\n//# sourceMappingURL=VRow.js.map","var identity = require('./identity'),\n    overRest = require('./_overRest'),\n    setToString = require('./_setToString');\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n  return setToString(overRest(func, start, identity), func + '');\n}\n\nmodule.exports = baseRest;\n","var copyObject = require('./_copyObject'),\n    getSymbolsIn = require('./_getSymbolsIn');\n\n/**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbolsIn(source, object) {\n  return copyObject(source, getSymbolsIn(source), object);\n}\n\nmodule.exports = copySymbolsIn;\n","'use strict';\n\n/******************************************************************************\n * Created 2008-08-19.\n *\n * Dijkstra path-finding functions. Adapted from the Dijkstar Python project.\n *\n * Copyright (C) 2008\n *   Wyatt Baldwin <self@wyattbaldwin.com>\n *   All rights reserved\n *\n * Licensed under the MIT license.\n *\n *   http://www.opensource.org/licenses/mit-license.php\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n *****************************************************************************/\nvar dijkstra = {\n  single_source_shortest_paths: function(graph, s, d) {\n    // Predecessor map for each node that has been encountered.\n    // node ID => predecessor node ID\n    var predecessors = {};\n\n    // Costs of shortest paths from s to all nodes encountered.\n    // node ID => cost\n    var costs = {};\n    costs[s] = 0;\n\n    // Costs of shortest paths from s to all nodes encountered; differs from\n    // `costs` in that it provides easy access to the node that currently has\n    // the known shortest path from s.\n    // XXX: Do we actually need both `costs` and `open`?\n    var open = dijkstra.PriorityQueue.make();\n    open.push(s, 0);\n\n    var closest,\n        u, v,\n        cost_of_s_to_u,\n        adjacent_nodes,\n        cost_of_e,\n        cost_of_s_to_u_plus_cost_of_e,\n        cost_of_s_to_v,\n        first_visit;\n    while (!open.empty()) {\n      // In the nodes remaining in graph that have a known cost from s,\n      // find the node, u, that currently has the shortest path from s.\n      closest = open.pop();\n      u = closest.value;\n      cost_of_s_to_u = closest.cost;\n\n      // Get nodes adjacent to u...\n      adjacent_nodes = graph[u] || {};\n\n      // ...and explore the edges that connect u to those nodes, updating\n      // the cost of the shortest paths to any or all of those nodes as\n      // necessary. v is the node across the current edge from u.\n      for (v in adjacent_nodes) {\n        if (adjacent_nodes.hasOwnProperty(v)) {\n          // Get the cost of the edge running from u to v.\n          cost_of_e = adjacent_nodes[v];\n\n          // Cost of s to u plus the cost of u to v across e--this is *a*\n          // cost from s to v that may or may not be less than the current\n          // known cost to v.\n          cost_of_s_to_u_plus_cost_of_e = cost_of_s_to_u + cost_of_e;\n\n          // If we haven't visited v yet OR if the current known cost from s to\n          // v is greater than the new cost we just found (cost of s to u plus\n          // cost of u to v across e), update v's cost in the cost list and\n          // update v's predecessor in the predecessor list (it's now u).\n          cost_of_s_to_v = costs[v];\n          first_visit = (typeof costs[v] === 'undefined');\n          if (first_visit || cost_of_s_to_v > cost_of_s_to_u_plus_cost_of_e) {\n            costs[v] = cost_of_s_to_u_plus_cost_of_e;\n            open.push(v, cost_of_s_to_u_plus_cost_of_e);\n            predecessors[v] = u;\n          }\n        }\n      }\n    }\n\n    if (typeof d !== 'undefined' && typeof costs[d] === 'undefined') {\n      var msg = ['Could not find a path from ', s, ' to ', d, '.'].join('');\n      throw new Error(msg);\n    }\n\n    return predecessors;\n  },\n\n  extract_shortest_path_from_predecessor_list: function(predecessors, d) {\n    var nodes = [];\n    var u = d;\n    var predecessor;\n    while (u) {\n      nodes.push(u);\n      predecessor = predecessors[u];\n      u = predecessors[u];\n    }\n    nodes.reverse();\n    return nodes;\n  },\n\n  find_path: function(graph, s, d) {\n    var predecessors = dijkstra.single_source_shortest_paths(graph, s, d);\n    return dijkstra.extract_shortest_path_from_predecessor_list(\n      predecessors, d);\n  },\n\n  /**\n   * A very naive priority queue implementation.\n   */\n  PriorityQueue: {\n    make: function (opts) {\n      var T = dijkstra.PriorityQueue,\n          t = {},\n          key;\n      opts = opts || {};\n      for (key in T) {\n        if (T.hasOwnProperty(key)) {\n          t[key] = T[key];\n        }\n      }\n      t.queue = [];\n      t.sorter = opts.sorter || T.default_sorter;\n      return t;\n    },\n\n    default_sorter: function (a, b) {\n      return a.cost - b.cost;\n    },\n\n    /**\n     * Add a new item to the queue and ensure the highest priority element\n     * is at the front of the queue.\n     */\n    push: function (value, cost) {\n      var item = {value: value, cost: cost};\n      this.queue.push(item);\n      this.queue.sort(this.sorter);\n    },\n\n    /**\n     * Return the highest priority element in the queue.\n     */\n    pop: function () {\n      return this.queue.shift();\n    },\n\n    empty: function () {\n      return this.queue.length === 0;\n    }\n  }\n};\n\n\n// node.js module exports\nif (typeof module !== 'undefined') {\n  module.exports = dijkstra;\n}\n","import VSheet from './VSheet';\nexport { VSheet };\nexport default VSheet;\n//# sourceMappingURL=index.js.map","// 7.2.2 IsArray(argument)\nvar cof = require('./_cof');\nmodule.exports = Array.isArray || function isArray(arg) {\n  return cof(arg) == 'Array';\n};\n","var pIE = require('./_object-pie');\nvar createDesc = require('./_property-desc');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar has = require('./_has');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = require('./_descriptors') ? gOPD : function getOwnPropertyDescriptor(O, P) {\n  O = toIObject(O);\n  P = toPrimitive(P, true);\n  if (IE8_DOM_DEFINE) try {\n    return gOPD(O, P);\n  } catch (e) { /* empty */ }\n  if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n","import plugin from './plugin';\n\nexport default plugin;\n","var asciiToArray = require('./_asciiToArray'),\n    hasUnicode = require('./_hasUnicode'),\n    unicodeToArray = require('./_unicodeToArray');\n\n/**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction stringToArray(string) {\n  return hasUnicode(string)\n    ? unicodeToArray(string)\n    : asciiToArray(string);\n}\n\nmodule.exports = stringToArray;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n  var type = typeof value;\n  return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n    ? (value !== '__proto__')\n    : (value === null);\n}\n\nmodule.exports = isKeyable;\n","var $export = require('./_export');\nvar $task = require('./_task');\n$export($export.G + $export.B, {\n  setImmediate: $task.set,\n  clearImmediate: $task.clear\n});\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 \"../../../src/components/VIcon/VIcon.sass\"; // Mixins\n\nimport BindsAttrs from '../../mixins/binds-attrs';\nimport Colorable from '../../mixins/colorable';\nimport Sizeable from '../../mixins/sizeable';\nimport Themeable from '../../mixins/themeable'; // Util\n\nimport { convertToUnit, keys, remapInternalIcon } from '../../util/helpers'; // Types\n\nimport Vue from 'vue';\nimport mixins from '../../util/mixins';\nvar SIZE_MAP;\n\n(function (SIZE_MAP) {\n  SIZE_MAP[\"xSmall\"] = \"12px\";\n  SIZE_MAP[\"small\"] = \"16px\";\n  SIZE_MAP[\"default\"] = \"24px\";\n  SIZE_MAP[\"medium\"] = \"28px\";\n  SIZE_MAP[\"large\"] = \"36px\";\n  SIZE_MAP[\"xLarge\"] = \"40px\";\n})(SIZE_MAP || (SIZE_MAP = {}));\n\nfunction isFontAwesome5(iconType) {\n  return ['fas', 'far', 'fal', 'fab', 'fad', 'fak'].some(val => iconType.includes(val));\n}\n\nfunction isSvgPath(icon) {\n  return /^[mzlhvcsqta]\\s*[-+.0-9][^mlhvzcsqta]+/i.test(icon) && /[\\dz]$/i.test(icon) && icon.length > 4;\n}\n\nconst VIcon = mixins(BindsAttrs, Colorable, Sizeable, Themeable\n/* @vue/component */\n).extend({\n  name: 'v-icon',\n  props: {\n    dense: Boolean,\n    disabled: Boolean,\n    left: Boolean,\n    right: Boolean,\n    size: [Number, String],\n    tag: {\n      type: String,\n      required: false,\n      default: 'i'\n    }\n  },\n  computed: {\n    medium() {\n      return false;\n    },\n\n    hasClickListener() {\n      return Boolean(this.listeners$.click || this.listeners$['!click']);\n    }\n\n  },\n  methods: {\n    getIcon() {\n      let iconName = '';\n      if (this.$slots.default) iconName = this.$slots.default[0].text.trim();\n      return remapInternalIcon(this, iconName);\n    },\n\n    getSize() {\n      const sizes = {\n        xSmall: this.xSmall,\n        small: this.small,\n        medium: this.medium,\n        large: this.large,\n        xLarge: this.xLarge\n      };\n      const explicitSize = keys(sizes).find(key => sizes[key]);\n      return explicitSize && SIZE_MAP[explicitSize] || convertToUnit(this.size);\n    },\n\n    // Component data for both font icon and SVG wrapper span\n    getDefaultData() {\n      return {\n        staticClass: 'v-icon notranslate',\n        class: {\n          'v-icon--disabled': this.disabled,\n          'v-icon--left': this.left,\n          'v-icon--link': this.hasClickListener,\n          'v-icon--right': this.right,\n          'v-icon--dense': this.dense\n        },\n        attrs: {\n          'aria-hidden': !this.hasClickListener,\n          disabled: this.hasClickListener && this.disabled,\n          type: this.hasClickListener ? 'button' : undefined,\n          ...this.attrs$\n        },\n        on: this.listeners$\n      };\n    },\n\n    getSvgWrapperData() {\n      const fontSize = this.getSize();\n      const wrapperData = { ...this.getDefaultData(),\n        style: fontSize ? {\n          fontSize,\n          height: fontSize,\n          width: fontSize\n        } : undefined\n      };\n      this.applyColors(wrapperData);\n      return wrapperData;\n    },\n\n    applyColors(data) {\n      data.class = { ...data.class,\n        ...this.themeClasses\n      };\n      this.setTextColor(this.color, data);\n    },\n\n    renderFontIcon(icon, h) {\n      const newChildren = [];\n      const data = this.getDefaultData();\n      let iconType = 'material-icons'; // Material Icon delimiter is _\n      // https://material.io/icons/\n\n      const delimiterIndex = icon.indexOf('-');\n      const isMaterialIcon = delimiterIndex <= -1;\n\n      if (isMaterialIcon) {\n        // Material icon uses ligatures.\n        newChildren.push(icon);\n      } else {\n        iconType = icon.slice(0, delimiterIndex);\n        if (isFontAwesome5(iconType)) iconType = '';\n      }\n\n      data.class[iconType] = true;\n      data.class[icon] = !isMaterialIcon;\n      const fontSize = this.getSize();\n      if (fontSize) data.style = {\n        fontSize\n      };\n      this.applyColors(data);\n      return h(this.hasClickListener ? 'button' : this.tag, data, newChildren);\n    },\n\n    renderSvgIcon(icon, h) {\n      const svgData = {\n        class: 'v-icon__svg',\n        attrs: {\n          xmlns: 'http://www.w3.org/2000/svg',\n          viewBox: '0 0 24 24',\n          role: 'img',\n          'aria-hidden': true\n        }\n      };\n      const size = this.getSize();\n\n      if (size) {\n        svgData.style = {\n          fontSize: size,\n          height: size,\n          width: size\n        };\n      }\n\n      return h(this.hasClickListener ? 'button' : 'span', this.getSvgWrapperData(), [h('svg', svgData, [h('path', {\n        attrs: {\n          d: icon\n        }\n      })])]);\n    },\n\n    renderSvgIconComponent(icon, h) {\n      const data = {\n        class: {\n          'v-icon__component': true\n        }\n      };\n      const size = this.getSize();\n\n      if (size) {\n        data.style = {\n          fontSize: size,\n          height: size,\n          width: size\n        };\n      }\n\n      this.applyColors(data);\n      const component = icon.component;\n      data.props = icon.props;\n      data.nativeOn = data.on;\n      return h(this.hasClickListener ? 'button' : 'span', this.getSvgWrapperData(), [h(component, data)]);\n    }\n\n  },\n\n  render(h) {\n    const icon = this.getIcon();\n\n    if (typeof icon === 'string') {\n      if (isSvgPath(icon)) {\n        return this.renderSvgIcon(icon, h);\n      }\n\n      return this.renderFontIcon(icon, h);\n    }\n\n    return this.renderSvgIconComponent(icon, h);\n  }\n\n});\nexport default Vue.extend({\n  name: 'v-icon',\n  $_wrapperFor: VIcon,\n  functional: true,\n\n  render(h, {\n    data,\n    children\n  }) {\n    let iconName = ''; // Support usage of v-text and v-html\n\n    if (data.domProps) {\n      iconName = data.domProps.textContent || data.domProps.innerHTML || iconName; // Remove nodes so it doesn't\n      // overwrite our changes\n\n      delete data.domProps.textContent;\n      delete data.domProps.innerHTML;\n    }\n\n    return h(VIcon, data, iconName ? [iconName] : children);\n  }\n\n});\n//# sourceMappingURL=VIcon.js.map","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n  var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n  return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n  return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","var baseKeys = require('./_baseKeys'),\n    getTag = require('./_getTag'),\n    isArguments = require('./isArguments'),\n    isArray = require('./isArray'),\n    isArrayLike = require('./isArrayLike'),\n    isBuffer = require('./isBuffer'),\n    isPrototype = require('./_isPrototype'),\n    isTypedArray = require('./isTypedArray');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n    setTag = '[object Set]';\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 * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\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 empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\nfunction isEmpty(value) {\n  if (value == null) {\n    return true;\n  }\n  if (isArrayLike(value) &&\n      (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n        isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n    return !value.length;\n  }\n  var tag = getTag(value);\n  if (tag == mapTag || tag == setTag) {\n    return !value.size;\n  }\n  if (isPrototype(value)) {\n    return !baseKeys(value).length;\n  }\n  for (var key in value) {\n    if (hasOwnProperty.call(value, key)) {\n      return false;\n    }\n  }\n  return true;\n}\n\nmodule.exports = isEmpty;\n","'use strict';\n// B.2.3.12 String.prototype.strike()\nrequire('./_string-html')('strike', function (createHTML) {\n  return function strike() {\n    return createHTML(this, 'strike', '', '');\n  };\n});\n","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n *  - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function(val, options) {\n  options = options || {};\n  var type = typeof val;\n  if (type === 'string' && val.length > 0) {\n    return parse(val);\n  } else if (type === 'number' && isFinite(val)) {\n    return options.long ? fmtLong(val) : fmtShort(val);\n  }\n  throw new Error(\n    'val is not a non-empty string or a valid number. val=' +\n      JSON.stringify(val)\n  );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n  str = String(str);\n  if (str.length > 100) {\n    return;\n  }\n  var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n    str\n  );\n  if (!match) {\n    return;\n  }\n  var n = parseFloat(match[1]);\n  var type = (match[2] || 'ms').toLowerCase();\n  switch (type) {\n    case 'years':\n    case 'year':\n    case 'yrs':\n    case 'yr':\n    case 'y':\n      return n * y;\n    case 'weeks':\n    case 'week':\n    case 'w':\n      return n * w;\n    case 'days':\n    case 'day':\n    case 'd':\n      return n * d;\n    case 'hours':\n    case 'hour':\n    case 'hrs':\n    case 'hr':\n    case 'h':\n      return n * h;\n    case 'minutes':\n    case 'minute':\n    case 'mins':\n    case 'min':\n    case 'm':\n      return n * m;\n    case 'seconds':\n    case 'second':\n    case 'secs':\n    case 'sec':\n    case 's':\n      return n * s;\n    case 'milliseconds':\n    case 'millisecond':\n    case 'msecs':\n    case 'msec':\n    case 'ms':\n      return n;\n    default:\n      return undefined;\n  }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n  var msAbs = Math.abs(ms);\n  if (msAbs >= d) {\n    return Math.round(ms / d) + 'd';\n  }\n  if (msAbs >= h) {\n    return Math.round(ms / h) + 'h';\n  }\n  if (msAbs >= m) {\n    return Math.round(ms / m) + 'm';\n  }\n  if (msAbs >= s) {\n    return Math.round(ms / s) + 's';\n  }\n  return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n  var msAbs = Math.abs(ms);\n  if (msAbs >= d) {\n    return plural(ms, msAbs, d, 'day');\n  }\n  if (msAbs >= h) {\n    return plural(ms, msAbs, h, 'hour');\n  }\n  if (msAbs >= m) {\n    return plural(ms, msAbs, m, 'minute');\n  }\n  if (msAbs >= s) {\n    return plural(ms, msAbs, s, 'second');\n  }\n  return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n  var isPlural = msAbs >= n * 1.5;\n  return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n","var dP = require('./_object-dp');\nvar anObject = require('./_an-object');\nvar getKeys = require('./_object-keys');\n\nmodule.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties) {\n  anObject(O);\n  var keys = getKeys(Properties);\n  var length = keys.length;\n  var i = 0;\n  var P;\n  while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n  return O;\n};\n","var assignValue = require('./_assignValue'),\n    castPath = require('./_castPath'),\n    isIndex = require('./_isIndex'),\n    isObject = require('./isObject'),\n    toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.set`.\n *\n * @private\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 * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\nfunction baseSet(object, path, value, customizer) {\n  if (!isObject(object)) {\n    return object;\n  }\n  path = castPath(path, object);\n\n  var index = -1,\n      length = path.length,\n      lastIndex = length - 1,\n      nested = object;\n\n  while (nested != null && ++index < length) {\n    var key = toKey(path[index]),\n        newValue = value;\n\n    if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n      return object;\n    }\n\n    if (index != lastIndex) {\n      var objValue = nested[key];\n      newValue = customizer ? customizer(objValue, key, nested) : undefined;\n      if (newValue === undefined) {\n        newValue = isObject(objValue)\n          ? objValue\n          : (isIndex(path[index + 1]) ? [] : {});\n      }\n    }\n    assignValue(nested, key, newValue);\n    nested = nested[key];\n  }\n  return object;\n}\n\nmodule.exports = baseSet;\n","var basePickBy = require('./_basePickBy'),\n    hasIn = require('./hasIn');\n\n/**\n * The base implementation of `_.pick` without support for individual\n * property identifiers.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @returns {Object} Returns the new object.\n */\nfunction basePick(object, paths) {\n  return basePickBy(object, paths, function(value, path) {\n    return hasIn(object, path);\n  });\n}\n\nmodule.exports = basePick;\n","// Styles\nimport \"../../../src/components/VDialog/VDialog.sass\"; // Components\n\nimport { VThemeProvider } from '../VThemeProvider'; // Mixins\n\nimport Activatable from '../../mixins/activatable';\nimport Dependent from '../../mixins/dependent';\nimport Detachable from '../../mixins/detachable';\nimport Overlayable from '../../mixins/overlayable';\nimport Returnable from '../../mixins/returnable';\nimport Stackable from '../../mixins/stackable';\nimport Toggleable from '../../mixins/toggleable'; // Directives\n\nimport ClickOutside from '../../directives/click-outside'; // Helpers\n\nimport mixins from '../../util/mixins';\nimport { removed } from '../../util/console';\nimport { convertToUnit, keyCodes } from '../../util/helpers';\nconst baseMixins = mixins(Activatable, Dependent, Detachable, Overlayable, Returnable, Stackable, Toggleable);\n/* @vue/component */\n\nexport default baseMixins.extend({\n  name: 'v-dialog',\n  directives: {\n    ClickOutside\n  },\n  props: {\n    dark: Boolean,\n    disabled: Boolean,\n    fullscreen: Boolean,\n    light: Boolean,\n    maxWidth: [String, Number],\n    noClickAnimation: Boolean,\n    origin: {\n      type: String,\n      default: 'center center'\n    },\n    persistent: Boolean,\n    retainFocus: {\n      type: Boolean,\n      default: true\n    },\n    scrollable: Boolean,\n    transition: {\n      type: [String, Boolean],\n      default: 'dialog-transition'\n    },\n    width: [String, Number]\n  },\n\n  data() {\n    return {\n      activatedBy: null,\n      animate: false,\n      animateTimeout: -1,\n      isActive: !!this.value,\n      stackMinZIndex: 200,\n      previousActiveElement: null\n    };\n  },\n\n  computed: {\n    classes() {\n      return {\n        [`v-dialog ${this.contentClass}`.trim()]: true,\n        'v-dialog--active': this.isActive,\n        'v-dialog--persistent': this.persistent,\n        'v-dialog--fullscreen': this.fullscreen,\n        'v-dialog--scrollable': this.scrollable,\n        'v-dialog--animated': this.animate\n      };\n    },\n\n    contentClasses() {\n      return {\n        'v-dialog__content': true,\n        'v-dialog__content--active': this.isActive\n      };\n    },\n\n    hasActivator() {\n      return Boolean(!!this.$slots.activator || !!this.$scopedSlots.activator);\n    }\n\n  },\n  watch: {\n    isActive(val) {\n      if (val) {\n        this.show();\n        this.hideScroll();\n      } else {\n        var _this$previousActiveE;\n\n        this.removeOverlay();\n        this.unbind();\n        (_this$previousActiveE = this.previousActiveElement) == null ? void 0 : _this$previousActiveE.focus();\n      }\n    },\n\n    fullscreen(val) {\n      if (!this.isActive) return;\n\n      if (val) {\n        this.hideScroll();\n        this.removeOverlay(false);\n      } else {\n        this.showScroll();\n        this.genOverlay();\n      }\n    }\n\n  },\n\n  created() {\n    /* istanbul ignore next */\n    if (this.$attrs.hasOwnProperty('full-width')) {\n      removed('full-width', this);\n    }\n  },\n\n  beforeMount() {\n    this.$nextTick(() => {\n      this.isBooted = this.isActive;\n      this.isActive && this.show();\n    });\n  },\n\n  beforeDestroy() {\n    if (typeof window !== 'undefined') this.unbind();\n  },\n\n  methods: {\n    animateClick() {\n      this.animate = false; // Needed for when clicking very fast\n      // outside of the dialog\n\n      this.$nextTick(() => {\n        this.animate = true;\n        window.clearTimeout(this.animateTimeout);\n        this.animateTimeout = window.setTimeout(() => this.animate = false, 150);\n      });\n    },\n\n    closeConditional(e) {\n      const target = e.target; // Ignore the click if the dialog is closed or destroyed,\n      // if it was on an element inside the content,\n      // if it was dragged onto the overlay (#6969),\n      // or if this isn't the topmost dialog (#9907)\n\n      return !(this._isDestroyed || !this.isActive || this.$refs.content.contains(target) || this.overlay && target && !this.overlay.$el.contains(target)) && this.activeZIndex >= this.getMaxZIndex();\n    },\n\n    hideScroll() {\n      if (this.fullscreen) {\n        document.documentElement.classList.add('overflow-y-hidden');\n      } else {\n        Overlayable.options.methods.hideScroll.call(this);\n      }\n    },\n\n    show() {\n      !this.fullscreen && !this.hideOverlay && this.genOverlay(); // Double nextTick to wait for lazy content to be generated\n\n      this.$nextTick(() => {\n        this.$nextTick(() => {\n          if (!this.$refs.content.contains(document.activeElement)) {\n            this.previousActiveElement = document.activeElement;\n            this.$refs.content.focus();\n          }\n\n          this.bind();\n        });\n      });\n    },\n\n    bind() {\n      window.addEventListener('focusin', this.onFocusin);\n    },\n\n    unbind() {\n      window.removeEventListener('focusin', this.onFocusin);\n    },\n\n    onClickOutside(e) {\n      this.$emit('click:outside', e);\n\n      if (this.persistent) {\n        this.noClickAnimation || this.animateClick();\n      } else {\n        this.isActive = false;\n      }\n    },\n\n    onKeydown(e) {\n      if (e.keyCode === keyCodes.esc && !this.getOpenDependents().length) {\n        if (!this.persistent) {\n          this.isActive = false;\n          const activator = this.getActivator();\n          this.$nextTick(() => activator && activator.focus());\n        } else if (!this.noClickAnimation) {\n          this.animateClick();\n        }\n      }\n\n      this.$emit('keydown', e);\n    },\n\n    // On focus change, wrap focus to stay inside the dialog\n    // https://github.com/vuetifyjs/vuetify/issues/6892\n    onFocusin(e) {\n      if (!e || !this.retainFocus) return;\n      const target = e.target;\n\n      if (!!target && // It isn't the document or the dialog body\n      ![document, this.$refs.content].includes(target) && // It isn't inside the dialog body\n      !this.$refs.content.contains(target) && // We're the topmost dialog\n      this.activeZIndex >= this.getMaxZIndex() && // It isn't inside a dependent element (like a menu)\n      !this.getOpenDependentElements().some(el => el.contains(target)) // So we must have focused something outside the dialog and its children\n      ) {\n          // Find and focus the first available element inside the dialog\n          const focusable = this.$refs.content.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])');\n          const el = [...focusable].find(el => !el.hasAttribute('disabled'));\n          el && el.focus();\n        }\n    },\n\n    genContent() {\n      return this.showLazyContent(() => [this.$createElement(VThemeProvider, {\n        props: {\n          root: true,\n          light: this.light,\n          dark: this.dark\n        }\n      }, [this.$createElement('div', {\n        class: this.contentClasses,\n        attrs: {\n          role: 'document',\n          tabindex: this.isActive ? 0 : undefined,\n          ...this.getScopeIdAttrs()\n        },\n        on: {\n          keydown: this.onKeydown\n        },\n        style: {\n          zIndex: this.activeZIndex\n        },\n        ref: 'content'\n      }, [this.genTransition()])])]);\n    },\n\n    genTransition() {\n      const content = this.genInnerContent();\n      if (!this.transition) return content;\n      return this.$createElement('transition', {\n        props: {\n          name: this.transition,\n          origin: this.origin,\n          appear: true\n        }\n      }, [content]);\n    },\n\n    genInnerContent() {\n      const data = {\n        class: this.classes,\n        ref: 'dialog',\n        directives: [{\n          name: 'click-outside',\n          value: {\n            handler: this.onClickOutside,\n            closeConditional: this.closeConditional,\n            include: this.getOpenDependentElements\n          }\n        }, {\n          name: 'show',\n          value: this.isActive\n        }],\n        style: {\n          transformOrigin: this.origin\n        }\n      };\n\n      if (!this.fullscreen) {\n        data.style = { ...data.style,\n          maxWidth: convertToUnit(this.maxWidth),\n          width: convertToUnit(this.width)\n        };\n      }\n\n      return this.$createElement('div', data, this.getContentSlot());\n    }\n\n  },\n\n  render(h) {\n    return h('div', {\n      staticClass: 'v-dialog__container',\n      class: {\n        'v-dialog__container--attached': this.attach === '' || this.attach === true || this.attach === 'attach'\n      },\n      attrs: {\n        role: 'dialog'\n      }\n    }, [this.genActivator(), this.genContent()]);\n  }\n\n});\n//# sourceMappingURL=VDialog.js.map","import Vue from 'vue';\n/**\n * Delayable\n *\n * @mixin\n *\n * Changes the open or close delay time for elements\n */\n\nexport default Vue.extend().extend({\n  name: 'delayable',\n  props: {\n    openDelay: {\n      type: [Number, String],\n      default: 0\n    },\n    closeDelay: {\n      type: [Number, String],\n      default: 0\n    }\n  },\n  data: () => ({\n    openTimeout: undefined,\n    closeTimeout: undefined\n  }),\n  methods: {\n    /**\n     * Clear any pending delay timers from executing\n     */\n    clearDelay() {\n      clearTimeout(this.openTimeout);\n      clearTimeout(this.closeTimeout);\n    },\n\n    /**\n     * Runs callback after a specified delay\n     */\n    runDelay(type, cb) {\n      this.clearDelay();\n      const delay = parseInt(this[`${type}Delay`], 10);\n      this[`${type}Timeout`] = setTimeout(cb || (() => {\n        this.isActive = {\n          open: true,\n          close: false\n        }[type];\n      }), delay);\n    }\n\n  }\n});\n//# sourceMappingURL=index.js.map","// Types\nimport Vue from 'vue';\n/* @vue/component */\n\nexport default Vue.extend({\n  name: 'v-list-item-action',\n  functional: true,\n\n  render(h, {\n    data,\n    children = []\n  }) {\n    data.staticClass = data.staticClass ? `v-list-item__action ${data.staticClass}` : 'v-list-item__action';\n    const filteredChild = children.filter(VNode => {\n      return VNode.isComment === false && VNode.text !== ' ';\n    });\n    if (filteredChild.length > 1) data.staticClass += ' v-list-item__action--stack';\n    return h('div', data, children);\n  }\n\n});\n//# sourceMappingURL=VListItemAction.js.map","var baseIsEqual = require('./_baseIsEqual'),\n    get = require('./get'),\n    hasIn = require('./hasIn'),\n    isKey = require('./_isKey'),\n    isStrictComparable = require('./_isStrictComparable'),\n    matchesStrictComparable = require('./_matchesStrictComparable'),\n    toKey = require('./_toKey');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n    COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n  if (isKey(path) && isStrictComparable(srcValue)) {\n    return matchesStrictComparable(toKey(path), srcValue);\n  }\n  return function(object) {\n    var objValue = get(object, path);\n    return (objValue === undefined && objValue === srcValue)\n      ? hasIn(object, path)\n      : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n  };\n}\n\nmodule.exports = baseMatchesProperty;\n","var memoizeCapped = require('./_memoizeCapped');\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n  var result = [];\n  if (string.charCodeAt(0) === 46 /* . */) {\n    result.push('');\n  }\n  string.replace(rePropName, function(match, number, quote, subString) {\n    result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n  });\n  return result;\n});\n\nmodule.exports = stringToPath;\n","var isNumber = require('./isNumber');\n\n/**\n * Checks if `value` is `NaN`.\n *\n * **Note:** This method is based on\n * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as\n * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for\n * `undefined` and other non-number values.\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 `NaN`, else `false`.\n * @example\n *\n * _.isNaN(NaN);\n * // => true\n *\n * _.isNaN(new Number(NaN));\n * // => true\n *\n * isNaN(undefined);\n * // => true\n *\n * _.isNaN(undefined);\n * // => false\n */\nfunction isNaN(value) {\n  // An `NaN` primitive is the only value that is not equal to itself.\n  // Perform the `toStringTag` check first to avoid errors with some\n  // ActiveX objects in IE.\n  return isNumber(value) && value != +value;\n}\n\nmodule.exports = isNaN;\n","var ctx = require('./_ctx');\nvar invoke = require('./_invoke');\nvar html = require('./_html');\nvar cel = require('./_dom-create');\nvar global = require('./_global');\nvar process = global.process;\nvar setTask = global.setImmediate;\nvar clearTask = global.clearImmediate;\nvar MessageChannel = global.MessageChannel;\nvar Dispatch = global.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar defer, channel, port;\nvar run = function () {\n  var id = +this;\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};\nvar listener = function (event) {\n  run.call(event.data);\n};\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!setTask || !clearTask) {\n  setTask = 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      invoke(typeof fn == 'function' ? fn : Function(fn), args);\n    };\n    defer(counter);\n    return counter;\n  };\n  clearTask = function clearImmediate(id) {\n    delete queue[id];\n  };\n  // Node.js 0.8-\n  if (require('./_cof')(process) == 'process') {\n    defer = function (id) {\n      process.nextTick(ctx(run, id, 1));\n    };\n  // Sphere (JS game engine) Dispatch API\n  } else if (Dispatch && Dispatch.now) {\n    defer = function (id) {\n      Dispatch.now(ctx(run, id, 1));\n    };\n  // Browsers with MessageChannel, includes WebWorkers\n  } else if (MessageChannel) {\n    channel = new MessageChannel();\n    port = channel.port2;\n    channel.port1.onmessage = listener;\n    defer = ctx(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 (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) {\n    defer = function (id) {\n      global.postMessage(id + '', '*');\n    };\n    global.addEventListener('message', listener, false);\n  // IE8-\n  } else if (ONREADYSTATECHANGE in cel('script')) {\n    defer = function (id) {\n      html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () {\n        html.removeChild(this);\n        run.call(id);\n      };\n    };\n  // Rest old browsers\n  } else {\n    defer = function (id) {\n      setTimeout(ctx(run, id, 1), 0);\n    };\n  }\n}\nmodule.exports = {\n  set: setTask,\n  clear: clearTask\n};\n","/**\n * Module dependencies.\n */\n\nvar parser = require('engine.io-parser');\nvar Emitter = require('component-emitter');\n\n/**\n * Module exports.\n */\n\nmodule.exports = Transport;\n\n/**\n * Transport abstract constructor.\n *\n * @param {Object} options.\n * @api private\n */\n\nfunction Transport (opts) {\n  this.path = opts.path;\n  this.hostname = opts.hostname;\n  this.port = opts.port;\n  this.secure = opts.secure;\n  this.query = opts.query;\n  this.timestampParam = opts.timestampParam;\n  this.timestampRequests = opts.timestampRequests;\n  this.readyState = '';\n  this.agent = opts.agent || false;\n  this.socket = opts.socket;\n  this.enablesXDR = opts.enablesXDR;\n  this.withCredentials = opts.withCredentials;\n\n  // SSL options for Node.js client\n  this.pfx = opts.pfx;\n  this.key = opts.key;\n  this.passphrase = opts.passphrase;\n  this.cert = opts.cert;\n  this.ca = opts.ca;\n  this.ciphers = opts.ciphers;\n  this.rejectUnauthorized = opts.rejectUnauthorized;\n  this.forceNode = opts.forceNode;\n\n  // results of ReactNative environment detection\n  this.isReactNative = opts.isReactNative;\n\n  // other options for Node.js client\n  this.extraHeaders = opts.extraHeaders;\n  this.localAddress = opts.localAddress;\n}\n\n/**\n * Mix in `Emitter`.\n */\n\nEmitter(Transport.prototype);\n\n/**\n * Emits an error.\n *\n * @param {String} str\n * @return {Transport} for chaining\n * @api public\n */\n\nTransport.prototype.onError = function (msg, desc) {\n  var err = new Error(msg);\n  err.type = 'TransportError';\n  err.description = desc;\n  this.emit('error', err);\n  return this;\n};\n\n/**\n * Opens the transport.\n *\n * @api public\n */\n\nTransport.prototype.open = function () {\n  if ('closed' === this.readyState || '' === this.readyState) {\n    this.readyState = 'opening';\n    this.doOpen();\n  }\n\n  return this;\n};\n\n/**\n * Closes the transport.\n *\n * @api private\n */\n\nTransport.prototype.close = function () {\n  if ('opening' === this.readyState || 'open' === this.readyState) {\n    this.doClose();\n    this.onClose();\n  }\n\n  return this;\n};\n\n/**\n * Sends multiple packets.\n *\n * @param {Array} packets\n * @api private\n */\n\nTransport.prototype.send = function (packets) {\n  if ('open' === this.readyState) {\n    this.write(packets);\n  } else {\n    throw new Error('Transport not open');\n  }\n};\n\n/**\n * Called upon open\n *\n * @api private\n */\n\nTransport.prototype.onOpen = function () {\n  this.readyState = 'open';\n  this.writable = true;\n  this.emit('open');\n};\n\n/**\n * Called with data.\n *\n * @param {String} data\n * @api private\n */\n\nTransport.prototype.onData = function (data) {\n  var packet = parser.decodePacket(data, this.socket.binaryType);\n  this.onPacket(packet);\n};\n\n/**\n * Called with a decoded packet.\n */\n\nTransport.prototype.onPacket = function (packet) {\n  this.emit('packet', packet);\n};\n\n/**\n * Called upon close.\n *\n * @api private\n */\n\nTransport.prototype.onClose = function () {\n  this.readyState = 'closed';\n  this.emit('close');\n};\n","var getTag = require('./_getTag'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]';\n\n/**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\nfunction baseIsMap(value) {\n  return isObjectLike(value) && getTag(value) == mapTag;\n}\n\nmodule.exports = baseIsMap;\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","\nvar MACHINE_ID = Math.floor(Math.random() * 0xFFFFFF);\nvar index = ObjectID.index = parseInt(Math.random() * 0xFFFFFF, 10);\nvar pid = (typeof process === 'undefined' || typeof process.pid !== 'number' ? Math.floor(Math.random() * 100000) : process.pid) % 0xFFFF;\n\n/**\n * Determine if an object is Buffer\n *\n * Author:   Feross Aboukhadijeh <feross@feross.org> <http://feross.org>\n * License:  MIT\n *\n */\nvar isBuffer = function (obj) {\n  return !!(\n  obj != null &&\n  obj.constructor &&\n  typeof obj.constructor.isBuffer === 'function' &&\n  obj.constructor.isBuffer(obj)\n  )\n};\n\n/**\n * Create a new immutable ObjectID instance\n *\n * @class Represents the BSON ObjectID type\n * @param {String|Number} arg Can be a 24 byte hex string, 12 byte binary string or a Number.\n * @return {Object} instance of ObjectID.\n */\nfunction ObjectID(arg) {\n  if(!(this instanceof ObjectID)) return new ObjectID(arg);\n  if(arg && ((arg instanceof ObjectID) || arg._bsontype===\"ObjectID\"))\n    return arg;\n\n  var buf;\n\n  if(isBuffer(arg) || (Array.isArray(arg) && arg.length===12)) {\n    buf = Array.prototype.slice.call(arg);\n  }\n  else if(typeof arg === \"string\") {\n    if(arg.length!==12 && !ObjectID.isValid(arg))\n      throw new Error(\"Argument passed in must be a single String of 12 bytes or a string of 24 hex characters\");\n\n    buf = buffer(arg);\n  }\n  else if(/number|undefined/.test(typeof arg)) {\n    buf = buffer(generate(arg));\n  }\n\n  Object.defineProperty(this, \"id\", {\n    enumerable: true,\n    get: function() { return String.fromCharCode.apply(this, buf); }\n  });\n  Object.defineProperty(this, \"str\", {\n    get: function() { return buf.map(hex.bind(this, 2)).join(''); }\n  });\n}\nmodule.exports = ObjectID;\nObjectID.generate = generate;\nObjectID.default = ObjectID;\n\n/**\n * Creates an ObjectID from a second based number, with the rest of the ObjectID zeroed out. Used for comparisons or sorting the ObjectID.\n *\n * @param {Number} time an integer number representing a number of seconds.\n * @return {ObjectID} return the created ObjectID\n * @api public\n */\nObjectID.createFromTime = function(time){\n  time = parseInt(time, 10) % 0xFFFFFFFF;\n  return new ObjectID(hex(8,time)+\"0000000000000000\");\n};\n\n/**\n * Creates an ObjectID from a hex string representation of an ObjectID.\n *\n * @param {String} hexString create a ObjectID from a passed in 24 byte hexstring.\n * @return {ObjectID} return the created ObjectID\n * @api public\n */\nObjectID.createFromHexString = function(hexString) {\n  if(!ObjectID.isValid(hexString))\n    throw new Error(\"Invalid ObjectID hex string\");\n\n  return new ObjectID(hexString);\n};\n\n/**\n * Checks if a value is a valid bson ObjectId\n *\n * @param {String} objectid Can be a 24 byte hex string or an instance of ObjectID.\n * @return {Boolean} return true if the value is a valid bson ObjectID, return false otherwise.\n * @api public\n *\n * THE NATIVE DOCUMENTATION ISN'T CLEAR ON THIS GUY!\n * http://mongodb.github.io/node-mongodb-native/api-bson-generated/objectid.html#objectid-isvalid\n */\nObjectID.isValid = function(objectid) {\n  if(!objectid || (typeof objectid !== 'string' && (typeof objectid !== 'object' || Array.isArray(objectid) || typeof objectid.toString !== 'function'))) return false;\n\n  //call .toString() to get the hex if we're\n  // working with an instance of ObjectID\n  return /^[0-9A-F]{24}$/i.test(objectid.toString());\n};\n\n/**\n * set a custom machineID\n * \n * @param {String|Number} machineid Can be a string, hex-string or a number\n * @return {void}\n * @api public\n */\nObjectID.setMachineID = function(arg) {\n  var machineID;\n\n  if(typeof arg === \"string\") {\n    // hex string\n    machineID = parseInt(arg, 16);\n   \n    // any string\n    if(isNaN(machineID)) {\n      arg = ('000000' + arg).substr(-7,6);\n\n      machineID = \"\";\n      for(var i = 0;i<6; i++) {\n        machineID += (arg.charCodeAt(i));\n      }\n    }\n  }\n  else if(/number|undefined/.test(typeof arg)) {\n    machineID = arg | 0;\n  }\n\n  MACHINE_ID = (machineID & 0xFFFFFF);\n}\n\n/**\n * get the machineID\n * \n * @return {number}\n * @api public\n */\nObjectID.getMachineID = function() {\n  return MACHINE_ID;\n}\n\nObjectID.prototype = {\n  _bsontype: 'ObjectID',\n  constructor: ObjectID,\n\n  /**\n   * Return the ObjectID id as a 24 byte hex string representation\n   *\n   * @return {String} return the 24 byte hex string representation.\n   * @api public\n   */\n  toHexString: function() {\n    return this.str;\n  },\n\n  /**\n   * Compares the equality of this ObjectID with `otherID`.\n   *\n   * @param {Object} other ObjectID instance to compare against.\n   * @return {Boolean} the result of comparing two ObjectID's\n   * @api public\n   */\n  equals: function (other){\n    return !!other && this.str === other.toString();\n  },\n\n  /**\n   * Returns the generation date (accurate up to the second) that this ID was generated.\n   *\n   * @return {Date} the generation date\n   * @api public\n   */\n  getTimestamp: function(){\n    return new Date(parseInt(this.str.substr(0,8), 16) * 1000);\n  }\n};\n\nfunction next() {\n  return index = (index+1) % 0xFFFFFF;\n}\n\nfunction generate(time) {\n  if (typeof time !== 'number')\n    time = Date.now()/1000;\n\n  //keep it in the ring!\n  time = parseInt(time, 10) % 0xFFFFFFFF;\n\n  //FFFFFFFF FFFFFF FFFF FFFFFF\n  return hex(8,time) + hex(6,MACHINE_ID) + hex(4,pid) + hex(6,next());\n}\n\nfunction hex(length, n) {\n  n = n.toString(16);\n  return (n.length===length)? n : \"00000000\".substring(n.length, length) + n;\n}\n\nfunction buffer(str) {\n  var i=0,out=[];\n\n  if(str.length===24)\n    for(;i<24; out.push(parseInt(str[i]+str[i+1], 16)),i+=2);\n\n  else if(str.length===12)\n    for(;i<12; out.push(str.charCodeAt(i)),i++);\n\n  return out;\n}\n\nvar inspect = (Symbol && Symbol.for('nodejs.util.inspect.custom')) || 'inspect';\n\n/**\n * Converts to a string representation of this Id.\n *\n * @return {String} return the 24 byte hex string representation.\n * @api private\n */\nObjectID.prototype[inspect] = function() { return \"ObjectID(\"+this+\")\" };\nObjectID.prototype.toJSON = ObjectID.prototype.toHexString;\nObjectID.prototype.toString = ObjectID.prototype.toHexString;\n","import VOverlay from './VOverlay';\nexport { VOverlay };\nexport default VOverlay;\n//# sourceMappingURL=index.js.map","var baseGetAllKeys = require('./_baseGetAllKeys'),\n    getSymbolsIn = require('./_getSymbolsIn'),\n    keysIn = require('./keysIn');\n\n/**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeysIn(object) {\n  return baseGetAllKeys(object, keysIn, getSymbolsIn);\n}\n\nmodule.exports = getAllKeysIn;\n","var Symbol = require('./_Symbol'),\n    Uint8Array = require('./_Uint8Array'),\n    eq = require('./eq'),\n    equalArrays = require('./_equalArrays'),\n    mapToArray = require('./_mapToArray'),\n    setToArray = require('./_setToArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n    COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    errorTag = '[object Error]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n    symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n  switch (tag) {\n    case dataViewTag:\n      if ((object.byteLength != other.byteLength) ||\n          (object.byteOffset != other.byteOffset)) {\n        return false;\n      }\n      object = object.buffer;\n      other = other.buffer;\n\n    case arrayBufferTag:\n      if ((object.byteLength != other.byteLength) ||\n          !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n        return false;\n      }\n      return true;\n\n    case boolTag:\n    case dateTag:\n    case numberTag:\n      // Coerce booleans to `1` or `0` and dates to milliseconds.\n      // Invalid dates are coerced to `NaN`.\n      return eq(+object, +other);\n\n    case errorTag:\n      return object.name == other.name && object.message == other.message;\n\n    case regexpTag:\n    case stringTag:\n      // Coerce regexes to strings and treat strings, primitives and objects,\n      // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n      // for more details.\n      return object == (other + '');\n\n    case mapTag:\n      var convert = mapToArray;\n\n    case setTag:\n      var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n      convert || (convert = setToArray);\n\n      if (object.size != other.size && !isPartial) {\n        return false;\n      }\n      // Assume cyclic values are equal.\n      var stacked = stack.get(object);\n      if (stacked) {\n        return stacked == other;\n      }\n      bitmask |= COMPARE_UNORDERED_FLAG;\n\n      // Recursively compare objects (susceptible to call stack limits).\n      stack.set(object, other);\n      var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n      stack['delete'](object);\n      return result;\n\n    case symbolTag:\n      if (symbolValueOf) {\n        return symbolValueOf.call(object) == symbolValueOf.call(other);\n      }\n  }\n  return false;\n}\n\nmodule.exports = equalByTag;\n","import Vue from 'vue'; // Directives\n\nimport Ripple from '../../directives/ripple'; // Utilities\n\nimport { getObjectValueByPath } from '../../util/helpers';\nexport default Vue.extend({\n  name: 'routable',\n  directives: {\n    Ripple\n  },\n  props: {\n    activeClass: String,\n    append: Boolean,\n    disabled: Boolean,\n    exact: {\n      type: Boolean,\n      default: undefined\n    },\n    exactPath: Boolean,\n    exactActiveClass: String,\n    link: Boolean,\n    href: [String, Object],\n    to: [String, Object],\n    nuxt: Boolean,\n    replace: Boolean,\n    ripple: {\n      type: [Boolean, Object],\n      default: null\n    },\n    tag: String,\n    target: String\n  },\n  data: () => ({\n    isActive: false,\n    proxyClass: ''\n  }),\n  computed: {\n    classes() {\n      const classes = {};\n      if (this.to) return classes;\n      if (this.activeClass) classes[this.activeClass] = this.isActive;\n      if (this.proxyClass) classes[this.proxyClass] = this.isActive;\n      return classes;\n    },\n\n    computedRipple() {\n      var _this$ripple;\n\n      return (_this$ripple = this.ripple) != null ? _this$ripple : !this.disabled && this.isClickable;\n    },\n\n    isClickable() {\n      if (this.disabled) return false;\n      return Boolean(this.isLink || this.$listeners.click || this.$listeners['!click'] || this.$attrs.tabindex);\n    },\n\n    isLink() {\n      return this.to || this.href || this.link;\n    },\n\n    styles: () => ({})\n  },\n  watch: {\n    $route: 'onRouteChange'\n  },\n\n  mounted() {\n    this.onRouteChange();\n  },\n\n  methods: {\n    generateRouteLink() {\n      let exact = this.exact;\n      let tag;\n      const data = {\n        attrs: {\n          tabindex: 'tabindex' in this.$attrs ? this.$attrs.tabindex : undefined\n        },\n        class: this.classes,\n        style: this.styles,\n        props: {},\n        directives: [{\n          name: 'ripple',\n          value: this.computedRipple\n        }],\n        [this.to ? 'nativeOn' : 'on']: { ...this.$listeners,\n          ...('click' in this ? {\n            click: this.click\n          } : undefined)\n        },\n        ref: 'link'\n      };\n\n      if (typeof this.exact === 'undefined') {\n        exact = this.to === '/' || this.to === Object(this.to) && this.to.path === '/';\n      }\n\n      if (this.to) {\n        // Add a special activeClass hook\n        // for component level styles\n        let activeClass = this.activeClass;\n        let exactActiveClass = this.exactActiveClass || activeClass;\n\n        if (this.proxyClass) {\n          activeClass = `${activeClass} ${this.proxyClass}`.trim();\n          exactActiveClass = `${exactActiveClass} ${this.proxyClass}`.trim();\n        }\n\n        tag = this.nuxt ? 'nuxt-link' : 'router-link';\n        Object.assign(data.props, {\n          to: this.to,\n          exact,\n          exactPath: this.exactPath,\n          activeClass,\n          exactActiveClass,\n          append: this.append,\n          replace: this.replace\n        });\n      } else {\n        tag = this.href && 'a' || this.tag || 'div';\n        if (tag === 'a' && this.href) data.attrs.href = this.href;\n      }\n\n      if (this.target) data.attrs.target = this.target;\n      return {\n        tag,\n        data\n      };\n    },\n\n    onRouteChange() {\n      if (!this.to || !this.$refs.link || !this.$route) return;\n      const activeClass = `${this.activeClass} ${this.proxyClass || ''}`.trim();\n      const exactActiveClass = `${this.exactActiveClass} ${this.proxyClass || ''}`.trim() || activeClass;\n      const path = '_vnode.data.class.' + (this.exact ? exactActiveClass : activeClass);\n      this.$nextTick(() => {\n        /* istanbul ignore else */\n        if (!getObjectValueByPath(this.$refs.link, path) === this.isActive) {\n          this.toggle();\n        }\n      });\n    },\n\n    toggle() {\n      this.isActive = !this.isActive;\n    }\n\n  }\n});\n//# sourceMappingURL=index.js.map","var getNative = require('./_getNative'),\n    root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nmodule.exports = Promise;\n","/**\n * This is the web browser implementation of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = require('./debug');\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = 'undefined' != typeof chrome\n               && 'undefined' != typeof chrome.storage\n                  ? chrome.storage.local\n                  : localstorage();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n  '#0000CC', '#0000FF', '#0033CC', '#0033FF', '#0066CC', '#0066FF', '#0099CC',\n  '#0099FF', '#00CC00', '#00CC33', '#00CC66', '#00CC99', '#00CCCC', '#00CCFF',\n  '#3300CC', '#3300FF', '#3333CC', '#3333FF', '#3366CC', '#3366FF', '#3399CC',\n  '#3399FF', '#33CC00', '#33CC33', '#33CC66', '#33CC99', '#33CCCC', '#33CCFF',\n  '#6600CC', '#6600FF', '#6633CC', '#6633FF', '#66CC00', '#66CC33', '#9900CC',\n  '#9900FF', '#9933CC', '#9933FF', '#99CC00', '#99CC33', '#CC0000', '#CC0033',\n  '#CC0066', '#CC0099', '#CC00CC', '#CC00FF', '#CC3300', '#CC3333', '#CC3366',\n  '#CC3399', '#CC33CC', '#CC33FF', '#CC6600', '#CC6633', '#CC9900', '#CC9933',\n  '#CCCC00', '#CCCC33', '#FF0000', '#FF0033', '#FF0066', '#FF0099', '#FF00CC',\n  '#FF00FF', '#FF3300', '#FF3333', '#FF3366', '#FF3399', '#FF33CC', '#FF33FF',\n  '#FF6600', '#FF6633', '#FF9900', '#FF9933', '#FFCC00', '#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\nfunction useColors() {\n  // NB: In an Electron preload script, document will be defined but not fully\n  // initialized. Since we know we're in Chrome, we'll just detect this case\n  // explicitly\n  if (typeof window !== 'undefined' && window.process && window.process.type === 'renderer') {\n    return true;\n  }\n\n  // Internet Explorer and Edge do not support colors.\n  if (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n    return false;\n  }\n\n  // is webkit? http://stackoverflow.com/a/16459606/376773\n  // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n  return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n    // is firebug? http://stackoverflow.com/a/398120/376773\n    (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n    // is firefox >= v31?\n    // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n    (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||\n    // double check webkit in userAgent just in case we are in a worker\n    (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nexports.formatters.j = function(v) {\n  try {\n    return JSON.stringify(v);\n  } catch (err) {\n    return '[UnexpectedJSONParseError]: ' + err.message;\n  }\n};\n\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n  var useColors = this.useColors;\n\n  args[0] = (useColors ? '%c' : '')\n    + this.namespace\n    + (useColors ? ' %c' : ' ')\n    + args[0]\n    + (useColors ? '%c ' : ' ')\n    + '+' + exports.humanize(this.diff);\n\n  if (!useColors) return;\n\n  var c = 'color: ' + this.color;\n  args.splice(1, 0, c, 'color: inherit')\n\n  // the final \"%c\" is somewhat tricky, because there could be other\n  // arguments passed either before or after the %c, so we need to\n  // figure out the correct index to insert the CSS into\n  var index = 0;\n  var lastC = 0;\n  args[0].replace(/%[a-zA-Z%]/g, function(match) {\n    if ('%%' === match) return;\n    index++;\n    if ('%c' === match) {\n      // we only are interested in the *last* %c\n      // (the user may have provided their own)\n      lastC = index;\n    }\n  });\n\n  args.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.log()` when available.\n * No-op when `console.log` is not a \"function\".\n *\n * @api public\n */\n\nfunction log() {\n  // this hackery is required for IE8/9, where\n  // the `console.log` function doesn't have 'apply'\n  return 'object' === typeof console\n    && console.log\n    && Function.prototype.apply.call(console.log, console, arguments);\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\n\nfunction save(namespaces) {\n  try {\n    if (null == namespaces) {\n      exports.storage.removeItem('debug');\n    } else {\n      exports.storage.debug = namespaces;\n    }\n  } catch(e) {}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n  var r;\n  try {\n    r = exports.storage.debug;\n  } catch(e) {}\n\n  // If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n  if (!r && typeof process !== 'undefined' && 'env' in process) {\n    r = process.env.DEBUG;\n  }\n\n  return r;\n}\n\n/**\n * Enable namespaces listed in `localStorage.debug` initially.\n */\n\nexports.enable(load());\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n  try {\n    return window.localStorage;\n  } catch (e) {}\n}\n","// Mixins\nimport Bootable from '../../mixins/bootable';\nimport { factory as GroupableFactory } from '../../mixins/groupable'; // Directives\n\nimport Touch from '../../directives/touch'; // Utilities\n\nimport { convertToUnit } from '../../util/helpers';\nimport mixins from '../../util/mixins';\nconst baseMixins = mixins(Bootable, GroupableFactory('windowGroup', 'v-window-item', 'v-window'));\nexport default baseMixins.extend().extend().extend({\n  name: 'v-window-item',\n  directives: {\n    Touch\n  },\n  props: {\n    disabled: Boolean,\n    reverseTransition: {\n      type: [Boolean, String],\n      default: undefined\n    },\n    transition: {\n      type: [Boolean, String],\n      default: undefined\n    },\n    value: {\n      required: false\n    }\n  },\n\n  data() {\n    return {\n      isActive: false,\n      inTransition: false\n    };\n  },\n\n  computed: {\n    classes() {\n      return this.groupClasses;\n    },\n\n    computedTransition() {\n      if (!this.windowGroup.internalReverse) {\n        return typeof this.transition !== 'undefined' ? this.transition || '' : this.windowGroup.computedTransition;\n      }\n\n      return typeof this.reverseTransition !== 'undefined' ? this.reverseTransition || '' : this.windowGroup.computedTransition;\n    }\n\n  },\n  methods: {\n    genDefaultSlot() {\n      return this.$slots.default;\n    },\n\n    genWindowItem() {\n      return this.$createElement('div', {\n        staticClass: 'v-window-item',\n        class: this.classes,\n        directives: [{\n          name: 'show',\n          value: this.isActive\n        }],\n        on: this.$listeners\n      }, this.genDefaultSlot());\n    },\n\n    onAfterTransition() {\n      if (!this.inTransition) {\n        return;\n      } // Finalize transition state.\n\n\n      this.inTransition = false;\n\n      if (this.windowGroup.transitionCount > 0) {\n        this.windowGroup.transitionCount--; // Remove container height if we are out of transition.\n\n        if (this.windowGroup.transitionCount === 0) {\n          this.windowGroup.transitionHeight = undefined;\n        }\n      }\n    },\n\n    onBeforeTransition() {\n      if (this.inTransition) {\n        return;\n      } // Initialize transition state here.\n\n\n      this.inTransition = true;\n\n      if (this.windowGroup.transitionCount === 0) {\n        // Set initial height for height transition.\n        this.windowGroup.transitionHeight = convertToUnit(this.windowGroup.$el.clientHeight);\n      }\n\n      this.windowGroup.transitionCount++;\n    },\n\n    onTransitionCancelled() {\n      this.onAfterTransition(); // This should have the same path as normal transition end.\n    },\n\n    onEnter(el) {\n      if (!this.inTransition) {\n        return;\n      }\n\n      this.$nextTick(() => {\n        // Do not set height if no transition or cancelled.\n        if (!this.computedTransition || !this.inTransition) {\n          return;\n        } // Set transition target height.\n\n\n        this.windowGroup.transitionHeight = convertToUnit(el.clientHeight);\n      });\n    }\n\n  },\n\n  render(h) {\n    return h('transition', {\n      props: {\n        name: this.computedTransition\n      },\n      on: {\n        // Handlers for enter windows.\n        beforeEnter: this.onBeforeTransition,\n        afterEnter: this.onAfterTransition,\n        enterCancelled: this.onTransitionCancelled,\n        // Handlers for leave windows.\n        beforeLeave: this.onBeforeTransition,\n        afterLeave: this.onAfterTransition,\n        leaveCancelled: this.onTransitionCancelled,\n        // Enter handler for height transition.\n        enter: this.onEnter\n      }\n    }, this.showLazyContent(() => [this.genWindowItem()]));\n  }\n\n});\n//# sourceMappingURL=VWindowItem.js.map","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n  var result = this.has(key) && delete this.__data__[key];\n  this.size -= result ? 1 : 0;\n  return result;\n}\n\nmodule.exports = hashDelete;\n","import \"../../../src/components/VDataTable/VSimpleTable.sass\";\nimport { convertToUnit } from '../../util/helpers';\nimport Themeable from '../../mixins/themeable';\nimport mixins from '../../util/mixins';\nexport default mixins(Themeable).extend({\n  name: 'v-simple-table',\n  props: {\n    dense: Boolean,\n    fixedHeader: Boolean,\n    height: [Number, String]\n  },\n  computed: {\n    classes() {\n      return {\n        'v-data-table--dense': this.dense,\n        'v-data-table--fixed-height': !!this.height && !this.fixedHeader,\n        'v-data-table--fixed-header': this.fixedHeader,\n        'v-data-table--has-top': !!this.$slots.top,\n        'v-data-table--has-bottom': !!this.$slots.bottom,\n        ...this.themeClasses\n      };\n    }\n\n  },\n  methods: {\n    genWrapper() {\n      return this.$slots.wrapper || this.$createElement('div', {\n        staticClass: 'v-data-table__wrapper',\n        style: {\n          height: convertToUnit(this.height)\n        }\n      }, [this.$createElement('table', this.$slots.default)]);\n    }\n\n  },\n\n  render(h) {\n    return h('div', {\n      staticClass: 'v-data-table',\n      class: this.classes\n    }, [this.$slots.top, this.genWrapper(), this.$slots.bottom]);\n  }\n\n});\n//# sourceMappingURL=VSimpleTable.js.map","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n  lookup[i] = code[i]\n  revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n  var len = b64.length\n\n  if (len % 4 > 0) {\n    throw new Error('Invalid string. Length must be a multiple of 4')\n  }\n\n  // Trim off extra bytes after placeholder bytes are found\n  // See: https://github.com/beatgammit/base64-js/issues/42\n  var validLen = b64.indexOf('=')\n  if (validLen === -1) validLen = len\n\n  var placeHoldersLen = validLen === len\n    ? 0\n    : 4 - (validLen % 4)\n\n  return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n  var lens = getLens(b64)\n  var validLen = lens[0]\n  var placeHoldersLen = lens[1]\n  return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n  return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n  var tmp\n  var lens = getLens(b64)\n  var validLen = lens[0]\n  var placeHoldersLen = lens[1]\n\n  var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n  var curByte = 0\n\n  // if there are placeholders, only get up to the last complete 4 chars\n  var len = placeHoldersLen > 0\n    ? validLen - 4\n    : validLen\n\n  var i\n  for (i = 0; i < len; i += 4) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 18) |\n      (revLookup[b64.charCodeAt(i + 1)] << 12) |\n      (revLookup[b64.charCodeAt(i + 2)] << 6) |\n      revLookup[b64.charCodeAt(i + 3)]\n    arr[curByte++] = (tmp >> 16) & 0xFF\n    arr[curByte++] = (tmp >> 8) & 0xFF\n    arr[curByte++] = tmp & 0xFF\n  }\n\n  if (placeHoldersLen === 2) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 2) |\n      (revLookup[b64.charCodeAt(i + 1)] >> 4)\n    arr[curByte++] = tmp & 0xFF\n  }\n\n  if (placeHoldersLen === 1) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 10) |\n      (revLookup[b64.charCodeAt(i + 1)] << 4) |\n      (revLookup[b64.charCodeAt(i + 2)] >> 2)\n    arr[curByte++] = (tmp >> 8) & 0xFF\n    arr[curByte++] = tmp & 0xFF\n  }\n\n  return arr\n}\n\nfunction tripletToBase64 (num) {\n  return lookup[num >> 18 & 0x3F] +\n    lookup[num >> 12 & 0x3F] +\n    lookup[num >> 6 & 0x3F] +\n    lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n  var tmp\n  var output = []\n  for (var i = start; i < end; i += 3) {\n    tmp =\n      ((uint8[i] << 16) & 0xFF0000) +\n      ((uint8[i + 1] << 8) & 0xFF00) +\n      (uint8[i + 2] & 0xFF)\n    output.push(tripletToBase64(tmp))\n  }\n  return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n  var tmp\n  var len = uint8.length\n  var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n  var parts = []\n  var maxChunkLength = 16383 // must be multiple of 3\n\n  // go through the array every three bytes, we'll deal with trailing stuff later\n  for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n    parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n  }\n\n  // pad the end with zeros, but make sure to not forget the extra bytes\n  if (extraBytes === 1) {\n    tmp = uint8[len - 1]\n    parts.push(\n      lookup[tmp >> 2] +\n      lookup[(tmp << 4) & 0x3F] +\n      '=='\n    )\n  } else if (extraBytes === 2) {\n    tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n    parts.push(\n      lookup[tmp >> 10] +\n      lookup[(tmp >> 4) & 0x3F] +\n      lookup[(tmp << 2) & 0x3F] +\n      '='\n    )\n  }\n\n  return parts.join('')\n}\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n  var data = getMapData(this, key),\n      size = data.size;\n\n  data.set(key, value);\n  this.size += data.size == size ? 0 : 1;\n  return this;\n}\n\nmodule.exports = mapCacheSet;\n","/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n  return function(object) {\n    if (object == null) {\n      return false;\n    }\n    return object[key] === srcValue &&\n      (srcValue !== undefined || (key in Object(object)));\n  };\n}\n\nmodule.exports = matchesStrictComparable;\n","'use strict';\nrequire('./es6.regexp.exec');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar fails = require('./_fails');\nvar defined = require('./_defined');\nvar wks = require('./_wks');\nvar regexpExec = require('./_regexp-exec');\n\nvar SPECIES = wks('species');\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n  // #replace needs built-in support for named groups.\n  // #match works fine because it just return the exec results, even if it has\n  // a \"grops\" property.\n  var re = /./;\n  re.exec = function () {\n    var result = [];\n    result.groups = { a: '7' };\n    return result;\n  };\n  return ''.replace(re, '$<a>') !== '7';\n});\n\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = (function () {\n  // Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n  var re = /(?:)/;\n  var originalExec = re.exec;\n  re.exec = function () { return originalExec.apply(this, arguments); };\n  var result = 'ab'.split(re);\n  return result.length === 2 && result[0] === 'a' && result[1] === 'b';\n})();\n\nmodule.exports = function (KEY, length, exec) {\n  var SYMBOL = wks(KEY);\n\n  var DELEGATES_TO_SYMBOL = !fails(function () {\n    // String methods call symbol-named RegEp methods\n    var O = {};\n    O[SYMBOL] = function () { return 7; };\n    return ''[KEY](O) != 7;\n  });\n\n  var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL ? !fails(function () {\n    // Symbol-named RegExp methods call .exec\n    var execCalled = false;\n    var re = /a/;\n    re.exec = function () { execCalled = true; return null; };\n    if (KEY === 'split') {\n      // RegExp[@@split] doesn't call the regex's exec method, but first creates\n      // a new one. We need to return the patched regex when creating the new one.\n      re.constructor = {};\n      re.constructor[SPECIES] = function () { return re; };\n    }\n    re[SYMBOL]('');\n    return !execCalled;\n  }) : undefined;\n\n  if (\n    !DELEGATES_TO_SYMBOL ||\n    !DELEGATES_TO_EXEC ||\n    (KEY === 'replace' && !REPLACE_SUPPORTS_NAMED_GROUPS) ||\n    (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC)\n  ) {\n    var nativeRegExpMethod = /./[SYMBOL];\n    var fns = exec(\n      defined,\n      SYMBOL,\n      ''[KEY],\n      function maybeCallNative(nativeMethod, regexp, str, arg2, forceStringMethod) {\n        if (regexp.exec === regexpExec) {\n          if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n            // The native String method already delegates to @@method (this\n            // polyfilled function), leasing to infinite recursion.\n            // We avoid it by directly calling the native @@method method.\n            return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };\n          }\n          return { done: true, value: nativeMethod.call(str, regexp, arg2) };\n        }\n        return { done: false };\n      }\n    );\n    var strfn = fns[0];\n    var rxfn = fns[1];\n\n    redefine(String.prototype, KEY, strfn);\n    hide(RegExp.prototype, SYMBOL, length == 2\n      // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)\n      // 21.2.5.11 RegExp.prototype[@@split](string, limit)\n      ? function (string, arg) { return rxfn.call(string, this, arg); }\n      // 21.2.5.6 RegExp.prototype[@@match](string)\n      // 21.2.5.9 RegExp.prototype[@@search](string)\n      : function (string) { return rxfn.call(string, this); }\n    );\n  }\n};\n","var compareAscending = require('./_compareAscending');\n\n/**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\nfunction compareMultiple(object, other, orders) {\n  var index = -1,\n      objCriteria = object.criteria,\n      othCriteria = other.criteria,\n      length = objCriteria.length,\n      ordersLength = orders.length;\n\n  while (++index < length) {\n    var result = compareAscending(objCriteria[index], othCriteria[index]);\n    if (result) {\n      if (index >= ordersLength) {\n        return result;\n      }\n      var order = orders[index];\n      return result * (order == 'desc' ? -1 : 1);\n    }\n  }\n  // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n  // that causes it, under certain circumstances, to provide the same value for\n  // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n  // for more details.\n  //\n  // This also ensures a stable sort in V8 and other engines.\n  // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n  return object.index - other.index;\n}\n\nmodule.exports = compareMultiple;\n","import Vue from 'vue';\nimport { getZIndex } from '../../util/helpers';\n/* @vue/component */\n\nexport default Vue.extend().extend({\n  name: 'stackable',\n\n  data() {\n    return {\n      stackElement: null,\n      stackExclude: null,\n      stackMinZIndex: 0,\n      isActive: false\n    };\n  },\n\n  computed: {\n    activeZIndex() {\n      if (typeof window === 'undefined') return 0;\n      const content = this.stackElement || this.$refs.content; // Return current zindex if not active\n\n      const index = !this.isActive ? getZIndex(content) : this.getMaxZIndex(this.stackExclude || [content]) + 2;\n      if (index == null) return index; // Return max current z-index (excluding self) + 2\n      // (2 to leave room for an overlay below, if needed)\n\n      return parseInt(index);\n    }\n\n  },\n  methods: {\n    getMaxZIndex(exclude = []) {\n      const base = this.$el; // Start with lowest allowed z-index or z-index of\n      // base component's element, whichever is greater\n\n      const zis = [this.stackMinZIndex, getZIndex(base)]; // Convert the NodeList to an array to\n      // prevent an Edge bug with Symbol.iterator\n      // https://github.com/vuetifyjs/vuetify/issues/2146\n\n      const activeElements = [...document.getElementsByClassName('v-menu__content--active'), ...document.getElementsByClassName('v-dialog__content--active')]; // Get z-index for all active dialogs\n\n      for (let index = 0; index < activeElements.length; index++) {\n        if (!exclude.includes(activeElements[index])) {\n          zis.push(getZIndex(activeElements[index]));\n        }\n      }\n\n      return Math.max(...zis);\n    }\n\n  }\n});\n//# sourceMappingURL=index.js.map","/*\neslint\n@typescript-eslint/explicit-function-return-type: 0,\n@typescript-eslint/no-explicit-any: 0\n*/\nimport decode from 'jwt-decode'\nimport inflection from 'inflection'\nimport Vue from 'vue'\nimport fastCopy from 'fast-copy'\nimport _isObject from 'lodash/isObject'\nimport _trim from 'lodash/trim'\nimport _omit from 'lodash/omit'\nimport ObjectID from 'bson-objectid'\nimport { globalModels as models } from './service-module/global-models'\nimport stringify from 'fast-json-stable-stringify'\nexport function stripSlashes(location) {\n  return _trim(location, '/')\n}\nexport function setByDot(obj, path, value, ifDelete) {\n  if (ifDelete) {\n    // eslint-disable-next-line no-console\n    console.log(\n      'DEPRECATED. Use deleteByDot instead of setByDot(obj,path,value,true). (setByDot)'\n    )\n  }\n  if (path.indexOf('.') === -1) {\n    obj[path] = value\n    if (value === undefined && ifDelete) {\n      delete obj[path]\n    }\n    return\n  }\n  const parts = path.split('.')\n  const lastIndex = parts.length - 1\n  return parts.reduce((obj1, part, i) => {\n    if (i !== lastIndex) {\n      if (!obj1.hasOwnProperty(part) || typeof obj1[part] !== 'object') {\n        obj1[part] = {}\n      }\n      return obj1[part]\n    }\n    obj1[part] = value\n    if (value === undefined && ifDelete) {\n      delete obj1[part]\n    }\n    return obj1\n  }, obj)\n}\nexport function upperCaseFirst(string) {\n  return string.charAt(0).toUpperCase() + string.slice(1)\n}\nexport function getShortName(service) {\n  let namespace = stripSlashes(service)\n  if (Array.isArray(namespace)) {\n    namespace = namespace.slice(-1)\n  } else if (namespace.includes('/')) {\n    namespace = namespace.slice(namespace.lastIndexOf('/') + 1)\n  }\n  return namespace\n}\nexport function getNameFromPath(service) {\n  return stripSlashes(service)\n}\n// Reads and returns the contents of a cookie with the provided name.\nexport function readCookie(cookies, name) {\n  if (!cookies) {\n    return undefined\n  }\n  const nameEQ = name + '='\n  const ca = cookies.split(';')\n  for (let i = 0; i < ca.length; i++) {\n    let c = ca[i]\n    while (c.charAt(0) === ' ') {\n      c = c.substring(1, c.length)\n    }\n    if (c.indexOf(nameEQ) === 0) {\n      return c.substring(nameEQ.length, c.length)\n    }\n  }\n  return null\n}\n// Pass a decoded payload and it will return a boolean based on if it hasn't expired.\nexport function payloadIsValid(payload) {\n  return payload && payload.exp * 1000 > new Date().getTime()\n}\n// from https://github.com/iliakan/detect-node\nexport const isNode =\n  Object.prototype.toString.call(\n    typeof process !== 'undefined' ? process : 0\n  ) === '[object process]'\nexport const isBrowser = !isNode\nconst authDefaults = {\n  commit: undefined,\n  req: undefined,\n  moduleName: 'auth',\n  cookieName: 'feathers-jwt'\n}\nexport function getValidPayloadFromToken(token) {\n  if (token) {\n    try {\n      const payload = decode(token)\n      return payloadIsValid(payload) ? payload : undefined\n    } catch (error) {\n      return undefined\n    }\n  }\n  return undefined\n}\nexport const initAuth = function initAuth(options) {\n  const { commit, req, moduleName, cookieName, feathersClient } = Object.assign(\n    {},\n    authDefaults,\n    options\n  )\n  if (typeof commit !== 'function') {\n    throw new Error(\n      'You must pass the `commit` function in the `initAuth` function options.'\n    )\n  }\n  if (!req) {\n    throw new Error(\n      'You must pass the `req` object in the `initAuth` function options.'\n    )\n  }\n  const accessToken = readCookie(req.headers.cookie, cookieName)\n  const payload = getValidPayloadFromToken(accessToken)\n  if (payload) {\n    commit(`${moduleName}/setAccessToken`, accessToken)\n    commit(`${moduleName}/setPayload`, payload)\n    if (feathersClient) {\n      return feathersClient.authentication\n        .setAccessToken(accessToken)\n        .then(() => payload)\n    }\n  }\n  return Promise.resolve(payload)\n}\n/**\n * run de BaseModel hydration on client for each api\n */\nexport const hydrateApi = function hydrateApi({ api }) {\n  Object.keys(api).forEach((modelName) => {\n    if (!['byServicePath', 'BaseModel'].includes(modelName)) {\n      const Model = api[modelName]\n      Model.hydrateAll()\n    }\n  })\n}\n/**\n * Generate a new tempId and mark the record as a temp\n * @param state\n * @param item\n */\nexport function assignTempId(state, item) {\n  const { debug, tempIdField } = state\n  if (debug) {\n    // eslint-disable-next-line no-console\n    console.info('assigning temporary id to item', item)\n  }\n  const newId = new ObjectID().toHexString()\n  item[tempIdField] = newId\n  return newId\n}\nfunction stringifyIfObject(val) {\n  if (typeof val === 'object' && val != null) {\n    return val.toString()\n  }\n  return val\n}\n/**\n * Get the id from a record in this order:\n *   1. the `idField`\n *   2. id\n *   3. _id\n * @param item\n * @param idField\n */\nexport function getId(item, idField) {\n  if (!item) {\n    return\n  }\n  if (item[idField] != null || item.hasOwnProperty(idField)) {\n    return stringifyIfObject(item[idField])\n  }\n  if (item.id != null || item.hasOwnProperty('id')) {\n    return stringifyIfObject(item.id)\n  }\n  if (item._id != null || item.hasOwnProperty('_id')) {\n    return stringifyIfObject(item._id)\n  }\n}\n// Creates a Model class name from the last part of the servicePath\nexport function getModelName(Model) {\n  // If the Model.name has been customized, use it.\n  if (Model.modelName) {\n    return Model.modelName\n  }\n  // Otherwise, use an inflection of the last bit of the servicePath\n  const parts = Model.servicePath.split('/')\n  let name = parts[parts.length - 1]\n  name = inflection.titleize(name)\n  name = name.split('-').join('')\n  name = inflection.singularize(name)\n  return name\n}\nexport function registerModel(Model, globalModels, apiPrefix, servicePath) {\n  const modelName = getModelName(Model)\n  const path = apiPrefix ? `${apiPrefix}.${modelName}` : modelName\n  setByDot(globalModels, path, Model)\n  globalModels.byServicePath[servicePath] = Model\n  return {\n    path,\n    name: modelName\n  }\n}\nexport function getServicePrefix(servicePath) {\n  const parts = servicePath.split('/')\n  let name = parts[parts.length - 1]\n  // name = inflection.underscore(name)\n  name = name.replace(/-/g, '_')\n  name = inflection.camelize(name, true)\n  return name\n}\nexport function getServiceCapitalization(servicePath) {\n  const parts = servicePath.split('/')\n  let name = parts[parts.length - 1]\n  // name = inflection.underscore(name)\n  name = name.replace(/-/g, '_')\n  name = inflection.camelize(name)\n  return name\n}\nexport function updateOriginal(original, newData) {\n  Object.keys(newData).forEach((key) => {\n    const newProp = newData[key]\n    const oldProp = original[key]\n    let shouldCopyProp = false\n    if (newProp === oldProp) {\n      return\n    }\n    // If the old item doesn't already have this property, update it\n    if (!original.hasOwnProperty(key)) {\n      shouldCopyProp = true\n      // If the old prop is null or undefined, and the new prop is neither\n    } else if (\n      (oldProp === null || oldProp === undefined) &&\n      newProp !== null &&\n      newProp !== undefined\n    ) {\n      shouldCopyProp = true\n      // If both old and new are arrays\n    } else if (Array.isArray(oldProp) && Array.isArray(newProp)) {\n      shouldCopyProp = true\n    } else if (_isObject(oldProp)) {\n      shouldCopyProp = true\n    } else if (\n      oldProp !== newProp &&\n      !Array.isArray(oldProp) &&\n      !Array.isArray(newProp)\n    ) {\n      shouldCopyProp = true\n    }\n    if (shouldCopyProp) {\n      if (original.hasOwnProperty(key)) {\n        original[key] = newProp\n      } else {\n        Vue.set(original, key, newProp)\n      }\n    }\n  })\n}\nexport function getQueryInfo(params = {}, response = {}) {\n  const query = params.query || {}\n  const qid = params.qid || 'default'\n  const $limit =\n    response.limit !== null && response.limit !== undefined\n      ? response.limit\n      : query.$limit\n  const $skip =\n    response.skip !== null && response.skip !== undefined\n      ? response.skip\n      : query.$skip\n  const queryParams = _omit(query, ['$limit', '$skip'])\n  const queryId = stringify(queryParams)\n  const pageParams = $limit !== undefined ? { $limit, $skip } : undefined\n  const pageId = pageParams ? stringify(pageParams) : undefined\n  return {\n    qid,\n    query,\n    queryId,\n    queryParams,\n    pageParams,\n    pageId,\n    response: undefined,\n    isOutdated: undefined\n  }\n}\nexport function getItemsFromQueryInfo(pagination, queryInfo, keyedById) {\n  const { queryId, pageId } = queryInfo\n  const queryLevel = pagination[queryId]\n  const pageLevel = queryLevel && queryLevel[pageId]\n  const ids = pageLevel && pageLevel.ids\n  if (ids && ids.length) {\n    return ids.map((id) => keyedById[id])\n  } else {\n    return []\n  }\n}\nexport function makeNamespace(namespace, servicePath, nameStyle) {\n  const nameStyles = {\n    short: getShortName,\n    path: getNameFromPath\n  }\n  return namespace || nameStyles[nameStyle](servicePath)\n}\n/**\n * Gets the service path or name from the service.  The modelname is provided\n * to allow easier discovery if there's a problem.\n * @param service\n * @param modelName\n */\nexport function getServicePath(service, Model) {\n  if (!service.name && !service.path && !Model.servicePath) {\n    throw new Error(\n      `Service for model named ${Model.name} is missing a path or name property. The feathers adapter needs to be updated with a PR to expose this property. You can work around this by adding a static servicePath =  passing a 'servicePath' attribute in the options: makeServicePlugin({servicePath: '/path/to/my/service'})`\n    )\n  }\n  return service.path || service.name || Model.servicePath\n}\nexport function randomString(length) {\n  let text = ''\n  const possible =\n    'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'\n  for (let i = 0; i < length; i++) {\n    text += possible.charAt(Math.floor(Math.random() * possible.length))\n  }\n  return text\n}\nexport function createRelatedInstance({ item, Model, idField, store }) {\n  // Create store instances (if data contains an idField)\n  const model = new Model(item)\n  const id = getId(model, idField)\n  const storedModel = store.state[model.constructor.namespace].keyedById[id]\n  return { model, storedModel }\n}\nexport function isBaseModelInstance(item) {\n  const baseModels = Object.keys(models).map((alias) => models[alias].BaseModel)\n  return !!baseModels.find((BaseModel) => {\n    return item instanceof BaseModel\n  })\n}\nexport function mergeWithAccessors(\n  dest,\n  source,\n  blacklist = ['__isClone', '__ob__']\n) {\n  const sourceProps = Object.getOwnPropertyNames(source)\n  const destProps = Object.getOwnPropertyNames(dest)\n  const sourceIsVueObservable = sourceProps.includes('__ob__')\n  const destIsVueObservable = destProps.includes('__ob__')\n  sourceProps.forEach((key) => {\n    const sourceDesc = Object.getOwnPropertyDescriptor(source, key)\n    const destDesc = Object.getOwnPropertyDescriptor(dest, key)\n    // if (Array.isArray(source[key]) && source[key].find(i => i.__ob__)) {\n    //   sourceIsVueObservable = true\n    // }\n    // if (Array.isArray(dest[key]) && dest[key].find(i => i.__ob__)) {\n    //   destIsVueObservable = true\n    // }\n    // This might have to be uncommented, but we'll try it this way, for now.\n    // if (!sourceDesc.enumerable) {\n    //   return\n    // }\n    // If the destination is not writable, return. Also ignore blacklisted keys.\n    // Must explicitly check if writable is false\n    if ((destDesc && destDesc.writable === false) || blacklist.includes(key)) {\n      return\n    }\n    // Handle Vue observable objects\n    if (destIsVueObservable || sourceIsVueObservable) {\n      const isObject = _isObject(source[key])\n      const isFeathersVuexInstance =\n        isObject &&\n        !!(\n          source[key].constructor.modelName || source[key].constructor.namespace\n        )\n      // Do not use fastCopy directly on a feathers-vuex BaseModel instance to keep from breaking reactivity.\n      if (isObject && !isFeathersVuexInstance) {\n        try {\n          dest[key] = fastCopy(source[key])\n        } catch (err) {\n          if (!err.message.includes('getter')) {\n            throw err\n          }\n        }\n      } else {\n        try {\n          dest[key] = source[key]\n        } catch (err) {\n          if (!err.message.includes('getter')) {\n            throw err\n          }\n        }\n      }\n      return\n    }\n    // Handle defining accessors\n    if (\n      typeof sourceDesc.get === 'function' ||\n      typeof sourceDesc.set === 'function'\n    ) {\n      Object.defineProperty(dest, key, sourceDesc)\n      return\n    }\n    // Do not attempt to overwrite a getter in the dest object\n    if (destDesc && typeof destDesc.get === 'function') {\n      return\n    }\n    // Assign values\n    // Do not allow sharing of deeply-nested objects between instances\n    // Potentially breaks accessors on nested data. Needs recursion if this is an issue\n    let value\n    if (_isObject(sourceDesc.value) && !isBaseModelInstance(sourceDesc.value)) {\n      value = fastCopy(sourceDesc.value)\n    }\n    dest[key] = value || sourceDesc.value\n  })\n  return dest\n}\nexport function checkNamespace(namespace, item, debug) {\n  if (!namespace && debug) {\n    // eslint-disable-next-line no-console\n    console.error(\n      'A `namespace` was not available on the Model for this item:',\n      item,\n      'this can be caused by not passing the Model into the makeServicePlugin function'\n    )\n  }\n  return namespace !== null && namespace !== undefined\n}\nexport function assignIfNotPresent(Model, props) {\n  for (const key in props) {\n    if (!Model.hasOwnProperty(key)) {\n      Model[key] = props[key]\n    }\n  }\n}\n","var apply = require('./_apply');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n  start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n  return function() {\n    var args = arguments,\n        index = -1,\n        length = nativeMax(args.length - start, 0),\n        array = Array(length);\n\n    while (++index < length) {\n      array[index] = args[start + index];\n    }\n    index = -1;\n    var otherArgs = Array(start + 1);\n    while (++index < start) {\n      otherArgs[index] = args[index];\n    }\n    otherArgs[start] = transform(array);\n    return apply(func, this, otherArgs);\n  };\n}\n\nmodule.exports = overRest;\n","import VProgressCircular from './VProgressCircular';\nexport { VProgressCircular };\nexport default VProgressCircular;\n//# sourceMappingURL=index.js.map","var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n  return is ? document.createElement(it) : {};\n};\n","var memoize = require('./memoize');\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n  var result = memoize(func, function(key) {\n    if (cache.size === MAX_MEMOIZE_SIZE) {\n      cache.clear();\n    }\n    return key;\n  });\n\n  var cache = result.cache;\n  return result;\n}\n\nmodule.exports = memoizeCapped;\n","// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = require('./_cof');\nvar TAG = require('./_wks')('toStringTag');\n// ES3 wrong here\nvar ARG = cof(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 (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n  var O, T, B;\n  return it === undefined ? 'Undefined' : it === null ? 'Null'\n    // @@toStringTag case\n    : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n    // builtinTag case\n    : ARG ? cof(O)\n    // ES3 arguments fallback\n    : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n","var baseMerge = require('./_baseMerge'),\n    createAssigner = require('./_createAssigner');\n\n/**\n * This method is like `_.merge` except that it accepts `customizer` which\n * is invoked to produce the merged values of the destination and source\n * properties. If `customizer` returns `undefined`, merging is handled by the\n * method instead. The `customizer` is invoked with six arguments:\n * (objValue, srcValue, key, object, source, stack).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} customizer The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * function customizer(objValue, srcValue) {\n *   if (_.isArray(objValue)) {\n *     return objValue.concat(srcValue);\n *   }\n * }\n *\n * var object = { 'a': [1], 'b': [2] };\n * var other = { 'a': [3], 'b': [4] };\n *\n * _.mergeWith(object, other, customizer);\n * // => { 'a': [1, 3], 'b': [2, 4] }\n */\nvar mergeWith = createAssigner(function(object, source, srcIndex, customizer) {\n  baseMerge(object, source, srcIndex, customizer);\n});\n\nmodule.exports = mergeWith;\n","'use strict';\n// B.2.3.14 String.prototype.sup()\nrequire('./_string-html')('sup', function (createHTML) {\n  return function sup() {\n    return createHTML(this, 'sup', '', '');\n  };\n});\n","var baseFor = require('./_baseFor'),\n    keys = require('./keys');\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n  return object && baseFor(object, iteratee, keys);\n}\n\nmodule.exports = baseForOwn;\n","var baseEach = require('./_baseEach');\n\n/**\n * Aggregates elements of `collection` on `accumulator` with keys transformed\n * by `iteratee` and values set by `setter`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\nfunction baseAggregator(collection, setter, iteratee, accumulator) {\n  baseEach(collection, function(value, key, collection) {\n    setter(accumulator, value, iteratee(value), collection);\n  });\n  return accumulator;\n}\n\nmodule.exports = baseAggregator;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n  return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","// Helpers\nimport { convertToUnit } from '../../util/helpers'; // Types\n\nimport Vue from 'vue';\nexport default Vue.extend({\n  name: 'measurable',\n  props: {\n    height: [Number, String],\n    maxHeight: [Number, String],\n    maxWidth: [Number, String],\n    minHeight: [Number, String],\n    minWidth: [Number, String],\n    width: [Number, String]\n  },\n  computed: {\n    measurableStyles() {\n      const styles = {};\n      const height = convertToUnit(this.height);\n      const minHeight = convertToUnit(this.minHeight);\n      const minWidth = convertToUnit(this.minWidth);\n      const maxHeight = convertToUnit(this.maxHeight);\n      const maxWidth = convertToUnit(this.maxWidth);\n      const width = convertToUnit(this.width);\n      if (height) styles.height = height;\n      if (minHeight) styles.minHeight = minHeight;\n      if (minWidth) styles.minWidth = minWidth;\n      if (maxHeight) styles.maxHeight = maxHeight;\n      if (maxWidth) styles.maxWidth = maxWidth;\n      if (width) styles.width = width;\n      return styles;\n    }\n\n  }\n});\n//# sourceMappingURL=index.js.map","import VSubheader from './VSubheader';\nexport { VSubheader };\nexport default VSubheader;\n//# sourceMappingURL=index.js.map","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n  var data = this.__data__;\n  this.size += this.has(key) ? 0 : 1;\n  data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n  return this;\n}\n\nmodule.exports = hashSet;\n","var baseGetTag = require('./_baseGetTag'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n  return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","var basePick = require('./_basePick'),\n    flatRest = require('./_flatRest');\n\n/**\n * Creates an object composed of the picked `object` properties.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pick(object, ['a', 'c']);\n * // => { 'a': 1, 'c': 3 }\n */\nvar pick = flatRest(function(object, paths) {\n  return object == null ? {} : basePick(object, paths);\n});\n\nmodule.exports = pick;\n","exports.f = Object.getOwnPropertySymbols;\n","// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nmodule.exports = function installDirectives (component, directives) {\n  var options = typeof component.exports === 'function'\n    ? component.exports.extendOptions\n    : component.options\n\n  if (typeof component.exports === 'function') {\n    options.directives = component.exports.options.directives\n  }\n\n  options.directives = options.directives || {}\n\n  for (var i in directives) {\n    options.directives[i] = options.directives[i] || directives[i]\n  }\n}\n","/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n  return object != null && key in Object(object);\n}\n\nmodule.exports = baseHasIn;\n","const GF = require('./galois-field')\n\n/**\n * Multiplies two polynomials inside Galois Field\n *\n * @param  {Uint8Array} p1 Polynomial\n * @param  {Uint8Array} p2 Polynomial\n * @return {Uint8Array}    Product of p1 and p2\n */\nexports.mul = function mul (p1, p2) {\n  const coeff = new Uint8Array(p1.length + p2.length - 1)\n\n  for (let i = 0; i < p1.length; i++) {\n    for (let j = 0; j < p2.length; j++) {\n      coeff[i + j] ^= GF.mul(p1[i], p2[j])\n    }\n  }\n\n  return coeff\n}\n\n/**\n * Calculate the remainder of polynomials division\n *\n * @param  {Uint8Array} divident Polynomial\n * @param  {Uint8Array} divisor  Polynomial\n * @return {Uint8Array}          Remainder\n */\nexports.mod = function mod (divident, divisor) {\n  let result = new Uint8Array(divident)\n\n  while ((result.length - divisor.length) >= 0) {\n    const coeff = result[0]\n\n    for (let i = 0; i < divisor.length; i++) {\n      result[i] ^= GF.mul(divisor[i], coeff)\n    }\n\n    // remove all zeros from buffer head\n    let offset = 0\n    while (offset < result.length && result[offset] === 0) offset++\n    result = result.slice(offset)\n  }\n\n  return result\n}\n\n/**\n * Generate an irreducible generator polynomial of specified degree\n * (used by Reed-Solomon encoder)\n *\n * @param  {Number} degree Degree of the generator polynomial\n * @return {Uint8Array}    Buffer containing polynomial coefficients\n */\nexports.generateECPolynomial = function generateECPolynomial (degree) {\n  let poly = new Uint8Array([1])\n  for (let i = 0; i < degree; i++) {\n    poly = exports.mul(poly, new Uint8Array([1, GF.exp(i)]))\n  }\n\n  return poly\n}\n","/**\n * Check if QR Code version is valid\n *\n * @param  {Number}  version QR Code version\n * @return {Boolean}         true if valid version, false otherwise\n */\nexports.isValid = function isValid (version) {\n  return !isNaN(version) && version >= 1 && version <= 40\n}\n","/**\n * @author Charles Markovich\n * @summary  Check if JWT is expired\n * @description A global validator utility to share validation rules across all apps for a given project.\n * @public\n */\n\nvar jwtDecode = require('jwt-decode');\n\nconst isJwtExpired = (token) => {\n  if (typeof(token) !== 'string' || !token) throw new Error('Invalid token provided');\n\n  let isJwtExpired = false;\n  const { exp } = jwtDecode(token);\n  const currentTime = new Date().getTime() / 1000;\n\n  if (currentTime > exp) isJwtExpired = true;\n\n  return isJwtExpired;\n}\n\nmodule.exports.isJwtExpired = isJwtExpired;\n","\n/**\n * Module dependencies.\n */\n\nvar parser = require('socket.io-parser');\nvar Emitter = require('component-emitter');\nvar toArray = require('to-array');\nvar on = require('./on');\nvar bind = require('component-bind');\nvar debug = require('debug')('socket.io-client:socket');\nvar parseqs = require('parseqs');\nvar hasBin = require('has-binary2');\n\n/**\n * Module exports.\n */\n\nmodule.exports = exports = Socket;\n\n/**\n * Internal events (blacklisted).\n * These events can't be emitted by the user.\n *\n * @api private\n */\n\nvar events = {\n  connect: 1,\n  connect_error: 1,\n  connect_timeout: 1,\n  connecting: 1,\n  disconnect: 1,\n  error: 1,\n  reconnect: 1,\n  reconnect_attempt: 1,\n  reconnect_failed: 1,\n  reconnect_error: 1,\n  reconnecting: 1,\n  ping: 1,\n  pong: 1\n};\n\n/**\n * Shortcut to `Emitter#emit`.\n */\n\nvar emit = Emitter.prototype.emit;\n\n/**\n * `Socket` constructor.\n *\n * @api public\n */\n\nfunction Socket (io, nsp, opts) {\n  this.io = io;\n  this.nsp = nsp;\n  this.json = this; // compat\n  this.ids = 0;\n  this.acks = {};\n  this.receiveBuffer = [];\n  this.sendBuffer = [];\n  this.connected = false;\n  this.disconnected = true;\n  this.flags = {};\n  if (opts && opts.query) {\n    this.query = opts.query;\n  }\n  if (this.io.autoConnect) this.open();\n}\n\n/**\n * Mix in `Emitter`.\n */\n\nEmitter(Socket.prototype);\n\n/**\n * Subscribe to open, close and packet events\n *\n * @api private\n */\n\nSocket.prototype.subEvents = function () {\n  if (this.subs) return;\n\n  var io = this.io;\n  this.subs = [\n    on(io, 'open', bind(this, 'onopen')),\n    on(io, 'packet', bind(this, 'onpacket')),\n    on(io, 'close', bind(this, 'onclose'))\n  ];\n};\n\n/**\n * \"Opens\" the socket.\n *\n * @api public\n */\n\nSocket.prototype.open =\nSocket.prototype.connect = function () {\n  if (this.connected) return this;\n\n  this.subEvents();\n  if (!this.io.reconnecting) this.io.open(); // ensure open\n  if ('open' === this.io.readyState) this.onopen();\n  this.emit('connecting');\n  return this;\n};\n\n/**\n * Sends a `message` event.\n *\n * @return {Socket} self\n * @api public\n */\n\nSocket.prototype.send = function () {\n  var args = toArray(arguments);\n  args.unshift('message');\n  this.emit.apply(this, args);\n  return this;\n};\n\n/**\n * Override `emit`.\n * If the event is in `events`, it's emitted normally.\n *\n * @param {String} event name\n * @return {Socket} self\n * @api public\n */\n\nSocket.prototype.emit = function (ev) {\n  if (events.hasOwnProperty(ev)) {\n    emit.apply(this, arguments);\n    return this;\n  }\n\n  var args = toArray(arguments);\n  var packet = {\n    type: (this.flags.binary !== undefined ? this.flags.binary : hasBin(args)) ? parser.BINARY_EVENT : parser.EVENT,\n    data: args\n  };\n\n  packet.options = {};\n  packet.options.compress = !this.flags || false !== this.flags.compress;\n\n  // event ack callback\n  if ('function' === typeof args[args.length - 1]) {\n    debug('emitting packet with ack id %d', this.ids);\n    this.acks[this.ids] = args.pop();\n    packet.id = this.ids++;\n  }\n\n  if (this.connected) {\n    this.packet(packet);\n  } else {\n    this.sendBuffer.push(packet);\n  }\n\n  this.flags = {};\n\n  return this;\n};\n\n/**\n * Sends a packet.\n *\n * @param {Object} packet\n * @api private\n */\n\nSocket.prototype.packet = function (packet) {\n  packet.nsp = this.nsp;\n  this.io.packet(packet);\n};\n\n/**\n * Called upon engine `open`.\n *\n * @api private\n */\n\nSocket.prototype.onopen = function () {\n  debug('transport is open - connecting');\n\n  // write connect packet if necessary\n  if ('/' !== this.nsp) {\n    if (this.query) {\n      var query = typeof this.query === 'object' ? parseqs.encode(this.query) : this.query;\n      debug('sending connect packet with query %s', query);\n      this.packet({type: parser.CONNECT, query: query});\n    } else {\n      this.packet({type: parser.CONNECT});\n    }\n  }\n};\n\n/**\n * Called upon engine `close`.\n *\n * @param {String} reason\n * @api private\n */\n\nSocket.prototype.onclose = function (reason) {\n  debug('close (%s)', reason);\n  this.connected = false;\n  this.disconnected = true;\n  delete this.id;\n  this.emit('disconnect', reason);\n};\n\n/**\n * Called with socket packet.\n *\n * @param {Object} packet\n * @api private\n */\n\nSocket.prototype.onpacket = function (packet) {\n  var sameNamespace = packet.nsp === this.nsp;\n  var rootNamespaceError = packet.type === parser.ERROR && packet.nsp === '/';\n\n  if (!sameNamespace && !rootNamespaceError) return;\n\n  switch (packet.type) {\n    case parser.CONNECT:\n      this.onconnect();\n      break;\n\n    case parser.EVENT:\n      this.onevent(packet);\n      break;\n\n    case parser.BINARY_EVENT:\n      this.onevent(packet);\n      break;\n\n    case parser.ACK:\n      this.onack(packet);\n      break;\n\n    case parser.BINARY_ACK:\n      this.onack(packet);\n      break;\n\n    case parser.DISCONNECT:\n      this.ondisconnect();\n      break;\n\n    case parser.ERROR:\n      this.emit('error', packet.data);\n      break;\n  }\n};\n\n/**\n * Called upon a server event.\n *\n * @param {Object} packet\n * @api private\n */\n\nSocket.prototype.onevent = function (packet) {\n  var args = packet.data || [];\n  debug('emitting event %j', args);\n\n  if (null != packet.id) {\n    debug('attaching ack callback to event');\n    args.push(this.ack(packet.id));\n  }\n\n  if (this.connected) {\n    emit.apply(this, args);\n  } else {\n    this.receiveBuffer.push(args);\n  }\n};\n\n/**\n * Produces an ack callback to emit with an event.\n *\n * @api private\n */\n\nSocket.prototype.ack = function (id) {\n  var self = this;\n  var sent = false;\n  return function () {\n    // prevent double callbacks\n    if (sent) return;\n    sent = true;\n    var args = toArray(arguments);\n    debug('sending ack %j', args);\n\n    self.packet({\n      type: hasBin(args) ? parser.BINARY_ACK : parser.ACK,\n      id: id,\n      data: args\n    });\n  };\n};\n\n/**\n * Called upon a server acknowlegement.\n *\n * @param {Object} packet\n * @api private\n */\n\nSocket.prototype.onack = function (packet) {\n  var ack = this.acks[packet.id];\n  if ('function' === typeof ack) {\n    debug('calling ack %s with %j', packet.id, packet.data);\n    ack.apply(this, packet.data);\n    delete this.acks[packet.id];\n  } else {\n    debug('bad ack %s', packet.id);\n  }\n};\n\n/**\n * Called upon server connect.\n *\n * @api private\n */\n\nSocket.prototype.onconnect = function () {\n  this.connected = true;\n  this.disconnected = false;\n  this.emit('connect');\n  this.emitBuffered();\n};\n\n/**\n * Emit buffered events (received and emitted).\n *\n * @api private\n */\n\nSocket.prototype.emitBuffered = function () {\n  var i;\n  for (i = 0; i < this.receiveBuffer.length; i++) {\n    emit.apply(this, this.receiveBuffer[i]);\n  }\n  this.receiveBuffer = [];\n\n  for (i = 0; i < this.sendBuffer.length; i++) {\n    this.packet(this.sendBuffer[i]);\n  }\n  this.sendBuffer = [];\n};\n\n/**\n * Called upon server disconnect.\n *\n * @api private\n */\n\nSocket.prototype.ondisconnect = function () {\n  debug('server disconnect (%s)', this.nsp);\n  this.destroy();\n  this.onclose('io server disconnect');\n};\n\n/**\n * Called upon forced client/server side disconnections,\n * this method ensures the manager stops tracking us and\n * that reconnections don't get triggered for this.\n *\n * @api private.\n */\n\nSocket.prototype.destroy = function () {\n  if (this.subs) {\n    // clean subscriptions to avoid reconnections\n    for (var i = 0; i < this.subs.length; i++) {\n      this.subs[i].destroy();\n    }\n    this.subs = null;\n  }\n\n  this.io.destroy(this);\n};\n\n/**\n * Disconnects the socket manually.\n *\n * @return {Socket} self\n * @api public\n */\n\nSocket.prototype.close =\nSocket.prototype.disconnect = function () {\n  if (this.connected) {\n    debug('performing disconnect (%s)', this.nsp);\n    this.packet({ type: parser.DISCONNECT });\n  }\n\n  // remove socket from pool\n  this.destroy();\n\n  if (this.connected) {\n    // fire events\n    this.onclose('io client disconnect');\n  }\n  return this;\n};\n\n/**\n * Sets the compress flag.\n *\n * @param {Boolean} if `true`, compresses the sending data\n * @return {Socket} self\n * @api public\n */\n\nSocket.prototype.compress = function (compress) {\n  this.flags.compress = compress;\n  return this;\n};\n\n/**\n * Sets the binary flag\n *\n * @param {Boolean} whether the emitted data contains binary\n * @return {Socket} self\n * @api public\n */\n\nSocket.prototype.binary = function (binary) {\n  this.flags.binary = binary;\n  return this;\n};\n","/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nexport default function normalizeComponent (\n  scriptExports,\n  render,\n  staticRenderFns,\n  functionalTemplate,\n  injectStyles,\n  scopeId,\n  moduleIdentifier, /* server only */\n  shadowMode /* vue-cli only */\n) {\n  // Vue.extend constructor export interop\n  var options = typeof scriptExports === 'function'\n    ? scriptExports.options\n    : scriptExports\n\n  // render functions\n  if (render) {\n    options.render = render\n    options.staticRenderFns = staticRenderFns\n    options._compiled = true\n  }\n\n  // functional template\n  if (functionalTemplate) {\n    options.functional = true\n  }\n\n  // scopedId\n  if (scopeId) {\n    options._scopeId = 'data-v-' + scopeId\n  }\n\n  var hook\n  if (moduleIdentifier) { // server build\n    hook = function (context) {\n      // 2.3 injection\n      context =\n        context || // cached call\n        (this.$vnode && this.$vnode.ssrContext) || // stateful\n        (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n      // 2.2 with runInNewContext: true\n      if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n        context = __VUE_SSR_CONTEXT__\n      }\n      // inject component styles\n      if (injectStyles) {\n        injectStyles.call(this, context)\n      }\n      // register component module identifier for async chunk inferrence\n      if (context && context._registeredComponents) {\n        context._registeredComponents.add(moduleIdentifier)\n      }\n    }\n    // used by ssr in case component is cached and beforeCreate\n    // never gets called\n    options._ssrRegister = hook\n  } else if (injectStyles) {\n    hook = shadowMode\n      ? function () {\n        injectStyles.call(\n          this,\n          (options.functional ? this.parent : this).$root.$options.shadowRoot\n        )\n      }\n      : injectStyles\n  }\n\n  if (hook) {\n    if (options.functional) {\n      // for template-only hot-reload because in that case the render fn doesn't\n      // go through the normalizer\n      options._injectStyles = hook\n      // register for functional component in vue file\n      var originalRender = options.render\n      options.render = function renderWithStyleInjection (h, context) {\n        hook.call(context)\n        return originalRender(h, context)\n      }\n    } else {\n      // inject component registration as beforeCreate hook\n      var existing = options.beforeCreate\n      options.beforeCreate = existing\n        ? [].concat(existing, hook)\n        : [hook]\n    }\n  }\n\n  return {\n    exports: scriptExports,\n    options: options\n  }\n}\n","if (typeof Object.create === 'function') {\n  // implementation from standard node.js 'util' module\n  module.exports = function inherits(ctor, superCtor) {\n    ctor.super_ = superCtor\n    ctor.prototype = Object.create(superCtor.prototype, {\n      constructor: {\n        value: ctor,\n        enumerable: false,\n        writable: true,\n        configurable: true\n      }\n    });\n  };\n} else {\n  // old school shim for old browsers\n  module.exports = function inherits(ctor, superCtor) {\n    ctor.super_ = superCtor\n    var TempCtor = function () {}\n    TempCtor.prototype = superCtor.prototype\n    ctor.prototype = new TempCtor()\n    ctor.prototype.constructor = ctor\n  }\n}\n","'use strict';\n\nvar isRegExp = require('./_is-regexp');\nvar anObject = require('./_an-object');\nvar speciesConstructor = require('./_species-constructor');\nvar advanceStringIndex = require('./_advance-string-index');\nvar toLength = require('./_to-length');\nvar callRegExpExec = require('./_regexp-exec-abstract');\nvar regexpExec = require('./_regexp-exec');\nvar fails = require('./_fails');\nvar $min = Math.min;\nvar $push = [].push;\nvar $SPLIT = 'split';\nvar LENGTH = 'length';\nvar LAST_INDEX = 'lastIndex';\nvar MAX_UINT32 = 0xffffffff;\n\n// babel-minify transpiles RegExp('x', 'y') -> /x/y and it causes SyntaxError\nvar SUPPORTS_Y = !fails(function () { RegExp(MAX_UINT32, 'y'); });\n\n// @@split logic\nrequire('./_fix-re-wks')('split', 2, function (defined, SPLIT, $split, maybeCallNative) {\n  var internalSplit;\n  if (\n    'abbc'[$SPLIT](/(b)*/)[1] == 'c' ||\n    'test'[$SPLIT](/(?:)/, -1)[LENGTH] != 4 ||\n    'ab'[$SPLIT](/(?:ab)*/)[LENGTH] != 2 ||\n    '.'[$SPLIT](/(.?)(.?)/)[LENGTH] != 4 ||\n    '.'[$SPLIT](/()()/)[LENGTH] > 1 ||\n    ''[$SPLIT](/.?/)[LENGTH]\n  ) {\n    // based on es5-shim implementation, need to rework it\n    internalSplit = function (separator, limit) {\n      var string = String(this);\n      if (separator === undefined && limit === 0) return [];\n      // If `separator` is not a regex, use native split\n      if (!isRegExp(separator)) return $split.call(string, separator, limit);\n      var output = [];\n      var flags = (separator.ignoreCase ? 'i' : '') +\n                  (separator.multiline ? 'm' : '') +\n                  (separator.unicode ? 'u' : '') +\n                  (separator.sticky ? 'y' : '');\n      var lastLastIndex = 0;\n      var splitLimit = limit === undefined ? MAX_UINT32 : limit >>> 0;\n      // Make `global` and avoid `lastIndex` issues by working with a copy\n      var separatorCopy = new RegExp(separator.source, flags + 'g');\n      var match, lastIndex, lastLength;\n      while (match = regexpExec.call(separatorCopy, string)) {\n        lastIndex = separatorCopy[LAST_INDEX];\n        if (lastIndex > lastLastIndex) {\n          output.push(string.slice(lastLastIndex, match.index));\n          if (match[LENGTH] > 1 && match.index < string[LENGTH]) $push.apply(output, match.slice(1));\n          lastLength = match[0][LENGTH];\n          lastLastIndex = lastIndex;\n          if (output[LENGTH] >= splitLimit) break;\n        }\n        if (separatorCopy[LAST_INDEX] === match.index) separatorCopy[LAST_INDEX]++; // Avoid an infinite loop\n      }\n      if (lastLastIndex === string[LENGTH]) {\n        if (lastLength || !separatorCopy.test('')) output.push('');\n      } else output.push(string.slice(lastLastIndex));\n      return output[LENGTH] > splitLimit ? output.slice(0, splitLimit) : output;\n    };\n  // Chakra, V8\n  } else if ('0'[$SPLIT](undefined, 0)[LENGTH]) {\n    internalSplit = function (separator, limit) {\n      return separator === undefined && limit === 0 ? [] : $split.call(this, separator, limit);\n    };\n  } else {\n    internalSplit = $split;\n  }\n\n  return [\n    // `String.prototype.split` method\n    // https://tc39.github.io/ecma262/#sec-string.prototype.split\n    function split(separator, limit) {\n      var O = defined(this);\n      var splitter = separator == undefined ? undefined : separator[SPLIT];\n      return splitter !== undefined\n        ? splitter.call(separator, O, limit)\n        : internalSplit.call(String(O), separator, limit);\n    },\n    // `RegExp.prototype[@@split]` method\n    // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@split\n    //\n    // NOTE: This cannot be properly polyfilled in engines that don't support\n    // the 'y' flag.\n    function (regexp, limit) {\n      var res = maybeCallNative(internalSplit, regexp, this, limit, internalSplit !== $split);\n      if (res.done) return res.value;\n\n      var rx = anObject(regexp);\n      var S = String(this);\n      var C = speciesConstructor(rx, RegExp);\n\n      var unicodeMatching = rx.unicode;\n      var flags = (rx.ignoreCase ? 'i' : '') +\n                  (rx.multiline ? 'm' : '') +\n                  (rx.unicode ? 'u' : '') +\n                  (SUPPORTS_Y ? 'y' : 'g');\n\n      // ^(? + rx + ) is needed, in combination with some S slicing, to\n      // simulate the 'y' flag.\n      var splitter = new C(SUPPORTS_Y ? rx : '^(?:' + rx.source + ')', flags);\n      var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n      if (lim === 0) return [];\n      if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : [];\n      var p = 0;\n      var q = 0;\n      var A = [];\n      while (q < S.length) {\n        splitter.lastIndex = SUPPORTS_Y ? q : 0;\n        var z = callRegExpExec(splitter, SUPPORTS_Y ? S : S.slice(q));\n        var e;\n        if (\n          z === null ||\n          (e = $min(toLength(splitter.lastIndex + (SUPPORTS_Y ? 0 : q)), S.length)) === p\n        ) {\n          q = advanceStringIndex(S, q, unicodeMatching);\n        } else {\n          A.push(S.slice(p, q));\n          if (A.length === lim) return A;\n          for (var i = 1; i <= z.length - 1; i++) {\n            A.push(z[i]);\n            if (A.length === lim) return A;\n          }\n          q = p = e;\n        }\n      }\n      A.push(S.slice(p));\n      return A;\n    }\n  ];\n});\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n  this.__data__ = [];\n  this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","import Vue from 'vue';\nimport VProgressLinear from '../../components/VProgressLinear';\n/**\n * Loadable\n *\n * @mixin\n *\n * Used to add linear progress bar to components\n * Can use a default bar with a specific color\n * or designate a custom progress linear bar\n */\n\n/* @vue/component */\n\nexport default Vue.extend().extend({\n  name: 'loadable',\n  props: {\n    loading: {\n      type: [Boolean, String],\n      default: false\n    },\n    loaderHeight: {\n      type: [Number, String],\n      default: 2\n    }\n  },\n  methods: {\n    genProgress() {\n      if (this.loading === false) return null;\n      return this.$slots.progress || this.$createElement(VProgressLinear, {\n        props: {\n          absolute: true,\n          color: this.loading === true || this.loading === '' ? this.color || 'primary' : this.loading,\n          height: this.loaderHeight,\n          indeterminate: true\n        }\n      });\n    }\n\n  }\n});\n//# sourceMappingURL=index.js.map","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n  return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","// Components\nimport VToolbar from './VToolbar'; // Utilities\n\nimport { createSimpleFunctional } from '../../util/helpers';\nconst VToolbarTitle = createSimpleFunctional('v-toolbar__title');\nconst VToolbarItems = createSimpleFunctional('v-toolbar__items');\nexport { VToolbar, VToolbarItems, VToolbarTitle };\nexport default {\n  $_vuetify_subcomponents: {\n    VToolbar,\n    VToolbarItems,\n    VToolbarTitle\n  }\n};\n//# sourceMappingURL=index.js.map","var global = require('./_global');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar SRC = require('./_uid')('src');\nvar $toString = require('./_function-to-string');\nvar TO_STRING = 'toString';\nvar TPL = ('' + $toString).split(TO_STRING);\n\nrequire('./_core').inspectSource = function (it) {\n  return $toString.call(it);\n};\n\n(module.exports = function (O, key, val, safe) {\n  var isFunction = typeof val == 'function';\n  if (isFunction) has(val, 'name') || hide(val, 'name', key);\n  if (O[key] === val) return;\n  if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));\n  if (O === global) {\n    O[key] = val;\n  } else if (!safe) {\n    delete O[key];\n    hide(O, key, val);\n  } else if (O[key]) {\n    O[key] = val;\n  } else {\n    hide(O, key, val);\n  }\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, TO_STRING, function toString() {\n  return typeof this == 'function' && this[SRC] || $toString.call(this);\n});\n","// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = require('./_an-object');\nvar dPs = require('./_object-dps');\nvar enumBugKeys = require('./_enum-bug-keys');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n  // Thrash, waste and sodomy: IE GC bug\n  var iframe = require('./_dom-create')('iframe');\n  var i = enumBugKeys.length;\n  var lt = '<';\n  var gt = '>';\n  var iframeDocument;\n  iframe.style.display = 'none';\n  require('./_html').appendChild(iframe);\n  iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n  // createDict = iframe.contentWindow.Object;\n  // html.removeChild(iframe);\n  iframeDocument = iframe.contentWindow.document;\n  iframeDocument.open();\n  iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n  iframeDocument.close();\n  createDict = iframeDocument.F;\n  while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n  return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n  var result;\n  if (O !== null) {\n    Empty[PROTOTYPE] = anObject(O);\n    result = new Empty();\n    Empty[PROTOTYPE] = null;\n    // add \"__proto__\" for Object.getPrototypeOf polyfill\n    result[IE_PROTO] = O;\n  } else result = createDict();\n  return Properties === undefined ? result : dPs(result, Properties);\n};\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = sift;\nexports.compare = compare;\nexports.comparable = comparable;\n\nfunction _typeof(obj) {\n  if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n    _typeof = function _typeof(obj) {\n      return typeof obj;\n    };\n  } else {\n    _typeof = function _typeof(obj) {\n      return obj &&\n        typeof Symbol === \"function\" &&\n        obj.constructor === Symbol &&\n        obj !== Symbol.prototype\n        ? \"symbol\"\n        : typeof obj;\n    };\n  }\n  return _typeof(obj);\n}\n\n/*\n *\n * Copryright 2018, Craig Condon\n * Licensed under MIT\n *\n * Filter JavaScript objects with mongodb queries\n */\nfunction typeChecker(type) {\n  var typeString = \"[object \" + type + \"]\";\n  return function(value) {\n    return Object.prototype.toString.call(value) === typeString;\n  };\n}\n/**\n */\n\nvar isArray = typeChecker(\"Array\");\nvar isObject = typeChecker(\"Object\");\nvar isFunction = typeChecker(\"Function\");\n\nfunction get(obj, key) {\n  return isFunction(obj.get) ? obj.get(key) : obj[key];\n}\n/**\n */\n\nfunction or(validator) {\n  return function(validateOptions, value) {\n    if (!isArray(value) || !value.length) {\n      return validator(validateOptions, value);\n    }\n\n    for (var i = 0, n = value.length; i < n; i++) {\n      if (validator(validateOptions, get(value, i))) return true;\n    }\n\n    return false;\n  };\n}\n/**\n */\n\nfunction and(validator) {\n  return function(validateOptions, value) {\n    if (!isArray(value) || !value.length) {\n      return validator(validateOptions, value);\n    }\n\n    for (var i = 0, n = value.length; i < n; i++) {\n      if (!validator(validateOptions, get(value, i))) return false;\n    }\n\n    return true;\n  };\n}\n\nfunction _validate(validator, value, key, valueOwner) {\n  return validator.validate(validator.options, value, key, valueOwner);\n}\n\nvar defaultExpressions = {\n  /**\n   */\n  $eq: or(function(test, value) {\n    return test(value);\n  }),\n\n  /**\n   */\n  $ne: and(function(test, value) {\n    return test(value);\n  }),\n\n  /**\n   */\n  $gt: or(function(test, value) {\n    return test(value);\n  }),\n\n  /**\n   */\n  $gte: or(function(test, value) {\n    return test(value);\n  }),\n\n  /**\n   */\n  $lt: or(function(test, value) {\n    return test(value);\n  }),\n\n  /**\n   */\n  $lte: or(function(test, value) {\n    return test(value);\n  }),\n\n  /**\n   */\n  $mod: or(function(test, value) {\n    return test(value);\n  }),\n\n  /**\n   */\n  $in: function $in(test, value) {\n    return test(value);\n  },\n\n  /**\n   */\n  $nin: function $nin(test, value) {\n    return test(value);\n  },\n\n  /**\n   */\n  $not: function $not(test, value, key, valueOwner) {\n    return test(value, key, valueOwner);\n  },\n\n  /**\n   */\n  $type: function $type(testType, value) {\n    return testType(value);\n  },\n\n  /**\n   */\n  $all: function $all(allOptions, value, key, valueOwner) {\n    return defaultExpressions.$and(allOptions, value, key, valueOwner);\n  },\n\n  /**\n   */\n  $size: function $size(sizeMatch, value) {\n    return value ? sizeMatch === value.length : false;\n  },\n\n  /**\n   */\n  $or: function $or(orOptions, value, key, valueOwner) {\n    for (var i = 0, n = orOptions.length; i < n; i++) {\n      if (_validate(get(orOptions, i), value, key, valueOwner)) {\n        return true;\n      }\n    }\n\n    return false;\n  },\n\n  /**\n   */\n  $nor: function $nor(validateOptions, value, key, valueOwner) {\n    return !defaultExpressions.$or(validateOptions, value, key, valueOwner);\n  },\n\n  /**\n   */\n  $and: function $and(validateOptions, value, key, valueOwner) {\n    for (var i = 0, n = validateOptions.length; i < n; i++) {\n      if (!_validate(get(validateOptions, i), value, key, valueOwner)) {\n        return false;\n      }\n    }\n\n    return true;\n  },\n\n  /**\n   */\n  $regex: or(function(validateOptions, value) {\n    return typeof value === \"string\" && validateOptions.test(value);\n  }),\n\n  /**\n   */\n  $where: function $where(validateOptions, value, key, valueOwner) {\n    return validateOptions.call(value, value, key, valueOwner);\n  },\n\n  /**\n   */\n  $elemMatch: function $elemMatch(validateOptions, value, key, valueOwner) {\n    if (isArray(value)) {\n      return !!~search(value, validateOptions);\n    }\n\n    return _validate(validateOptions, value, key, valueOwner);\n  },\n\n  /**\n   */\n  $exists: function $exists(validateOptions, value, key, valueOwner) {\n    return valueOwner.hasOwnProperty(key) === validateOptions;\n  }\n};\n/**\n */\n\nvar prepare = {\n  /**\n   */\n  $eq: function $eq(query, queryOwner, _ref) {\n    var comparable = _ref.comparable,\n      compare = _ref.compare;\n\n    if (query instanceof RegExp) {\n      return or(function(value) {\n        return typeof value === \"string\" && query.test(value);\n      });\n    } else if (query instanceof Function) {\n      return or(query);\n    } else if (isArray(query) && !query.length) {\n      // Special case of a == []\n      return or(function(value) {\n        return isArray(value) && !value.length;\n      });\n    } else if (query === null) {\n      return or(function(value) {\n        //will match both null and undefined\n        return value == null;\n      });\n    }\n\n    return or(function(value) {\n      return compare(comparable(value), comparable(query)) === 0;\n    });\n  },\n  $gt: function $gt(query, queryOwner, _ref2) {\n    var comparable = _ref2.comparable,\n      compare = _ref2.compare;\n    return function(value) {\n      return compare(comparable(value), comparable(query)) > 0;\n    };\n  },\n  $gte: function $gte(query, queryOwner, _ref3) {\n    var comparable = _ref3.comparable,\n      compare = _ref3.compare;\n    return function(value) {\n      return compare(comparable(value), comparable(query)) >= 0;\n    };\n  },\n  $lt: function $lt(query, queryOwner, _ref4) {\n    var comparable = _ref4.comparable,\n      compare = _ref4.compare;\n    return function(value) {\n      return compare(comparable(value), comparable(query)) < 0;\n    };\n  },\n  $lte: function $lte(query, queryOwner, _ref5) {\n    var comparable = _ref5.comparable,\n      compare = _ref5.compare;\n    return function(value) {\n      return compare(comparable(value), comparable(query)) <= 0;\n    };\n  },\n  $in: function $in(query, queryOwner, options) {\n    var comparable = options.comparable;\n    return function(value) {\n      if (value instanceof Array) {\n        for (var i = value.length; i--; ) {\n          if (~query.indexOf(comparable(get(value, i)))) {\n            return true;\n          }\n        }\n      } else {\n        var comparableValue = comparable(value);\n\n        if (comparableValue === value && _typeof(value) === \"object\") {\n          for (var i = query.length; i--; ) {\n            if (\n              String(query[i]) === String(value) &&\n              String(value) !== \"[object Object]\"\n            ) {\n              return true;\n            }\n          }\n        }\n        /*\n          Handles documents that are undefined, whilst also\n          having a 'null' element in the parameters to $in.\n        */\n\n        if (typeof comparableValue == \"undefined\") {\n          for (var i = query.length; i--; ) {\n            if (query[i] == null) {\n              return true;\n            }\n          }\n        }\n        /*\n          Handles the case of {'field': {$in: [/regexp1/, /regexp2/, ...]}}\n        */\n\n        for (var i = query.length; i--; ) {\n          var validator = createRootValidator(get(query, i), options);\n\n          var result = _validate(validator, comparableValue, i, query);\n\n          if (\n            result &&\n            String(result) !== \"[object Object]\" &&\n            String(comparableValue) !== \"[object Object]\"\n          ) {\n            return true;\n          }\n        }\n\n        return !!~query.indexOf(comparableValue);\n      }\n\n      return false;\n    };\n  },\n  $nin: function $nin(query, queryOwner, options) {\n    var eq = prepare.$in(query, queryOwner, options);\n    return function(validateOptions, value, key, valueOwner) {\n      return !eq(validateOptions, value, key, valueOwner);\n    };\n  },\n  $mod: function $mod(query) {\n    return function(value) {\n      return value % query[0] == query[1];\n    };\n  },\n\n  /**\n   */\n  $ne: function $ne(query, queryOwner, options) {\n    var eq = prepare.$eq(query, queryOwner, options);\n    return and(function(validateOptions, value, key, valueOwner) {\n      return !eq(validateOptions, value, key, valueOwner);\n    });\n  },\n\n  /**\n   */\n  $and: function $and(query, queryOwner, options) {\n    return query.map(parse(options));\n  },\n\n  /**\n   */\n  $all: function $all(query, queryOwner, options) {\n    return prepare.$and(query, queryOwner, options);\n  },\n\n  /**\n   */\n  $or: function $or(query, queryOwner, options) {\n    return query.map(parse(options));\n  },\n\n  /**\n   */\n  $nor: function $nor(query, queryOwner, options) {\n    return query.map(parse(options));\n  },\n\n  /**\n   */\n  $not: function $not(query, queryOwner, options) {\n    var validateOptions = parse(options)(query);\n    return function(value, key, valueOwner) {\n      return !_validate(validateOptions, value, key, valueOwner);\n    };\n  },\n  $type: function $type(query) {\n    return function(value, key, valueOwner) {\n      return value != void 0\n        ? value instanceof query || value.constructor == query\n        : false;\n    };\n  },\n\n  /**\n   */\n  $regex: function $regex(query, queryOwner) {\n    return new RegExp(query, queryOwner.$options);\n  },\n\n  /**\n   */\n  $where: function $where(query) {\n    if (typeof query === \"function\") {\n      return query;\n    }\n\n    if (!process.env.CSP_ENABLED) {\n      return new Function(\"obj\", \"return \" + query);\n    }\n\n    throw new Error(\n      'In CSP mode, sift does not support strings in \"$where\" condition'\n    );\n  },\n\n  /**\n   */\n  $elemMatch: function $elemMatch(query, queryOwner, options) {\n    return parse(options)(query);\n  },\n\n  /**\n   */\n  $exists: function $exists(query) {\n    return !!query;\n  }\n};\n/**\n */\n\nfunction search(array, validator) {\n  for (var i = 0; i < array.length; i++) {\n    var result = get(array, i);\n\n    if (_validate(validator, get(array, i))) {\n      return i;\n    }\n  }\n\n  return -1;\n}\n/**\n */\n\nfunction createValidator(options, validate) {\n  return {\n    options: options,\n    validate: validate\n  };\n}\n/**\n */\n\nfunction validatedNested(_ref6, value) {\n  var keyPath = _ref6.keyPath,\n    child = _ref6.child,\n    query = _ref6.query;\n  var values = [];\n  findValues(value, keyPath, 0, value, values);\n\n  if (values.length === 1) {\n    var first = values[0];\n    return _validate(child, first[0], first[1], first[2]);\n  } // If the query contains $ne, need to test all elements ANDed together\n\n  var inclusive = query && typeof query.$ne !== \"undefined\";\n  var allValid = inclusive;\n\n  for (var i = 0; i < values.length; i++) {\n    var result = values[i];\n\n    var isValid = _validate(child, result[0], result[1], result[2]);\n\n    if (inclusive) {\n      allValid &= isValid;\n    } else {\n      allValid |= isValid;\n    }\n  }\n\n  return allValid;\n}\n/**\n */\n\nfunction findValues(current, keypath, index, object, values) {\n  if (index === keypath.length || current == void 0) {\n    values.push([current, keypath[index - 1], object]);\n    return;\n  }\n\n  var k = get(keypath, index); // ensure that if current is an array, that the current key\n  // is NOT an array index. This sort of thing needs to work:\n  // sift({'foo.0':42}, [{foo: [42]}]);\n\n  if (isArray(current) && isNaN(Number(k))) {\n    for (var i = 0, n = current.length; i < n; i++) {\n      findValues(get(current, i), keypath, index, current, values);\n    }\n  } else {\n    findValues(get(current, k), keypath, index + 1, current, values);\n  }\n}\n/**\n */\n\nfunction createNestedValidator(keyPath, child, query) {\n  return createValidator(\n    {\n      keyPath: keyPath,\n      child: child,\n      query: query\n    },\n    validatedNested\n  );\n}\n/**\n * flatten the query\n */\n\nfunction isVanillaObject(value) {\n  return (\n    value &&\n    (value.constructor === Object ||\n      value.constructor === Array ||\n      value.constructor.toString() === \"function Object() { [native code] }\" ||\n      value.constructor.toString() === \"function Array() { [native code] }\") &&\n    !value.toJSON\n  );\n}\n\nfunction parse(options) {\n  var comparable = options.comparable,\n    expressions = options.expressions;\n\n  var wrapQuery = function wrapQuery(query) {\n    if (!query || !isVanillaObject(query)) {\n      query = {\n        $eq: query\n      };\n    }\n\n    return query;\n  };\n\n  var parseQuery = function parseQuery(query) {\n    query = comparable(query);\n    var validators = [];\n\n    for (var key in query) {\n      var queryValue = query[key];\n\n      if (key === \"$options\") {\n        continue;\n      }\n\n      var expression =\n        defaultExpressions[key] || (options && expressions && expressions[key]);\n\n      if (expression) {\n        if (prepare[key]) {\n          queryValue = prepare[key](queryValue, query, options);\n        }\n\n        validators.push(createValidator(comparable(queryValue), expression));\n      } else {\n        if (key.charCodeAt(0) === 36) {\n          throw new Error(\"Unknown operation \" + key);\n        }\n\n        var keyParts = key.split(\".\");\n        validators.push(\n          createNestedValidator(keyParts, parseNested(queryValue), queryValue)\n        );\n      }\n    }\n\n    return validators.length === 1\n      ? validators[0]\n      : createValidator(validators, defaultExpressions.$and);\n  };\n\n  var parseNested = function parseNested(query) {\n    query = wrapQuery(query);\n\n    if (isExactObject(query)) {\n      return createValidator(query, isEqual);\n    }\n\n    return parseQuery(query);\n  };\n\n  var parseRoot = function parseRoot(query) {\n    return parseQuery(wrapQuery(query));\n  };\n\n  return parseRoot;\n}\n\nfunction isEqual(a, b) {\n  if (Object.prototype.toString.call(a) !== Object.prototype.toString.call(b)) {\n    return false;\n  }\n\n  if (isObject(a)) {\n    if (Object.keys(a).length !== Object.keys(b).length) {\n      return false;\n    }\n\n    for (var key in a) {\n      if (!isEqual(a[key], b[key])) {\n        return false;\n      }\n    }\n\n    return true;\n  } else if (isArray(a)) {\n    if (a.length !== b.length) {\n      return false;\n    }\n\n    for (var i = 0, n = a.length; i < n; i++) {\n      if (!isEqual(a[i], b[i])) {\n        return false;\n      }\n    }\n\n    return true;\n  } else {\n    return a === b;\n  }\n}\n\nfunction getAllKeys(value, keys) {\n  if (!isObject(value)) {\n    return keys;\n  }\n\n  for (var key in value) {\n    keys.push(key);\n    getAllKeys(value[key], keys);\n  }\n\n  return keys;\n}\n\nfunction isExactObject(value) {\n  var allKeysHash = getAllKeys(value, []).join(\",\");\n  return allKeysHash.search(/[$.]/) === -1;\n}\n/**\n */\n\nfunction createRootValidator(query, options) {\n  var validator = parse(options)(query);\n\n  if (options && options.select) {\n    validator = {\n      options: validator,\n      validate: function validate(validateOptions, value, key, valueOwner) {\n        return _validate(\n          validateOptions,\n          value && options.select(value),\n          key,\n          valueOwner\n        );\n      }\n    };\n  }\n\n  return validator;\n}\n/**\n */\n\nfunction sift(query, options) {\n  options = Object.assign(\n    {\n      compare: compare,\n      comparable: comparable\n    },\n    options\n  );\n  var validator = createRootValidator(query, options);\n  return function(value, key, valueOwner) {\n    return _validate(validator, value, key, valueOwner);\n  };\n}\n/**\n */\n\nfunction compare(a, b) {\n  if (isEqual(a, b)) return 0;\n\n  if (_typeof(a) === _typeof(b)) {\n    if (a > b) {\n      return 1;\n    }\n\n    if (a < b) {\n      return -1;\n    }\n  }\n}\n/**\n */\n\nfunction comparable(value) {\n  if (value instanceof Date) {\n    return value.getTime();\n  } else if (isArray(value)) {\n    return value.map(comparable);\n  } else if (value && typeof value.toJSON === \"function\") {\n    return value.toJSON();\n  } else {\n    return value;\n  }\n}\n","/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n  var length = array.length,\n      index = fromIndex + (fromRight ? 1 : -1);\n\n  while ((fromRight ? index-- : ++index < length)) {\n    if (predicate(array[index], index, array)) {\n      return index;\n    }\n  }\n  return -1;\n}\n\nmodule.exports = baseFindIndex;\n","/*!\n * Vue.js v2.6.14\n * (c) 2014-2021 Evan You\n * Released under the MIT License.\n */\n/*  */\n\nvar emptyObject = Object.freeze({});\n\n// These helpers produce better VM code in JS engines due to their\n// explicitness and function inlining.\nfunction isUndef (v) {\n  return v === undefined || v === null\n}\n\nfunction isDef (v) {\n  return v !== undefined && v !== null\n}\n\nfunction isTrue (v) {\n  return v === true\n}\n\nfunction isFalse (v) {\n  return v === false\n}\n\n/**\n * Check if value is primitive.\n */\nfunction isPrimitive (value) {\n  return (\n    typeof value === 'string' ||\n    typeof value === 'number' ||\n    // $flow-disable-line\n    typeof value === 'symbol' ||\n    typeof value === 'boolean'\n  )\n}\n\n/**\n * Quick object check - this is primarily used to tell\n * Objects from primitive values when we know the value\n * is a JSON-compliant type.\n */\nfunction isObject (obj) {\n  return obj !== null && typeof obj === 'object'\n}\n\n/**\n * Get the raw type string of a value, e.g., [object Object].\n */\nvar _toString = Object.prototype.toString;\n\nfunction toRawType (value) {\n  return _toString.call(value).slice(8, -1)\n}\n\n/**\n * Strict object type check. Only returns true\n * for plain JavaScript objects.\n */\nfunction isPlainObject (obj) {\n  return _toString.call(obj) === '[object Object]'\n}\n\nfunction isRegExp (v) {\n  return _toString.call(v) === '[object RegExp]'\n}\n\n/**\n * Check if val is a valid array index.\n */\nfunction isValidArrayIndex (val) {\n  var n = parseFloat(String(val));\n  return n >= 0 && Math.floor(n) === n && isFinite(val)\n}\n\nfunction isPromise (val) {\n  return (\n    isDef(val) &&\n    typeof val.then === 'function' &&\n    typeof val.catch === 'function'\n  )\n}\n\n/**\n * Convert a value to a string that is actually rendered.\n */\nfunction toString (val) {\n  return val == null\n    ? ''\n    : Array.isArray(val) || (isPlainObject(val) && val.toString === _toString)\n      ? JSON.stringify(val, null, 2)\n      : String(val)\n}\n\n/**\n * Convert an input value to a number for persistence.\n * If the conversion fails, return original string.\n */\nfunction toNumber (val) {\n  var n = parseFloat(val);\n  return isNaN(n) ? val : n\n}\n\n/**\n * Make a map and return a function for checking if a key\n * is in that map.\n */\nfunction makeMap (\n  str,\n  expectsLowerCase\n) {\n  var map = Object.create(null);\n  var list = str.split(',');\n  for (var i = 0; i < list.length; i++) {\n    map[list[i]] = true;\n  }\n  return expectsLowerCase\n    ? function (val) { return map[val.toLowerCase()]; }\n    : function (val) { return map[val]; }\n}\n\n/**\n * Check if a tag is a built-in tag.\n */\nvar isBuiltInTag = makeMap('slot,component', true);\n\n/**\n * Check if an attribute is a reserved attribute.\n */\nvar isReservedAttribute = makeMap('key,ref,slot,slot-scope,is');\n\n/**\n * Remove an item from an array.\n */\nfunction remove (arr, item) {\n  if (arr.length) {\n    var index = arr.indexOf(item);\n    if (index > -1) {\n      return arr.splice(index, 1)\n    }\n  }\n}\n\n/**\n * Check whether an object has the property.\n */\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction hasOwn (obj, key) {\n  return hasOwnProperty.call(obj, key)\n}\n\n/**\n * Create a cached version of a pure function.\n */\nfunction cached (fn) {\n  var cache = Object.create(null);\n  return (function cachedFn (str) {\n    var hit = cache[str];\n    return hit || (cache[str] = fn(str))\n  })\n}\n\n/**\n * Camelize a hyphen-delimited string.\n */\nvar camelizeRE = /-(\\w)/g;\nvar camelize = cached(function (str) {\n  return str.replace(camelizeRE, function (_, c) { return c ? c.toUpperCase() : ''; })\n});\n\n/**\n * Capitalize a string.\n */\nvar capitalize = cached(function (str) {\n  return str.charAt(0).toUpperCase() + str.slice(1)\n});\n\n/**\n * Hyphenate a camelCase string.\n */\nvar hyphenateRE = /\\B([A-Z])/g;\nvar hyphenate = cached(function (str) {\n  return str.replace(hyphenateRE, '-$1').toLowerCase()\n});\n\n/**\n * Simple bind polyfill for environments that do not support it,\n * e.g., PhantomJS 1.x. Technically, we don't need this anymore\n * since native bind is now performant enough in most browsers.\n * But removing it would mean breaking code that was able to run in\n * PhantomJS 1.x, so this must be kept for backward compatibility.\n */\n\n/* istanbul ignore next */\nfunction polyfillBind (fn, ctx) {\n  function boundFn (a) {\n    var l = arguments.length;\n    return l\n      ? l > 1\n        ? fn.apply(ctx, arguments)\n        : fn.call(ctx, a)\n      : fn.call(ctx)\n  }\n\n  boundFn._length = fn.length;\n  return boundFn\n}\n\nfunction nativeBind (fn, ctx) {\n  return fn.bind(ctx)\n}\n\nvar bind = Function.prototype.bind\n  ? nativeBind\n  : polyfillBind;\n\n/**\n * Convert an Array-like object to a real Array.\n */\nfunction toArray (list, start) {\n  start = start || 0;\n  var i = list.length - start;\n  var ret = new Array(i);\n  while (i--) {\n    ret[i] = list[i + start];\n  }\n  return ret\n}\n\n/**\n * Mix properties into target object.\n */\nfunction extend (to, _from) {\n  for (var key in _from) {\n    to[key] = _from[key];\n  }\n  return to\n}\n\n/**\n * Merge an Array of Objects into a single Object.\n */\nfunction toObject (arr) {\n  var res = {};\n  for (var i = 0; i < arr.length; i++) {\n    if (arr[i]) {\n      extend(res, arr[i]);\n    }\n  }\n  return res\n}\n\n/* eslint-disable no-unused-vars */\n\n/**\n * Perform no operation.\n * Stubbing args to make Flow happy without leaving useless transpiled code\n * with ...rest (https://flow.org/blog/2017/05/07/Strict-Function-Call-Arity/).\n */\nfunction noop (a, b, c) {}\n\n/**\n * Always return false.\n */\nvar no = function (a, b, c) { return false; };\n\n/* eslint-enable no-unused-vars */\n\n/**\n * Return the same value.\n */\nvar identity = function (_) { return _; };\n\n/**\n * Check if two values are loosely equal - that is,\n * if they are plain objects, do they have the same shape?\n */\nfunction looseEqual (a, b) {\n  if (a === b) { return true }\n  var isObjectA = isObject(a);\n  var isObjectB = isObject(b);\n  if (isObjectA && isObjectB) {\n    try {\n      var isArrayA = Array.isArray(a);\n      var isArrayB = Array.isArray(b);\n      if (isArrayA && isArrayB) {\n        return a.length === b.length && a.every(function (e, i) {\n          return looseEqual(e, b[i])\n        })\n      } else if (a instanceof Date && b instanceof Date) {\n        return a.getTime() === b.getTime()\n      } else if (!isArrayA && !isArrayB) {\n        var keysA = Object.keys(a);\n        var keysB = Object.keys(b);\n        return keysA.length === keysB.length && keysA.every(function (key) {\n          return looseEqual(a[key], b[key])\n        })\n      } else {\n        /* istanbul ignore next */\n        return false\n      }\n    } catch (e) {\n      /* istanbul ignore next */\n      return false\n    }\n  } else if (!isObjectA && !isObjectB) {\n    return String(a) === String(b)\n  } else {\n    return false\n  }\n}\n\n/**\n * Return the first index at which a loosely equal value can be\n * found in the array (if value is a plain object, the array must\n * contain an object of the same shape), or -1 if it is not present.\n */\nfunction looseIndexOf (arr, val) {\n  for (var i = 0; i < arr.length; i++) {\n    if (looseEqual(arr[i], val)) { return i }\n  }\n  return -1\n}\n\n/**\n * Ensure a function is called only once.\n */\nfunction once (fn) {\n  var called = false;\n  return function () {\n    if (!called) {\n      called = true;\n      fn.apply(this, arguments);\n    }\n  }\n}\n\nvar SSR_ATTR = 'data-server-rendered';\n\nvar ASSET_TYPES = [\n  'component',\n  'directive',\n  'filter'\n];\n\nvar LIFECYCLE_HOOKS = [\n  'beforeCreate',\n  'created',\n  'beforeMount',\n  'mounted',\n  'beforeUpdate',\n  'updated',\n  'beforeDestroy',\n  'destroyed',\n  'activated',\n  'deactivated',\n  'errorCaptured',\n  'serverPrefetch'\n];\n\n/*  */\n\n\n\nvar config = ({\n  /**\n   * Option merge strategies (used in core/util/options)\n   */\n  // $flow-disable-line\n  optionMergeStrategies: Object.create(null),\n\n  /**\n   * Whether to suppress warnings.\n   */\n  silent: false,\n\n  /**\n   * Show production mode tip message on boot?\n   */\n  productionTip: process.env.NODE_ENV !== 'production',\n\n  /**\n   * Whether to enable devtools\n   */\n  devtools: process.env.NODE_ENV !== 'production',\n\n  /**\n   * Whether to record perf\n   */\n  performance: false,\n\n  /**\n   * Error handler for watcher errors\n   */\n  errorHandler: null,\n\n  /**\n   * Warn handler for watcher warns\n   */\n  warnHandler: null,\n\n  /**\n   * Ignore certain custom elements\n   */\n  ignoredElements: [],\n\n  /**\n   * Custom user key aliases for v-on\n   */\n  // $flow-disable-line\n  keyCodes: Object.create(null),\n\n  /**\n   * Check if a tag is reserved so that it cannot be registered as a\n   * component. This is platform-dependent and may be overwritten.\n   */\n  isReservedTag: no,\n\n  /**\n   * Check if an attribute is reserved so that it cannot be used as a component\n   * prop. This is platform-dependent and may be overwritten.\n   */\n  isReservedAttr: no,\n\n  /**\n   * Check if a tag is an unknown element.\n   * Platform-dependent.\n   */\n  isUnknownElement: no,\n\n  /**\n   * Get the namespace of an element\n   */\n  getTagNamespace: noop,\n\n  /**\n   * Parse the real tag name for the specific platform.\n   */\n  parsePlatformTagName: identity,\n\n  /**\n   * Check if an attribute must be bound using property, e.g. value\n   * Platform-dependent.\n   */\n  mustUseProp: no,\n\n  /**\n   * Perform updates asynchronously. Intended to be used by Vue Test Utils\n   * This will significantly reduce performance if set to false.\n   */\n  async: true,\n\n  /**\n   * Exposed for legacy reasons\n   */\n  _lifecycleHooks: LIFECYCLE_HOOKS\n});\n\n/*  */\n\n/**\n * unicode letters used for parsing html tags, component names and property paths.\n * using https://www.w3.org/TR/html53/semantics-scripting.html#potentialcustomelementname\n * skipping \\u10000-\\uEFFFF due to it freezing up PhantomJS\n */\nvar unicodeRegExp = /a-zA-Z\\u00B7\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u203F-\\u2040\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD/;\n\n/**\n * Check if a string starts with $ or _\n */\nfunction isReserved (str) {\n  var c = (str + '').charCodeAt(0);\n  return c === 0x24 || c === 0x5F\n}\n\n/**\n * Define a property.\n */\nfunction def (obj, key, val, enumerable) {\n  Object.defineProperty(obj, key, {\n    value: val,\n    enumerable: !!enumerable,\n    writable: true,\n    configurable: true\n  });\n}\n\n/**\n * Parse simple path.\n */\nvar bailRE = new RegExp((\"[^\" + (unicodeRegExp.source) + \".$_\\\\d]\"));\nfunction parsePath (path) {\n  if (bailRE.test(path)) {\n    return\n  }\n  var segments = path.split('.');\n  return function (obj) {\n    for (var i = 0; i < segments.length; i++) {\n      if (!obj) { return }\n      obj = obj[segments[i]];\n    }\n    return obj\n  }\n}\n\n/*  */\n\n// can we use __proto__?\nvar hasProto = '__proto__' in {};\n\n// Browser environment sniffing\nvar inBrowser = typeof window !== 'undefined';\nvar inWeex = typeof WXEnvironment !== 'undefined' && !!WXEnvironment.platform;\nvar weexPlatform = inWeex && WXEnvironment.platform.toLowerCase();\nvar UA = inBrowser && window.navigator.userAgent.toLowerCase();\nvar isIE = UA && /msie|trident/.test(UA);\nvar isIE9 = UA && UA.indexOf('msie 9.0') > 0;\nvar isEdge = UA && UA.indexOf('edge/') > 0;\nvar isAndroid = (UA && UA.indexOf('android') > 0) || (weexPlatform === 'android');\nvar isIOS = (UA && /iphone|ipad|ipod|ios/.test(UA)) || (weexPlatform === 'ios');\nvar isChrome = UA && /chrome\\/\\d+/.test(UA) && !isEdge;\nvar isPhantomJS = UA && /phantomjs/.test(UA);\nvar isFF = UA && UA.match(/firefox\\/(\\d+)/);\n\n// Firefox has a \"watch\" function on Object.prototype...\nvar nativeWatch = ({}).watch;\n\nvar supportsPassive = false;\nif (inBrowser) {\n  try {\n    var opts = {};\n    Object.defineProperty(opts, 'passive', ({\n      get: function get () {\n        /* istanbul ignore next */\n        supportsPassive = true;\n      }\n    })); // https://github.com/facebook/flow/issues/285\n    window.addEventListener('test-passive', null, opts);\n  } catch (e) {}\n}\n\n// this needs to be lazy-evaled because vue may be required before\n// vue-server-renderer can set VUE_ENV\nvar _isServer;\nvar isServerRendering = function () {\n  if (_isServer === undefined) {\n    /* istanbul ignore if */\n    if (!inBrowser && !inWeex && typeof global !== 'undefined') {\n      // detect presence of vue-server-renderer and avoid\n      // Webpack shimming the process\n      _isServer = global['process'] && global['process'].env.VUE_ENV === 'server';\n    } else {\n      _isServer = false;\n    }\n  }\n  return _isServer\n};\n\n// detect devtools\nvar devtools = inBrowser && window.__VUE_DEVTOOLS_GLOBAL_HOOK__;\n\n/* istanbul ignore next */\nfunction isNative (Ctor) {\n  return typeof Ctor === 'function' && /native code/.test(Ctor.toString())\n}\n\nvar hasSymbol =\n  typeof Symbol !== 'undefined' && isNative(Symbol) &&\n  typeof Reflect !== 'undefined' && isNative(Reflect.ownKeys);\n\nvar _Set;\n/* istanbul ignore if */ // $flow-disable-line\nif (typeof Set !== 'undefined' && isNative(Set)) {\n  // use native Set when available.\n  _Set = Set;\n} else {\n  // a non-standard Set polyfill that only works with primitive keys.\n  _Set = /*@__PURE__*/(function () {\n    function Set () {\n      this.set = Object.create(null);\n    }\n    Set.prototype.has = function has (key) {\n      return this.set[key] === true\n    };\n    Set.prototype.add = function add (key) {\n      this.set[key] = true;\n    };\n    Set.prototype.clear = function clear () {\n      this.set = Object.create(null);\n    };\n\n    return Set;\n  }());\n}\n\n/*  */\n\nvar warn = noop;\nvar tip = noop;\nvar generateComponentTrace = (noop); // work around flow check\nvar formatComponentName = (noop);\n\nif (process.env.NODE_ENV !== 'production') {\n  var hasConsole = typeof console !== 'undefined';\n  var classifyRE = /(?:^|[-_])(\\w)/g;\n  var classify = function (str) { return str\n    .replace(classifyRE, function (c) { return c.toUpperCase(); })\n    .replace(/[-_]/g, ''); };\n\n  warn = function (msg, vm) {\n    var trace = vm ? generateComponentTrace(vm) : '';\n\n    if (config.warnHandler) {\n      config.warnHandler.call(null, msg, vm, trace);\n    } else if (hasConsole && (!config.silent)) {\n      console.error((\"[Vue warn]: \" + msg + trace));\n    }\n  };\n\n  tip = function (msg, vm) {\n    if (hasConsole && (!config.silent)) {\n      console.warn(\"[Vue tip]: \" + msg + (\n        vm ? generateComponentTrace(vm) : ''\n      ));\n    }\n  };\n\n  formatComponentName = function (vm, includeFile) {\n    if (vm.$root === vm) {\n      return '<Root>'\n    }\n    var options = typeof vm === 'function' && vm.cid != null\n      ? vm.options\n      : vm._isVue\n        ? vm.$options || vm.constructor.options\n        : vm;\n    var name = options.name || options._componentTag;\n    var file = options.__file;\n    if (!name && file) {\n      var match = file.match(/([^/\\\\]+)\\.vue$/);\n      name = match && match[1];\n    }\n\n    return (\n      (name ? (\"<\" + (classify(name)) + \">\") : \"<Anonymous>\") +\n      (file && includeFile !== false ? (\" at \" + file) : '')\n    )\n  };\n\n  var repeat = function (str, n) {\n    var res = '';\n    while (n) {\n      if (n % 2 === 1) { res += str; }\n      if (n > 1) { str += str; }\n      n >>= 1;\n    }\n    return res\n  };\n\n  generateComponentTrace = function (vm) {\n    if (vm._isVue && vm.$parent) {\n      var tree = [];\n      var currentRecursiveSequence = 0;\n      while (vm) {\n        if (tree.length > 0) {\n          var last = tree[tree.length - 1];\n          if (last.constructor === vm.constructor) {\n            currentRecursiveSequence++;\n            vm = vm.$parent;\n            continue\n          } else if (currentRecursiveSequence > 0) {\n            tree[tree.length - 1] = [last, currentRecursiveSequence];\n            currentRecursiveSequence = 0;\n          }\n        }\n        tree.push(vm);\n        vm = vm.$parent;\n      }\n      return '\\n\\nfound in\\n\\n' + tree\n        .map(function (vm, i) { return (\"\" + (i === 0 ? '---> ' : repeat(' ', 5 + i * 2)) + (Array.isArray(vm)\n            ? ((formatComponentName(vm[0])) + \"... (\" + (vm[1]) + \" recursive calls)\")\n            : formatComponentName(vm))); })\n        .join('\\n')\n    } else {\n      return (\"\\n\\n(found in \" + (formatComponentName(vm)) + \")\")\n    }\n  };\n}\n\n/*  */\n\nvar uid = 0;\n\n/**\n * A dep is an observable that can have multiple\n * directives subscribing to it.\n */\nvar Dep = function Dep () {\n  this.id = uid++;\n  this.subs = [];\n};\n\nDep.prototype.addSub = function addSub (sub) {\n  this.subs.push(sub);\n};\n\nDep.prototype.removeSub = function removeSub (sub) {\n  remove(this.subs, sub);\n};\n\nDep.prototype.depend = function depend () {\n  if (Dep.target) {\n    Dep.target.addDep(this);\n  }\n};\n\nDep.prototype.notify = function notify () {\n  // stabilize the subscriber list first\n  var subs = this.subs.slice();\n  if (process.env.NODE_ENV !== 'production' && !config.async) {\n    // subs aren't sorted in scheduler if not running async\n    // we need to sort them now to make sure they fire in correct\n    // order\n    subs.sort(function (a, b) { return a.id - b.id; });\n  }\n  for (var i = 0, l = subs.length; i < l; i++) {\n    subs[i].update();\n  }\n};\n\n// The current target watcher being evaluated.\n// This is globally unique because only one watcher\n// can be evaluated at a time.\nDep.target = null;\nvar targetStack = [];\n\nfunction pushTarget (target) {\n  targetStack.push(target);\n  Dep.target = target;\n}\n\nfunction popTarget () {\n  targetStack.pop();\n  Dep.target = targetStack[targetStack.length - 1];\n}\n\n/*  */\n\nvar VNode = function VNode (\n  tag,\n  data,\n  children,\n  text,\n  elm,\n  context,\n  componentOptions,\n  asyncFactory\n) {\n  this.tag = tag;\n  this.data = data;\n  this.children = children;\n  this.text = text;\n  this.elm = elm;\n  this.ns = undefined;\n  this.context = context;\n  this.fnContext = undefined;\n  this.fnOptions = undefined;\n  this.fnScopeId = undefined;\n  this.key = data && data.key;\n  this.componentOptions = componentOptions;\n  this.componentInstance = undefined;\n  this.parent = undefined;\n  this.raw = false;\n  this.isStatic = false;\n  this.isRootInsert = true;\n  this.isComment = false;\n  this.isCloned = false;\n  this.isOnce = false;\n  this.asyncFactory = asyncFactory;\n  this.asyncMeta = undefined;\n  this.isAsyncPlaceholder = false;\n};\n\nvar prototypeAccessors = { child: { configurable: true } };\n\n// DEPRECATED: alias for componentInstance for backwards compat.\n/* istanbul ignore next */\nprototypeAccessors.child.get = function () {\n  return this.componentInstance\n};\n\nObject.defineProperties( VNode.prototype, prototypeAccessors );\n\nvar createEmptyVNode = function (text) {\n  if ( text === void 0 ) text = '';\n\n  var node = new VNode();\n  node.text = text;\n  node.isComment = true;\n  return node\n};\n\nfunction createTextVNode (val) {\n  return new VNode(undefined, undefined, undefined, String(val))\n}\n\n// optimized shallow clone\n// used for static nodes and slot nodes because they may be reused across\n// multiple renders, cloning them avoids errors when DOM manipulations rely\n// on their elm reference.\nfunction cloneVNode (vnode) {\n  var cloned = new VNode(\n    vnode.tag,\n    vnode.data,\n    // #7975\n    // clone children array to avoid mutating original in case of cloning\n    // a child.\n    vnode.children && vnode.children.slice(),\n    vnode.text,\n    vnode.elm,\n    vnode.context,\n    vnode.componentOptions,\n    vnode.asyncFactory\n  );\n  cloned.ns = vnode.ns;\n  cloned.isStatic = vnode.isStatic;\n  cloned.key = vnode.key;\n  cloned.isComment = vnode.isComment;\n  cloned.fnContext = vnode.fnContext;\n  cloned.fnOptions = vnode.fnOptions;\n  cloned.fnScopeId = vnode.fnScopeId;\n  cloned.asyncMeta = vnode.asyncMeta;\n  cloned.isCloned = true;\n  return cloned\n}\n\n/*\n * not type checking this file because flow doesn't play well with\n * dynamically accessing methods on Array prototype\n */\n\nvar arrayProto = Array.prototype;\nvar arrayMethods = Object.create(arrayProto);\n\nvar methodsToPatch = [\n  'push',\n  'pop',\n  'shift',\n  'unshift',\n  'splice',\n  'sort',\n  'reverse'\n];\n\n/**\n * Intercept mutating methods and emit events\n */\nmethodsToPatch.forEach(function (method) {\n  // cache original method\n  var original = arrayProto[method];\n  def(arrayMethods, method, function mutator () {\n    var args = [], len = arguments.length;\n    while ( len-- ) args[ len ] = arguments[ len ];\n\n    var result = original.apply(this, args);\n    var ob = this.__ob__;\n    var inserted;\n    switch (method) {\n      case 'push':\n      case 'unshift':\n        inserted = args;\n        break\n      case 'splice':\n        inserted = args.slice(2);\n        break\n    }\n    if (inserted) { ob.observeArray(inserted); }\n    // notify change\n    ob.dep.notify();\n    return result\n  });\n});\n\n/*  */\n\nvar arrayKeys = Object.getOwnPropertyNames(arrayMethods);\n\n/**\n * In some cases we may want to disable observation inside a component's\n * update computation.\n */\nvar shouldObserve = true;\n\nfunction toggleObserving (value) {\n  shouldObserve = value;\n}\n\n/**\n * Observer class that is attached to each observed\n * object. Once attached, the observer converts the target\n * object's property keys into getter/setters that\n * collect dependencies and dispatch updates.\n */\nvar Observer = function Observer (value) {\n  this.value = value;\n  this.dep = new Dep();\n  this.vmCount = 0;\n  def(value, '__ob__', this);\n  if (Array.isArray(value)) {\n    if (hasProto) {\n      protoAugment(value, arrayMethods);\n    } else {\n      copyAugment(value, arrayMethods, arrayKeys);\n    }\n    this.observeArray(value);\n  } else {\n    this.walk(value);\n  }\n};\n\n/**\n * Walk through all properties and convert them into\n * getter/setters. This method should only be called when\n * value type is Object.\n */\nObserver.prototype.walk = function walk (obj) {\n  var keys = Object.keys(obj);\n  for (var i = 0; i < keys.length; i++) {\n    defineReactive$$1(obj, keys[i]);\n  }\n};\n\n/**\n * Observe a list of Array items.\n */\nObserver.prototype.observeArray = function observeArray (items) {\n  for (var i = 0, l = items.length; i < l; i++) {\n    observe(items[i]);\n  }\n};\n\n// helpers\n\n/**\n * Augment a target Object or Array by intercepting\n * the prototype chain using __proto__\n */\nfunction protoAugment (target, src) {\n  /* eslint-disable no-proto */\n  target.__proto__ = src;\n  /* eslint-enable no-proto */\n}\n\n/**\n * Augment a target Object or Array by defining\n * hidden properties.\n */\n/* istanbul ignore next */\nfunction copyAugment (target, src, keys) {\n  for (var i = 0, l = keys.length; i < l; i++) {\n    var key = keys[i];\n    def(target, key, src[key]);\n  }\n}\n\n/**\n * Attempt to create an observer instance for a value,\n * returns the new observer if successfully observed,\n * or the existing observer if the value already has one.\n */\nfunction observe (value, asRootData) {\n  if (!isObject(value) || value instanceof VNode) {\n    return\n  }\n  var ob;\n  if (hasOwn(value, '__ob__') && value.__ob__ instanceof Observer) {\n    ob = value.__ob__;\n  } else if (\n    shouldObserve &&\n    !isServerRendering() &&\n    (Array.isArray(value) || isPlainObject(value)) &&\n    Object.isExtensible(value) &&\n    !value._isVue\n  ) {\n    ob = new Observer(value);\n  }\n  if (asRootData && ob) {\n    ob.vmCount++;\n  }\n  return ob\n}\n\n/**\n * Define a reactive property on an Object.\n */\nfunction defineReactive$$1 (\n  obj,\n  key,\n  val,\n  customSetter,\n  shallow\n) {\n  var dep = new Dep();\n\n  var property = Object.getOwnPropertyDescriptor(obj, key);\n  if (property && property.configurable === false) {\n    return\n  }\n\n  // cater for pre-defined getter/setters\n  var getter = property && property.get;\n  var setter = property && property.set;\n  if ((!getter || setter) && arguments.length === 2) {\n    val = obj[key];\n  }\n\n  var childOb = !shallow && observe(val);\n  Object.defineProperty(obj, key, {\n    enumerable: true,\n    configurable: true,\n    get: function reactiveGetter () {\n      var value = getter ? getter.call(obj) : val;\n      if (Dep.target) {\n        dep.depend();\n        if (childOb) {\n          childOb.dep.depend();\n          if (Array.isArray(value)) {\n            dependArray(value);\n          }\n        }\n      }\n      return value\n    },\n    set: function reactiveSetter (newVal) {\n      var value = getter ? getter.call(obj) : val;\n      /* eslint-disable no-self-compare */\n      if (newVal === value || (newVal !== newVal && value !== value)) {\n        return\n      }\n      /* eslint-enable no-self-compare */\n      if (process.env.NODE_ENV !== 'production' && customSetter) {\n        customSetter();\n      }\n      // #7981: for accessor properties without setter\n      if (getter && !setter) { return }\n      if (setter) {\n        setter.call(obj, newVal);\n      } else {\n        val = newVal;\n      }\n      childOb = !shallow && observe(newVal);\n      dep.notify();\n    }\n  });\n}\n\n/**\n * Set a property on an object. Adds the new property and\n * triggers change notification if the property doesn't\n * already exist.\n */\nfunction set (target, key, val) {\n  if (process.env.NODE_ENV !== 'production' &&\n    (isUndef(target) || isPrimitive(target))\n  ) {\n    warn((\"Cannot set reactive property on undefined, null, or primitive value: \" + ((target))));\n  }\n  if (Array.isArray(target) && isValidArrayIndex(key)) {\n    target.length = Math.max(target.length, key);\n    target.splice(key, 1, val);\n    return val\n  }\n  if (key in target && !(key in Object.prototype)) {\n    target[key] = val;\n    return val\n  }\n  var ob = (target).__ob__;\n  if (target._isVue || (ob && ob.vmCount)) {\n    process.env.NODE_ENV !== 'production' && warn(\n      'Avoid adding reactive properties to a Vue instance or its root $data ' +\n      'at runtime - declare it upfront in the data option.'\n    );\n    return val\n  }\n  if (!ob) {\n    target[key] = val;\n    return val\n  }\n  defineReactive$$1(ob.value, key, val);\n  ob.dep.notify();\n  return val\n}\n\n/**\n * Delete a property and trigger change if necessary.\n */\nfunction del (target, key) {\n  if (process.env.NODE_ENV !== 'production' &&\n    (isUndef(target) || isPrimitive(target))\n  ) {\n    warn((\"Cannot delete reactive property on undefined, null, or primitive value: \" + ((target))));\n  }\n  if (Array.isArray(target) && isValidArrayIndex(key)) {\n    target.splice(key, 1);\n    return\n  }\n  var ob = (target).__ob__;\n  if (target._isVue || (ob && ob.vmCount)) {\n    process.env.NODE_ENV !== 'production' && warn(\n      'Avoid deleting properties on a Vue instance or its root $data ' +\n      '- just set it to null.'\n    );\n    return\n  }\n  if (!hasOwn(target, key)) {\n    return\n  }\n  delete target[key];\n  if (!ob) {\n    return\n  }\n  ob.dep.notify();\n}\n\n/**\n * Collect dependencies on array elements when the array is touched, since\n * we cannot intercept array element access like property getters.\n */\nfunction dependArray (value) {\n  for (var e = (void 0), i = 0, l = value.length; i < l; i++) {\n    e = value[i];\n    e && e.__ob__ && e.__ob__.dep.depend();\n    if (Array.isArray(e)) {\n      dependArray(e);\n    }\n  }\n}\n\n/*  */\n\n/**\n * Option overwriting strategies are functions that handle\n * how to merge a parent option value and a child option\n * value into the final value.\n */\nvar strats = config.optionMergeStrategies;\n\n/**\n * Options with restrictions\n */\nif (process.env.NODE_ENV !== 'production') {\n  strats.el = strats.propsData = function (parent, child, vm, key) {\n    if (!vm) {\n      warn(\n        \"option \\\"\" + key + \"\\\" can only be used during instance \" +\n        'creation with the `new` keyword.'\n      );\n    }\n    return defaultStrat(parent, child)\n  };\n}\n\n/**\n * Helper that recursively merges two data objects together.\n */\nfunction mergeData (to, from) {\n  if (!from) { return to }\n  var key, toVal, fromVal;\n\n  var keys = hasSymbol\n    ? Reflect.ownKeys(from)\n    : Object.keys(from);\n\n  for (var i = 0; i < keys.length; i++) {\n    key = keys[i];\n    // in case the object is already observed...\n    if (key === '__ob__') { continue }\n    toVal = to[key];\n    fromVal = from[key];\n    if (!hasOwn(to, key)) {\n      set(to, key, fromVal);\n    } else if (\n      toVal !== fromVal &&\n      isPlainObject(toVal) &&\n      isPlainObject(fromVal)\n    ) {\n      mergeData(toVal, fromVal);\n    }\n  }\n  return to\n}\n\n/**\n * Data\n */\nfunction mergeDataOrFn (\n  parentVal,\n  childVal,\n  vm\n) {\n  if (!vm) {\n    // in a Vue.extend merge, both should be functions\n    if (!childVal) {\n      return parentVal\n    }\n    if (!parentVal) {\n      return childVal\n    }\n    // when parentVal & childVal are both present,\n    // we need to return a function that returns the\n    // merged result of both functions... no need to\n    // check if parentVal is a function here because\n    // it has to be a function to pass previous merges.\n    return function mergedDataFn () {\n      return mergeData(\n        typeof childVal === 'function' ? childVal.call(this, this) : childVal,\n        typeof parentVal === 'function' ? parentVal.call(this, this) : parentVal\n      )\n    }\n  } else {\n    return function mergedInstanceDataFn () {\n      // instance merge\n      var instanceData = typeof childVal === 'function'\n        ? childVal.call(vm, vm)\n        : childVal;\n      var defaultData = typeof parentVal === 'function'\n        ? parentVal.call(vm, vm)\n        : parentVal;\n      if (instanceData) {\n        return mergeData(instanceData, defaultData)\n      } else {\n        return defaultData\n      }\n    }\n  }\n}\n\nstrats.data = function (\n  parentVal,\n  childVal,\n  vm\n) {\n  if (!vm) {\n    if (childVal && typeof childVal !== 'function') {\n      process.env.NODE_ENV !== 'production' && warn(\n        'The \"data\" option should be a function ' +\n        'that returns a per-instance value in component ' +\n        'definitions.',\n        vm\n      );\n\n      return parentVal\n    }\n    return mergeDataOrFn(parentVal, childVal)\n  }\n\n  return mergeDataOrFn(parentVal, childVal, vm)\n};\n\n/**\n * Hooks and props are merged as arrays.\n */\nfunction mergeHook (\n  parentVal,\n  childVal\n) {\n  var res = childVal\n    ? parentVal\n      ? parentVal.concat(childVal)\n      : Array.isArray(childVal)\n        ? childVal\n        : [childVal]\n    : parentVal;\n  return res\n    ? dedupeHooks(res)\n    : res\n}\n\nfunction dedupeHooks (hooks) {\n  var res = [];\n  for (var i = 0; i < hooks.length; i++) {\n    if (res.indexOf(hooks[i]) === -1) {\n      res.push(hooks[i]);\n    }\n  }\n  return res\n}\n\nLIFECYCLE_HOOKS.forEach(function (hook) {\n  strats[hook] = mergeHook;\n});\n\n/**\n * Assets\n *\n * When a vm is present (instance creation), we need to do\n * a three-way merge between constructor options, instance\n * options and parent options.\n */\nfunction mergeAssets (\n  parentVal,\n  childVal,\n  vm,\n  key\n) {\n  var res = Object.create(parentVal || null);\n  if (childVal) {\n    process.env.NODE_ENV !== 'production' && assertObjectType(key, childVal, vm);\n    return extend(res, childVal)\n  } else {\n    return res\n  }\n}\n\nASSET_TYPES.forEach(function (type) {\n  strats[type + 's'] = mergeAssets;\n});\n\n/**\n * Watchers.\n *\n * Watchers hashes should not overwrite one\n * another, so we merge them as arrays.\n */\nstrats.watch = function (\n  parentVal,\n  childVal,\n  vm,\n  key\n) {\n  // work around Firefox's Object.prototype.watch...\n  if (parentVal === nativeWatch) { parentVal = undefined; }\n  if (childVal === nativeWatch) { childVal = undefined; }\n  /* istanbul ignore if */\n  if (!childVal) { return Object.create(parentVal || null) }\n  if (process.env.NODE_ENV !== 'production') {\n    assertObjectType(key, childVal, vm);\n  }\n  if (!parentVal) { return childVal }\n  var ret = {};\n  extend(ret, parentVal);\n  for (var key$1 in childVal) {\n    var parent = ret[key$1];\n    var child = childVal[key$1];\n    if (parent && !Array.isArray(parent)) {\n      parent = [parent];\n    }\n    ret[key$1] = parent\n      ? parent.concat(child)\n      : Array.isArray(child) ? child : [child];\n  }\n  return ret\n};\n\n/**\n * Other object hashes.\n */\nstrats.props =\nstrats.methods =\nstrats.inject =\nstrats.computed = function (\n  parentVal,\n  childVal,\n  vm,\n  key\n) {\n  if (childVal && process.env.NODE_ENV !== 'production') {\n    assertObjectType(key, childVal, vm);\n  }\n  if (!parentVal) { return childVal }\n  var ret = Object.create(null);\n  extend(ret, parentVal);\n  if (childVal) { extend(ret, childVal); }\n  return ret\n};\nstrats.provide = mergeDataOrFn;\n\n/**\n * Default strategy.\n */\nvar defaultStrat = function (parentVal, childVal) {\n  return childVal === undefined\n    ? parentVal\n    : childVal\n};\n\n/**\n * Validate component names\n */\nfunction checkComponents (options) {\n  for (var key in options.components) {\n    validateComponentName(key);\n  }\n}\n\nfunction validateComponentName (name) {\n  if (!new RegExp((\"^[a-zA-Z][\\\\-\\\\.0-9_\" + (unicodeRegExp.source) + \"]*$\")).test(name)) {\n    warn(\n      'Invalid component name: \"' + name + '\". Component names ' +\n      'should conform to valid custom element name in html5 specification.'\n    );\n  }\n  if (isBuiltInTag(name) || config.isReservedTag(name)) {\n    warn(\n      'Do not use built-in or reserved HTML elements as component ' +\n      'id: ' + name\n    );\n  }\n}\n\n/**\n * Ensure all props option syntax are normalized into the\n * Object-based format.\n */\nfunction normalizeProps (options, vm) {\n  var props = options.props;\n  if (!props) { return }\n  var res = {};\n  var i, val, name;\n  if (Array.isArray(props)) {\n    i = props.length;\n    while (i--) {\n      val = props[i];\n      if (typeof val === 'string') {\n        name = camelize(val);\n        res[name] = { type: null };\n      } else if (process.env.NODE_ENV !== 'production') {\n        warn('props must be strings when using array syntax.');\n      }\n    }\n  } else if (isPlainObject(props)) {\n    for (var key in props) {\n      val = props[key];\n      name = camelize(key);\n      res[name] = isPlainObject(val)\n        ? val\n        : { type: val };\n    }\n  } else if (process.env.NODE_ENV !== 'production') {\n    warn(\n      \"Invalid value for option \\\"props\\\": expected an Array or an Object, \" +\n      \"but got \" + (toRawType(props)) + \".\",\n      vm\n    );\n  }\n  options.props = res;\n}\n\n/**\n * Normalize all injections into Object-based format\n */\nfunction normalizeInject (options, vm) {\n  var inject = options.inject;\n  if (!inject) { return }\n  var normalized = options.inject = {};\n  if (Array.isArray(inject)) {\n    for (var i = 0; i < inject.length; i++) {\n      normalized[inject[i]] = { from: inject[i] };\n    }\n  } else if (isPlainObject(inject)) {\n    for (var key in inject) {\n      var val = inject[key];\n      normalized[key] = isPlainObject(val)\n        ? extend({ from: key }, val)\n        : { from: val };\n    }\n  } else if (process.env.NODE_ENV !== 'production') {\n    warn(\n      \"Invalid value for option \\\"inject\\\": expected an Array or an Object, \" +\n      \"but got \" + (toRawType(inject)) + \".\",\n      vm\n    );\n  }\n}\n\n/**\n * Normalize raw function directives into object format.\n */\nfunction normalizeDirectives (options) {\n  var dirs = options.directives;\n  if (dirs) {\n    for (var key in dirs) {\n      var def$$1 = dirs[key];\n      if (typeof def$$1 === 'function') {\n        dirs[key] = { bind: def$$1, update: def$$1 };\n      }\n    }\n  }\n}\n\nfunction assertObjectType (name, value, vm) {\n  if (!isPlainObject(value)) {\n    warn(\n      \"Invalid value for option \\\"\" + name + \"\\\": expected an Object, \" +\n      \"but got \" + (toRawType(value)) + \".\",\n      vm\n    );\n  }\n}\n\n/**\n * Merge two option objects into a new one.\n * Core utility used in both instantiation and inheritance.\n */\nfunction mergeOptions (\n  parent,\n  child,\n  vm\n) {\n  if (process.env.NODE_ENV !== 'production') {\n    checkComponents(child);\n  }\n\n  if (typeof child === 'function') {\n    child = child.options;\n  }\n\n  normalizeProps(child, vm);\n  normalizeInject(child, vm);\n  normalizeDirectives(child);\n\n  // Apply extends and mixins on the child options,\n  // but only if it is a raw options object that isn't\n  // the result of another mergeOptions call.\n  // Only merged options has the _base property.\n  if (!child._base) {\n    if (child.extends) {\n      parent = mergeOptions(parent, child.extends, vm);\n    }\n    if (child.mixins) {\n      for (var i = 0, l = child.mixins.length; i < l; i++) {\n        parent = mergeOptions(parent, child.mixins[i], vm);\n      }\n    }\n  }\n\n  var options = {};\n  var key;\n  for (key in parent) {\n    mergeField(key);\n  }\n  for (key in child) {\n    if (!hasOwn(parent, key)) {\n      mergeField(key);\n    }\n  }\n  function mergeField (key) {\n    var strat = strats[key] || defaultStrat;\n    options[key] = strat(parent[key], child[key], vm, key);\n  }\n  return options\n}\n\n/**\n * Resolve an asset.\n * This function is used because child instances need access\n * to assets defined in its ancestor chain.\n */\nfunction resolveAsset (\n  options,\n  type,\n  id,\n  warnMissing\n) {\n  /* istanbul ignore if */\n  if (typeof id !== 'string') {\n    return\n  }\n  var assets = options[type];\n  // check local registration variations first\n  if (hasOwn(assets, id)) { return assets[id] }\n  var camelizedId = camelize(id);\n  if (hasOwn(assets, camelizedId)) { return assets[camelizedId] }\n  var PascalCaseId = capitalize(camelizedId);\n  if (hasOwn(assets, PascalCaseId)) { return assets[PascalCaseId] }\n  // fallback to prototype chain\n  var res = assets[id] || assets[camelizedId] || assets[PascalCaseId];\n  if (process.env.NODE_ENV !== 'production' && warnMissing && !res) {\n    warn(\n      'Failed to resolve ' + type.slice(0, -1) + ': ' + id,\n      options\n    );\n  }\n  return res\n}\n\n/*  */\n\n\n\nfunction validateProp (\n  key,\n  propOptions,\n  propsData,\n  vm\n) {\n  var prop = propOptions[key];\n  var absent = !hasOwn(propsData, key);\n  var value = propsData[key];\n  // boolean casting\n  var booleanIndex = getTypeIndex(Boolean, prop.type);\n  if (booleanIndex > -1) {\n    if (absent && !hasOwn(prop, 'default')) {\n      value = false;\n    } else if (value === '' || value === hyphenate(key)) {\n      // only cast empty string / same name to boolean if\n      // boolean has higher priority\n      var stringIndex = getTypeIndex(String, prop.type);\n      if (stringIndex < 0 || booleanIndex < stringIndex) {\n        value = true;\n      }\n    }\n  }\n  // check default value\n  if (value === undefined) {\n    value = getPropDefaultValue(vm, prop, key);\n    // since the default value is a fresh copy,\n    // make sure to observe it.\n    var prevShouldObserve = shouldObserve;\n    toggleObserving(true);\n    observe(value);\n    toggleObserving(prevShouldObserve);\n  }\n  if (\n    process.env.NODE_ENV !== 'production' &&\n    // skip validation for weex recycle-list child component props\n    !(false)\n  ) {\n    assertProp(prop, key, value, vm, absent);\n  }\n  return value\n}\n\n/**\n * Get the default value of a prop.\n */\nfunction getPropDefaultValue (vm, prop, key) {\n  // no default, return undefined\n  if (!hasOwn(prop, 'default')) {\n    return undefined\n  }\n  var def = prop.default;\n  // warn against non-factory defaults for Object & Array\n  if (process.env.NODE_ENV !== 'production' && isObject(def)) {\n    warn(\n      'Invalid default value for prop \"' + key + '\": ' +\n      'Props with type Object/Array must use a factory function ' +\n      'to return the default value.',\n      vm\n    );\n  }\n  // the raw prop value was also undefined from previous render,\n  // return previous default value to avoid unnecessary watcher trigger\n  if (vm && vm.$options.propsData &&\n    vm.$options.propsData[key] === undefined &&\n    vm._props[key] !== undefined\n  ) {\n    return vm._props[key]\n  }\n  // call factory function for non-Function types\n  // a value is Function if its prototype is function even across different execution context\n  return typeof def === 'function' && getType(prop.type) !== 'Function'\n    ? def.call(vm)\n    : def\n}\n\n/**\n * Assert whether a prop is valid.\n */\nfunction assertProp (\n  prop,\n  name,\n  value,\n  vm,\n  absent\n) {\n  if (prop.required && absent) {\n    warn(\n      'Missing required prop: \"' + name + '\"',\n      vm\n    );\n    return\n  }\n  if (value == null && !prop.required) {\n    return\n  }\n  var type = prop.type;\n  var valid = !type || type === true;\n  var expectedTypes = [];\n  if (type) {\n    if (!Array.isArray(type)) {\n      type = [type];\n    }\n    for (var i = 0; i < type.length && !valid; i++) {\n      var assertedType = assertType(value, type[i], vm);\n      expectedTypes.push(assertedType.expectedType || '');\n      valid = assertedType.valid;\n    }\n  }\n\n  var haveExpectedTypes = expectedTypes.some(function (t) { return t; });\n  if (!valid && haveExpectedTypes) {\n    warn(\n      getInvalidTypeMessage(name, value, expectedTypes),\n      vm\n    );\n    return\n  }\n  var validator = prop.validator;\n  if (validator) {\n    if (!validator(value)) {\n      warn(\n        'Invalid prop: custom validator check failed for prop \"' + name + '\".',\n        vm\n      );\n    }\n  }\n}\n\nvar simpleCheckRE = /^(String|Number|Boolean|Function|Symbol|BigInt)$/;\n\nfunction assertType (value, type, vm) {\n  var valid;\n  var expectedType = getType(type);\n  if (simpleCheckRE.test(expectedType)) {\n    var t = typeof value;\n    valid = t === expectedType.toLowerCase();\n    // for primitive wrapper objects\n    if (!valid && t === 'object') {\n      valid = value instanceof type;\n    }\n  } else if (expectedType === 'Object') {\n    valid = isPlainObject(value);\n  } else if (expectedType === 'Array') {\n    valid = Array.isArray(value);\n  } else {\n    try {\n      valid = value instanceof type;\n    } catch (e) {\n      warn('Invalid prop type: \"' + String(type) + '\" is not a constructor', vm);\n      valid = false;\n    }\n  }\n  return {\n    valid: valid,\n    expectedType: expectedType\n  }\n}\n\nvar functionTypeCheckRE = /^\\s*function (\\w+)/;\n\n/**\n * Use function string name to check built-in types,\n * because a simple equality check will fail when running\n * across different vms / iframes.\n */\nfunction getType (fn) {\n  var match = fn && fn.toString().match(functionTypeCheckRE);\n  return match ? match[1] : ''\n}\n\nfunction isSameType (a, b) {\n  return getType(a) === getType(b)\n}\n\nfunction getTypeIndex (type, expectedTypes) {\n  if (!Array.isArray(expectedTypes)) {\n    return isSameType(expectedTypes, type) ? 0 : -1\n  }\n  for (var i = 0, len = expectedTypes.length; i < len; i++) {\n    if (isSameType(expectedTypes[i], type)) {\n      return i\n    }\n  }\n  return -1\n}\n\nfunction getInvalidTypeMessage (name, value, expectedTypes) {\n  var message = \"Invalid prop: type check failed for prop \\\"\" + name + \"\\\".\" +\n    \" Expected \" + (expectedTypes.map(capitalize).join(', '));\n  var expectedType = expectedTypes[0];\n  var receivedType = toRawType(value);\n  // check if we need to specify expected value\n  if (\n    expectedTypes.length === 1 &&\n    isExplicable(expectedType) &&\n    isExplicable(typeof value) &&\n    !isBoolean(expectedType, receivedType)\n  ) {\n    message += \" with value \" + (styleValue(value, expectedType));\n  }\n  message += \", got \" + receivedType + \" \";\n  // check if we need to specify received value\n  if (isExplicable(receivedType)) {\n    message += \"with value \" + (styleValue(value, receivedType)) + \".\";\n  }\n  return message\n}\n\nfunction styleValue (value, type) {\n  if (type === 'String') {\n    return (\"\\\"\" + value + \"\\\"\")\n  } else if (type === 'Number') {\n    return (\"\" + (Number(value)))\n  } else {\n    return (\"\" + value)\n  }\n}\n\nvar EXPLICABLE_TYPES = ['string', 'number', 'boolean'];\nfunction isExplicable (value) {\n  return EXPLICABLE_TYPES.some(function (elem) { return value.toLowerCase() === elem; })\n}\n\nfunction isBoolean () {\n  var args = [], len = arguments.length;\n  while ( len-- ) args[ len ] = arguments[ len ];\n\n  return args.some(function (elem) { return elem.toLowerCase() === 'boolean'; })\n}\n\n/*  */\n\nfunction handleError (err, vm, info) {\n  // Deactivate deps tracking while processing error handler to avoid possible infinite rendering.\n  // See: https://github.com/vuejs/vuex/issues/1505\n  pushTarget();\n  try {\n    if (vm) {\n      var cur = vm;\n      while ((cur = cur.$parent)) {\n        var hooks = cur.$options.errorCaptured;\n        if (hooks) {\n          for (var i = 0; i < hooks.length; i++) {\n            try {\n              var capture = hooks[i].call(cur, err, vm, info) === false;\n              if (capture) { return }\n            } catch (e) {\n              globalHandleError(e, cur, 'errorCaptured hook');\n            }\n          }\n        }\n      }\n    }\n    globalHandleError(err, vm, info);\n  } finally {\n    popTarget();\n  }\n}\n\nfunction invokeWithErrorHandling (\n  handler,\n  context,\n  args,\n  vm,\n  info\n) {\n  var res;\n  try {\n    res = args ? handler.apply(context, args) : handler.call(context);\n    if (res && !res._isVue && isPromise(res) && !res._handled) {\n      res.catch(function (e) { return handleError(e, vm, info + \" (Promise/async)\"); });\n      // issue #9511\n      // avoid catch triggering multiple times when nested calls\n      res._handled = true;\n    }\n  } catch (e) {\n    handleError(e, vm, info);\n  }\n  return res\n}\n\nfunction globalHandleError (err, vm, info) {\n  if (config.errorHandler) {\n    try {\n      return config.errorHandler.call(null, err, vm, info)\n    } catch (e) {\n      // if the user intentionally throws the original error in the handler,\n      // do not log it twice\n      if (e !== err) {\n        logError(e, null, 'config.errorHandler');\n      }\n    }\n  }\n  logError(err, vm, info);\n}\n\nfunction logError (err, vm, info) {\n  if (process.env.NODE_ENV !== 'production') {\n    warn((\"Error in \" + info + \": \\\"\" + (err.toString()) + \"\\\"\"), vm);\n  }\n  /* istanbul ignore else */\n  if ((inBrowser || inWeex) && typeof console !== 'undefined') {\n    console.error(err);\n  } else {\n    throw err\n  }\n}\n\n/*  */\n\nvar isUsingMicroTask = false;\n\nvar callbacks = [];\nvar pending = false;\n\nfunction flushCallbacks () {\n  pending = false;\n  var copies = callbacks.slice(0);\n  callbacks.length = 0;\n  for (var i = 0; i < copies.length; i++) {\n    copies[i]();\n  }\n}\n\n// Here we have async deferring wrappers using microtasks.\n// In 2.5 we used (macro) tasks (in combination with microtasks).\n// However, it has subtle problems when state is changed right before repaint\n// (e.g. #6813, out-in transitions).\n// Also, using (macro) tasks in event handler would cause some weird behaviors\n// that cannot be circumvented (e.g. #7109, #7153, #7546, #7834, #8109).\n// So we now use microtasks everywhere, again.\n// A major drawback of this tradeoff is that there are some scenarios\n// where microtasks have too high a priority and fire in between supposedly\n// sequential events (e.g. #4521, #6690, which have workarounds)\n// or even between bubbling of the same event (#6566).\nvar timerFunc;\n\n// The nextTick behavior leverages the microtask queue, which can be accessed\n// via either native Promise.then or MutationObserver.\n// MutationObserver has wider support, however it is seriously bugged in\n// UIWebView in iOS >= 9.3.3 when triggered in touch event handlers. It\n// completely stops working after triggering a few times... so, if native\n// Promise is available, we will use it:\n/* istanbul ignore next, $flow-disable-line */\nif (typeof Promise !== 'undefined' && isNative(Promise)) {\n  var p = Promise.resolve();\n  timerFunc = function () {\n    p.then(flushCallbacks);\n    // In problematic UIWebViews, Promise.then doesn't completely break, but\n    // it can get stuck in a weird state where callbacks are pushed into the\n    // microtask queue but the queue isn't being flushed, until the browser\n    // needs to do some other work, e.g. handle a timer. Therefore we can\n    // \"force\" the microtask queue to be flushed by adding an empty timer.\n    if (isIOS) { setTimeout(noop); }\n  };\n  isUsingMicroTask = true;\n} else if (!isIE && typeof MutationObserver !== 'undefined' && (\n  isNative(MutationObserver) ||\n  // PhantomJS and iOS 7.x\n  MutationObserver.toString() === '[object MutationObserverConstructor]'\n)) {\n  // Use MutationObserver where native Promise is not available,\n  // e.g. PhantomJS, iOS7, Android 4.4\n  // (#6466 MutationObserver is unreliable in IE11)\n  var counter = 1;\n  var observer = new MutationObserver(flushCallbacks);\n  var textNode = document.createTextNode(String(counter));\n  observer.observe(textNode, {\n    characterData: true\n  });\n  timerFunc = function () {\n    counter = (counter + 1) % 2;\n    textNode.data = String(counter);\n  };\n  isUsingMicroTask = true;\n} else if (typeof setImmediate !== 'undefined' && isNative(setImmediate)) {\n  // Fallback to setImmediate.\n  // Technically it leverages the (macro) task queue,\n  // but it is still a better choice than setTimeout.\n  timerFunc = function () {\n    setImmediate(flushCallbacks);\n  };\n} else {\n  // Fallback to setTimeout.\n  timerFunc = function () {\n    setTimeout(flushCallbacks, 0);\n  };\n}\n\nfunction nextTick (cb, ctx) {\n  var _resolve;\n  callbacks.push(function () {\n    if (cb) {\n      try {\n        cb.call(ctx);\n      } catch (e) {\n        handleError(e, ctx, 'nextTick');\n      }\n    } else if (_resolve) {\n      _resolve(ctx);\n    }\n  });\n  if (!pending) {\n    pending = true;\n    timerFunc();\n  }\n  // $flow-disable-line\n  if (!cb && typeof Promise !== 'undefined') {\n    return new Promise(function (resolve) {\n      _resolve = resolve;\n    })\n  }\n}\n\n/*  */\n\n/* not type checking this file because flow doesn't play well with Proxy */\n\nvar initProxy;\n\nif (process.env.NODE_ENV !== 'production') {\n  var allowedGlobals = makeMap(\n    'Infinity,undefined,NaN,isFinite,isNaN,' +\n    'parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,' +\n    'Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt,' +\n    'require' // for Webpack/Browserify\n  );\n\n  var warnNonPresent = function (target, key) {\n    warn(\n      \"Property or method \\\"\" + key + \"\\\" is not defined on the instance but \" +\n      'referenced during render. Make sure that this property is reactive, ' +\n      'either in the data option, or for class-based components, by ' +\n      'initializing the property. ' +\n      'See: https://vuejs.org/v2/guide/reactivity.html#Declaring-Reactive-Properties.',\n      target\n    );\n  };\n\n  var warnReservedPrefix = function (target, key) {\n    warn(\n      \"Property \\\"\" + key + \"\\\" must be accessed with \\\"$data.\" + key + \"\\\" because \" +\n      'properties starting with \"$\" or \"_\" are not proxied in the Vue instance to ' +\n      'prevent conflicts with Vue internals. ' +\n      'See: https://vuejs.org/v2/api/#data',\n      target\n    );\n  };\n\n  var hasProxy =\n    typeof Proxy !== 'undefined' && isNative(Proxy);\n\n  if (hasProxy) {\n    var isBuiltInModifier = makeMap('stop,prevent,self,ctrl,shift,alt,meta,exact');\n    config.keyCodes = new Proxy(config.keyCodes, {\n      set: function set (target, key, value) {\n        if (isBuiltInModifier(key)) {\n          warn((\"Avoid overwriting built-in modifier in config.keyCodes: .\" + key));\n          return false\n        } else {\n          target[key] = value;\n          return true\n        }\n      }\n    });\n  }\n\n  var hasHandler = {\n    has: function has (target, key) {\n      var has = key in target;\n      var isAllowed = allowedGlobals(key) ||\n        (typeof key === 'string' && key.charAt(0) === '_' && !(key in target.$data));\n      if (!has && !isAllowed) {\n        if (key in target.$data) { warnReservedPrefix(target, key); }\n        else { warnNonPresent(target, key); }\n      }\n      return has || !isAllowed\n    }\n  };\n\n  var getHandler = {\n    get: function get (target, key) {\n      if (typeof key === 'string' && !(key in target)) {\n        if (key in target.$data) { warnReservedPrefix(target, key); }\n        else { warnNonPresent(target, key); }\n      }\n      return target[key]\n    }\n  };\n\n  initProxy = function initProxy (vm) {\n    if (hasProxy) {\n      // determine which proxy handler to use\n      var options = vm.$options;\n      var handlers = options.render && options.render._withStripped\n        ? getHandler\n        : hasHandler;\n      vm._renderProxy = new Proxy(vm, handlers);\n    } else {\n      vm._renderProxy = vm;\n    }\n  };\n}\n\n/*  */\n\nvar seenObjects = new _Set();\n\n/**\n * Recursively traverse an object to evoke all converted\n * getters, so that every nested property inside the object\n * is collected as a \"deep\" dependency.\n */\nfunction traverse (val) {\n  _traverse(val, seenObjects);\n  seenObjects.clear();\n}\n\nfunction _traverse (val, seen) {\n  var i, keys;\n  var isA = Array.isArray(val);\n  if ((!isA && !isObject(val)) || Object.isFrozen(val) || val instanceof VNode) {\n    return\n  }\n  if (val.__ob__) {\n    var depId = val.__ob__.dep.id;\n    if (seen.has(depId)) {\n      return\n    }\n    seen.add(depId);\n  }\n  if (isA) {\n    i = val.length;\n    while (i--) { _traverse(val[i], seen); }\n  } else {\n    keys = Object.keys(val);\n    i = keys.length;\n    while (i--) { _traverse(val[keys[i]], seen); }\n  }\n}\n\nvar mark;\nvar measure;\n\nif (process.env.NODE_ENV !== 'production') {\n  var perf = inBrowser && window.performance;\n  /* istanbul ignore if */\n  if (\n    perf &&\n    perf.mark &&\n    perf.measure &&\n    perf.clearMarks &&\n    perf.clearMeasures\n  ) {\n    mark = function (tag) { return perf.mark(tag); };\n    measure = function (name, startTag, endTag) {\n      perf.measure(name, startTag, endTag);\n      perf.clearMarks(startTag);\n      perf.clearMarks(endTag);\n      // perf.clearMeasures(name)\n    };\n  }\n}\n\n/*  */\n\nvar normalizeEvent = cached(function (name) {\n  var passive = name.charAt(0) === '&';\n  name = passive ? name.slice(1) : name;\n  var once$$1 = name.charAt(0) === '~'; // Prefixed last, checked first\n  name = once$$1 ? name.slice(1) : name;\n  var capture = name.charAt(0) === '!';\n  name = capture ? name.slice(1) : name;\n  return {\n    name: name,\n    once: once$$1,\n    capture: capture,\n    passive: passive\n  }\n});\n\nfunction createFnInvoker (fns, vm) {\n  function invoker () {\n    var arguments$1 = arguments;\n\n    var fns = invoker.fns;\n    if (Array.isArray(fns)) {\n      var cloned = fns.slice();\n      for (var i = 0; i < cloned.length; i++) {\n        invokeWithErrorHandling(cloned[i], null, arguments$1, vm, \"v-on handler\");\n      }\n    } else {\n      // return handler return value for single handlers\n      return invokeWithErrorHandling(fns, null, arguments, vm, \"v-on handler\")\n    }\n  }\n  invoker.fns = fns;\n  return invoker\n}\n\nfunction updateListeners (\n  on,\n  oldOn,\n  add,\n  remove$$1,\n  createOnceHandler,\n  vm\n) {\n  var name, def$$1, cur, old, event;\n  for (name in on) {\n    def$$1 = cur = on[name];\n    old = oldOn[name];\n    event = normalizeEvent(name);\n    if (isUndef(cur)) {\n      process.env.NODE_ENV !== 'production' && warn(\n        \"Invalid handler for event \\\"\" + (event.name) + \"\\\": got \" + String(cur),\n        vm\n      );\n    } else if (isUndef(old)) {\n      if (isUndef(cur.fns)) {\n        cur = on[name] = createFnInvoker(cur, vm);\n      }\n      if (isTrue(event.once)) {\n        cur = on[name] = createOnceHandler(event.name, cur, event.capture);\n      }\n      add(event.name, cur, event.capture, event.passive, event.params);\n    } else if (cur !== old) {\n      old.fns = cur;\n      on[name] = old;\n    }\n  }\n  for (name in oldOn) {\n    if (isUndef(on[name])) {\n      event = normalizeEvent(name);\n      remove$$1(event.name, oldOn[name], event.capture);\n    }\n  }\n}\n\n/*  */\n\nfunction mergeVNodeHook (def, hookKey, hook) {\n  if (def instanceof VNode) {\n    def = def.data.hook || (def.data.hook = {});\n  }\n  var invoker;\n  var oldHook = def[hookKey];\n\n  function wrappedHook () {\n    hook.apply(this, arguments);\n    // important: remove merged hook to ensure it's called only once\n    // and prevent memory leak\n    remove(invoker.fns, wrappedHook);\n  }\n\n  if (isUndef(oldHook)) {\n    // no existing hook\n    invoker = createFnInvoker([wrappedHook]);\n  } else {\n    /* istanbul ignore if */\n    if (isDef(oldHook.fns) && isTrue(oldHook.merged)) {\n      // already a merged invoker\n      invoker = oldHook;\n      invoker.fns.push(wrappedHook);\n    } else {\n      // existing plain hook\n      invoker = createFnInvoker([oldHook, wrappedHook]);\n    }\n  }\n\n  invoker.merged = true;\n  def[hookKey] = invoker;\n}\n\n/*  */\n\nfunction extractPropsFromVNodeData (\n  data,\n  Ctor,\n  tag\n) {\n  // we are only extracting raw values here.\n  // validation and default values are handled in the child\n  // component itself.\n  var propOptions = Ctor.options.props;\n  if (isUndef(propOptions)) {\n    return\n  }\n  var res = {};\n  var attrs = data.attrs;\n  var props = data.props;\n  if (isDef(attrs) || isDef(props)) {\n    for (var key in propOptions) {\n      var altKey = hyphenate(key);\n      if (process.env.NODE_ENV !== 'production') {\n        var keyInLowerCase = key.toLowerCase();\n        if (\n          key !== keyInLowerCase &&\n          attrs && hasOwn(attrs, keyInLowerCase)\n        ) {\n          tip(\n            \"Prop \\\"\" + keyInLowerCase + \"\\\" is passed to component \" +\n            (formatComponentName(tag || Ctor)) + \", but the declared prop name is\" +\n            \" \\\"\" + key + \"\\\". \" +\n            \"Note that HTML attributes are case-insensitive and camelCased \" +\n            \"props need to use their kebab-case equivalents when using in-DOM \" +\n            \"templates. You should probably use \\\"\" + altKey + \"\\\" instead of \\\"\" + key + \"\\\".\"\n          );\n        }\n      }\n      checkProp(res, props, key, altKey, true) ||\n      checkProp(res, attrs, key, altKey, false);\n    }\n  }\n  return res\n}\n\nfunction checkProp (\n  res,\n  hash,\n  key,\n  altKey,\n  preserve\n) {\n  if (isDef(hash)) {\n    if (hasOwn(hash, key)) {\n      res[key] = hash[key];\n      if (!preserve) {\n        delete hash[key];\n      }\n      return true\n    } else if (hasOwn(hash, altKey)) {\n      res[key] = hash[altKey];\n      if (!preserve) {\n        delete hash[altKey];\n      }\n      return true\n    }\n  }\n  return false\n}\n\n/*  */\n\n// The template compiler attempts to minimize the need for normalization by\n// statically analyzing the template at compile time.\n//\n// For plain HTML markup, normalization can be completely skipped because the\n// generated render function is guaranteed to return Array<VNode>. There are\n// two cases where extra normalization is needed:\n\n// 1. When the children contains components - because a functional component\n// may return an Array instead of a single root. In this case, just a simple\n// normalization is needed - if any child is an Array, we flatten the whole\n// thing with Array.prototype.concat. It is guaranteed to be only 1-level deep\n// because functional components already normalize their own children.\nfunction simpleNormalizeChildren (children) {\n  for (var i = 0; i < children.length; i++) {\n    if (Array.isArray(children[i])) {\n      return Array.prototype.concat.apply([], children)\n    }\n  }\n  return children\n}\n\n// 2. When the children contains constructs that always generated nested Arrays,\n// e.g. <template>, <slot>, v-for, or when the children is provided by user\n// with hand-written render functions / JSX. In such cases a full normalization\n// is needed to cater to all possible types of children values.\nfunction normalizeChildren (children) {\n  return isPrimitive(children)\n    ? [createTextVNode(children)]\n    : Array.isArray(children)\n      ? normalizeArrayChildren(children)\n      : undefined\n}\n\nfunction isTextNode (node) {\n  return isDef(node) && isDef(node.text) && isFalse(node.isComment)\n}\n\nfunction normalizeArrayChildren (children, nestedIndex) {\n  var res = [];\n  var i, c, lastIndex, last;\n  for (i = 0; i < children.length; i++) {\n    c = children[i];\n    if (isUndef(c) || typeof c === 'boolean') { continue }\n    lastIndex = res.length - 1;\n    last = res[lastIndex];\n    //  nested\n    if (Array.isArray(c)) {\n      if (c.length > 0) {\n        c = normalizeArrayChildren(c, ((nestedIndex || '') + \"_\" + i));\n        // merge adjacent text nodes\n        if (isTextNode(c[0]) && isTextNode(last)) {\n          res[lastIndex] = createTextVNode(last.text + (c[0]).text);\n          c.shift();\n        }\n        res.push.apply(res, c);\n      }\n    } else if (isPrimitive(c)) {\n      if (isTextNode(last)) {\n        // merge adjacent text nodes\n        // this is necessary for SSR hydration because text nodes are\n        // essentially merged when rendered to HTML strings\n        res[lastIndex] = createTextVNode(last.text + c);\n      } else if (c !== '') {\n        // convert primitive to vnode\n        res.push(createTextVNode(c));\n      }\n    } else {\n      if (isTextNode(c) && isTextNode(last)) {\n        // merge adjacent text nodes\n        res[lastIndex] = createTextVNode(last.text + c.text);\n      } else {\n        // default key for nested array children (likely generated by v-for)\n        if (isTrue(children._isVList) &&\n          isDef(c.tag) &&\n          isUndef(c.key) &&\n          isDef(nestedIndex)) {\n          c.key = \"__vlist\" + nestedIndex + \"_\" + i + \"__\";\n        }\n        res.push(c);\n      }\n    }\n  }\n  return res\n}\n\n/*  */\n\nfunction initProvide (vm) {\n  var provide = vm.$options.provide;\n  if (provide) {\n    vm._provided = typeof provide === 'function'\n      ? provide.call(vm)\n      : provide;\n  }\n}\n\nfunction initInjections (vm) {\n  var result = resolveInject(vm.$options.inject, vm);\n  if (result) {\n    toggleObserving(false);\n    Object.keys(result).forEach(function (key) {\n      /* istanbul ignore else */\n      if (process.env.NODE_ENV !== 'production') {\n        defineReactive$$1(vm, key, result[key], function () {\n          warn(\n            \"Avoid mutating an injected value directly since the changes will be \" +\n            \"overwritten whenever the provided component re-renders. \" +\n            \"injection being mutated: \\\"\" + key + \"\\\"\",\n            vm\n          );\n        });\n      } else {\n        defineReactive$$1(vm, key, result[key]);\n      }\n    });\n    toggleObserving(true);\n  }\n}\n\nfunction resolveInject (inject, vm) {\n  if (inject) {\n    // inject is :any because flow is not smart enough to figure out cached\n    var result = Object.create(null);\n    var keys = hasSymbol\n      ? Reflect.ownKeys(inject)\n      : Object.keys(inject);\n\n    for (var i = 0; i < keys.length; i++) {\n      var key = keys[i];\n      // #6574 in case the inject object is observed...\n      if (key === '__ob__') { continue }\n      var provideKey = inject[key].from;\n      var source = vm;\n      while (source) {\n        if (source._provided && hasOwn(source._provided, provideKey)) {\n          result[key] = source._provided[provideKey];\n          break\n        }\n        source = source.$parent;\n      }\n      if (!source) {\n        if ('default' in inject[key]) {\n          var provideDefault = inject[key].default;\n          result[key] = typeof provideDefault === 'function'\n            ? provideDefault.call(vm)\n            : provideDefault;\n        } else if (process.env.NODE_ENV !== 'production') {\n          warn((\"Injection \\\"\" + key + \"\\\" not found\"), vm);\n        }\n      }\n    }\n    return result\n  }\n}\n\n/*  */\n\n\n\n/**\n * Runtime helper for resolving raw children VNodes into a slot object.\n */\nfunction resolveSlots (\n  children,\n  context\n) {\n  if (!children || !children.length) {\n    return {}\n  }\n  var slots = {};\n  for (var i = 0, l = children.length; i < l; i++) {\n    var child = children[i];\n    var data = child.data;\n    // remove slot attribute if the node is resolved as a Vue slot node\n    if (data && data.attrs && data.attrs.slot) {\n      delete data.attrs.slot;\n    }\n    // named slots should only be respected if the vnode was rendered in the\n    // same context.\n    if ((child.context === context || child.fnContext === context) &&\n      data && data.slot != null\n    ) {\n      var name = data.slot;\n      var slot = (slots[name] || (slots[name] = []));\n      if (child.tag === 'template') {\n        slot.push.apply(slot, child.children || []);\n      } else {\n        slot.push(child);\n      }\n    } else {\n      (slots.default || (slots.default = [])).push(child);\n    }\n  }\n  // ignore slots that contains only whitespace\n  for (var name$1 in slots) {\n    if (slots[name$1].every(isWhitespace)) {\n      delete slots[name$1];\n    }\n  }\n  return slots\n}\n\nfunction isWhitespace (node) {\n  return (node.isComment && !node.asyncFactory) || node.text === ' '\n}\n\n/*  */\n\nfunction isAsyncPlaceholder (node) {\n  return node.isComment && node.asyncFactory\n}\n\n/*  */\n\nfunction normalizeScopedSlots (\n  slots,\n  normalSlots,\n  prevSlots\n) {\n  var res;\n  var hasNormalSlots = Object.keys(normalSlots).length > 0;\n  var isStable = slots ? !!slots.$stable : !hasNormalSlots;\n  var key = slots && slots.$key;\n  if (!slots) {\n    res = {};\n  } else if (slots._normalized) {\n    // fast path 1: child component re-render only, parent did not change\n    return slots._normalized\n  } else if (\n    isStable &&\n    prevSlots &&\n    prevSlots !== emptyObject &&\n    key === prevSlots.$key &&\n    !hasNormalSlots &&\n    !prevSlots.$hasNormal\n  ) {\n    // fast path 2: stable scoped slots w/ no normal slots to proxy,\n    // only need to normalize once\n    return prevSlots\n  } else {\n    res = {};\n    for (var key$1 in slots) {\n      if (slots[key$1] && key$1[0] !== '$') {\n        res[key$1] = normalizeScopedSlot(normalSlots, key$1, slots[key$1]);\n      }\n    }\n  }\n  // expose normal slots on scopedSlots\n  for (var key$2 in normalSlots) {\n    if (!(key$2 in res)) {\n      res[key$2] = proxyNormalSlot(normalSlots, key$2);\n    }\n  }\n  // avoriaz seems to mock a non-extensible $scopedSlots object\n  // and when that is passed down this would cause an error\n  if (slots && Object.isExtensible(slots)) {\n    (slots)._normalized = res;\n  }\n  def(res, '$stable', isStable);\n  def(res, '$key', key);\n  def(res, '$hasNormal', hasNormalSlots);\n  return res\n}\n\nfunction normalizeScopedSlot(normalSlots, key, fn) {\n  var normalized = function () {\n    var res = arguments.length ? fn.apply(null, arguments) : fn({});\n    res = res && typeof res === 'object' && !Array.isArray(res)\n      ? [res] // single vnode\n      : normalizeChildren(res);\n    var vnode = res && res[0];\n    return res && (\n      !vnode ||\n      (res.length === 1 && vnode.isComment && !isAsyncPlaceholder(vnode)) // #9658, #10391\n    ) ? undefined\n      : res\n  };\n  // this is a slot using the new v-slot syntax without scope. although it is\n  // compiled as a scoped slot, render fn users would expect it to be present\n  // on this.$slots because the usage is semantically a normal slot.\n  if (fn.proxy) {\n    Object.defineProperty(normalSlots, key, {\n      get: normalized,\n      enumerable: true,\n      configurable: true\n    });\n  }\n  return normalized\n}\n\nfunction proxyNormalSlot(slots, key) {\n  return function () { return slots[key]; }\n}\n\n/*  */\n\n/**\n * Runtime helper for rendering v-for lists.\n */\nfunction renderList (\n  val,\n  render\n) {\n  var ret, i, l, keys, key;\n  if (Array.isArray(val) || typeof val === 'string') {\n    ret = new Array(val.length);\n    for (i = 0, l = val.length; i < l; i++) {\n      ret[i] = render(val[i], i);\n    }\n  } else if (typeof val === 'number') {\n    ret = new Array(val);\n    for (i = 0; i < val; i++) {\n      ret[i] = render(i + 1, i);\n    }\n  } else if (isObject(val)) {\n    if (hasSymbol && val[Symbol.iterator]) {\n      ret = [];\n      var iterator = val[Symbol.iterator]();\n      var result = iterator.next();\n      while (!result.done) {\n        ret.push(render(result.value, ret.length));\n        result = iterator.next();\n      }\n    } else {\n      keys = Object.keys(val);\n      ret = new Array(keys.length);\n      for (i = 0, l = keys.length; i < l; i++) {\n        key = keys[i];\n        ret[i] = render(val[key], key, i);\n      }\n    }\n  }\n  if (!isDef(ret)) {\n    ret = [];\n  }\n  (ret)._isVList = true;\n  return ret\n}\n\n/*  */\n\n/**\n * Runtime helper for rendering <slot>\n */\nfunction renderSlot (\n  name,\n  fallbackRender,\n  props,\n  bindObject\n) {\n  var scopedSlotFn = this.$scopedSlots[name];\n  var nodes;\n  if (scopedSlotFn) {\n    // scoped slot\n    props = props || {};\n    if (bindObject) {\n      if (process.env.NODE_ENV !== 'production' && !isObject(bindObject)) {\n        warn('slot v-bind without argument expects an Object', this);\n      }\n      props = extend(extend({}, bindObject), props);\n    }\n    nodes =\n      scopedSlotFn(props) ||\n      (typeof fallbackRender === 'function' ? fallbackRender() : fallbackRender);\n  } else {\n    nodes =\n      this.$slots[name] ||\n      (typeof fallbackRender === 'function' ? fallbackRender() : fallbackRender);\n  }\n\n  var target = props && props.slot;\n  if (target) {\n    return this.$createElement('template', { slot: target }, nodes)\n  } else {\n    return nodes\n  }\n}\n\n/*  */\n\n/**\n * Runtime helper for resolving filters\n */\nfunction resolveFilter (id) {\n  return resolveAsset(this.$options, 'filters', id, true) || identity\n}\n\n/*  */\n\nfunction isKeyNotMatch (expect, actual) {\n  if (Array.isArray(expect)) {\n    return expect.indexOf(actual) === -1\n  } else {\n    return expect !== actual\n  }\n}\n\n/**\n * Runtime helper for checking keyCodes from config.\n * exposed as Vue.prototype._k\n * passing in eventKeyName as last argument separately for backwards compat\n */\nfunction checkKeyCodes (\n  eventKeyCode,\n  key,\n  builtInKeyCode,\n  eventKeyName,\n  builtInKeyName\n) {\n  var mappedKeyCode = config.keyCodes[key] || builtInKeyCode;\n  if (builtInKeyName && eventKeyName && !config.keyCodes[key]) {\n    return isKeyNotMatch(builtInKeyName, eventKeyName)\n  } else if (mappedKeyCode) {\n    return isKeyNotMatch(mappedKeyCode, eventKeyCode)\n  } else if (eventKeyName) {\n    return hyphenate(eventKeyName) !== key\n  }\n  return eventKeyCode === undefined\n}\n\n/*  */\n\n/**\n * Runtime helper for merging v-bind=\"object\" into a VNode's data.\n */\nfunction bindObjectProps (\n  data,\n  tag,\n  value,\n  asProp,\n  isSync\n) {\n  if (value) {\n    if (!isObject(value)) {\n      process.env.NODE_ENV !== 'production' && warn(\n        'v-bind without argument expects an Object or Array value',\n        this\n      );\n    } else {\n      if (Array.isArray(value)) {\n        value = toObject(value);\n      }\n      var hash;\n      var loop = function ( key ) {\n        if (\n          key === 'class' ||\n          key === 'style' ||\n          isReservedAttribute(key)\n        ) {\n          hash = data;\n        } else {\n          var type = data.attrs && data.attrs.type;\n          hash = asProp || config.mustUseProp(tag, type, key)\n            ? data.domProps || (data.domProps = {})\n            : data.attrs || (data.attrs = {});\n        }\n        var camelizedKey = camelize(key);\n        var hyphenatedKey = hyphenate(key);\n        if (!(camelizedKey in hash) && !(hyphenatedKey in hash)) {\n          hash[key] = value[key];\n\n          if (isSync) {\n            var on = data.on || (data.on = {});\n            on[(\"update:\" + key)] = function ($event) {\n              value[key] = $event;\n            };\n          }\n        }\n      };\n\n      for (var key in value) loop( key );\n    }\n  }\n  return data\n}\n\n/*  */\n\n/**\n * Runtime helper for rendering static trees.\n */\nfunction renderStatic (\n  index,\n  isInFor\n) {\n  var cached = this._staticTrees || (this._staticTrees = []);\n  var tree = cached[index];\n  // if has already-rendered static tree and not inside v-for,\n  // we can reuse the same tree.\n  if (tree && !isInFor) {\n    return tree\n  }\n  // otherwise, render a fresh tree.\n  tree = cached[index] = this.$options.staticRenderFns[index].call(\n    this._renderProxy,\n    null,\n    this // for render fns generated for functional component templates\n  );\n  markStatic(tree, (\"__static__\" + index), false);\n  return tree\n}\n\n/**\n * Runtime helper for v-once.\n * Effectively it means marking the node as static with a unique key.\n */\nfunction markOnce (\n  tree,\n  index,\n  key\n) {\n  markStatic(tree, (\"__once__\" + index + (key ? (\"_\" + key) : \"\")), true);\n  return tree\n}\n\nfunction markStatic (\n  tree,\n  key,\n  isOnce\n) {\n  if (Array.isArray(tree)) {\n    for (var i = 0; i < tree.length; i++) {\n      if (tree[i] && typeof tree[i] !== 'string') {\n        markStaticNode(tree[i], (key + \"_\" + i), isOnce);\n      }\n    }\n  } else {\n    markStaticNode(tree, key, isOnce);\n  }\n}\n\nfunction markStaticNode (node, key, isOnce) {\n  node.isStatic = true;\n  node.key = key;\n  node.isOnce = isOnce;\n}\n\n/*  */\n\nfunction bindObjectListeners (data, value) {\n  if (value) {\n    if (!isPlainObject(value)) {\n      process.env.NODE_ENV !== 'production' && warn(\n        'v-on without argument expects an Object value',\n        this\n      );\n    } else {\n      var on = data.on = data.on ? extend({}, data.on) : {};\n      for (var key in value) {\n        var existing = on[key];\n        var ours = value[key];\n        on[key] = existing ? [].concat(existing, ours) : ours;\n      }\n    }\n  }\n  return data\n}\n\n/*  */\n\nfunction resolveScopedSlots (\n  fns, // see flow/vnode\n  res,\n  // the following are added in 2.6\n  hasDynamicKeys,\n  contentHashKey\n) {\n  res = res || { $stable: !hasDynamicKeys };\n  for (var i = 0; i < fns.length; i++) {\n    var slot = fns[i];\n    if (Array.isArray(slot)) {\n      resolveScopedSlots(slot, res, hasDynamicKeys);\n    } else if (slot) {\n      // marker for reverse proxying v-slot without scope on this.$slots\n      if (slot.proxy) {\n        slot.fn.proxy = true;\n      }\n      res[slot.key] = slot.fn;\n    }\n  }\n  if (contentHashKey) {\n    (res).$key = contentHashKey;\n  }\n  return res\n}\n\n/*  */\n\nfunction bindDynamicKeys (baseObj, values) {\n  for (var i = 0; i < values.length; i += 2) {\n    var key = values[i];\n    if (typeof key === 'string' && key) {\n      baseObj[values[i]] = values[i + 1];\n    } else if (process.env.NODE_ENV !== 'production' && key !== '' && key !== null) {\n      // null is a special value for explicitly removing a binding\n      warn(\n        (\"Invalid value for dynamic directive argument (expected string or null): \" + key),\n        this\n      );\n    }\n  }\n  return baseObj\n}\n\n// helper to dynamically append modifier runtime markers to event names.\n// ensure only append when value is already string, otherwise it will be cast\n// to string and cause the type check to miss.\nfunction prependModifier (value, symbol) {\n  return typeof value === 'string' ? symbol + value : value\n}\n\n/*  */\n\nfunction installRenderHelpers (target) {\n  target._o = markOnce;\n  target._n = toNumber;\n  target._s = toString;\n  target._l = renderList;\n  target._t = renderSlot;\n  target._q = looseEqual;\n  target._i = looseIndexOf;\n  target._m = renderStatic;\n  target._f = resolveFilter;\n  target._k = checkKeyCodes;\n  target._b = bindObjectProps;\n  target._v = createTextVNode;\n  target._e = createEmptyVNode;\n  target._u = resolveScopedSlots;\n  target._g = bindObjectListeners;\n  target._d = bindDynamicKeys;\n  target._p = prependModifier;\n}\n\n/*  */\n\nfunction FunctionalRenderContext (\n  data,\n  props,\n  children,\n  parent,\n  Ctor\n) {\n  var this$1 = this;\n\n  var options = Ctor.options;\n  // ensure the createElement function in functional components\n  // gets a unique context - this is necessary for correct named slot check\n  var contextVm;\n  if (hasOwn(parent, '_uid')) {\n    contextVm = Object.create(parent);\n    // $flow-disable-line\n    contextVm._original = parent;\n  } else {\n    // the context vm passed in is a functional context as well.\n    // in this case we want to make sure we are able to get a hold to the\n    // real context instance.\n    contextVm = parent;\n    // $flow-disable-line\n    parent = parent._original;\n  }\n  var isCompiled = isTrue(options._compiled);\n  var needNormalization = !isCompiled;\n\n  this.data = data;\n  this.props = props;\n  this.children = children;\n  this.parent = parent;\n  this.listeners = data.on || emptyObject;\n  this.injections = resolveInject(options.inject, parent);\n  this.slots = function () {\n    if (!this$1.$slots) {\n      normalizeScopedSlots(\n        data.scopedSlots,\n        this$1.$slots = resolveSlots(children, parent)\n      );\n    }\n    return this$1.$slots\n  };\n\n  Object.defineProperty(this, 'scopedSlots', ({\n    enumerable: true,\n    get: function get () {\n      return normalizeScopedSlots(data.scopedSlots, this.slots())\n    }\n  }));\n\n  // support for compiled functional template\n  if (isCompiled) {\n    // exposing $options for renderStatic()\n    this.$options = options;\n    // pre-resolve slots for renderSlot()\n    this.$slots = this.slots();\n    this.$scopedSlots = normalizeScopedSlots(data.scopedSlots, this.$slots);\n  }\n\n  if (options._scopeId) {\n    this._c = function (a, b, c, d) {\n      var vnode = createElement(contextVm, a, b, c, d, needNormalization);\n      if (vnode && !Array.isArray(vnode)) {\n        vnode.fnScopeId = options._scopeId;\n        vnode.fnContext = parent;\n      }\n      return vnode\n    };\n  } else {\n    this._c = function (a, b, c, d) { return createElement(contextVm, a, b, c, d, needNormalization); };\n  }\n}\n\ninstallRenderHelpers(FunctionalRenderContext.prototype);\n\nfunction createFunctionalComponent (\n  Ctor,\n  propsData,\n  data,\n  contextVm,\n  children\n) {\n  var options = Ctor.options;\n  var props = {};\n  var propOptions = options.props;\n  if (isDef(propOptions)) {\n    for (var key in propOptions) {\n      props[key] = validateProp(key, propOptions, propsData || emptyObject);\n    }\n  } else {\n    if (isDef(data.attrs)) { mergeProps(props, data.attrs); }\n    if (isDef(data.props)) { mergeProps(props, data.props); }\n  }\n\n  var renderContext = new FunctionalRenderContext(\n    data,\n    props,\n    children,\n    contextVm,\n    Ctor\n  );\n\n  var vnode = options.render.call(null, renderContext._c, renderContext);\n\n  if (vnode instanceof VNode) {\n    return cloneAndMarkFunctionalResult(vnode, data, renderContext.parent, options, renderContext)\n  } else if (Array.isArray(vnode)) {\n    var vnodes = normalizeChildren(vnode) || [];\n    var res = new Array(vnodes.length);\n    for (var i = 0; i < vnodes.length; i++) {\n      res[i] = cloneAndMarkFunctionalResult(vnodes[i], data, renderContext.parent, options, renderContext);\n    }\n    return res\n  }\n}\n\nfunction cloneAndMarkFunctionalResult (vnode, data, contextVm, options, renderContext) {\n  // #7817 clone node before setting fnContext, otherwise if the node is reused\n  // (e.g. it was from a cached normal slot) the fnContext causes named slots\n  // that should not be matched to match.\n  var clone = cloneVNode(vnode);\n  clone.fnContext = contextVm;\n  clone.fnOptions = options;\n  if (process.env.NODE_ENV !== 'production') {\n    (clone.devtoolsMeta = clone.devtoolsMeta || {}).renderContext = renderContext;\n  }\n  if (data.slot) {\n    (clone.data || (clone.data = {})).slot = data.slot;\n  }\n  return clone\n}\n\nfunction mergeProps (to, from) {\n  for (var key in from) {\n    to[camelize(key)] = from[key];\n  }\n}\n\n/*  */\n\n/*  */\n\n/*  */\n\n/*  */\n\n// inline hooks to be invoked on component VNodes during patch\nvar componentVNodeHooks = {\n  init: function init (vnode, hydrating) {\n    if (\n      vnode.componentInstance &&\n      !vnode.componentInstance._isDestroyed &&\n      vnode.data.keepAlive\n    ) {\n      // kept-alive components, treat as a patch\n      var mountedNode = vnode; // work around flow\n      componentVNodeHooks.prepatch(mountedNode, mountedNode);\n    } else {\n      var child = vnode.componentInstance = createComponentInstanceForVnode(\n        vnode,\n        activeInstance\n      );\n      child.$mount(hydrating ? vnode.elm : undefined, hydrating);\n    }\n  },\n\n  prepatch: function prepatch (oldVnode, vnode) {\n    var options = vnode.componentOptions;\n    var child = vnode.componentInstance = oldVnode.componentInstance;\n    updateChildComponent(\n      child,\n      options.propsData, // updated props\n      options.listeners, // updated listeners\n      vnode, // new parent vnode\n      options.children // new children\n    );\n  },\n\n  insert: function insert (vnode) {\n    var context = vnode.context;\n    var componentInstance = vnode.componentInstance;\n    if (!componentInstance._isMounted) {\n      componentInstance._isMounted = true;\n      callHook(componentInstance, 'mounted');\n    }\n    if (vnode.data.keepAlive) {\n      if (context._isMounted) {\n        // vue-router#1212\n        // During updates, a kept-alive component's child components may\n        // change, so directly walking the tree here may call activated hooks\n        // on incorrect children. Instead we push them into a queue which will\n        // be processed after the whole patch process ended.\n        queueActivatedComponent(componentInstance);\n      } else {\n        activateChildComponent(componentInstance, true /* direct */);\n      }\n    }\n  },\n\n  destroy: function destroy (vnode) {\n    var componentInstance = vnode.componentInstance;\n    if (!componentInstance._isDestroyed) {\n      if (!vnode.data.keepAlive) {\n        componentInstance.$destroy();\n      } else {\n        deactivateChildComponent(componentInstance, true /* direct */);\n      }\n    }\n  }\n};\n\nvar hooksToMerge = Object.keys(componentVNodeHooks);\n\nfunction createComponent (\n  Ctor,\n  data,\n  context,\n  children,\n  tag\n) {\n  if (isUndef(Ctor)) {\n    return\n  }\n\n  var baseCtor = context.$options._base;\n\n  // plain options object: turn it into a constructor\n  if (isObject(Ctor)) {\n    Ctor = baseCtor.extend(Ctor);\n  }\n\n  // if at this stage it's not a constructor or an async component factory,\n  // reject.\n  if (typeof Ctor !== 'function') {\n    if (process.env.NODE_ENV !== 'production') {\n      warn((\"Invalid Component definition: \" + (String(Ctor))), context);\n    }\n    return\n  }\n\n  // async component\n  var asyncFactory;\n  if (isUndef(Ctor.cid)) {\n    asyncFactory = Ctor;\n    Ctor = resolveAsyncComponent(asyncFactory, baseCtor);\n    if (Ctor === undefined) {\n      // return a placeholder node for async component, which is rendered\n      // as a comment node but preserves all the raw information for the node.\n      // the information will be used for async server-rendering and hydration.\n      return createAsyncPlaceholder(\n        asyncFactory,\n        data,\n        context,\n        children,\n        tag\n      )\n    }\n  }\n\n  data = data || {};\n\n  // resolve constructor options in case global mixins are applied after\n  // component constructor creation\n  resolveConstructorOptions(Ctor);\n\n  // transform component v-model data into props & events\n  if (isDef(data.model)) {\n    transformModel(Ctor.options, data);\n  }\n\n  // extract props\n  var propsData = extractPropsFromVNodeData(data, Ctor, tag);\n\n  // functional component\n  if (isTrue(Ctor.options.functional)) {\n    return createFunctionalComponent(Ctor, propsData, data, context, children)\n  }\n\n  // extract listeners, since these needs to be treated as\n  // child component listeners instead of DOM listeners\n  var listeners = data.on;\n  // replace with listeners with .native modifier\n  // so it gets processed during parent component patch.\n  data.on = data.nativeOn;\n\n  if (isTrue(Ctor.options.abstract)) {\n    // abstract components do not keep anything\n    // other than props & listeners & slot\n\n    // work around flow\n    var slot = data.slot;\n    data = {};\n    if (slot) {\n      data.slot = slot;\n    }\n  }\n\n  // install component management hooks onto the placeholder node\n  installComponentHooks(data);\n\n  // return a placeholder vnode\n  var name = Ctor.options.name || tag;\n  var vnode = new VNode(\n    (\"vue-component-\" + (Ctor.cid) + (name ? (\"-\" + name) : '')),\n    data, undefined, undefined, undefined, context,\n    { Ctor: Ctor, propsData: propsData, listeners: listeners, tag: tag, children: children },\n    asyncFactory\n  );\n\n  return vnode\n}\n\nfunction createComponentInstanceForVnode (\n  // we know it's MountedComponentVNode but flow doesn't\n  vnode,\n  // activeInstance in lifecycle state\n  parent\n) {\n  var options = {\n    _isComponent: true,\n    _parentVnode: vnode,\n    parent: parent\n  };\n  // check inline-template render functions\n  var inlineTemplate = vnode.data.inlineTemplate;\n  if (isDef(inlineTemplate)) {\n    options.render = inlineTemplate.render;\n    options.staticRenderFns = inlineTemplate.staticRenderFns;\n  }\n  return new vnode.componentOptions.Ctor(options)\n}\n\nfunction installComponentHooks (data) {\n  var hooks = data.hook || (data.hook = {});\n  for (var i = 0; i < hooksToMerge.length; i++) {\n    var key = hooksToMerge[i];\n    var existing = hooks[key];\n    var toMerge = componentVNodeHooks[key];\n    if (existing !== toMerge && !(existing && existing._merged)) {\n      hooks[key] = existing ? mergeHook$1(toMerge, existing) : toMerge;\n    }\n  }\n}\n\nfunction mergeHook$1 (f1, f2) {\n  var merged = function (a, b) {\n    // flow complains about extra args which is why we use any\n    f1(a, b);\n    f2(a, b);\n  };\n  merged._merged = true;\n  return merged\n}\n\n// transform component v-model info (value and callback) into\n// prop and event handler respectively.\nfunction transformModel (options, data) {\n  var prop = (options.model && options.model.prop) || 'value';\n  var event = (options.model && options.model.event) || 'input'\n  ;(data.attrs || (data.attrs = {}))[prop] = data.model.value;\n  var on = data.on || (data.on = {});\n  var existing = on[event];\n  var callback = data.model.callback;\n  if (isDef(existing)) {\n    if (\n      Array.isArray(existing)\n        ? existing.indexOf(callback) === -1\n        : existing !== callback\n    ) {\n      on[event] = [callback].concat(existing);\n    }\n  } else {\n    on[event] = callback;\n  }\n}\n\n/*  */\n\nvar SIMPLE_NORMALIZE = 1;\nvar ALWAYS_NORMALIZE = 2;\n\n// wrapper function for providing a more flexible interface\n// without getting yelled at by flow\nfunction createElement (\n  context,\n  tag,\n  data,\n  children,\n  normalizationType,\n  alwaysNormalize\n) {\n  if (Array.isArray(data) || isPrimitive(data)) {\n    normalizationType = children;\n    children = data;\n    data = undefined;\n  }\n  if (isTrue(alwaysNormalize)) {\n    normalizationType = ALWAYS_NORMALIZE;\n  }\n  return _createElement(context, tag, data, children, normalizationType)\n}\n\nfunction _createElement (\n  context,\n  tag,\n  data,\n  children,\n  normalizationType\n) {\n  if (isDef(data) && isDef((data).__ob__)) {\n    process.env.NODE_ENV !== 'production' && warn(\n      \"Avoid using observed data object as vnode data: \" + (JSON.stringify(data)) + \"\\n\" +\n      'Always create fresh vnode data objects in each render!',\n      context\n    );\n    return createEmptyVNode()\n  }\n  // object syntax in v-bind\n  if (isDef(data) && isDef(data.is)) {\n    tag = data.is;\n  }\n  if (!tag) {\n    // in case of component :is set to falsy value\n    return createEmptyVNode()\n  }\n  // warn against non-primitive key\n  if (process.env.NODE_ENV !== 'production' &&\n    isDef(data) && isDef(data.key) && !isPrimitive(data.key)\n  ) {\n    {\n      warn(\n        'Avoid using non-primitive value as key, ' +\n        'use string/number value instead.',\n        context\n      );\n    }\n  }\n  // support single function children as default scoped slot\n  if (Array.isArray(children) &&\n    typeof children[0] === 'function'\n  ) {\n    data = data || {};\n    data.scopedSlots = { default: children[0] };\n    children.length = 0;\n  }\n  if (normalizationType === ALWAYS_NORMALIZE) {\n    children = normalizeChildren(children);\n  } else if (normalizationType === SIMPLE_NORMALIZE) {\n    children = simpleNormalizeChildren(children);\n  }\n  var vnode, ns;\n  if (typeof tag === 'string') {\n    var Ctor;\n    ns = (context.$vnode && context.$vnode.ns) || config.getTagNamespace(tag);\n    if (config.isReservedTag(tag)) {\n      // platform built-in elements\n      if (process.env.NODE_ENV !== 'production' && isDef(data) && isDef(data.nativeOn) && data.tag !== 'component') {\n        warn(\n          (\"The .native modifier for v-on is only valid on components but it was used on <\" + tag + \">.\"),\n          context\n        );\n      }\n      vnode = new VNode(\n        config.parsePlatformTagName(tag), data, children,\n        undefined, undefined, context\n      );\n    } else if ((!data || !data.pre) && isDef(Ctor = resolveAsset(context.$options, 'components', tag))) {\n      // component\n      vnode = createComponent(Ctor, data, context, children, tag);\n    } else {\n      // unknown or unlisted namespaced elements\n      // check at runtime because it may get assigned a namespace when its\n      // parent normalizes children\n      vnode = new VNode(\n        tag, data, children,\n        undefined, undefined, context\n      );\n    }\n  } else {\n    // direct component options / constructor\n    vnode = createComponent(tag, data, context, children);\n  }\n  if (Array.isArray(vnode)) {\n    return vnode\n  } else if (isDef(vnode)) {\n    if (isDef(ns)) { applyNS(vnode, ns); }\n    if (isDef(data)) { registerDeepBindings(data); }\n    return vnode\n  } else {\n    return createEmptyVNode()\n  }\n}\n\nfunction applyNS (vnode, ns, force) {\n  vnode.ns = ns;\n  if (vnode.tag === 'foreignObject') {\n    // use default namespace inside foreignObject\n    ns = undefined;\n    force = true;\n  }\n  if (isDef(vnode.children)) {\n    for (var i = 0, l = vnode.children.length; i < l; i++) {\n      var child = vnode.children[i];\n      if (isDef(child.tag) && (\n        isUndef(child.ns) || (isTrue(force) && child.tag !== 'svg'))) {\n        applyNS(child, ns, force);\n      }\n    }\n  }\n}\n\n// ref #5318\n// necessary to ensure parent re-render when deep bindings like :style and\n// :class are used on slot nodes\nfunction registerDeepBindings (data) {\n  if (isObject(data.style)) {\n    traverse(data.style);\n  }\n  if (isObject(data.class)) {\n    traverse(data.class);\n  }\n}\n\n/*  */\n\nfunction initRender (vm) {\n  vm._vnode = null; // the root of the child tree\n  vm._staticTrees = null; // v-once cached trees\n  var options = vm.$options;\n  var parentVnode = vm.$vnode = options._parentVnode; // the placeholder node in parent tree\n  var renderContext = parentVnode && parentVnode.context;\n  vm.$slots = resolveSlots(options._renderChildren, renderContext);\n  vm.$scopedSlots = emptyObject;\n  // bind the createElement fn to this instance\n  // so that we get proper render context inside it.\n  // args order: tag, data, children, normalizationType, alwaysNormalize\n  // internal version is used by render functions compiled from templates\n  vm._c = function (a, b, c, d) { return createElement(vm, a, b, c, d, false); };\n  // normalization is always applied for the public version, used in\n  // user-written render functions.\n  vm.$createElement = function (a, b, c, d) { return createElement(vm, a, b, c, d, true); };\n\n  // $attrs & $listeners are exposed for easier HOC creation.\n  // they need to be reactive so that HOCs using them are always updated\n  var parentData = parentVnode && parentVnode.data;\n\n  /* istanbul ignore else */\n  if (process.env.NODE_ENV !== 'production') {\n    defineReactive$$1(vm, '$attrs', parentData && parentData.attrs || emptyObject, function () {\n      !isUpdatingChildComponent && warn(\"$attrs is readonly.\", vm);\n    }, true);\n    defineReactive$$1(vm, '$listeners', options._parentListeners || emptyObject, function () {\n      !isUpdatingChildComponent && warn(\"$listeners is readonly.\", vm);\n    }, true);\n  } else {\n    defineReactive$$1(vm, '$attrs', parentData && parentData.attrs || emptyObject, null, true);\n    defineReactive$$1(vm, '$listeners', options._parentListeners || emptyObject, null, true);\n  }\n}\n\nvar currentRenderingInstance = null;\n\nfunction renderMixin (Vue) {\n  // install runtime convenience helpers\n  installRenderHelpers(Vue.prototype);\n\n  Vue.prototype.$nextTick = function (fn) {\n    return nextTick(fn, this)\n  };\n\n  Vue.prototype._render = function () {\n    var vm = this;\n    var ref = vm.$options;\n    var render = ref.render;\n    var _parentVnode = ref._parentVnode;\n\n    if (_parentVnode) {\n      vm.$scopedSlots = normalizeScopedSlots(\n        _parentVnode.data.scopedSlots,\n        vm.$slots,\n        vm.$scopedSlots\n      );\n    }\n\n    // set parent vnode. this allows render functions to have access\n    // to the data on the placeholder node.\n    vm.$vnode = _parentVnode;\n    // render self\n    var vnode;\n    try {\n      // There's no need to maintain a stack because all render fns are called\n      // separately from one another. Nested component's render fns are called\n      // when parent component is patched.\n      currentRenderingInstance = vm;\n      vnode = render.call(vm._renderProxy, vm.$createElement);\n    } catch (e) {\n      handleError(e, vm, \"render\");\n      // return error render result,\n      // or previous vnode to prevent render error causing blank component\n      /* istanbul ignore else */\n      if (process.env.NODE_ENV !== 'production' && vm.$options.renderError) {\n        try {\n          vnode = vm.$options.renderError.call(vm._renderProxy, vm.$createElement, e);\n        } catch (e) {\n          handleError(e, vm, \"renderError\");\n          vnode = vm._vnode;\n        }\n      } else {\n        vnode = vm._vnode;\n      }\n    } finally {\n      currentRenderingInstance = null;\n    }\n    // if the returned array contains only a single node, allow it\n    if (Array.isArray(vnode) && vnode.length === 1) {\n      vnode = vnode[0];\n    }\n    // return empty vnode in case the render function errored out\n    if (!(vnode instanceof VNode)) {\n      if (process.env.NODE_ENV !== 'production' && Array.isArray(vnode)) {\n        warn(\n          'Multiple root nodes returned from render function. Render function ' +\n          'should return a single root node.',\n          vm\n        );\n      }\n      vnode = createEmptyVNode();\n    }\n    // set parent\n    vnode.parent = _parentVnode;\n    return vnode\n  };\n}\n\n/*  */\n\nfunction ensureCtor (comp, base) {\n  if (\n    comp.__esModule ||\n    (hasSymbol && comp[Symbol.toStringTag] === 'Module')\n  ) {\n    comp = comp.default;\n  }\n  return isObject(comp)\n    ? base.extend(comp)\n    : comp\n}\n\nfunction createAsyncPlaceholder (\n  factory,\n  data,\n  context,\n  children,\n  tag\n) {\n  var node = createEmptyVNode();\n  node.asyncFactory = factory;\n  node.asyncMeta = { data: data, context: context, children: children, tag: tag };\n  return node\n}\n\nfunction resolveAsyncComponent (\n  factory,\n  baseCtor\n) {\n  if (isTrue(factory.error) && isDef(factory.errorComp)) {\n    return factory.errorComp\n  }\n\n  if (isDef(factory.resolved)) {\n    return factory.resolved\n  }\n\n  var owner = currentRenderingInstance;\n  if (owner && isDef(factory.owners) && factory.owners.indexOf(owner) === -1) {\n    // already pending\n    factory.owners.push(owner);\n  }\n\n  if (isTrue(factory.loading) && isDef(factory.loadingComp)) {\n    return factory.loadingComp\n  }\n\n  if (owner && !isDef(factory.owners)) {\n    var owners = factory.owners = [owner];\n    var sync = true;\n    var timerLoading = null;\n    var timerTimeout = null\n\n    ;(owner).$on('hook:destroyed', function () { return remove(owners, owner); });\n\n    var forceRender = function (renderCompleted) {\n      for (var i = 0, l = owners.length; i < l; i++) {\n        (owners[i]).$forceUpdate();\n      }\n\n      if (renderCompleted) {\n        owners.length = 0;\n        if (timerLoading !== null) {\n          clearTimeout(timerLoading);\n          timerLoading = null;\n        }\n        if (timerTimeout !== null) {\n          clearTimeout(timerTimeout);\n          timerTimeout = null;\n        }\n      }\n    };\n\n    var resolve = once(function (res) {\n      // cache resolved\n      factory.resolved = ensureCtor(res, baseCtor);\n      // invoke callbacks only if this is not a synchronous resolve\n      // (async resolves are shimmed as synchronous during SSR)\n      if (!sync) {\n        forceRender(true);\n      } else {\n        owners.length = 0;\n      }\n    });\n\n    var reject = once(function (reason) {\n      process.env.NODE_ENV !== 'production' && warn(\n        \"Failed to resolve async component: \" + (String(factory)) +\n        (reason ? (\"\\nReason: \" + reason) : '')\n      );\n      if (isDef(factory.errorComp)) {\n        factory.error = true;\n        forceRender(true);\n      }\n    });\n\n    var res = factory(resolve, reject);\n\n    if (isObject(res)) {\n      if (isPromise(res)) {\n        // () => Promise\n        if (isUndef(factory.resolved)) {\n          res.then(resolve, reject);\n        }\n      } else if (isPromise(res.component)) {\n        res.component.then(resolve, reject);\n\n        if (isDef(res.error)) {\n          factory.errorComp = ensureCtor(res.error, baseCtor);\n        }\n\n        if (isDef(res.loading)) {\n          factory.loadingComp = ensureCtor(res.loading, baseCtor);\n          if (res.delay === 0) {\n            factory.loading = true;\n          } else {\n            timerLoading = setTimeout(function () {\n              timerLoading = null;\n              if (isUndef(factory.resolved) && isUndef(factory.error)) {\n                factory.loading = true;\n                forceRender(false);\n              }\n            }, res.delay || 200);\n          }\n        }\n\n        if (isDef(res.timeout)) {\n          timerTimeout = setTimeout(function () {\n            timerTimeout = null;\n            if (isUndef(factory.resolved)) {\n              reject(\n                process.env.NODE_ENV !== 'production'\n                  ? (\"timeout (\" + (res.timeout) + \"ms)\")\n                  : null\n              );\n            }\n          }, res.timeout);\n        }\n      }\n    }\n\n    sync = false;\n    // return in case resolved synchronously\n    return factory.loading\n      ? factory.loadingComp\n      : factory.resolved\n  }\n}\n\n/*  */\n\nfunction getFirstComponentChild (children) {\n  if (Array.isArray(children)) {\n    for (var i = 0; i < children.length; i++) {\n      var c = children[i];\n      if (isDef(c) && (isDef(c.componentOptions) || isAsyncPlaceholder(c))) {\n        return c\n      }\n    }\n  }\n}\n\n/*  */\n\n/*  */\n\nfunction initEvents (vm) {\n  vm._events = Object.create(null);\n  vm._hasHookEvent = false;\n  // init parent attached events\n  var listeners = vm.$options._parentListeners;\n  if (listeners) {\n    updateComponentListeners(vm, listeners);\n  }\n}\n\nvar target;\n\nfunction add (event, fn) {\n  target.$on(event, fn);\n}\n\nfunction remove$1 (event, fn) {\n  target.$off(event, fn);\n}\n\nfunction createOnceHandler (event, fn) {\n  var _target = target;\n  return function onceHandler () {\n    var res = fn.apply(null, arguments);\n    if (res !== null) {\n      _target.$off(event, onceHandler);\n    }\n  }\n}\n\nfunction updateComponentListeners (\n  vm,\n  listeners,\n  oldListeners\n) {\n  target = vm;\n  updateListeners(listeners, oldListeners || {}, add, remove$1, createOnceHandler, vm);\n  target = undefined;\n}\n\nfunction eventsMixin (Vue) {\n  var hookRE = /^hook:/;\n  Vue.prototype.$on = function (event, fn) {\n    var vm = this;\n    if (Array.isArray(event)) {\n      for (var i = 0, l = event.length; i < l; i++) {\n        vm.$on(event[i], fn);\n      }\n    } else {\n      (vm._events[event] || (vm._events[event] = [])).push(fn);\n      // optimize hook:event cost by using a boolean flag marked at registration\n      // instead of a hash lookup\n      if (hookRE.test(event)) {\n        vm._hasHookEvent = true;\n      }\n    }\n    return vm\n  };\n\n  Vue.prototype.$once = function (event, fn) {\n    var vm = this;\n    function on () {\n      vm.$off(event, on);\n      fn.apply(vm, arguments);\n    }\n    on.fn = fn;\n    vm.$on(event, on);\n    return vm\n  };\n\n  Vue.prototype.$off = function (event, fn) {\n    var vm = this;\n    // all\n    if (!arguments.length) {\n      vm._events = Object.create(null);\n      return vm\n    }\n    // array of events\n    if (Array.isArray(event)) {\n      for (var i$1 = 0, l = event.length; i$1 < l; i$1++) {\n        vm.$off(event[i$1], fn);\n      }\n      return vm\n    }\n    // specific event\n    var cbs = vm._events[event];\n    if (!cbs) {\n      return vm\n    }\n    if (!fn) {\n      vm._events[event] = null;\n      return vm\n    }\n    // specific handler\n    var cb;\n    var i = cbs.length;\n    while (i--) {\n      cb = cbs[i];\n      if (cb === fn || cb.fn === fn) {\n        cbs.splice(i, 1);\n        break\n      }\n    }\n    return vm\n  };\n\n  Vue.prototype.$emit = function (event) {\n    var vm = this;\n    if (process.env.NODE_ENV !== 'production') {\n      var lowerCaseEvent = event.toLowerCase();\n      if (lowerCaseEvent !== event && vm._events[lowerCaseEvent]) {\n        tip(\n          \"Event \\\"\" + lowerCaseEvent + \"\\\" is emitted in component \" +\n          (formatComponentName(vm)) + \" but the handler is registered for \\\"\" + event + \"\\\". \" +\n          \"Note that HTML attributes are case-insensitive and you cannot use \" +\n          \"v-on to listen to camelCase events when using in-DOM templates. \" +\n          \"You should probably use \\\"\" + (hyphenate(event)) + \"\\\" instead of \\\"\" + event + \"\\\".\"\n        );\n      }\n    }\n    var cbs = vm._events[event];\n    if (cbs) {\n      cbs = cbs.length > 1 ? toArray(cbs) : cbs;\n      var args = toArray(arguments, 1);\n      var info = \"event handler for \\\"\" + event + \"\\\"\";\n      for (var i = 0, l = cbs.length; i < l; i++) {\n        invokeWithErrorHandling(cbs[i], vm, args, vm, info);\n      }\n    }\n    return vm\n  };\n}\n\n/*  */\n\nvar activeInstance = null;\nvar isUpdatingChildComponent = false;\n\nfunction setActiveInstance(vm) {\n  var prevActiveInstance = activeInstance;\n  activeInstance = vm;\n  return function () {\n    activeInstance = prevActiveInstance;\n  }\n}\n\nfunction initLifecycle (vm) {\n  var options = vm.$options;\n\n  // locate first non-abstract parent\n  var parent = options.parent;\n  if (parent && !options.abstract) {\n    while (parent.$options.abstract && parent.$parent) {\n      parent = parent.$parent;\n    }\n    parent.$children.push(vm);\n  }\n\n  vm.$parent = parent;\n  vm.$root = parent ? parent.$root : vm;\n\n  vm.$children = [];\n  vm.$refs = {};\n\n  vm._watcher = null;\n  vm._inactive = null;\n  vm._directInactive = false;\n  vm._isMounted = false;\n  vm._isDestroyed = false;\n  vm._isBeingDestroyed = false;\n}\n\nfunction lifecycleMixin (Vue) {\n  Vue.prototype._update = function (vnode, hydrating) {\n    var vm = this;\n    var prevEl = vm.$el;\n    var prevVnode = vm._vnode;\n    var restoreActiveInstance = setActiveInstance(vm);\n    vm._vnode = vnode;\n    // Vue.prototype.__patch__ is injected in entry points\n    // based on the rendering backend used.\n    if (!prevVnode) {\n      // initial render\n      vm.$el = vm.__patch__(vm.$el, vnode, hydrating, false /* removeOnly */);\n    } else {\n      // updates\n      vm.$el = vm.__patch__(prevVnode, vnode);\n    }\n    restoreActiveInstance();\n    // update __vue__ reference\n    if (prevEl) {\n      prevEl.__vue__ = null;\n    }\n    if (vm.$el) {\n      vm.$el.__vue__ = vm;\n    }\n    // if parent is an HOC, update its $el as well\n    if (vm.$vnode && vm.$parent && vm.$vnode === vm.$parent._vnode) {\n      vm.$parent.$el = vm.$el;\n    }\n    // updated hook is called by the scheduler to ensure that children are\n    // updated in a parent's updated hook.\n  };\n\n  Vue.prototype.$forceUpdate = function () {\n    var vm = this;\n    if (vm._watcher) {\n      vm._watcher.update();\n    }\n  };\n\n  Vue.prototype.$destroy = function () {\n    var vm = this;\n    if (vm._isBeingDestroyed) {\n      return\n    }\n    callHook(vm, 'beforeDestroy');\n    vm._isBeingDestroyed = true;\n    // remove self from parent\n    var parent = vm.$parent;\n    if (parent && !parent._isBeingDestroyed && !vm.$options.abstract) {\n      remove(parent.$children, vm);\n    }\n    // teardown watchers\n    if (vm._watcher) {\n      vm._watcher.teardown();\n    }\n    var i = vm._watchers.length;\n    while (i--) {\n      vm._watchers[i].teardown();\n    }\n    // remove reference from data ob\n    // frozen object may not have observer.\n    if (vm._data.__ob__) {\n      vm._data.__ob__.vmCount--;\n    }\n    // call the last hook...\n    vm._isDestroyed = true;\n    // invoke destroy hooks on current rendered tree\n    vm.__patch__(vm._vnode, null);\n    // fire destroyed hook\n    callHook(vm, 'destroyed');\n    // turn off all instance listeners.\n    vm.$off();\n    // remove __vue__ reference\n    if (vm.$el) {\n      vm.$el.__vue__ = null;\n    }\n    // release circular reference (#6759)\n    if (vm.$vnode) {\n      vm.$vnode.parent = null;\n    }\n  };\n}\n\nfunction mountComponent (\n  vm,\n  el,\n  hydrating\n) {\n  vm.$el = el;\n  if (!vm.$options.render) {\n    vm.$options.render = createEmptyVNode;\n    if (process.env.NODE_ENV !== 'production') {\n      /* istanbul ignore if */\n      if ((vm.$options.template && vm.$options.template.charAt(0) !== '#') ||\n        vm.$options.el || el) {\n        warn(\n          'You are using the runtime-only build of Vue where the template ' +\n          'compiler is not available. Either pre-compile the templates into ' +\n          'render functions, or use the compiler-included build.',\n          vm\n        );\n      } else {\n        warn(\n          'Failed to mount component: template or render function not defined.',\n          vm\n        );\n      }\n    }\n  }\n  callHook(vm, 'beforeMount');\n\n  var updateComponent;\n  /* istanbul ignore if */\n  if (process.env.NODE_ENV !== 'production' && config.performance && mark) {\n    updateComponent = function () {\n      var name = vm._name;\n      var id = vm._uid;\n      var startTag = \"vue-perf-start:\" + id;\n      var endTag = \"vue-perf-end:\" + id;\n\n      mark(startTag);\n      var vnode = vm._render();\n      mark(endTag);\n      measure((\"vue \" + name + \" render\"), startTag, endTag);\n\n      mark(startTag);\n      vm._update(vnode, hydrating);\n      mark(endTag);\n      measure((\"vue \" + name + \" patch\"), startTag, endTag);\n    };\n  } else {\n    updateComponent = function () {\n      vm._update(vm._render(), hydrating);\n    };\n  }\n\n  // we set this to vm._watcher inside the watcher's constructor\n  // since the watcher's initial patch may call $forceUpdate (e.g. inside child\n  // component's mounted hook), which relies on vm._watcher being already defined\n  new Watcher(vm, updateComponent, noop, {\n    before: function before () {\n      if (vm._isMounted && !vm._isDestroyed) {\n        callHook(vm, 'beforeUpdate');\n      }\n    }\n  }, true /* isRenderWatcher */);\n  hydrating = false;\n\n  // manually mounted instance, call mounted on self\n  // mounted is called for render-created child components in its inserted hook\n  if (vm.$vnode == null) {\n    vm._isMounted = true;\n    callHook(vm, 'mounted');\n  }\n  return vm\n}\n\nfunction updateChildComponent (\n  vm,\n  propsData,\n  listeners,\n  parentVnode,\n  renderChildren\n) {\n  if (process.env.NODE_ENV !== 'production') {\n    isUpdatingChildComponent = true;\n  }\n\n  // determine whether component has slot children\n  // we need to do this before overwriting $options._renderChildren.\n\n  // check if there are dynamic scopedSlots (hand-written or compiled but with\n  // dynamic slot names). Static scoped slots compiled from template has the\n  // \"$stable\" marker.\n  var newScopedSlots = parentVnode.data.scopedSlots;\n  var oldScopedSlots = vm.$scopedSlots;\n  var hasDynamicScopedSlot = !!(\n    (newScopedSlots && !newScopedSlots.$stable) ||\n    (oldScopedSlots !== emptyObject && !oldScopedSlots.$stable) ||\n    (newScopedSlots && vm.$scopedSlots.$key !== newScopedSlots.$key) ||\n    (!newScopedSlots && vm.$scopedSlots.$key)\n  );\n\n  // Any static slot children from the parent may have changed during parent's\n  // update. Dynamic scoped slots may also have changed. In such cases, a forced\n  // update is necessary to ensure correctness.\n  var needsForceUpdate = !!(\n    renderChildren ||               // has new static slots\n    vm.$options._renderChildren ||  // has old static slots\n    hasDynamicScopedSlot\n  );\n\n  vm.$options._parentVnode = parentVnode;\n  vm.$vnode = parentVnode; // update vm's placeholder node without re-render\n\n  if (vm._vnode) { // update child tree's parent\n    vm._vnode.parent = parentVnode;\n  }\n  vm.$options._renderChildren = renderChildren;\n\n  // update $attrs and $listeners hash\n  // these are also reactive so they may trigger child update if the child\n  // used them during render\n  vm.$attrs = parentVnode.data.attrs || emptyObject;\n  vm.$listeners = listeners || emptyObject;\n\n  // update props\n  if (propsData && vm.$options.props) {\n    toggleObserving(false);\n    var props = vm._props;\n    var propKeys = vm.$options._propKeys || [];\n    for (var i = 0; i < propKeys.length; i++) {\n      var key = propKeys[i];\n      var propOptions = vm.$options.props; // wtf flow?\n      props[key] = validateProp(key, propOptions, propsData, vm);\n    }\n    toggleObserving(true);\n    // keep a copy of raw propsData\n    vm.$options.propsData = propsData;\n  }\n\n  // update listeners\n  listeners = listeners || emptyObject;\n  var oldListeners = vm.$options._parentListeners;\n  vm.$options._parentListeners = listeners;\n  updateComponentListeners(vm, listeners, oldListeners);\n\n  // resolve slots + force update if has children\n  if (needsForceUpdate) {\n    vm.$slots = resolveSlots(renderChildren, parentVnode.context);\n    vm.$forceUpdate();\n  }\n\n  if (process.env.NODE_ENV !== 'production') {\n    isUpdatingChildComponent = false;\n  }\n}\n\nfunction isInInactiveTree (vm) {\n  while (vm && (vm = vm.$parent)) {\n    if (vm._inactive) { return true }\n  }\n  return false\n}\n\nfunction activateChildComponent (vm, direct) {\n  if (direct) {\n    vm._directInactive = false;\n    if (isInInactiveTree(vm)) {\n      return\n    }\n  } else if (vm._directInactive) {\n    return\n  }\n  if (vm._inactive || vm._inactive === null) {\n    vm._inactive = false;\n    for (var i = 0; i < vm.$children.length; i++) {\n      activateChildComponent(vm.$children[i]);\n    }\n    callHook(vm, 'activated');\n  }\n}\n\nfunction deactivateChildComponent (vm, direct) {\n  if (direct) {\n    vm._directInactive = true;\n    if (isInInactiveTree(vm)) {\n      return\n    }\n  }\n  if (!vm._inactive) {\n    vm._inactive = true;\n    for (var i = 0; i < vm.$children.length; i++) {\n      deactivateChildComponent(vm.$children[i]);\n    }\n    callHook(vm, 'deactivated');\n  }\n}\n\nfunction callHook (vm, hook) {\n  // #7573 disable dep collection when invoking lifecycle hooks\n  pushTarget();\n  var handlers = vm.$options[hook];\n  var info = hook + \" hook\";\n  if (handlers) {\n    for (var i = 0, j = handlers.length; i < j; i++) {\n      invokeWithErrorHandling(handlers[i], vm, null, vm, info);\n    }\n  }\n  if (vm._hasHookEvent) {\n    vm.$emit('hook:' + hook);\n  }\n  popTarget();\n}\n\n/*  */\n\nvar MAX_UPDATE_COUNT = 100;\n\nvar queue = [];\nvar activatedChildren = [];\nvar has = {};\nvar circular = {};\nvar waiting = false;\nvar flushing = false;\nvar index = 0;\n\n/**\n * Reset the scheduler's state.\n */\nfunction resetSchedulerState () {\n  index = queue.length = activatedChildren.length = 0;\n  has = {};\n  if (process.env.NODE_ENV !== 'production') {\n    circular = {};\n  }\n  waiting = flushing = false;\n}\n\n// Async edge case #6566 requires saving the timestamp when event listeners are\n// attached. However, calling performance.now() has a perf overhead especially\n// if the page has thousands of event listeners. Instead, we take a timestamp\n// every time the scheduler flushes and use that for all event listeners\n// attached during that flush.\nvar currentFlushTimestamp = 0;\n\n// Async edge case fix requires storing an event listener's attach timestamp.\nvar getNow = Date.now;\n\n// Determine what event timestamp the browser is using. Annoyingly, the\n// timestamp can either be hi-res (relative to page load) or low-res\n// (relative to UNIX epoch), so in order to compare time we have to use the\n// same timestamp type when saving the flush timestamp.\n// All IE versions use low-res event timestamps, and have problematic clock\n// implementations (#9632)\nif (inBrowser && !isIE) {\n  var performance = window.performance;\n  if (\n    performance &&\n    typeof performance.now === 'function' &&\n    getNow() > document.createEvent('Event').timeStamp\n  ) {\n    // if the event timestamp, although evaluated AFTER the Date.now(), is\n    // smaller than it, it means the event is using a hi-res timestamp,\n    // and we need to use the hi-res version for event listener timestamps as\n    // well.\n    getNow = function () { return performance.now(); };\n  }\n}\n\n/**\n * Flush both queues and run the watchers.\n */\nfunction flushSchedulerQueue () {\n  currentFlushTimestamp = getNow();\n  flushing = true;\n  var watcher, id;\n\n  // Sort queue before flush.\n  // This ensures that:\n  // 1. Components are updated from parent to child. (because parent is always\n  //    created before the child)\n  // 2. A component's user watchers are run before its render watcher (because\n  //    user watchers are created before the render watcher)\n  // 3. If a component is destroyed during a parent component's watcher run,\n  //    its watchers can be skipped.\n  queue.sort(function (a, b) { return a.id - b.id; });\n\n  // do not cache length because more watchers might be pushed\n  // as we run existing watchers\n  for (index = 0; index < queue.length; index++) {\n    watcher = queue[index];\n    if (watcher.before) {\n      watcher.before();\n    }\n    id = watcher.id;\n    has[id] = null;\n    watcher.run();\n    // in dev build, check and stop circular updates.\n    if (process.env.NODE_ENV !== 'production' && has[id] != null) {\n      circular[id] = (circular[id] || 0) + 1;\n      if (circular[id] > MAX_UPDATE_COUNT) {\n        warn(\n          'You may have an infinite update loop ' + (\n            watcher.user\n              ? (\"in watcher with expression \\\"\" + (watcher.expression) + \"\\\"\")\n              : \"in a component render function.\"\n          ),\n          watcher.vm\n        );\n        break\n      }\n    }\n  }\n\n  // keep copies of post queues before resetting state\n  var activatedQueue = activatedChildren.slice();\n  var updatedQueue = queue.slice();\n\n  resetSchedulerState();\n\n  // call component updated and activated hooks\n  callActivatedHooks(activatedQueue);\n  callUpdatedHooks(updatedQueue);\n\n  // devtool hook\n  /* istanbul ignore if */\n  if (devtools && config.devtools) {\n    devtools.emit('flush');\n  }\n}\n\nfunction callUpdatedHooks (queue) {\n  var i = queue.length;\n  while (i--) {\n    var watcher = queue[i];\n    var vm = watcher.vm;\n    if (vm._watcher === watcher && vm._isMounted && !vm._isDestroyed) {\n      callHook(vm, 'updated');\n    }\n  }\n}\n\n/**\n * Queue a kept-alive component that was activated during patch.\n * The queue will be processed after the entire tree has been patched.\n */\nfunction queueActivatedComponent (vm) {\n  // setting _inactive to false here so that a render function can\n  // rely on checking whether it's in an inactive tree (e.g. router-view)\n  vm._inactive = false;\n  activatedChildren.push(vm);\n}\n\nfunction callActivatedHooks (queue) {\n  for (var i = 0; i < queue.length; i++) {\n    queue[i]._inactive = true;\n    activateChildComponent(queue[i], true /* true */);\n  }\n}\n\n/**\n * Push a watcher into the watcher queue.\n * Jobs with duplicate IDs will be skipped unless it's\n * pushed when the queue is being flushed.\n */\nfunction queueWatcher (watcher) {\n  var id = watcher.id;\n  if (has[id] == null) {\n    has[id] = true;\n    if (!flushing) {\n      queue.push(watcher);\n    } else {\n      // if already flushing, splice the watcher based on its id\n      // if already past its id, it will be run next immediately.\n      var i = queue.length - 1;\n      while (i > index && queue[i].id > watcher.id) {\n        i--;\n      }\n      queue.splice(i + 1, 0, watcher);\n    }\n    // queue the flush\n    if (!waiting) {\n      waiting = true;\n\n      if (process.env.NODE_ENV !== 'production' && !config.async) {\n        flushSchedulerQueue();\n        return\n      }\n      nextTick(flushSchedulerQueue);\n    }\n  }\n}\n\n/*  */\n\n\n\nvar uid$2 = 0;\n\n/**\n * A watcher parses an expression, collects dependencies,\n * and fires callback when the expression value changes.\n * This is used for both the $watch() api and directives.\n */\nvar Watcher = function Watcher (\n  vm,\n  expOrFn,\n  cb,\n  options,\n  isRenderWatcher\n) {\n  this.vm = vm;\n  if (isRenderWatcher) {\n    vm._watcher = this;\n  }\n  vm._watchers.push(this);\n  // options\n  if (options) {\n    this.deep = !!options.deep;\n    this.user = !!options.user;\n    this.lazy = !!options.lazy;\n    this.sync = !!options.sync;\n    this.before = options.before;\n  } else {\n    this.deep = this.user = this.lazy = this.sync = false;\n  }\n  this.cb = cb;\n  this.id = ++uid$2; // uid for batching\n  this.active = true;\n  this.dirty = this.lazy; // for lazy watchers\n  this.deps = [];\n  this.newDeps = [];\n  this.depIds = new _Set();\n  this.newDepIds = new _Set();\n  this.expression = process.env.NODE_ENV !== 'production'\n    ? expOrFn.toString()\n    : '';\n  // parse expression for getter\n  if (typeof expOrFn === 'function') {\n    this.getter = expOrFn;\n  } else {\n    this.getter = parsePath(expOrFn);\n    if (!this.getter) {\n      this.getter = noop;\n      process.env.NODE_ENV !== 'production' && warn(\n        \"Failed watching path: \\\"\" + expOrFn + \"\\\" \" +\n        'Watcher only accepts simple dot-delimited paths. ' +\n        'For full control, use a function instead.',\n        vm\n      );\n    }\n  }\n  this.value = this.lazy\n    ? undefined\n    : this.get();\n};\n\n/**\n * Evaluate the getter, and re-collect dependencies.\n */\nWatcher.prototype.get = function get () {\n  pushTarget(this);\n  var value;\n  var vm = this.vm;\n  try {\n    value = this.getter.call(vm, vm);\n  } catch (e) {\n    if (this.user) {\n      handleError(e, vm, (\"getter for watcher \\\"\" + (this.expression) + \"\\\"\"));\n    } else {\n      throw e\n    }\n  } finally {\n    // \"touch\" every property so they are all tracked as\n    // dependencies for deep watching\n    if (this.deep) {\n      traverse(value);\n    }\n    popTarget();\n    this.cleanupDeps();\n  }\n  return value\n};\n\n/**\n * Add a dependency to this directive.\n */\nWatcher.prototype.addDep = function addDep (dep) {\n  var id = dep.id;\n  if (!this.newDepIds.has(id)) {\n    this.newDepIds.add(id);\n    this.newDeps.push(dep);\n    if (!this.depIds.has(id)) {\n      dep.addSub(this);\n    }\n  }\n};\n\n/**\n * Clean up for dependency collection.\n */\nWatcher.prototype.cleanupDeps = function cleanupDeps () {\n  var i = this.deps.length;\n  while (i--) {\n    var dep = this.deps[i];\n    if (!this.newDepIds.has(dep.id)) {\n      dep.removeSub(this);\n    }\n  }\n  var tmp = this.depIds;\n  this.depIds = this.newDepIds;\n  this.newDepIds = tmp;\n  this.newDepIds.clear();\n  tmp = this.deps;\n  this.deps = this.newDeps;\n  this.newDeps = tmp;\n  this.newDeps.length = 0;\n};\n\n/**\n * Subscriber interface.\n * Will be called when a dependency changes.\n */\nWatcher.prototype.update = function update () {\n  /* istanbul ignore else */\n  if (this.lazy) {\n    this.dirty = true;\n  } else if (this.sync) {\n    this.run();\n  } else {\n    queueWatcher(this);\n  }\n};\n\n/**\n * Scheduler job interface.\n * Will be called by the scheduler.\n */\nWatcher.prototype.run = function run () {\n  if (this.active) {\n    var value = this.get();\n    if (\n      value !== this.value ||\n      // Deep watchers and watchers on Object/Arrays should fire even\n      // when the value is the same, because the value may\n      // have mutated.\n      isObject(value) ||\n      this.deep\n    ) {\n      // set new value\n      var oldValue = this.value;\n      this.value = value;\n      if (this.user) {\n        var info = \"callback for watcher \\\"\" + (this.expression) + \"\\\"\";\n        invokeWithErrorHandling(this.cb, this.vm, [value, oldValue], this.vm, info);\n      } else {\n        this.cb.call(this.vm, value, oldValue);\n      }\n    }\n  }\n};\n\n/**\n * Evaluate the value of the watcher.\n * This only gets called for lazy watchers.\n */\nWatcher.prototype.evaluate = function evaluate () {\n  this.value = this.get();\n  this.dirty = false;\n};\n\n/**\n * Depend on all deps collected by this watcher.\n */\nWatcher.prototype.depend = function depend () {\n  var i = this.deps.length;\n  while (i--) {\n    this.deps[i].depend();\n  }\n};\n\n/**\n * Remove self from all dependencies' subscriber list.\n */\nWatcher.prototype.teardown = function teardown () {\n  if (this.active) {\n    // remove self from vm's watcher list\n    // this is a somewhat expensive operation so we skip it\n    // if the vm is being destroyed.\n    if (!this.vm._isBeingDestroyed) {\n      remove(this.vm._watchers, this);\n    }\n    var i = this.deps.length;\n    while (i--) {\n      this.deps[i].removeSub(this);\n    }\n    this.active = false;\n  }\n};\n\n/*  */\n\nvar sharedPropertyDefinition = {\n  enumerable: true,\n  configurable: true,\n  get: noop,\n  set: noop\n};\n\nfunction proxy (target, sourceKey, key) {\n  sharedPropertyDefinition.get = function proxyGetter () {\n    return this[sourceKey][key]\n  };\n  sharedPropertyDefinition.set = function proxySetter (val) {\n    this[sourceKey][key] = val;\n  };\n  Object.defineProperty(target, key, sharedPropertyDefinition);\n}\n\nfunction initState (vm) {\n  vm._watchers = [];\n  var opts = vm.$options;\n  if (opts.props) { initProps(vm, opts.props); }\n  if (opts.methods) { initMethods(vm, opts.methods); }\n  if (opts.data) {\n    initData(vm);\n  } else {\n    observe(vm._data = {}, true /* asRootData */);\n  }\n  if (opts.computed) { initComputed(vm, opts.computed); }\n  if (opts.watch && opts.watch !== nativeWatch) {\n    initWatch(vm, opts.watch);\n  }\n}\n\nfunction initProps (vm, propsOptions) {\n  var propsData = vm.$options.propsData || {};\n  var props = vm._props = {};\n  // cache prop keys so that future props updates can iterate using Array\n  // instead of dynamic object key enumeration.\n  var keys = vm.$options._propKeys = [];\n  var isRoot = !vm.$parent;\n  // root instance props should be converted\n  if (!isRoot) {\n    toggleObserving(false);\n  }\n  var loop = function ( key ) {\n    keys.push(key);\n    var value = validateProp(key, propsOptions, propsData, vm);\n    /* istanbul ignore else */\n    if (process.env.NODE_ENV !== 'production') {\n      var hyphenatedKey = hyphenate(key);\n      if (isReservedAttribute(hyphenatedKey) ||\n          config.isReservedAttr(hyphenatedKey)) {\n        warn(\n          (\"\\\"\" + hyphenatedKey + \"\\\" is a reserved attribute and cannot be used as component prop.\"),\n          vm\n        );\n      }\n      defineReactive$$1(props, key, value, function () {\n        if (!isRoot && !isUpdatingChildComponent) {\n          warn(\n            \"Avoid mutating a prop directly since the value will be \" +\n            \"overwritten whenever the parent component re-renders. \" +\n            \"Instead, use a data or computed property based on the prop's \" +\n            \"value. Prop being mutated: \\\"\" + key + \"\\\"\",\n            vm\n          );\n        }\n      });\n    } else {\n      defineReactive$$1(props, key, value);\n    }\n    // static props are already proxied on the component's prototype\n    // during Vue.extend(). We only need to proxy props defined at\n    // instantiation here.\n    if (!(key in vm)) {\n      proxy(vm, \"_props\", key);\n    }\n  };\n\n  for (var key in propsOptions) loop( key );\n  toggleObserving(true);\n}\n\nfunction initData (vm) {\n  var data = vm.$options.data;\n  data = vm._data = typeof data === 'function'\n    ? getData(data, vm)\n    : data || {};\n  if (!isPlainObject(data)) {\n    data = {};\n    process.env.NODE_ENV !== 'production' && warn(\n      'data functions should return an object:\\n' +\n      'https://vuejs.org/v2/guide/components.html#data-Must-Be-a-Function',\n      vm\n    );\n  }\n  // proxy data on instance\n  var keys = Object.keys(data);\n  var props = vm.$options.props;\n  var methods = vm.$options.methods;\n  var i = keys.length;\n  while (i--) {\n    var key = keys[i];\n    if (process.env.NODE_ENV !== 'production') {\n      if (methods && hasOwn(methods, key)) {\n        warn(\n          (\"Method \\\"\" + key + \"\\\" has already been defined as a data property.\"),\n          vm\n        );\n      }\n    }\n    if (props && hasOwn(props, key)) {\n      process.env.NODE_ENV !== 'production' && warn(\n        \"The data property \\\"\" + key + \"\\\" is already declared as a prop. \" +\n        \"Use prop default value instead.\",\n        vm\n      );\n    } else if (!isReserved(key)) {\n      proxy(vm, \"_data\", key);\n    }\n  }\n  // observe data\n  observe(data, true /* asRootData */);\n}\n\nfunction getData (data, vm) {\n  // #7573 disable dep collection when invoking data getters\n  pushTarget();\n  try {\n    return data.call(vm, vm)\n  } catch (e) {\n    handleError(e, vm, \"data()\");\n    return {}\n  } finally {\n    popTarget();\n  }\n}\n\nvar computedWatcherOptions = { lazy: true };\n\nfunction initComputed (vm, computed) {\n  // $flow-disable-line\n  var watchers = vm._computedWatchers = Object.create(null);\n  // computed properties are just getters during SSR\n  var isSSR = isServerRendering();\n\n  for (var key in computed) {\n    var userDef = computed[key];\n    var getter = typeof userDef === 'function' ? userDef : userDef.get;\n    if (process.env.NODE_ENV !== 'production' && getter == null) {\n      warn(\n        (\"Getter is missing for computed property \\\"\" + key + \"\\\".\"),\n        vm\n      );\n    }\n\n    if (!isSSR) {\n      // create internal watcher for the computed property.\n      watchers[key] = new Watcher(\n        vm,\n        getter || noop,\n        noop,\n        computedWatcherOptions\n      );\n    }\n\n    // component-defined computed properties are already defined on the\n    // component prototype. We only need to define computed properties defined\n    // at instantiation here.\n    if (!(key in vm)) {\n      defineComputed(vm, key, userDef);\n    } else if (process.env.NODE_ENV !== 'production') {\n      if (key in vm.$data) {\n        warn((\"The computed property \\\"\" + key + \"\\\" is already defined in data.\"), vm);\n      } else if (vm.$options.props && key in vm.$options.props) {\n        warn((\"The computed property \\\"\" + key + \"\\\" is already defined as a prop.\"), vm);\n      } else if (vm.$options.methods && key in vm.$options.methods) {\n        warn((\"The computed property \\\"\" + key + \"\\\" is already defined as a method.\"), vm);\n      }\n    }\n  }\n}\n\nfunction defineComputed (\n  target,\n  key,\n  userDef\n) {\n  var shouldCache = !isServerRendering();\n  if (typeof userDef === 'function') {\n    sharedPropertyDefinition.get = shouldCache\n      ? createComputedGetter(key)\n      : createGetterInvoker(userDef);\n    sharedPropertyDefinition.set = noop;\n  } else {\n    sharedPropertyDefinition.get = userDef.get\n      ? shouldCache && userDef.cache !== false\n        ? createComputedGetter(key)\n        : createGetterInvoker(userDef.get)\n      : noop;\n    sharedPropertyDefinition.set = userDef.set || noop;\n  }\n  if (process.env.NODE_ENV !== 'production' &&\n      sharedPropertyDefinition.set === noop) {\n    sharedPropertyDefinition.set = function () {\n      warn(\n        (\"Computed property \\\"\" + key + \"\\\" was assigned to but it has no setter.\"),\n        this\n      );\n    };\n  }\n  Object.defineProperty(target, key, sharedPropertyDefinition);\n}\n\nfunction createComputedGetter (key) {\n  return function computedGetter () {\n    var watcher = this._computedWatchers && this._computedWatchers[key];\n    if (watcher) {\n      if (watcher.dirty) {\n        watcher.evaluate();\n      }\n      if (Dep.target) {\n        watcher.depend();\n      }\n      return watcher.value\n    }\n  }\n}\n\nfunction createGetterInvoker(fn) {\n  return function computedGetter () {\n    return fn.call(this, this)\n  }\n}\n\nfunction initMethods (vm, methods) {\n  var props = vm.$options.props;\n  for (var key in methods) {\n    if (process.env.NODE_ENV !== 'production') {\n      if (typeof methods[key] !== 'function') {\n        warn(\n          \"Method \\\"\" + key + \"\\\" has type \\\"\" + (typeof methods[key]) + \"\\\" in the component definition. \" +\n          \"Did you reference the function correctly?\",\n          vm\n        );\n      }\n      if (props && hasOwn(props, key)) {\n        warn(\n          (\"Method \\\"\" + key + \"\\\" has already been defined as a prop.\"),\n          vm\n        );\n      }\n      if ((key in vm) && isReserved(key)) {\n        warn(\n          \"Method \\\"\" + key + \"\\\" conflicts with an existing Vue instance method. \" +\n          \"Avoid defining component methods that start with _ or $.\"\n        );\n      }\n    }\n    vm[key] = typeof methods[key] !== 'function' ? noop : bind(methods[key], vm);\n  }\n}\n\nfunction initWatch (vm, watch) {\n  for (var key in watch) {\n    var handler = watch[key];\n    if (Array.isArray(handler)) {\n      for (var i = 0; i < handler.length; i++) {\n        createWatcher(vm, key, handler[i]);\n      }\n    } else {\n      createWatcher(vm, key, handler);\n    }\n  }\n}\n\nfunction createWatcher (\n  vm,\n  expOrFn,\n  handler,\n  options\n) {\n  if (isPlainObject(handler)) {\n    options = handler;\n    handler = handler.handler;\n  }\n  if (typeof handler === 'string') {\n    handler = vm[handler];\n  }\n  return vm.$watch(expOrFn, handler, options)\n}\n\nfunction stateMixin (Vue) {\n  // flow somehow has problems with directly declared definition object\n  // when using Object.defineProperty, so we have to procedurally build up\n  // the object here.\n  var dataDef = {};\n  dataDef.get = function () { return this._data };\n  var propsDef = {};\n  propsDef.get = function () { return this._props };\n  if (process.env.NODE_ENV !== 'production') {\n    dataDef.set = function () {\n      warn(\n        'Avoid replacing instance root $data. ' +\n        'Use nested data properties instead.',\n        this\n      );\n    };\n    propsDef.set = function () {\n      warn(\"$props is readonly.\", this);\n    };\n  }\n  Object.defineProperty(Vue.prototype, '$data', dataDef);\n  Object.defineProperty(Vue.prototype, '$props', propsDef);\n\n  Vue.prototype.$set = set;\n  Vue.prototype.$delete = del;\n\n  Vue.prototype.$watch = function (\n    expOrFn,\n    cb,\n    options\n  ) {\n    var vm = this;\n    if (isPlainObject(cb)) {\n      return createWatcher(vm, expOrFn, cb, options)\n    }\n    options = options || {};\n    options.user = true;\n    var watcher = new Watcher(vm, expOrFn, cb, options);\n    if (options.immediate) {\n      var info = \"callback for immediate watcher \\\"\" + (watcher.expression) + \"\\\"\";\n      pushTarget();\n      invokeWithErrorHandling(cb, vm, [watcher.value], vm, info);\n      popTarget();\n    }\n    return function unwatchFn () {\n      watcher.teardown();\n    }\n  };\n}\n\n/*  */\n\nvar uid$3 = 0;\n\nfunction initMixin (Vue) {\n  Vue.prototype._init = function (options) {\n    var vm = this;\n    // a uid\n    vm._uid = uid$3++;\n\n    var startTag, endTag;\n    /* istanbul ignore if */\n    if (process.env.NODE_ENV !== 'production' && config.performance && mark) {\n      startTag = \"vue-perf-start:\" + (vm._uid);\n      endTag = \"vue-perf-end:\" + (vm._uid);\n      mark(startTag);\n    }\n\n    // a flag to avoid this being observed\n    vm._isVue = true;\n    // merge options\n    if (options && options._isComponent) {\n      // optimize internal component instantiation\n      // since dynamic options merging is pretty slow, and none of the\n      // internal component options needs special treatment.\n      initInternalComponent(vm, options);\n    } else {\n      vm.$options = mergeOptions(\n        resolveConstructorOptions(vm.constructor),\n        options || {},\n        vm\n      );\n    }\n    /* istanbul ignore else */\n    if (process.env.NODE_ENV !== 'production') {\n      initProxy(vm);\n    } else {\n      vm._renderProxy = vm;\n    }\n    // expose real self\n    vm._self = vm;\n    initLifecycle(vm);\n    initEvents(vm);\n    initRender(vm);\n    callHook(vm, 'beforeCreate');\n    initInjections(vm); // resolve injections before data/props\n    initState(vm);\n    initProvide(vm); // resolve provide after data/props\n    callHook(vm, 'created');\n\n    /* istanbul ignore if */\n    if (process.env.NODE_ENV !== 'production' && config.performance && mark) {\n      vm._name = formatComponentName(vm, false);\n      mark(endTag);\n      measure((\"vue \" + (vm._name) + \" init\"), startTag, endTag);\n    }\n\n    if (vm.$options.el) {\n      vm.$mount(vm.$options.el);\n    }\n  };\n}\n\nfunction initInternalComponent (vm, options) {\n  var opts = vm.$options = Object.create(vm.constructor.options);\n  // doing this because it's faster than dynamic enumeration.\n  var parentVnode = options._parentVnode;\n  opts.parent = options.parent;\n  opts._parentVnode = parentVnode;\n\n  var vnodeComponentOptions = parentVnode.componentOptions;\n  opts.propsData = vnodeComponentOptions.propsData;\n  opts._parentListeners = vnodeComponentOptions.listeners;\n  opts._renderChildren = vnodeComponentOptions.children;\n  opts._componentTag = vnodeComponentOptions.tag;\n\n  if (options.render) {\n    opts.render = options.render;\n    opts.staticRenderFns = options.staticRenderFns;\n  }\n}\n\nfunction resolveConstructorOptions (Ctor) {\n  var options = Ctor.options;\n  if (Ctor.super) {\n    var superOptions = resolveConstructorOptions(Ctor.super);\n    var cachedSuperOptions = Ctor.superOptions;\n    if (superOptions !== cachedSuperOptions) {\n      // super option changed,\n      // need to resolve new options.\n      Ctor.superOptions = superOptions;\n      // check if there are any late-modified/attached options (#4976)\n      var modifiedOptions = resolveModifiedOptions(Ctor);\n      // update base extend options\n      if (modifiedOptions) {\n        extend(Ctor.extendOptions, modifiedOptions);\n      }\n      options = Ctor.options = mergeOptions(superOptions, Ctor.extendOptions);\n      if (options.name) {\n        options.components[options.name] = Ctor;\n      }\n    }\n  }\n  return options\n}\n\nfunction resolveModifiedOptions (Ctor) {\n  var modified;\n  var latest = Ctor.options;\n  var sealed = Ctor.sealedOptions;\n  for (var key in latest) {\n    if (latest[key] !== sealed[key]) {\n      if (!modified) { modified = {}; }\n      modified[key] = latest[key];\n    }\n  }\n  return modified\n}\n\nfunction Vue (options) {\n  if (process.env.NODE_ENV !== 'production' &&\n    !(this instanceof Vue)\n  ) {\n    warn('Vue is a constructor and should be called with the `new` keyword');\n  }\n  this._init(options);\n}\n\ninitMixin(Vue);\nstateMixin(Vue);\neventsMixin(Vue);\nlifecycleMixin(Vue);\nrenderMixin(Vue);\n\n/*  */\n\nfunction initUse (Vue) {\n  Vue.use = function (plugin) {\n    var installedPlugins = (this._installedPlugins || (this._installedPlugins = []));\n    if (installedPlugins.indexOf(plugin) > -1) {\n      return this\n    }\n\n    // additional parameters\n    var args = toArray(arguments, 1);\n    args.unshift(this);\n    if (typeof plugin.install === 'function') {\n      plugin.install.apply(plugin, args);\n    } else if (typeof plugin === 'function') {\n      plugin.apply(null, args);\n    }\n    installedPlugins.push(plugin);\n    return this\n  };\n}\n\n/*  */\n\nfunction initMixin$1 (Vue) {\n  Vue.mixin = function (mixin) {\n    this.options = mergeOptions(this.options, mixin);\n    return this\n  };\n}\n\n/*  */\n\nfunction initExtend (Vue) {\n  /**\n   * Each instance constructor, including Vue, has a unique\n   * cid. This enables us to create wrapped \"child\n   * constructors\" for prototypal inheritance and cache them.\n   */\n  Vue.cid = 0;\n  var cid = 1;\n\n  /**\n   * Class inheritance\n   */\n  Vue.extend = function (extendOptions) {\n    extendOptions = extendOptions || {};\n    var Super = this;\n    var SuperId = Super.cid;\n    var cachedCtors = extendOptions._Ctor || (extendOptions._Ctor = {});\n    if (cachedCtors[SuperId]) {\n      return cachedCtors[SuperId]\n    }\n\n    var name = extendOptions.name || Super.options.name;\n    if (process.env.NODE_ENV !== 'production' && name) {\n      validateComponentName(name);\n    }\n\n    var Sub = function VueComponent (options) {\n      this._init(options);\n    };\n    Sub.prototype = Object.create(Super.prototype);\n    Sub.prototype.constructor = Sub;\n    Sub.cid = cid++;\n    Sub.options = mergeOptions(\n      Super.options,\n      extendOptions\n    );\n    Sub['super'] = Super;\n\n    // For props and computed properties, we define the proxy getters on\n    // the Vue instances at extension time, on the extended prototype. This\n    // avoids Object.defineProperty calls for each instance created.\n    if (Sub.options.props) {\n      initProps$1(Sub);\n    }\n    if (Sub.options.computed) {\n      initComputed$1(Sub);\n    }\n\n    // allow further extension/mixin/plugin usage\n    Sub.extend = Super.extend;\n    Sub.mixin = Super.mixin;\n    Sub.use = Super.use;\n\n    // create asset registers, so extended classes\n    // can have their private assets too.\n    ASSET_TYPES.forEach(function (type) {\n      Sub[type] = Super[type];\n    });\n    // enable recursive self-lookup\n    if (name) {\n      Sub.options.components[name] = Sub;\n    }\n\n    // keep a reference to the super options at extension time.\n    // later at instantiation we can check if Super's options have\n    // been updated.\n    Sub.superOptions = Super.options;\n    Sub.extendOptions = extendOptions;\n    Sub.sealedOptions = extend({}, Sub.options);\n\n    // cache constructor\n    cachedCtors[SuperId] = Sub;\n    return Sub\n  };\n}\n\nfunction initProps$1 (Comp) {\n  var props = Comp.options.props;\n  for (var key in props) {\n    proxy(Comp.prototype, \"_props\", key);\n  }\n}\n\nfunction initComputed$1 (Comp) {\n  var computed = Comp.options.computed;\n  for (var key in computed) {\n    defineComputed(Comp.prototype, key, computed[key]);\n  }\n}\n\n/*  */\n\nfunction initAssetRegisters (Vue) {\n  /**\n   * Create asset registration methods.\n   */\n  ASSET_TYPES.forEach(function (type) {\n    Vue[type] = function (\n      id,\n      definition\n    ) {\n      if (!definition) {\n        return this.options[type + 's'][id]\n      } else {\n        /* istanbul ignore if */\n        if (process.env.NODE_ENV !== 'production' && type === 'component') {\n          validateComponentName(id);\n        }\n        if (type === 'component' && isPlainObject(definition)) {\n          definition.name = definition.name || id;\n          definition = this.options._base.extend(definition);\n        }\n        if (type === 'directive' && typeof definition === 'function') {\n          definition = { bind: definition, update: definition };\n        }\n        this.options[type + 's'][id] = definition;\n        return definition\n      }\n    };\n  });\n}\n\n/*  */\n\n\n\n\n\nfunction getComponentName (opts) {\n  return opts && (opts.Ctor.options.name || opts.tag)\n}\n\nfunction matches (pattern, name) {\n  if (Array.isArray(pattern)) {\n    return pattern.indexOf(name) > -1\n  } else if (typeof pattern === 'string') {\n    return pattern.split(',').indexOf(name) > -1\n  } else if (isRegExp(pattern)) {\n    return pattern.test(name)\n  }\n  /* istanbul ignore next */\n  return false\n}\n\nfunction pruneCache (keepAliveInstance, filter) {\n  var cache = keepAliveInstance.cache;\n  var keys = keepAliveInstance.keys;\n  var _vnode = keepAliveInstance._vnode;\n  for (var key in cache) {\n    var entry = cache[key];\n    if (entry) {\n      var name = entry.name;\n      if (name && !filter(name)) {\n        pruneCacheEntry(cache, key, keys, _vnode);\n      }\n    }\n  }\n}\n\nfunction pruneCacheEntry (\n  cache,\n  key,\n  keys,\n  current\n) {\n  var entry = cache[key];\n  if (entry && (!current || entry.tag !== current.tag)) {\n    entry.componentInstance.$destroy();\n  }\n  cache[key] = null;\n  remove(keys, key);\n}\n\nvar patternTypes = [String, RegExp, Array];\n\nvar KeepAlive = {\n  name: 'keep-alive',\n  abstract: true,\n\n  props: {\n    include: patternTypes,\n    exclude: patternTypes,\n    max: [String, Number]\n  },\n\n  methods: {\n    cacheVNode: function cacheVNode() {\n      var ref = this;\n      var cache = ref.cache;\n      var keys = ref.keys;\n      var vnodeToCache = ref.vnodeToCache;\n      var keyToCache = ref.keyToCache;\n      if (vnodeToCache) {\n        var tag = vnodeToCache.tag;\n        var componentInstance = vnodeToCache.componentInstance;\n        var componentOptions = vnodeToCache.componentOptions;\n        cache[keyToCache] = {\n          name: getComponentName(componentOptions),\n          tag: tag,\n          componentInstance: componentInstance,\n        };\n        keys.push(keyToCache);\n        // prune oldest entry\n        if (this.max && keys.length > parseInt(this.max)) {\n          pruneCacheEntry(cache, keys[0], keys, this._vnode);\n        }\n        this.vnodeToCache = null;\n      }\n    }\n  },\n\n  created: function created () {\n    this.cache = Object.create(null);\n    this.keys = [];\n  },\n\n  destroyed: function destroyed () {\n    for (var key in this.cache) {\n      pruneCacheEntry(this.cache, key, this.keys);\n    }\n  },\n\n  mounted: function mounted () {\n    var this$1 = this;\n\n    this.cacheVNode();\n    this.$watch('include', function (val) {\n      pruneCache(this$1, function (name) { return matches(val, name); });\n    });\n    this.$watch('exclude', function (val) {\n      pruneCache(this$1, function (name) { return !matches(val, name); });\n    });\n  },\n\n  updated: function updated () {\n    this.cacheVNode();\n  },\n\n  render: function render () {\n    var slot = this.$slots.default;\n    var vnode = getFirstComponentChild(slot);\n    var componentOptions = vnode && vnode.componentOptions;\n    if (componentOptions) {\n      // check pattern\n      var name = getComponentName(componentOptions);\n      var ref = this;\n      var include = ref.include;\n      var exclude = ref.exclude;\n      if (\n        // not included\n        (include && (!name || !matches(include, name))) ||\n        // excluded\n        (exclude && name && matches(exclude, name))\n      ) {\n        return vnode\n      }\n\n      var ref$1 = this;\n      var cache = ref$1.cache;\n      var keys = ref$1.keys;\n      var key = vnode.key == null\n        // same constructor may get registered as different local components\n        // so cid alone is not enough (#3269)\n        ? componentOptions.Ctor.cid + (componentOptions.tag ? (\"::\" + (componentOptions.tag)) : '')\n        : vnode.key;\n      if (cache[key]) {\n        vnode.componentInstance = cache[key].componentInstance;\n        // make current key freshest\n        remove(keys, key);\n        keys.push(key);\n      } else {\n        // delay setting the cache until update\n        this.vnodeToCache = vnode;\n        this.keyToCache = key;\n      }\n\n      vnode.data.keepAlive = true;\n    }\n    return vnode || (slot && slot[0])\n  }\n};\n\nvar builtInComponents = {\n  KeepAlive: KeepAlive\n};\n\n/*  */\n\nfunction initGlobalAPI (Vue) {\n  // config\n  var configDef = {};\n  configDef.get = function () { return config; };\n  if (process.env.NODE_ENV !== 'production') {\n    configDef.set = function () {\n      warn(\n        'Do not replace the Vue.config object, set individual fields instead.'\n      );\n    };\n  }\n  Object.defineProperty(Vue, 'config', configDef);\n\n  // exposed util methods.\n  // NOTE: these are not considered part of the public API - avoid relying on\n  // them unless you are aware of the risk.\n  Vue.util = {\n    warn: warn,\n    extend: extend,\n    mergeOptions: mergeOptions,\n    defineReactive: defineReactive$$1\n  };\n\n  Vue.set = set;\n  Vue.delete = del;\n  Vue.nextTick = nextTick;\n\n  // 2.6 explicit observable API\n  Vue.observable = function (obj) {\n    observe(obj);\n    return obj\n  };\n\n  Vue.options = Object.create(null);\n  ASSET_TYPES.forEach(function (type) {\n    Vue.options[type + 's'] = Object.create(null);\n  });\n\n  // this is used to identify the \"base\" constructor to extend all plain-object\n  // components with in Weex's multi-instance scenarios.\n  Vue.options._base = Vue;\n\n  extend(Vue.options.components, builtInComponents);\n\n  initUse(Vue);\n  initMixin$1(Vue);\n  initExtend(Vue);\n  initAssetRegisters(Vue);\n}\n\ninitGlobalAPI(Vue);\n\nObject.defineProperty(Vue.prototype, '$isServer', {\n  get: isServerRendering\n});\n\nObject.defineProperty(Vue.prototype, '$ssrContext', {\n  get: function get () {\n    /* istanbul ignore next */\n    return this.$vnode && this.$vnode.ssrContext\n  }\n});\n\n// expose FunctionalRenderContext for ssr runtime helper installation\nObject.defineProperty(Vue, 'FunctionalRenderContext', {\n  value: FunctionalRenderContext\n});\n\nVue.version = '2.6.14';\n\n/*  */\n\n// these are reserved for web because they are directly compiled away\n// during template compilation\nvar isReservedAttr = makeMap('style,class');\n\n// attributes that should be using props for binding\nvar acceptValue = makeMap('input,textarea,option,select,progress');\nvar mustUseProp = function (tag, type, attr) {\n  return (\n    (attr === 'value' && acceptValue(tag)) && type !== 'button' ||\n    (attr === 'selected' && tag === 'option') ||\n    (attr === 'checked' && tag === 'input') ||\n    (attr === 'muted' && tag === 'video')\n  )\n};\n\nvar isEnumeratedAttr = makeMap('contenteditable,draggable,spellcheck');\n\nvar isValidContentEditableValue = makeMap('events,caret,typing,plaintext-only');\n\nvar convertEnumeratedValue = function (key, value) {\n  return isFalsyAttrValue(value) || value === 'false'\n    ? 'false'\n    // allow arbitrary string value for contenteditable\n    : key === 'contenteditable' && isValidContentEditableValue(value)\n      ? value\n      : 'true'\n};\n\nvar isBooleanAttr = makeMap(\n  'allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,' +\n  'default,defaultchecked,defaultmuted,defaultselected,defer,disabled,' +\n  'enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,' +\n  'muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,' +\n  'required,reversed,scoped,seamless,selected,sortable,' +\n  'truespeed,typemustmatch,visible'\n);\n\nvar xlinkNS = 'http://www.w3.org/1999/xlink';\n\nvar isXlink = function (name) {\n  return name.charAt(5) === ':' && name.slice(0, 5) === 'xlink'\n};\n\nvar getXlinkProp = function (name) {\n  return isXlink(name) ? name.slice(6, name.length) : ''\n};\n\nvar isFalsyAttrValue = function (val) {\n  return val == null || val === false\n};\n\n/*  */\n\nfunction genClassForVnode (vnode) {\n  var data = vnode.data;\n  var parentNode = vnode;\n  var childNode = vnode;\n  while (isDef(childNode.componentInstance)) {\n    childNode = childNode.componentInstance._vnode;\n    if (childNode && childNode.data) {\n      data = mergeClassData(childNode.data, data);\n    }\n  }\n  while (isDef(parentNode = parentNode.parent)) {\n    if (parentNode && parentNode.data) {\n      data = mergeClassData(data, parentNode.data);\n    }\n  }\n  return renderClass(data.staticClass, data.class)\n}\n\nfunction mergeClassData (child, parent) {\n  return {\n    staticClass: concat(child.staticClass, parent.staticClass),\n    class: isDef(child.class)\n      ? [child.class, parent.class]\n      : parent.class\n  }\n}\n\nfunction renderClass (\n  staticClass,\n  dynamicClass\n) {\n  if (isDef(staticClass) || isDef(dynamicClass)) {\n    return concat(staticClass, stringifyClass(dynamicClass))\n  }\n  /* istanbul ignore next */\n  return ''\n}\n\nfunction concat (a, b) {\n  return a ? b ? (a + ' ' + b) : a : (b || '')\n}\n\nfunction stringifyClass (value) {\n  if (Array.isArray(value)) {\n    return stringifyArray(value)\n  }\n  if (isObject(value)) {\n    return stringifyObject(value)\n  }\n  if (typeof value === 'string') {\n    return value\n  }\n  /* istanbul ignore next */\n  return ''\n}\n\nfunction stringifyArray (value) {\n  var res = '';\n  var stringified;\n  for (var i = 0, l = value.length; i < l; i++) {\n    if (isDef(stringified = stringifyClass(value[i])) && stringified !== '') {\n      if (res) { res += ' '; }\n      res += stringified;\n    }\n  }\n  return res\n}\n\nfunction stringifyObject (value) {\n  var res = '';\n  for (var key in value) {\n    if (value[key]) {\n      if (res) { res += ' '; }\n      res += key;\n    }\n  }\n  return res\n}\n\n/*  */\n\nvar namespaceMap = {\n  svg: 'http://www.w3.org/2000/svg',\n  math: 'http://www.w3.org/1998/Math/MathML'\n};\n\nvar isHTMLTag = makeMap(\n  'html,body,base,head,link,meta,style,title,' +\n  'address,article,aside,footer,header,h1,h2,h3,h4,h5,h6,hgroup,nav,section,' +\n  'div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,' +\n  'a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,rtc,ruby,' +\n  's,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,' +\n  'embed,object,param,source,canvas,script,noscript,del,ins,' +\n  'caption,col,colgroup,table,thead,tbody,td,th,tr,' +\n  'button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,' +\n  'output,progress,select,textarea,' +\n  'details,dialog,menu,menuitem,summary,' +\n  'content,element,shadow,template,blockquote,iframe,tfoot'\n);\n\n// this map is intentionally selective, only covering SVG elements that may\n// contain child elements.\nvar isSVG = makeMap(\n  'svg,animate,circle,clippath,cursor,defs,desc,ellipse,filter,font-face,' +\n  'foreignobject,g,glyph,image,line,marker,mask,missing-glyph,path,pattern,' +\n  'polygon,polyline,rect,switch,symbol,text,textpath,tspan,use,view',\n  true\n);\n\nvar isReservedTag = function (tag) {\n  return isHTMLTag(tag) || isSVG(tag)\n};\n\nfunction getTagNamespace (tag) {\n  if (isSVG(tag)) {\n    return 'svg'\n  }\n  // basic support for MathML\n  // note it doesn't support other MathML elements being component roots\n  if (tag === 'math') {\n    return 'math'\n  }\n}\n\nvar unknownElementCache = Object.create(null);\nfunction isUnknownElement (tag) {\n  /* istanbul ignore if */\n  if (!inBrowser) {\n    return true\n  }\n  if (isReservedTag(tag)) {\n    return false\n  }\n  tag = tag.toLowerCase();\n  /* istanbul ignore if */\n  if (unknownElementCache[tag] != null) {\n    return unknownElementCache[tag]\n  }\n  var el = document.createElement(tag);\n  if (tag.indexOf('-') > -1) {\n    // http://stackoverflow.com/a/28210364/1070244\n    return (unknownElementCache[tag] = (\n      el.constructor === window.HTMLUnknownElement ||\n      el.constructor === window.HTMLElement\n    ))\n  } else {\n    return (unknownElementCache[tag] = /HTMLUnknownElement/.test(el.toString()))\n  }\n}\n\nvar isTextInputType = makeMap('text,number,password,search,email,tel,url');\n\n/*  */\n\n/**\n * Query an element selector if it's not an element already.\n */\nfunction query (el) {\n  if (typeof el === 'string') {\n    var selected = document.querySelector(el);\n    if (!selected) {\n      process.env.NODE_ENV !== 'production' && warn(\n        'Cannot find element: ' + el\n      );\n      return document.createElement('div')\n    }\n    return selected\n  } else {\n    return el\n  }\n}\n\n/*  */\n\nfunction createElement$1 (tagName, vnode) {\n  var elm = document.createElement(tagName);\n  if (tagName !== 'select') {\n    return elm\n  }\n  // false or null will remove the attribute but undefined will not\n  if (vnode.data && vnode.data.attrs && vnode.data.attrs.multiple !== undefined) {\n    elm.setAttribute('multiple', 'multiple');\n  }\n  return elm\n}\n\nfunction createElementNS (namespace, tagName) {\n  return document.createElementNS(namespaceMap[namespace], tagName)\n}\n\nfunction createTextNode (text) {\n  return document.createTextNode(text)\n}\n\nfunction createComment (text) {\n  return document.createComment(text)\n}\n\nfunction insertBefore (parentNode, newNode, referenceNode) {\n  parentNode.insertBefore(newNode, referenceNode);\n}\n\nfunction removeChild (node, child) {\n  node.removeChild(child);\n}\n\nfunction appendChild (node, child) {\n  node.appendChild(child);\n}\n\nfunction parentNode (node) {\n  return node.parentNode\n}\n\nfunction nextSibling (node) {\n  return node.nextSibling\n}\n\nfunction tagName (node) {\n  return node.tagName\n}\n\nfunction setTextContent (node, text) {\n  node.textContent = text;\n}\n\nfunction setStyleScope (node, scopeId) {\n  node.setAttribute(scopeId, '');\n}\n\nvar nodeOps = /*#__PURE__*/Object.freeze({\n  createElement: createElement$1,\n  createElementNS: createElementNS,\n  createTextNode: createTextNode,\n  createComment: createComment,\n  insertBefore: insertBefore,\n  removeChild: removeChild,\n  appendChild: appendChild,\n  parentNode: parentNode,\n  nextSibling: nextSibling,\n  tagName: tagName,\n  setTextContent: setTextContent,\n  setStyleScope: setStyleScope\n});\n\n/*  */\n\nvar ref = {\n  create: function create (_, vnode) {\n    registerRef(vnode);\n  },\n  update: function update (oldVnode, vnode) {\n    if (oldVnode.data.ref !== vnode.data.ref) {\n      registerRef(oldVnode, true);\n      registerRef(vnode);\n    }\n  },\n  destroy: function destroy (vnode) {\n    registerRef(vnode, true);\n  }\n};\n\nfunction registerRef (vnode, isRemoval) {\n  var key = vnode.data.ref;\n  if (!isDef(key)) { return }\n\n  var vm = vnode.context;\n  var ref = vnode.componentInstance || vnode.elm;\n  var refs = vm.$refs;\n  if (isRemoval) {\n    if (Array.isArray(refs[key])) {\n      remove(refs[key], ref);\n    } else if (refs[key] === ref) {\n      refs[key] = undefined;\n    }\n  } else {\n    if (vnode.data.refInFor) {\n      if (!Array.isArray(refs[key])) {\n        refs[key] = [ref];\n      } else if (refs[key].indexOf(ref) < 0) {\n        // $flow-disable-line\n        refs[key].push(ref);\n      }\n    } else {\n      refs[key] = ref;\n    }\n  }\n}\n\n/**\n * Virtual DOM patching algorithm based on Snabbdom by\n * Simon Friis Vindum (@paldepind)\n * Licensed under the MIT License\n * https://github.com/paldepind/snabbdom/blob/master/LICENSE\n *\n * modified by Evan You (@yyx990803)\n *\n * Not type-checking this because this file is perf-critical and the cost\n * of making flow understand it is not worth it.\n */\n\nvar emptyNode = new VNode('', {}, []);\n\nvar hooks = ['create', 'activate', 'update', 'remove', 'destroy'];\n\nfunction sameVnode (a, b) {\n  return (\n    a.key === b.key &&\n    a.asyncFactory === b.asyncFactory && (\n      (\n        a.tag === b.tag &&\n        a.isComment === b.isComment &&\n        isDef(a.data) === isDef(b.data) &&\n        sameInputType(a, b)\n      ) || (\n        isTrue(a.isAsyncPlaceholder) &&\n        isUndef(b.asyncFactory.error)\n      )\n    )\n  )\n}\n\nfunction sameInputType (a, b) {\n  if (a.tag !== 'input') { return true }\n  var i;\n  var typeA = isDef(i = a.data) && isDef(i = i.attrs) && i.type;\n  var typeB = isDef(i = b.data) && isDef(i = i.attrs) && i.type;\n  return typeA === typeB || isTextInputType(typeA) && isTextInputType(typeB)\n}\n\nfunction createKeyToOldIdx (children, beginIdx, endIdx) {\n  var i, key;\n  var map = {};\n  for (i = beginIdx; i <= endIdx; ++i) {\n    key = children[i].key;\n    if (isDef(key)) { map[key] = i; }\n  }\n  return map\n}\n\nfunction createPatchFunction (backend) {\n  var i, j;\n  var cbs = {};\n\n  var modules = backend.modules;\n  var nodeOps = backend.nodeOps;\n\n  for (i = 0; i < hooks.length; ++i) {\n    cbs[hooks[i]] = [];\n    for (j = 0; j < modules.length; ++j) {\n      if (isDef(modules[j][hooks[i]])) {\n        cbs[hooks[i]].push(modules[j][hooks[i]]);\n      }\n    }\n  }\n\n  function emptyNodeAt (elm) {\n    return new VNode(nodeOps.tagName(elm).toLowerCase(), {}, [], undefined, elm)\n  }\n\n  function createRmCb (childElm, listeners) {\n    function remove$$1 () {\n      if (--remove$$1.listeners === 0) {\n        removeNode(childElm);\n      }\n    }\n    remove$$1.listeners = listeners;\n    return remove$$1\n  }\n\n  function removeNode (el) {\n    var parent = nodeOps.parentNode(el);\n    // element may have already been removed due to v-html / v-text\n    if (isDef(parent)) {\n      nodeOps.removeChild(parent, el);\n    }\n  }\n\n  function isUnknownElement$$1 (vnode, inVPre) {\n    return (\n      !inVPre &&\n      !vnode.ns &&\n      !(\n        config.ignoredElements.length &&\n        config.ignoredElements.some(function (ignore) {\n          return isRegExp(ignore)\n            ? ignore.test(vnode.tag)\n            : ignore === vnode.tag\n        })\n      ) &&\n      config.isUnknownElement(vnode.tag)\n    )\n  }\n\n  var creatingElmInVPre = 0;\n\n  function createElm (\n    vnode,\n    insertedVnodeQueue,\n    parentElm,\n    refElm,\n    nested,\n    ownerArray,\n    index\n  ) {\n    if (isDef(vnode.elm) && isDef(ownerArray)) {\n      // This vnode was used in a previous render!\n      // now it's used as a new node, overwriting its elm would cause\n      // potential patch errors down the road when it's used as an insertion\n      // reference node. Instead, we clone the node on-demand before creating\n      // associated DOM element for it.\n      vnode = ownerArray[index] = cloneVNode(vnode);\n    }\n\n    vnode.isRootInsert = !nested; // for transition enter check\n    if (createComponent(vnode, insertedVnodeQueue, parentElm, refElm)) {\n      return\n    }\n\n    var data = vnode.data;\n    var children = vnode.children;\n    var tag = vnode.tag;\n    if (isDef(tag)) {\n      if (process.env.NODE_ENV !== 'production') {\n        if (data && data.pre) {\n          creatingElmInVPre++;\n        }\n        if (isUnknownElement$$1(vnode, creatingElmInVPre)) {\n          warn(\n            'Unknown custom element: <' + tag + '> - did you ' +\n            'register the component correctly? For recursive components, ' +\n            'make sure to provide the \"name\" option.',\n            vnode.context\n          );\n        }\n      }\n\n      vnode.elm = vnode.ns\n        ? nodeOps.createElementNS(vnode.ns, tag)\n        : nodeOps.createElement(tag, vnode);\n      setScope(vnode);\n\n      /* istanbul ignore if */\n      {\n        createChildren(vnode, children, insertedVnodeQueue);\n        if (isDef(data)) {\n          invokeCreateHooks(vnode, insertedVnodeQueue);\n        }\n        insert(parentElm, vnode.elm, refElm);\n      }\n\n      if (process.env.NODE_ENV !== 'production' && data && data.pre) {\n        creatingElmInVPre--;\n      }\n    } else if (isTrue(vnode.isComment)) {\n      vnode.elm = nodeOps.createComment(vnode.text);\n      insert(parentElm, vnode.elm, refElm);\n    } else {\n      vnode.elm = nodeOps.createTextNode(vnode.text);\n      insert(parentElm, vnode.elm, refElm);\n    }\n  }\n\n  function createComponent (vnode, insertedVnodeQueue, parentElm, refElm) {\n    var i = vnode.data;\n    if (isDef(i)) {\n      var isReactivated = isDef(vnode.componentInstance) && i.keepAlive;\n      if (isDef(i = i.hook) && isDef(i = i.init)) {\n        i(vnode, false /* hydrating */);\n      }\n      // after calling the init hook, if the vnode is a child component\n      // it should've created a child instance and mounted it. the child\n      // component also has set the placeholder vnode's elm.\n      // in that case we can just return the element and be done.\n      if (isDef(vnode.componentInstance)) {\n        initComponent(vnode, insertedVnodeQueue);\n        insert(parentElm, vnode.elm, refElm);\n        if (isTrue(isReactivated)) {\n          reactivateComponent(vnode, insertedVnodeQueue, parentElm, refElm);\n        }\n        return true\n      }\n    }\n  }\n\n  function initComponent (vnode, insertedVnodeQueue) {\n    if (isDef(vnode.data.pendingInsert)) {\n      insertedVnodeQueue.push.apply(insertedVnodeQueue, vnode.data.pendingInsert);\n      vnode.data.pendingInsert = null;\n    }\n    vnode.elm = vnode.componentInstance.$el;\n    if (isPatchable(vnode)) {\n      invokeCreateHooks(vnode, insertedVnodeQueue);\n      setScope(vnode);\n    } else {\n      // empty component root.\n      // skip all element-related modules except for ref (#3455)\n      registerRef(vnode);\n      // make sure to invoke the insert hook\n      insertedVnodeQueue.push(vnode);\n    }\n  }\n\n  function reactivateComponent (vnode, insertedVnodeQueue, parentElm, refElm) {\n    var i;\n    // hack for #4339: a reactivated component with inner transition\n    // does not trigger because the inner node's created hooks are not called\n    // again. It's not ideal to involve module-specific logic in here but\n    // there doesn't seem to be a better way to do it.\n    var innerNode = vnode;\n    while (innerNode.componentInstance) {\n      innerNode = innerNode.componentInstance._vnode;\n      if (isDef(i = innerNode.data) && isDef(i = i.transition)) {\n        for (i = 0; i < cbs.activate.length; ++i) {\n          cbs.activate[i](emptyNode, innerNode);\n        }\n        insertedVnodeQueue.push(innerNode);\n        break\n      }\n    }\n    // unlike a newly created component,\n    // a reactivated keep-alive component doesn't insert itself\n    insert(parentElm, vnode.elm, refElm);\n  }\n\n  function insert (parent, elm, ref$$1) {\n    if (isDef(parent)) {\n      if (isDef(ref$$1)) {\n        if (nodeOps.parentNode(ref$$1) === parent) {\n          nodeOps.insertBefore(parent, elm, ref$$1);\n        }\n      } else {\n        nodeOps.appendChild(parent, elm);\n      }\n    }\n  }\n\n  function createChildren (vnode, children, insertedVnodeQueue) {\n    if (Array.isArray(children)) {\n      if (process.env.NODE_ENV !== 'production') {\n        checkDuplicateKeys(children);\n      }\n      for (var i = 0; i < children.length; ++i) {\n        createElm(children[i], insertedVnodeQueue, vnode.elm, null, true, children, i);\n      }\n    } else if (isPrimitive(vnode.text)) {\n      nodeOps.appendChild(vnode.elm, nodeOps.createTextNode(String(vnode.text)));\n    }\n  }\n\n  function isPatchable (vnode) {\n    while (vnode.componentInstance) {\n      vnode = vnode.componentInstance._vnode;\n    }\n    return isDef(vnode.tag)\n  }\n\n  function invokeCreateHooks (vnode, insertedVnodeQueue) {\n    for (var i$1 = 0; i$1 < cbs.create.length; ++i$1) {\n      cbs.create[i$1](emptyNode, vnode);\n    }\n    i = vnode.data.hook; // Reuse variable\n    if (isDef(i)) {\n      if (isDef(i.create)) { i.create(emptyNode, vnode); }\n      if (isDef(i.insert)) { insertedVnodeQueue.push(vnode); }\n    }\n  }\n\n  // set scope id attribute for scoped CSS.\n  // this is implemented as a special case to avoid the overhead\n  // of going through the normal attribute patching process.\n  function setScope (vnode) {\n    var i;\n    if (isDef(i = vnode.fnScopeId)) {\n      nodeOps.setStyleScope(vnode.elm, i);\n    } else {\n      var ancestor = vnode;\n      while (ancestor) {\n        if (isDef(i = ancestor.context) && isDef(i = i.$options._scopeId)) {\n          nodeOps.setStyleScope(vnode.elm, i);\n        }\n        ancestor = ancestor.parent;\n      }\n    }\n    // for slot content they should also get the scopeId from the host instance.\n    if (isDef(i = activeInstance) &&\n      i !== vnode.context &&\n      i !== vnode.fnContext &&\n      isDef(i = i.$options._scopeId)\n    ) {\n      nodeOps.setStyleScope(vnode.elm, i);\n    }\n  }\n\n  function addVnodes (parentElm, refElm, vnodes, startIdx, endIdx, insertedVnodeQueue) {\n    for (; startIdx <= endIdx; ++startIdx) {\n      createElm(vnodes[startIdx], insertedVnodeQueue, parentElm, refElm, false, vnodes, startIdx);\n    }\n  }\n\n  function invokeDestroyHook (vnode) {\n    var i, j;\n    var data = vnode.data;\n    if (isDef(data)) {\n      if (isDef(i = data.hook) && isDef(i = i.destroy)) { i(vnode); }\n      for (i = 0; i < cbs.destroy.length; ++i) { cbs.destroy[i](vnode); }\n    }\n    if (isDef(i = vnode.children)) {\n      for (j = 0; j < vnode.children.length; ++j) {\n        invokeDestroyHook(vnode.children[j]);\n      }\n    }\n  }\n\n  function removeVnodes (vnodes, startIdx, endIdx) {\n    for (; startIdx <= endIdx; ++startIdx) {\n      var ch = vnodes[startIdx];\n      if (isDef(ch)) {\n        if (isDef(ch.tag)) {\n          removeAndInvokeRemoveHook(ch);\n          invokeDestroyHook(ch);\n        } else { // Text node\n          removeNode(ch.elm);\n        }\n      }\n    }\n  }\n\n  function removeAndInvokeRemoveHook (vnode, rm) {\n    if (isDef(rm) || isDef(vnode.data)) {\n      var i;\n      var listeners = cbs.remove.length + 1;\n      if (isDef(rm)) {\n        // we have a recursively passed down rm callback\n        // increase the listeners count\n        rm.listeners += listeners;\n      } else {\n        // directly removing\n        rm = createRmCb(vnode.elm, listeners);\n      }\n      // recursively invoke hooks on child component root node\n      if (isDef(i = vnode.componentInstance) && isDef(i = i._vnode) && isDef(i.data)) {\n        removeAndInvokeRemoveHook(i, rm);\n      }\n      for (i = 0; i < cbs.remove.length; ++i) {\n        cbs.remove[i](vnode, rm);\n      }\n      if (isDef(i = vnode.data.hook) && isDef(i = i.remove)) {\n        i(vnode, rm);\n      } else {\n        rm();\n      }\n    } else {\n      removeNode(vnode.elm);\n    }\n  }\n\n  function updateChildren (parentElm, oldCh, newCh, insertedVnodeQueue, removeOnly) {\n    var oldStartIdx = 0;\n    var newStartIdx = 0;\n    var oldEndIdx = oldCh.length - 1;\n    var oldStartVnode = oldCh[0];\n    var oldEndVnode = oldCh[oldEndIdx];\n    var newEndIdx = newCh.length - 1;\n    var newStartVnode = newCh[0];\n    var newEndVnode = newCh[newEndIdx];\n    var oldKeyToIdx, idxInOld, vnodeToMove, refElm;\n\n    // removeOnly is a special flag used only by <transition-group>\n    // to ensure removed elements stay in correct relative positions\n    // during leaving transitions\n    var canMove = !removeOnly;\n\n    if (process.env.NODE_ENV !== 'production') {\n      checkDuplicateKeys(newCh);\n    }\n\n    while (oldStartIdx <= oldEndIdx && newStartIdx <= newEndIdx) {\n      if (isUndef(oldStartVnode)) {\n        oldStartVnode = oldCh[++oldStartIdx]; // Vnode has been moved left\n      } else if (isUndef(oldEndVnode)) {\n        oldEndVnode = oldCh[--oldEndIdx];\n      } else if (sameVnode(oldStartVnode, newStartVnode)) {\n        patchVnode(oldStartVnode, newStartVnode, insertedVnodeQueue, newCh, newStartIdx);\n        oldStartVnode = oldCh[++oldStartIdx];\n        newStartVnode = newCh[++newStartIdx];\n      } else if (sameVnode(oldEndVnode, newEndVnode)) {\n        patchVnode(oldEndVnode, newEndVnode, insertedVnodeQueue, newCh, newEndIdx);\n        oldEndVnode = oldCh[--oldEndIdx];\n        newEndVnode = newCh[--newEndIdx];\n      } else if (sameVnode(oldStartVnode, newEndVnode)) { // Vnode moved right\n        patchVnode(oldStartVnode, newEndVnode, insertedVnodeQueue, newCh, newEndIdx);\n        canMove && nodeOps.insertBefore(parentElm, oldStartVnode.elm, nodeOps.nextSibling(oldEndVnode.elm));\n        oldStartVnode = oldCh[++oldStartIdx];\n        newEndVnode = newCh[--newEndIdx];\n      } else if (sameVnode(oldEndVnode, newStartVnode)) { // Vnode moved left\n        patchVnode(oldEndVnode, newStartVnode, insertedVnodeQueue, newCh, newStartIdx);\n        canMove && nodeOps.insertBefore(parentElm, oldEndVnode.elm, oldStartVnode.elm);\n        oldEndVnode = oldCh[--oldEndIdx];\n        newStartVnode = newCh[++newStartIdx];\n      } else {\n        if (isUndef(oldKeyToIdx)) { oldKeyToIdx = createKeyToOldIdx(oldCh, oldStartIdx, oldEndIdx); }\n        idxInOld = isDef(newStartVnode.key)\n          ? oldKeyToIdx[newStartVnode.key]\n          : findIdxInOld(newStartVnode, oldCh, oldStartIdx, oldEndIdx);\n        if (isUndef(idxInOld)) { // New element\n          createElm(newStartVnode, insertedVnodeQueue, parentElm, oldStartVnode.elm, false, newCh, newStartIdx);\n        } else {\n          vnodeToMove = oldCh[idxInOld];\n          if (sameVnode(vnodeToMove, newStartVnode)) {\n            patchVnode(vnodeToMove, newStartVnode, insertedVnodeQueue, newCh, newStartIdx);\n            oldCh[idxInOld] = undefined;\n            canMove && nodeOps.insertBefore(parentElm, vnodeToMove.elm, oldStartVnode.elm);\n          } else {\n            // same key but different element. treat as new element\n            createElm(newStartVnode, insertedVnodeQueue, parentElm, oldStartVnode.elm, false, newCh, newStartIdx);\n          }\n        }\n        newStartVnode = newCh[++newStartIdx];\n      }\n    }\n    if (oldStartIdx > oldEndIdx) {\n      refElm = isUndef(newCh[newEndIdx + 1]) ? null : newCh[newEndIdx + 1].elm;\n      addVnodes(parentElm, refElm, newCh, newStartIdx, newEndIdx, insertedVnodeQueue);\n    } else if (newStartIdx > newEndIdx) {\n      removeVnodes(oldCh, oldStartIdx, oldEndIdx);\n    }\n  }\n\n  function checkDuplicateKeys (children) {\n    var seenKeys = {};\n    for (var i = 0; i < children.length; i++) {\n      var vnode = children[i];\n      var key = vnode.key;\n      if (isDef(key)) {\n        if (seenKeys[key]) {\n          warn(\n            (\"Duplicate keys detected: '\" + key + \"'. This may cause an update error.\"),\n            vnode.context\n          );\n        } else {\n          seenKeys[key] = true;\n        }\n      }\n    }\n  }\n\n  function findIdxInOld (node, oldCh, start, end) {\n    for (var i = start; i < end; i++) {\n      var c = oldCh[i];\n      if (isDef(c) && sameVnode(node, c)) { return i }\n    }\n  }\n\n  function patchVnode (\n    oldVnode,\n    vnode,\n    insertedVnodeQueue,\n    ownerArray,\n    index,\n    removeOnly\n  ) {\n    if (oldVnode === vnode) {\n      return\n    }\n\n    if (isDef(vnode.elm) && isDef(ownerArray)) {\n      // clone reused vnode\n      vnode = ownerArray[index] = cloneVNode(vnode);\n    }\n\n    var elm = vnode.elm = oldVnode.elm;\n\n    if (isTrue(oldVnode.isAsyncPlaceholder)) {\n      if (isDef(vnode.asyncFactory.resolved)) {\n        hydrate(oldVnode.elm, vnode, insertedVnodeQueue);\n      } else {\n        vnode.isAsyncPlaceholder = true;\n      }\n      return\n    }\n\n    // reuse element for static trees.\n    // note we only do this if the vnode is cloned -\n    // if the new node is not cloned it means the render functions have been\n    // reset by the hot-reload-api and we need to do a proper re-render.\n    if (isTrue(vnode.isStatic) &&\n      isTrue(oldVnode.isStatic) &&\n      vnode.key === oldVnode.key &&\n      (isTrue(vnode.isCloned) || isTrue(vnode.isOnce))\n    ) {\n      vnode.componentInstance = oldVnode.componentInstance;\n      return\n    }\n\n    var i;\n    var data = vnode.data;\n    if (isDef(data) && isDef(i = data.hook) && isDef(i = i.prepatch)) {\n      i(oldVnode, vnode);\n    }\n\n    var oldCh = oldVnode.children;\n    var ch = vnode.children;\n    if (isDef(data) && isPatchable(vnode)) {\n      for (i = 0; i < cbs.update.length; ++i) { cbs.update[i](oldVnode, vnode); }\n      if (isDef(i = data.hook) && isDef(i = i.update)) { i(oldVnode, vnode); }\n    }\n    if (isUndef(vnode.text)) {\n      if (isDef(oldCh) && isDef(ch)) {\n        if (oldCh !== ch) { updateChildren(elm, oldCh, ch, insertedVnodeQueue, removeOnly); }\n      } else if (isDef(ch)) {\n        if (process.env.NODE_ENV !== 'production') {\n          checkDuplicateKeys(ch);\n        }\n        if (isDef(oldVnode.text)) { nodeOps.setTextContent(elm, ''); }\n        addVnodes(elm, null, ch, 0, ch.length - 1, insertedVnodeQueue);\n      } else if (isDef(oldCh)) {\n        removeVnodes(oldCh, 0, oldCh.length - 1);\n      } else if (isDef(oldVnode.text)) {\n        nodeOps.setTextContent(elm, '');\n      }\n    } else if (oldVnode.text !== vnode.text) {\n      nodeOps.setTextContent(elm, vnode.text);\n    }\n    if (isDef(data)) {\n      if (isDef(i = data.hook) && isDef(i = i.postpatch)) { i(oldVnode, vnode); }\n    }\n  }\n\n  function invokeInsertHook (vnode, queue, initial) {\n    // delay insert hooks for component root nodes, invoke them after the\n    // element is really inserted\n    if (isTrue(initial) && isDef(vnode.parent)) {\n      vnode.parent.data.pendingInsert = queue;\n    } else {\n      for (var i = 0; i < queue.length; ++i) {\n        queue[i].data.hook.insert(queue[i]);\n      }\n    }\n  }\n\n  var hydrationBailed = false;\n  // list of modules that can skip create hook during hydration because they\n  // are already rendered on the client or has no need for initialization\n  // Note: style is excluded because it relies on initial clone for future\n  // deep updates (#7063).\n  var isRenderedModule = makeMap('attrs,class,staticClass,staticStyle,key');\n\n  // Note: this is a browser-only function so we can assume elms are DOM nodes.\n  function hydrate (elm, vnode, insertedVnodeQueue, inVPre) {\n    var i;\n    var tag = vnode.tag;\n    var data = vnode.data;\n    var children = vnode.children;\n    inVPre = inVPre || (data && data.pre);\n    vnode.elm = elm;\n\n    if (isTrue(vnode.isComment) && isDef(vnode.asyncFactory)) {\n      vnode.isAsyncPlaceholder = true;\n      return true\n    }\n    // assert node match\n    if (process.env.NODE_ENV !== 'production') {\n      if (!assertNodeMatch(elm, vnode, inVPre)) {\n        return false\n      }\n    }\n    if (isDef(data)) {\n      if (isDef(i = data.hook) && isDef(i = i.init)) { i(vnode, true /* hydrating */); }\n      if (isDef(i = vnode.componentInstance)) {\n        // child component. it should have hydrated its own tree.\n        initComponent(vnode, insertedVnodeQueue);\n        return true\n      }\n    }\n    if (isDef(tag)) {\n      if (isDef(children)) {\n        // empty element, allow client to pick up and populate children\n        if (!elm.hasChildNodes()) {\n          createChildren(vnode, children, insertedVnodeQueue);\n        } else {\n          // v-html and domProps: innerHTML\n          if (isDef(i = data) && isDef(i = i.domProps) && isDef(i = i.innerHTML)) {\n            if (i !== elm.innerHTML) {\n              /* istanbul ignore if */\n              if (process.env.NODE_ENV !== 'production' &&\n                typeof console !== 'undefined' &&\n                !hydrationBailed\n              ) {\n                hydrationBailed = true;\n                console.warn('Parent: ', elm);\n                console.warn('server innerHTML: ', i);\n                console.warn('client innerHTML: ', elm.innerHTML);\n              }\n              return false\n            }\n          } else {\n            // iterate and compare children lists\n            var childrenMatch = true;\n            var childNode = elm.firstChild;\n            for (var i$1 = 0; i$1 < children.length; i$1++) {\n              if (!childNode || !hydrate(childNode, children[i$1], insertedVnodeQueue, inVPre)) {\n                childrenMatch = false;\n                break\n              }\n              childNode = childNode.nextSibling;\n            }\n            // if childNode is not null, it means the actual childNodes list is\n            // longer than the virtual children list.\n            if (!childrenMatch || childNode) {\n              /* istanbul ignore if */\n              if (process.env.NODE_ENV !== 'production' &&\n                typeof console !== 'undefined' &&\n                !hydrationBailed\n              ) {\n                hydrationBailed = true;\n                console.warn('Parent: ', elm);\n                console.warn('Mismatching childNodes vs. VNodes: ', elm.childNodes, children);\n              }\n              return false\n            }\n          }\n        }\n      }\n      if (isDef(data)) {\n        var fullInvoke = false;\n        for (var key in data) {\n          if (!isRenderedModule(key)) {\n            fullInvoke = true;\n            invokeCreateHooks(vnode, insertedVnodeQueue);\n            break\n          }\n        }\n        if (!fullInvoke && data['class']) {\n          // ensure collecting deps for deep class bindings for future updates\n          traverse(data['class']);\n        }\n      }\n    } else if (elm.data !== vnode.text) {\n      elm.data = vnode.text;\n    }\n    return true\n  }\n\n  function assertNodeMatch (node, vnode, inVPre) {\n    if (isDef(vnode.tag)) {\n      return vnode.tag.indexOf('vue-component') === 0 || (\n        !isUnknownElement$$1(vnode, inVPre) &&\n        vnode.tag.toLowerCase() === (node.tagName && node.tagName.toLowerCase())\n      )\n    } else {\n      return node.nodeType === (vnode.isComment ? 8 : 3)\n    }\n  }\n\n  return function patch (oldVnode, vnode, hydrating, removeOnly) {\n    if (isUndef(vnode)) {\n      if (isDef(oldVnode)) { invokeDestroyHook(oldVnode); }\n      return\n    }\n\n    var isInitialPatch = false;\n    var insertedVnodeQueue = [];\n\n    if (isUndef(oldVnode)) {\n      // empty mount (likely as component), create new root element\n      isInitialPatch = true;\n      createElm(vnode, insertedVnodeQueue);\n    } else {\n      var isRealElement = isDef(oldVnode.nodeType);\n      if (!isRealElement && sameVnode(oldVnode, vnode)) {\n        // patch existing root node\n        patchVnode(oldVnode, vnode, insertedVnodeQueue, null, null, removeOnly);\n      } else {\n        if (isRealElement) {\n          // mounting to a real element\n          // check if this is server-rendered content and if we can perform\n          // a successful hydration.\n          if (oldVnode.nodeType === 1 && oldVnode.hasAttribute(SSR_ATTR)) {\n            oldVnode.removeAttribute(SSR_ATTR);\n            hydrating = true;\n          }\n          if (isTrue(hydrating)) {\n            if (hydrate(oldVnode, vnode, insertedVnodeQueue)) {\n              invokeInsertHook(vnode, insertedVnodeQueue, true);\n              return oldVnode\n            } else if (process.env.NODE_ENV !== 'production') {\n              warn(\n                'The client-side rendered virtual DOM tree is not matching ' +\n                'server-rendered content. This is likely caused by incorrect ' +\n                'HTML markup, for example nesting block-level elements inside ' +\n                '<p>, or missing <tbody>. Bailing hydration and performing ' +\n                'full client-side render.'\n              );\n            }\n          }\n          // either not server-rendered, or hydration failed.\n          // create an empty node and replace it\n          oldVnode = emptyNodeAt(oldVnode);\n        }\n\n        // replacing existing element\n        var oldElm = oldVnode.elm;\n        var parentElm = nodeOps.parentNode(oldElm);\n\n        // create new node\n        createElm(\n          vnode,\n          insertedVnodeQueue,\n          // extremely rare edge case: do not insert if old element is in a\n          // leaving transition. Only happens when combining transition +\n          // keep-alive + HOCs. (#4590)\n          oldElm._leaveCb ? null : parentElm,\n          nodeOps.nextSibling(oldElm)\n        );\n\n        // update parent placeholder node element, recursively\n        if (isDef(vnode.parent)) {\n          var ancestor = vnode.parent;\n          var patchable = isPatchable(vnode);\n          while (ancestor) {\n            for (var i = 0; i < cbs.destroy.length; ++i) {\n              cbs.destroy[i](ancestor);\n            }\n            ancestor.elm = vnode.elm;\n            if (patchable) {\n              for (var i$1 = 0; i$1 < cbs.create.length; ++i$1) {\n                cbs.create[i$1](emptyNode, ancestor);\n              }\n              // #6513\n              // invoke insert hooks that may have been merged by create hooks.\n              // e.g. for directives that uses the \"inserted\" hook.\n              var insert = ancestor.data.hook.insert;\n              if (insert.merged) {\n                // start at index 1 to avoid re-invoking component mounted hook\n                for (var i$2 = 1; i$2 < insert.fns.length; i$2++) {\n                  insert.fns[i$2]();\n                }\n              }\n            } else {\n              registerRef(ancestor);\n            }\n            ancestor = ancestor.parent;\n          }\n        }\n\n        // destroy old node\n        if (isDef(parentElm)) {\n          removeVnodes([oldVnode], 0, 0);\n        } else if (isDef(oldVnode.tag)) {\n          invokeDestroyHook(oldVnode);\n        }\n      }\n    }\n\n    invokeInsertHook(vnode, insertedVnodeQueue, isInitialPatch);\n    return vnode.elm\n  }\n}\n\n/*  */\n\nvar directives = {\n  create: updateDirectives,\n  update: updateDirectives,\n  destroy: function unbindDirectives (vnode) {\n    updateDirectives(vnode, emptyNode);\n  }\n};\n\nfunction updateDirectives (oldVnode, vnode) {\n  if (oldVnode.data.directives || vnode.data.directives) {\n    _update(oldVnode, vnode);\n  }\n}\n\nfunction _update (oldVnode, vnode) {\n  var isCreate = oldVnode === emptyNode;\n  var isDestroy = vnode === emptyNode;\n  var oldDirs = normalizeDirectives$1(oldVnode.data.directives, oldVnode.context);\n  var newDirs = normalizeDirectives$1(vnode.data.directives, vnode.context);\n\n  var dirsWithInsert = [];\n  var dirsWithPostpatch = [];\n\n  var key, oldDir, dir;\n  for (key in newDirs) {\n    oldDir = oldDirs[key];\n    dir = newDirs[key];\n    if (!oldDir) {\n      // new directive, bind\n      callHook$1(dir, 'bind', vnode, oldVnode);\n      if (dir.def && dir.def.inserted) {\n        dirsWithInsert.push(dir);\n      }\n    } else {\n      // existing directive, update\n      dir.oldValue = oldDir.value;\n      dir.oldArg = oldDir.arg;\n      callHook$1(dir, 'update', vnode, oldVnode);\n      if (dir.def && dir.def.componentUpdated) {\n        dirsWithPostpatch.push(dir);\n      }\n    }\n  }\n\n  if (dirsWithInsert.length) {\n    var callInsert = function () {\n      for (var i = 0; i < dirsWithInsert.length; i++) {\n        callHook$1(dirsWithInsert[i], 'inserted', vnode, oldVnode);\n      }\n    };\n    if (isCreate) {\n      mergeVNodeHook(vnode, 'insert', callInsert);\n    } else {\n      callInsert();\n    }\n  }\n\n  if (dirsWithPostpatch.length) {\n    mergeVNodeHook(vnode, 'postpatch', function () {\n      for (var i = 0; i < dirsWithPostpatch.length; i++) {\n        callHook$1(dirsWithPostpatch[i], 'componentUpdated', vnode, oldVnode);\n      }\n    });\n  }\n\n  if (!isCreate) {\n    for (key in oldDirs) {\n      if (!newDirs[key]) {\n        // no longer present, unbind\n        callHook$1(oldDirs[key], 'unbind', oldVnode, oldVnode, isDestroy);\n      }\n    }\n  }\n}\n\nvar emptyModifiers = Object.create(null);\n\nfunction normalizeDirectives$1 (\n  dirs,\n  vm\n) {\n  var res = Object.create(null);\n  if (!dirs) {\n    // $flow-disable-line\n    return res\n  }\n  var i, dir;\n  for (i = 0; i < dirs.length; i++) {\n    dir = dirs[i];\n    if (!dir.modifiers) {\n      // $flow-disable-line\n      dir.modifiers = emptyModifiers;\n    }\n    res[getRawDirName(dir)] = dir;\n    dir.def = resolveAsset(vm.$options, 'directives', dir.name, true);\n  }\n  // $flow-disable-line\n  return res\n}\n\nfunction getRawDirName (dir) {\n  return dir.rawName || ((dir.name) + \".\" + (Object.keys(dir.modifiers || {}).join('.')))\n}\n\nfunction callHook$1 (dir, hook, vnode, oldVnode, isDestroy) {\n  var fn = dir.def && dir.def[hook];\n  if (fn) {\n    try {\n      fn(vnode.elm, dir, vnode, oldVnode, isDestroy);\n    } catch (e) {\n      handleError(e, vnode.context, (\"directive \" + (dir.name) + \" \" + hook + \" hook\"));\n    }\n  }\n}\n\nvar baseModules = [\n  ref,\n  directives\n];\n\n/*  */\n\nfunction updateAttrs (oldVnode, vnode) {\n  var opts = vnode.componentOptions;\n  if (isDef(opts) && opts.Ctor.options.inheritAttrs === false) {\n    return\n  }\n  if (isUndef(oldVnode.data.attrs) && isUndef(vnode.data.attrs)) {\n    return\n  }\n  var key, cur, old;\n  var elm = vnode.elm;\n  var oldAttrs = oldVnode.data.attrs || {};\n  var attrs = vnode.data.attrs || {};\n  // clone observed objects, as the user probably wants to mutate it\n  if (isDef(attrs.__ob__)) {\n    attrs = vnode.data.attrs = extend({}, attrs);\n  }\n\n  for (key in attrs) {\n    cur = attrs[key];\n    old = oldAttrs[key];\n    if (old !== cur) {\n      setAttr(elm, key, cur, vnode.data.pre);\n    }\n  }\n  // #4391: in IE9, setting type can reset value for input[type=radio]\n  // #6666: IE/Edge forces progress value down to 1 before setting a max\n  /* istanbul ignore if */\n  if ((isIE || isEdge) && attrs.value !== oldAttrs.value) {\n    setAttr(elm, 'value', attrs.value);\n  }\n  for (key in oldAttrs) {\n    if (isUndef(attrs[key])) {\n      if (isXlink(key)) {\n        elm.removeAttributeNS(xlinkNS, getXlinkProp(key));\n      } else if (!isEnumeratedAttr(key)) {\n        elm.removeAttribute(key);\n      }\n    }\n  }\n}\n\nfunction setAttr (el, key, value, isInPre) {\n  if (isInPre || el.tagName.indexOf('-') > -1) {\n    baseSetAttr(el, key, value);\n  } else if (isBooleanAttr(key)) {\n    // set attribute for blank value\n    // e.g. <option disabled>Select one</option>\n    if (isFalsyAttrValue(value)) {\n      el.removeAttribute(key);\n    } else {\n      // technically allowfullscreen is a boolean attribute for <iframe>,\n      // but Flash expects a value of \"true\" when used on <embed> tag\n      value = key === 'allowfullscreen' && el.tagName === 'EMBED'\n        ? 'true'\n        : key;\n      el.setAttribute(key, value);\n    }\n  } else if (isEnumeratedAttr(key)) {\n    el.setAttribute(key, convertEnumeratedValue(key, value));\n  } else if (isXlink(key)) {\n    if (isFalsyAttrValue(value)) {\n      el.removeAttributeNS(xlinkNS, getXlinkProp(key));\n    } else {\n      el.setAttributeNS(xlinkNS, key, value);\n    }\n  } else {\n    baseSetAttr(el, key, value);\n  }\n}\n\nfunction baseSetAttr (el, key, value) {\n  if (isFalsyAttrValue(value)) {\n    el.removeAttribute(key);\n  } else {\n    // #7138: IE10 & 11 fires input event when setting placeholder on\n    // <textarea>... block the first input event and remove the blocker\n    // immediately.\n    /* istanbul ignore if */\n    if (\n      isIE && !isIE9 &&\n      el.tagName === 'TEXTAREA' &&\n      key === 'placeholder' && value !== '' && !el.__ieph\n    ) {\n      var blocker = function (e) {\n        e.stopImmediatePropagation();\n        el.removeEventListener('input', blocker);\n      };\n      el.addEventListener('input', blocker);\n      // $flow-disable-line\n      el.__ieph = true; /* IE placeholder patched */\n    }\n    el.setAttribute(key, value);\n  }\n}\n\nvar attrs = {\n  create: updateAttrs,\n  update: updateAttrs\n};\n\n/*  */\n\nfunction updateClass (oldVnode, vnode) {\n  var el = vnode.elm;\n  var data = vnode.data;\n  var oldData = oldVnode.data;\n  if (\n    isUndef(data.staticClass) &&\n    isUndef(data.class) && (\n      isUndef(oldData) || (\n        isUndef(oldData.staticClass) &&\n        isUndef(oldData.class)\n      )\n    )\n  ) {\n    return\n  }\n\n  var cls = genClassForVnode(vnode);\n\n  // handle transition classes\n  var transitionClass = el._transitionClasses;\n  if (isDef(transitionClass)) {\n    cls = concat(cls, stringifyClass(transitionClass));\n  }\n\n  // set the class\n  if (cls !== el._prevClass) {\n    el.setAttribute('class', cls);\n    el._prevClass = cls;\n  }\n}\n\nvar klass = {\n  create: updateClass,\n  update: updateClass\n};\n\n/*  */\n\n/*  */\n\n/*  */\n\n/*  */\n\n// in some cases, the event used has to be determined at runtime\n// so we used some reserved tokens during compile.\nvar RANGE_TOKEN = '__r';\nvar CHECKBOX_RADIO_TOKEN = '__c';\n\n/*  */\n\n// normalize v-model event tokens that can only be determined at runtime.\n// it's important to place the event as the first in the array because\n// the whole point is ensuring the v-model callback gets called before\n// user-attached handlers.\nfunction normalizeEvents (on) {\n  /* istanbul ignore if */\n  if (isDef(on[RANGE_TOKEN])) {\n    // IE input[type=range] only supports `change` event\n    var event = isIE ? 'change' : 'input';\n    on[event] = [].concat(on[RANGE_TOKEN], on[event] || []);\n    delete on[RANGE_TOKEN];\n  }\n  // This was originally intended to fix #4521 but no longer necessary\n  // after 2.5. Keeping it for backwards compat with generated code from < 2.4\n  /* istanbul ignore if */\n  if (isDef(on[CHECKBOX_RADIO_TOKEN])) {\n    on.change = [].concat(on[CHECKBOX_RADIO_TOKEN], on.change || []);\n    delete on[CHECKBOX_RADIO_TOKEN];\n  }\n}\n\nvar target$1;\n\nfunction createOnceHandler$1 (event, handler, capture) {\n  var _target = target$1; // save current target element in closure\n  return function onceHandler () {\n    var res = handler.apply(null, arguments);\n    if (res !== null) {\n      remove$2(event, onceHandler, capture, _target);\n    }\n  }\n}\n\n// #9446: Firefox <= 53 (in particular, ESR 52) has incorrect Event.timeStamp\n// implementation and does not fire microtasks in between event propagation, so\n// safe to exclude.\nvar useMicrotaskFix = isUsingMicroTask && !(isFF && Number(isFF[1]) <= 53);\n\nfunction add$1 (\n  name,\n  handler,\n  capture,\n  passive\n) {\n  // async edge case #6566: inner click event triggers patch, event handler\n  // attached to outer element during patch, and triggered again. This\n  // happens because browsers fire microtask ticks between event propagation.\n  // the solution is simple: we save the timestamp when a handler is attached,\n  // and the handler would only fire if the event passed to it was fired\n  // AFTER it was attached.\n  if (useMicrotaskFix) {\n    var attachedTimestamp = currentFlushTimestamp;\n    var original = handler;\n    handler = original._wrapper = function (e) {\n      if (\n        // no bubbling, should always fire.\n        // this is just a safety net in case event.timeStamp is unreliable in\n        // certain weird environments...\n        e.target === e.currentTarget ||\n        // event is fired after handler attachment\n        e.timeStamp >= attachedTimestamp ||\n        // bail for environments that have buggy event.timeStamp implementations\n        // #9462 iOS 9 bug: event.timeStamp is 0 after history.pushState\n        // #9681 QtWebEngine event.timeStamp is negative value\n        e.timeStamp <= 0 ||\n        // #9448 bail if event is fired in another document in a multi-page\n        // electron/nw.js app, since event.timeStamp will be using a different\n        // starting reference\n        e.target.ownerDocument !== document\n      ) {\n        return original.apply(this, arguments)\n      }\n    };\n  }\n  target$1.addEventListener(\n    name,\n    handler,\n    supportsPassive\n      ? { capture: capture, passive: passive }\n      : capture\n  );\n}\n\nfunction remove$2 (\n  name,\n  handler,\n  capture,\n  _target\n) {\n  (_target || target$1).removeEventListener(\n    name,\n    handler._wrapper || handler,\n    capture\n  );\n}\n\nfunction updateDOMListeners (oldVnode, vnode) {\n  if (isUndef(oldVnode.data.on) && isUndef(vnode.data.on)) {\n    return\n  }\n  var on = vnode.data.on || {};\n  var oldOn = oldVnode.data.on || {};\n  target$1 = vnode.elm;\n  normalizeEvents(on);\n  updateListeners(on, oldOn, add$1, remove$2, createOnceHandler$1, vnode.context);\n  target$1 = undefined;\n}\n\nvar events = {\n  create: updateDOMListeners,\n  update: updateDOMListeners\n};\n\n/*  */\n\nvar svgContainer;\n\nfunction updateDOMProps (oldVnode, vnode) {\n  if (isUndef(oldVnode.data.domProps) && isUndef(vnode.data.domProps)) {\n    return\n  }\n  var key, cur;\n  var elm = vnode.elm;\n  var oldProps = oldVnode.data.domProps || {};\n  var props = vnode.data.domProps || {};\n  // clone observed objects, as the user probably wants to mutate it\n  if (isDef(props.__ob__)) {\n    props = vnode.data.domProps = extend({}, props);\n  }\n\n  for (key in oldProps) {\n    if (!(key in props)) {\n      elm[key] = '';\n    }\n  }\n\n  for (key in props) {\n    cur = props[key];\n    // ignore children if the node has textContent or innerHTML,\n    // as these will throw away existing DOM nodes and cause removal errors\n    // on subsequent patches (#3360)\n    if (key === 'textContent' || key === 'innerHTML') {\n      if (vnode.children) { vnode.children.length = 0; }\n      if (cur === oldProps[key]) { continue }\n      // #6601 work around Chrome version <= 55 bug where single textNode\n      // replaced by innerHTML/textContent retains its parentNode property\n      if (elm.childNodes.length === 1) {\n        elm.removeChild(elm.childNodes[0]);\n      }\n    }\n\n    if (key === 'value' && elm.tagName !== 'PROGRESS') {\n      // store value as _value as well since\n      // non-string values will be stringified\n      elm._value = cur;\n      // avoid resetting cursor position when value is the same\n      var strCur = isUndef(cur) ? '' : String(cur);\n      if (shouldUpdateValue(elm, strCur)) {\n        elm.value = strCur;\n      }\n    } else if (key === 'innerHTML' && isSVG(elm.tagName) && isUndef(elm.innerHTML)) {\n      // IE doesn't support innerHTML for SVG elements\n      svgContainer = svgContainer || document.createElement('div');\n      svgContainer.innerHTML = \"<svg>\" + cur + \"</svg>\";\n      var svg = svgContainer.firstChild;\n      while (elm.firstChild) {\n        elm.removeChild(elm.firstChild);\n      }\n      while (svg.firstChild) {\n        elm.appendChild(svg.firstChild);\n      }\n    } else if (\n      // skip the update if old and new VDOM state is the same.\n      // `value` is handled separately because the DOM value may be temporarily\n      // out of sync with VDOM state due to focus, composition and modifiers.\n      // This  #4521 by skipping the unnecessary `checked` update.\n      cur !== oldProps[key]\n    ) {\n      // some property updates can throw\n      // e.g. `value` on <progress> w/ non-finite value\n      try {\n        elm[key] = cur;\n      } catch (e) {}\n    }\n  }\n}\n\n// check platforms/web/util/attrs.js acceptValue\n\n\nfunction shouldUpdateValue (elm, checkVal) {\n  return (!elm.composing && (\n    elm.tagName === 'OPTION' ||\n    isNotInFocusAndDirty(elm, checkVal) ||\n    isDirtyWithModifiers(elm, checkVal)\n  ))\n}\n\nfunction isNotInFocusAndDirty (elm, checkVal) {\n  // return true when textbox (.number and .trim) loses focus and its value is\n  // not equal to the updated value\n  var notInFocus = true;\n  // #6157\n  // work around IE bug when accessing document.activeElement in an iframe\n  try { notInFocus = document.activeElement !== elm; } catch (e) {}\n  return notInFocus && elm.value !== checkVal\n}\n\nfunction isDirtyWithModifiers (elm, newVal) {\n  var value = elm.value;\n  var modifiers = elm._vModifiers; // injected by v-model runtime\n  if (isDef(modifiers)) {\n    if (modifiers.number) {\n      return toNumber(value) !== toNumber(newVal)\n    }\n    if (modifiers.trim) {\n      return value.trim() !== newVal.trim()\n    }\n  }\n  return value !== newVal\n}\n\nvar domProps = {\n  create: updateDOMProps,\n  update: updateDOMProps\n};\n\n/*  */\n\nvar parseStyleText = cached(function (cssText) {\n  var res = {};\n  var listDelimiter = /;(?![^(]*\\))/g;\n  var propertyDelimiter = /:(.+)/;\n  cssText.split(listDelimiter).forEach(function (item) {\n    if (item) {\n      var tmp = item.split(propertyDelimiter);\n      tmp.length > 1 && (res[tmp[0].trim()] = tmp[1].trim());\n    }\n  });\n  return res\n});\n\n// merge static and dynamic style data on the same vnode\nfunction normalizeStyleData (data) {\n  var style = normalizeStyleBinding(data.style);\n  // static style is pre-processed into an object during compilation\n  // and is always a fresh object, so it's safe to merge into it\n  return data.staticStyle\n    ? extend(data.staticStyle, style)\n    : style\n}\n\n// normalize possible array / string values into Object\nfunction normalizeStyleBinding (bindingStyle) {\n  if (Array.isArray(bindingStyle)) {\n    return toObject(bindingStyle)\n  }\n  if (typeof bindingStyle === 'string') {\n    return parseStyleText(bindingStyle)\n  }\n  return bindingStyle\n}\n\n/**\n * parent component style should be after child's\n * so that parent component's style could override it\n */\nfunction getStyle (vnode, checkChild) {\n  var res = {};\n  var styleData;\n\n  if (checkChild) {\n    var childNode = vnode;\n    while (childNode.componentInstance) {\n      childNode = childNode.componentInstance._vnode;\n      if (\n        childNode && childNode.data &&\n        (styleData = normalizeStyleData(childNode.data))\n      ) {\n        extend(res, styleData);\n      }\n    }\n  }\n\n  if ((styleData = normalizeStyleData(vnode.data))) {\n    extend(res, styleData);\n  }\n\n  var parentNode = vnode;\n  while ((parentNode = parentNode.parent)) {\n    if (parentNode.data && (styleData = normalizeStyleData(parentNode.data))) {\n      extend(res, styleData);\n    }\n  }\n  return res\n}\n\n/*  */\n\nvar cssVarRE = /^--/;\nvar importantRE = /\\s*!important$/;\nvar setProp = function (el, name, val) {\n  /* istanbul ignore if */\n  if (cssVarRE.test(name)) {\n    el.style.setProperty(name, val);\n  } else if (importantRE.test(val)) {\n    el.style.setProperty(hyphenate(name), val.replace(importantRE, ''), 'important');\n  } else {\n    var normalizedName = normalize(name);\n    if (Array.isArray(val)) {\n      // Support values array created by autoprefixer, e.g.\n      // {display: [\"-webkit-box\", \"-ms-flexbox\", \"flex\"]}\n      // Set them one by one, and the browser will only set those it can recognize\n      for (var i = 0, len = val.length; i < len; i++) {\n        el.style[normalizedName] = val[i];\n      }\n    } else {\n      el.style[normalizedName] = val;\n    }\n  }\n};\n\nvar vendorNames = ['Webkit', 'Moz', 'ms'];\n\nvar emptyStyle;\nvar normalize = cached(function (prop) {\n  emptyStyle = emptyStyle || document.createElement('div').style;\n  prop = camelize(prop);\n  if (prop !== 'filter' && (prop in emptyStyle)) {\n    return prop\n  }\n  var capName = prop.charAt(0).toUpperCase() + prop.slice(1);\n  for (var i = 0; i < vendorNames.length; i++) {\n    var name = vendorNames[i] + capName;\n    if (name in emptyStyle) {\n      return name\n    }\n  }\n});\n\nfunction updateStyle (oldVnode, vnode) {\n  var data = vnode.data;\n  var oldData = oldVnode.data;\n\n  if (isUndef(data.staticStyle) && isUndef(data.style) &&\n    isUndef(oldData.staticStyle) && isUndef(oldData.style)\n  ) {\n    return\n  }\n\n  var cur, name;\n  var el = vnode.elm;\n  var oldStaticStyle = oldData.staticStyle;\n  var oldStyleBinding = oldData.normalizedStyle || oldData.style || {};\n\n  // if static style exists, stylebinding already merged into it when doing normalizeStyleData\n  var oldStyle = oldStaticStyle || oldStyleBinding;\n\n  var style = normalizeStyleBinding(vnode.data.style) || {};\n\n  // store normalized style under a different key for next diff\n  // make sure to clone it if it's reactive, since the user likely wants\n  // to mutate it.\n  vnode.data.normalizedStyle = isDef(style.__ob__)\n    ? extend({}, style)\n    : style;\n\n  var newStyle = getStyle(vnode, true);\n\n  for (name in oldStyle) {\n    if (isUndef(newStyle[name])) {\n      setProp(el, name, '');\n    }\n  }\n  for (name in newStyle) {\n    cur = newStyle[name];\n    if (cur !== oldStyle[name]) {\n      // ie9 setting to null has no effect, must use empty string\n      setProp(el, name, cur == null ? '' : cur);\n    }\n  }\n}\n\nvar style = {\n  create: updateStyle,\n  update: updateStyle\n};\n\n/*  */\n\nvar whitespaceRE = /\\s+/;\n\n/**\n * Add class with compatibility for SVG since classList is not supported on\n * SVG elements in IE\n */\nfunction addClass (el, cls) {\n  /* istanbul ignore if */\n  if (!cls || !(cls = cls.trim())) {\n    return\n  }\n\n  /* istanbul ignore else */\n  if (el.classList) {\n    if (cls.indexOf(' ') > -1) {\n      cls.split(whitespaceRE).forEach(function (c) { return el.classList.add(c); });\n    } else {\n      el.classList.add(cls);\n    }\n  } else {\n    var cur = \" \" + (el.getAttribute('class') || '') + \" \";\n    if (cur.indexOf(' ' + cls + ' ') < 0) {\n      el.setAttribute('class', (cur + cls).trim());\n    }\n  }\n}\n\n/**\n * Remove class with compatibility for SVG since classList is not supported on\n * SVG elements in IE\n */\nfunction removeClass (el, cls) {\n  /* istanbul ignore if */\n  if (!cls || !(cls = cls.trim())) {\n    return\n  }\n\n  /* istanbul ignore else */\n  if (el.classList) {\n    if (cls.indexOf(' ') > -1) {\n      cls.split(whitespaceRE).forEach(function (c) { return el.classList.remove(c); });\n    } else {\n      el.classList.remove(cls);\n    }\n    if (!el.classList.length) {\n      el.removeAttribute('class');\n    }\n  } else {\n    var cur = \" \" + (el.getAttribute('class') || '') + \" \";\n    var tar = ' ' + cls + ' ';\n    while (cur.indexOf(tar) >= 0) {\n      cur = cur.replace(tar, ' ');\n    }\n    cur = cur.trim();\n    if (cur) {\n      el.setAttribute('class', cur);\n    } else {\n      el.removeAttribute('class');\n    }\n  }\n}\n\n/*  */\n\nfunction resolveTransition (def$$1) {\n  if (!def$$1) {\n    return\n  }\n  /* istanbul ignore else */\n  if (typeof def$$1 === 'object') {\n    var res = {};\n    if (def$$1.css !== false) {\n      extend(res, autoCssTransition(def$$1.name || 'v'));\n    }\n    extend(res, def$$1);\n    return res\n  } else if (typeof def$$1 === 'string') {\n    return autoCssTransition(def$$1)\n  }\n}\n\nvar autoCssTransition = cached(function (name) {\n  return {\n    enterClass: (name + \"-enter\"),\n    enterToClass: (name + \"-enter-to\"),\n    enterActiveClass: (name + \"-enter-active\"),\n    leaveClass: (name + \"-leave\"),\n    leaveToClass: (name + \"-leave-to\"),\n    leaveActiveClass: (name + \"-leave-active\")\n  }\n});\n\nvar hasTransition = inBrowser && !isIE9;\nvar TRANSITION = 'transition';\nvar ANIMATION = 'animation';\n\n// Transition property/event sniffing\nvar transitionProp = 'transition';\nvar transitionEndEvent = 'transitionend';\nvar animationProp = 'animation';\nvar animationEndEvent = 'animationend';\nif (hasTransition) {\n  /* istanbul ignore if */\n  if (window.ontransitionend === undefined &&\n    window.onwebkittransitionend !== undefined\n  ) {\n    transitionProp = 'WebkitTransition';\n    transitionEndEvent = 'webkitTransitionEnd';\n  }\n  if (window.onanimationend === undefined &&\n    window.onwebkitanimationend !== undefined\n  ) {\n    animationProp = 'WebkitAnimation';\n    animationEndEvent = 'webkitAnimationEnd';\n  }\n}\n\n// binding to window is necessary to make hot reload work in IE in strict mode\nvar raf = inBrowser\n  ? window.requestAnimationFrame\n    ? window.requestAnimationFrame.bind(window)\n    : setTimeout\n  : /* istanbul ignore next */ function (fn) { return fn(); };\n\nfunction nextFrame (fn) {\n  raf(function () {\n    raf(fn);\n  });\n}\n\nfunction addTransitionClass (el, cls) {\n  var transitionClasses = el._transitionClasses || (el._transitionClasses = []);\n  if (transitionClasses.indexOf(cls) < 0) {\n    transitionClasses.push(cls);\n    addClass(el, cls);\n  }\n}\n\nfunction removeTransitionClass (el, cls) {\n  if (el._transitionClasses) {\n    remove(el._transitionClasses, cls);\n  }\n  removeClass(el, cls);\n}\n\nfunction whenTransitionEnds (\n  el,\n  expectedType,\n  cb\n) {\n  var ref = getTransitionInfo(el, expectedType);\n  var type = ref.type;\n  var timeout = ref.timeout;\n  var propCount = ref.propCount;\n  if (!type) { return cb() }\n  var event = type === TRANSITION ? transitionEndEvent : animationEndEvent;\n  var ended = 0;\n  var end = function () {\n    el.removeEventListener(event, onEnd);\n    cb();\n  };\n  var onEnd = function (e) {\n    if (e.target === el) {\n      if (++ended >= propCount) {\n        end();\n      }\n    }\n  };\n  setTimeout(function () {\n    if (ended < propCount) {\n      end();\n    }\n  }, timeout + 1);\n  el.addEventListener(event, onEnd);\n}\n\nvar transformRE = /\\b(transform|all)(,|$)/;\n\nfunction getTransitionInfo (el, expectedType) {\n  var styles = window.getComputedStyle(el);\n  // JSDOM may return undefined for transition properties\n  var transitionDelays = (styles[transitionProp + 'Delay'] || '').split(', ');\n  var transitionDurations = (styles[transitionProp + 'Duration'] || '').split(', ');\n  var transitionTimeout = getTimeout(transitionDelays, transitionDurations);\n  var animationDelays = (styles[animationProp + 'Delay'] || '').split(', ');\n  var animationDurations = (styles[animationProp + 'Duration'] || '').split(', ');\n  var animationTimeout = getTimeout(animationDelays, animationDurations);\n\n  var type;\n  var timeout = 0;\n  var propCount = 0;\n  /* istanbul ignore if */\n  if (expectedType === TRANSITION) {\n    if (transitionTimeout > 0) {\n      type = TRANSITION;\n      timeout = transitionTimeout;\n      propCount = transitionDurations.length;\n    }\n  } else if (expectedType === ANIMATION) {\n    if (animationTimeout > 0) {\n      type = ANIMATION;\n      timeout = animationTimeout;\n      propCount = animationDurations.length;\n    }\n  } else {\n    timeout = Math.max(transitionTimeout, animationTimeout);\n    type = timeout > 0\n      ? transitionTimeout > animationTimeout\n        ? TRANSITION\n        : ANIMATION\n      : null;\n    propCount = type\n      ? type === TRANSITION\n        ? transitionDurations.length\n        : animationDurations.length\n      : 0;\n  }\n  var hasTransform =\n    type === TRANSITION &&\n    transformRE.test(styles[transitionProp + 'Property']);\n  return {\n    type: type,\n    timeout: timeout,\n    propCount: propCount,\n    hasTransform: hasTransform\n  }\n}\n\nfunction getTimeout (delays, durations) {\n  /* istanbul ignore next */\n  while (delays.length < durations.length) {\n    delays = delays.concat(delays);\n  }\n\n  return Math.max.apply(null, durations.map(function (d, i) {\n    return toMs(d) + toMs(delays[i])\n  }))\n}\n\n// Old versions of Chromium (below 61.0.3163.100) formats floating pointer numbers\n// in a locale-dependent way, using a comma instead of a dot.\n// If comma is not replaced with a dot, the input will be rounded down (i.e. acting\n// as a floor function) causing unexpected behaviors\nfunction toMs (s) {\n  return Number(s.slice(0, -1).replace(',', '.')) * 1000\n}\n\n/*  */\n\nfunction enter (vnode, toggleDisplay) {\n  var el = vnode.elm;\n\n  // call leave callback now\n  if (isDef(el._leaveCb)) {\n    el._leaveCb.cancelled = true;\n    el._leaveCb();\n  }\n\n  var data = resolveTransition(vnode.data.transition);\n  if (isUndef(data)) {\n    return\n  }\n\n  /* istanbul ignore if */\n  if (isDef(el._enterCb) || el.nodeType !== 1) {\n    return\n  }\n\n  var css = data.css;\n  var type = data.type;\n  var enterClass = data.enterClass;\n  var enterToClass = data.enterToClass;\n  var enterActiveClass = data.enterActiveClass;\n  var appearClass = data.appearClass;\n  var appearToClass = data.appearToClass;\n  var appearActiveClass = data.appearActiveClass;\n  var beforeEnter = data.beforeEnter;\n  var enter = data.enter;\n  var afterEnter = data.afterEnter;\n  var enterCancelled = data.enterCancelled;\n  var beforeAppear = data.beforeAppear;\n  var appear = data.appear;\n  var afterAppear = data.afterAppear;\n  var appearCancelled = data.appearCancelled;\n  var duration = data.duration;\n\n  // activeInstance will always be the <transition> component managing this\n  // transition. One edge case to check is when the <transition> is placed\n  // as the root node of a child component. In that case we need to check\n  // <transition>'s parent for appear check.\n  var context = activeInstance;\n  var transitionNode = activeInstance.$vnode;\n  while (transitionNode && transitionNode.parent) {\n    context = transitionNode.context;\n    transitionNode = transitionNode.parent;\n  }\n\n  var isAppear = !context._isMounted || !vnode.isRootInsert;\n\n  if (isAppear && !appear && appear !== '') {\n    return\n  }\n\n  var startClass = isAppear && appearClass\n    ? appearClass\n    : enterClass;\n  var activeClass = isAppear && appearActiveClass\n    ? appearActiveClass\n    : enterActiveClass;\n  var toClass = isAppear && appearToClass\n    ? appearToClass\n    : enterToClass;\n\n  var beforeEnterHook = isAppear\n    ? (beforeAppear || beforeEnter)\n    : beforeEnter;\n  var enterHook = isAppear\n    ? (typeof appear === 'function' ? appear : enter)\n    : enter;\n  var afterEnterHook = isAppear\n    ? (afterAppear || afterEnter)\n    : afterEnter;\n  var enterCancelledHook = isAppear\n    ? (appearCancelled || enterCancelled)\n    : enterCancelled;\n\n  var explicitEnterDuration = toNumber(\n    isObject(duration)\n      ? duration.enter\n      : duration\n  );\n\n  if (process.env.NODE_ENV !== 'production' && explicitEnterDuration != null) {\n    checkDuration(explicitEnterDuration, 'enter', vnode);\n  }\n\n  var expectsCSS = css !== false && !isIE9;\n  var userWantsControl = getHookArgumentsLength(enterHook);\n\n  var cb = el._enterCb = once(function () {\n    if (expectsCSS) {\n      removeTransitionClass(el, toClass);\n      removeTransitionClass(el, activeClass);\n    }\n    if (cb.cancelled) {\n      if (expectsCSS) {\n        removeTransitionClass(el, startClass);\n      }\n      enterCancelledHook && enterCancelledHook(el);\n    } else {\n      afterEnterHook && afterEnterHook(el);\n    }\n    el._enterCb = null;\n  });\n\n  if (!vnode.data.show) {\n    // remove pending leave element on enter by injecting an insert hook\n    mergeVNodeHook(vnode, 'insert', function () {\n      var parent = el.parentNode;\n      var pendingNode = parent && parent._pending && parent._pending[vnode.key];\n      if (pendingNode &&\n        pendingNode.tag === vnode.tag &&\n        pendingNode.elm._leaveCb\n      ) {\n        pendingNode.elm._leaveCb();\n      }\n      enterHook && enterHook(el, cb);\n    });\n  }\n\n  // start enter transition\n  beforeEnterHook && beforeEnterHook(el);\n  if (expectsCSS) {\n    addTransitionClass(el, startClass);\n    addTransitionClass(el, activeClass);\n    nextFrame(function () {\n      removeTransitionClass(el, startClass);\n      if (!cb.cancelled) {\n        addTransitionClass(el, toClass);\n        if (!userWantsControl) {\n          if (isValidDuration(explicitEnterDuration)) {\n            setTimeout(cb, explicitEnterDuration);\n          } else {\n            whenTransitionEnds(el, type, cb);\n          }\n        }\n      }\n    });\n  }\n\n  if (vnode.data.show) {\n    toggleDisplay && toggleDisplay();\n    enterHook && enterHook(el, cb);\n  }\n\n  if (!expectsCSS && !userWantsControl) {\n    cb();\n  }\n}\n\nfunction leave (vnode, rm) {\n  var el = vnode.elm;\n\n  // call enter callback now\n  if (isDef(el._enterCb)) {\n    el._enterCb.cancelled = true;\n    el._enterCb();\n  }\n\n  var data = resolveTransition(vnode.data.transition);\n  if (isUndef(data) || el.nodeType !== 1) {\n    return rm()\n  }\n\n  /* istanbul ignore if */\n  if (isDef(el._leaveCb)) {\n    return\n  }\n\n  var css = data.css;\n  var type = data.type;\n  var leaveClass = data.leaveClass;\n  var leaveToClass = data.leaveToClass;\n  var leaveActiveClass = data.leaveActiveClass;\n  var beforeLeave = data.beforeLeave;\n  var leave = data.leave;\n  var afterLeave = data.afterLeave;\n  var leaveCancelled = data.leaveCancelled;\n  var delayLeave = data.delayLeave;\n  var duration = data.duration;\n\n  var expectsCSS = css !== false && !isIE9;\n  var userWantsControl = getHookArgumentsLength(leave);\n\n  var explicitLeaveDuration = toNumber(\n    isObject(duration)\n      ? duration.leave\n      : duration\n  );\n\n  if (process.env.NODE_ENV !== 'production' && isDef(explicitLeaveDuration)) {\n    checkDuration(explicitLeaveDuration, 'leave', vnode);\n  }\n\n  var cb = el._leaveCb = once(function () {\n    if (el.parentNode && el.parentNode._pending) {\n      el.parentNode._pending[vnode.key] = null;\n    }\n    if (expectsCSS) {\n      removeTransitionClass(el, leaveToClass);\n      removeTransitionClass(el, leaveActiveClass);\n    }\n    if (cb.cancelled) {\n      if (expectsCSS) {\n        removeTransitionClass(el, leaveClass);\n      }\n      leaveCancelled && leaveCancelled(el);\n    } else {\n      rm();\n      afterLeave && afterLeave(el);\n    }\n    el._leaveCb = null;\n  });\n\n  if (delayLeave) {\n    delayLeave(performLeave);\n  } else {\n    performLeave();\n  }\n\n  function performLeave () {\n    // the delayed leave may have already been cancelled\n    if (cb.cancelled) {\n      return\n    }\n    // record leaving element\n    if (!vnode.data.show && el.parentNode) {\n      (el.parentNode._pending || (el.parentNode._pending = {}))[(vnode.key)] = vnode;\n    }\n    beforeLeave && beforeLeave(el);\n    if (expectsCSS) {\n      addTransitionClass(el, leaveClass);\n      addTransitionClass(el, leaveActiveClass);\n      nextFrame(function () {\n        removeTransitionClass(el, leaveClass);\n        if (!cb.cancelled) {\n          addTransitionClass(el, leaveToClass);\n          if (!userWantsControl) {\n            if (isValidDuration(explicitLeaveDuration)) {\n              setTimeout(cb, explicitLeaveDuration);\n            } else {\n              whenTransitionEnds(el, type, cb);\n            }\n          }\n        }\n      });\n    }\n    leave && leave(el, cb);\n    if (!expectsCSS && !userWantsControl) {\n      cb();\n    }\n  }\n}\n\n// only used in dev mode\nfunction checkDuration (val, name, vnode) {\n  if (typeof val !== 'number') {\n    warn(\n      \"<transition> explicit \" + name + \" duration is not a valid number - \" +\n      \"got \" + (JSON.stringify(val)) + \".\",\n      vnode.context\n    );\n  } else if (isNaN(val)) {\n    warn(\n      \"<transition> explicit \" + name + \" duration is NaN - \" +\n      'the duration expression might be incorrect.',\n      vnode.context\n    );\n  }\n}\n\nfunction isValidDuration (val) {\n  return typeof val === 'number' && !isNaN(val)\n}\n\n/**\n * Normalize a transition hook's argument length. The hook may be:\n * - a merged hook (invoker) with the original in .fns\n * - a wrapped component method (check ._length)\n * - a plain function (.length)\n */\nfunction getHookArgumentsLength (fn) {\n  if (isUndef(fn)) {\n    return false\n  }\n  var invokerFns = fn.fns;\n  if (isDef(invokerFns)) {\n    // invoker\n    return getHookArgumentsLength(\n      Array.isArray(invokerFns)\n        ? invokerFns[0]\n        : invokerFns\n    )\n  } else {\n    return (fn._length || fn.length) > 1\n  }\n}\n\nfunction _enter (_, vnode) {\n  if (vnode.data.show !== true) {\n    enter(vnode);\n  }\n}\n\nvar transition = inBrowser ? {\n  create: _enter,\n  activate: _enter,\n  remove: function remove$$1 (vnode, rm) {\n    /* istanbul ignore else */\n    if (vnode.data.show !== true) {\n      leave(vnode, rm);\n    } else {\n      rm();\n    }\n  }\n} : {};\n\nvar platformModules = [\n  attrs,\n  klass,\n  events,\n  domProps,\n  style,\n  transition\n];\n\n/*  */\n\n// the directive module should be applied last, after all\n// built-in modules have been applied.\nvar modules = platformModules.concat(baseModules);\n\nvar patch = createPatchFunction({ nodeOps: nodeOps, modules: modules });\n\n/**\n * Not type checking this file because flow doesn't like attaching\n * properties to Elements.\n */\n\n/* istanbul ignore if */\nif (isIE9) {\n  // http://www.matts411.com/post/internet-explorer-9-oninput/\n  document.addEventListener('selectionchange', function () {\n    var el = document.activeElement;\n    if (el && el.vmodel) {\n      trigger(el, 'input');\n    }\n  });\n}\n\nvar directive = {\n  inserted: function inserted (el, binding, vnode, oldVnode) {\n    if (vnode.tag === 'select') {\n      // #6903\n      if (oldVnode.elm && !oldVnode.elm._vOptions) {\n        mergeVNodeHook(vnode, 'postpatch', function () {\n          directive.componentUpdated(el, binding, vnode);\n        });\n      } else {\n        setSelected(el, binding, vnode.context);\n      }\n      el._vOptions = [].map.call(el.options, getValue);\n    } else if (vnode.tag === 'textarea' || isTextInputType(el.type)) {\n      el._vModifiers = binding.modifiers;\n      if (!binding.modifiers.lazy) {\n        el.addEventListener('compositionstart', onCompositionStart);\n        el.addEventListener('compositionend', onCompositionEnd);\n        // Safari < 10.2 & UIWebView doesn't fire compositionend when\n        // switching focus before confirming composition choice\n        // this also fixes the issue where some browsers e.g. iOS Chrome\n        // fires \"change\" instead of \"input\" on autocomplete.\n        el.addEventListener('change', onCompositionEnd);\n        /* istanbul ignore if */\n        if (isIE9) {\n          el.vmodel = true;\n        }\n      }\n    }\n  },\n\n  componentUpdated: function componentUpdated (el, binding, vnode) {\n    if (vnode.tag === 'select') {\n      setSelected(el, binding, vnode.context);\n      // in case the options rendered by v-for have changed,\n      // it's possible that the value is out-of-sync with the rendered options.\n      // detect such cases and filter out values that no longer has a matching\n      // option in the DOM.\n      var prevOptions = el._vOptions;\n      var curOptions = el._vOptions = [].map.call(el.options, getValue);\n      if (curOptions.some(function (o, i) { return !looseEqual(o, prevOptions[i]); })) {\n        // trigger change event if\n        // no matching option found for at least one value\n        var needReset = el.multiple\n          ? binding.value.some(function (v) { return hasNoMatchingOption(v, curOptions); })\n          : binding.value !== binding.oldValue && hasNoMatchingOption(binding.value, curOptions);\n        if (needReset) {\n          trigger(el, 'change');\n        }\n      }\n    }\n  }\n};\n\nfunction setSelected (el, binding, vm) {\n  actuallySetSelected(el, binding, vm);\n  /* istanbul ignore if */\n  if (isIE || isEdge) {\n    setTimeout(function () {\n      actuallySetSelected(el, binding, vm);\n    }, 0);\n  }\n}\n\nfunction actuallySetSelected (el, binding, vm) {\n  var value = binding.value;\n  var isMultiple = el.multiple;\n  if (isMultiple && !Array.isArray(value)) {\n    process.env.NODE_ENV !== 'production' && warn(\n      \"<select multiple v-model=\\\"\" + (binding.expression) + \"\\\"> \" +\n      \"expects an Array value for its binding, but got \" + (Object.prototype.toString.call(value).slice(8, -1)),\n      vm\n    );\n    return\n  }\n  var selected, option;\n  for (var i = 0, l = el.options.length; i < l; i++) {\n    option = el.options[i];\n    if (isMultiple) {\n      selected = looseIndexOf(value, getValue(option)) > -1;\n      if (option.selected !== selected) {\n        option.selected = selected;\n      }\n    } else {\n      if (looseEqual(getValue(option), value)) {\n        if (el.selectedIndex !== i) {\n          el.selectedIndex = i;\n        }\n        return\n      }\n    }\n  }\n  if (!isMultiple) {\n    el.selectedIndex = -1;\n  }\n}\n\nfunction hasNoMatchingOption (value, options) {\n  return options.every(function (o) { return !looseEqual(o, value); })\n}\n\nfunction getValue (option) {\n  return '_value' in option\n    ? option._value\n    : option.value\n}\n\nfunction onCompositionStart (e) {\n  e.target.composing = true;\n}\n\nfunction onCompositionEnd (e) {\n  // prevent triggering an input event for no reason\n  if (!e.target.composing) { return }\n  e.target.composing = false;\n  trigger(e.target, 'input');\n}\n\nfunction trigger (el, type) {\n  var e = document.createEvent('HTMLEvents');\n  e.initEvent(type, true, true);\n  el.dispatchEvent(e);\n}\n\n/*  */\n\n// recursively search for possible transition defined inside the component root\nfunction locateNode (vnode) {\n  return vnode.componentInstance && (!vnode.data || !vnode.data.transition)\n    ? locateNode(vnode.componentInstance._vnode)\n    : vnode\n}\n\nvar show = {\n  bind: function bind (el, ref, vnode) {\n    var value = ref.value;\n\n    vnode = locateNode(vnode);\n    var transition$$1 = vnode.data && vnode.data.transition;\n    var originalDisplay = el.__vOriginalDisplay =\n      el.style.display === 'none' ? '' : el.style.display;\n    if (value && transition$$1) {\n      vnode.data.show = true;\n      enter(vnode, function () {\n        el.style.display = originalDisplay;\n      });\n    } else {\n      el.style.display = value ? originalDisplay : 'none';\n    }\n  },\n\n  update: function update (el, ref, vnode) {\n    var value = ref.value;\n    var oldValue = ref.oldValue;\n\n    /* istanbul ignore if */\n    if (!value === !oldValue) { return }\n    vnode = locateNode(vnode);\n    var transition$$1 = vnode.data && vnode.data.transition;\n    if (transition$$1) {\n      vnode.data.show = true;\n      if (value) {\n        enter(vnode, function () {\n          el.style.display = el.__vOriginalDisplay;\n        });\n      } else {\n        leave(vnode, function () {\n          el.style.display = 'none';\n        });\n      }\n    } else {\n      el.style.display = value ? el.__vOriginalDisplay : 'none';\n    }\n  },\n\n  unbind: function unbind (\n    el,\n    binding,\n    vnode,\n    oldVnode,\n    isDestroy\n  ) {\n    if (!isDestroy) {\n      el.style.display = el.__vOriginalDisplay;\n    }\n  }\n};\n\nvar platformDirectives = {\n  model: directive,\n  show: show\n};\n\n/*  */\n\nvar transitionProps = {\n  name: String,\n  appear: Boolean,\n  css: Boolean,\n  mode: String,\n  type: String,\n  enterClass: String,\n  leaveClass: String,\n  enterToClass: String,\n  leaveToClass: String,\n  enterActiveClass: String,\n  leaveActiveClass: String,\n  appearClass: String,\n  appearActiveClass: String,\n  appearToClass: String,\n  duration: [Number, String, Object]\n};\n\n// in case the child is also an abstract component, e.g. <keep-alive>\n// we want to recursively retrieve the real component to be rendered\nfunction getRealChild (vnode) {\n  var compOptions = vnode && vnode.componentOptions;\n  if (compOptions && compOptions.Ctor.options.abstract) {\n    return getRealChild(getFirstComponentChild(compOptions.children))\n  } else {\n    return vnode\n  }\n}\n\nfunction extractTransitionData (comp) {\n  var data = {};\n  var options = comp.$options;\n  // props\n  for (var key in options.propsData) {\n    data[key] = comp[key];\n  }\n  // events.\n  // extract listeners and pass them directly to the transition methods\n  var listeners = options._parentListeners;\n  for (var key$1 in listeners) {\n    data[camelize(key$1)] = listeners[key$1];\n  }\n  return data\n}\n\nfunction placeholder (h, rawChild) {\n  if (/\\d-keep-alive$/.test(rawChild.tag)) {\n    return h('keep-alive', {\n      props: rawChild.componentOptions.propsData\n    })\n  }\n}\n\nfunction hasParentTransition (vnode) {\n  while ((vnode = vnode.parent)) {\n    if (vnode.data.transition) {\n      return true\n    }\n  }\n}\n\nfunction isSameChild (child, oldChild) {\n  return oldChild.key === child.key && oldChild.tag === child.tag\n}\n\nvar isNotTextNode = function (c) { return c.tag || isAsyncPlaceholder(c); };\n\nvar isVShowDirective = function (d) { return d.name === 'show'; };\n\nvar Transition = {\n  name: 'transition',\n  props: transitionProps,\n  abstract: true,\n\n  render: function render (h) {\n    var this$1 = this;\n\n    var children = this.$slots.default;\n    if (!children) {\n      return\n    }\n\n    // filter out text nodes (possible whitespaces)\n    children = children.filter(isNotTextNode);\n    /* istanbul ignore if */\n    if (!children.length) {\n      return\n    }\n\n    // warn multiple elements\n    if (process.env.NODE_ENV !== 'production' && children.length > 1) {\n      warn(\n        '<transition> can only be used on a single element. Use ' +\n        '<transition-group> for lists.',\n        this.$parent\n      );\n    }\n\n    var mode = this.mode;\n\n    // warn invalid mode\n    if (process.env.NODE_ENV !== 'production' &&\n      mode && mode !== 'in-out' && mode !== 'out-in'\n    ) {\n      warn(\n        'invalid <transition> mode: ' + mode,\n        this.$parent\n      );\n    }\n\n    var rawChild = children[0];\n\n    // if this is a component root node and the component's\n    // parent container node also has transition, skip.\n    if (hasParentTransition(this.$vnode)) {\n      return rawChild\n    }\n\n    // apply transition data to child\n    // use getRealChild() to ignore abstract components e.g. keep-alive\n    var child = getRealChild(rawChild);\n    /* istanbul ignore if */\n    if (!child) {\n      return rawChild\n    }\n\n    if (this._leaving) {\n      return placeholder(h, rawChild)\n    }\n\n    // ensure a key that is unique to the vnode type and to this transition\n    // component instance. This key will be used to remove pending leaving nodes\n    // during entering.\n    var id = \"__transition-\" + (this._uid) + \"-\";\n    child.key = child.key == null\n      ? child.isComment\n        ? id + 'comment'\n        : id + child.tag\n      : isPrimitive(child.key)\n        ? (String(child.key).indexOf(id) === 0 ? child.key : id + child.key)\n        : child.key;\n\n    var data = (child.data || (child.data = {})).transition = extractTransitionData(this);\n    var oldRawChild = this._vnode;\n    var oldChild = getRealChild(oldRawChild);\n\n    // mark v-show\n    // so that the transition module can hand over the control to the directive\n    if (child.data.directives && child.data.directives.some(isVShowDirective)) {\n      child.data.show = true;\n    }\n\n    if (\n      oldChild &&\n      oldChild.data &&\n      !isSameChild(child, oldChild) &&\n      !isAsyncPlaceholder(oldChild) &&\n      // #6687 component root is a comment node\n      !(oldChild.componentInstance && oldChild.componentInstance._vnode.isComment)\n    ) {\n      // replace old child transition data with fresh one\n      // important for dynamic transitions!\n      var oldData = oldChild.data.transition = extend({}, data);\n      // handle transition mode\n      if (mode === 'out-in') {\n        // return placeholder node and queue update when leave finishes\n        this._leaving = true;\n        mergeVNodeHook(oldData, 'afterLeave', function () {\n          this$1._leaving = false;\n          this$1.$forceUpdate();\n        });\n        return placeholder(h, rawChild)\n      } else if (mode === 'in-out') {\n        if (isAsyncPlaceholder(child)) {\n          return oldRawChild\n        }\n        var delayedLeave;\n        var performLeave = function () { delayedLeave(); };\n        mergeVNodeHook(data, 'afterEnter', performLeave);\n        mergeVNodeHook(data, 'enterCancelled', performLeave);\n        mergeVNodeHook(oldData, 'delayLeave', function (leave) { delayedLeave = leave; });\n      }\n    }\n\n    return rawChild\n  }\n};\n\n/*  */\n\nvar props = extend({\n  tag: String,\n  moveClass: String\n}, transitionProps);\n\ndelete props.mode;\n\nvar TransitionGroup = {\n  props: props,\n\n  beforeMount: function beforeMount () {\n    var this$1 = this;\n\n    var update = this._update;\n    this._update = function (vnode, hydrating) {\n      var restoreActiveInstance = setActiveInstance(this$1);\n      // force removing pass\n      this$1.__patch__(\n        this$1._vnode,\n        this$1.kept,\n        false, // hydrating\n        true // removeOnly (!important, avoids unnecessary moves)\n      );\n      this$1._vnode = this$1.kept;\n      restoreActiveInstance();\n      update.call(this$1, vnode, hydrating);\n    };\n  },\n\n  render: function render (h) {\n    var tag = this.tag || this.$vnode.data.tag || 'span';\n    var map = Object.create(null);\n    var prevChildren = this.prevChildren = this.children;\n    var rawChildren = this.$slots.default || [];\n    var children = this.children = [];\n    var transitionData = extractTransitionData(this);\n\n    for (var i = 0; i < rawChildren.length; i++) {\n      var c = rawChildren[i];\n      if (c.tag) {\n        if (c.key != null && String(c.key).indexOf('__vlist') !== 0) {\n          children.push(c);\n          map[c.key] = c\n          ;(c.data || (c.data = {})).transition = transitionData;\n        } else if (process.env.NODE_ENV !== 'production') {\n          var opts = c.componentOptions;\n          var name = opts ? (opts.Ctor.options.name || opts.tag || '') : c.tag;\n          warn((\"<transition-group> children must be keyed: <\" + name + \">\"));\n        }\n      }\n    }\n\n    if (prevChildren) {\n      var kept = [];\n      var removed = [];\n      for (var i$1 = 0; i$1 < prevChildren.length; i$1++) {\n        var c$1 = prevChildren[i$1];\n        c$1.data.transition = transitionData;\n        c$1.data.pos = c$1.elm.getBoundingClientRect();\n        if (map[c$1.key]) {\n          kept.push(c$1);\n        } else {\n          removed.push(c$1);\n        }\n      }\n      this.kept = h(tag, null, kept);\n      this.removed = removed;\n    }\n\n    return h(tag, null, children)\n  },\n\n  updated: function updated () {\n    var children = this.prevChildren;\n    var moveClass = this.moveClass || ((this.name || 'v') + '-move');\n    if (!children.length || !this.hasMove(children[0].elm, moveClass)) {\n      return\n    }\n\n    // we divide the work into three loops to avoid mixing DOM reads and writes\n    // in each iteration - which helps prevent layout thrashing.\n    children.forEach(callPendingCbs);\n    children.forEach(recordPosition);\n    children.forEach(applyTranslation);\n\n    // force reflow to put everything in position\n    // assign to this to avoid being removed in tree-shaking\n    // $flow-disable-line\n    this._reflow = document.body.offsetHeight;\n\n    children.forEach(function (c) {\n      if (c.data.moved) {\n        var el = c.elm;\n        var s = el.style;\n        addTransitionClass(el, moveClass);\n        s.transform = s.WebkitTransform = s.transitionDuration = '';\n        el.addEventListener(transitionEndEvent, el._moveCb = function cb (e) {\n          if (e && e.target !== el) {\n            return\n          }\n          if (!e || /transform$/.test(e.propertyName)) {\n            el.removeEventListener(transitionEndEvent, cb);\n            el._moveCb = null;\n            removeTransitionClass(el, moveClass);\n          }\n        });\n      }\n    });\n  },\n\n  methods: {\n    hasMove: function hasMove (el, moveClass) {\n      /* istanbul ignore if */\n      if (!hasTransition) {\n        return false\n      }\n      /* istanbul ignore if */\n      if (this._hasMove) {\n        return this._hasMove\n      }\n      // Detect whether an element with the move class applied has\n      // CSS transitions. Since the element may be inside an entering\n      // transition at this very moment, we make a clone of it and remove\n      // all other transition classes applied to ensure only the move class\n      // is applied.\n      var clone = el.cloneNode();\n      if (el._transitionClasses) {\n        el._transitionClasses.forEach(function (cls) { removeClass(clone, cls); });\n      }\n      addClass(clone, moveClass);\n      clone.style.display = 'none';\n      this.$el.appendChild(clone);\n      var info = getTransitionInfo(clone);\n      this.$el.removeChild(clone);\n      return (this._hasMove = info.hasTransform)\n    }\n  }\n};\n\nfunction callPendingCbs (c) {\n  /* istanbul ignore if */\n  if (c.elm._moveCb) {\n    c.elm._moveCb();\n  }\n  /* istanbul ignore if */\n  if (c.elm._enterCb) {\n    c.elm._enterCb();\n  }\n}\n\nfunction recordPosition (c) {\n  c.data.newPos = c.elm.getBoundingClientRect();\n}\n\nfunction applyTranslation (c) {\n  var oldPos = c.data.pos;\n  var newPos = c.data.newPos;\n  var dx = oldPos.left - newPos.left;\n  var dy = oldPos.top - newPos.top;\n  if (dx || dy) {\n    c.data.moved = true;\n    var s = c.elm.style;\n    s.transform = s.WebkitTransform = \"translate(\" + dx + \"px,\" + dy + \"px)\";\n    s.transitionDuration = '0s';\n  }\n}\n\nvar platformComponents = {\n  Transition: Transition,\n  TransitionGroup: TransitionGroup\n};\n\n/*  */\n\n// install platform specific utils\nVue.config.mustUseProp = mustUseProp;\nVue.config.isReservedTag = isReservedTag;\nVue.config.isReservedAttr = isReservedAttr;\nVue.config.getTagNamespace = getTagNamespace;\nVue.config.isUnknownElement = isUnknownElement;\n\n// install platform runtime directives & components\nextend(Vue.options.directives, platformDirectives);\nextend(Vue.options.components, platformComponents);\n\n// install platform patch function\nVue.prototype.__patch__ = inBrowser ? patch : noop;\n\n// public mount method\nVue.prototype.$mount = function (\n  el,\n  hydrating\n) {\n  el = el && inBrowser ? query(el) : undefined;\n  return mountComponent(this, el, hydrating)\n};\n\n// devtools global hook\n/* istanbul ignore next */\nif (inBrowser) {\n  setTimeout(function () {\n    if (config.devtools) {\n      if (devtools) {\n        devtools.emit('init', Vue);\n      } else if (\n        process.env.NODE_ENV !== 'production' &&\n        process.env.NODE_ENV !== 'test'\n      ) {\n        console[console.info ? 'info' : 'log'](\n          'Download the Vue Devtools extension for a better development experience:\\n' +\n          'https://github.com/vuejs/vue-devtools'\n        );\n      }\n    }\n    if (process.env.NODE_ENV !== 'production' &&\n      process.env.NODE_ENV !== 'test' &&\n      config.productionTip !== false &&\n      typeof console !== 'undefined'\n    ) {\n      console[console.info ? 'info' : 'log'](\n        \"You are running Vue in development mode.\\n\" +\n        \"Make sure to turn on production mode when deploying for production.\\n\" +\n        \"See more tips at https://vuejs.org/guide/deployment.html\"\n      );\n    }\n  }, 0);\n}\n\n/*  */\n\nexport default Vue;\n","/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n  var index = -1,\n      length = array.length;\n\n  if (start < 0) {\n    start = -start > length ? 0 : (length + start);\n  }\n  end = end > length ? length : end;\n  if (end < 0) {\n    end += length;\n  }\n  length = start > end ? 0 : ((end - start) >>> 0);\n  start >>>= 0;\n\n  var result = Array(length);\n  while (++index < length) {\n    result[index] = array[index + start];\n  }\n  return result;\n}\n\nmodule.exports = baseSlice;\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","var store = require('./_shared')('wks');\nvar uid = require('./_uid');\nvar Symbol = require('./_global').Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n  return store[name] || (store[name] =\n    USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n","var SetCache = require('./_SetCache'),\n    arrayIncludes = require('./_arrayIncludes'),\n    arrayIncludesWith = require('./_arrayIncludesWith'),\n    cacheHas = require('./_cacheHas'),\n    createSet = require('./_createSet'),\n    setToArray = require('./_setToArray');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\nfunction baseUniq(array, iteratee, comparator) {\n  var index = -1,\n      includes = arrayIncludes,\n      length = array.length,\n      isCommon = true,\n      result = [],\n      seen = result;\n\n  if (comparator) {\n    isCommon = false;\n    includes = arrayIncludesWith;\n  }\n  else if (length >= LARGE_ARRAY_SIZE) {\n    var set = iteratee ? null : createSet(array);\n    if (set) {\n      return setToArray(set);\n    }\n    isCommon = false;\n    includes = cacheHas;\n    seen = new SetCache;\n  }\n  else {\n    seen = iteratee ? [] : result;\n  }\n  outer:\n  while (++index < length) {\n    var value = array[index],\n        computed = iteratee ? iteratee(value) : value;\n\n    value = (comparator || value !== 0) ? value : 0;\n    if (isCommon && computed === computed) {\n      var seenIndex = seen.length;\n      while (seenIndex--) {\n        if (seen[seenIndex] === computed) {\n          continue outer;\n        }\n      }\n      if (iteratee) {\n        seen.push(computed);\n      }\n      result.push(value);\n    }\n    else if (!includes(seen, computed, comparator)) {\n      if (seen !== result) {\n        seen.push(computed);\n      }\n      result.push(value);\n    }\n  }\n  return result;\n}\n\nmodule.exports = baseUniq;\n","var baseIndexOf = require('./_baseIndexOf');\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the last unmatched string symbol.\n */\nfunction charsEndIndex(strSymbols, chrSymbols) {\n  var index = strSymbols.length;\n\n  while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n  return index;\n}\n\nmodule.exports = charsEndIndex;\n","module.exports = false;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n  var index = -1,\n      length = array == null ? 0 : array.length,\n      resIndex = 0,\n      result = [];\n\n  while (++index < length) {\n    var value = array[index];\n    if (predicate(value, index, array)) {\n      result[resIndex++] = value;\n    }\n  }\n  return result;\n}\n\nmodule.exports = arrayFilter;\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n  return toString.call(it).slice(8, -1);\n};\n","// Styles\nimport \"../../../src/components/VSnackbar/VSnackbar.sass\"; // Components\n\nimport VSheet from '../VSheet/VSheet'; // Mixins\n\nimport Colorable from '../../mixins/colorable';\nimport Themeable from '../../mixins/themeable';\nimport Toggleable from '../../mixins/toggleable';\nimport { factory as PositionableFactory } from '../../mixins/positionable'; // Utilities\n\nimport mixins from '../../util/mixins';\nimport { convertToUnit, getSlot } from '../../util/helpers';\nimport { deprecate, removed } from '../../util/console';\nexport default mixins(VSheet, Colorable, Toggleable, PositionableFactory(['absolute', 'bottom', 'left', 'right', 'top'])\n/* @vue/component */\n).extend({\n  name: 'v-snackbar',\n  props: {\n    app: Boolean,\n    centered: Boolean,\n    contentClass: {\n      type: String,\n      default: ''\n    },\n    multiLine: Boolean,\n    text: Boolean,\n    timeout: {\n      type: [Number, String],\n      default: 5000\n    },\n    transition: {\n      type: [Boolean, String],\n      default: 'v-snack-transition',\n      validator: v => typeof v === 'string' || v === false\n    },\n    vertical: Boolean\n  },\n  data: () => ({\n    activeTimeout: -1\n  }),\n  computed: {\n    classes() {\n      return {\n        'v-snack--absolute': this.absolute,\n        'v-snack--active': this.isActive,\n        'v-snack--bottom': this.bottom || !this.top,\n        'v-snack--centered': this.centered,\n        'v-snack--has-background': this.hasBackground,\n        'v-snack--left': this.left,\n        'v-snack--multi-line': this.multiLine && !this.vertical,\n        'v-snack--right': this.right,\n        'v-snack--text': this.text,\n        'v-snack--top': this.top,\n        'v-snack--vertical': this.vertical\n      };\n    },\n\n    // Text and outlined styles both\n    // use transparent backgrounds\n    hasBackground() {\n      return !this.text && !this.outlined;\n    },\n\n    // Snackbar is dark by default\n    // override themeable logic.\n    isDark() {\n      return this.hasBackground ? !this.light : Themeable.options.computed.isDark.call(this);\n    },\n\n    styles() {\n      if (this.absolute || !this.app) return {};\n      const {\n        bar,\n        bottom,\n        footer,\n        insetFooter,\n        left,\n        right,\n        top\n      } = this.$vuetify.application;\n      return {\n        paddingBottom: convertToUnit(bottom + footer + insetFooter),\n        paddingLeft: convertToUnit(left),\n        paddingRight: convertToUnit(right),\n        paddingTop: convertToUnit(bar + top)\n      };\n    }\n\n  },\n  watch: {\n    isActive: 'setTimeout',\n    timeout: 'setTimeout'\n  },\n\n  mounted() {\n    if (this.isActive) this.setTimeout();\n  },\n\n  created() {\n    /* istanbul ignore next */\n    if (this.$attrs.hasOwnProperty('auto-height')) {\n      removed('auto-height', this);\n    }\n    /* istanbul ignore next */\n    // eslint-disable-next-line eqeqeq\n\n\n    if (this.timeout == 0) {\n      deprecate('timeout=\"0\"', '-1', this);\n    }\n  },\n\n  methods: {\n    genActions() {\n      return this.$createElement('div', {\n        staticClass: 'v-snack__action '\n      }, [getSlot(this, 'action', {\n        attrs: {\n          class: 'v-snack__btn'\n        }\n      })]);\n    },\n\n    genContent() {\n      return this.$createElement('div', {\n        staticClass: 'v-snack__content',\n        class: {\n          [this.contentClass]: true\n        },\n        attrs: {\n          role: 'status',\n          'aria-live': 'polite'\n        }\n      }, [getSlot(this)]);\n    },\n\n    genWrapper() {\n      const setColor = this.hasBackground ? this.setBackgroundColor : this.setTextColor;\n      const data = setColor(this.color, {\n        staticClass: 'v-snack__wrapper',\n        class: VSheet.options.computed.classes.call(this),\n        style: VSheet.options.computed.styles.call(this),\n        directives: [{\n          name: 'show',\n          value: this.isActive\n        }],\n        on: {\n          pointerenter: () => window.clearTimeout(this.activeTimeout),\n          pointerleave: this.setTimeout\n        }\n      });\n      return this.$createElement('div', data, [this.genContent(), this.genActions()]);\n    },\n\n    genTransition() {\n      return this.$createElement('transition', {\n        props: {\n          name: this.transition\n        }\n      }, [this.genWrapper()]);\n    },\n\n    setTimeout() {\n      window.clearTimeout(this.activeTimeout);\n      const timeout = Number(this.timeout);\n\n      if (!this.isActive || // TODO: remove 0 in v3\n      [0, -1].includes(timeout)) {\n        return;\n      }\n\n      this.activeTimeout = window.setTimeout(() => {\n        this.isActive = false;\n      }, timeout);\n    }\n\n  },\n\n  render(h) {\n    return h('div', {\n      staticClass: 'v-snack',\n      class: this.classes,\n      style: this.styles\n    }, [this.transition !== false ? this.genTransition() : this.genWrapper()]);\n  }\n\n});\n//# sourceMappingURL=VSnackbar.js.map","var overArg = require('./_overArg');\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nmodule.exports = getPrototype;\n","/* eslint-disable no-console, local-rules/disallow-side-effects */\n/**\n * Keep references on console methods to avoid triggering patched behaviors\n *\n * NB: in some setup, console could already be patched by another SDK.\n * In this case, some display messages can be sent by the other SDK\n * but we should be safe from infinite loop nonetheless.\n */\nexport var ConsoleApiName = {\n    log: 'log',\n    debug: 'debug',\n    info: 'info',\n    warn: 'warn',\n    error: 'error',\n};\nexport var display = function (api) {\n    var args = [];\n    for (var _i = 1; _i < arguments.length; _i++) {\n        args[_i - 1] = arguments[_i];\n    }\n    if (!Object.prototype.hasOwnProperty.call(ConsoleApiName, api)) {\n        api = ConsoleApiName.log;\n    }\n    display[api].apply(display, args);\n};\ndisplay.debug = console.debug.bind(console);\ndisplay.log = console.log.bind(console);\ndisplay.info = console.info.bind(console);\ndisplay.warn = console.warn.bind(console);\ndisplay.error = console.error.bind(console);\n//# sourceMappingURL=display.js.map","import { display } from './display';\nexport function catchUserErrors(fn, errorMsg) {\n    return function () {\n        var args = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            args[_i] = arguments[_i];\n        }\n        try {\n            return fn.apply(void 0, args);\n        }\n        catch (err) {\n            display.error(errorMsg, err);\n        }\n    };\n}\n//# sourceMappingURL=catchUserErrors.js.map","var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n    if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n        if (ar || !(i in from)) {\n            if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n            ar[i] = from[i];\n        }\n    }\n    return to.concat(ar || Array.prototype.slice.call(from));\n};\nimport { ConsoleApiName, display } from './display';\nvar onMonitorErrorCollected;\nvar debugMode = false;\nexport function startMonitorErrorCollection(newOnMonitorErrorCollected) {\n    onMonitorErrorCollected = newOnMonitorErrorCollected;\n}\nexport function setDebugMode(newDebugMode) {\n    debugMode = newDebugMode;\n}\nexport function resetMonitor() {\n    onMonitorErrorCollected = undefined;\n    debugMode = false;\n}\nexport function monitored(_, __, descriptor) {\n    var originalMethod = descriptor.value;\n    descriptor.value = function () {\n        var args = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            args[_i] = arguments[_i];\n        }\n        var decorated = onMonitorErrorCollected ? monitor(originalMethod) : originalMethod;\n        return decorated.apply(this, args);\n    };\n}\nexport function monitor(fn) {\n    return function () {\n        // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n        return callMonitored(fn, this, arguments);\n    }; // consider output type has input type\n}\nexport function callMonitored(fn, context, args) {\n    try {\n        // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n        return fn.apply(context, args);\n    }\n    catch (e) {\n        displayIfDebugEnabled(ConsoleApiName.error, e);\n        if (onMonitorErrorCollected) {\n            try {\n                onMonitorErrorCollected(e);\n            }\n            catch (e) {\n                displayIfDebugEnabled(ConsoleApiName.error, e);\n            }\n        }\n    }\n}\nexport function displayIfDebugEnabled(api) {\n    var args = [];\n    for (var _i = 1; _i < arguments.length; _i++) {\n        args[_i - 1] = arguments[_i];\n    }\n    if (debugMode) {\n        display.apply(void 0, __spreadArray([api, '[MONITOR]'], args, false));\n    }\n}\n//# sourceMappingURL=monitor.js.map","import { display } from './display';\nimport { monitor } from './monitor';\nexport var ONE_SECOND = 1000;\nexport var ONE_MINUTE = 60 * ONE_SECOND;\nexport var ONE_HOUR = 60 * ONE_MINUTE;\nexport var ONE_DAY = 24 * ONE_HOUR;\nexport var ONE_YEAR = 365 * ONE_DAY;\nexport var ONE_KIBI_BYTE = 1024;\nexport var ONE_MEBI_BYTE = 1024 * ONE_KIBI_BYTE;\n// use lodash API\nexport function throttle(fn, wait, options) {\n    var needLeadingExecution = options && options.leading !== undefined ? options.leading : true;\n    var needTrailingExecution = options && options.trailing !== undefined ? options.trailing : true;\n    var inWaitPeriod = false;\n    var pendingExecutionWithParameters;\n    var pendingTimeoutId;\n    return {\n        throttled: function () {\n            var parameters = [];\n            for (var _i = 0; _i < arguments.length; _i++) {\n                parameters[_i] = arguments[_i];\n            }\n            if (inWaitPeriod) {\n                pendingExecutionWithParameters = parameters;\n                return;\n            }\n            if (needLeadingExecution) {\n                fn.apply(void 0, parameters);\n            }\n            else {\n                pendingExecutionWithParameters = parameters;\n            }\n            inWaitPeriod = true;\n            pendingTimeoutId = setTimeout(function () {\n                if (needTrailingExecution && pendingExecutionWithParameters) {\n                    fn.apply(void 0, pendingExecutionWithParameters);\n                }\n                inWaitPeriod = false;\n                pendingExecutionWithParameters = undefined;\n            }, wait);\n        },\n        cancel: function () {\n            clearTimeout(pendingTimeoutId);\n            inWaitPeriod = false;\n            pendingExecutionWithParameters = undefined;\n        },\n    };\n}\nexport function assign(target) {\n    var toAssign = [];\n    for (var _i = 1; _i < arguments.length; _i++) {\n        toAssign[_i - 1] = arguments[_i];\n    }\n    toAssign.forEach(function (source) {\n        for (var key in source) {\n            if (Object.prototype.hasOwnProperty.call(source, key)) {\n                target[key] = source[key];\n            }\n        }\n    });\n    return target;\n}\nexport function shallowClone(object) {\n    return assign({}, object);\n}\n/**\n * UUID v4\n * from https://gist.github.com/jed/982883\n */\nexport function generateUUID(placeholder) {\n    return placeholder\n        ? // eslint-disable-next-line  no-bitwise\n            (parseInt(placeholder, 10) ^ ((Math.random() * 16) >> (parseInt(placeholder, 10) / 4))).toString(16)\n        : \"\".concat(1e7, \"-\").concat(1e3, \"-\").concat(4e3, \"-\").concat(8e3, \"-\").concat(1e11).replace(/[018]/g, generateUUID);\n}\n/**\n * Return true if the draw is successful\n * @param threshold between 0 and 100\n */\nexport function performDraw(threshold) {\n    return threshold !== 0 && Math.random() * 100 <= threshold;\n}\nexport function round(num, decimals) {\n    return +num.toFixed(decimals);\n}\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nexport function noop() { }\n/**\n * Custom implementation of JSON.stringify that ignores some toJSON methods. We need to do that\n * because some sites badly override toJSON on certain objects. Removing all toJSON methods from\n * nested values would be too costly, so we just detach them from the root value, and native classes\n * used to build JSON values (Array and Object).\n *\n * Note: this still assumes that JSON.stringify is correct.\n */\nexport function jsonStringify(value, replacer, space) {\n    if (typeof value !== 'object' || value === null) {\n        return JSON.stringify(value);\n    }\n    // Note: The order matter here. We need to detach toJSON methods on parent classes before their\n    // subclasses.\n    var restoreObjectPrototypeToJson = detachToJsonMethod(Object.prototype);\n    var restoreArrayPrototypeToJson = detachToJsonMethod(Array.prototype);\n    var restoreValuePrototypeToJson = detachToJsonMethod(Object.getPrototypeOf(value));\n    var restoreValueToJson = detachToJsonMethod(value);\n    try {\n        return JSON.stringify(value, replacer, space);\n    }\n    catch (_a) {\n        return '<error: unable to serialize object>';\n    }\n    finally {\n        restoreObjectPrototypeToJson();\n        restoreArrayPrototypeToJson();\n        restoreValuePrototypeToJson();\n        restoreValueToJson();\n    }\n}\nfunction detachToJsonMethod(value) {\n    var object = value;\n    var objectToJson = object.toJSON;\n    if (objectToJson) {\n        delete object.toJSON;\n        return function () {\n            object.toJSON = objectToJson;\n        };\n    }\n    return noop;\n}\nexport function includes(candidate, search) {\n    return candidate.indexOf(search) !== -1;\n}\nexport function arrayFrom(arrayLike) {\n    if (Array.from) {\n        return Array.from(arrayLike);\n    }\n    var array = [];\n    if (arrayLike instanceof Set) {\n        arrayLike.forEach(function (item) { return array.push(item); });\n    }\n    else {\n        for (var i = 0; i < arrayLike.length; i++) {\n            array.push(arrayLike[i]);\n        }\n    }\n    return array;\n}\nexport function find(array, predicate) {\n    for (var i = 0; i < array.length; i += 1) {\n        var item = array[i];\n        if (predicate(item, i)) {\n            return item;\n        }\n    }\n    return undefined;\n}\nexport function findLast(array, predicate) {\n    for (var i = array.length - 1; i >= 0; i -= 1) {\n        var item = array[i];\n        if (predicate(item, i, array)) {\n            return item;\n        }\n    }\n    return undefined;\n}\nexport function isPercentage(value) {\n    return isNumber(value) && value >= 0 && value <= 100;\n}\nexport function isNumber(value) {\n    return typeof value === 'number';\n}\nexport function objectValues(object) {\n    return Object.keys(object).map(function (key) { return object[key]; });\n}\nexport function objectHasValue(object, value) {\n    return Object.keys(object).some(function (key) { return object[key] === value; });\n}\nexport function objectEntries(object) {\n    return Object.keys(object).map(function (key) { return [key, object[key]]; });\n}\nexport function isEmptyObject(object) {\n    return Object.keys(object).length === 0;\n}\nexport function mapValues(object, fn) {\n    var newObject = {};\n    for (var _i = 0, _a = Object.keys(object); _i < _a.length; _i++) {\n        var key = _a[_i];\n        newObject[key] = fn(object[key]);\n    }\n    return newObject;\n}\nexport function startsWith(candidate, search) {\n    return candidate.slice(0, search.length) === search;\n}\nexport function endsWith(candidate, search) {\n    return candidate.slice(-search.length) === search;\n}\n/**\n * inspired by https://mathiasbynens.be/notes/globalthis\n */\nexport function getGlobalObject() {\n    if (typeof globalThis === 'object') {\n        return globalThis;\n    }\n    Object.defineProperty(Object.prototype, '_dd_temp_', {\n        get: function () {\n            return this;\n        },\n        configurable: true,\n    });\n    // @ts-ignore _dd_temp is defined using defineProperty\n    var globalObject = _dd_temp_;\n    // @ts-ignore _dd_temp is defined using defineProperty\n    delete Object.prototype._dd_temp_;\n    if (typeof globalObject !== 'object') {\n        // on safari _dd_temp_ is available on window but not globally\n        // fallback on other browser globals check\n        if (typeof self === 'object') {\n            globalObject = self;\n        }\n        else if (typeof window === 'object') {\n            globalObject = window;\n        }\n        else {\n            globalObject = {};\n        }\n    }\n    return globalObject;\n}\nexport function getLocationOrigin() {\n    return getLinkElementOrigin(window.location);\n}\n/**\n * IE fallback\n * https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils/origin\n */\nexport function getLinkElementOrigin(element) {\n    if (element.origin) {\n        return element.origin;\n    }\n    var sanitizedHost = element.host.replace(/(:80|:443)$/, '');\n    return \"\".concat(element.protocol, \"//\").concat(sanitizedHost);\n}\nexport function findCommaSeparatedValue(rawString, name) {\n    var regex = new RegExp(\"(?:^|;)\\\\s*\".concat(name, \"\\\\s*=\\\\s*([^;]+)\"));\n    var matches = regex.exec(rawString);\n    return matches ? matches[1] : undefined;\n}\nexport function safeTruncate(candidate, length, suffix) {\n    if (suffix === void 0) { suffix = ''; }\n    var lastChar = candidate.charCodeAt(length - 1);\n    var isLastCharSurrogatePair = lastChar >= 0xd800 && lastChar <= 0xdbff;\n    var correctedLength = isLastCharSurrogatePair ? length + 1 : length;\n    if (candidate.length <= correctedLength)\n        return candidate;\n    return \"\".concat(candidate.slice(0, correctedLength)).concat(suffix);\n}\n/**\n * Add an event listener to an event emitter object (Window, Element, mock object...).  This provides\n * a few conveniences compared to using `element.addEventListener` directly:\n *\n * * supports IE11 by: using an option object only if needed and emulating the `once` option\n *\n * * wraps the listener with a `monitor` function\n *\n * * returns a `stop` function to remove the listener\n */\nexport function addEventListener(emitter, event, listener, options) {\n    return addEventListeners(emitter, [event], listener, options);\n}\n/**\n * Add event listeners to an event emitter object (Window, Element, mock object...).  This provides\n * a few conveniences compared to using `element.addEventListener` directly:\n *\n * * supports IE11 by: using an option object only if needed and emulating the `once` option\n *\n * * wraps the listener with a `monitor` function\n *\n * * returns a `stop` function to remove the listener\n *\n * * with `once: true`, the listener will be called at most once, even if different events are listened\n */\nexport function addEventListeners(emitter, events, listener, _a) {\n    var _b = _a === void 0 ? {} : _a, once = _b.once, capture = _b.capture, passive = _b.passive;\n    var wrappedListener = monitor(once\n        ? function (event) {\n            stop();\n            listener(event);\n        }\n        : listener);\n    var options = passive ? { capture: capture, passive: passive } : capture;\n    events.forEach(function (event) { return emitter.addEventListener(event, wrappedListener, options); });\n    var stop = function () { return events.forEach(function (event) { return emitter.removeEventListener(event, wrappedListener, options); }); };\n    return {\n        stop: stop,\n    };\n}\nexport function elementMatches(element, selector) {\n    if (element.matches) {\n        return element.matches(selector);\n    }\n    // IE11 support\n    if (element.msMatchesSelector) {\n        return element.msMatchesSelector(selector);\n    }\n    return false;\n}\nexport function runOnReadyState(expectedReadyState, callback) {\n    if (document.readyState === expectedReadyState || document.readyState === 'complete') {\n        callback();\n    }\n    else {\n        var eventName = expectedReadyState === 'complete' ? \"load\" /* LOAD */ : \"DOMContentLoaded\" /* DOM_CONTENT_LOADED */;\n        addEventListener(window, eventName, callback, { once: true });\n    }\n}\n/**\n * Similar to `typeof`, but distinguish plain objects from `null` and arrays\n */\nexport function getType(value) {\n    if (value === null) {\n        return 'null';\n    }\n    if (Array.isArray(value)) {\n        return 'array';\n    }\n    return typeof value;\n}\nfunction createCircularReferenceChecker() {\n    if (typeof WeakSet !== 'undefined') {\n        var set_1 = new WeakSet();\n        return {\n            hasAlreadyBeenSeen: function (value) {\n                var has = set_1.has(value);\n                if (!has) {\n                    set_1.add(value);\n                }\n                return has;\n            },\n        };\n    }\n    var array = [];\n    return {\n        hasAlreadyBeenSeen: function (value) {\n            var has = array.indexOf(value) >= 0;\n            if (!has) {\n                array.push(value);\n            }\n            return has;\n        },\n    };\n}\n/**\n * Iterate over source and affect its sub values into destination, recursively.\n * If the source and destination can't be merged, return source.\n */\nexport function mergeInto(destination, source, circularReferenceChecker) {\n    if (circularReferenceChecker === void 0) { circularReferenceChecker = createCircularReferenceChecker(); }\n    // ignore the source if it is undefined\n    if (source === undefined) {\n        return destination;\n    }\n    if (typeof source !== 'object' || source === null) {\n        // primitive values - just return source\n        return source;\n    }\n    else if (source instanceof Date) {\n        return new Date(source.getTime());\n    }\n    else if (source instanceof RegExp) {\n        var flags = source.flags ||\n            // old browsers compatibility\n            [\n                source.global ? 'g' : '',\n                source.ignoreCase ? 'i' : '',\n                source.multiline ? 'm' : '',\n                source.sticky ? 'y' : '',\n                source.unicode ? 'u' : '',\n            ].join('');\n        return new RegExp(source.source, flags);\n    }\n    if (circularReferenceChecker.hasAlreadyBeenSeen(source)) {\n        // remove circular references\n        return undefined;\n    }\n    else if (Array.isArray(source)) {\n        var merged_1 = Array.isArray(destination) ? destination : [];\n        for (var i = 0; i < source.length; ++i) {\n            merged_1[i] = mergeInto(merged_1[i], source[i], circularReferenceChecker);\n        }\n        return merged_1;\n    }\n    var merged = getType(destination) === 'object' ? destination : {};\n    for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n            merged[key] = mergeInto(merged[key], source[key], circularReferenceChecker);\n        }\n    }\n    return merged;\n}\n/**\n * A simplistic implementation of a deep clone algorithm.\n * Caveats:\n * - It doesn't maintain prototype chains - don't use with instances of custom classes.\n * - It doesn't handle Map and Set\n */\nexport function deepClone(value) {\n    return mergeInto(undefined, value);\n}\nexport function combine() {\n    var sources = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        sources[_i] = arguments[_i];\n    }\n    var destination;\n    for (var _a = 0, sources_1 = sources; _a < sources_1.length; _a++) {\n        var source = sources_1[_a];\n        // Ignore any undefined or null sources.\n        if (source === undefined || source === null) {\n            continue;\n        }\n        destination = mergeInto(destination, source);\n    }\n    return destination;\n}\nexport function requestIdleCallback(callback, opts) {\n    // Use 'requestIdleCallback' when available: it will throttle the mutation processing if the\n    // browser is busy rendering frames (ex: when frames are below 60fps). When not available, the\n    // fallback on 'requestAnimationFrame' will still ensure the mutations are processed after any\n    // browser rendering process (Layout, Recalculate Style, etc.), so we can serialize DOM nodes\n    // efficiently.\n    if (window.requestIdleCallback) {\n        var id_1 = window.requestIdleCallback(monitor(callback), opts);\n        return function () { return window.cancelIdleCallback(id_1); };\n    }\n    var id = window.requestAnimationFrame(monitor(callback));\n    return function () { return window.cancelAnimationFrame(id); };\n}\nexport function removeDuplicates(array) {\n    var set = new Set();\n    array.forEach(function (item) { return set.add(item); });\n    return arrayFrom(set);\n}\nexport function matchList(list, value) {\n    return list.some(function (item) {\n        if (typeof item === 'function') {\n            try {\n                return item(value);\n            }\n            catch (e) {\n                display.error(e);\n                return false;\n            }\n        }\n        if (item instanceof RegExp) {\n            return item.test(value);\n        }\n        return item === value;\n    });\n}\n// https://github.com/jquery/jquery/blob/a684e6ba836f7c553968d7d026ed7941e1a612d8/src/selector/escapeSelector.js\nexport function cssEscape(str) {\n    if (window.CSS && window.CSS.escape) {\n        return window.CSS.escape(str);\n    }\n    // eslint-disable-next-line no-control-regex\n    return str.replace(/([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\x80-\\uFFFF\\w-]/g, function (ch, asCodePoint) {\n        if (asCodePoint) {\n            // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n            if (ch === '\\0') {\n                return '\\uFFFD';\n            }\n            // Control characters and (dependent upon position) numbers get escaped as code points\n            return \"\".concat(ch.slice(0, -1), \"\\\\\").concat(ch.charCodeAt(ch.length - 1).toString(16), \" \");\n        }\n        // Other potentially-special ASCII characters get backslash-escaped\n        return \"\\\\\".concat(ch);\n    });\n}\n//# sourceMappingURL=utils.js.map","import { catchUserErrors } from '../tools/catchUserErrors';\nimport { setDebugMode } from '../tools/monitor';\nimport { assign } from '../tools/utils';\nexport function makePublicApi(stub) {\n    var publicApi = assign({\n        version: \"4.25.0\",\n        // This API method is intentionally not monitored, since the only thing executed is the\n        // user-provided 'callback'.  All SDK usages executed in the callback should be monitored, and\n        // we don't want to interfere with the user uncaught exceptions.\n        onReady: function (callback) {\n            callback();\n        },\n    }, stub);\n    // Add a \"hidden\" property to set debug mode. We define it that way to hide it\n    // as much as possible but of course it's not a real protection.\n    Object.defineProperty(publicApi, '_setDebug', {\n        get: function () {\n            return setDebugMode;\n        },\n        enumerable: false,\n    });\n    return publicApi;\n}\nexport function defineGlobal(global, name, api) {\n    var existingGlobalVariable = global[name];\n    global[name] = api;\n    if (existingGlobalVariable && existingGlobalVariable.q) {\n        existingGlobalVariable.q.forEach(function (fn) { return catchUserErrors(fn, 'onReady callback threw an error:')(); });\n    }\n}\n//# sourceMappingURL=init.js.map","import { deepClone } from './utils';\nexport function createContextManager() {\n    var context = {};\n    return {\n        /** @deprecated use getContext instead */\n        get: function () { return context; },\n        /** @deprecated use setContextProperty instead */\n        add: function (key, value) {\n            context[key] = value;\n        },\n        /** @deprecated renamed to removeContextProperty */\n        remove: function (key) {\n            delete context[key];\n        },\n        /** @deprecated use setContext instead */\n        set: function (newContext) {\n            context = newContext;\n        },\n        getContext: function () { return deepClone(context); },\n        setContext: function (newContext) {\n            context = deepClone(newContext);\n        },\n        setContextProperty: function (key, property) {\n            context[key] = deepClone(property);\n        },\n        removeContextProperty: function (key) {\n            delete context[key];\n        },\n        clearContext: function () {\n            context = {};\n        },\n    };\n}\n//# sourceMappingURL=contextManager.js.map","var BUFFER_LIMIT = 500;\nvar BoundedBuffer = /** @class */ (function () {\n    function BoundedBuffer() {\n        this.buffer = [];\n    }\n    BoundedBuffer.prototype.add = function (callback) {\n        var length = this.buffer.push(callback);\n        if (length > BUFFER_LIMIT) {\n            this.buffer.splice(0, 1);\n        }\n    };\n    BoundedBuffer.prototype.drain = function () {\n        this.buffer.forEach(function (callback) { return callback(); });\n        this.buffer.length = 0;\n    };\n    return BoundedBuffer;\n}());\nexport { BoundedBuffer };\n//# sourceMappingURL=boundedBuffer.js.map","import { isNumber, ONE_YEAR, round } from './utils';\nexport function relativeToClocks(relative) {\n    return { relative: relative, timeStamp: getCorrectedTimeStamp(relative) };\n}\nfunction getCorrectedTimeStamp(relativeTime) {\n    var correctedOrigin = (dateNow() - performance.now());\n    // apply correction only for positive drift\n    if (correctedOrigin > getNavigationStart()) {\n        return Math.round(addDuration(correctedOrigin, relativeTime));\n    }\n    return getTimeStamp(relativeTime);\n}\nexport function currentDrift() {\n    return Math.round(dateNow() - addDuration(getNavigationStart(), performance.now()));\n}\nexport function toServerDuration(duration) {\n    if (!isNumber(duration)) {\n        return duration;\n    }\n    return round(duration * 1e6, 0);\n}\nexport function dateNow() {\n    // Do not use `Date.now` because sometimes websites are wrongly \"polyfilling\" it. For example, we\n    // had some users using a very old version of `datejs`, which patched `Date.now` to return a Date\n    // instance instead of a timestamp[1]. Those users are unlikely to fix this, so let's handle this\n    // case ourselves.\n    // [1]: https://github.com/datejs/Datejs/blob/97f5c7c58c5bc5accdab8aa7602b6ac56462d778/src/core-debug.js#L14-L16\n    return new Date().getTime();\n}\nexport function timeStampNow() {\n    return dateNow();\n}\nexport function relativeNow() {\n    return performance.now();\n}\nexport function clocksNow() {\n    return { relative: relativeNow(), timeStamp: timeStampNow() };\n}\nexport function clocksOrigin() {\n    return { relative: 0, timeStamp: getNavigationStart() };\n}\nexport function elapsed(start, end) {\n    return (end - start);\n}\nexport function addDuration(a, b) {\n    return a + b;\n}\n/**\n * Get the time since the navigation was started.\n *\n * Note: this does not use `performance.timeOrigin` because it doesn't seem to reflect the actual\n * time on which the navigation has started: it may be much farther in the past, at least in Firefox 71.\n * Related issue in Firefox: https://bugzilla.mozilla.org/show_bug.cgi?id=1429926\n */\nexport function getRelativeTime(timestamp) {\n    return (timestamp - getNavigationStart());\n}\nexport function getTimeStamp(relativeTime) {\n    return Math.round(addDuration(getNavigationStart(), relativeTime));\n}\nexport function looksLikeRelativeTime(time) {\n    return time < ONE_YEAR;\n}\n/**\n * Navigation start slightly change on some rare cases\n */\nvar navigationStart;\nfunction getNavigationStart() {\n    if (navigationStart === undefined) {\n        navigationStart = performance.timing.navigationStart;\n    }\n    return navigationStart;\n}\nexport function resetNavigationStart() {\n    navigationStart = undefined;\n}\n//# sourceMappingURL=timeUtils.js.map","import { endsWith, getGlobalObject } from '../tools/utils';\nexport function getEventBridge() {\n    var eventBridgeGlobal = getEventBridgeGlobal();\n    if (!eventBridgeGlobal) {\n        return;\n    }\n    return {\n        getAllowedWebViewHosts: function () {\n            return JSON.parse(eventBridgeGlobal.getAllowedWebViewHosts());\n        },\n        send: function (eventType, event) {\n            eventBridgeGlobal.send(JSON.stringify({ eventType: eventType, event: event }));\n        },\n    };\n}\nexport function canUseEventBridge(currentHost) {\n    var _a;\n    if (currentHost === void 0) { currentHost = (_a = getGlobalObject().location) === null || _a === void 0 ? void 0 : _a.hostname; }\n    var bridge = getEventBridge();\n    return (!!bridge &&\n        bridge\n            .getAllowedWebViewHosts()\n            .some(function (allowedHost) { return currentHost === allowedHost || endsWith(currentHost, \".\".concat(allowedHost)); }));\n}\nfunction getEventBridgeGlobal() {\n    return getGlobalObject().DatadogEventBridge;\n}\n//# sourceMappingURL=eventBridge.js.map","import { display } from '../../tools/display';\nimport { assign, getType } from '../../tools/utils';\n/**\n * Clone input data and ensure known user properties (id, name, email)\n * are strings, as defined here:\n * https://docs.datadoghq.com/logs/log_configuration/attributes_naming_convention/#user-related-attributes\n */\nexport function sanitizeUser(newUser) {\n    // We shallow clone only to prevent mutation of user data.\n    var user = assign({}, newUser);\n    var keys = ['id', 'name', 'email'];\n    keys.forEach(function (key) {\n        if (key in user) {\n            user[key] = String(user[key]);\n        }\n    });\n    return user;\n}\n/**\n * Simple check to ensure user is valid\n */\nexport function checkUser(newUser) {\n    var isValid = getType(newUser) === 'object';\n    if (!isValid) {\n        display.error('Unsupported user:', newUser);\n    }\n    return isValid;\n}\n//# sourceMappingURL=user.js.map","import { display } from '../tools/display';\nimport { findCommaSeparatedValue, generateUUID, ONE_SECOND } from '../tools/utils';\nexport var COOKIE_ACCESS_DELAY = ONE_SECOND;\nexport function setCookie(name, value, expireDelay, options) {\n    var date = new Date();\n    date.setTime(date.getTime() + expireDelay);\n    var expires = \"expires=\".concat(date.toUTCString());\n    var sameSite = options && options.crossSite ? 'none' : 'strict';\n    var domain = options && options.domain ? \";domain=\".concat(options.domain) : '';\n    var secure = options && options.secure ? ';secure' : '';\n    document.cookie = \"\".concat(name, \"=\").concat(value, \";\").concat(expires, \";path=/;samesite=\").concat(sameSite).concat(domain).concat(secure);\n}\nexport function getCookie(name) {\n    return findCommaSeparatedValue(document.cookie, name);\n}\nexport function deleteCookie(name, options) {\n    setCookie(name, '', 0, options);\n}\nexport function areCookiesAuthorized(options) {\n    if (document.cookie === undefined || document.cookie === null) {\n        return false;\n    }\n    try {\n        // Use a unique cookie name to avoid issues when the SDK is initialized multiple times during\n        // the test cookie lifetime\n        var testCookieName = \"dd_cookie_test_\".concat(generateUUID());\n        var testCookieValue = 'test';\n        setCookie(testCookieName, testCookieValue, ONE_SECOND, options);\n        var isCookieCorrectlySet = getCookie(testCookieName) === testCookieValue;\n        deleteCookie(testCookieName, options);\n        return isCookieCorrectlySet;\n    }\n    catch (error) {\n        display.error(error);\n        return false;\n    }\n}\n/**\n * No API to retrieve it, number of levels for subdomain and suffix are unknown\n * strategy: find the minimal domain on which cookies are allowed to be set\n * https://web.dev/same-site-same-origin/#site\n */\nvar getCurrentSiteCache;\nexport function getCurrentSite() {\n    if (getCurrentSiteCache === undefined) {\n        // Use a unique cookie name to avoid issues when the SDK is initialized multiple times during\n        // the test cookie lifetime\n        var testCookieName = \"dd_site_test_\".concat(generateUUID());\n        var testCookieValue = 'test';\n        var domainLevels = window.location.hostname.split('.');\n        var candidateDomain = domainLevels.pop();\n        while (domainLevels.length && !getCookie(testCookieName)) {\n            candidateDomain = \"\".concat(domainLevels.pop(), \".\").concat(candidateDomain);\n            setCookie(testCookieName, testCookieValue, ONE_SECOND, { domain: candidateDomain });\n        }\n        deleteCookie(testCookieName, { domain: candidateDomain });\n        getCurrentSiteCache = candidateDomain;\n    }\n    return getCurrentSiteCache;\n}\n//# sourceMappingURL=cookie.js.map","/**\n * LIMITATION:\n * For NPM setup, this feature flag singleton is shared between RUM and Logs product.\n * This means that an experimental flag set on the RUM product will be set on the Logs product.\n * So keep in mind that in certain configurations, your experimental feature flag may affect other products.\n */\nimport { includes } from '../../tools/utils';\nimport { display } from '../../tools/display';\nvar enabledExperimentalFeatures;\nexport function updateExperimentalFeatures(enabledFeatures) {\n    // Safely handle external data\n    if (!Array.isArray(enabledFeatures)) {\n        return;\n    }\n    if (!enabledExperimentalFeatures) {\n        enabledExperimentalFeatures = new Set(enabledFeatures);\n    }\n    enabledFeatures\n        .filter(function (flag) { return typeof flag === 'string'; })\n        .forEach(function (flag) {\n        if (includes(flag, '-')) {\n            display.warn(\"please use snake case for '\".concat(flag, \"'\"));\n        }\n        enabledExperimentalFeatures.add(flag);\n    });\n}\nexport function isExperimentalFeatureEnabled(featureName) {\n    return !!enabledExperimentalFeatures && enabledExperimentalFeatures.has(featureName);\n}\nexport function resetExperimentalFeatures() {\n    enabledExperimentalFeatures = new Set();\n}\nexport function getExperimentalFeatures() {\n    return enabledExperimentalFeatures || new Set();\n}\n//# sourceMappingURL=experimentalFeatures.js.map","import { getLinkElementOrigin, getLocationOrigin } from './utils';\nexport function normalizeUrl(url) {\n    return buildUrl(url, getLocationOrigin()).href;\n}\nexport function isValidUrl(url) {\n    try {\n        return !!buildUrl(url);\n    }\n    catch (_a) {\n        return false;\n    }\n}\nexport function haveSameOrigin(url1, url2) {\n    return getOrigin(url1) === getOrigin(url2);\n}\nexport function getOrigin(url) {\n    return getLinkElementOrigin(buildUrl(url));\n}\nexport function getPathName(url) {\n    var pathname = buildUrl(url).pathname;\n    return pathname[0] === '/' ? pathname : \"/\".concat(pathname);\n}\nexport function getSearch(url) {\n    return buildUrl(url).search;\n}\nexport function getHash(url) {\n    return buildUrl(url).hash;\n}\nexport function buildUrl(url, base) {\n    if (checkURLSupported()) {\n        return base !== undefined ? new URL(url, base) : new URL(url);\n    }\n    if (base === undefined && !/:/.test(url)) {\n        throw new Error(\"Invalid URL: '\".concat(url, \"'\"));\n    }\n    var doc = document;\n    var anchorElement = doc.createElement('a');\n    if (base !== undefined) {\n        doc = document.implementation.createHTMLDocument('');\n        var baseElement = doc.createElement('base');\n        baseElement.href = base;\n        doc.head.appendChild(baseElement);\n        doc.body.appendChild(anchorElement);\n    }\n    anchorElement.href = url;\n    return anchorElement;\n}\nvar isURLSupported;\nfunction checkURLSupported() {\n    if (isURLSupported !== undefined) {\n        return isURLSupported;\n    }\n    try {\n        var url = new URL('http://test/path');\n        isURLSupported = url.href === 'http://test/path';\n        return isURLSupported;\n    }\n    catch (_a) {\n        isURLSupported = false;\n    }\n    return isURLSupported;\n}\n//# sourceMappingURL=urlPolyfill.js.map","export var INTAKE_SITE_STAGING = 'datad0g.com';\nexport var INTAKE_SITE_US1 = 'datadoghq.com';\nexport var INTAKE_SITE_US1_FED = 'ddog-gov.com';\n//# sourceMappingURL=intakeSites.js.map","import { timeStampNow } from '../../tools/timeUtils';\nimport { normalizeUrl } from '../../tools/urlPolyfill';\nimport { generateUUID } from '../../tools/utils';\nimport { INTAKE_SITE_US1 } from './intakeSites';\nexport var ENDPOINTS = {\n    logs: 'logs',\n    rum: 'rum',\n    sessionReplay: 'session-replay',\n};\nvar INTAKE_TRACKS = {\n    logs: 'logs',\n    rum: 'rum',\n    sessionReplay: 'replay',\n};\nexport function createEndpointBuilder(initConfiguration, endpointType, configurationTags) {\n    var _a = initConfiguration.site, site = _a === void 0 ? INTAKE_SITE_US1 : _a, clientToken = initConfiguration.clientToken;\n    var domainParts = site.split('.');\n    var extension = domainParts.pop();\n    var host = \"\".concat(ENDPOINTS[endpointType], \".browser-intake-\").concat(domainParts.join('-'), \".\").concat(extension);\n    var baseUrl = \"https://\".concat(host, \"/api/v2/\").concat(INTAKE_TRACKS[endpointType]);\n    var proxyUrl = initConfiguration.proxyUrl && normalizeUrl(initConfiguration.proxyUrl);\n    return {\n        build: function (retry) {\n            var tags = [\"sdk_version:\".concat(\"4.25.0\")].concat(configurationTags);\n            if (retry) {\n                tags.push(\"retry_count:\".concat(retry.count), \"retry_after:\".concat(retry.lastFailureStatus));\n            }\n            var parameters = 'ddsource=browser' +\n                \"&ddtags=\".concat(encodeURIComponent(tags.join(','))) +\n                \"&dd-api-key=\".concat(clientToken) +\n                \"&dd-evp-origin-version=\".concat(encodeURIComponent(\"4.25.0\")) +\n                '&dd-evp-origin=browser' +\n                \"&dd-request-id=\".concat(generateUUID());\n            if (endpointType === 'rum') {\n                parameters += \"&batch_time=\".concat(timeStampNow());\n            }\n            var endpointUrl = \"\".concat(baseUrl, \"?\").concat(parameters);\n            return proxyUrl ? \"\".concat(proxyUrl, \"?ddforward=\").concat(encodeURIComponent(endpointUrl)) : endpointUrl;\n        },\n        buildIntakeUrl: function () {\n            return proxyUrl ? \"\".concat(proxyUrl, \"?ddforward\") : baseUrl;\n        },\n        endpointType: endpointType,\n    };\n}\n//# sourceMappingURL=endpointBuilder.js.map","import { display } from '../../tools/display';\nexport var TAG_SIZE_LIMIT = 200;\nexport function buildTags(configuration) {\n    var env = configuration.env, service = configuration.service, version = configuration.version, datacenter = configuration.datacenter;\n    var tags = [];\n    if (env) {\n        tags.push(buildTag('env', env));\n    }\n    if (service) {\n        tags.push(buildTag('service', service));\n    }\n    if (version) {\n        tags.push(buildTag('version', version));\n    }\n    if (datacenter) {\n        tags.push(buildTag('datacenter', datacenter));\n    }\n    return tags;\n}\nvar FORBIDDEN_CHARACTERS = /[^a-z0-9_:./-]/;\nexport function buildTag(key, rawValue) {\n    // See https://docs.datadoghq.com/getting_started/tagging/#defining-tags for tags syntax. Note\n    // that the backend may not follow the exact same rules, so we only want to display an informal\n    // warning.\n    var valueSizeLimit = TAG_SIZE_LIMIT - key.length - 1;\n    if (rawValue.length > valueSizeLimit || FORBIDDEN_CHARACTERS.test(rawValue)) {\n        display.warn(\"\".concat(key, \" value doesn't meet tag requirements and will be sanitized\"));\n    }\n    // Let the backend do most of the sanitization, but still make sure multiple tags can't be crafted\n    // by forging a value containing commas.\n    var sanitizedValue = rawValue.replace(/,/g, '_');\n    return \"\".concat(key, \":\").concat(sanitizedValue);\n}\n//# sourceMappingURL=tags.js.map","import { assign, objectValues } from '../../tools/utils';\nimport { createEndpointBuilder } from './endpointBuilder';\nimport { buildTags } from './tags';\nimport { INTAKE_SITE_US1 } from './intakeSites';\nexport function computeTransportConfiguration(initConfiguration) {\n    var tags = buildTags(initConfiguration);\n    var endpointBuilders = computeEndpointBuilders(initConfiguration, tags);\n    var intakeEndpoints = objectValues(endpointBuilders).map(function (builder) { return builder.buildIntakeUrl(); });\n    var replicaConfiguration = computeReplicaConfiguration(initConfiguration, intakeEndpoints, tags);\n    return assign({\n        isIntakeUrl: function (url) { return intakeEndpoints.some(function (intakeEndpoint) { return url.indexOf(intakeEndpoint) === 0; }); },\n        replica: replicaConfiguration,\n        site: initConfiguration.site || INTAKE_SITE_US1,\n    }, endpointBuilders);\n}\nfunction computeEndpointBuilders(initConfiguration, tags) {\n    return {\n        logsEndpointBuilder: createEndpointBuilder(initConfiguration, 'logs', tags),\n        rumEndpointBuilder: createEndpointBuilder(initConfiguration, 'rum', tags),\n        sessionReplayEndpointBuilder: createEndpointBuilder(initConfiguration, 'sessionReplay', tags),\n    };\n}\nfunction computeReplicaConfiguration(initConfiguration, intakeEndpoints, tags) {\n    if (!initConfiguration.replica) {\n        return;\n    }\n    var replicaConfiguration = assign({}, initConfiguration, {\n        site: INTAKE_SITE_US1,\n        clientToken: initConfiguration.replica.clientToken,\n    });\n    var replicaEndpointBuilders = {\n        logsEndpointBuilder: createEndpointBuilder(replicaConfiguration, 'logs', tags),\n        rumEndpointBuilder: createEndpointBuilder(replicaConfiguration, 'rum', tags),\n    };\n    intakeEndpoints.push.apply(intakeEndpoints, objectValues(replicaEndpointBuilders).map(function (builder) { return builder.buildIntakeUrl(); }));\n    return assign({ applicationId: initConfiguration.replica.applicationId }, replicaEndpointBuilders);\n}\n//# sourceMappingURL=transportConfiguration.js.map","import { getCurrentSite } from '../../browser/cookie';\nimport { catchUserErrors } from '../../tools/catchUserErrors';\nimport { display } from '../../tools/display';\nimport { assign, isPercentage, ONE_KIBI_BYTE, ONE_SECOND } from '../../tools/utils';\nimport { updateExperimentalFeatures } from './experimentalFeatures';\nimport { computeTransportConfiguration } from './transportConfiguration';\nexport var DefaultPrivacyLevel = {\n    ALLOW: 'allow',\n    MASK: 'mask',\n    MASK_USER_INPUT: 'mask-user-input',\n};\nexport function validateAndBuildConfiguration(initConfiguration) {\n    var _a, _b, _c;\n    if (!initConfiguration || !initConfiguration.clientToken) {\n        display.error('Client Token is not configured, we will not send any data.');\n        return;\n    }\n    if (initConfiguration.sampleRate !== undefined && !isPercentage(initConfiguration.sampleRate)) {\n        display.error('Sample Rate should be a number between 0 and 100');\n        return;\n    }\n    if (initConfiguration.telemetrySampleRate !== undefined && !isPercentage(initConfiguration.telemetrySampleRate)) {\n        display.error('Telemetry Sample Rate should be a number between 0 and 100');\n        return;\n    }\n    if (initConfiguration.telemetryConfigurationSampleRate !== undefined &&\n        !isPercentage(initConfiguration.telemetryConfigurationSampleRate)) {\n        display.error('Telemetry Configuration Sample Rate should be a number between 0 and 100');\n        return;\n    }\n    // Set the experimental feature flags as early as possible, so we can use them in most places\n    updateExperimentalFeatures(initConfiguration.enableExperimentalFeatures);\n    return assign({\n        beforeSend: initConfiguration.beforeSend && catchUserErrors(initConfiguration.beforeSend, 'beforeSend threw an error:'),\n        cookieOptions: buildCookieOptions(initConfiguration),\n        sampleRate: (_a = initConfiguration.sampleRate) !== null && _a !== void 0 ? _a : 100,\n        telemetrySampleRate: (_b = initConfiguration.telemetrySampleRate) !== null && _b !== void 0 ? _b : 20,\n        telemetryConfigurationSampleRate: (_c = initConfiguration.telemetryConfigurationSampleRate) !== null && _c !== void 0 ? _c : 5,\n        service: initConfiguration.service,\n        silentMultipleInit: !!initConfiguration.silentMultipleInit,\n        /**\n         * beacon payload max queue size implementation is 64kb\n         * ensure that we leave room for logs, rum and potential other users\n         */\n        batchBytesLimit: 16 * ONE_KIBI_BYTE,\n        eventRateLimiterThreshold: 3000,\n        maxTelemetryEventsPerPage: 15,\n        /**\n         * flush automatically, aim to be lower than ALB connection timeout\n         * to maximize connection reuse.\n         */\n        flushTimeout: 30 * ONE_SECOND,\n        /**\n         * Logs intake limit\n         */\n        batchMessagesLimit: 50,\n        messageBytesLimit: 256 * ONE_KIBI_BYTE,\n    }, computeTransportConfiguration(initConfiguration));\n}\nexport function buildCookieOptions(initConfiguration) {\n    var cookieOptions = {};\n    cookieOptions.secure = mustUseSecureCookie(initConfiguration);\n    cookieOptions.crossSite = !!initConfiguration.useCrossSiteSessionCookie;\n    if (initConfiguration.trackSessionAcrossSubdomains) {\n        cookieOptions.domain = getCurrentSite();\n    }\n    return cookieOptions;\n}\nfunction mustUseSecureCookie(initConfiguration) {\n    return !!initConfiguration.useSecureSessionCookie || !!initConfiguration.useCrossSiteSessionCookie;\n}\nexport function serializeConfiguration(configuration) {\n    return {\n        session_sample_rate: configuration.sampleRate,\n        telemetry_sample_rate: configuration.telemetrySampleRate,\n        telemetry_configuration_sample_rate: configuration.telemetryConfigurationSampleRate,\n        use_before_send: !!configuration.beforeSend,\n        use_cross_site_session_cookie: configuration.useCrossSiteSessionCookie,\n        use_secure_session_cookie: configuration.useSecureSessionCookie,\n        use_proxy: configuration.proxyUrl !== undefined ? !!configuration.proxyUrl : undefined,\n        silent_multiple_init: configuration.silentMultipleInit,\n        track_session_across_subdomains: configuration.trackSessionAcrossSubdomains,\n        track_resources: configuration.trackResources,\n        track_long_task: configuration.trackLongTasks,\n    };\n}\n//# sourceMappingURL=configuration.js.map","import { startsWith } from '../../tools/utils';\nvar UNKNOWN_FUNCTION = '?';\n/**\n * Computes a stack trace for an exception.\n */\nexport function computeStackTrace(ex) {\n    var stack = [];\n    var stackProperty = tryToGetString(ex, 'stack');\n    var exString = String(ex);\n    if (stackProperty && startsWith(stackProperty, exString)) {\n        stackProperty = stackProperty.slice(exString.length);\n    }\n    if (stackProperty) {\n        stackProperty.split('\\n').forEach(function (line) {\n            var stackFrame = parseChromeLine(line) || parseChromeAnonymousLine(line) || parseWinLine(line) || parseGeckoLine(line);\n            if (stackFrame) {\n                if (!stackFrame.func && stackFrame.line) {\n                    stackFrame.func = UNKNOWN_FUNCTION;\n                }\n                stack.push(stackFrame);\n            }\n        });\n    }\n    return {\n        message: tryToGetString(ex, 'message'),\n        name: tryToGetString(ex, 'name'),\n        stack: stack,\n    };\n}\nvar fileUrl = '((?:file|https?|blob|chrome-extension|native|eval|webpack|<anonymous>|\\\\w+\\\\.|\\\\/).*?)';\nvar filePosition = '(?::(\\\\d+))';\nvar CHROME_LINE_RE = new RegExp(\"^\\\\s*at (.*?) ?\\\\(\".concat(fileUrl).concat(filePosition, \"?\").concat(filePosition, \"?\\\\)?\\\\s*$\"), 'i');\nvar CHROME_EVAL_RE = new RegExp(\"\\\\((\\\\S*)\".concat(filePosition).concat(filePosition, \"\\\\)\"));\nfunction parseChromeLine(line) {\n    var parts = CHROME_LINE_RE.exec(line);\n    if (!parts) {\n        return;\n    }\n    var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line\n    var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line\n    var submatch = CHROME_EVAL_RE.exec(parts[2]);\n    if (isEval && submatch) {\n        // throw out eval line/column and use top-most line/column number\n        parts[2] = submatch[1]; // url\n        parts[3] = submatch[2]; // line\n        parts[4] = submatch[3]; // column\n    }\n    return {\n        args: isNative ? [parts[2]] : [],\n        column: parts[4] ? +parts[4] : undefined,\n        func: parts[1] || UNKNOWN_FUNCTION,\n        line: parts[3] ? +parts[3] : undefined,\n        url: !isNative ? parts[2] : undefined,\n    };\n}\nvar CHROME_ANONYMOUS_FUNCTION_RE = new RegExp(\"^\\\\s*at ?\".concat(fileUrl).concat(filePosition, \"?\").concat(filePosition, \"??\\\\s*$\"), 'i');\nfunction parseChromeAnonymousLine(line) {\n    var parts = CHROME_ANONYMOUS_FUNCTION_RE.exec(line);\n    if (!parts) {\n        return;\n    }\n    return {\n        args: [],\n        column: parts[3] ? +parts[3] : undefined,\n        func: UNKNOWN_FUNCTION,\n        line: parts[2] ? +parts[2] : undefined,\n        url: parts[1],\n    };\n}\nvar WINJS_LINE_RE = /^\\s*at (?:((?:\\[object object\\])?.+) )?\\(?((?:file|ms-appx|https?|webpack|blob):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i;\nfunction parseWinLine(line) {\n    var parts = WINJS_LINE_RE.exec(line);\n    if (!parts) {\n        return;\n    }\n    return {\n        args: [],\n        column: parts[4] ? +parts[4] : undefined,\n        func: parts[1] || UNKNOWN_FUNCTION,\n        line: +parts[3],\n        url: parts[2],\n    };\n}\nvar GECKO_LINE_RE = /^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|capacitor|\\[native).*?|[^@]*bundle)(?::(\\d+))?(?::(\\d+))?\\s*$/i;\nvar GECKO_EVAL_RE = /(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i;\nfunction parseGeckoLine(line) {\n    var parts = GECKO_LINE_RE.exec(line);\n    if (!parts) {\n        return;\n    }\n    var isEval = parts[3] && parts[3].indexOf(' > eval') > -1;\n    var submatch = GECKO_EVAL_RE.exec(parts[3]);\n    if (isEval && submatch) {\n        // throw out eval line/column and use top-most line number\n        parts[3] = submatch[1];\n        parts[4] = submatch[2];\n        parts[5] = undefined; // no column when eval\n    }\n    return {\n        args: parts[2] ? parts[2].split(',') : [],\n        column: parts[5] ? +parts[5] : undefined,\n        func: parts[1] || UNKNOWN_FUNCTION,\n        line: parts[4] ? +parts[4] : undefined,\n        url: parts[3],\n    };\n}\nfunction tryToGetString(candidate, property) {\n    if (typeof candidate !== 'object' || !candidate || !(property in candidate)) {\n        return undefined;\n    }\n    var value = candidate[property];\n    return typeof value === 'string' ? value : undefined;\n}\n//# sourceMappingURL=computeStackTrace.js.map","import { computeStackTrace } from '../domain/tracekit';\nimport { callMonitored } from './monitor';\nimport { jsonStringify, noop } from './utils';\nexport var ErrorSource = {\n    AGENT: 'agent',\n    CONSOLE: 'console',\n    CUSTOM: 'custom',\n    LOGGER: 'logger',\n    NETWORK: 'network',\n    SOURCE: 'source',\n    REPORT: 'report',\n};\nexport function computeRawError(_a) {\n    var stackTrace = _a.stackTrace, originalError = _a.originalError, handlingStack = _a.handlingStack, startClocks = _a.startClocks, nonErrorPrefix = _a.nonErrorPrefix, source = _a.source, handling = _a.handling;\n    if (!stackTrace || (stackTrace.message === undefined && !(originalError instanceof Error))) {\n        return {\n            startClocks: startClocks,\n            source: source,\n            handling: handling,\n            originalError: originalError,\n            message: \"\".concat(nonErrorPrefix, \" \").concat(jsonStringify(originalError)),\n            stack: 'No stack, consider using an instance of Error',\n            handlingStack: handlingStack,\n            type: stackTrace && stackTrace.name,\n        };\n    }\n    return {\n        startClocks: startClocks,\n        source: source,\n        handling: handling,\n        originalError: originalError,\n        message: stackTrace.message || 'Empty message',\n        stack: toStackTraceString(stackTrace),\n        handlingStack: handlingStack,\n        type: stackTrace.name,\n        causes: flattenErrorCauses(originalError, source),\n    };\n}\nexport function toStackTraceString(stack) {\n    var result = formatErrorMessage(stack);\n    stack.stack.forEach(function (frame) {\n        var func = frame.func === '?' ? '<anonymous>' : frame.func;\n        var args = frame.args && frame.args.length > 0 ? \"(\".concat(frame.args.join(', '), \")\") : '';\n        var line = frame.line ? \":\".concat(frame.line) : '';\n        var column = frame.line && frame.column ? \":\".concat(frame.column) : '';\n        result += \"\\n  at \".concat(func).concat(args, \" @ \").concat(frame.url).concat(line).concat(column);\n    });\n    return result;\n}\nexport function getFileFromStackTraceString(stack) {\n    var _a;\n    return (_a = /@ (.+)/.exec(stack)) === null || _a === void 0 ? void 0 : _a[1];\n}\nexport function formatErrorMessage(stack) {\n    return \"\".concat(stack.name || 'Error', \": \").concat(stack.message);\n}\n/**\n Creates a stacktrace without SDK internal frames.\n \n Constraints:\n - Has to be called at the utmost position of the call stack.\n - No monitored function should encapsulate it, that is why we need to use callMonitored inside it.\n */\nexport function createHandlingStack() {\n    /**\n     * Skip the two internal frames:\n     * - SDK API (console.error, ...)\n     * - this function\n     * in order to keep only the user calls\n     */\n    var internalFramesToSkip = 2;\n    var error = new Error();\n    var formattedStack;\n    // IE needs to throw the error to fill in the stack trace\n    if (!error.stack) {\n        try {\n            throw error;\n        }\n        catch (e) {\n            noop();\n        }\n    }\n    callMonitored(function () {\n        var stackTrace = computeStackTrace(error);\n        stackTrace.stack = stackTrace.stack.slice(internalFramesToSkip);\n        formattedStack = toStackTraceString(stackTrace);\n    });\n    return formattedStack;\n}\nexport function flattenErrorCauses(error, parentSource) {\n    var currentError = error;\n    var causes = [];\n    while ((currentError === null || currentError === void 0 ? void 0 : currentError.cause) instanceof Error && causes.length < 10) {\n        var stackTrace = computeStackTrace(currentError.cause);\n        causes.push({\n            message: currentError.cause.message,\n            source: parentSource,\n            type: stackTrace === null || stackTrace === void 0 ? void 0 : stackTrace.name,\n            stack: stackTrace && toStackTraceString(stackTrace),\n        });\n        currentError = currentError.cause;\n    }\n    return causes.length ? causes : undefined;\n}\n//# sourceMappingURL=error.js.map","var Observable = /** @class */ (function () {\n    function Observable(onFirstSubscribe) {\n        this.onFirstSubscribe = onFirstSubscribe;\n        this.observers = [];\n    }\n    Observable.prototype.subscribe = function (f) {\n        var _this = this;\n        if (!this.observers.length && this.onFirstSubscribe) {\n            this.onLastUnsubscribe = this.onFirstSubscribe() || undefined;\n        }\n        this.observers.push(f);\n        return {\n            unsubscribe: function () {\n                _this.observers = _this.observers.filter(function (other) { return f !== other; });\n                if (!_this.observers.length && _this.onLastUnsubscribe) {\n                    _this.onLastUnsubscribe();\n                }\n            },\n        };\n    };\n    Observable.prototype.notify = function (data) {\n        this.observers.forEach(function (observer) { return observer(data); });\n    };\n    return Observable;\n}());\nexport { Observable };\nexport function mergeObservables() {\n    var observables = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        observables[_i] = arguments[_i];\n    }\n    var globalObservable = new Observable(function () {\n        var subscriptions = observables.map(function (observable) {\n            return observable.subscribe(function (data) { return globalObservable.notify(data); });\n        });\n        return function () { return subscriptions.forEach(function (subscription) { return subscription.unsubscribe(); }); };\n    });\n    return globalObservable;\n}\n//# sourceMappingURL=observable.js.map","import { toStackTraceString } from '../../tools/error';\nimport { monitor } from '../../tools/monitor';\nimport { mergeObservables, Observable } from '../../tools/observable';\nimport { includes, addEventListener, safeTruncate } from '../../tools/utils';\nexport var RawReportType = {\n    intervention: 'intervention',\n    deprecation: 'deprecation',\n    cspViolation: 'csp_violation',\n};\nexport function initReportObservable(apis) {\n    var observables = [];\n    if (includes(apis, RawReportType.cspViolation)) {\n        observables.push(createCspViolationReportObservable());\n    }\n    var reportTypes = apis.filter(function (api) { return api !== RawReportType.cspViolation; });\n    if (reportTypes.length) {\n        observables.push(createReportObservable(reportTypes));\n    }\n    return mergeObservables.apply(void 0, observables);\n}\nfunction createReportObservable(reportTypes) {\n    var observable = new Observable(function () {\n        if (!window.ReportingObserver) {\n            return;\n        }\n        var handleReports = monitor(function (reports) {\n            return reports.forEach(function (report) {\n                observable.notify(buildRawReportFromReport(report));\n            });\n        });\n        var observer = new window.ReportingObserver(handleReports, {\n            types: reportTypes,\n            buffered: true,\n        });\n        observer.observe();\n        return function () {\n            observer.disconnect();\n        };\n    });\n    return observable;\n}\nfunction createCspViolationReportObservable() {\n    var observable = new Observable(function () {\n        var handleCspViolation = monitor(function (event) {\n            observable.notify(buildRawReportFromCspViolation(event));\n        });\n        var stop = addEventListener(document, \"securitypolicyviolation\" /* SECURITY_POLICY_VIOLATION */, handleCspViolation).stop;\n        return stop;\n    });\n    return observable;\n}\nfunction buildRawReportFromReport(_a) {\n    var type = _a.type, body = _a.body;\n    return {\n        type: type,\n        subtype: body.id,\n        message: \"\".concat(type, \": \").concat(body.message),\n        stack: buildStack(body.id, body.message, body.sourceFile, body.lineNumber, body.columnNumber),\n    };\n}\nfunction buildRawReportFromCspViolation(event) {\n    var type = RawReportType.cspViolation;\n    var message = \"'\".concat(event.blockedURI, \"' blocked by '\").concat(event.effectiveDirective, \"' directive\");\n    return {\n        type: RawReportType.cspViolation,\n        subtype: event.effectiveDirective,\n        message: \"\".concat(type, \": \").concat(message),\n        stack: buildStack(event.effectiveDirective, event.originalPolicy\n            ? \"\".concat(message, \" of the policy \\\"\").concat(safeTruncate(event.originalPolicy, 100, '...'), \"\\\"\")\n            : 'no policy', event.sourceFile, event.lineNumber, event.columnNumber),\n    };\n}\nfunction buildStack(name, message, sourceFile, lineNumber, columnNumber) {\n    return (sourceFile &&\n        toStackTraceString({\n            name: name,\n            message: message,\n            stack: [\n                {\n                    func: '?',\n                    url: sourceFile,\n                    line: lineNumber,\n                    column: columnNumber,\n                },\n            ],\n        }));\n}\n//# sourceMappingURL=reportObservable.js.map","import { serializeConfiguration, assign, ONE_KIBI_BYTE, validateAndBuildConfiguration, display, removeDuplicates, ConsoleApiName, RawReportType, includes, objectValues, } from '@datadog/browser-core';\n/**\n * arbitrary value, byte precision not needed\n */\nexport var DEFAULT_REQUEST_ERROR_RESPONSE_LENGTH_LIMIT = 32 * ONE_KIBI_BYTE;\nexport function validateAndBuildLogsConfiguration(initConfiguration) {\n    var baseConfiguration = validateAndBuildConfiguration(initConfiguration);\n    var forwardConsoleLogs = validateAndBuildForwardOption(initConfiguration.forwardConsoleLogs, objectValues(ConsoleApiName), 'Forward Console Logs');\n    var forwardReports = validateAndBuildForwardOption(initConfiguration.forwardReports, objectValues(RawReportType), 'Forward Reports');\n    if (!baseConfiguration || !forwardConsoleLogs || !forwardReports) {\n        return;\n    }\n    if (initConfiguration.forwardErrorsToLogs && !includes(forwardConsoleLogs, ConsoleApiName.error)) {\n        forwardConsoleLogs.push(ConsoleApiName.error);\n    }\n    return assign({\n        forwardErrorsToLogs: initConfiguration.forwardErrorsToLogs !== false,\n        forwardConsoleLogs: forwardConsoleLogs,\n        forwardReports: forwardReports,\n        requestErrorResponseLengthLimit: DEFAULT_REQUEST_ERROR_RESPONSE_LENGTH_LIMIT,\n    }, baseConfiguration);\n}\nexport function validateAndBuildForwardOption(option, allowedValues, label) {\n    if (option === undefined) {\n        return [];\n    }\n    if (!(option === 'all' || (Array.isArray(option) && option.every(function (api) { return includes(allowedValues, api); })))) {\n        display.error(\"\".concat(label, \" should be \\\"all\\\" or an array with allowed values \\\"\").concat(allowedValues.join('\", \"'), \"\\\"\"));\n        return;\n    }\n    return option === 'all' ? allowedValues : removeDuplicates(option);\n}\nexport function serializeLogsConfiguration(configuration) {\n    var baseSerializedInitConfiguration = serializeConfiguration(configuration);\n    return assign({\n        forward_errors_to_logs: configuration.forwardErrorsToLogs,\n        forward_console_logs: configuration.forwardConsoleLogs,\n        forward_reports: configuration.forwardReports,\n    }, baseSerializedInitConfiguration);\n}\n//# sourceMappingURL=configuration.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { deepClone, assign, combine, createContextManager, ErrorSource, monitored } from '@datadog/browser-core';\nexport var StatusType = {\n    debug: 'debug',\n    error: 'error',\n    info: 'info',\n    warn: 'warn',\n};\nexport var HandlerType = {\n    console: 'console',\n    http: 'http',\n    silent: 'silent',\n};\nexport var STATUSES = Object.keys(StatusType);\nvar Logger = /** @class */ (function () {\n    function Logger(handleLogStrategy, name, handlerType, level, loggerContext) {\n        if (handlerType === void 0) { handlerType = HandlerType.http; }\n        if (level === void 0) { level = StatusType.debug; }\n        if (loggerContext === void 0) { loggerContext = {}; }\n        this.handleLogStrategy = handleLogStrategy;\n        this.handlerType = handlerType;\n        this.level = level;\n        this.contextManager = createContextManager();\n        this.contextManager.set(assign({}, loggerContext, name ? { logger: { name: name } } : undefined));\n    }\n    Logger.prototype.log = function (message, messageContext, status) {\n        if (status === void 0) { status = StatusType.info; }\n        this.handleLogStrategy({ message: message, context: deepClone(messageContext), status: status }, this);\n    };\n    Logger.prototype.debug = function (message, messageContext) {\n        this.log(message, messageContext, StatusType.debug);\n    };\n    Logger.prototype.info = function (message, messageContext) {\n        this.log(message, messageContext, StatusType.info);\n    };\n    Logger.prototype.warn = function (message, messageContext) {\n        this.log(message, messageContext, StatusType.warn);\n    };\n    Logger.prototype.error = function (message, messageContext) {\n        var errorOrigin = {\n            error: {\n                origin: ErrorSource.LOGGER,\n            },\n        };\n        this.log(message, combine(errorOrigin, messageContext), StatusType.error);\n    };\n    Logger.prototype.setContext = function (context) {\n        this.contextManager.set(context);\n    };\n    Logger.prototype.getContext = function () {\n        return this.contextManager.get();\n    };\n    Logger.prototype.addContext = function (key, value) {\n        this.contextManager.add(key, value);\n    };\n    Logger.prototype.removeContext = function (key) {\n        this.contextManager.remove(key);\n    };\n    Logger.prototype.setHandler = function (handler) {\n        this.handlerType = handler;\n    };\n    Logger.prototype.getHandler = function () {\n        return this.handlerType;\n    };\n    Logger.prototype.setLevel = function (level) {\n        this.level = level;\n    };\n    Logger.prototype.getLevel = function () {\n        return this.level;\n    };\n    __decorate([\n        monitored\n    ], Logger.prototype, \"log\", null);\n    return Logger;\n}());\nexport { Logger };\n//# sourceMappingURL=logger.js.map","import { assign, BoundedBuffer, createContextManager, makePublicApi, monitor, display, deepClone, canUseEventBridge, timeStampNow, checkUser, sanitizeUser, } from '@datadog/browser-core';\nimport { validateAndBuildLogsConfiguration } from '../domain/configuration';\nimport { Logger } from '../domain/logger';\nexport function makeLogsPublicApi(startLogsImpl) {\n    var isAlreadyInitialized = false;\n    var globalContextManager = createContextManager();\n    var userContextManager = createContextManager();\n    var customLoggers = {};\n    var getInternalContextStrategy = function () { return undefined; };\n    var beforeInitLoggerLog = new BoundedBuffer();\n    var handleLogStrategy = function (logsMessage, logger, savedCommonContext, date) {\n        if (savedCommonContext === void 0) { savedCommonContext = deepClone(getCommonContext()); }\n        if (date === void 0) { date = timeStampNow(); }\n        beforeInitLoggerLog.add(function () { return handleLogStrategy(logsMessage, logger, savedCommonContext, date); });\n    };\n    var getInitConfigurationStrategy = function () { return undefined; };\n    var mainLogger = new Logger(function () {\n        var params = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            params[_i] = arguments[_i];\n        }\n        return handleLogStrategy.apply(void 0, params);\n    });\n    function getCommonContext() {\n        return {\n            view: {\n                referrer: document.referrer,\n                url: window.location.href,\n            },\n            context: globalContextManager.getContext(),\n            user: userContextManager.getContext(),\n        };\n    }\n    return makePublicApi({\n        logger: mainLogger,\n        init: monitor(function (initConfiguration) {\n            var _a;\n            if (canUseEventBridge()) {\n                initConfiguration = overrideInitConfigurationForBridge(initConfiguration);\n            }\n            if (!canInitLogs(initConfiguration)) {\n                return;\n            }\n            var configuration = validateAndBuildLogsConfiguration(initConfiguration);\n            if (!configuration) {\n                return;\n            }\n            ;\n            (_a = startLogsImpl(initConfiguration, configuration, getCommonContext, mainLogger), handleLogStrategy = _a.handleLog, getInternalContextStrategy = _a.getInternalContext);\n            getInitConfigurationStrategy = function () { return deepClone(initConfiguration); };\n            beforeInitLoggerLog.drain();\n            isAlreadyInitialized = true;\n        }),\n        /** @deprecated: use getGlobalContext instead */\n        getLoggerGlobalContext: monitor(globalContextManager.get),\n        getGlobalContext: monitor(globalContextManager.getContext),\n        /** @deprecated: use setGlobalContext instead */\n        setLoggerGlobalContext: monitor(globalContextManager.set),\n        setGlobalContext: monitor(globalContextManager.setContext),\n        /** @deprecated: use setGlobalContextProperty instead */\n        addLoggerGlobalContext: monitor(globalContextManager.add),\n        setGlobalContextProperty: monitor(globalContextManager.setContextProperty),\n        /** @deprecated: use removeGlobalContextProperty instead */\n        removeLoggerGlobalContext: monitor(globalContextManager.remove),\n        removeGlobalContextProperty: monitor(globalContextManager.removeContextProperty),\n        clearGlobalContext: monitor(globalContextManager.clearContext),\n        createLogger: monitor(function (name, conf) {\n            if (conf === void 0) { conf = {}; }\n            customLoggers[name] = new Logger(function () {\n                var params = [];\n                for (var _i = 0; _i < arguments.length; _i++) {\n                    params[_i] = arguments[_i];\n                }\n                return handleLogStrategy.apply(void 0, params);\n            }, name, conf.handler, conf.level, conf.context);\n            return customLoggers[name];\n        }),\n        getLogger: monitor(function (name) { return customLoggers[name]; }),\n        getInitConfiguration: monitor(function () { return getInitConfigurationStrategy(); }),\n        getInternalContext: monitor(function (startTime) { return getInternalContextStrategy(startTime); }),\n        setUser: monitor(function (newUser) {\n            if (checkUser(newUser)) {\n                userContextManager.setContext(sanitizeUser(newUser));\n            }\n        }),\n        getUser: monitor(userContextManager.getContext),\n        setUserProperty: monitor(function (key, property) {\n            var _a;\n            var sanitizedProperty = sanitizeUser((_a = {}, _a[key] = property, _a))[key];\n            userContextManager.setContextProperty(key, sanitizedProperty);\n        }),\n        removeUserProperty: monitor(userContextManager.removeContextProperty),\n        clearUser: monitor(userContextManager.clearContext),\n    });\n    function overrideInitConfigurationForBridge(initConfiguration) {\n        return assign({}, initConfiguration, { clientToken: 'empty' });\n    }\n    function canInitLogs(initConfiguration) {\n        if (isAlreadyInitialized) {\n            if (!initConfiguration.silentMultipleInit) {\n                display.error('DD_LOGS is already initialized.');\n            }\n            return false;\n        }\n        return true;\n    }\n}\n//# sourceMappingURL=logsPublicApi.js.map","import { Observable } from '../tools/observable';\nimport { addEventListener } from '../tools/utils';\nexport function createPageExitObservable() {\n    var observable = new Observable(function () {\n        /**\n         * Only event that guarantee to fire on mobile devices when the page transitions to background state\n         * (e.g. when user switches to a different application, goes to homescreen, etc), or is being unloaded.\n         */\n        var stopVisibilityChangeListener = addEventListener(document, \"visibilitychange\" /* VISIBILITY_CHANGE */, function () {\n            if (document.visibilityState === 'hidden') {\n                observable.notify({ reason: \"visibility_hidden\" /* HIDDEN */ });\n            }\n        }, { capture: true }).stop;\n        /**\n         * Safari does not support yet to send a request during:\n         * - a visibility change during doc unload (cf: https://bugs.webkit.org/show_bug.cgi?id=194897)\n         * - a page hide transition (cf: https://bugs.webkit.org/show_bug.cgi?id=188329)\n         */\n        var stopBeforeUnloadListener = addEventListener(window, \"beforeunload\" /* BEFORE_UNLOAD */, function () {\n            observable.notify({ reason: \"before_unload\" /* UNLOADING */ });\n        }).stop;\n        return function () {\n            stopVisibilityChangeListener();\n            stopBeforeUnloadListener();\n        };\n    });\n    return observable;\n}\n//# sourceMappingURL=pageExitObservable.js.map","import { getCookie } from '../../browser/cookie';\nexport var SYNTHETICS_TEST_ID_COOKIE_NAME = 'datadog-synthetics-public-id';\nexport var SYNTHETICS_RESULT_ID_COOKIE_NAME = 'datadog-synthetics-result-id';\nexport var SYNTHETICS_INJECTS_RUM_COOKIE_NAME = 'datadog-synthetics-injects-rum';\nexport function willSyntheticsInjectRum() {\n    return Boolean(window._DATADOG_SYNTHETICS_INJECTS_RUM || getCookie(SYNTHETICS_INJECTS_RUM_COOKIE_NAME));\n}\nexport function getSyntheticsTestId() {\n    var value = window._DATADOG_SYNTHETICS_PUBLIC_ID || getCookie(SYNTHETICS_TEST_ID_COOKIE_NAME);\n    return typeof value === 'string' ? value : undefined;\n}\nexport function getSyntheticsResultId() {\n    var value = window._DATADOG_SYNTHETICS_RESULT_ID || getCookie(SYNTHETICS_RESULT_ID_COOKIE_NAME);\n    return typeof value === 'string' ? value : undefined;\n}\n//# sourceMappingURL=syntheticsWorkerValues.js.map","export var TelemetryType = {\n    log: 'log',\n    configuration: 'configuration',\n};\n//# sourceMappingURL=rawTelemetryEvent.types.js.map","import { ConsoleApiName } from '../../tools/display';\nimport { toStackTraceString } from '../../tools/error';\nimport { assign, combine, jsonStringify, performDraw, includes, startsWith, arrayFrom } from '../../tools/utils';\nimport { getExperimentalFeatures, INTAKE_SITE_STAGING, INTAKE_SITE_US1_FED } from '../configuration';\nimport { computeStackTrace } from '../tracekit';\nimport { Observable } from '../../tools/observable';\nimport { timeStampNow } from '../../tools/timeUtils';\nimport { displayIfDebugEnabled, startMonitorErrorCollection } from '../../tools/monitor';\nimport { TelemetryType } from './rawTelemetryEvent.types';\nvar ALLOWED_FRAME_URLS = [\n    'https://www.datadoghq-browser-agent.com',\n    'https://www.datad0g-browser-agent.com',\n    'http://localhost',\n    '<anonymous>',\n];\nvar TELEMETRY_EXCLUDED_SITES = [INTAKE_SITE_US1_FED];\nvar telemetryConfiguration = { maxEventsPerPage: 0, sentEventCount: 0, telemetryEnabled: false, telemetryConfigurationEnabled: false };\nvar onRawTelemetryEventCollected;\nexport function startTelemetry(telemetryService, configuration) {\n    var contextProvider;\n    var observable = new Observable();\n    telemetryConfiguration.telemetryEnabled = performDraw(configuration.telemetrySampleRate);\n    telemetryConfiguration.telemetryConfigurationEnabled =\n        telemetryConfiguration.telemetryEnabled && performDraw(configuration.telemetryConfigurationSampleRate);\n    onRawTelemetryEventCollected = function (event) {\n        if (!includes(TELEMETRY_EXCLUDED_SITES, configuration.site) && telemetryConfiguration.telemetryEnabled) {\n            observable.notify(toTelemetryEvent(telemetryService, event));\n        }\n    };\n    startMonitorErrorCollection(addTelemetryError);\n    assign(telemetryConfiguration, {\n        maxEventsPerPage: configuration.maxTelemetryEventsPerPage,\n        sentEventCount: 0,\n    });\n    function toTelemetryEvent(telemetryService, event) {\n        return combine({\n            type: 'telemetry',\n            date: timeStampNow(),\n            service: telemetryService,\n            version: \"4.25.0\",\n            source: 'browser',\n            _dd: {\n                format_version: 2,\n            },\n            telemetry: event,\n            experimental_features: arrayFrom(getExperimentalFeatures()),\n        }, contextProvider !== undefined ? contextProvider() : {});\n    }\n    return {\n        setContextProvider: function (provider) {\n            contextProvider = provider;\n        },\n        observable: observable,\n    };\n}\nexport function startFakeTelemetry() {\n    var events = [];\n    assign(telemetryConfiguration, {\n        maxEventsPerPage: Infinity,\n        sentEventCount: 0,\n    });\n    onRawTelemetryEventCollected = function (event) {\n        events.push(event);\n    };\n    return events;\n}\nexport function resetTelemetry() {\n    onRawTelemetryEventCollected = undefined;\n}\n/**\n * Avoid mixing telemetry events from different data centers\n * but keep replicating staging events for reliability\n */\nexport function isTelemetryReplicationAllowed(configuration) {\n    return configuration.site === INTAKE_SITE_STAGING;\n}\nexport function addTelemetryDebug(message, context) {\n    displayIfDebugEnabled(ConsoleApiName.debug, message, context);\n    addTelemetry(assign({\n        type: TelemetryType.log,\n        message: message,\n        status: \"debug\" /* debug */,\n    }, context));\n}\nexport function addTelemetryError(e) {\n    addTelemetry(assign({\n        type: TelemetryType.log,\n        status: \"error\" /* error */,\n    }, formatError(e)));\n}\nexport function addTelemetryConfiguration(configuration) {\n    if (telemetryConfiguration.telemetryConfigurationEnabled) {\n        addTelemetry({\n            type: TelemetryType.configuration,\n            configuration: configuration,\n        });\n    }\n}\nfunction addTelemetry(event) {\n    if (onRawTelemetryEventCollected && telemetryConfiguration.sentEventCount < telemetryConfiguration.maxEventsPerPage) {\n        telemetryConfiguration.sentEventCount += 1;\n        onRawTelemetryEventCollected(event);\n    }\n}\nexport function formatError(e) {\n    if (e instanceof Error) {\n        var stackTrace = computeStackTrace(e);\n        return {\n            error: {\n                kind: stackTrace.name,\n                stack: toStackTraceString(scrubCustomerFrames(stackTrace)),\n            },\n            message: stackTrace.message,\n        };\n    }\n    return {\n        error: {\n            stack: 'Not an instance of error',\n        },\n        message: \"Uncaught \".concat(jsonStringify(e)),\n    };\n}\nexport function scrubCustomerFrames(stackTrace) {\n    stackTrace.stack = stackTrace.stack.filter(function (frame) { return !frame.url || ALLOWED_FRAME_URLS.some(function (allowedFrameUrl) { return startsWith(frame.url, allowedFrameUrl); }); });\n    return stackTrace;\n}\n//# sourceMappingURL=telemetry.js.map","import { display } from '../tools/display';\nimport { jsonStringify, objectValues } from '../tools/utils';\nimport { monitor } from '../tools/monitor';\n// https://en.wikipedia.org/wiki/UTF-8\n// eslint-disable-next-line no-control-regex\nvar HAS_MULTI_BYTES_CHARACTERS = /[^\\u0000-\\u007F]/;\nvar Batch = /** @class */ (function () {\n    function Batch(request, batchMessagesLimit, batchBytesLimit, messageBytesLimit, flushTimeout, pageExitObservable) {\n        var _this = this;\n        this.request = request;\n        this.batchMessagesLimit = batchMessagesLimit;\n        this.batchBytesLimit = batchBytesLimit;\n        this.messageBytesLimit = messageBytesLimit;\n        this.flushTimeout = flushTimeout;\n        this.pageExitObservable = pageExitObservable;\n        this.pushOnlyBuffer = [];\n        this.upsertBuffer = {};\n        this.bufferBytesCount = 0;\n        this.bufferMessagesCount = 0;\n        pageExitObservable.subscribe(function () { return _this.flush(_this.request.sendOnExit); });\n        this.flushPeriodically();\n    }\n    Batch.prototype.add = function (message) {\n        this.addOrUpdate(message);\n    };\n    Batch.prototype.upsert = function (message, key) {\n        this.addOrUpdate(message, key);\n    };\n    Batch.prototype.flush = function (sendFn) {\n        if (sendFn === void 0) { sendFn = this.request.send; }\n        if (this.bufferMessagesCount !== 0) {\n            var messages = this.pushOnlyBuffer.concat(objectValues(this.upsertBuffer));\n            var bytesCount = this.bufferBytesCount;\n            this.pushOnlyBuffer = [];\n            this.upsertBuffer = {};\n            this.bufferBytesCount = 0;\n            this.bufferMessagesCount = 0;\n            sendFn({ data: messages.join('\\n'), bytesCount: bytesCount });\n        }\n    };\n    Batch.prototype.computeBytesCount = function (candidate) {\n        // Accurate bytes count computations can degrade performances when there is a lot of events to process\n        if (!HAS_MULTI_BYTES_CHARACTERS.test(candidate)) {\n            return candidate.length;\n        }\n        if (window.TextEncoder !== undefined) {\n            return new TextEncoder().encode(candidate).length;\n        }\n        return new Blob([candidate]).size;\n    };\n    Batch.prototype.addOrUpdate = function (message, key) {\n        var _a = this.process(message), processedMessage = _a.processedMessage, messageBytesCount = _a.messageBytesCount;\n        if (messageBytesCount >= this.messageBytesLimit) {\n            display.warn(\"Discarded a message whose size was bigger than the maximum allowed size \".concat(this.messageBytesLimit, \"KB.\"));\n            return;\n        }\n        if (this.hasMessageFor(key)) {\n            this.remove(key);\n        }\n        if (this.willReachedBytesLimitWith(messageBytesCount)) {\n            this.flush();\n        }\n        this.push(processedMessage, messageBytesCount, key);\n        if (this.isFull()) {\n            this.flush();\n        }\n    };\n    Batch.prototype.process = function (message) {\n        var processedMessage = jsonStringify(message);\n        var messageBytesCount = this.computeBytesCount(processedMessage);\n        return { processedMessage: processedMessage, messageBytesCount: messageBytesCount };\n    };\n    Batch.prototype.push = function (processedMessage, messageBytesCount, key) {\n        if (this.bufferMessagesCount > 0) {\n            // \\n separator at serialization\n            this.bufferBytesCount += 1;\n        }\n        if (key !== undefined) {\n            this.upsertBuffer[key] = processedMessage;\n        }\n        else {\n            this.pushOnlyBuffer.push(processedMessage);\n        }\n        this.bufferBytesCount += messageBytesCount;\n        this.bufferMessagesCount += 1;\n    };\n    Batch.prototype.remove = function (key) {\n        var removedMessage = this.upsertBuffer[key];\n        delete this.upsertBuffer[key];\n        var messageBytesCount = this.computeBytesCount(removedMessage);\n        this.bufferBytesCount -= messageBytesCount;\n        this.bufferMessagesCount -= 1;\n        if (this.bufferMessagesCount > 0) {\n            this.bufferBytesCount -= 1;\n        }\n    };\n    Batch.prototype.hasMessageFor = function (key) {\n        return key !== undefined && this.upsertBuffer[key] !== undefined;\n    };\n    Batch.prototype.willReachedBytesLimitWith = function (messageBytesCount) {\n        // byte of the separator at the end of the message\n        return this.bufferBytesCount + messageBytesCount + 1 >= this.batchBytesLimit;\n    };\n    Batch.prototype.isFull = function () {\n        return this.bufferMessagesCount === this.batchMessagesLimit || this.bufferBytesCount >= this.batchBytesLimit;\n    };\n    Batch.prototype.flushPeriodically = function () {\n        var _this = this;\n        setTimeout(monitor(function () {\n            _this.flush();\n            _this.flushPeriodically();\n        }), this.flushTimeout);\n    };\n    return Batch;\n}());\nexport { Batch };\n//# sourceMappingURL=batch.js.map","import { monitor } from '../tools/monitor';\nimport { clocksNow } from '../tools/timeUtils';\nimport { ONE_KIBI_BYTE, ONE_MEBI_BYTE, ONE_SECOND, ONE_MINUTE } from '../tools/utils';\nimport { ErrorSource } from '../tools/error';\nexport var MAX_ONGOING_BYTES_COUNT = 80 * ONE_KIBI_BYTE;\nexport var MAX_ONGOING_REQUESTS = 32;\nexport var MAX_QUEUE_BYTES_COUNT = 3 * ONE_MEBI_BYTE;\nexport var MAX_BACKOFF_TIME = ONE_MINUTE;\nexport var INITIAL_BACKOFF_TIME = ONE_SECOND;\nexport function sendWithRetryStrategy(payload, state, sendStrategy, endpointType, reportError) {\n    if (state.transportStatus === 0 /* UP */ &&\n        state.queuedPayloads.size() === 0 &&\n        state.bandwidthMonitor.canHandle(payload)) {\n        send(payload, state, sendStrategy, {\n            onSuccess: function () { return retryQueuedPayloads(0 /* AFTER_SUCCESS */, state, sendStrategy, endpointType, reportError); },\n            onFailure: function () {\n                state.queuedPayloads.enqueue(payload);\n                scheduleRetry(state, sendStrategy, endpointType, reportError);\n            },\n        });\n    }\n    else {\n        state.queuedPayloads.enqueue(payload);\n    }\n}\nfunction scheduleRetry(state, sendStrategy, endpointType, reportError) {\n    if (state.transportStatus !== 2 /* DOWN */) {\n        return;\n    }\n    setTimeout(monitor(function () {\n        var payload = state.queuedPayloads.first();\n        send(payload, state, sendStrategy, {\n            onSuccess: function () {\n                state.queuedPayloads.dequeue();\n                state.currentBackoffTime = INITIAL_BACKOFF_TIME;\n                retryQueuedPayloads(1 /* AFTER_RESUME */, state, sendStrategy, endpointType, reportError);\n            },\n            onFailure: function () {\n                state.currentBackoffTime = Math.min(MAX_BACKOFF_TIME, state.currentBackoffTime * 2);\n                scheduleRetry(state, sendStrategy, endpointType, reportError);\n            },\n        });\n    }), state.currentBackoffTime);\n}\nfunction send(payload, state, sendStrategy, _a) {\n    var onSuccess = _a.onSuccess, onFailure = _a.onFailure;\n    state.bandwidthMonitor.add(payload);\n    sendStrategy(payload, function (response) {\n        state.bandwidthMonitor.remove(payload);\n        if (!shouldRetryRequest(response)) {\n            state.transportStatus = 0 /* UP */;\n            onSuccess();\n        }\n        else {\n            // do not consider transport down if another ongoing request could succeed\n            state.transportStatus =\n                state.bandwidthMonitor.ongoingRequestCount > 0 ? 1 /* FAILURE_DETECTED */ : 2 /* DOWN */;\n            payload.retry = {\n                count: payload.retry ? payload.retry.count + 1 : 1,\n                lastFailureStatus: response.status,\n            };\n            onFailure();\n        }\n    });\n}\nfunction retryQueuedPayloads(reason, state, sendStrategy, endpointType, reportError) {\n    if (reason === 0 /* AFTER_SUCCESS */ && state.queuedPayloads.isFull() && !state.queueFullReported) {\n        reportError({\n            message: \"Reached max \".concat(endpointType, \" events size queued for upload: \").concat(MAX_QUEUE_BYTES_COUNT / ONE_MEBI_BYTE, \"MiB\"),\n            source: ErrorSource.AGENT,\n            startClocks: clocksNow(),\n        });\n        state.queueFullReported = true;\n    }\n    var previousQueue = state.queuedPayloads;\n    state.queuedPayloads = newPayloadQueue();\n    while (previousQueue.size() > 0) {\n        sendWithRetryStrategy(previousQueue.dequeue(), state, sendStrategy, endpointType, reportError);\n    }\n}\nfunction shouldRetryRequest(response) {\n    return response.status === 0 || response.status === 408 || response.status === 429 || response.status >= 500;\n}\nexport function newRetryState() {\n    return {\n        transportStatus: 0 /* UP */,\n        currentBackoffTime: INITIAL_BACKOFF_TIME,\n        bandwidthMonitor: newBandwidthMonitor(),\n        queuedPayloads: newPayloadQueue(),\n        queueFullReported: false,\n    };\n}\nfunction newPayloadQueue() {\n    var queue = [];\n    return {\n        bytesCount: 0,\n        enqueue: function (payload) {\n            if (this.isFull()) {\n                return;\n            }\n            queue.push(payload);\n            this.bytesCount += payload.bytesCount;\n        },\n        first: function () {\n            return queue[0];\n        },\n        dequeue: function () {\n            var payload = queue.shift();\n            if (payload) {\n                this.bytesCount -= payload.bytesCount;\n            }\n            return payload;\n        },\n        size: function () {\n            return queue.length;\n        },\n        isFull: function () {\n            return this.bytesCount >= MAX_QUEUE_BYTES_COUNT;\n        },\n    };\n}\nfunction newBandwidthMonitor() {\n    return {\n        ongoingRequestCount: 0,\n        ongoingByteCount: 0,\n        canHandle: function (payload) {\n            return (this.ongoingRequestCount === 0 ||\n                (this.ongoingByteCount + payload.bytesCount <= MAX_ONGOING_BYTES_COUNT &&\n                    this.ongoingRequestCount < MAX_ONGOING_REQUESTS));\n        },\n        add: function (payload) {\n            this.ongoingRequestCount += 1;\n            this.ongoingByteCount += payload.bytesCount;\n        },\n        remove: function (payload) {\n            this.ongoingRequestCount -= 1;\n            this.ongoingByteCount -= payload.bytesCount;\n        },\n    };\n}\n//# sourceMappingURL=sendWithRetryStrategy.js.map","import { addTelemetryError } from '../domain/telemetry';\nimport { monitor } from '../tools/monitor';\nimport { newRetryState, sendWithRetryStrategy } from './sendWithRetryStrategy';\nexport function createHttpRequest(endpointBuilder, bytesLimit, reportError) {\n    var retryState = newRetryState();\n    var sendStrategyForRetry = function (payload, onResponse) {\n        return fetchKeepAliveStrategy(endpointBuilder, bytesLimit, payload, onResponse);\n    };\n    return {\n        send: function (payload) {\n            sendWithRetryStrategy(payload, retryState, sendStrategyForRetry, endpointBuilder.endpointType, reportError);\n        },\n        /**\n         * Since fetch keepalive behaves like regular fetch on Firefox,\n         * keep using sendBeaconStrategy on exit\n         */\n        sendOnExit: function (payload) {\n            sendBeaconStrategy(endpointBuilder, bytesLimit, payload);\n        },\n    };\n}\nfunction sendBeaconStrategy(endpointBuilder, bytesLimit, _a) {\n    var data = _a.data, bytesCount = _a.bytesCount;\n    var url = endpointBuilder.build();\n    var canUseBeacon = !!navigator.sendBeacon && bytesCount < bytesLimit;\n    if (canUseBeacon) {\n        try {\n            var isQueued = navigator.sendBeacon(url, data);\n            if (isQueued) {\n                return;\n            }\n        }\n        catch (e) {\n            reportBeaconError(e);\n        }\n    }\n    sendXHR(url, data);\n}\nvar hasReportedBeaconError = false;\nfunction reportBeaconError(e) {\n    if (!hasReportedBeaconError) {\n        hasReportedBeaconError = true;\n        addTelemetryError(e);\n    }\n}\nexport function fetchKeepAliveStrategy(endpointBuilder, bytesLimit, _a, onResponse) {\n    var data = _a.data, bytesCount = _a.bytesCount, retry = _a.retry;\n    var url = endpointBuilder.build(retry);\n    var canUseKeepAlive = isKeepAliveSupported() && bytesCount < bytesLimit;\n    if (canUseKeepAlive) {\n        fetch(url, { method: 'POST', body: data, keepalive: true }).then(monitor(function (response) { return onResponse === null || onResponse === void 0 ? void 0 : onResponse({ status: response.status }); }), monitor(function () {\n            // failed to queue the request\n            sendXHR(url, data, onResponse);\n        }));\n    }\n    else {\n        sendXHR(url, data, onResponse);\n    }\n}\nfunction isKeepAliveSupported() {\n    // Request can throw, cf https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#errors\n    try {\n        return window.Request && 'keepalive' in new Request('http://a');\n    }\n    catch (_a) {\n        return false;\n    }\n}\nexport function sendXHR(url, data, onResponse) {\n    var request = new XMLHttpRequest();\n    var onLoadEnd = monitor(function () {\n        // prevent multiple onResponse callbacks\n        // if the xhr instance is reused by a third party\n        request.removeEventListener('loadend', onLoadEnd);\n        onResponse === null || onResponse === void 0 ? void 0 : onResponse({ status: request.status });\n    });\n    request.open('POST', url, true);\n    request.addEventListener('loadend', onLoadEnd);\n    request.send(data);\n}\n//# sourceMappingURL=httpRequest.js.map","import { Batch } from './batch';\nimport { createHttpRequest } from './httpRequest';\nexport function startBatchWithReplica(configuration, endpoint, reportError, pageExitObservable, replicaEndpoint) {\n    var primaryBatch = createBatch(endpoint);\n    var replicaBatch;\n    if (replicaEndpoint) {\n        replicaBatch = createBatch(replicaEndpoint);\n    }\n    function createBatch(endpointBuilder) {\n        return new Batch(createHttpRequest(endpointBuilder, configuration.batchBytesLimit, reportError), configuration.batchMessagesLimit, configuration.batchBytesLimit, configuration.messageBytesLimit, configuration.flushTimeout, pageExitObservable);\n    }\n    return {\n        add: function (message, replicated) {\n            if (replicated === void 0) { replicated = true; }\n            primaryBatch.add(message);\n            if (replicaBatch && replicated) {\n                replicaBatch.add(message);\n            }\n        },\n    };\n}\n//# sourceMappingURL=startBatchWithReplica.js.map","import { relativeNow } from './timeUtils';\nimport { ONE_MINUTE } from './utils';\nvar END_OF_TIMES = Infinity;\nexport var CLEAR_OLD_CONTEXTS_INTERVAL = ONE_MINUTE;\n/**\n * Store and keep track of contexts spans. This whole class assumes that contexts are added in\n * chronological order (i.e. all entries have an increasing start time).\n */\nvar ContextHistory = /** @class */ (function () {\n    function ContextHistory(expireDelay) {\n        var _this = this;\n        this.expireDelay = expireDelay;\n        this.entries = [];\n        this.clearOldContextsInterval = setInterval(function () { return _this.clearOldContexts(); }, CLEAR_OLD_CONTEXTS_INTERVAL);\n    }\n    /**\n     * Add a context to the history associated with a start time. Returns a reference to this newly\n     * added entry that can be removed or closed.\n     */\n    ContextHistory.prototype.add = function (context, startTime) {\n        var _this = this;\n        var entry = {\n            context: context,\n            startTime: startTime,\n            endTime: END_OF_TIMES,\n            remove: function () {\n                var index = _this.entries.indexOf(entry);\n                if (index >= 0) {\n                    _this.entries.splice(index, 1);\n                }\n            },\n            close: function (endTime) {\n                entry.endTime = endTime;\n            },\n        };\n        this.entries.unshift(entry);\n        return entry;\n    };\n    /**\n     * Return the latest context that was active during `startTime`, or the currently active context\n     * if no `startTime` is provided. This method assumes that entries are not overlapping.\n     */\n    ContextHistory.prototype.find = function (startTime) {\n        if (startTime === void 0) { startTime = END_OF_TIMES; }\n        for (var _i = 0, _a = this.entries; _i < _a.length; _i++) {\n            var entry = _a[_i];\n            if (entry.startTime <= startTime) {\n                if (startTime <= entry.endTime) {\n                    return entry.context;\n                }\n                break;\n            }\n        }\n    };\n    /**\n     * Helper function to close the currently active context, if any. This method assumes that entries\n     * are not overlapping.\n     */\n    ContextHistory.prototype.closeActive = function (endTime) {\n        var latestEntry = this.entries[0];\n        if (latestEntry && latestEntry.endTime === END_OF_TIMES) {\n            latestEntry.close(endTime);\n        }\n    };\n    /**\n     * Return all contexts that were active during `startTime`, or all currently active contexts if no\n     * `startTime` is provided.\n     */\n    ContextHistory.prototype.findAll = function (startTime) {\n        if (startTime === void 0) { startTime = END_OF_TIMES; }\n        return this.entries\n            .filter(function (entry) { return entry.startTime <= startTime && startTime <= entry.endTime; })\n            .map(function (entry) { return entry.context; });\n    };\n    /**\n     * Remove all entries from this collection.\n     */\n    ContextHistory.prototype.reset = function () {\n        this.entries = [];\n    };\n    /**\n     * Stop internal garbage collection of past entries.\n     */\n    ContextHistory.prototype.stop = function () {\n        clearInterval(this.clearOldContextsInterval);\n    };\n    ContextHistory.prototype.clearOldContexts = function () {\n        var oldTimeThreshold = relativeNow() - this.expireDelay;\n        while (this.entries.length > 0 && this.entries[this.entries.length - 1].endTime < oldTimeThreshold) {\n            this.entries.pop();\n        }\n    };\n    return ContextHistory;\n}());\nexport { ContextHistory };\n//# sourceMappingURL=contextHistory.js.map","export function isIE() {\n    return Boolean(document.documentMode);\n}\nexport function isChromium() {\n    return !!window.chrome || /HeadlessChrome/.test(window.navigator.userAgent);\n}\n//# sourceMappingURL=browserDetection.js.map","import { ONE_HOUR, ONE_MINUTE } from '../../tools/utils';\nexport var SESSION_TIME_OUT_DELAY = 4 * ONE_HOUR;\nexport var SESSION_EXPIRATION_DELAY = 15 * ONE_MINUTE;\n//# sourceMappingURL=sessionConstants.js.map","import { getCookie, setCookie } from '../../browser/cookie';\nimport { isChromium } from '../../tools/browserDetection';\nimport { monitor } from '../../tools/monitor';\nimport { dateNow } from '../../tools/timeUtils';\nimport * as utils from '../../tools/utils';\nimport { SESSION_EXPIRATION_DELAY } from './sessionConstants';\nvar SESSION_ENTRY_REGEXP = /^([a-z]+)=([a-z0-9-]+)$/;\nvar SESSION_ENTRY_SEPARATOR = '&';\nexport var SESSION_COOKIE_NAME = '_dd_s';\n// arbitrary values\nexport var LOCK_RETRY_DELAY = 10;\nexport var MAX_NUMBER_OF_LOCK_RETRIES = 100;\nvar bufferedOperations = [];\nvar ongoingOperations;\nexport function withCookieLockAccess(operations, numberOfRetries) {\n    var _a;\n    if (numberOfRetries === void 0) { numberOfRetries = 0; }\n    if (!ongoingOperations) {\n        ongoingOperations = operations;\n    }\n    if (operations !== ongoingOperations) {\n        bufferedOperations.push(operations);\n        return;\n    }\n    if (numberOfRetries >= MAX_NUMBER_OF_LOCK_RETRIES) {\n        next();\n        return;\n    }\n    var currentLock;\n    var currentSession = retrieveSession();\n    if (isCookieLockEnabled()) {\n        // if someone has lock, retry later\n        if (currentSession.lock) {\n            retryLater(operations, numberOfRetries);\n            return;\n        }\n        // acquire lock\n        currentLock = utils.generateUUID();\n        currentSession.lock = currentLock;\n        setSession(currentSession, operations.options);\n        // if lock is not acquired, retry later\n        currentSession = retrieveSession();\n        if (currentSession.lock !== currentLock) {\n            retryLater(operations, numberOfRetries);\n            return;\n        }\n    }\n    var processedSession = operations.process(currentSession);\n    if (isCookieLockEnabled()) {\n        // if lock corrupted after process, retry later\n        currentSession = retrieveSession();\n        if (currentSession.lock !== currentLock) {\n            retryLater(operations, numberOfRetries);\n            return;\n        }\n    }\n    if (processedSession) {\n        persistSession(processedSession, operations.options);\n    }\n    if (isCookieLockEnabled()) {\n        // correctly handle lock around expiration would require to handle this case properly at several levels\n        // since we don't have evidence of lock issues around expiration, let's just not do the corruption check for it\n        if (!(processedSession && isExpiredState(processedSession))) {\n            // if lock corrupted after persist, retry later\n            currentSession = retrieveSession();\n            if (currentSession.lock !== currentLock) {\n                retryLater(operations, numberOfRetries);\n                return;\n            }\n            delete currentSession.lock;\n            setSession(currentSession, operations.options);\n            processedSession = currentSession;\n        }\n    }\n    // call after even if session is not persisted in order to perform operations on\n    // up-to-date cookie value, the value could have been modified by another tab\n    (_a = operations.after) === null || _a === void 0 ? void 0 : _a.call(operations, processedSession || currentSession);\n    next();\n}\n/**\n * Cookie lock strategy allows mitigating issues due to concurrent access to cookie.\n * This issue concerns only chromium browsers and enabling this on firefox increase cookie write failures.\n */\nfunction isCookieLockEnabled() {\n    return isChromium();\n}\nfunction retryLater(operations, currentNumberOfRetries) {\n    setTimeout(monitor(function () {\n        withCookieLockAccess(operations, currentNumberOfRetries + 1);\n    }), LOCK_RETRY_DELAY);\n}\nfunction next() {\n    ongoingOperations = undefined;\n    var nextOperations = bufferedOperations.shift();\n    if (nextOperations) {\n        withCookieLockAccess(nextOperations);\n    }\n}\nexport function persistSession(session, options) {\n    if (isExpiredState(session)) {\n        clearSession(options);\n        return;\n    }\n    session.expire = String(dateNow() + SESSION_EXPIRATION_DELAY);\n    setSession(session, options);\n}\nfunction setSession(session, options) {\n    setCookie(SESSION_COOKIE_NAME, toSessionString(session), SESSION_EXPIRATION_DELAY, options);\n}\nexport function toSessionString(session) {\n    return utils\n        .objectEntries(session)\n        .map(function (_a) {\n        var key = _a[0], value = _a[1];\n        return \"\".concat(key, \"=\").concat(value);\n    })\n        .join(SESSION_ENTRY_SEPARATOR);\n}\nexport function retrieveSession() {\n    var sessionString = getCookie(SESSION_COOKIE_NAME);\n    var session = {};\n    if (isValidSessionString(sessionString)) {\n        sessionString.split(SESSION_ENTRY_SEPARATOR).forEach(function (entry) {\n            var matches = SESSION_ENTRY_REGEXP.exec(entry);\n            if (matches !== null) {\n                var key = matches[1], value = matches[2];\n                session[key] = value;\n            }\n        });\n    }\n    return session;\n}\nfunction isValidSessionString(sessionString) {\n    return (sessionString !== undefined &&\n        (sessionString.indexOf(SESSION_ENTRY_SEPARATOR) !== -1 || SESSION_ENTRY_REGEXP.test(sessionString)));\n}\nfunction isExpiredState(session) {\n    return utils.isEmptyObject(session);\n}\nfunction clearSession(options) {\n    setCookie(SESSION_COOKIE_NAME, '', 0, options);\n}\n//# sourceMappingURL=sessionCookieStore.js.map","import { getCookie } from '../../browser/cookie';\nimport { SESSION_COOKIE_NAME, persistSession } from './sessionCookieStore';\nexport var OLD_SESSION_COOKIE_NAME = '_dd';\nexport var OLD_RUM_COOKIE_NAME = '_dd_r';\nexport var OLD_LOGS_COOKIE_NAME = '_dd_l';\n// duplicate values to avoid dependency issues\nexport var RUM_SESSION_KEY = 'rum';\nexport var LOGS_SESSION_KEY = 'logs';\n/**\n * This migration should remain in the codebase as long as older versions are available/live\n * to allow older sdk versions to be upgraded to newer versions without compatibility issues.\n */\nexport function tryOldCookiesMigration(options) {\n    var sessionString = getCookie(SESSION_COOKIE_NAME);\n    var oldSessionId = getCookie(OLD_SESSION_COOKIE_NAME);\n    var oldRumType = getCookie(OLD_RUM_COOKIE_NAME);\n    var oldLogsType = getCookie(OLD_LOGS_COOKIE_NAME);\n    if (!sessionString) {\n        var session = {};\n        if (oldSessionId) {\n            session.id = oldSessionId;\n        }\n        if (oldLogsType && /^[01]$/.test(oldLogsType)) {\n            session[LOGS_SESSION_KEY] = oldLogsType;\n        }\n        if (oldRumType && /^[012]$/.test(oldRumType)) {\n            session[RUM_SESSION_KEY] = oldRumType;\n        }\n        persistSession(session, options);\n    }\n}\n//# sourceMappingURL=oldCookiesMigration.js.map","import { COOKIE_ACCESS_DELAY } from '../../browser/cookie';\nimport { monitor } from '../../tools/monitor';\nimport { Observable } from '../../tools/observable';\nimport { dateNow } from '../../tools/timeUtils';\nimport * as utils from '../../tools/utils';\nimport { SESSION_TIME_OUT_DELAY } from './sessionConstants';\nimport { retrieveSession, withCookieLockAccess } from './sessionCookieStore';\n/**\n * Different session concepts:\n * - tracked, the session has an id and is updated along the user navigation\n * - not tracked, the session does not have an id but it is updated along the user navigation\n * - inactive, no session in store or session expired, waiting for a renew session\n */\nexport function startSessionStore(options, productKey, computeSessionState) {\n    var renewObservable = new Observable();\n    var expireObservable = new Observable();\n    var watchSessionTimeoutId = setInterval(monitor(watchSession), COOKIE_ACCESS_DELAY);\n    var sessionCache = retrieveActiveSession();\n    function expandOrRenewSession() {\n        var isTracked;\n        withCookieLockAccess({\n            options: options,\n            process: function (cookieSession) {\n                var synchronizedSession = synchronizeSession(cookieSession);\n                isTracked = expandOrRenewCookie(synchronizedSession);\n                return synchronizedSession;\n            },\n            after: function (cookieSession) {\n                if (isTracked && !hasSessionInCache()) {\n                    renewSession(cookieSession);\n                }\n                sessionCache = cookieSession;\n            },\n        });\n    }\n    function expandSession() {\n        withCookieLockAccess({\n            options: options,\n            process: function (cookieSession) { return (hasSessionInCache() ? synchronizeSession(cookieSession) : undefined); },\n        });\n    }\n    /**\n     * allows two behaviors:\n     * - if the session is active, synchronize the session cache without updating the session cookie\n     * - if the session is not active, clear the session cookie and expire the session cache\n     */\n    function watchSession() {\n        withCookieLockAccess({\n            options: options,\n            process: function (cookieSession) { return (!isActiveSession(cookieSession) ? {} : undefined); },\n            after: synchronizeSession,\n        });\n    }\n    function synchronizeSession(cookieSession) {\n        if (!isActiveSession(cookieSession)) {\n            cookieSession = {};\n        }\n        if (hasSessionInCache()) {\n            if (isSessionInCacheOutdated(cookieSession)) {\n                expireSession();\n            }\n            else {\n                sessionCache = cookieSession;\n            }\n        }\n        return cookieSession;\n    }\n    function expandOrRenewCookie(cookieSession) {\n        var _a = computeSessionState(cookieSession[productKey]), trackingType = _a.trackingType, isTracked = _a.isTracked;\n        cookieSession[productKey] = trackingType;\n        if (isTracked && !cookieSession.id) {\n            cookieSession.id = utils.generateUUID();\n            cookieSession.created = String(dateNow());\n        }\n        return isTracked;\n    }\n    function hasSessionInCache() {\n        return sessionCache[productKey] !== undefined;\n    }\n    function isSessionInCacheOutdated(cookieSession) {\n        return sessionCache.id !== cookieSession.id || sessionCache[productKey] !== cookieSession[productKey];\n    }\n    function expireSession() {\n        sessionCache = {};\n        expireObservable.notify();\n    }\n    function renewSession(cookieSession) {\n        sessionCache = cookieSession;\n        renewObservable.notify();\n    }\n    function retrieveActiveSession() {\n        var session = retrieveSession();\n        if (isActiveSession(session)) {\n            return session;\n        }\n        return {};\n    }\n    function isActiveSession(session) {\n        // created and expire can be undefined for versions which was not storing them\n        // these checks could be removed when older versions will not be available/live anymore\n        return ((session.created === undefined || dateNow() - Number(session.created) < SESSION_TIME_OUT_DELAY) &&\n            (session.expire === undefined || dateNow() < Number(session.expire)));\n    }\n    return {\n        expandOrRenewSession: utils.throttle(monitor(expandOrRenewSession), COOKIE_ACCESS_DELAY).throttled,\n        expandSession: expandSession,\n        getSession: function () { return sessionCache; },\n        renewObservable: renewObservable,\n        expireObservable: expireObservable,\n        stop: function () {\n            clearInterval(watchSessionTimeoutId);\n        },\n    };\n}\n//# sourceMappingURL=sessionStore.js.map","import * as utils from '../../tools/utils';\nimport { ContextHistory } from '../../tools/contextHistory';\nimport { relativeNow, clocksOrigin } from '../../tools/timeUtils';\nimport { monitor } from '../../tools/monitor';\nimport { tryOldCookiesMigration } from './oldCookiesMigration';\nimport { startSessionStore } from './sessionStore';\nimport { SESSION_TIME_OUT_DELAY } from './sessionConstants';\nexport var VISIBILITY_CHECK_DELAY = utils.ONE_MINUTE;\nvar SESSION_CONTEXT_TIMEOUT_DELAY = SESSION_TIME_OUT_DELAY;\nvar stopCallbacks = [];\nexport function startSessionManager(options, productKey, computeSessionState) {\n    tryOldCookiesMigration(options);\n    var sessionStore = startSessionStore(options, productKey, computeSessionState);\n    stopCallbacks.push(function () { return sessionStore.stop(); });\n    var sessionContextHistory = new ContextHistory(SESSION_CONTEXT_TIMEOUT_DELAY);\n    stopCallbacks.push(function () { return sessionContextHistory.stop(); });\n    sessionStore.renewObservable.subscribe(function () {\n        sessionContextHistory.add(buildSessionContext(), relativeNow());\n    });\n    sessionStore.expireObservable.subscribe(function () {\n        sessionContextHistory.closeActive(relativeNow());\n    });\n    sessionStore.expandOrRenewSession();\n    sessionContextHistory.add(buildSessionContext(), clocksOrigin().relative);\n    trackActivity(function () { return sessionStore.expandOrRenewSession(); });\n    trackVisibility(function () { return sessionStore.expandSession(); });\n    function buildSessionContext() {\n        return {\n            id: sessionStore.getSession().id,\n            trackingType: sessionStore.getSession()[productKey],\n        };\n    }\n    return {\n        findActiveSession: function (startTime) { return sessionContextHistory.find(startTime); },\n        renewObservable: sessionStore.renewObservable,\n        expireObservable: sessionStore.expireObservable,\n    };\n}\nexport function stopSessionManager() {\n    stopCallbacks.forEach(function (e) { return e(); });\n    stopCallbacks = [];\n}\nfunction trackActivity(expandOrRenewSession) {\n    var stop = utils.addEventListeners(window, [\"click\" /* CLICK */, \"touchstart\" /* TOUCH_START */, \"keydown\" /* KEY_DOWN */, \"scroll\" /* SCROLL */], expandOrRenewSession, { capture: true, passive: true }).stop;\n    stopCallbacks.push(stop);\n}\nfunction trackVisibility(expandSession) {\n    var expandSessionWhenVisible = monitor(function () {\n        if (document.visibilityState === 'visible') {\n            expandSession();\n        }\n    });\n    var stop = utils.addEventListener(document, \"visibilitychange\" /* VISIBILITY_CHANGE */, expandSessionWhenVisible).stop;\n    stopCallbacks.push(stop);\n    var visibilityCheckInterval = setInterval(expandSessionWhenVisible, VISIBILITY_CHECK_DELAY);\n    stopCallbacks.push(function () {\n        clearInterval(visibilityCheckInterval);\n    });\n}\n//# sourceMappingURL=sessionManager.js.map","import { performDraw, startSessionManager } from '@datadog/browser-core';\nexport var LOGS_SESSION_KEY = 'logs';\nexport function startLogsSessionManager(configuration) {\n    var sessionManager = startSessionManager(configuration.cookieOptions, LOGS_SESSION_KEY, function (rawTrackingType) {\n        return computeSessionState(configuration, rawTrackingType);\n    });\n    return {\n        findTrackedSession: function (startTime) {\n            var session = sessionManager.findActiveSession(startTime);\n            return session && session.trackingType === \"1\" /* TRACKED */\n                ? {\n                    id: session.id,\n                }\n                : undefined;\n        },\n    };\n}\nexport function startLogsSessionManagerStub(configuration) {\n    var isTracked = computeTrackingType(configuration) === \"1\" /* TRACKED */;\n    var session = isTracked ? {} : undefined;\n    return {\n        findTrackedSession: function () { return session; },\n    };\n}\nfunction computeTrackingType(configuration) {\n    if (!performDraw(configuration.sampleRate)) {\n        return \"0\" /* NOT_TRACKED */;\n    }\n    return \"1\" /* TRACKED */;\n}\nfunction computeSessionState(configuration, rawSessionType) {\n    var trackingType = hasValidLoggerSession(rawSessionType) ? rawSessionType : computeTrackingType(configuration);\n    return {\n        trackingType: trackingType,\n        isTracked: trackingType === \"1\" /* TRACKED */,\n    };\n}\nfunction hasValidLoggerSession(trackingType) {\n    return trackingType === \"0\" /* NOT_TRACKED */ || trackingType === \"1\" /* TRACKED */;\n}\n//# sourceMappingURL=logsSessionManager.js.map","var _a;\nimport { includes, display, combine, ErrorSource, timeStampNow } from '@datadog/browser-core';\nimport { StatusType, HandlerType } from '../../logger';\nexport var STATUS_PRIORITIES = (_a = {},\n    _a[StatusType.debug] = 0,\n    _a[StatusType.info] = 1,\n    _a[StatusType.warn] = 2,\n    _a[StatusType.error] = 3,\n    _a);\nexport function startLoggerCollection(lifeCycle) {\n    function handleLog(logsMessage, logger, savedCommonContext, savedDate) {\n        var messageContext = logsMessage.context;\n        if (isAuthorized(logsMessage.status, HandlerType.console, logger)) {\n            display(logsMessage.status, logsMessage.message, combine(logger.getContext(), messageContext));\n        }\n        lifeCycle.notify(0 /* RAW_LOG_COLLECTED */, {\n            rawLogsEvent: {\n                date: savedDate || timeStampNow(),\n                message: logsMessage.message,\n                status: logsMessage.status,\n                origin: ErrorSource.LOGGER,\n            },\n            messageContext: messageContext,\n            savedCommonContext: savedCommonContext,\n            logger: logger,\n        });\n    }\n    return {\n        handleLog: handleLog,\n    };\n}\nexport function isAuthorized(status, handlerType, logger) {\n    var loggerHandler = logger.getHandler();\n    var sanitizedHandlerType = Array.isArray(loggerHandler) ? loggerHandler : [loggerHandler];\n    return (STATUS_PRIORITIES[status] >= STATUS_PRIORITIES[logger.getLevel()] && includes(sanitizedHandlerType, handlerType));\n}\n//# sourceMappingURL=loggerCollection.js.map","import { ErrorSource } from './error';\nimport { clocksNow } from './timeUtils';\nimport { ONE_MINUTE } from './utils';\nexport function createEventRateLimiter(eventType, limit, onLimitReached) {\n    var eventCount = 0;\n    var allowNextEvent = false;\n    return {\n        isLimitReached: function () {\n            if (eventCount === 0) {\n                setTimeout(function () {\n                    eventCount = 0;\n                }, ONE_MINUTE);\n            }\n            eventCount += 1;\n            if (eventCount <= limit || allowNextEvent) {\n                allowNextEvent = false;\n                return false;\n            }\n            if (eventCount === limit + 1) {\n                allowNextEvent = true;\n                try {\n                    onLimitReached({\n                        message: \"Reached max number of \".concat(eventType, \"s by minute: \").concat(limit),\n                        source: ErrorSource.AGENT,\n                        startClocks: clocksNow(),\n                    });\n                }\n                finally {\n                    allowNextEvent = false;\n                }\n            }\n            return true;\n        },\n    };\n}\n//# sourceMappingURL=createEventRateLimiter.js.map","import { getSyntheticsResultId, getSyntheticsTestId, addTelemetryDebug, willSyntheticsInjectRum, ErrorSource, combine, createEventRateLimiter, getRelativeTime, isEmptyObject, } from '@datadog/browser-core';\nimport { STATUSES, HandlerType } from './logger';\nimport { isAuthorized } from './logsCollection/logger/loggerCollection';\nexport function startLogsAssembly(sessionManager, configuration, lifeCycle, getCommonContext, mainLogger, // Todo: [RUMF-1230] Remove this parameter in the next major release\nreportError) {\n    var statusWithCustom = STATUSES.concat(['custom']);\n    var logRateLimiters = {};\n    statusWithCustom.forEach(function (status) {\n        logRateLimiters[status] = createEventRateLimiter(status, configuration.eventRateLimiterThreshold, reportError);\n    });\n    lifeCycle.subscribe(0 /* RAW_LOG_COLLECTED */, function (_a) {\n        var _b, _c, _d;\n        var rawLogsEvent = _a.rawLogsEvent, _e = _a.messageContext, messageContext = _e === void 0 ? undefined : _e, _f = _a.savedCommonContext, savedCommonContext = _f === void 0 ? undefined : _f, _g = _a.logger, logger = _g === void 0 ? mainLogger : _g;\n        var startTime = getRelativeTime(rawLogsEvent.date);\n        var session = sessionManager.findTrackedSession(startTime);\n        if (!session) {\n            return;\n        }\n        var commonContext = savedCommonContext || getCommonContext();\n        var log = combine({\n            service: configuration.service,\n            session_id: session.id,\n            // Insert user first to allow overrides from global context\n            usr: !isEmptyObject(commonContext.user) ? commonContext.user : undefined,\n            view: commonContext.view,\n        }, commonContext.context, getRUMInternalContext(startTime), rawLogsEvent, logger.getContext(), messageContext);\n        if (\n        // Todo: [RUMF-1230] Move this check to the logger collection in the next major release\n        !isAuthorized(rawLogsEvent.status, HandlerType.http, logger) ||\n            ((_b = configuration.beforeSend) === null || _b === void 0 ? void 0 : _b.call(configuration, log)) === false ||\n            (((_c = log.error) === null || _c === void 0 ? void 0 : _c.origin) !== ErrorSource.AGENT &&\n                ((_d = logRateLimiters[log.status]) !== null && _d !== void 0 ? _d : logRateLimiters['custom']).isLimitReached())) {\n            return;\n        }\n        lifeCycle.notify(1 /* LOG_COLLECTED */, log);\n    });\n}\nvar logsSentBeforeRumInjectionTelemetryAdded = false;\nexport function getRUMInternalContext(startTime) {\n    var browserWindow = window;\n    if (willSyntheticsInjectRum()) {\n        var context = getInternalContextFromRumGlobal(browserWindow.DD_RUM_SYNTHETICS);\n        if (!context && !logsSentBeforeRumInjectionTelemetryAdded) {\n            logsSentBeforeRumInjectionTelemetryAdded = true;\n            addTelemetryDebug('Logs sent before RUM is injected by the synthetics worker', {\n                testId: getSyntheticsTestId(),\n                resultId: getSyntheticsResultId(),\n            });\n        }\n        return context;\n    }\n    return getInternalContextFromRumGlobal(browserWindow.DD_RUM);\n    function getInternalContextFromRumGlobal(rumGlobal) {\n        if (rumGlobal && rumGlobal.getInternalContext) {\n            return rumGlobal.getInternalContext(startTime);\n        }\n    }\n}\nexport function resetRUMInternalContext() {\n    logsSentBeforeRumInjectionTelemetryAdded = false;\n}\n//# sourceMappingURL=assembly.js.map","import { computeStackTrace } from '../tracekit';\nimport { createHandlingStack, formatErrorMessage, toStackTraceString } from '../../tools/error';\nimport { mergeObservables, Observable } from '../../tools/observable';\nimport { find, jsonStringify } from '../../tools/utils';\nimport { ConsoleApiName } from '../../tools/display';\nimport { callMonitored } from '../../tools/monitor';\nvar consoleObservablesByApi = {};\nexport function initConsoleObservable(apis) {\n    var consoleObservables = apis.map(function (api) {\n        if (!consoleObservablesByApi[api]) {\n            consoleObservablesByApi[api] = createConsoleObservable(api);\n        }\n        return consoleObservablesByApi[api];\n    });\n    return mergeObservables.apply(void 0, consoleObservables);\n}\n/* eslint-disable no-console */\nfunction createConsoleObservable(api) {\n    var observable = new Observable(function () {\n        var originalConsoleApi = console[api];\n        console[api] = function () {\n            var params = [];\n            for (var _i = 0; _i < arguments.length; _i++) {\n                params[_i] = arguments[_i];\n            }\n            originalConsoleApi.apply(console, params);\n            var handlingStack = createHandlingStack();\n            callMonitored(function () {\n                observable.notify(buildConsoleLog(params, api, handlingStack));\n            });\n        };\n        return function () {\n            console[api] = originalConsoleApi;\n        };\n    });\n    return observable;\n}\nfunction buildConsoleLog(params, api, handlingStack) {\n    // Todo: remove console error prefix in the next major version\n    var message = params.map(function (param) { return formatConsoleParameters(param); }).join(' ');\n    var stack;\n    if (api === ConsoleApiName.error) {\n        var firstErrorParam = find(params, function (param) { return param instanceof Error; });\n        stack = firstErrorParam ? toStackTraceString(computeStackTrace(firstErrorParam)) : undefined;\n        message = \"console error: \".concat(message);\n    }\n    return {\n        api: api,\n        message: message,\n        stack: stack,\n        handlingStack: handlingStack,\n    };\n}\nfunction formatConsoleParameters(param) {\n    if (typeof param === 'string') {\n        return param;\n    }\n    if (param instanceof Error) {\n        return formatErrorMessage(computeStackTrace(param));\n    }\n    return jsonStringify(param, undefined, 2);\n}\n//# sourceMappingURL=consoleObservable.js.map","var _a;\nimport { timeStampNow, ConsoleApiName, ErrorSource, initConsoleObservable } from '@datadog/browser-core';\nimport { StatusType } from '../../logger';\nvar LogStatusForApi = (_a = {},\n    _a[ConsoleApiName.log] = StatusType.info,\n    _a[ConsoleApiName.debug] = StatusType.debug,\n    _a[ConsoleApiName.info] = StatusType.info,\n    _a[ConsoleApiName.warn] = StatusType.warn,\n    _a[ConsoleApiName.error] = StatusType.error,\n    _a);\nexport function startConsoleCollection(configuration, lifeCycle) {\n    var consoleSubscription = initConsoleObservable(configuration.forwardConsoleLogs).subscribe(function (log) {\n        lifeCycle.notify(0 /* RAW_LOG_COLLECTED */, {\n            rawLogsEvent: {\n                date: timeStampNow(),\n                message: log.message,\n                origin: ErrorSource.CONSOLE,\n                error: log.api === ConsoleApiName.error\n                    ? {\n                        origin: ErrorSource.CONSOLE,\n                        stack: log.stack,\n                    }\n                    : undefined,\n                status: LogStatusForApi[log.api],\n            },\n        });\n    });\n    return {\n        stop: function () {\n            consoleSubscription.unsubscribe();\n        },\n    };\n}\n//# sourceMappingURL=consoleCollection.js.map","var _a;\nimport { timeStampNow, ErrorSource, RawReportType, getFileFromStackTraceString, initReportObservable, } from '@datadog/browser-core';\nimport { StatusType } from '../../logger';\nvar LogStatusForReport = (_a = {},\n    _a[RawReportType.cspViolation] = StatusType.error,\n    _a[RawReportType.intervention] = StatusType.error,\n    _a[RawReportType.deprecation] = StatusType.warn,\n    _a);\nexport function startReportCollection(configuration, lifeCycle) {\n    var reportSubscription = initReportObservable(configuration.forwardReports).subscribe(function (report) {\n        var message = report.message;\n        var status = LogStatusForReport[report.type];\n        var error;\n        if (status === StatusType.error) {\n            error = {\n                kind: report.subtype,\n                origin: ErrorSource.REPORT,\n                stack: report.stack,\n            };\n        }\n        else if (report.stack) {\n            message += \" Found in \".concat(getFileFromStackTraceString(report.stack));\n        }\n        lifeCycle.notify(0 /* RAW_LOG_COLLECTED */, {\n            rawLogsEvent: {\n                date: timeStampNow(),\n                message: message,\n                origin: ErrorSource.REPORT,\n                error: error,\n                status: status,\n            },\n        });\n    });\n    return {\n        stop: function () {\n            reportSubscription.unsubscribe();\n        },\n    };\n}\n//# sourceMappingURL=reportCollection.js.map","import { instrumentMethodAndCallOriginal } from '../tools/instrumentMethod';\nimport { monitor } from '../tools/monitor';\nimport { Observable } from '../tools/observable';\nimport { elapsed, relativeNow, clocksNow, timeStampNow } from '../tools/timeUtils';\nimport { normalizeUrl } from '../tools/urlPolyfill';\nimport { shallowClone } from '../tools/utils';\nvar xhrObservable;\nvar xhrContexts = new WeakMap();\nexport function initXhrObservable() {\n    if (!xhrObservable) {\n        xhrObservable = createXhrObservable();\n    }\n    return xhrObservable;\n}\nfunction createXhrObservable() {\n    var observable = new Observable(function () {\n        var stopInstrumentingStart = instrumentMethodAndCallOriginal(XMLHttpRequest.prototype, 'open', {\n            before: openXhr,\n        }).stop;\n        var stopInstrumentingSend = instrumentMethodAndCallOriginal(XMLHttpRequest.prototype, 'send', {\n            before: function () {\n                sendXhr.call(this, observable);\n            },\n        }).stop;\n        var stopInstrumentingAbort = instrumentMethodAndCallOriginal(XMLHttpRequest.prototype, 'abort', {\n            before: abortXhr,\n        }).stop;\n        return function () {\n            stopInstrumentingStart();\n            stopInstrumentingSend();\n            stopInstrumentingAbort();\n        };\n    });\n    return observable;\n}\nfunction openXhr(method, url) {\n    xhrContexts.set(this, {\n        state: 'open',\n        method: method,\n        url: normalizeUrl(String(url)),\n    });\n}\nfunction sendXhr(observable) {\n    var _this = this;\n    var context = xhrContexts.get(this);\n    if (!context) {\n        return;\n    }\n    var startContext = context;\n    startContext.state = 'start';\n    startContext.startTime = relativeNow();\n    startContext.startClocks = clocksNow();\n    startContext.isAborted = false;\n    startContext.xhr = this;\n    var hasBeenReported = false;\n    var stopInstrumentingOnReadyStateChange = instrumentMethodAndCallOriginal(this, 'onreadystatechange', {\n        before: function () {\n            if (this.readyState === XMLHttpRequest.DONE) {\n                // Try to report the XHR as soon as possible, because the XHR may be mutated by the\n                // application during a future event. For example, Angular is calling .abort() on\n                // completed requests during a onreadystatechange event, so the status becomes '0'\n                // before the request is collected.\n                onEnd();\n            }\n        },\n    }).stop;\n    var onEnd = monitor(function () {\n        _this.removeEventListener('loadend', onEnd);\n        stopInstrumentingOnReadyStateChange();\n        if (hasBeenReported) {\n            return;\n        }\n        hasBeenReported = true;\n        var completeContext = context;\n        completeContext.state = 'complete';\n        completeContext.duration = elapsed(startContext.startClocks.timeStamp, timeStampNow());\n        completeContext.status = _this.status;\n        observable.notify(shallowClone(completeContext));\n    });\n    this.addEventListener('loadend', onEnd);\n    observable.notify(startContext);\n}\nfunction abortXhr() {\n    var context = xhrContexts.get(this);\n    if (context) {\n        context.isAborted = true;\n    }\n}\n//# sourceMappingURL=xhrObservable.js.map","import { callMonitored, monitor } from './monitor';\nimport { noop } from './utils';\nexport function instrumentMethod(object, method, instrumentationFactory) {\n    var original = object[method];\n    var instrumentation = instrumentationFactory(original);\n    var instrumentationWrapper = function () {\n        if (typeof instrumentation !== 'function') {\n            return undefined;\n        }\n        // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n        return instrumentation.apply(this, arguments);\n    };\n    object[method] = instrumentationWrapper;\n    return {\n        stop: function () {\n            if (object[method] === instrumentationWrapper) {\n                object[method] = original;\n            }\n            else {\n                instrumentation = original;\n            }\n        },\n    };\n}\nexport function instrumentMethodAndCallOriginal(object, method, _a) {\n    var before = _a.before, after = _a.after;\n    return instrumentMethod(object, method, function (original) {\n        return function () {\n            var args = arguments;\n            var result;\n            if (before) {\n                callMonitored(before, this, args);\n            }\n            if (typeof original === 'function') {\n                // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n                result = original.apply(this, args);\n            }\n            if (after) {\n                callMonitored(after, this, args);\n            }\n            // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n            return result;\n        };\n    });\n}\nexport function instrumentSetter(object, property, after) {\n    var originalDescriptor = Object.getOwnPropertyDescriptor(object, property);\n    if (!originalDescriptor || !originalDescriptor.set || !originalDescriptor.configurable) {\n        return { stop: noop };\n    }\n    var instrumentation = function (thisObject, value) {\n        // put hooked setter into event loop to avoid of set latency\n        setTimeout(monitor(function () {\n            after(thisObject, value);\n        }), 0);\n    };\n    var instrumentationWrapper = function (value) {\n        originalDescriptor.set.call(this, value);\n        instrumentation(this, value);\n    };\n    Object.defineProperty(object, property, {\n        set: instrumentationWrapper,\n    });\n    return {\n        stop: function () {\n            var _a;\n            if (((_a = Object.getOwnPropertyDescriptor(object, property)) === null || _a === void 0 ? void 0 : _a.set) === instrumentationWrapper) {\n                Object.defineProperty(object, property, originalDescriptor);\n            }\n            else {\n                instrumentation = noop;\n            }\n        },\n    };\n}\n//# sourceMappingURL=instrumentMethod.js.map","import { instrumentMethod } from '../tools/instrumentMethod';\nimport { callMonitored, monitor } from '../tools/monitor';\nimport { Observable } from '../tools/observable';\nimport { elapsed, clocksNow, timeStampNow } from '../tools/timeUtils';\nimport { normalizeUrl } from '../tools/urlPolyfill';\nvar fetchObservable;\nexport function initFetchObservable() {\n    if (!fetchObservable) {\n        fetchObservable = createFetchObservable();\n    }\n    return fetchObservable;\n}\nfunction createFetchObservable() {\n    var observable = new Observable(function () {\n        if (!window.fetch) {\n            return;\n        }\n        var stop = instrumentMethod(window, 'fetch', function (originalFetch) {\n            return function (input, init) {\n                var responsePromise;\n                var context = callMonitored(beforeSend, null, [observable, input, init]);\n                if (context) {\n                    responsePromise = originalFetch.call(this, context.input, context.init);\n                    callMonitored(afterSend, null, [observable, responsePromise, context]);\n                }\n                else {\n                    responsePromise = originalFetch.call(this, input, init);\n                }\n                return responsePromise;\n            };\n        }).stop;\n        return stop;\n    });\n    return observable;\n}\nfunction beforeSend(observable, input, init) {\n    var method = (init && init.method) || (typeof input === 'object' && input.method) || 'GET';\n    var url = normalizeUrl((typeof input === 'object' && input.url) || input);\n    var startClocks = clocksNow();\n    var context = {\n        state: 'start',\n        init: init,\n        input: input,\n        method: method,\n        startClocks: startClocks,\n        url: url,\n    };\n    observable.notify(context);\n    return context;\n}\nfunction afterSend(observable, responsePromise, startContext) {\n    var reportFetch = function (response) {\n        var context = startContext;\n        context.state = 'complete';\n        context.duration = elapsed(context.startClocks.timeStamp, timeStampNow());\n        if ('stack' in response || response instanceof Error) {\n            context.status = 0;\n            context.isAborted = response instanceof DOMException && response.code === DOMException.ABORT_ERR;\n            context.error = response;\n            observable.notify(context);\n        }\n        else if ('status' in response) {\n            context.response = response;\n            context.responseType = response.type;\n            context.status = response.status;\n            context.isAborted = false;\n            observable.notify(context);\n        }\n    };\n    responsePromise.then(monitor(reportFetch), monitor(reportFetch));\n}\n//# sourceMappingURL=fetchObservable.js.map","import { ErrorSource, initXhrObservable, initFetchObservable, computeStackTrace, toStackTraceString, monitor, noop, } from '@datadog/browser-core';\nimport { StatusType } from '../../logger';\nexport function startNetworkErrorCollection(configuration, lifeCycle) {\n    if (!configuration.forwardErrorsToLogs) {\n        return { stop: noop };\n    }\n    var xhrSubscription = initXhrObservable().subscribe(function (context) {\n        if (context.state === 'complete') {\n            handleCompleteRequest(\"xhr\" /* XHR */, context);\n        }\n    });\n    var fetchSubscription = initFetchObservable().subscribe(function (context) {\n        if (context.state === 'complete') {\n            handleCompleteRequest(\"fetch\" /* FETCH */, context);\n        }\n    });\n    function handleCompleteRequest(type, request) {\n        if (!configuration.isIntakeUrl(request.url) && (isRejected(request) || isServerError(request))) {\n            if ('xhr' in request) {\n                computeXhrResponseData(request.xhr, configuration, onResponseDataAvailable);\n            }\n            else if (request.response) {\n                computeFetchResponseText(request.response, configuration, onResponseDataAvailable);\n            }\n            else if (request.error) {\n                computeFetchErrorText(request.error, configuration, onResponseDataAvailable);\n            }\n        }\n        function onResponseDataAvailable(responseData) {\n            lifeCycle.notify(0 /* RAW_LOG_COLLECTED */, {\n                rawLogsEvent: {\n                    message: \"\".concat(format(type), \" error \").concat(request.method, \" \").concat(request.url),\n                    date: request.startClocks.timeStamp,\n                    error: {\n                        origin: ErrorSource.NETWORK,\n                        stack: responseData || 'Failed to load',\n                    },\n                    http: {\n                        method: request.method,\n                        status_code: request.status,\n                        url: request.url,\n                    },\n                    status: StatusType.error,\n                    origin: ErrorSource.NETWORK,\n                },\n            });\n        }\n    }\n    return {\n        stop: function () {\n            xhrSubscription.unsubscribe();\n            fetchSubscription.unsubscribe();\n        },\n    };\n}\n// TODO: ideally, computeXhrResponseData should always call the callback with a string instead of\n// `unknown`. But to keep backward compatibility, in the case of XHR with a `responseType` different\n// than \"text\", the response data should be whatever `xhr.response` is. This is a bit confusing as\n// Logs event 'stack' is expected to be a string. This should be changed in a future major version\n// as it could be a breaking change.\nexport function computeXhrResponseData(xhr, configuration, callback) {\n    if (typeof xhr.response === 'string') {\n        callback(truncateResponseText(xhr.response, configuration));\n    }\n    else {\n        callback(xhr.response);\n    }\n}\nexport function computeFetchErrorText(error, configuration, callback) {\n    callback(truncateResponseText(toStackTraceString(computeStackTrace(error)), configuration));\n}\nexport function computeFetchResponseText(response, configuration, callback) {\n    if (!window.TextDecoder) {\n        // If the browser doesn't support TextDecoder, let's read the whole response then truncate it.\n        //\n        // This should only be the case on early versions of Edge (before they migrated to Chromium).\n        // Even if it could be possible to implement a workaround for the missing TextDecoder API (using\n        // a Blob and FileReader), we found another issue preventing us from reading only the first\n        // bytes from the response: contrary to other browsers, when reading from the cloned response,\n        // if the original response gets canceled, the cloned response is also canceled and we can't\n        // know about it.  In the following illustration, the promise returned by `reader.read()` may\n        // never be fulfilled:\n        //\n        // fetch('/').then((response) => {\n        //   const reader = response.clone().body.getReader()\n        //   readMore()\n        //   function readMore() {\n        //     reader.read().then(\n        //       (result) => {\n        //         if (result.done) {\n        //           console.log('done')\n        //         } else {\n        //           readMore()\n        //         }\n        //       },\n        //       () => console.log('error')\n        //     )\n        //   }\n        //   response.body.getReader().cancel()\n        // })\n        response\n            .clone()\n            .text()\n            .then(monitor(function (text) { return callback(truncateResponseText(text, configuration)); }), monitor(function (error) { return callback(\"Unable to retrieve response: \".concat(error)); }));\n    }\n    else if (!response.body) {\n        callback();\n    }\n    else {\n        truncateResponseStream(response.clone().body, configuration.requestErrorResponseLengthLimit, function (error, responseText) {\n            if (error) {\n                callback(\"Unable to retrieve response: \".concat(error));\n            }\n            else {\n                callback(responseText);\n            }\n        });\n    }\n}\nfunction isRejected(request) {\n    return request.status === 0 && request.responseType !== 'opaque';\n}\nfunction isServerError(request) {\n    return request.status >= 500;\n}\nfunction truncateResponseText(responseText, configuration) {\n    if (responseText.length > configuration.requestErrorResponseLengthLimit) {\n        return \"\".concat(responseText.substring(0, configuration.requestErrorResponseLengthLimit), \"...\");\n    }\n    return responseText;\n}\nfunction format(type) {\n    if (\"xhr\" /* XHR */ === type) {\n        return 'XHR';\n    }\n    return 'Fetch';\n}\nfunction truncateResponseStream(stream, limit, callback) {\n    readLimitedAmountOfBytes(stream, limit, function (error, bytes, limitExceeded) {\n        if (error) {\n            callback(error);\n        }\n        else {\n            var responseText = new TextDecoder().decode(bytes);\n            if (limitExceeded) {\n                responseText += '...';\n            }\n            callback(undefined, responseText);\n        }\n    });\n}\n/**\n * Read bytes from a ReadableStream until at least `limit` bytes have been read (or until the end of\n * the stream). The callback is invoked with the at most `limit` bytes, and indicates that the limit\n * has been exceeded if more bytes were available.\n */\nfunction readLimitedAmountOfBytes(stream, limit, callback) {\n    var reader = stream.getReader();\n    var chunks = [];\n    var readBytesCount = 0;\n    readMore();\n    function readMore() {\n        reader.read().then(monitor(function (result) {\n            if (result.done) {\n                onDone();\n                return;\n            }\n            chunks.push(result.value);\n            readBytesCount += result.value.length;\n            if (readBytesCount > limit) {\n                onDone();\n            }\n            else {\n                readMore();\n            }\n        }), monitor(function (error) { return callback(error); }));\n    }\n    function onDone() {\n        reader.cancel().catch(\n        // we don't care if cancel fails, but we still need to catch the error to avoid reporting it\n        // as an unhandled rejection\n        noop);\n        var completeBuffer;\n        if (chunks.length === 1) {\n            // optim: if the response is small enough to fit in a single buffer (provided by the browser), just\n            // use it directly.\n            completeBuffer = chunks[0];\n        }\n        else {\n            // else, we need to copy buffers into a larger buffer to concatenate them.\n            completeBuffer = new Uint8Array(readBytesCount);\n            var offset_1 = 0;\n            chunks.forEach(function (chunk) {\n                completeBuffer.set(chunk, offset_1);\n                offset_1 += chunk.length;\n            });\n        }\n        callback(undefined, completeBuffer.slice(0, limit), completeBuffer.length > limit);\n    }\n}\n//# sourceMappingURL=networkErrorCollection.js.map","import { instrumentMethodAndCallOriginal } from '../../tools/instrumentMethod';\nimport { computeStackTrace } from './computeStackTrace';\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types\nvar ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;\n/**\n * Cross-browser collection of unhandled errors\n *\n * Supports:\n * - Firefox: full stack trace with line numbers, plus column number\n * on top frame; column number is not guaranteed\n * - Opera: full stack trace with line and column numbers\n * - Chrome: full stack trace with line and column numbers\n * - Safari: line and column number for the top frame only; some frames\n * may be missing, and column number is not guaranteed\n * - IE: line and column number for the top frame only; some frames\n * may be missing, and column number is not guaranteed\n *\n * In theory, TraceKit should work on all of the following versions:\n * - IE5.5+ (only 8.0 tested)\n * - Firefox 0.9+ (only 3.5+ tested)\n * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require\n * Exceptions Have Stacktrace to be enabled in opera:config)\n * - Safari 3+ (only 4+ tested)\n * - Chrome 1+ (only 5+ tested)\n * - Konqueror 3.5+ (untested)\n *\n * Tries to catch all unhandled errors and report them to the\n * callback.\n *\n * Callbacks receive a StackTrace object as described in the\n * computeStackTrace docs.\n *\n * @memberof TraceKit\n * @namespace\n */\nexport function startUnhandledErrorCollection(callback) {\n    var stopInstrumentingOnError = instrumentOnError(callback).stop;\n    var stopInstrumentingOnUnhandledRejection = instrumentUnhandledRejection(callback).stop;\n    return {\n        stop: function () {\n            stopInstrumentingOnError();\n            stopInstrumentingOnUnhandledRejection();\n        },\n    };\n}\n/**\n * Install a global onerror handler\n */\nfunction instrumentOnError(callback) {\n    return instrumentMethodAndCallOriginal(window, 'onerror', {\n        before: function (message, url, lineNo, columnNo, errorObj) {\n            var stack;\n            if (errorObj) {\n                stack = computeStackTrace(errorObj);\n                callback(stack, errorObj);\n            }\n            else {\n                var location_1 = {\n                    url: url,\n                    column: columnNo,\n                    line: lineNo,\n                };\n                var name_1;\n                var msg = message;\n                if ({}.toString.call(message) === '[object String]') {\n                    var groups = ERROR_TYPES_RE.exec(msg);\n                    if (groups) {\n                        name_1 = groups[1];\n                        msg = groups[2];\n                    }\n                }\n                stack = {\n                    name: name_1,\n                    message: typeof msg === 'string' ? msg : undefined,\n                    stack: [location_1],\n                };\n                callback(stack, message);\n            }\n        },\n    });\n}\n/**\n * Install a global onunhandledrejection handler\n */\nfunction instrumentUnhandledRejection(callback) {\n    return instrumentMethodAndCallOriginal(window, 'onunhandledrejection', {\n        before: function (e) {\n            var reason = e.reason || 'Empty reason';\n            var stack = computeStackTrace(reason);\n            callback(stack, reason);\n        },\n    });\n}\n//# sourceMappingURL=tracekit.js.map","import { ErrorSource, computeRawError } from '../../tools/error';\nimport { clocksNow } from '../../tools/timeUtils';\nimport { startUnhandledErrorCollection } from '../tracekit';\nexport function trackRuntimeError(errorObservable) {\n    return startUnhandledErrorCollection(function (stackTrace, originalError) {\n        errorObservable.notify(computeRawError({\n            stackTrace: stackTrace,\n            originalError: originalError,\n            startClocks: clocksNow(),\n            nonErrorPrefix: 'Uncaught',\n            source: ErrorSource.SOURCE,\n            handling: \"unhandled\" /* UNHANDLED */,\n        }));\n    });\n}\n//# sourceMappingURL=trackRuntimeError.js.map","import { noop, ErrorSource, trackRuntimeError, Observable } from '@datadog/browser-core';\nimport { StatusType } from '../../logger';\nexport function startRuntimeErrorCollection(configuration, lifeCycle) {\n    if (!configuration.forwardErrorsToLogs) {\n        return { stop: noop };\n    }\n    var rawErrorObservable = new Observable();\n    var stopRuntimeErrorTracking = trackRuntimeError(rawErrorObservable).stop;\n    var rawErrorSubscription = rawErrorObservable.subscribe(function (rawError) {\n        lifeCycle.notify(0 /* RAW_LOG_COLLECTED */, {\n            rawLogsEvent: {\n                message: rawError.message,\n                date: rawError.startClocks.timeStamp,\n                error: {\n                    kind: rawError.type,\n                    origin: ErrorSource.SOURCE,\n                    stack: rawError.stack,\n                },\n                origin: ErrorSource.SOURCE,\n                status: StatusType.error,\n            },\n        });\n    });\n    return {\n        stop: function () {\n            stopRuntimeErrorTracking();\n            rawErrorSubscription.unsubscribe();\n        },\n    };\n}\n//# sourceMappingURL=runtimeErrorCollection.js.map","var LifeCycle = /** @class */ (function () {\n    function LifeCycle() {\n        this.callbacks = {};\n    }\n    LifeCycle.prototype.notify = function (eventType, data) {\n        var eventCallbacks = this.callbacks[eventType];\n        if (eventCallbacks) {\n            eventCallbacks.forEach(function (callback) { return callback(data); });\n        }\n    };\n    LifeCycle.prototype.subscribe = function (eventType, callback) {\n        var _this = this;\n        if (!this.callbacks[eventType]) {\n            this.callbacks[eventType] = [];\n        }\n        this.callbacks[eventType].push(callback);\n        return {\n            unsubscribe: function () {\n                _this.callbacks[eventType] = _this.callbacks[eventType].filter(function (other) { return callback !== other; });\n            },\n        };\n    };\n    return LifeCycle;\n}());\nexport { LifeCycle };\n//# sourceMappingURL=lifeCycle.js.map","import { startBatchWithReplica } from '@datadog/browser-core';\nexport function startLogsBatch(configuration, lifeCycle, reportError, pageExitObservable) {\n    var _a;\n    var batch = startBatchWithReplica(configuration, configuration.logsEndpointBuilder, reportError, pageExitObservable, (_a = configuration.replica) === null || _a === void 0 ? void 0 : _a.logsEndpointBuilder);\n    lifeCycle.subscribe(1 /* LOG_COLLECTED */, function (serverLogsEvent) {\n        batch.add(serverLogsEvent);\n    });\n}\n//# sourceMappingURL=startLogsBatch.js.map","import { getEventBridge } from '@datadog/browser-core';\nexport function startLogsBridge(lifeCycle) {\n    var bridge = getEventBridge();\n    lifeCycle.subscribe(1 /* LOG_COLLECTED */, function (serverLogsEvent) {\n        bridge.send('log', serverLogsEvent);\n    });\n}\n//# sourceMappingURL=startLogsBridge.js.map","export function startInternalContext(sessionManager) {\n    return {\n        get: function (startTime) {\n            var trackedSession = sessionManager.findTrackedSession(startTime);\n            if (trackedSession) {\n                return {\n                    session_id: trackedSession.id,\n                };\n            }\n        },\n    };\n}\n//# sourceMappingURL=internalContext.js.map","import { createPageExitObservable, willSyntheticsInjectRum, areCookiesAuthorized, canUseEventBridge, getEventBridge, startTelemetry, startBatchWithReplica, isTelemetryReplicationAllowed, ErrorSource, addTelemetryConfiguration, } from '@datadog/browser-core';\nimport { startLogsSessionManager, startLogsSessionManagerStub } from '../domain/logsSessionManager';\nimport { serializeLogsConfiguration } from '../domain/configuration';\nimport { startLogsAssembly, getRUMInternalContext } from '../domain/assembly';\nimport { startConsoleCollection } from '../domain/logsCollection/console/consoleCollection';\nimport { startReportCollection } from '../domain/logsCollection/report/reportCollection';\nimport { startNetworkErrorCollection } from '../domain/logsCollection/networkError/networkErrorCollection';\nimport { startRuntimeErrorCollection } from '../domain/logsCollection/runtimeError/runtimeErrorCollection';\nimport { LifeCycle } from '../domain/lifeCycle';\nimport { startLoggerCollection } from '../domain/logsCollection/logger/loggerCollection';\nimport { startLogsBatch } from '../transport/startLogsBatch';\nimport { startLogsBridge } from '../transport/startLogsBridge';\nimport { StatusType } from '../domain/logger';\nimport { startInternalContext } from '../domain/internalContext';\nexport function startLogs(initConfiguration, configuration, getCommonContext, mainLogger) {\n    var lifeCycle = new LifeCycle();\n    var reportError = function (error) {\n        return lifeCycle.notify(0 /* RAW_LOG_COLLECTED */, {\n            rawLogsEvent: {\n                message: error.message,\n                date: error.startClocks.timeStamp,\n                error: {\n                    origin: ErrorSource.AGENT, // Todo: Remove in the next major release\n                },\n                origin: ErrorSource.AGENT,\n                status: StatusType.error,\n            },\n        });\n    };\n    var pageExitObservable = createPageExitObservable();\n    var telemetry = startLogsTelemetry(configuration, reportError, pageExitObservable);\n    telemetry.setContextProvider(function () {\n        var _a, _b, _c, _d, _e, _f;\n        return ({\n            application: {\n                id: (_a = getRUMInternalContext()) === null || _a === void 0 ? void 0 : _a.application_id,\n            },\n            session: {\n                id: (_b = session.findTrackedSession()) === null || _b === void 0 ? void 0 : _b.id,\n            },\n            view: {\n                id: (_d = (_c = getRUMInternalContext()) === null || _c === void 0 ? void 0 : _c.view) === null || _d === void 0 ? void 0 : _d.id,\n            },\n            action: {\n                id: (_f = (_e = getRUMInternalContext()) === null || _e === void 0 ? void 0 : _e.user_action) === null || _f === void 0 ? void 0 : _f.id,\n            },\n        });\n    });\n    startNetworkErrorCollection(configuration, lifeCycle);\n    startRuntimeErrorCollection(configuration, lifeCycle);\n    startConsoleCollection(configuration, lifeCycle);\n    startReportCollection(configuration, lifeCycle);\n    var handleLog = startLoggerCollection(lifeCycle).handleLog;\n    var session = areCookiesAuthorized(configuration.cookieOptions) && !canUseEventBridge() && !willSyntheticsInjectRum()\n        ? startLogsSessionManager(configuration)\n        : startLogsSessionManagerStub(configuration);\n    startLogsAssembly(session, configuration, lifeCycle, getCommonContext, mainLogger, reportError);\n    if (!canUseEventBridge()) {\n        startLogsBatch(configuration, lifeCycle, reportError, pageExitObservable);\n    }\n    else {\n        startLogsBridge(lifeCycle);\n    }\n    addTelemetryConfiguration(serializeLogsConfiguration(initConfiguration));\n    var internalContext = startInternalContext(session);\n    return {\n        handleLog: handleLog,\n        getInternalContext: internalContext.get,\n    };\n}\nfunction startLogsTelemetry(configuration, reportError, pageExitObservable) {\n    var _a;\n    var telemetry = startTelemetry(\"browser-logs-sdk\" /* LOGS */, configuration);\n    if (canUseEventBridge()) {\n        var bridge_1 = getEventBridge();\n        telemetry.observable.subscribe(function (event) { return bridge_1.send('internal_telemetry', event); });\n    }\n    else {\n        var telemetryBatch_1 = startBatchWithReplica(configuration, configuration.rumEndpointBuilder, reportError, pageExitObservable, (_a = configuration.replica) === null || _a === void 0 ? void 0 : _a.rumEndpointBuilder);\n        telemetry.observable.subscribe(function (event) { return telemetryBatch_1.add(event, isTelemetryReplicationAllowed(configuration)); });\n    }\n    return telemetry;\n}\n//# sourceMappingURL=startLogs.js.map","import { defineGlobal, getGlobalObject } from '@datadog/browser-core';\nimport { makeLogsPublicApi } from '../boot/logsPublicApi';\nimport { startLogs } from '../boot/startLogs';\nexport { Logger, StatusType, HandlerType } from '../domain/logger';\nexport var datadogLogs = makeLogsPublicApi(startLogs);\ndefineGlobal(getGlobalObject(), 'DD_LOGS', datadogLogs);\n//# sourceMappingURL=main.js.map","var baseRest = require('./_baseRest'),\n    isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n  return baseRest(function(object, sources) {\n    var index = -1,\n        length = sources.length,\n        customizer = length > 1 ? sources[length - 1] : undefined,\n        guard = length > 2 ? sources[2] : undefined;\n\n    customizer = (assigner.length > 3 && typeof customizer == 'function')\n      ? (length--, customizer)\n      : undefined;\n\n    if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n      customizer = length < 3 ? undefined : customizer;\n      length = 1;\n    }\n    object = Object(object);\n    while (++index < length) {\n      var source = sources[index];\n      if (source) {\n        assigner(object, source, index, customizer);\n      }\n    }\n    return object;\n  });\n}\n\nmodule.exports = createAssigner;\n","'use strict';\nvar fails = require('./_fails');\n\nmodule.exports = function (method, arg) {\n  return !!method && fails(function () {\n    // eslint-disable-next-line no-useless-call\n    arg ? method.call(null, function () { /* empty */ }, 1) : method.call(null);\n  });\n};\n","const Mode = require('./mode')\nconst Utils = require('./utils')\n\nfunction KanjiData (data) {\n  this.mode = Mode.KANJI\n  this.data = data\n}\n\nKanjiData.getBitsLength = function getBitsLength (length) {\n  return length * 13\n}\n\nKanjiData.prototype.getLength = function getLength () {\n  return this.data.length\n}\n\nKanjiData.prototype.getBitsLength = function getBitsLength () {\n  return KanjiData.getBitsLength(this.data.length)\n}\n\nKanjiData.prototype.write = function (bitBuffer) {\n  let i\n\n  // In the Shift JIS system, Kanji characters are represented by a two byte combination.\n  // These byte values are shifted from the JIS X 0208 values.\n  // JIS X 0208 gives details of the shift coded representation.\n  for (i = 0; i < this.data.length; i++) {\n    let value = Utils.toSJIS(this.data[i])\n\n    // For characters with Shift JIS values from 0x8140 to 0x9FFC:\n    if (value >= 0x8140 && value <= 0x9FFC) {\n      // Subtract 0x8140 from Shift JIS value\n      value -= 0x8140\n\n    // For characters with Shift JIS values from 0xE040 to 0xEBBF\n    } else if (value >= 0xE040 && value <= 0xEBBF) {\n      // Subtract 0xC140 from Shift JIS value\n      value -= 0xC140\n    } else {\n      throw new Error(\n        'Invalid SJIS character: ' + this.data[i] + '\\n' +\n        'Make sure your charset is UTF-8')\n    }\n\n    // Multiply most significant byte of result by 0xC0\n    // and add least significant byte to product\n    value = (((value >>> 8) & 0xff) * 0xC0) + (value & 0xff)\n\n    // Convert result to a 13-bit binary string\n    bitBuffer.put(value, 13)\n  }\n}\n\nmodule.exports = KanjiData\n","/**\n * vuex v3.1.1\n * (c) 2019 Evan You\n * @license MIT\n */\nfunction applyMixin (Vue) {\n  var version = Number(Vue.version.split('.')[0]);\n\n  if (version >= 2) {\n    Vue.mixin({ beforeCreate: vuexInit });\n  } else {\n    // override init and inject vuex init procedure\n    // for 1.x backwards compatibility.\n    var _init = Vue.prototype._init;\n    Vue.prototype._init = function (options) {\n      if ( options === void 0 ) options = {};\n\n      options.init = options.init\n        ? [vuexInit].concat(options.init)\n        : vuexInit;\n      _init.call(this, options);\n    };\n  }\n\n  /**\n   * Vuex init hook, injected into each instances init hooks list.\n   */\n\n  function vuexInit () {\n    var options = this.$options;\n    // store injection\n    if (options.store) {\n      this.$store = typeof options.store === 'function'\n        ? options.store()\n        : options.store;\n    } else if (options.parent && options.parent.$store) {\n      this.$store = options.parent.$store;\n    }\n  }\n}\n\nvar target = typeof window !== 'undefined'\n  ? window\n  : typeof global !== 'undefined'\n    ? global\n    : {};\nvar devtoolHook = target.__VUE_DEVTOOLS_GLOBAL_HOOK__;\n\nfunction devtoolPlugin (store) {\n  if (!devtoolHook) { return }\n\n  store._devtoolHook = devtoolHook;\n\n  devtoolHook.emit('vuex:init', store);\n\n  devtoolHook.on('vuex:travel-to-state', function (targetState) {\n    store.replaceState(targetState);\n  });\n\n  store.subscribe(function (mutation, state) {\n    devtoolHook.emit('vuex:mutation', mutation, state);\n  });\n}\n\n/**\n * Get the first item that pass the test\n * by second argument function\n *\n * @param {Array} list\n * @param {Function} f\n * @return {*}\n */\n\n/**\n * forEach for object\n */\nfunction forEachValue (obj, fn) {\n  Object.keys(obj).forEach(function (key) { return fn(obj[key], key); });\n}\n\nfunction isObject (obj) {\n  return obj !== null && typeof obj === 'object'\n}\n\nfunction isPromise (val) {\n  return val && typeof val.then === 'function'\n}\n\nfunction assert (condition, msg) {\n  if (!condition) { throw new Error((\"[vuex] \" + msg)) }\n}\n\nfunction partial (fn, arg) {\n  return function () {\n    return fn(arg)\n  }\n}\n\n// Base data struct for store's module, package with some attribute and method\nvar Module = function Module (rawModule, runtime) {\n  this.runtime = runtime;\n  // Store some children item\n  this._children = Object.create(null);\n  // Store the origin module object which passed by programmer\n  this._rawModule = rawModule;\n  var rawState = rawModule.state;\n\n  // Store the origin module's state\n  this.state = (typeof rawState === 'function' ? rawState() : rawState) || {};\n};\n\nvar prototypeAccessors = { namespaced: { configurable: true } };\n\nprototypeAccessors.namespaced.get = function () {\n  return !!this._rawModule.namespaced\n};\n\nModule.prototype.addChild = function addChild (key, module) {\n  this._children[key] = module;\n};\n\nModule.prototype.removeChild = function removeChild (key) {\n  delete this._children[key];\n};\n\nModule.prototype.getChild = function getChild (key) {\n  return this._children[key]\n};\n\nModule.prototype.update = function update (rawModule) {\n  this._rawModule.namespaced = rawModule.namespaced;\n  if (rawModule.actions) {\n    this._rawModule.actions = rawModule.actions;\n  }\n  if (rawModule.mutations) {\n    this._rawModule.mutations = rawModule.mutations;\n  }\n  if (rawModule.getters) {\n    this._rawModule.getters = rawModule.getters;\n  }\n};\n\nModule.prototype.forEachChild = function forEachChild (fn) {\n  forEachValue(this._children, fn);\n};\n\nModule.prototype.forEachGetter = function forEachGetter (fn) {\n  if (this._rawModule.getters) {\n    forEachValue(this._rawModule.getters, fn);\n  }\n};\n\nModule.prototype.forEachAction = function forEachAction (fn) {\n  if (this._rawModule.actions) {\n    forEachValue(this._rawModule.actions, fn);\n  }\n};\n\nModule.prototype.forEachMutation = function forEachMutation (fn) {\n  if (this._rawModule.mutations) {\n    forEachValue(this._rawModule.mutations, fn);\n  }\n};\n\nObject.defineProperties( Module.prototype, prototypeAccessors );\n\nvar ModuleCollection = function ModuleCollection (rawRootModule) {\n  // register root module (Vuex.Store options)\n  this.register([], rawRootModule, false);\n};\n\nModuleCollection.prototype.get = function get (path) {\n  return path.reduce(function (module, key) {\n    return module.getChild(key)\n  }, this.root)\n};\n\nModuleCollection.prototype.getNamespace = function getNamespace (path) {\n  var module = this.root;\n  return path.reduce(function (namespace, key) {\n    module = module.getChild(key);\n    return namespace + (module.namespaced ? key + '/' : '')\n  }, '')\n};\n\nModuleCollection.prototype.update = function update$1 (rawRootModule) {\n  update([], this.root, rawRootModule);\n};\n\nModuleCollection.prototype.register = function register (path, rawModule, runtime) {\n    var this$1 = this;\n    if ( runtime === void 0 ) runtime = true;\n\n  if (process.env.NODE_ENV !== 'production') {\n    assertRawModule(path, rawModule);\n  }\n\n  var newModule = new Module(rawModule, runtime);\n  if (path.length === 0) {\n    this.root = newModule;\n  } else {\n    var parent = this.get(path.slice(0, -1));\n    parent.addChild(path[path.length - 1], newModule);\n  }\n\n  // register nested modules\n  if (rawModule.modules) {\n    forEachValue(rawModule.modules, function (rawChildModule, key) {\n      this$1.register(path.concat(key), rawChildModule, runtime);\n    });\n  }\n};\n\nModuleCollection.prototype.unregister = function unregister (path) {\n  var parent = this.get(path.slice(0, -1));\n  var key = path[path.length - 1];\n  if (!parent.getChild(key).runtime) { return }\n\n  parent.removeChild(key);\n};\n\nfunction update (path, targetModule, newModule) {\n  if (process.env.NODE_ENV !== 'production') {\n    assertRawModule(path, newModule);\n  }\n\n  // update target module\n  targetModule.update(newModule);\n\n  // update nested modules\n  if (newModule.modules) {\n    for (var key in newModule.modules) {\n      if (!targetModule.getChild(key)) {\n        if (process.env.NODE_ENV !== 'production') {\n          console.warn(\n            \"[vuex] trying to add a new module '\" + key + \"' on hot reloading, \" +\n            'manual reload is needed'\n          );\n        }\n        return\n      }\n      update(\n        path.concat(key),\n        targetModule.getChild(key),\n        newModule.modules[key]\n      );\n    }\n  }\n}\n\nvar functionAssert = {\n  assert: function (value) { return typeof value === 'function'; },\n  expected: 'function'\n};\n\nvar objectAssert = {\n  assert: function (value) { return typeof value === 'function' ||\n    (typeof value === 'object' && typeof value.handler === 'function'); },\n  expected: 'function or object with \"handler\" function'\n};\n\nvar assertTypes = {\n  getters: functionAssert,\n  mutations: functionAssert,\n  actions: objectAssert\n};\n\nfunction assertRawModule (path, rawModule) {\n  Object.keys(assertTypes).forEach(function (key) {\n    if (!rawModule[key]) { return }\n\n    var assertOptions = assertTypes[key];\n\n    forEachValue(rawModule[key], function (value, type) {\n      assert(\n        assertOptions.assert(value),\n        makeAssertionMessage(path, key, type, value, assertOptions.expected)\n      );\n    });\n  });\n}\n\nfunction makeAssertionMessage (path, key, type, value, expected) {\n  var buf = key + \" should be \" + expected + \" but \\\"\" + key + \".\" + type + \"\\\"\";\n  if (path.length > 0) {\n    buf += \" in module \\\"\" + (path.join('.')) + \"\\\"\";\n  }\n  buf += \" is \" + (JSON.stringify(value)) + \".\";\n  return buf\n}\n\nvar Vue; // bind on install\n\nvar Store = function Store (options) {\n  var this$1 = this;\n  if ( options === void 0 ) options = {};\n\n  // Auto install if it is not done yet and `window` has `Vue`.\n  // To allow users to avoid auto-installation in some cases,\n  // this code should be placed here. See #731\n  if (!Vue && typeof window !== 'undefined' && window.Vue) {\n    install(window.Vue);\n  }\n\n  if (process.env.NODE_ENV !== 'production') {\n    assert(Vue, \"must call Vue.use(Vuex) before creating a store instance.\");\n    assert(typeof Promise !== 'undefined', \"vuex requires a Promise polyfill in this browser.\");\n    assert(this instanceof Store, \"store must be called with the new operator.\");\n  }\n\n  var plugins = options.plugins; if ( plugins === void 0 ) plugins = [];\n  var strict = options.strict; if ( strict === void 0 ) strict = false;\n\n  // store internal state\n  this._committing = false;\n  this._actions = Object.create(null);\n  this._actionSubscribers = [];\n  this._mutations = Object.create(null);\n  this._wrappedGetters = Object.create(null);\n  this._modules = new ModuleCollection(options);\n  this._modulesNamespaceMap = Object.create(null);\n  this._subscribers = [];\n  this._watcherVM = new Vue();\n\n  // bind commit and dispatch to self\n  var store = this;\n  var ref = this;\n  var dispatch = ref.dispatch;\n  var commit = ref.commit;\n  this.dispatch = function boundDispatch (type, payload) {\n    return dispatch.call(store, type, payload)\n  };\n  this.commit = function boundCommit (type, payload, options) {\n    return commit.call(store, type, payload, options)\n  };\n\n  // strict mode\n  this.strict = strict;\n\n  var state = this._modules.root.state;\n\n  // init root module.\n  // this also recursively registers all sub-modules\n  // and collects all module getters inside this._wrappedGetters\n  installModule(this, state, [], this._modules.root);\n\n  // initialize the store vm, which is responsible for the reactivity\n  // (also registers _wrappedGetters as computed properties)\n  resetStoreVM(this, state);\n\n  // apply plugins\n  plugins.forEach(function (plugin) { return plugin(this$1); });\n\n  var useDevtools = options.devtools !== undefined ? options.devtools : Vue.config.devtools;\n  if (useDevtools) {\n    devtoolPlugin(this);\n  }\n};\n\nvar prototypeAccessors$1 = { state: { configurable: true } };\n\nprototypeAccessors$1.state.get = function () {\n  return this._vm._data.$$state\n};\n\nprototypeAccessors$1.state.set = function (v) {\n  if (process.env.NODE_ENV !== 'production') {\n    assert(false, \"use store.replaceState() to explicit replace store state.\");\n  }\n};\n\nStore.prototype.commit = function commit (_type, _payload, _options) {\n    var this$1 = this;\n\n  // check object-style commit\n  var ref = unifyObjectStyle(_type, _payload, _options);\n    var type = ref.type;\n    var payload = ref.payload;\n    var options = ref.options;\n\n  var mutation = { type: type, payload: payload };\n  var entry = this._mutations[type];\n  if (!entry) {\n    if (process.env.NODE_ENV !== 'production') {\n      console.error((\"[vuex] unknown mutation type: \" + type));\n    }\n    return\n  }\n  this._withCommit(function () {\n    entry.forEach(function commitIterator (handler) {\n      handler(payload);\n    });\n  });\n  this._subscribers.forEach(function (sub) { return sub(mutation, this$1.state); });\n\n  if (\n    process.env.NODE_ENV !== 'production' &&\n    options && options.silent\n  ) {\n    console.warn(\n      \"[vuex] mutation type: \" + type + \". Silent option has been removed. \" +\n      'Use the filter functionality in the vue-devtools'\n    );\n  }\n};\n\nStore.prototype.dispatch = function dispatch (_type, _payload) {\n    var this$1 = this;\n\n  // check object-style dispatch\n  var ref = unifyObjectStyle(_type, _payload);\n    var type = ref.type;\n    var payload = ref.payload;\n\n  var action = { type: type, payload: payload };\n  var entry = this._actions[type];\n  if (!entry) {\n    if (process.env.NODE_ENV !== 'production') {\n      console.error((\"[vuex] unknown action type: \" + type));\n    }\n    return\n  }\n\n  try {\n    this._actionSubscribers\n      .filter(function (sub) { return sub.before; })\n      .forEach(function (sub) { return sub.before(action, this$1.state); });\n  } catch (e) {\n    if (process.env.NODE_ENV !== 'production') {\n      console.warn(\"[vuex] error in before action subscribers: \");\n      console.error(e);\n    }\n  }\n\n  var result = entry.length > 1\n    ? Promise.all(entry.map(function (handler) { return handler(payload); }))\n    : entry[0](payload);\n\n  return result.then(function (res) {\n    try {\n      this$1._actionSubscribers\n        .filter(function (sub) { return sub.after; })\n        .forEach(function (sub) { return sub.after(action, this$1.state); });\n    } catch (e) {\n      if (process.env.NODE_ENV !== 'production') {\n        console.warn(\"[vuex] error in after action subscribers: \");\n        console.error(e);\n      }\n    }\n    return res\n  })\n};\n\nStore.prototype.subscribe = function subscribe (fn) {\n  return genericSubscribe(fn, this._subscribers)\n};\n\nStore.prototype.subscribeAction = function subscribeAction (fn) {\n  var subs = typeof fn === 'function' ? { before: fn } : fn;\n  return genericSubscribe(subs, this._actionSubscribers)\n};\n\nStore.prototype.watch = function watch (getter, cb, options) {\n    var this$1 = this;\n\n  if (process.env.NODE_ENV !== 'production') {\n    assert(typeof getter === 'function', \"store.watch only accepts a function.\");\n  }\n  return this._watcherVM.$watch(function () { return getter(this$1.state, this$1.getters); }, cb, options)\n};\n\nStore.prototype.replaceState = function replaceState (state) {\n    var this$1 = this;\n\n  this._withCommit(function () {\n    this$1._vm._data.$$state = state;\n  });\n};\n\nStore.prototype.registerModule = function registerModule (path, rawModule, options) {\n    if ( options === void 0 ) options = {};\n\n  if (typeof path === 'string') { path = [path]; }\n\n  if (process.env.NODE_ENV !== 'production') {\n    assert(Array.isArray(path), \"module path must be a string or an Array.\");\n    assert(path.length > 0, 'cannot register the root module by using registerModule.');\n  }\n\n  this._modules.register(path, rawModule);\n  installModule(this, this.state, path, this._modules.get(path), options.preserveState);\n  // reset store to update getters...\n  resetStoreVM(this, this.state);\n};\n\nStore.prototype.unregisterModule = function unregisterModule (path) {\n    var this$1 = this;\n\n  if (typeof path === 'string') { path = [path]; }\n\n  if (process.env.NODE_ENV !== 'production') {\n    assert(Array.isArray(path), \"module path must be a string or an Array.\");\n  }\n\n  this._modules.unregister(path);\n  this._withCommit(function () {\n    var parentState = getNestedState(this$1.state, path.slice(0, -1));\n    Vue.delete(parentState, path[path.length - 1]);\n  });\n  resetStore(this);\n};\n\nStore.prototype.hotUpdate = function hotUpdate (newOptions) {\n  this._modules.update(newOptions);\n  resetStore(this, true);\n};\n\nStore.prototype._withCommit = function _withCommit (fn) {\n  var committing = this._committing;\n  this._committing = true;\n  fn();\n  this._committing = committing;\n};\n\nObject.defineProperties( Store.prototype, prototypeAccessors$1 );\n\nfunction genericSubscribe (fn, subs) {\n  if (subs.indexOf(fn) < 0) {\n    subs.push(fn);\n  }\n  return function () {\n    var i = subs.indexOf(fn);\n    if (i > -1) {\n      subs.splice(i, 1);\n    }\n  }\n}\n\nfunction resetStore (store, hot) {\n  store._actions = Object.create(null);\n  store._mutations = Object.create(null);\n  store._wrappedGetters = Object.create(null);\n  store._modulesNamespaceMap = Object.create(null);\n  var state = store.state;\n  // init all modules\n  installModule(store, state, [], store._modules.root, true);\n  // reset vm\n  resetStoreVM(store, state, hot);\n}\n\nfunction resetStoreVM (store, state, hot) {\n  var oldVm = store._vm;\n\n  // bind store public getters\n  store.getters = {};\n  var wrappedGetters = store._wrappedGetters;\n  var computed = {};\n  forEachValue(wrappedGetters, function (fn, key) {\n    // use computed to leverage its lazy-caching mechanism\n    // direct inline function use will lead to closure preserving oldVm.\n    // using partial to return function with only arguments preserved in closure enviroment.\n    computed[key] = partial(fn, store);\n    Object.defineProperty(store.getters, key, {\n      get: function () { return store._vm[key]; },\n      enumerable: true // for local getters\n    });\n  });\n\n  // use a Vue instance to store the state tree\n  // suppress warnings just in case the user has added\n  // some funky global mixins\n  var silent = Vue.config.silent;\n  Vue.config.silent = true;\n  store._vm = new Vue({\n    data: {\n      $$state: state\n    },\n    computed: computed\n  });\n  Vue.config.silent = silent;\n\n  // enable strict mode for new vm\n  if (store.strict) {\n    enableStrictMode(store);\n  }\n\n  if (oldVm) {\n    if (hot) {\n      // dispatch changes in all subscribed watchers\n      // to force getter re-evaluation for hot reloading.\n      store._withCommit(function () {\n        oldVm._data.$$state = null;\n      });\n    }\n    Vue.nextTick(function () { return oldVm.$destroy(); });\n  }\n}\n\nfunction installModule (store, rootState, path, module, hot) {\n  var isRoot = !path.length;\n  var namespace = store._modules.getNamespace(path);\n\n  // register in namespace map\n  if (module.namespaced) {\n    store._modulesNamespaceMap[namespace] = module;\n  }\n\n  // set state\n  if (!isRoot && !hot) {\n    var parentState = getNestedState(rootState, path.slice(0, -1));\n    var moduleName = path[path.length - 1];\n    store._withCommit(function () {\n      Vue.set(parentState, moduleName, module.state);\n    });\n  }\n\n  var local = module.context = makeLocalContext(store, namespace, path);\n\n  module.forEachMutation(function (mutation, key) {\n    var namespacedType = namespace + key;\n    registerMutation(store, namespacedType, mutation, local);\n  });\n\n  module.forEachAction(function (action, key) {\n    var type = action.root ? key : namespace + key;\n    var handler = action.handler || action;\n    registerAction(store, type, handler, local);\n  });\n\n  module.forEachGetter(function (getter, key) {\n    var namespacedType = namespace + key;\n    registerGetter(store, namespacedType, getter, local);\n  });\n\n  module.forEachChild(function (child, key) {\n    installModule(store, rootState, path.concat(key), child, hot);\n  });\n}\n\n/**\n * make localized dispatch, commit, getters and state\n * if there is no namespace, just use root ones\n */\nfunction makeLocalContext (store, namespace, path) {\n  var noNamespace = namespace === '';\n\n  var local = {\n    dispatch: noNamespace ? store.dispatch : function (_type, _payload, _options) {\n      var args = unifyObjectStyle(_type, _payload, _options);\n      var payload = args.payload;\n      var options = args.options;\n      var type = args.type;\n\n      if (!options || !options.root) {\n        type = namespace + type;\n        if (process.env.NODE_ENV !== 'production' && !store._actions[type]) {\n          console.error((\"[vuex] unknown local action type: \" + (args.type) + \", global type: \" + type));\n          return\n        }\n      }\n\n      return store.dispatch(type, payload)\n    },\n\n    commit: noNamespace ? store.commit : function (_type, _payload, _options) {\n      var args = unifyObjectStyle(_type, _payload, _options);\n      var payload = args.payload;\n      var options = args.options;\n      var type = args.type;\n\n      if (!options || !options.root) {\n        type = namespace + type;\n        if (process.env.NODE_ENV !== 'production' && !store._mutations[type]) {\n          console.error((\"[vuex] unknown local mutation type: \" + (args.type) + \", global type: \" + type));\n          return\n        }\n      }\n\n      store.commit(type, payload, options);\n    }\n  };\n\n  // getters and state object must be gotten lazily\n  // because they will be changed by vm update\n  Object.defineProperties(local, {\n    getters: {\n      get: noNamespace\n        ? function () { return store.getters; }\n        : function () { return makeLocalGetters(store, namespace); }\n    },\n    state: {\n      get: function () { return getNestedState(store.state, path); }\n    }\n  });\n\n  return local\n}\n\nfunction makeLocalGetters (store, namespace) {\n  var gettersProxy = {};\n\n  var splitPos = namespace.length;\n  Object.keys(store.getters).forEach(function (type) {\n    // skip if the target getter is not match this namespace\n    if (type.slice(0, splitPos) !== namespace) { return }\n\n    // extract local getter type\n    var localType = type.slice(splitPos);\n\n    // Add a port to the getters proxy.\n    // Define as getter property because\n    // we do not want to evaluate the getters in this time.\n    Object.defineProperty(gettersProxy, localType, {\n      get: function () { return store.getters[type]; },\n      enumerable: true\n    });\n  });\n\n  return gettersProxy\n}\n\nfunction registerMutation (store, type, handler, local) {\n  var entry = store._mutations[type] || (store._mutations[type] = []);\n  entry.push(function wrappedMutationHandler (payload) {\n    handler.call(store, local.state, payload);\n  });\n}\n\nfunction registerAction (store, type, handler, local) {\n  var entry = store._actions[type] || (store._actions[type] = []);\n  entry.push(function wrappedActionHandler (payload, cb) {\n    var res = handler.call(store, {\n      dispatch: local.dispatch,\n      commit: local.commit,\n      getters: local.getters,\n      state: local.state,\n      rootGetters: store.getters,\n      rootState: store.state\n    }, payload, cb);\n    if (!isPromise(res)) {\n      res = Promise.resolve(res);\n    }\n    if (store._devtoolHook) {\n      return res.catch(function (err) {\n        store._devtoolHook.emit('vuex:error', err);\n        throw err\n      })\n    } else {\n      return res\n    }\n  });\n}\n\nfunction registerGetter (store, type, rawGetter, local) {\n  if (store._wrappedGetters[type]) {\n    if (process.env.NODE_ENV !== 'production') {\n      console.error((\"[vuex] duplicate getter key: \" + type));\n    }\n    return\n  }\n  store._wrappedGetters[type] = function wrappedGetter (store) {\n    return rawGetter(\n      local.state, // local state\n      local.getters, // local getters\n      store.state, // root state\n      store.getters // root getters\n    )\n  };\n}\n\nfunction enableStrictMode (store) {\n  store._vm.$watch(function () { return this._data.$$state }, function () {\n    if (process.env.NODE_ENV !== 'production') {\n      assert(store._committing, \"do not mutate vuex store state outside mutation handlers.\");\n    }\n  }, { deep: true, sync: true });\n}\n\nfunction getNestedState (state, path) {\n  return path.length\n    ? path.reduce(function (state, key) { return state[key]; }, state)\n    : state\n}\n\nfunction unifyObjectStyle (type, payload, options) {\n  if (isObject(type) && type.type) {\n    options = payload;\n    payload = type;\n    type = type.type;\n  }\n\n  if (process.env.NODE_ENV !== 'production') {\n    assert(typeof type === 'string', (\"expects string as the type, but found \" + (typeof type) + \".\"));\n  }\n\n  return { type: type, payload: payload, options: options }\n}\n\nfunction install (_Vue) {\n  if (Vue && _Vue === Vue) {\n    if (process.env.NODE_ENV !== 'production') {\n      console.error(\n        '[vuex] already installed. Vue.use(Vuex) should be called only once.'\n      );\n    }\n    return\n  }\n  Vue = _Vue;\n  applyMixin(Vue);\n}\n\n/**\n * Reduce the code which written in Vue.js for getting the state.\n * @param {String} [namespace] - Module's namespace\n * @param {Object|Array} states # Object's item can be a function which accept state and getters for param, you can do something for state and getters in it.\n * @param {Object}\n */\nvar mapState = normalizeNamespace(function (namespace, states) {\n  var res = {};\n  normalizeMap(states).forEach(function (ref) {\n    var key = ref.key;\n    var val = ref.val;\n\n    res[key] = function mappedState () {\n      var state = this.$store.state;\n      var getters = this.$store.getters;\n      if (namespace) {\n        var module = getModuleByNamespace(this.$store, 'mapState', namespace);\n        if (!module) {\n          return\n        }\n        state = module.context.state;\n        getters = module.context.getters;\n      }\n      return typeof val === 'function'\n        ? val.call(this, state, getters)\n        : state[val]\n    };\n    // mark vuex getter for devtools\n    res[key].vuex = true;\n  });\n  return res\n});\n\n/**\n * Reduce the code which written in Vue.js for committing the mutation\n * @param {String} [namespace] - Module's namespace\n * @param {Object|Array} mutations # Object's item can be a function which accept `commit` function as the first param, it can accept anthor params. You can commit mutation and do any other things in this function. specially, You need to pass anthor params from the mapped function.\n * @return {Object}\n */\nvar mapMutations = normalizeNamespace(function (namespace, mutations) {\n  var res = {};\n  normalizeMap(mutations).forEach(function (ref) {\n    var key = ref.key;\n    var val = ref.val;\n\n    res[key] = function mappedMutation () {\n      var args = [], len = arguments.length;\n      while ( len-- ) args[ len ] = arguments[ len ];\n\n      // Get the commit method from store\n      var commit = this.$store.commit;\n      if (namespace) {\n        var module = getModuleByNamespace(this.$store, 'mapMutations', namespace);\n        if (!module) {\n          return\n        }\n        commit = module.context.commit;\n      }\n      return typeof val === 'function'\n        ? val.apply(this, [commit].concat(args))\n        : commit.apply(this.$store, [val].concat(args))\n    };\n  });\n  return res\n});\n\n/**\n * Reduce the code which written in Vue.js for getting the getters\n * @param {String} [namespace] - Module's namespace\n * @param {Object|Array} getters\n * @return {Object}\n */\nvar mapGetters = normalizeNamespace(function (namespace, getters) {\n  var res = {};\n  normalizeMap(getters).forEach(function (ref) {\n    var key = ref.key;\n    var val = ref.val;\n\n    // The namespace has been mutated by normalizeNamespace\n    val = namespace + val;\n    res[key] = function mappedGetter () {\n      if (namespace && !getModuleByNamespace(this.$store, 'mapGetters', namespace)) {\n        return\n      }\n      if (process.env.NODE_ENV !== 'production' && !(val in this.$store.getters)) {\n        console.error((\"[vuex] unknown getter: \" + val));\n        return\n      }\n      return this.$store.getters[val]\n    };\n    // mark vuex getter for devtools\n    res[key].vuex = true;\n  });\n  return res\n});\n\n/**\n * Reduce the code which written in Vue.js for dispatch the action\n * @param {String} [namespace] - Module's namespace\n * @param {Object|Array} actions # Object's item can be a function which accept `dispatch` function as the first param, it can accept anthor params. You can dispatch action and do any other things in this function. specially, You need to pass anthor params from the mapped function.\n * @return {Object}\n */\nvar mapActions = normalizeNamespace(function (namespace, actions) {\n  var res = {};\n  normalizeMap(actions).forEach(function (ref) {\n    var key = ref.key;\n    var val = ref.val;\n\n    res[key] = function mappedAction () {\n      var args = [], len = arguments.length;\n      while ( len-- ) args[ len ] = arguments[ len ];\n\n      // get dispatch function from store\n      var dispatch = this.$store.dispatch;\n      if (namespace) {\n        var module = getModuleByNamespace(this.$store, 'mapActions', namespace);\n        if (!module) {\n          return\n        }\n        dispatch = module.context.dispatch;\n      }\n      return typeof val === 'function'\n        ? val.apply(this, [dispatch].concat(args))\n        : dispatch.apply(this.$store, [val].concat(args))\n    };\n  });\n  return res\n});\n\n/**\n * Rebinding namespace param for mapXXX function in special scoped, and return them by simple object\n * @param {String} namespace\n * @return {Object}\n */\nvar createNamespacedHelpers = function (namespace) { return ({\n  mapState: mapState.bind(null, namespace),\n  mapGetters: mapGetters.bind(null, namespace),\n  mapMutations: mapMutations.bind(null, namespace),\n  mapActions: mapActions.bind(null, namespace)\n}); };\n\n/**\n * Normalize the map\n * normalizeMap([1, 2, 3]) => [ { key: 1, val: 1 }, { key: 2, val: 2 }, { key: 3, val: 3 } ]\n * normalizeMap({a: 1, b: 2, c: 3}) => [ { key: 'a', val: 1 }, { key: 'b', val: 2 }, { key: 'c', val: 3 } ]\n * @param {Array|Object} map\n * @return {Object}\n */\nfunction normalizeMap (map) {\n  return Array.isArray(map)\n    ? map.map(function (key) { return ({ key: key, val: key }); })\n    : Object.keys(map).map(function (key) { return ({ key: key, val: map[key] }); })\n}\n\n/**\n * Return a function expect two param contains namespace and map. it will normalize the namespace and then the param's function will handle the new namespace and the map.\n * @param {Function} fn\n * @return {Function}\n */\nfunction normalizeNamespace (fn) {\n  return function (namespace, map) {\n    if (typeof namespace !== 'string') {\n      map = namespace;\n      namespace = '';\n    } else if (namespace.charAt(namespace.length - 1) !== '/') {\n      namespace += '/';\n    }\n    return fn(namespace, map)\n  }\n}\n\n/**\n * Search a special module from store by namespace. if module not exist, print error message.\n * @param {Object} store\n * @param {String} helper\n * @param {String} namespace\n * @return {Object}\n */\nfunction getModuleByNamespace (store, helper, namespace) {\n  var module = store._modulesNamespaceMap[namespace];\n  if (process.env.NODE_ENV !== 'production' && !module) {\n    console.error((\"[vuex] module namespace not found in \" + helper + \"(): \" + namespace));\n  }\n  return module\n}\n\nvar index_esm = {\n  Store: Store,\n  install: install,\n  version: '3.1.1',\n  mapState: mapState,\n  mapMutations: mapMutations,\n  mapGetters: mapGetters,\n  mapActions: mapActions,\n  createNamespacedHelpers: createNamespacedHelpers\n};\n\nexport default index_esm;\nexport { Store, install, mapState, mapMutations, mapGetters, mapActions, createNamespacedHelpers };\n","import \"../../../src/components/VGrid/_grid.sass\";\nimport { createSimpleFunctional } from '../../util/helpers';\nexport default createSimpleFunctional('spacer', 'div', 'v-spacer');\n//# sourceMappingURL=VSpacer.js.map","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n  var data = this.__data__,\n      result = data['delete'](key);\n\n  this.size = data.size;\n  return result;\n}\n\nmodule.exports = stackDelete;\n","function setAsyncState(vm, stateObject, state) {\n  vm.$set(vm.$data._asyncComputed[stateObject], 'state', state);\n  vm.$set(vm.$data._asyncComputed[stateObject], 'updating', state === 'updating');\n  vm.$set(vm.$data._asyncComputed[stateObject], 'error', state === 'error');\n  vm.$set(vm.$data._asyncComputed[stateObject], 'success', state === 'success');\n}\n\nfunction getterOnly(fn) {\n  if (typeof fn === 'function') return fn;\n\n  return fn.get;\n}\n\nfunction hasOwnProperty(object, property) {\n  return Object.prototype.hasOwnProperty.call(object, property);\n}\n\nfunction isComputedLazy(item) {\n  return hasOwnProperty(item, 'lazy') && item.lazy;\n}\n\nfunction isLazyActive(vm, key) {\n  return vm[lazyActivePrefix + key];\n}\n\nvar lazyActivePrefix = 'async_computed$lazy_active$',\n    lazyDataPrefix = 'async_computed$lazy_data$';\n\nfunction initLazy(data, key, value) {\n  data[lazyActivePrefix + key] = false;\n  data[lazyDataPrefix + key] = value;\n}\n\nfunction makeLazyComputed(key) {\n  return {\n    get: function get() {\n      this[lazyActivePrefix + key] = true;\n      return this[lazyDataPrefix + key];\n    },\n    set: function set(value) {\n      this[lazyDataPrefix + key] = value;\n    }\n  };\n}\n\nfunction silentSetLazy(vm, key, value) {\n  vm[lazyDataPrefix + key] = value;\n}\nfunction silentGetLazy(vm, key) {\n  return vm[lazyDataPrefix + key];\n}\n\nvar getGetterWatchedByArray = function getGetterWatchedByArray(computedAsyncProperty) {\n  return function getter() {\n    var _this = this;\n\n    computedAsyncProperty.watch.forEach(function (key) {\n      // Check if nested key is watched.\n      var splittedByDot = key.split('.');\n      if (splittedByDot.length === 1) {\n        // If not, just access it.\n        // eslint-disable-next-line no-unused-expressions\n        _this[key];\n      } else {\n        // Access the nested propety.\n        try {\n          var start = _this;\n          splittedByDot.forEach(function (part) {\n            start = start[part];\n          });\n        } catch (error) {\n          console.error('AsyncComputed: bad path: ', key);\n          throw error;\n        }\n      }\n    });\n    return computedAsyncProperty.get.call(this);\n  };\n};\n\nvar getGetterWatchedByFunction = function getGetterWatchedByFunction(computedAsyncProperty) {\n  return function getter() {\n    computedAsyncProperty.watch.call(this);\n    return computedAsyncProperty.get.call(this);\n  };\n};\n\nfunction getWatchedGetter(computedAsyncProperty) {\n  if (typeof computedAsyncProperty.watch === 'function') {\n    return getGetterWatchedByFunction(computedAsyncProperty);\n  } else if (Array.isArray(computedAsyncProperty.watch)) {\n    computedAsyncProperty.watch.forEach(function (key) {\n      if (typeof key !== 'string') {\n        throw new Error('AsyncComputed: watch elemnts must be strings');\n      }\n    });\n    return getGetterWatchedByArray(computedAsyncProperty);\n  } else {\n    throw Error('AsyncComputed: watch should be function or an array');\n  }\n}\n\nvar DidNotUpdate = typeof Symbol === 'function' ? Symbol('did-not-update') : {};\n\nvar getGetterWithShouldUpdate = function getGetterWithShouldUpdate(asyncProprety, currentGetter) {\n  return function getter() {\n    return asyncProprety.shouldUpdate.call(this) ? currentGetter.call(this) : DidNotUpdate;\n  };\n};\n\nvar shouldNotUpdate = function shouldNotUpdate(value) {\n  return DidNotUpdate === value;\n};\n\nvar prefix = '_async_computed$';\n\nvar AsyncComputed = {\n  install: function install(Vue, pluginOptions) {\n    pluginOptions = pluginOptions || {};\n\n    Vue.config.optionMergeStrategies.asyncComputed = Vue.config.optionMergeStrategies.computed;\n\n    Vue.mixin({\n      data: function data() {\n        return {\n          _asyncComputed: {}\n        };\n      },\n\n      computed: {\n        $asyncComputed: function $asyncComputed() {\n          return this.$data._asyncComputed;\n        }\n      },\n      beforeCreate: function beforeCreate() {\n        var asyncComputed = this.$options.asyncComputed || {};\n\n        if (!Object.keys(asyncComputed).length) return;\n\n        for (var key in asyncComputed) {\n          var getter = getterFn(key, asyncComputed[key]);\n          this.$options.computed[prefix + key] = getter;\n        }\n\n        this.$options.data = initDataWithAsyncComputed(this.$options, pluginOptions);\n      },\n      created: function created() {\n        for (var key in this.$options.asyncComputed || {}) {\n          var item = this.$options.asyncComputed[key],\n              value = generateDefault.call(this, item, pluginOptions);\n          if (isComputedLazy(item)) {\n            silentSetLazy(this, key, value);\n          } else {\n            this[key] = value;\n          }\n        }\n\n        for (var _key in this.$options.asyncComputed || {}) {\n          handleAsyncComputedPropetyChanges(this, _key, pluginOptions, Vue);\n        }\n      }\n    });\n  }\n};\n\nfunction handleAsyncComputedPropetyChanges(vm, key, pluginOptions, Vue) {\n  var promiseId = 0;\n  var watcher = function watcher(newPromise) {\n    var thisPromise = ++promiseId;\n\n    if (shouldNotUpdate(newPromise)) return;\n\n    if (!newPromise || !newPromise.then) {\n      newPromise = Promise.resolve(newPromise);\n    }\n    setAsyncState(vm, key, 'updating');\n\n    newPromise.then(function (value) {\n      if (thisPromise !== promiseId) return;\n      setAsyncState(vm, key, 'success');\n      vm[key] = value;\n    }).catch(function (err) {\n      if (thisPromise !== promiseId) return;\n\n      setAsyncState(vm, key, 'error');\n      Vue.set(vm.$data._asyncComputed[key], 'exception', err);\n      if (pluginOptions.errorHandler === false) return;\n\n      var handler = pluginOptions.errorHandler === undefined ? console.error.bind(console, 'Error evaluating async computed property:') : pluginOptions.errorHandler;\n\n      if (pluginOptions.useRawError) {\n        handler(err, vm, err.stack);\n      } else {\n        handler(err.stack);\n      }\n    });\n  };\n  Vue.set(vm.$data._asyncComputed, key, {\n    exception: null,\n    update: function update() {\n      if (!vm._isDestroyed) {\n        watcher(getterOnly(vm.$options.asyncComputed[key]).apply(vm));\n      }\n    }\n  });\n  setAsyncState(vm, key, 'updating');\n  vm.$watch(prefix + key, watcher, { immediate: true });\n}\n\nfunction initDataWithAsyncComputed(options, pluginOptions) {\n  var optionData = options.data;\n  var asyncComputed = options.asyncComputed || {};\n\n  return function vueAsyncComputedInjectedDataFn(vm) {\n    var data = (typeof optionData === 'function' ? optionData.call(this, vm) : optionData) || {};\n    for (var key in asyncComputed) {\n      var item = this.$options.asyncComputed[key];\n\n      var value = generateDefault.call(this, item, pluginOptions);\n      if (isComputedLazy(item)) {\n        initLazy(data, key, value);\n        this.$options.computed[key] = makeLazyComputed(key);\n      } else {\n        data[key] = value;\n      }\n    }\n    return data;\n  };\n}\n\nfunction getterFn(key, fn) {\n  if (typeof fn === 'function') return fn;\n\n  var getter = fn.get;\n\n  if (hasOwnProperty(fn, 'watch')) {\n    getter = getWatchedGetter(fn);\n  }\n\n  if (hasOwnProperty(fn, 'shouldUpdate')) {\n    getter = getGetterWithShouldUpdate(fn, getter);\n  }\n\n  if (isComputedLazy(fn)) {\n    var nonLazy = getter;\n    getter = function lazyGetter() {\n      if (isLazyActive(this, key)) {\n        return nonLazy.call(this);\n      } else {\n        return silentGetLazy(this, key);\n      }\n    };\n  }\n  return getter;\n}\n\nfunction generateDefault(fn, pluginOptions) {\n  var defaultValue = null;\n\n  if ('default' in fn) {\n    defaultValue = fn.default;\n  } else if ('default' in pluginOptions) {\n    defaultValue = pluginOptions.default;\n  }\n\n  if (typeof defaultValue === 'function') {\n    return defaultValue.call(this);\n  } else {\n    return defaultValue;\n  }\n}\n\n/* istanbul ignore if */\nif (typeof window !== 'undefined' && window.Vue) {\n  // Auto install in dist mode\n  window.Vue.use(AsyncComputed);\n}\n\nexport default AsyncComputed;\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar getOwnPropertyDescriptors = Object.getOwnPropertyDescriptors ||\n  function getOwnPropertyDescriptors(obj) {\n    var keys = Object.keys(obj);\n    var descriptors = {};\n    for (var i = 0; i < keys.length; i++) {\n      descriptors[keys[i]] = Object.getOwnPropertyDescriptor(obj, keys[i]);\n    }\n    return descriptors;\n  };\n\nvar formatRegExp = /%[sdj%]/g;\nexports.format = function(f) {\n  if (!isString(f)) {\n    var objects = [];\n    for (var i = 0; i < arguments.length; i++) {\n      objects.push(inspect(arguments[i]));\n    }\n    return objects.join(' ');\n  }\n\n  var i = 1;\n  var args = arguments;\n  var len = args.length;\n  var str = String(f).replace(formatRegExp, function(x) {\n    if (x === '%%') return '%';\n    if (i >= len) return x;\n    switch (x) {\n      case '%s': return String(args[i++]);\n      case '%d': return Number(args[i++]);\n      case '%j':\n        try {\n          return JSON.stringify(args[i++]);\n        } catch (_) {\n          return '[Circular]';\n        }\n      default:\n        return x;\n    }\n  });\n  for (var x = args[i]; i < len; x = args[++i]) {\n    if (isNull(x) || !isObject(x)) {\n      str += ' ' + x;\n    } else {\n      str += ' ' + inspect(x);\n    }\n  }\n  return str;\n};\n\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nexports.deprecate = function(fn, msg) {\n  if (typeof process !== 'undefined' && process.noDeprecation === true) {\n    return fn;\n  }\n\n  // Allow for deprecating things in the process of starting up.\n  if (typeof process === 'undefined') {\n    return function() {\n      return exports.deprecate(fn, msg).apply(this, arguments);\n    };\n  }\n\n  var warned = false;\n  function deprecated() {\n    if (!warned) {\n      if (process.throwDeprecation) {\n        throw new Error(msg);\n      } else if (process.traceDeprecation) {\n        console.trace(msg);\n      } else {\n        console.error(msg);\n      }\n      warned = true;\n    }\n    return fn.apply(this, arguments);\n  }\n\n  return deprecated;\n};\n\n\nvar debugs = {};\nvar debugEnviron;\nexports.debuglog = function(set) {\n  if (isUndefined(debugEnviron))\n    debugEnviron = process.env.NODE_DEBUG || '';\n  set = set.toUpperCase();\n  if (!debugs[set]) {\n    if (new RegExp('\\\\b' + set + '\\\\b', 'i').test(debugEnviron)) {\n      var pid = process.pid;\n      debugs[set] = function() {\n        var msg = exports.format.apply(exports, arguments);\n        console.error('%s %d: %s', set, pid, msg);\n      };\n    } else {\n      debugs[set] = function() {};\n    }\n  }\n  return debugs[set];\n};\n\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nfunction inspect(obj, opts) {\n  // default options\n  var ctx = {\n    seen: [],\n    stylize: stylizeNoColor\n  };\n  // legacy...\n  if (arguments.length >= 3) ctx.depth = arguments[2];\n  if (arguments.length >= 4) ctx.colors = arguments[3];\n  if (isBoolean(opts)) {\n    // legacy...\n    ctx.showHidden = opts;\n  } else if (opts) {\n    // got an \"options\" object\n    exports._extend(ctx, opts);\n  }\n  // set default options\n  if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n  if (isUndefined(ctx.depth)) ctx.depth = 2;\n  if (isUndefined(ctx.colors)) ctx.colors = false;\n  if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n  if (ctx.colors) ctx.stylize = stylizeWithColor;\n  return formatValue(ctx, obj, ctx.depth);\n}\nexports.inspect = inspect;\n\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect.colors = {\n  'bold' : [1, 22],\n  'italic' : [3, 23],\n  'underline' : [4, 24],\n  'inverse' : [7, 27],\n  'white' : [37, 39],\n  'grey' : [90, 39],\n  'black' : [30, 39],\n  'blue' : [34, 39],\n  'cyan' : [36, 39],\n  'green' : [32, 39],\n  'magenta' : [35, 39],\n  'red' : [31, 39],\n  'yellow' : [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect.styles = {\n  'special': 'cyan',\n  'number': 'yellow',\n  'boolean': 'yellow',\n  'undefined': 'grey',\n  'null': 'bold',\n  'string': 'green',\n  'date': 'magenta',\n  // \"name\": intentionally not styling\n  'regexp': 'red'\n};\n\n\nfunction stylizeWithColor(str, styleType) {\n  var style = inspect.styles[styleType];\n\n  if (style) {\n    return '\\u001b[' + inspect.colors[style][0] + 'm' + str +\n           '\\u001b[' + inspect.colors[style][1] + 'm';\n  } else {\n    return str;\n  }\n}\n\n\nfunction stylizeNoColor(str, styleType) {\n  return str;\n}\n\n\nfunction arrayToHash(array) {\n  var hash = {};\n\n  array.forEach(function(val, idx) {\n    hash[val] = true;\n  });\n\n  return hash;\n}\n\n\nfunction formatValue(ctx, value, recurseTimes) {\n  // Provide a hook for user-specified inspect functions.\n  // Check that value is an object with an inspect function on it\n  if (ctx.customInspect &&\n      value &&\n      isFunction(value.inspect) &&\n      // Filter out the util module, it's inspect function is special\n      value.inspect !== exports.inspect &&\n      // Also filter out any prototype objects using the circular check.\n      !(value.constructor && value.constructor.prototype === value)) {\n    var ret = value.inspect(recurseTimes, ctx);\n    if (!isString(ret)) {\n      ret = formatValue(ctx, ret, recurseTimes);\n    }\n    return ret;\n  }\n\n  // Primitive types cannot have properties\n  var primitive = formatPrimitive(ctx, value);\n  if (primitive) {\n    return primitive;\n  }\n\n  // Look up the keys of the object.\n  var keys = Object.keys(value);\n  var visibleKeys = arrayToHash(keys);\n\n  if (ctx.showHidden) {\n    keys = Object.getOwnPropertyNames(value);\n  }\n\n  // IE doesn't make error fields non-enumerable\n  // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n  if (isError(value)\n      && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n    return formatError(value);\n  }\n\n  // Some type of object without properties can be shortcutted.\n  if (keys.length === 0) {\n    if (isFunction(value)) {\n      var name = value.name ? ': ' + value.name : '';\n      return ctx.stylize('[Function' + name + ']', 'special');\n    }\n    if (isRegExp(value)) {\n      return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n    }\n    if (isDate(value)) {\n      return ctx.stylize(Date.prototype.toString.call(value), 'date');\n    }\n    if (isError(value)) {\n      return formatError(value);\n    }\n  }\n\n  var base = '', array = false, braces = ['{', '}'];\n\n  // Make Array say that they are Array\n  if (isArray(value)) {\n    array = true;\n    braces = ['[', ']'];\n  }\n\n  // Make functions say that they are functions\n  if (isFunction(value)) {\n    var n = value.name ? ': ' + value.name : '';\n    base = ' [Function' + n + ']';\n  }\n\n  // Make RegExps say that they are RegExps\n  if (isRegExp(value)) {\n    base = ' ' + RegExp.prototype.toString.call(value);\n  }\n\n  // Make dates with properties first say the date\n  if (isDate(value)) {\n    base = ' ' + Date.prototype.toUTCString.call(value);\n  }\n\n  // Make error with message first say the error\n  if (isError(value)) {\n    base = ' ' + formatError(value);\n  }\n\n  if (keys.length === 0 && (!array || value.length == 0)) {\n    return braces[0] + base + braces[1];\n  }\n\n  if (recurseTimes < 0) {\n    if (isRegExp(value)) {\n      return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n    } else {\n      return ctx.stylize('[Object]', 'special');\n    }\n  }\n\n  ctx.seen.push(value);\n\n  var output;\n  if (array) {\n    output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n  } else {\n    output = keys.map(function(key) {\n      return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n    });\n  }\n\n  ctx.seen.pop();\n\n  return reduceToSingleString(output, base, braces);\n}\n\n\nfunction formatPrimitive(ctx, value) {\n  if (isUndefined(value))\n    return ctx.stylize('undefined', 'undefined');\n  if (isString(value)) {\n    var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n                                             .replace(/'/g, \"\\\\'\")\n                                             .replace(/\\\\\"/g, '\"') + '\\'';\n    return ctx.stylize(simple, 'string');\n  }\n  if (isNumber(value))\n    return ctx.stylize('' + value, 'number');\n  if (isBoolean(value))\n    return ctx.stylize('' + value, 'boolean');\n  // For some reason typeof null is \"object\", so special case here.\n  if (isNull(value))\n    return ctx.stylize('null', 'null');\n}\n\n\nfunction formatError(value) {\n  return '[' + Error.prototype.toString.call(value) + ']';\n}\n\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n  var output = [];\n  for (var i = 0, l = value.length; i < l; ++i) {\n    if (hasOwnProperty(value, String(i))) {\n      output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n          String(i), true));\n    } else {\n      output.push('');\n    }\n  }\n  keys.forEach(function(key) {\n    if (!key.match(/^\\d+$/)) {\n      output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n          key, true));\n    }\n  });\n  return output;\n}\n\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n  var name, str, desc;\n  desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n  if (desc.get) {\n    if (desc.set) {\n      str = ctx.stylize('[Getter/Setter]', 'special');\n    } else {\n      str = ctx.stylize('[Getter]', 'special');\n    }\n  } else {\n    if (desc.set) {\n      str = ctx.stylize('[Setter]', 'special');\n    }\n  }\n  if (!hasOwnProperty(visibleKeys, key)) {\n    name = '[' + key + ']';\n  }\n  if (!str) {\n    if (ctx.seen.indexOf(desc.value) < 0) {\n      if (isNull(recurseTimes)) {\n        str = formatValue(ctx, desc.value, null);\n      } else {\n        str = formatValue(ctx, desc.value, recurseTimes - 1);\n      }\n      if (str.indexOf('\\n') > -1) {\n        if (array) {\n          str = str.split('\\n').map(function(line) {\n            return '  ' + line;\n          }).join('\\n').substr(2);\n        } else {\n          str = '\\n' + str.split('\\n').map(function(line) {\n            return '   ' + line;\n          }).join('\\n');\n        }\n      }\n    } else {\n      str = ctx.stylize('[Circular]', 'special');\n    }\n  }\n  if (isUndefined(name)) {\n    if (array && key.match(/^\\d+$/)) {\n      return str;\n    }\n    name = JSON.stringify('' + key);\n    if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n      name = name.substr(1, name.length - 2);\n      name = ctx.stylize(name, 'name');\n    } else {\n      name = name.replace(/'/g, \"\\\\'\")\n                 .replace(/\\\\\"/g, '\"')\n                 .replace(/(^\"|\"$)/g, \"'\");\n      name = ctx.stylize(name, 'string');\n    }\n  }\n\n  return name + ': ' + str;\n}\n\n\nfunction reduceToSingleString(output, base, braces) {\n  var numLinesEst = 0;\n  var length = output.reduce(function(prev, cur) {\n    numLinesEst++;\n    if (cur.indexOf('\\n') >= 0) numLinesEst++;\n    return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n  }, 0);\n\n  if (length > 60) {\n    return braces[0] +\n           (base === '' ? '' : base + '\\n ') +\n           ' ' +\n           output.join(',\\n  ') +\n           ' ' +\n           braces[1];\n  }\n\n  return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nfunction isArray(ar) {\n  return Array.isArray(ar);\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n  return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n  return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n  return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n  return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n  return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n  return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n  return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n  return isObject(re) && objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n  return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n  return isObject(d) && objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\n\nfunction isError(e) {\n  return isObject(e) &&\n      (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\n\nfunction isFunction(arg) {\n  return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n  return arg === null ||\n         typeof arg === 'boolean' ||\n         typeof arg === 'number' ||\n         typeof arg === 'string' ||\n         typeof arg === 'symbol' ||  // ES6 symbol\n         typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = require('./support/isBuffer');\n\nfunction objectToString(o) {\n  return Object.prototype.toString.call(o);\n}\n\n\nfunction pad(n) {\n  return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\n              'Oct', 'Nov', 'Dec'];\n\n// 26 Feb 16:19:34\nfunction timestamp() {\n  var d = new Date();\n  var time = [pad(d.getHours()),\n              pad(d.getMinutes()),\n              pad(d.getSeconds())].join(':');\n  return [d.getDate(), months[d.getMonth()], time].join(' ');\n}\n\n\n// log is just a thin wrapper to console.log that prepends a timestamp\nexports.log = function() {\n  console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n};\n\n\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * The Function.prototype.inherits from lang.js rewritten as a standalone\n * function (not on Function.prototype). NOTE: If this file is to be loaded\n * during bootstrapping this function needs to be rewritten using some native\n * functions as prototype setup using normal JavaScript does not work as\n * expected during bootstrapping (see mirror.js in r114903).\n *\n * @param {function} ctor Constructor function which needs to inherit the\n *     prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nexports.inherits = require('inherits');\n\nexports._extend = function(origin, add) {\n  // Don't do anything if add isn't an object\n  if (!add || !isObject(add)) return origin;\n\n  var keys = Object.keys(add);\n  var i = keys.length;\n  while (i--) {\n    origin[keys[i]] = add[keys[i]];\n  }\n  return origin;\n};\n\nfunction hasOwnProperty(obj, prop) {\n  return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nvar kCustomPromisifiedSymbol = typeof Symbol !== 'undefined' ? Symbol('util.promisify.custom') : undefined;\n\nexports.promisify = function promisify(original) {\n  if (typeof original !== 'function')\n    throw new TypeError('The \"original\" argument must be of type Function');\n\n  if (kCustomPromisifiedSymbol && original[kCustomPromisifiedSymbol]) {\n    var fn = original[kCustomPromisifiedSymbol];\n    if (typeof fn !== 'function') {\n      throw new TypeError('The \"util.promisify.custom\" argument must be of type Function');\n    }\n    Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n      value: fn, enumerable: false, writable: false, configurable: true\n    });\n    return fn;\n  }\n\n  function fn() {\n    var promiseResolve, promiseReject;\n    var promise = new Promise(function (resolve, reject) {\n      promiseResolve = resolve;\n      promiseReject = reject;\n    });\n\n    var args = [];\n    for (var i = 0; i < arguments.length; i++) {\n      args.push(arguments[i]);\n    }\n    args.push(function (err, value) {\n      if (err) {\n        promiseReject(err);\n      } else {\n        promiseResolve(value);\n      }\n    });\n\n    try {\n      original.apply(this, args);\n    } catch (err) {\n      promiseReject(err);\n    }\n\n    return promise;\n  }\n\n  Object.setPrototypeOf(fn, Object.getPrototypeOf(original));\n\n  if (kCustomPromisifiedSymbol) Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n    value: fn, enumerable: false, writable: false, configurable: true\n  });\n  return Object.defineProperties(\n    fn,\n    getOwnPropertyDescriptors(original)\n  );\n}\n\nexports.promisify.custom = kCustomPromisifiedSymbol\n\nfunction callbackifyOnRejected(reason, cb) {\n  // `!reason` guard inspired by bluebird (Ref: https://goo.gl/t5IS6M).\n  // Because `null` is a special error value in callbacks which means \"no error\n  // occurred\", we error-wrap so the callback consumer can distinguish between\n  // \"the promise rejected with null\" or \"the promise fulfilled with undefined\".\n  if (!reason) {\n    var newReason = new Error('Promise was rejected with a falsy value');\n    newReason.reason = reason;\n    reason = newReason;\n  }\n  return cb(reason);\n}\n\nfunction callbackify(original) {\n  if (typeof original !== 'function') {\n    throw new TypeError('The \"original\" argument must be of type Function');\n  }\n\n  // We DO NOT return the promise as it gives the user a false sense that\n  // the promise is actually somehow related to the callback's execution\n  // and that the callback throwing will reject the promise.\n  function callbackified() {\n    var args = [];\n    for (var i = 0; i < arguments.length; i++) {\n      args.push(arguments[i]);\n    }\n\n    var maybeCb = args.pop();\n    if (typeof maybeCb !== 'function') {\n      throw new TypeError('The last argument must be of type Function');\n    }\n    var self = this;\n    var cb = function() {\n      return maybeCb.apply(self, arguments);\n    };\n    // In true node style we process the callback on `nextTick` with all the\n    // implications (stack, `uncaughtException`, `async_hooks`)\n    original.apply(this, args)\n      .then(function(ret) { process.nextTick(cb, null, ret) },\n            function(rej) { process.nextTick(callbackifyOnRejected, rej, cb) });\n  }\n\n  Object.setPrototypeOf(callbackified, Object.getPrototypeOf(original));\n  Object.defineProperties(callbackified,\n                          getOwnPropertyDescriptors(original));\n  return callbackified;\n}\nexports.callbackify = callbackify;\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","// Styles\nimport \"../../../src/components/VSkeletonLoader/VSkeletonLoader.sass\"; // Mixins\n\nimport Elevatable from '../../mixins/elevatable';\nimport Measurable from '../../mixins/measurable';\nimport Themeable from '../../mixins/themeable'; // Utilities\n\nimport mixins from '../../util/mixins';\nimport { getSlot } from '../../util/helpers';\n/* @vue/component */\n\nexport default mixins(Elevatable, Measurable, Themeable).extend({\n  name: 'VSkeletonLoader',\n  props: {\n    boilerplate: Boolean,\n    loading: Boolean,\n    tile: Boolean,\n    transition: String,\n    type: String,\n    types: {\n      type: Object,\n      default: () => ({})\n    }\n  },\n  computed: {\n    attrs() {\n      if (!this.isLoading) return this.$attrs;\n      return !this.boilerplate ? {\n        'aria-busy': true,\n        'aria-live': 'polite',\n        role: 'alert',\n        ...this.$attrs\n      } : {};\n    },\n\n    classes() {\n      return {\n        'v-skeleton-loader--boilerplate': this.boilerplate,\n        'v-skeleton-loader--is-loading': this.isLoading,\n        'v-skeleton-loader--tile': this.tile,\n        ...this.themeClasses,\n        ...this.elevationClasses\n      };\n    },\n\n    isLoading() {\n      return !('default' in this.$scopedSlots) || this.loading;\n    },\n\n    rootTypes() {\n      return {\n        actions: 'button@2',\n        article: 'heading, paragraph',\n        avatar: 'avatar',\n        button: 'button',\n        card: 'image, card-heading',\n        'card-avatar': 'image, list-item-avatar',\n        'card-heading': 'heading',\n        chip: 'chip',\n        'date-picker': 'list-item, card-heading, divider, date-picker-options, date-picker-days, actions',\n        'date-picker-options': 'text, avatar@2',\n        'date-picker-days': 'avatar@28',\n        heading: 'heading',\n        image: 'image',\n        'list-item': 'text',\n        'list-item-avatar': 'avatar, text',\n        'list-item-two-line': 'sentences',\n        'list-item-avatar-two-line': 'avatar, sentences',\n        'list-item-three-line': 'paragraph',\n        'list-item-avatar-three-line': 'avatar, paragraph',\n        paragraph: 'text@3',\n        sentences: 'text@2',\n        table: 'table-heading, table-thead, table-tbody, table-tfoot',\n        'table-heading': 'heading, text',\n        'table-thead': 'heading@6',\n        'table-tbody': 'table-row-divider@6',\n        'table-row-divider': 'table-row, divider',\n        'table-row': 'table-cell@6',\n        'table-cell': 'text',\n        'table-tfoot': 'text@2, avatar@2',\n        text: 'text',\n        ...this.types\n      };\n    }\n\n  },\n  methods: {\n    genBone(text, children) {\n      return this.$createElement('div', {\n        staticClass: `v-skeleton-loader__${text} v-skeleton-loader__bone`\n      }, children);\n    },\n\n    genBones(bone) {\n      // e.g. 'text@3'\n      const [type, length] = bone.split('@');\n\n      const generator = () => this.genStructure(type); // Generate a length array based upon\n      // value after @ in the bone string\n\n\n      return Array.from({\n        length\n      }).map(generator);\n    },\n\n    // Fix type when this is merged\n    // https://github.com/microsoft/TypeScript/pull/33050\n    genStructure(type) {\n      let children = [];\n      type = type || this.type || '';\n      const bone = this.rootTypes[type] || ''; // End of recursion, do nothing\n\n      /* eslint-disable-next-line no-empty, brace-style */\n\n      if (type === bone) {} // Array of values - e.g. 'heading, paragraph, text@2'\n      else if (type.indexOf(',') > -1) return this.mapBones(type); // Array of values - e.g. 'paragraph@4'\n        else if (type.indexOf('@') > -1) return this.genBones(type); // Array of values - e.g. 'card@2'\n          else if (bone.indexOf(',') > -1) children = this.mapBones(bone); // Array of values - e.g. 'list-item@2'\n            else if (bone.indexOf('@') > -1) children = this.genBones(bone); // Single value - e.g. 'card-heading'\n              else if (bone) children.push(this.genStructure(bone));\n\n      return [this.genBone(type, children)];\n    },\n\n    genSkeleton() {\n      const children = [];\n      if (!this.isLoading) children.push(getSlot(this));else children.push(this.genStructure());\n      /* istanbul ignore else */\n\n      if (!this.transition) return children;\n      /* istanbul ignore next */\n\n      return this.$createElement('transition', {\n        props: {\n          name: this.transition\n        },\n        // Only show transition when\n        // content has been loaded\n        on: {\n          afterEnter: this.resetStyles,\n          beforeEnter: this.onBeforeEnter,\n          beforeLeave: this.onBeforeLeave,\n          leaveCancelled: this.resetStyles\n        }\n      }, children);\n    },\n\n    mapBones(bones) {\n      // Remove spaces and return array of structures\n      return bones.replace(/\\s/g, '').split(',').map(this.genStructure);\n    },\n\n    onBeforeEnter(el) {\n      this.resetStyles(el);\n      if (!this.isLoading) return;\n      el._initialStyle = {\n        display: el.style.display,\n        transition: el.style.transition\n      };\n      el.style.setProperty('transition', 'none', 'important');\n    },\n\n    onBeforeLeave(el) {\n      el.style.setProperty('display', 'none', 'important');\n    },\n\n    resetStyles(el) {\n      if (!el._initialStyle) return;\n      el.style.display = el._initialStyle.display || '';\n      el.style.transition = el._initialStyle.transition;\n      delete el._initialStyle;\n    }\n\n  },\n\n  render(h) {\n    return h('div', {\n      staticClass: 'v-skeleton-loader',\n      attrs: this.attrs,\n      on: this.$listeners,\n      class: this.classes,\n      style: this.isLoading ? this.measurableStyles : undefined\n    }, [this.genSkeleton()]);\n  }\n\n});\n//# sourceMappingURL=VSkeletonLoader.js.map","// fast apply, http://jsperf.lnkit.com/fast-apply/5\nmodule.exports = function (fn, args, that) {\n  var un = that === undefined;\n  switch (args.length) {\n    case 0: return un ? fn()\n                      : fn.call(that);\n    case 1: return un ? fn(args[0])\n                      : fn.call(that, args[0]);\n    case 2: return un ? fn(args[0], args[1])\n                      : fn.call(that, args[0], args[1]);\n    case 3: return un ? fn(args[0], args[1], args[2])\n                      : fn.call(that, args[0], args[1], args[2]);\n    case 4: return un ? fn(args[0], args[1], args[2], args[3])\n                      : fn.call(that, args[0], args[1], args[2], args[3]);\n  } return fn.apply(that, args);\n};\n","import Vue from 'vue';\nimport { consoleWarn } from '../../util/console';\n\nfunction generateWarning(child, parent) {\n  return () => consoleWarn(`The ${child} component must be used inside a ${parent}`);\n}\n\nexport function inject(namespace, child, parent) {\n  const defaultImpl = child && parent ? {\n    register: generateWarning(child, parent),\n    unregister: generateWarning(child, parent)\n  } : null;\n  return Vue.extend({\n    name: 'registrable-inject',\n    inject: {\n      [namespace]: {\n        default: defaultImpl\n      }\n    }\n  });\n}\nexport function provide(namespace, self = false) {\n  return Vue.extend({\n    name: 'registrable-provide',\n\n    provide() {\n      return {\n        [namespace]: self ? this : {\n          register: this.register,\n          unregister: this.unregister\n        }\n      };\n    }\n\n  });\n}\n//# sourceMappingURL=index.js.map","import VMenu from './VMenu';\nexport { VMenu };\nexport default VMenu;\n//# sourceMappingURL=index.js.map","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 dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n  return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n  object[key] = value;\n  return object;\n};\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 isFunction = require('./isFunction'),\n    isMasked = require('./_isMasked'),\n    isObject = require('./isObject'),\n    toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n    objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n  funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n  .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n *  else `false`.\n */\nfunction baseIsNative(value) {\n  if (!isObject(value) || isMasked(value)) {\n    return false;\n  }\n  var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n  return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","// Types\nimport Vue from 'vue';\n/* @vue/component */\n\nexport default Vue.extend({\n  name: 'v-list-item-icon',\n  functional: true,\n\n  render(h, {\n    data,\n    children\n  }) {\n    data.staticClass = `v-list-item__icon ${data.staticClass || ''}`.trim();\n    return h('div', data, children);\n  }\n\n});\n//# sourceMappingURL=VListItemIcon.js.map","/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\n\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\nexports.destroy = (() => {\n\tlet warned = false;\n\n\treturn () => {\n\t\tif (!warned) {\n\t\t\twarned = true;\n\t\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t\t}\n\t};\n})();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n\t'#0000CC',\n\t'#0000FF',\n\t'#0033CC',\n\t'#0033FF',\n\t'#0066CC',\n\t'#0066FF',\n\t'#0099CC',\n\t'#0099FF',\n\t'#00CC00',\n\t'#00CC33',\n\t'#00CC66',\n\t'#00CC99',\n\t'#00CCCC',\n\t'#00CCFF',\n\t'#3300CC',\n\t'#3300FF',\n\t'#3333CC',\n\t'#3333FF',\n\t'#3366CC',\n\t'#3366FF',\n\t'#3399CC',\n\t'#3399FF',\n\t'#33CC00',\n\t'#33CC33',\n\t'#33CC66',\n\t'#33CC99',\n\t'#33CCCC',\n\t'#33CCFF',\n\t'#6600CC',\n\t'#6600FF',\n\t'#6633CC',\n\t'#6633FF',\n\t'#66CC00',\n\t'#66CC33',\n\t'#9900CC',\n\t'#9900FF',\n\t'#9933CC',\n\t'#9933FF',\n\t'#99CC00',\n\t'#99CC33',\n\t'#CC0000',\n\t'#CC0033',\n\t'#CC0066',\n\t'#CC0099',\n\t'#CC00CC',\n\t'#CC00FF',\n\t'#CC3300',\n\t'#CC3333',\n\t'#CC3366',\n\t'#CC3399',\n\t'#CC33CC',\n\t'#CC33FF',\n\t'#CC6600',\n\t'#CC6633',\n\t'#CC9900',\n\t'#CC9933',\n\t'#CCCC00',\n\t'#CCCC33',\n\t'#FF0000',\n\t'#FF0033',\n\t'#FF0066',\n\t'#FF0099',\n\t'#FF00CC',\n\t'#FF00FF',\n\t'#FF3300',\n\t'#FF3333',\n\t'#FF3366',\n\t'#FF3399',\n\t'#FF33CC',\n\t'#FF33FF',\n\t'#FF6600',\n\t'#FF6633',\n\t'#FF9900',\n\t'#FF9933',\n\t'#FFCC00',\n\t'#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\n// eslint-disable-next-line complexity\nfunction useColors() {\n\t// NB: In an Electron preload script, document will be defined but not fully\n\t// initialized. Since we know we're in Chrome, we'll just detect this case\n\t// explicitly\n\tif (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n\t\treturn true;\n\t}\n\n\t// Internet Explorer and Edge do not support colors.\n\tif (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n\t\treturn false;\n\t}\n\n\t// Is webkit? http://stackoverflow.com/a/16459606/376773\n\t// document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\treturn (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n\t\t// Is firebug? http://stackoverflow.com/a/398120/376773\n\t\t(typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n\t\t// Is firefox >= v31?\n\t\t// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||\n\t\t// Double check webkit in userAgent just in case we are in a worker\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\targs[0] = (this.useColors ? '%c' : '') +\n\t\tthis.namespace +\n\t\t(this.useColors ? ' %c' : ' ') +\n\t\targs[0] +\n\t\t(this.useColors ? '%c ' : ' ') +\n\t\t'+' + module.exports.humanize(this.diff);\n\n\tif (!this.useColors) {\n\t\treturn;\n\t}\n\n\tconst c = 'color: ' + this.color;\n\targs.splice(1, 0, c, 'color: inherit');\n\n\t// The final \"%c\" is somewhat tricky, because there could be other\n\t// arguments passed either before or after the %c, so we need to\n\t// figure out the correct index to insert the CSS into\n\tlet index = 0;\n\tlet lastC = 0;\n\targs[0].replace(/%[a-zA-Z%]/g, match => {\n\t\tif (match === '%%') {\n\t\t\treturn;\n\t\t}\n\t\tindex++;\n\t\tif (match === '%c') {\n\t\t\t// We only are interested in the *last* %c\n\t\t\t// (the user may have provided their own)\n\t\t\tlastC = index;\n\t\t}\n\t});\n\n\targs.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.debug()` when available.\n * No-op when `console.debug` is not a \"function\".\n * If `console.debug` is not available, falls back\n * to `console.log`.\n *\n * @api public\n */\nexports.log = console.debug || console.log || (() => {});\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\ttry {\n\t\tif (namespaces) {\n\t\t\texports.storage.setItem('debug', namespaces);\n\t\t} else {\n\t\t\texports.storage.removeItem('debug');\n\t\t}\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\nfunction load() {\n\tlet r;\n\ttry {\n\t\tr = exports.storage.getItem('debug');\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n\n\t// If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\tif (!r && typeof process !== 'undefined' && 'env' in process) {\n\t\tr = process.env.DEBUG;\n\t}\n\n\treturn r;\n}\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n\ttry {\n\t\t// TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n\t\t// The Browser also has localStorage in the global context.\n\t\treturn localStorage;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n\ttry {\n\t\treturn JSON.stringify(v);\n\t} catch (error) {\n\t\treturn '[UnexpectedJSONParseError]: ' + error.message;\n\t}\n};\n","import VChip from './VChip';\nexport { VChip };\nexport default VChip;\n//# sourceMappingURL=index.js.map","const ECLevel = require('./error-correction-level')\r\n\r\nconst EC_BLOCKS_TABLE = [\r\n// L  M  Q  H\r\n  1, 1, 1, 1,\r\n  1, 1, 1, 1,\r\n  1, 1, 2, 2,\r\n  1, 2, 2, 4,\r\n  1, 2, 4, 4,\r\n  2, 4, 4, 4,\r\n  2, 4, 6, 5,\r\n  2, 4, 6, 6,\r\n  2, 5, 8, 8,\r\n  4, 5, 8, 8,\r\n  4, 5, 8, 11,\r\n  4, 8, 10, 11,\r\n  4, 9, 12, 16,\r\n  4, 9, 16, 16,\r\n  6, 10, 12, 18,\r\n  6, 10, 17, 16,\r\n  6, 11, 16, 19,\r\n  6, 13, 18, 21,\r\n  7, 14, 21, 25,\r\n  8, 16, 20, 25,\r\n  8, 17, 23, 25,\r\n  9, 17, 23, 34,\r\n  9, 18, 25, 30,\r\n  10, 20, 27, 32,\r\n  12, 21, 29, 35,\r\n  12, 23, 34, 37,\r\n  12, 25, 34, 40,\r\n  13, 26, 35, 42,\r\n  14, 28, 38, 45,\r\n  15, 29, 40, 48,\r\n  16, 31, 43, 51,\r\n  17, 33, 45, 54,\r\n  18, 35, 48, 57,\r\n  19, 37, 51, 60,\r\n  19, 38, 53, 63,\r\n  20, 40, 56, 66,\r\n  21, 43, 59, 70,\r\n  22, 45, 62, 74,\r\n  24, 47, 65, 77,\r\n  25, 49, 68, 81\r\n]\r\n\r\nconst EC_CODEWORDS_TABLE = [\r\n// L  M  Q  H\r\n  7, 10, 13, 17,\r\n  10, 16, 22, 28,\r\n  15, 26, 36, 44,\r\n  20, 36, 52, 64,\r\n  26, 48, 72, 88,\r\n  36, 64, 96, 112,\r\n  40, 72, 108, 130,\r\n  48, 88, 132, 156,\r\n  60, 110, 160, 192,\r\n  72, 130, 192, 224,\r\n  80, 150, 224, 264,\r\n  96, 176, 260, 308,\r\n  104, 198, 288, 352,\r\n  120, 216, 320, 384,\r\n  132, 240, 360, 432,\r\n  144, 280, 408, 480,\r\n  168, 308, 448, 532,\r\n  180, 338, 504, 588,\r\n  196, 364, 546, 650,\r\n  224, 416, 600, 700,\r\n  224, 442, 644, 750,\r\n  252, 476, 690, 816,\r\n  270, 504, 750, 900,\r\n  300, 560, 810, 960,\r\n  312, 588, 870, 1050,\r\n  336, 644, 952, 1110,\r\n  360, 700, 1020, 1200,\r\n  390, 728, 1050, 1260,\r\n  420, 784, 1140, 1350,\r\n  450, 812, 1200, 1440,\r\n  480, 868, 1290, 1530,\r\n  510, 924, 1350, 1620,\r\n  540, 980, 1440, 1710,\r\n  570, 1036, 1530, 1800,\r\n  570, 1064, 1590, 1890,\r\n  600, 1120, 1680, 1980,\r\n  630, 1204, 1770, 2100,\r\n  660, 1260, 1860, 2220,\r\n  720, 1316, 1950, 2310,\r\n  750, 1372, 2040, 2430\r\n]\r\n\r\n/**\r\n * Returns the number of error correction block that the QR Code should contain\r\n * for the specified version and error correction level.\r\n *\r\n * @param  {Number} version              QR Code version\r\n * @param  {Number} errorCorrectionLevel Error correction level\r\n * @return {Number}                      Number of error correction blocks\r\n */\r\nexports.getBlocksCount = function getBlocksCount (version, errorCorrectionLevel) {\r\n  switch (errorCorrectionLevel) {\r\n    case ECLevel.L:\r\n      return EC_BLOCKS_TABLE[(version - 1) * 4 + 0]\r\n    case ECLevel.M:\r\n      return EC_BLOCKS_TABLE[(version - 1) * 4 + 1]\r\n    case ECLevel.Q:\r\n      return EC_BLOCKS_TABLE[(version - 1) * 4 + 2]\r\n    case ECLevel.H:\r\n      return EC_BLOCKS_TABLE[(version - 1) * 4 + 3]\r\n    default:\r\n      return undefined\r\n  }\r\n}\r\n\r\n/**\r\n * Returns the number of error correction codewords to use for the specified\r\n * version and error correction level.\r\n *\r\n * @param  {Number} version              QR Code version\r\n * @param  {Number} errorCorrectionLevel Error correction level\r\n * @return {Number}                      Number of error correction codewords\r\n */\r\nexports.getTotalCodewordsCount = function getTotalCodewordsCount (version, errorCorrectionLevel) {\r\n  switch (errorCorrectionLevel) {\r\n    case ECLevel.L:\r\n      return EC_CODEWORDS_TABLE[(version - 1) * 4 + 0]\r\n    case ECLevel.M:\r\n      return EC_CODEWORDS_TABLE[(version - 1) * 4 + 1]\r\n    case ECLevel.Q:\r\n      return EC_CODEWORDS_TABLE[(version - 1) * 4 + 2]\r\n    case ECLevel.H:\r\n      return EC_CODEWORDS_TABLE[(version - 1) * 4 + 3]\r\n    default:\r\n      return undefined\r\n  }\r\n}\r\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.StorageWrapper = exports.MemoryStorage = void 0;\nclass MemoryStorage {\n    constructor() {\n        this.store = {};\n    }\n    getItem(key) {\n        return Promise.resolve(this.store[key]);\n    }\n    setItem(key, value) {\n        return Promise.resolve(this.store[key] = value);\n    }\n    removeItem(key) {\n        const value = this.store[key];\n        delete this.store[key];\n        return Promise.resolve(value);\n    }\n}\nexports.MemoryStorage = MemoryStorage;\nclass StorageWrapper {\n    constructor(storage) {\n        this.storage = storage;\n    }\n    getItem(key) {\n        return Promise.resolve(this.storage.getItem(key));\n    }\n    setItem(key, value) {\n        return Promise.resolve(this.storage.setItem(key, value));\n    }\n    removeItem(key) {\n        return Promise.resolve(this.storage.removeItem(key));\n    }\n}\nexports.StorageWrapper = StorageWrapper;\n//# sourceMappingURL=storage.js.map","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n  return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = createDebug.debug = createDebug['default'] = createDebug;\nexports.coerce = coerce;\nexports.disable = disable;\nexports.enable = enable;\nexports.enabled = enabled;\nexports.humanize = require('ms');\n\n/**\n * Active `debug` instances.\n */\nexports.instances = [];\n\n/**\n * The currently active debug mode names, and names to skip.\n */\n\nexports.names = [];\nexports.skips = [];\n\n/**\n * Map of special \"%n\" handling functions, for the debug \"format\" argument.\n *\n * Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n */\n\nexports.formatters = {};\n\n/**\n * Select a color.\n * @param {String} namespace\n * @return {Number}\n * @api private\n */\n\nfunction selectColor(namespace) {\n  var hash = 0, i;\n\n  for (i in namespace) {\n    hash  = ((hash << 5) - hash) + namespace.charCodeAt(i);\n    hash |= 0; // Convert to 32bit integer\n  }\n\n  return exports.colors[Math.abs(hash) % exports.colors.length];\n}\n\n/**\n * Create a debugger with the given `namespace`.\n *\n * @param {String} namespace\n * @return {Function}\n * @api public\n */\n\nfunction createDebug(namespace) {\n\n  var prevTime;\n\n  function debug() {\n    // disabled?\n    if (!debug.enabled) return;\n\n    var self = debug;\n\n    // set `diff` timestamp\n    var curr = +new Date();\n    var ms = curr - (prevTime || curr);\n    self.diff = ms;\n    self.prev = prevTime;\n    self.curr = curr;\n    prevTime = curr;\n\n    // turn the `arguments` into a proper Array\n    var args = new Array(arguments.length);\n    for (var i = 0; i < args.length; i++) {\n      args[i] = arguments[i];\n    }\n\n    args[0] = exports.coerce(args[0]);\n\n    if ('string' !== typeof args[0]) {\n      // anything else let's inspect with %O\n      args.unshift('%O');\n    }\n\n    // apply any `formatters` transformations\n    var index = 0;\n    args[0] = args[0].replace(/%([a-zA-Z%])/g, function(match, format) {\n      // if we encounter an escaped % then don't increase the array index\n      if (match === '%%') return match;\n      index++;\n      var formatter = exports.formatters[format];\n      if ('function' === typeof formatter) {\n        var val = args[index];\n        match = formatter.call(self, val);\n\n        // now we need to remove `args[index]` since it's inlined in the `format`\n        args.splice(index, 1);\n        index--;\n      }\n      return match;\n    });\n\n    // apply env-specific formatting (colors, etc.)\n    exports.formatArgs.call(self, args);\n\n    var logFn = debug.log || exports.log || console.log.bind(console);\n    logFn.apply(self, args);\n  }\n\n  debug.namespace = namespace;\n  debug.enabled = exports.enabled(namespace);\n  debug.useColors = exports.useColors();\n  debug.color = selectColor(namespace);\n  debug.destroy = destroy;\n\n  // env-specific initialization logic for debug instances\n  if ('function' === typeof exports.init) {\n    exports.init(debug);\n  }\n\n  exports.instances.push(debug);\n\n  return debug;\n}\n\nfunction destroy () {\n  var index = exports.instances.indexOf(this);\n  if (index !== -1) {\n    exports.instances.splice(index, 1);\n    return true;\n  } else {\n    return false;\n  }\n}\n\n/**\n * Enables a debug mode by namespaces. This can include modes\n * separated by a colon and wildcards.\n *\n * @param {String} namespaces\n * @api public\n */\n\nfunction enable(namespaces) {\n  exports.save(namespaces);\n\n  exports.names = [];\n  exports.skips = [];\n\n  var i;\n  var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n  var len = split.length;\n\n  for (i = 0; i < len; i++) {\n    if (!split[i]) continue; // ignore empty strings\n    namespaces = split[i].replace(/\\*/g, '.*?');\n    if (namespaces[0] === '-') {\n      exports.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));\n    } else {\n      exports.names.push(new RegExp('^' + namespaces + '$'));\n    }\n  }\n\n  for (i = 0; i < exports.instances.length; i++) {\n    var instance = exports.instances[i];\n    instance.enabled = exports.enabled(instance.namespace);\n  }\n}\n\n/**\n * Disable debug output.\n *\n * @api public\n */\n\nfunction disable() {\n  exports.enable('');\n}\n\n/**\n * Returns true if the given mode name is enabled, false otherwise.\n *\n * @param {String} name\n * @return {Boolean}\n * @api public\n */\n\nfunction enabled(name) {\n  if (name[name.length - 1] === '*') {\n    return true;\n  }\n  var i, len;\n  for (i = 0, len = exports.skips.length; i < len; i++) {\n    if (exports.skips[i].test(name)) {\n      return false;\n    }\n  }\n  for (i = 0, len = exports.names.length; i < len; i++) {\n    if (exports.names[i].test(name)) {\n      return true;\n    }\n  }\n  return false;\n}\n\n/**\n * Coerce `val`.\n *\n * @param {Mixed} val\n * @return {Mixed}\n * @api private\n */\n\nfunction coerce(val) {\n  if (val instanceof Error) return val.stack || val.message;\n  return val;\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","import VProgressLinear from './VProgressLinear';\nexport { VProgressLinear };\nexport default VProgressLinear;\n//# sourceMappingURL=index.js.map","exports.f = require('./_wks');\n","var Stack = require('./_Stack'),\n    arrayEach = require('./_arrayEach'),\n    assignValue = require('./_assignValue'),\n    baseAssign = require('./_baseAssign'),\n    baseAssignIn = require('./_baseAssignIn'),\n    cloneBuffer = require('./_cloneBuffer'),\n    copyArray = require('./_copyArray'),\n    copySymbols = require('./_copySymbols'),\n    copySymbolsIn = require('./_copySymbolsIn'),\n    getAllKeys = require('./_getAllKeys'),\n    getAllKeysIn = require('./_getAllKeysIn'),\n    getTag = require('./_getTag'),\n    initCloneArray = require('./_initCloneArray'),\n    initCloneByTag = require('./_initCloneByTag'),\n    initCloneObject = require('./_initCloneObject'),\n    isArray = require('./isArray'),\n    isBuffer = require('./isBuffer'),\n    isMap = require('./isMap'),\n    isObject = require('./isObject'),\n    isSet = require('./isSet'),\n    keys = require('./keys'),\n    keysIn = require('./keysIn');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n    CLONE_FLAT_FLAG = 2,\n    CLONE_SYMBOLS_FLAG = 4;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    arrayTag = '[object Array]',\n    boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    errorTag = '[object Error]',\n    funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    objectTag = '[object Object]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    symbolTag = '[object Symbol]',\n    weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]',\n    float32Tag = '[object Float32Array]',\n    float64Tag = '[object Float64Array]',\n    int8Tag = '[object Int8Array]',\n    int16Tag = '[object Int16Array]',\n    int32Tag = '[object Int32Array]',\n    uint8Tag = '[object Uint8Array]',\n    uint8ClampedTag = '[object Uint8ClampedArray]',\n    uint16Tag = '[object Uint16Array]',\n    uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n *  1 - Deep clone\n *  2 - Flatten inherited properties\n *  4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, bitmask, customizer, key, object, stack) {\n  var result,\n      isDeep = bitmask & CLONE_DEEP_FLAG,\n      isFlat = bitmask & CLONE_FLAT_FLAG,\n      isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n  if (customizer) {\n    result = object ? customizer(value, key, object, stack) : customizer(value);\n  }\n  if (result !== undefined) {\n    return result;\n  }\n  if (!isObject(value)) {\n    return value;\n  }\n  var isArr = isArray(value);\n  if (isArr) {\n    result = initCloneArray(value);\n    if (!isDeep) {\n      return copyArray(value, result);\n    }\n  } else {\n    var tag = getTag(value),\n        isFunc = tag == funcTag || tag == genTag;\n\n    if (isBuffer(value)) {\n      return cloneBuffer(value, isDeep);\n    }\n    if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n      result = (isFlat || isFunc) ? {} : initCloneObject(value);\n      if (!isDeep) {\n        return isFlat\n          ? copySymbolsIn(value, baseAssignIn(result, value))\n          : copySymbols(value, baseAssign(result, value));\n      }\n    } else {\n      if (!cloneableTags[tag]) {\n        return object ? value : {};\n      }\n      result = initCloneByTag(value, tag, isDeep);\n    }\n  }\n  // Check for circular references and return its corresponding clone.\n  stack || (stack = new Stack);\n  var stacked = stack.get(value);\n  if (stacked) {\n    return stacked;\n  }\n  stack.set(value, result);\n\n  if (isSet(value)) {\n    value.forEach(function(subValue) {\n      result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n    });\n  } else if (isMap(value)) {\n    value.forEach(function(subValue, key) {\n      result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n    });\n  }\n\n  var keysFunc = isFull\n    ? (isFlat ? getAllKeysIn : getAllKeys)\n    : (isFlat ? keysIn : keys);\n\n  var props = isArr ? undefined : keysFunc(value);\n  arrayEach(props || value, function(subValue, key) {\n    if (props) {\n      key = subValue;\n      subValue = value[key];\n    }\n    // Recursively populate clone (susceptible to call stack limits).\n    assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n  });\n  return result;\n}\n\nmodule.exports = baseClone;\n","// 21.2.5.3 get RegExp.prototype.flags()\nif (require('./_descriptors') && /./g.flags != 'g') require('./_object-dp').f(RegExp.prototype, 'flags', {\n  configurable: true,\n  get: require('./_flags')\n});\n","// Extensions\nimport { BaseItemGroup } from '../../components/VItemGroup/VItemGroup';\n/* @vue/component */\n\nexport default BaseItemGroup.extend({\n  name: 'button-group',\n\n  provide() {\n    return {\n      btnToggle: this\n    };\n  },\n\n  computed: {\n    classes() {\n      return BaseItemGroup.options.computed.classes.call(this);\n    }\n\n  },\n  methods: {\n    // Isn't being passed down through types\n    genData: BaseItemGroup.options.methods.genData\n  }\n});\n//# sourceMappingURL=index.js.map","var $export = require('./_export');\nvar fails = require('./_fails');\nvar defined = require('./_defined');\nvar quot = /\"/g;\n// B.2.3.2.1 CreateHTML(string, tag, attribute, value)\nvar createHTML = function (string, tag, attribute, value) {\n  var S = String(defined(string));\n  var p1 = '<' + tag;\n  if (attribute !== '') p1 += ' ' + attribute + '=\"' + String(value).replace(quot, '&quot;') + '\"';\n  return p1 + '>' + S + '</' + tag + '>';\n};\nmodule.exports = function (NAME, exec) {\n  var O = {};\n  O[NAME] = exec(createHTML);\n  $export($export.P + $export.F * fails(function () {\n    var test = ''[NAME]('\"');\n    return test !== test.toLowerCase() || test.split('\"').length > 3;\n  }), 'String', O);\n};\n","'use strict';\n\nvar anObject = require('./_an-object');\nvar sameValue = require('./_same-value');\nvar regExpExec = require('./_regexp-exec-abstract');\n\n// @@search logic\nrequire('./_fix-re-wks')('search', 1, function (defined, SEARCH, $search, maybeCallNative) {\n  return [\n    // `String.prototype.search` method\n    // https://tc39.github.io/ecma262/#sec-string.prototype.search\n    function search(regexp) {\n      var O = defined(this);\n      var fn = regexp == undefined ? undefined : regexp[SEARCH];\n      return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[SEARCH](String(O));\n    },\n    // `RegExp.prototype[@@search]` method\n    // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@search\n    function (regexp) {\n      var res = maybeCallNative($search, regexp, this);\n      if (res.done) return res.value;\n      var rx = anObject(regexp);\n      var S = String(this);\n      var previousLastIndex = rx.lastIndex;\n      if (!sameValue(previousLastIndex, 0)) rx.lastIndex = 0;\n      var result = regExpExec(rx, S);\n      if (!sameValue(rx.lastIndex, previousLastIndex)) rx.lastIndex = previousLastIndex;\n      return result === null ? -1 : result.index;\n    }\n  ];\n});\n","// Mixins\nimport Colorable from '../colorable';\nimport Themeable from '../themeable';\nimport { inject as RegistrableInject } from '../registrable'; // Utilities\n\nimport { deepEqual } from '../../util/helpers';\nimport { consoleError } from '../../util/console';\nimport mixins from '../../util/mixins';\nconst baseMixins = mixins(Colorable, RegistrableInject('form'), Themeable);\n/* @vue/component */\n\nexport default baseMixins.extend({\n  name: 'validatable',\n  props: {\n    disabled: Boolean,\n    error: Boolean,\n    errorCount: {\n      type: [Number, String],\n      default: 1\n    },\n    errorMessages: {\n      type: [String, Array],\n      default: () => []\n    },\n    messages: {\n      type: [String, Array],\n      default: () => []\n    },\n    readonly: Boolean,\n    rules: {\n      type: Array,\n      default: () => []\n    },\n    success: Boolean,\n    successMessages: {\n      type: [String, Array],\n      default: () => []\n    },\n    validateOnBlur: Boolean,\n    value: {\n      required: false\n    }\n  },\n\n  data() {\n    return {\n      errorBucket: [],\n      hasColor: false,\n      hasFocused: false,\n      hasInput: false,\n      isFocused: false,\n      isResetting: false,\n      lazyValue: this.value,\n      valid: false\n    };\n  },\n\n  computed: {\n    computedColor() {\n      if (this.isDisabled) return undefined;\n      if (this.color) return this.color; // It's assumed that if the input is on a\n      // dark background, the user will want to\n      // have a white color. If the entire app\n      // is setup to be dark, then they will\n      // like want to use their primary color\n\n      if (this.isDark && !this.appIsDark) return 'white';else return 'primary';\n    },\n\n    hasError() {\n      return this.internalErrorMessages.length > 0 || this.errorBucket.length > 0 || this.error;\n    },\n\n    // TODO: Add logic that allows the user to enable based\n    // upon a good validation\n    hasSuccess() {\n      return this.internalSuccessMessages.length > 0 || this.success;\n    },\n\n    externalError() {\n      return this.internalErrorMessages.length > 0 || this.error;\n    },\n\n    hasMessages() {\n      return this.validationTarget.length > 0;\n    },\n\n    hasState() {\n      if (this.isDisabled) return false;\n      return this.hasSuccess || this.shouldValidate && this.hasError;\n    },\n\n    internalErrorMessages() {\n      return this.genInternalMessages(this.errorMessages);\n    },\n\n    internalMessages() {\n      return this.genInternalMessages(this.messages);\n    },\n\n    internalSuccessMessages() {\n      return this.genInternalMessages(this.successMessages);\n    },\n\n    internalValue: {\n      get() {\n        return this.lazyValue;\n      },\n\n      set(val) {\n        this.lazyValue = val;\n        this.$emit('input', val);\n      }\n\n    },\n\n    isDisabled() {\n      return this.disabled || !!this.form && this.form.disabled;\n    },\n\n    isInteractive() {\n      return !this.isDisabled && !this.isReadonly;\n    },\n\n    isReadonly() {\n      return this.readonly || !!this.form && this.form.readonly;\n    },\n\n    shouldValidate() {\n      if (this.externalError) return true;\n      if (this.isResetting) return false;\n      return this.validateOnBlur ? this.hasFocused && !this.isFocused : this.hasInput || this.hasFocused;\n    },\n\n    validations() {\n      return this.validationTarget.slice(0, Number(this.errorCount));\n    },\n\n    validationState() {\n      if (this.isDisabled) return undefined;\n      if (this.hasError && this.shouldValidate) return 'error';\n      if (this.hasSuccess) return 'success';\n      if (this.hasColor) return this.computedColor;\n      return undefined;\n    },\n\n    validationTarget() {\n      if (this.internalErrorMessages.length > 0) {\n        return this.internalErrorMessages;\n      } else if (this.successMessages && this.successMessages.length > 0) {\n        return this.internalSuccessMessages;\n      } else if (this.messages && this.messages.length > 0) {\n        return this.internalMessages;\n      } else if (this.shouldValidate) {\n        return this.errorBucket;\n      } else return [];\n    }\n\n  },\n  watch: {\n    rules: {\n      handler(newVal, oldVal) {\n        if (deepEqual(newVal, oldVal)) return;\n        this.validate();\n      },\n\n      deep: true\n    },\n\n    internalValue() {\n      // If it's the first time we're setting input,\n      // mark it with hasInput\n      this.hasInput = true;\n      this.validateOnBlur || this.$nextTick(this.validate);\n    },\n\n    isFocused(val) {\n      // Should not check validation\n      // if disabled\n      if (!val && !this.isDisabled) {\n        this.hasFocused = true;\n        this.validateOnBlur && this.$nextTick(this.validate);\n      }\n    },\n\n    isResetting() {\n      setTimeout(() => {\n        this.hasInput = false;\n        this.hasFocused = false;\n        this.isResetting = false;\n        this.validate();\n      }, 0);\n    },\n\n    hasError(val) {\n      if (this.shouldValidate) {\n        this.$emit('update:error', val);\n      }\n    },\n\n    value(val) {\n      this.lazyValue = val;\n    }\n\n  },\n\n  beforeMount() {\n    this.validate();\n  },\n\n  created() {\n    this.form && this.form.register(this);\n  },\n\n  beforeDestroy() {\n    this.form && this.form.unregister(this);\n  },\n\n  methods: {\n    genInternalMessages(messages) {\n      if (!messages) return [];else if (Array.isArray(messages)) return messages;else return [messages];\n    },\n\n    /** @public */\n    reset() {\n      this.isResetting = true;\n      this.internalValue = Array.isArray(this.internalValue) ? [] : null;\n    },\n\n    /** @public */\n    resetValidation() {\n      this.isResetting = true;\n    },\n\n    /** @public */\n    validate(force = false, value) {\n      const errorBucket = [];\n      value = value || this.internalValue;\n      if (force) this.hasInput = this.hasFocused = true;\n\n      for (let index = 0; index < this.rules.length; index++) {\n        const rule = this.rules[index];\n        const valid = typeof rule === 'function' ? rule(value) : rule;\n\n        if (valid === false || typeof valid === 'string') {\n          errorBucket.push(valid || '');\n        } else if (typeof valid !== 'boolean') {\n          consoleError(`Rules should return a string or boolean, received '${typeof valid}' instead`, this);\n        }\n      }\n\n      this.errorBucket = errorBucket;\n      this.valid = errorBucket.length === 0;\n      return this.valid;\n    }\n\n  }\n});\n//# sourceMappingURL=index.js.map","// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = require('./_has');\nvar toObject = require('./_to-object');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = 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 ? ObjectProto : null;\n};\n","var getNative = require('./_getNative'),\n    root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\n","import \"../../../src/components/VTooltip/VTooltip.sass\"; // Mixins\n\nimport Activatable from '../../mixins/activatable';\nimport Colorable from '../../mixins/colorable';\nimport Delayable from '../../mixins/delayable';\nimport Dependent from '../../mixins/dependent';\nimport Menuable from '../../mixins/menuable';\nimport Toggleable from '../../mixins/toggleable'; // Helpers\n\nimport { convertToUnit, keyCodes, getSlotType } from '../../util/helpers';\nimport { consoleError } from '../../util/console';\nimport mixins from '../../util/mixins';\n/* @vue/component */\n\nexport default mixins(Colorable, Delayable, Dependent, Menuable, Toggleable).extend({\n  name: 'v-tooltip',\n  props: {\n    closeDelay: {\n      type: [Number, String],\n      default: 0\n    },\n    disabled: Boolean,\n    openDelay: {\n      type: [Number, String],\n      default: 0\n    },\n    openOnHover: {\n      type: Boolean,\n      default: true\n    },\n    tag: {\n      type: String,\n      default: 'span'\n    },\n    transition: String\n  },\n  data: () => ({\n    calculatedMinWidth: 0,\n    closeDependents: false\n  }),\n  computed: {\n    calculatedLeft() {\n      const {\n        activator,\n        content\n      } = this.dimensions;\n      const unknown = !this.bottom && !this.left && !this.top && !this.right;\n      const activatorLeft = this.attach !== false ? activator.offsetLeft : activator.left;\n      let left = 0;\n\n      if (this.top || this.bottom || unknown) {\n        left = activatorLeft + activator.width / 2 - content.width / 2;\n      } else if (this.left || this.right) {\n        left = activatorLeft + (this.right ? activator.width : -content.width) + (this.right ? 10 : -10);\n      }\n\n      if (this.nudgeLeft) left -= parseInt(this.nudgeLeft);\n      if (this.nudgeRight) left += parseInt(this.nudgeRight);\n      return `${this.calcXOverflow(left, this.dimensions.content.width)}px`;\n    },\n\n    calculatedTop() {\n      const {\n        activator,\n        content\n      } = this.dimensions;\n      const activatorTop = this.attach !== false ? activator.offsetTop : activator.top;\n      let top = 0;\n\n      if (this.top || this.bottom) {\n        top = activatorTop + (this.bottom ? activator.height : -content.height) + (this.bottom ? 10 : -10);\n      } else if (this.left || this.right) {\n        top = activatorTop + activator.height / 2 - content.height / 2;\n      }\n\n      if (this.nudgeTop) top -= parseInt(this.nudgeTop);\n      if (this.nudgeBottom) top += parseInt(this.nudgeBottom);\n      if (this.attach === false) top += this.pageYOffset;\n      return `${this.calcYOverflow(top)}px`;\n    },\n\n    classes() {\n      return {\n        'v-tooltip--top': this.top,\n        'v-tooltip--right': this.right,\n        'v-tooltip--bottom': this.bottom,\n        'v-tooltip--left': this.left,\n        'v-tooltip--attached': this.attach === '' || this.attach === true || this.attach === 'attach'\n      };\n    },\n\n    computedTransition() {\n      if (this.transition) return this.transition;\n      return this.isActive ? 'scale-transition' : 'fade-transition';\n    },\n\n    offsetY() {\n      return this.top || this.bottom;\n    },\n\n    offsetX() {\n      return this.left || this.right;\n    },\n\n    styles() {\n      return {\n        left: this.calculatedLeft,\n        maxWidth: convertToUnit(this.maxWidth),\n        minWidth: convertToUnit(this.minWidth),\n        top: this.calculatedTop,\n        zIndex: this.zIndex || this.activeZIndex\n      };\n    }\n\n  },\n\n  beforeMount() {\n    this.$nextTick(() => {\n      this.value && this.callActivate();\n    });\n  },\n\n  mounted() {\n    if (getSlotType(this, 'activator', true) === 'v-slot') {\n      consoleError(`v-tooltip's activator slot must be bound, try '<template #activator=\"data\"><v-btn v-on=\"data.on>'`, this);\n    }\n  },\n\n  methods: {\n    activate() {\n      // Update coordinates and dimensions of menu\n      // and its activator\n      this.updateDimensions(); // Start the transition\n\n      requestAnimationFrame(this.startTransition);\n    },\n\n    deactivate() {\n      this.runDelay('close');\n    },\n\n    genActivatorListeners() {\n      const listeners = Activatable.options.methods.genActivatorListeners.call(this);\n\n      listeners.focus = e => {\n        this.getActivator(e);\n        this.runDelay('open');\n      };\n\n      listeners.blur = e => {\n        this.getActivator(e);\n        this.runDelay('close');\n      };\n\n      listeners.keydown = e => {\n        if (e.keyCode === keyCodes.esc) {\n          this.getActivator(e);\n          this.runDelay('close');\n        }\n      };\n\n      return listeners;\n    },\n\n    genActivatorAttributes() {\n      return {\n        'aria-haspopup': true,\n        'aria-expanded': String(this.isActive)\n      };\n    },\n\n    genTransition() {\n      const content = this.genContent();\n      if (!this.computedTransition) return content;\n      return this.$createElement('transition', {\n        props: {\n          name: this.computedTransition\n        }\n      }, [content]);\n    },\n\n    genContent() {\n      return this.$createElement('div', this.setBackgroundColor(this.color, {\n        staticClass: 'v-tooltip__content',\n        class: {\n          [this.contentClass]: true,\n          menuable__content__active: this.isActive,\n          'v-tooltip__content--fixed': this.activatorFixed\n        },\n        style: this.styles,\n        attrs: this.getScopeIdAttrs(),\n        directives: [{\n          name: 'show',\n          value: this.isContentActive\n        }],\n        ref: 'content'\n      }), this.getContentSlot());\n    }\n\n  },\n\n  render(h) {\n    return h(this.tag, {\n      staticClass: 'v-tooltip',\n      class: this.classes\n    }, [this.showLazyContent(() => [this.genTransition()]), this.genActivator()]);\n  }\n\n});\n//# sourceMappingURL=VTooltip.js.map","(function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define([],t):\"object\"==typeof exports?exports.VueTheMask=t():e.VueTheMask=t()})(this,function(){return function(e){function t(r){if(n[r])return n[r].exports;var a=n[r]={i:r,l:!1,exports:{}};return e[r].call(a.exports,a,a.exports,t),a.l=!0,a.exports}var n={};return t.m=e,t.c=n,t.i=function(e){return e},t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,\"a\",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p=\".\",t(t.s=10)}([function(e,t){e.exports={\"#\":{pattern:/\\d/},X:{pattern:/[0-9a-zA-Z]/},S:{pattern:/[a-zA-Z]/},A:{pattern:/[a-zA-Z]/,transform:function(e){return e.toLocaleUpperCase()}},a:{pattern:/[a-zA-Z]/,transform:function(e){return e.toLocaleLowerCase()}},\"!\":{escape:!0}}},function(e,t,n){\"use strict\";function r(e){var t=document.createEvent(\"Event\");return t.initEvent(e,!0,!0),t}var a=n(2),o=n(0),i=n.n(o);t.a=function(e,t){var o=t.value;if((Array.isArray(o)||\"string\"==typeof o)&&(o={mask:o,tokens:i.a}),\"INPUT\"!==e.tagName.toLocaleUpperCase()){var u=e.getElementsByTagName(\"input\");if(1!==u.length)throw new Error(\"v-mask directive requires 1 input, found \"+u.length);e=u[0]}e.oninput=function(t){if(t.isTrusted){var i=e.selectionEnd,u=e.value[i-1];for(e.value=n.i(a.a)(e.value,o.mask,!0,o.tokens);i<e.value.length&&e.value.charAt(i-1)!==u;)i++;e===document.activeElement&&(e.setSelectionRange(i,i),setTimeout(function(){e.setSelectionRange(i,i)},0)),e.dispatchEvent(r(\"input\"))}};var s=n.i(a.a)(e.value,o.mask,!0,o.tokens);s!==e.value&&(e.value=s,e.dispatchEvent(r(\"input\")))}},function(e,t,n){\"use strict\";var r=n(6),a=n(5);t.a=function(e,t){var o=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],i=arguments[3];return Array.isArray(t)?n.i(a.a)(r.a,t,i)(e,t,o,i):n.i(r.a)(e,t,o,i)}},function(e,t,n){\"use strict\";function r(e){e.component(s.a.name,s.a),e.directive(\"mask\",i.a)}Object.defineProperty(t,\"__esModule\",{value:!0});var a=n(0),o=n.n(a),i=n(1),u=n(7),s=n.n(u);n.d(t,\"TheMask\",function(){return s.a}),n.d(t,\"mask\",function(){return i.a}),n.d(t,\"tokens\",function(){return o.a}),n.d(t,\"version\",function(){return c});var c=\"0.11.1\";t.default=r,\"undefined\"!=typeof window&&window.Vue&&window.Vue.use(r)},function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var r=n(1),a=n(0),o=n.n(a),i=n(2);t.default={name:\"TheMask\",props:{value:[String,Number],mask:{type:[String,Array],required:!0},masked:{type:Boolean,default:!1},tokens:{type:Object,default:function(){return o.a}}},directives:{mask:r.a},data:function(){return{lastValue:null,display:this.value}},watch:{value:function(e){e!==this.lastValue&&(this.display=e)},masked:function(){this.refresh(this.display)}},computed:{config:function(){return{mask:this.mask,tokens:this.tokens,masked:this.masked}}},methods:{onInput:function(e){e.isTrusted||this.refresh(e.target.value)},refresh:function(e){this.display=e;var e=n.i(i.a)(e,this.mask,this.masked,this.tokens);e!==this.lastValue&&(this.lastValue=e,this.$emit(\"input\",e))}}}},function(e,t,n){\"use strict\";function r(e,t,n){return t=t.sort(function(e,t){return e.length-t.length}),function(r,a){for(var o=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],i=0;i<t.length;){var u=t[i];i++;var s=t[i];if(!(s&&e(r,s,!0,n).length>u.length))return e(r,u,o,n)}return\"\"}}t.a=r},function(e,t,n){\"use strict\";function r(e,t){var n=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],r=arguments[3];e=e||\"\",t=t||\"\";for(var a=0,o=0,i=\"\";a<t.length&&o<e.length;){var u=t[a],s=r[u],c=e[o];s&&!s.escape?(s.pattern.test(c)&&(i+=s.transform?s.transform(c):c,a++),o++):(s&&s.escape&&(a++,u=t[a]),n&&(i+=u),c===u&&o++,a++)}for(var f=\"\";a<t.length&&n;){var u=t[a];if(r[u]){f=\"\";break}f+=u,a++}return i+f}t.a=r},function(e,t,n){var r=n(8)(n(4),n(9),null,null);e.exports=r.exports},function(e,t){e.exports=function(e,t,n,r){var a,o=e=e||{},i=typeof e.default;\"object\"!==i&&\"function\"!==i||(a=e,o=e.default);var u=\"function\"==typeof o?o.options:o;if(t&&(u.render=t.render,u.staticRenderFns=t.staticRenderFns),n&&(u._scopeId=n),r){var s=u.computed||(u.computed={});Object.keys(r).forEach(function(e){var t=r[e];s[e]=function(){return t}})}return{esModule:a,exports:o,options:u}}},function(e,t){e.exports={render:function(){var e=this,t=e.$createElement;return(e._self._c||t)(\"input\",{directives:[{name:\"mask\",rawName:\"v-mask\",value:e.config,expression:\"config\"}],attrs:{type:\"text\"},domProps:{value:e.display},on:{input:e.onInput}})},staticRenderFns:[]}},function(e,t,n){e.exports=n(3)}])});","import { factory as PositionableFactory } from '../positionable'; // Util\n\nimport mixins from '../../util/mixins';\nexport default function applicationable(value, events = []) {\n  /* @vue/component */\n  return mixins(PositionableFactory(['absolute', 'fixed'])).extend({\n    name: 'applicationable',\n    props: {\n      app: Boolean\n    },\n    computed: {\n      applicationProperty() {\n        return value;\n      }\n\n    },\n    watch: {\n      // If previous value was app\n      // reset the provided prop\n      app(x, prev) {\n        prev ? this.removeApplication(true) : this.callUpdate();\n      },\n\n      applicationProperty(newVal, oldVal) {\n        this.$vuetify.application.unregister(this._uid, oldVal);\n      }\n\n    },\n\n    activated() {\n      this.callUpdate();\n    },\n\n    created() {\n      for (let i = 0, length = events.length; i < length; i++) {\n        this.$watch(events[i], this.callUpdate);\n      }\n\n      this.callUpdate();\n    },\n\n    mounted() {\n      this.callUpdate();\n    },\n\n    deactivated() {\n      this.removeApplication();\n    },\n\n    destroyed() {\n      this.removeApplication();\n    },\n\n    methods: {\n      callUpdate() {\n        if (!this.app) return;\n        this.$vuetify.application.register(this._uid, this.applicationProperty, this.updateApplication());\n      },\n\n      removeApplication(force = false) {\n        if (!force && !this.app) return;\n        this.$vuetify.application.unregister(this._uid, this.applicationProperty);\n      },\n\n      updateApplication: () => 0\n    }\n  });\n}\n//# sourceMappingURL=index.js.map","var global = require('./_global');\nvar core = require('./_core');\nvar LIBRARY = require('./_library');\nvar wksExt = require('./_wks-ext');\nvar defineProperty = require('./_object-dp').f;\nmodule.exports = function (name) {\n  var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});\n  if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });\n};\n","var global = require('./_global');\nvar inheritIfRequired = require('./_inherit-if-required');\nvar dP = require('./_object-dp').f;\nvar gOPN = require('./_object-gopn').f;\nvar isRegExp = require('./_is-regexp');\nvar $flags = require('./_flags');\nvar $RegExp = global.RegExp;\nvar Base = $RegExp;\nvar proto = $RegExp.prototype;\nvar re1 = /a/g;\nvar re2 = /a/g;\n// \"new\" creates a new object, old webkit buggy here\nvar CORRECT_NEW = new $RegExp(re1) !== re1;\n\nif (require('./_descriptors') && (!CORRECT_NEW || require('./_fails')(function () {\n  re2[require('./_wks')('match')] = false;\n  // RegExp constructor can alter flags and IsRegExp works correct with @@match\n  return $RegExp(re1) != re1 || $RegExp(re2) == re2 || $RegExp(re1, 'i') != '/a/i';\n}))) {\n  $RegExp = function RegExp(p, f) {\n    var tiRE = this instanceof $RegExp;\n    var piRE = isRegExp(p);\n    var fiU = f === undefined;\n    return !tiRE && piRE && p.constructor === $RegExp && fiU ? p\n      : inheritIfRequired(CORRECT_NEW\n        ? new Base(piRE && !fiU ? p.source : p, f)\n        : Base((piRE = p instanceof $RegExp) ? p.source : p, piRE && fiU ? $flags.call(p) : f)\n      , tiRE ? this : proto, $RegExp);\n  };\n  var proxy = function (key) {\n    key in $RegExp || dP($RegExp, key, {\n      configurable: true,\n      get: function () { return Base[key]; },\n      set: function (it) { Base[key] = it; }\n    });\n  };\n  for (var keys = gOPN(Base), i = 0; keys.length > i;) proxy(keys[i++]);\n  proto.constructor = $RegExp;\n  $RegExp.prototype = proto;\n  require('./_redefine')(global, 'RegExp', $RegExp);\n}\n\nrequire('./_set-species')('RegExp');\n","var getNative = require('./_getNative');\n\nvar defineProperty = (function() {\n  try {\n    var func = getNative(Object, 'defineProperty');\n    func({}, '', {});\n    return func;\n  } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n","var isStrictComparable = require('./_isStrictComparable'),\n    keys = require('./keys');\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n  var result = keys(object),\n      length = result.length;\n\n  while (length--) {\n    var key = result[length],\n        value = object[key];\n\n    result[length] = [key, value, isStrictComparable(value)];\n  }\n  return result;\n}\n\nmodule.exports = getMatchData;\n","// Extensions\nimport VWindowItem from '../VWindow/VWindowItem'; // Components\n\nimport { VImg } from '../VImg'; // Utilities\n\nimport mixins from '../../util/mixins';\nimport { getSlot } from '../../util/helpers';\nimport Routable from '../../mixins/routable'; // Types\n\nconst baseMixins = mixins(VWindowItem, Routable);\n/* @vue/component */\n\nexport default baseMixins.extend().extend({\n  name: 'v-carousel-item',\n  inject: {\n    parentTheme: {\n      default: {\n        isDark: false\n      }\n    }\n  },\n\n  // pass down the parent's theme\n  provide() {\n    return {\n      theme: this.parentTheme\n    };\n  },\n\n  inheritAttrs: false,\n  methods: {\n    genDefaultSlot() {\n      return [this.$createElement(VImg, {\n        staticClass: 'v-carousel__item',\n        props: { ...this.$attrs,\n          height: this.windowGroup.internalHeight\n        },\n        on: this.$listeners,\n        scopedSlots: {\n          placeholder: this.$scopedSlots.placeholder\n        }\n      }, getSlot(this))];\n    },\n\n    genWindowItem() {\n      const {\n        tag,\n        data\n      } = this.generateRouteLink();\n      data.staticClass = 'v-window-item';\n      data.directives.push({\n        name: 'show',\n        value: this.isActive\n      });\n      return this.$createElement(tag, data, this.genDefaultSlot());\n    }\n\n  }\n});\n//# sourceMappingURL=VCarouselItem.js.map","module.exports = '4.5.11';\n","const { EventEmitter } = require('events');\nconst Proto = require('uberproto');\n\n// Returns a hook that emits service events. Should always be\n// used as the very last hook in the chain\nconst eventHook = exports.eventHook = function eventHook () {\n  return function (hook) {\n    const { app, service } = hook;\n    const eventName = hook.event === null ? hook.event : app.eventMappings[hook.method];\n    const isHookEvent = service._hookEvents && service._hookEvents.indexOf(eventName) !== -1;\n\n    // If this event is not being sent yet and we are not in an error hook\n    if (eventName && isHookEvent && hook.type !== 'error') {\n      const results = Array.isArray(hook.result) ? hook.result : [ hook.result ];\n\n      results.forEach(element => service.emit(eventName, element, hook));\n    }\n  };\n};\n\n// Mixin that turns a service into a Node event emitter\nconst eventMixin = exports.eventMixin = function eventMixin (service) {\n  if (service._serviceEvents) {\n    return;\n  }\n\n  const app = this;\n  // Indicates if the service is already an event emitter\n  const isEmitter = typeof service.on === 'function' &&\n    typeof service.emit === 'function';\n\n  // If not, mix it in (the service is always an Uberproto object that has a .mixin)\n  if (typeof service.mixin === 'function' && !isEmitter) {\n    service.mixin(EventEmitter.prototype);\n  }\n\n  // Define non-enumerable properties of\n  Object.defineProperties(service, {\n    // A list of all events that this service sends\n    _serviceEvents: {\n      value: Array.isArray(service.events) ? service.events.slice() : []\n    },\n\n    // A list of events that should be handled through the event hooks\n    _hookEvents: {\n      value: []\n    }\n  });\n\n  // `app.eventMappings` has the mapping from method name to event name\n  Object.keys(app.eventMappings).forEach(method => {\n    const event = app.eventMappings[method];\n    const alreadyEmits = service._serviceEvents.indexOf(event) !== -1;\n\n    // Add events for known methods to _serviceEvents and _hookEvents\n    // if the service indicated it does not send it itself yet\n    if (typeof service[method] === 'function' && !alreadyEmits) {\n      service._serviceEvents.push(event);\n      service._hookEvents.push(event);\n    }\n  });\n};\n\nmodule.exports = function () {\n  return function (app) {\n    // Mappings from service method to event name\n    Object.assign(app, {\n      eventMappings: {\n        create: 'created',\n        update: 'updated',\n        remove: 'removed',\n        patch: 'patched'\n      }\n    });\n\n    // Register the event hook\n    // `finally` hooks always run last after `error` and `after` hooks\n    app.hooks({ finally: eventHook() });\n\n    // Make the app an event emitter\n    Proto.mixin(EventEmitter.prototype, app);\n\n    app.mixins.push(eventMixin);\n  };\n};\n","var arrayMap = require('./_arrayMap'),\n    baseClone = require('./_baseClone'),\n    baseUnset = require('./_baseUnset'),\n    castPath = require('./_castPath'),\n    copyObject = require('./_copyObject'),\n    customOmitClone = require('./_customOmitClone'),\n    flatRest = require('./_flatRest'),\n    getAllKeysIn = require('./_getAllKeysIn');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n    CLONE_FLAT_FLAG = 2,\n    CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * The opposite of `_.pick`; this method creates an object composed of the\n * own and inherited enumerable property paths of `object` that are not omitted.\n *\n * **Note:** This method is considerably slower than `_.pick`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to omit.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omit(object, ['a', 'c']);\n * // => { 'b': '2' }\n */\nvar omit = flatRest(function(object, paths) {\n  var result = {};\n  if (object == null) {\n    return result;\n  }\n  var isDeep = false;\n  paths = arrayMap(paths, function(path) {\n    path = castPath(path, object);\n    isDeep || (isDeep = path.length > 1);\n    return path;\n  });\n  copyObject(object, getAllKeysIn(object), result);\n  if (isDeep) {\n    result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);\n  }\n  var length = paths.length;\n  while (length--) {\n    baseUnset(result, paths[length]);\n  }\n  return result;\n});\n\nmodule.exports = omit;\n","var apply = require('./_apply'),\n    baseRest = require('./_baseRest'),\n    customDefaultsMerge = require('./_customDefaultsMerge'),\n    mergeWith = require('./mergeWith');\n\n/**\n * This method is like `_.defaults` except that it recursively assigns\n * default properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaults\n * @example\n *\n * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } });\n * // => { 'a': { 'b': 2, 'c': 3 } }\n */\nvar defaultsDeep = baseRest(function(args) {\n  args.push(undefined, customDefaultsMerge);\n  return apply(mergeWith, undefined, args);\n});\n\nmodule.exports = defaultsDeep;\n","const Utils = require('./utils')\n\nfunction getColorAttrib (color, attrib) {\n  const alpha = color.a / 255\n  const str = attrib + '=\"' + color.hex + '\"'\n\n  return alpha < 1\n    ? str + ' ' + attrib + '-opacity=\"' + alpha.toFixed(2).slice(1) + '\"'\n    : str\n}\n\nfunction svgCmd (cmd, x, y) {\n  let str = cmd + x\n  if (typeof y !== 'undefined') str += ' ' + y\n\n  return str\n}\n\nfunction qrToPath (data, size, margin) {\n  let path = ''\n  let moveBy = 0\n  let newRow = false\n  let lineLength = 0\n\n  for (let i = 0; i < data.length; i++) {\n    const col = Math.floor(i % size)\n    const row = Math.floor(i / size)\n\n    if (!col && !newRow) newRow = true\n\n    if (data[i]) {\n      lineLength++\n\n      if (!(i > 0 && col > 0 && data[i - 1])) {\n        path += newRow\n          ? svgCmd('M', col + margin, 0.5 + row + margin)\n          : svgCmd('m', moveBy, 0)\n\n        moveBy = 0\n        newRow = false\n      }\n\n      if (!(col + 1 < size && data[i + 1])) {\n        path += svgCmd('h', lineLength)\n        lineLength = 0\n      }\n    } else {\n      moveBy++\n    }\n  }\n\n  return path\n}\n\nexports.render = function render (qrData, options, cb) {\n  const opts = Utils.getOptions(options)\n  const size = qrData.modules.size\n  const data = qrData.modules.data\n  const qrcodesize = size + opts.margin * 2\n\n  const bg = !opts.color.light.a\n    ? ''\n    : '<path ' + getColorAttrib(opts.color.light, 'fill') +\n      ' d=\"M0 0h' + qrcodesize + 'v' + qrcodesize + 'H0z\"/>'\n\n  const path =\n    '<path ' + getColorAttrib(opts.color.dark, 'stroke') +\n    ' d=\"' + qrToPath(data, size, opts.margin) + '\"/>'\n\n  const viewBox = 'viewBox=\"' + '0 0 ' + qrcodesize + ' ' + qrcodesize + '\"'\n\n  const width = !opts.width ? '' : 'width=\"' + opts.width + '\" height=\"' + opts.width + '\" '\n\n  const svgTag = '<svg xmlns=\"http://www.w3.org/2000/svg\" ' + width + viewBox + ' shape-rendering=\"crispEdges\">' + bg + path + '</svg>\\n'\n\n  if (typeof cb === 'function') {\n    cb(null, svgTag)\n  }\n\n  return svgTag\n}\n","const Service = require('@feathersjs/transport-commons/client');\n\nfunction socketioClient (connection, options) {\n  if (!connection) {\n    throw new Error('Socket.io connection needs to be provided');\n  }\n\n  if (connection && connection.io && connection.io.engine &&\n    connection.io.engine.transport && connection.io.engine.transport.query &&\n    connection.io.engine.transport.query.EIO > 3\n  ) {\n    // tslint:disable-next-line\n    console.error('You are trying to use the Socket.io client version 3 or later with Feathers v4 which only supports Socket.io version 2. Please use socket.io-client version 2 instead.');\n    throw new Error('socket.io-client must be version 2.x');\n  }\n\n  const defaultService = function (name) {\n    const events = Object.keys(this.eventMappings || {})\n      .map(method => this.eventMappings[method]);\n\n    const settings = Object.assign({}, options, {\n      events,\n      name,\n      connection,\n      method: 'emit'\n    });\n\n    return new Service(settings);\n  };\n\n  const initialize = function (app) {\n    if (typeof app.defaultService === 'function') {\n      throw new Error('Only one default client provider can be configured');\n    }\n\n    app.io = connection;\n    app.defaultService = defaultService;\n  };\n\n  initialize.Service = Service;\n  initialize.service = defaultService;\n\n  return initialize;\n}\n\nmodule.exports = socketioClient;\nmodule.exports.default = socketioClient;\n","var root = require('./_root');\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n *   console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n  return root.Date.now();\n};\n\nmodule.exports = now;\n","// Directives\nimport { Scroll } from '../../directives'; // Utilities\n\nimport { consoleWarn } from '../../util/console'; // Types\n\nimport Vue from 'vue';\n/**\n * Scrollable\n *\n * Used for monitoring scrolling and\n * invoking functions based upon\n * scrolling thresholds being\n * met.\n */\n\n/* @vue/component */\n\nexport default Vue.extend({\n  name: 'scrollable',\n  directives: {\n    Scroll\n  },\n  props: {\n    scrollTarget: String,\n    scrollThreshold: [String, Number]\n  },\n  data: () => ({\n    currentScroll: 0,\n    currentThreshold: 0,\n    isActive: false,\n    isScrollingUp: false,\n    previousScroll: 0,\n    savedScroll: 0,\n    target: null\n  }),\n  computed: {\n    /**\n     * A computed property that returns\n     * whether scrolling features are\n     * enabled or disabled\n     */\n    canScroll() {\n      return typeof window !== 'undefined';\n    },\n\n    /**\n     * The threshold that must be met before\n     * thresholdMet function is invoked\n     */\n    computedScrollThreshold() {\n      return this.scrollThreshold ? Number(this.scrollThreshold) : 300;\n    }\n\n  },\n  watch: {\n    isScrollingUp() {\n      this.savedScroll = this.savedScroll || this.currentScroll;\n    },\n\n    isActive() {\n      this.savedScroll = 0;\n    }\n\n  },\n\n  mounted() {\n    if (this.scrollTarget) {\n      this.target = document.querySelector(this.scrollTarget);\n\n      if (!this.target) {\n        consoleWarn(`Unable to locate element with identifier ${this.scrollTarget}`, this);\n      }\n    }\n  },\n\n  methods: {\n    onScroll() {\n      if (!this.canScroll) return;\n      this.previousScroll = this.currentScroll;\n      this.currentScroll = this.target ? this.target.scrollTop : window.pageYOffset;\n      this.isScrollingUp = this.currentScroll < this.previousScroll;\n      this.currentThreshold = Math.abs(this.currentScroll - this.computedScrollThreshold);\n      this.$nextTick(() => {\n        if (Math.abs(this.currentScroll - this.savedScroll) > this.computedScrollThreshold) this.thresholdMet();\n      });\n    },\n\n    /**\n     * The method invoked when\n     * scrolling in any direction\n     * has exceeded the threshold\n     */\n    thresholdMet() {}\n\n  }\n});\n//# sourceMappingURL=index.js.map","// Styles\nimport \"../../../src/components/VAppBar/VAppBar.sass\"; // Extensions\n\nimport VToolbar from '../VToolbar/VToolbar'; // Directives\n\nimport Scroll from '../../directives/scroll'; // Mixins\n\nimport Applicationable from '../../mixins/applicationable';\nimport Scrollable from '../../mixins/scrollable';\nimport SSRBootable from '../../mixins/ssr-bootable';\nimport Toggleable from '../../mixins/toggleable'; // Utilities\n\nimport { convertToUnit } from '../../util/helpers';\nimport mixins from '../../util/mixins';\nconst baseMixins = mixins(VToolbar, Scrollable, SSRBootable, Toggleable, Applicationable('top', ['clippedLeft', 'clippedRight', 'computedHeight', 'invertedScroll', 'isExtended', 'isProminent', 'value']));\n/* @vue/component */\n\nexport default baseMixins.extend({\n  name: 'v-app-bar',\n  directives: {\n    Scroll\n  },\n\n  provide() {\n    return {\n      VAppBar: this\n    };\n  },\n\n  props: {\n    clippedLeft: Boolean,\n    clippedRight: Boolean,\n    collapseOnScroll: Boolean,\n    elevateOnScroll: Boolean,\n    fadeImgOnScroll: Boolean,\n    hideOnScroll: Boolean,\n    invertedScroll: Boolean,\n    scrollOffScreen: Boolean,\n    shrinkOnScroll: Boolean,\n    value: {\n      type: Boolean,\n      default: true\n    }\n  },\n\n  data() {\n    return {\n      isActive: this.value\n    };\n  },\n\n  computed: {\n    applicationProperty() {\n      return !this.bottom ? 'top' : 'bottom';\n    },\n\n    canScroll() {\n      return Scrollable.options.computed.canScroll.call(this) && (this.invertedScroll || this.elevateOnScroll || this.hideOnScroll || this.collapseOnScroll || this.isBooted || // If falsy, user has provided an\n      // explicit value which should\n      // overwrite anything we do\n      !this.value);\n    },\n\n    classes() {\n      return { ...VToolbar.options.computed.classes.call(this),\n        'v-toolbar--collapse': this.collapse || this.collapseOnScroll,\n        'v-app-bar': true,\n        'v-app-bar--clipped': this.clippedLeft || this.clippedRight,\n        'v-app-bar--fade-img-on-scroll': this.fadeImgOnScroll,\n        'v-app-bar--elevate-on-scroll': this.elevateOnScroll,\n        'v-app-bar--fixed': !this.absolute && (this.app || this.fixed),\n        'v-app-bar--hide-shadow': this.hideShadow,\n        'v-app-bar--is-scrolled': this.currentScroll > 0,\n        'v-app-bar--shrink-on-scroll': this.shrinkOnScroll\n      };\n    },\n\n    scrollRatio() {\n      const threshold = this.computedScrollThreshold;\n      return Math.max((threshold - this.currentScroll) / threshold, 0);\n    },\n\n    computedContentHeight() {\n      if (!this.shrinkOnScroll) return VToolbar.options.computed.computedContentHeight.call(this);\n      const min = this.dense ? 48 : 56;\n      const max = this.computedOriginalHeight;\n      return min + (max - min) * this.scrollRatio;\n    },\n\n    computedFontSize() {\n      if (!this.isProminent) return undefined;\n      const min = 1.25;\n      const max = 1.5;\n      return min + (max - min) * this.scrollRatio;\n    },\n\n    computedLeft() {\n      if (!this.app || this.clippedLeft) return 0;\n      return this.$vuetify.application.left;\n    },\n\n    computedMarginTop() {\n      if (!this.app) return 0;\n      return this.$vuetify.application.bar;\n    },\n\n    computedOpacity() {\n      if (!this.fadeImgOnScroll) return undefined;\n      return this.scrollRatio;\n    },\n\n    computedOriginalHeight() {\n      let height = VToolbar.options.computed.computedContentHeight.call(this);\n      if (this.isExtended) height += parseInt(this.extensionHeight);\n      return height;\n    },\n\n    computedRight() {\n      if (!this.app || this.clippedRight) return 0;\n      return this.$vuetify.application.right;\n    },\n\n    computedScrollThreshold() {\n      if (this.scrollThreshold) return Number(this.scrollThreshold);\n      return this.computedOriginalHeight - (this.dense ? 48 : 56);\n    },\n\n    computedTransform() {\n      if (!this.canScroll || this.elevateOnScroll && this.currentScroll === 0 && this.isActive) return 0;\n      if (this.isActive) return 0;\n      const scrollOffScreen = this.scrollOffScreen ? this.computedHeight : this.computedContentHeight;\n      return this.bottom ? scrollOffScreen : -scrollOffScreen;\n    },\n\n    hideShadow() {\n      if (this.elevateOnScroll && this.isExtended) {\n        return this.currentScroll < this.computedScrollThreshold;\n      }\n\n      if (this.elevateOnScroll) {\n        return this.currentScroll === 0 || this.computedTransform < 0;\n      }\n\n      return (!this.isExtended || this.scrollOffScreen) && this.computedTransform !== 0;\n    },\n\n    isCollapsed() {\n      if (!this.collapseOnScroll) {\n        return VToolbar.options.computed.isCollapsed.call(this);\n      }\n\n      return this.currentScroll > 0;\n    },\n\n    isProminent() {\n      return VToolbar.options.computed.isProminent.call(this) || this.shrinkOnScroll;\n    },\n\n    styles() {\n      return { ...VToolbar.options.computed.styles.call(this),\n        fontSize: convertToUnit(this.computedFontSize, 'rem'),\n        marginTop: convertToUnit(this.computedMarginTop),\n        transform: `translateY(${convertToUnit(this.computedTransform)})`,\n        left: convertToUnit(this.computedLeft),\n        right: convertToUnit(this.computedRight)\n      };\n    }\n\n  },\n  watch: {\n    canScroll: 'onScroll',\n\n    computedTransform() {\n      // Normally we do not want the v-app-bar\n      // to update the application top value\n      // to avoid screen jump. However, in\n      // this situation, we must so that\n      // the clipped drawer can update\n      // its top value when scrolled\n      if (!this.canScroll || !this.clippedLeft && !this.clippedRight) return;\n      this.callUpdate();\n    },\n\n    invertedScroll(val) {\n      this.isActive = !val || this.currentScroll !== 0;\n    },\n\n    hideOnScroll(val) {\n      this.isActive = !val || this.currentScroll < this.computedScrollThreshold;\n    }\n\n  },\n\n  created() {\n    if (this.invertedScroll) this.isActive = false;\n  },\n\n  methods: {\n    genBackground() {\n      const render = VToolbar.options.methods.genBackground.call(this);\n      render.data = this._b(render.data || {}, render.tag, {\n        style: {\n          opacity: this.computedOpacity\n        }\n      });\n      return render;\n    },\n\n    updateApplication() {\n      return this.invertedScroll ? 0 : this.computedHeight + this.computedTransform;\n    },\n\n    thresholdMet() {\n      if (this.invertedScroll) {\n        this.isActive = this.currentScroll > this.computedScrollThreshold;\n        return;\n      }\n\n      if (this.hideOnScroll) {\n        this.isActive = this.isScrollingUp || this.currentScroll < this.computedScrollThreshold;\n      }\n\n      if (this.currentThreshold < this.computedScrollThreshold) return;\n      this.savedScroll = this.currentScroll;\n    }\n\n  },\n\n  render(h) {\n    const render = VToolbar.options.render.call(this, h);\n    render.data = render.data || {};\n\n    if (this.canScroll) {\n      render.data.directives = render.data.directives || [];\n      render.data.directives.push({\n        arg: this.scrollTarget,\n        name: 'scroll',\n        value: this.onScroll\n      });\n    }\n\n    return render;\n  }\n\n});\n//# sourceMappingURL=VAppBar.js.map","/**\n * Slice reference.\n */\n\nvar slice = [].slice;\n\n/**\n * Bind `obj` to `fn`.\n *\n * @param {Object} obj\n * @param {Function|String} fn or string\n * @return {Function}\n * @api public\n */\n\nmodule.exports = function(obj, fn){\n  if ('string' == typeof fn) fn = obj[fn];\n  if ('function' != typeof fn) throw new Error('bind() requires a function');\n  var args = slice.call(arguments, 2);\n  return function(){\n    return fn.apply(obj, args.concat(slice.call(arguments)));\n  }\n};\n","(function() {\n  'use strict'\n\n  var plugin = {\n    install: function(Vue, server) {\n\n      // Every component will have this\n      Vue.mixin({\n        created: function() {\n          this.$feathers = server\n\n          // Setting up the services\n          this.$services = server.services\n\n          if(!this.$options.feathers)\n            return\n\n          // Setting up the events\n          var keys = Object.keys(this.$options.feathers) // services, IE9+\n          for(var i = 0; i < keys.length; i++) {\n            var service = this.$options.feathers[keys[i]]\n            var ekeys = Object.keys(service) // handlers\n\n            for(var k = 0; k < ekeys.length; k++) {\n              server.service(keys[i]).on(ekeys[k], service[ekeys[k]].bind(this))\n            }\n          }\n        },\n\n        beforeDestroy: function() {\n          // Removing the events\n          if(!this.$options || !this.$options.feathers)\n            return\n\n          var keys = Object.keys(this.$options.feathers) // services, IE9+\n          for(var i = 0; i < keys.length; i++) {\n            var service = this.$options.feathers[keys[i]]\n            var ekeys = Object.keys(service) // handlers\n\n            for(var k = 0; k < ekeys.length; k++) {\n              server.service(keys[i]).removeListener(ekeys[k], service[ekeys[k]].bind(this))\n            }\n          }\n        }\n      })\n    }\n  }\n\n  if(typeof exports === 'object' && typeof module === 'object') {\n    module.exports = plugin\n  } else if(typeof define === 'function' && define.amd) {\n    define(function () { return plugin })\n  } else if (typeof window !== 'undefined') {\n    window.VueAsyncData = plugin\n  }\n})()","const Utils = require('./utils')\n\nfunction clearCanvas (ctx, canvas, size) {\n  ctx.clearRect(0, 0, canvas.width, canvas.height)\n\n  if (!canvas.style) canvas.style = {}\n  canvas.height = size\n  canvas.width = size\n  canvas.style.height = size + 'px'\n  canvas.style.width = size + 'px'\n}\n\nfunction getCanvasElement () {\n  try {\n    return document.createElement('canvas')\n  } catch (e) {\n    throw new Error('You need to specify a canvas element')\n  }\n}\n\nexports.render = function render (qrData, canvas, options) {\n  let opts = options\n  let canvasEl = canvas\n\n  if (typeof opts === 'undefined' && (!canvas || !canvas.getContext)) {\n    opts = canvas\n    canvas = undefined\n  }\n\n  if (!canvas) {\n    canvasEl = getCanvasElement()\n  }\n\n  opts = Utils.getOptions(opts)\n  const size = Utils.getImageWidth(qrData.modules.size, opts)\n\n  const ctx = canvasEl.getContext('2d')\n  const image = ctx.createImageData(size, size)\n  Utils.qrToImageData(image.data, qrData, opts)\n\n  clearCanvas(ctx, canvasEl, size)\n  ctx.putImageData(image, 0, 0)\n\n  return canvasEl\n}\n\nexports.renderToDataURL = function renderToDataURL (qrData, canvas, options) {\n  let opts = options\n\n  if (typeof opts === 'undefined' && (!canvas || !canvas.getContext)) {\n    opts = canvas\n    canvas = undefined\n  }\n\n  if (!opts) opts = {}\n\n  const canvasEl = exports.render(qrData, canvas, opts)\n\n  const type = opts.type || 'image/png'\n  const rendererOpts = opts.rendererOpts || {}\n\n  return canvasEl.toDataURL(type, rendererOpts.quality)\n}\n","'use strict';\nvar create = require('./_object-create');\nvar descriptor = require('./_property-desc');\nvar setToStringTag = require('./_set-to-string-tag');\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nrequire('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n  Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n  setToStringTag(Constructor, NAME + ' Iterator');\n};\n","var isObject = require('./isObject'),\n    isPrototype = require('./_isPrototype'),\n    nativeKeysIn = require('./_nativeKeysIn');\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 * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n  if (!isObject(object)) {\n    return nativeKeysIn(object);\n  }\n  var isProto = isPrototype(object),\n      result = [];\n\n  for (var key in object) {\n    if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nmodule.exports = baseKeysIn;\n","!function(r,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(r=\"undefined\"!=typeof globalThis?globalThis:r||self).dayjs_plugin_relativeTime=e()}(this,(function(){\"use strict\";return function(r,e,t){r=r||{};var n=e.prototype,o={future:\"in %s\",past:\"%s ago\",s:\"a few seconds\",m:\"a minute\",mm:\"%d minutes\",h:\"an hour\",hh:\"%d hours\",d:\"a day\",dd:\"%d days\",M:\"a month\",MM:\"%d months\",y:\"a year\",yy:\"%d years\"};function i(r,e,t,o){return n.fromToBase(r,e,t,o)}t.en.relativeTime=o,n.fromToBase=function(e,n,i,d,u){for(var f,a,s,l=i.$locale().relativeTime||o,h=r.thresholds||[{l:\"s\",r:44,d:\"second\"},{l:\"m\",r:89},{l:\"mm\",r:44,d:\"minute\"},{l:\"h\",r:89},{l:\"hh\",r:21,d:\"hour\"},{l:\"d\",r:35},{l:\"dd\",r:25,d:\"day\"},{l:\"M\",r:45},{l:\"MM\",r:10,d:\"month\"},{l:\"y\",r:17},{l:\"yy\",d:\"year\"}],m=h.length,c=0;c<m;c+=1){var y=h[c];y.d&&(f=d?t(e).diff(i,y.d,!0):i.diff(e,y.d,!0));var p=(r.rounding||Math.round)(Math.abs(f));if(s=f>0,p<=y.r||!y.r){p<=1&&c>0&&(y=h[c-1]);var v=l[y.l];u&&(p=u(\"\"+p)),a=\"string\"==typeof v?v.replace(\"%d\",p):v(p,n,y.l,s);break}}if(n)return a;var M=s?l.future:l.past;return\"function\"==typeof M?M(a):M.replace(\"%s\",a)},n.to=function(r,e){return i(r,e,this,!0)},n.from=function(r,e){return i(r,e,this)};var d=function(r){return r.$u?t.utc():t()};n.toNow=function(r){return this.to(d(this),r)},n.fromNow=function(r){return this.from(d(this),r)}}}));","var baseMerge = require('./_baseMerge'),\n    createAssigner = require('./_createAssigner');\n\n/**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n *   'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n *   'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\nvar merge = createAssigner(function(object, source, srcIndex) {\n  baseMerge(object, source, srcIndex);\n});\n\nmodule.exports = merge;\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","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n *  else `false`.\n */\nfunction arraySome(array, predicate) {\n  var index = -1,\n      length = array == null ? 0 : array.length;\n\n  while (++index < length) {\n    if (predicate(array[index], index, array)) {\n      return true;\n    }\n  }\n  return false;\n}\n\nmodule.exports = arraySome;\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","(function (global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n  typeof define === 'function' && define.amd ? define(factory) :\n  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global['fast-copy'] = factory());\n}(this, (function () { 'use strict';\n\n  var toStringFunction = Function.prototype.toString;\r\n  var create = Object.create, defineProperty = Object.defineProperty, getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor, getOwnPropertyNames = Object.getOwnPropertyNames, getOwnPropertySymbols = Object.getOwnPropertySymbols, getPrototypeOf = Object.getPrototypeOf;\r\n  var _a = Object.prototype, hasOwnProperty = _a.hasOwnProperty, propertyIsEnumerable = _a.propertyIsEnumerable;\r\n  /**\r\n   * @enum\r\n   *\r\n   * @const {Object} SUPPORTS\r\n   *\r\n   * @property {boolean} SYMBOL_PROPERTIES are symbol properties supported\r\n   * @property {boolean} WEAKMAP is WeakMap supported\r\n   */\r\n  var SUPPORTS = {\r\n      SYMBOL_PROPERTIES: typeof getOwnPropertySymbols === 'function',\r\n      WEAKMAP: typeof WeakMap === 'function',\r\n  };\r\n  /**\r\n   * @function createCache\r\n   *\r\n   * @description\r\n   * get a new cache object to prevent circular references\r\n   *\r\n   * @returns the new cache object\r\n   */\r\n  var createCache = function () {\r\n      if (SUPPORTS.WEAKMAP) {\r\n          return new WeakMap();\r\n      }\r\n      // tiny implementation of WeakMap\r\n      var object = create({\r\n          has: function (key) { return !!~object._keys.indexOf(key); },\r\n          set: function (key, value) {\r\n              object._keys.push(key);\r\n              object._values.push(value);\r\n          },\r\n          get: function (key) { return object._values[object._keys.indexOf(key)]; },\r\n      });\r\n      object._keys = [];\r\n      object._values = [];\r\n      return object;\r\n  };\r\n  /**\r\n   * @function getCleanClone\r\n   *\r\n   * @description\r\n   * get an empty version of the object with the same prototype it has\r\n   *\r\n   * @param object the object to build a clean clone from\r\n   * @param realm the realm the object resides in\r\n   * @returns the empty cloned object\r\n   */\r\n  var getCleanClone = function (object, realm) {\r\n      if (!object.constructor) {\r\n          return create(null);\r\n      }\r\n      var Constructor = object.constructor;\r\n      var prototype = object.__proto__ || getPrototypeOf(object);\r\n      if (Constructor === realm.Object) {\r\n          return prototype === realm.Object.prototype ? {} : create(prototype);\r\n      }\r\n      if (~toStringFunction.call(Constructor).indexOf('[native code]')) {\r\n          try {\r\n              return new Constructor();\r\n          }\r\n          catch (_a) { }\r\n      }\r\n      return create(prototype);\r\n  };\r\n  /**\r\n   * @function getObjectCloneLoose\r\n   *\r\n   * @description\r\n   * get a copy of the object based on loose rules, meaning all enumerable keys\r\n   * and symbols are copied, but property descriptors are not considered\r\n   *\r\n   * @param object the object to clone\r\n   * @param realm the realm the object resides in\r\n   * @param handleCopy the function that handles copying the object\r\n   * @returns the copied object\r\n   */\r\n  var getObjectCloneLoose = function (object, realm, handleCopy, cache) {\r\n      var clone = getCleanClone(object, realm);\r\n      // set in the cache immediately to be able to reuse the object recursively\r\n      cache.set(object, clone);\r\n      for (var key in object) {\r\n          if (hasOwnProperty.call(object, key)) {\r\n              clone[key] = handleCopy(object[key], cache);\r\n          }\r\n      }\r\n      if (SUPPORTS.SYMBOL_PROPERTIES) {\r\n          var symbols = getOwnPropertySymbols(object);\r\n          var length_1 = symbols.length;\r\n          if (length_1) {\r\n              for (var index = 0, symbol = void 0; index < length_1; index++) {\r\n                  symbol = symbols[index];\r\n                  if (propertyIsEnumerable.call(object, symbol)) {\r\n                      clone[symbol] = handleCopy(object[symbol], cache);\r\n                  }\r\n              }\r\n          }\r\n      }\r\n      return clone;\r\n  };\r\n  /**\r\n   * @function getObjectCloneStrict\r\n   *\r\n   * @description\r\n   * get a copy of the object based on strict rules, meaning all keys and symbols\r\n   * are copied based on the original property descriptors\r\n   *\r\n   * @param object the object to clone\r\n   * @param realm the realm the object resides in\r\n   * @param handleCopy the function that handles copying the object\r\n   * @returns the copied object\r\n   */\r\n  var getObjectCloneStrict = function (object, realm, handleCopy, cache) {\r\n      var clone = getCleanClone(object, realm);\r\n      // set in the cache immediately to be able to reuse the object recursively\r\n      cache.set(object, clone);\r\n      var properties = SUPPORTS.SYMBOL_PROPERTIES\r\n          ? getOwnPropertyNames(object).concat(getOwnPropertySymbols(object))\r\n          : getOwnPropertyNames(object);\r\n      var length = properties.length;\r\n      if (length) {\r\n          for (var index = 0, property = void 0, descriptor = void 0; index < length; index++) {\r\n              property = properties[index];\r\n              if (property !== 'callee' && property !== 'caller') {\r\n                  descriptor = getOwnPropertyDescriptor(object, property);\r\n                  if (descriptor) {\r\n                      // Only clone the value if actually a value, not a getter / setter.\r\n                      if (!descriptor.get && !descriptor.set) {\r\n                          descriptor.value = handleCopy(object[property], cache);\r\n                      }\r\n                      try {\r\n                          defineProperty(clone, property, descriptor);\r\n                      }\r\n                      catch (error) {\r\n                          // Tee above can fail on node in edge cases, so fall back to the loose assignment.\r\n                          clone[property] = descriptor.value;\r\n                      }\r\n                  }\r\n                  else {\r\n                      // In extra edge cases where the property descriptor cannot be retrived, fall back to\r\n                      // the loose assignment.\r\n                      clone[property] = handleCopy(object[property], cache);\r\n                  }\r\n              }\r\n          }\r\n      }\r\n      return clone;\r\n  };\r\n  /**\r\n   * @function getRegExpFlags\r\n   *\r\n   * @description\r\n   * get the flags to apply to the copied regexp\r\n   *\r\n   * @param regExp the regexp to get the flags of\r\n   * @returns the flags for the regexp\r\n   */\r\n  var getRegExpFlags = function (regExp) {\r\n      var flags = '';\r\n      if (regExp.global) {\r\n          flags += 'g';\r\n      }\r\n      if (regExp.ignoreCase) {\r\n          flags += 'i';\r\n      }\r\n      if (regExp.multiline) {\r\n          flags += 'm';\r\n      }\r\n      if (regExp.unicode) {\r\n          flags += 'u';\r\n      }\r\n      if (regExp.sticky) {\r\n          flags += 'y';\r\n      }\r\n      return flags;\r\n  };\n\n  // utils\r\n  var isArray = Array.isArray;\r\n  var GLOBAL_THIS = (function () {\r\n      if (typeof self !== 'undefined') {\r\n          return self;\r\n      }\r\n      if (typeof window !== 'undefined') {\r\n          return window;\r\n      }\r\n      if (typeof global !== 'undefined') {\r\n          return global;\r\n      }\r\n      if (console && console.error) {\r\n          console.error('Unable to locate global object, returning \"this\".');\r\n      }\r\n  })();\r\n  /**\r\n   * @function copy\r\n   *\r\n   * @description\r\n   * copy an object deeply as much as possible\r\n   *\r\n   * If `strict` is applied, then all properties (including non-enumerable ones)\r\n   * are copied with their original property descriptors on both objects and arrays.\r\n   *\r\n   * The object is compared to the global constructors in the `realm` provided,\r\n   * and the native constructor is always used to ensure that extensions of native\r\n   * objects (allows in ES2015+) are maintained.\r\n   *\r\n   * @param object the object to copy\r\n   * @param [options] the options for copying with\r\n   * @param [options.isStrict] should the copy be strict\r\n   * @param [options.realm] the realm (this) object the object is copied from\r\n   * @returns the copied object\r\n   */\r\n  function copy(object, options) {\r\n      // manually coalesced instead of default parameters for performance\r\n      var isStrict = !!(options && options.isStrict);\r\n      var realm = (options && options.realm) || GLOBAL_THIS;\r\n      var getObjectClone = isStrict\r\n          ? getObjectCloneStrict\r\n          : getObjectCloneLoose;\r\n      /**\r\n       * @function handleCopy\r\n       *\r\n       * @description\r\n       * copy the object recursively based on its type\r\n       *\r\n       * @param object the object to copy\r\n       * @returns the copied object\r\n       */\r\n      var handleCopy = function (object, cache) {\r\n          if (!object || typeof object !== 'object') {\r\n              return object;\r\n          }\r\n          if (cache.has(object)) {\r\n              return cache.get(object);\r\n          }\r\n          var Constructor = object.constructor;\r\n          // plain objects\r\n          if (Constructor === realm.Object) {\r\n              return getObjectClone(object, realm, handleCopy, cache);\r\n          }\r\n          var clone;\r\n          // arrays\r\n          if (isArray(object)) {\r\n              // if strict, include non-standard properties\r\n              if (isStrict) {\r\n                  return getObjectCloneStrict(object, realm, handleCopy, cache);\r\n              }\r\n              var length_1 = object.length;\r\n              clone = new Constructor();\r\n              cache.set(object, clone);\r\n              for (var index = 0; index < length_1; index++) {\r\n                  clone[index] = handleCopy(object[index], cache);\r\n              }\r\n              return clone;\r\n          }\r\n          // dates\r\n          if (object instanceof realm.Date) {\r\n              return new Constructor(object.getTime());\r\n          }\r\n          // regexps\r\n          if (object instanceof realm.RegExp) {\r\n              clone = new Constructor(object.source, object.flags || getRegExpFlags(object));\r\n              clone.lastIndex = object.lastIndex;\r\n              return clone;\r\n          }\r\n          // maps\r\n          if (realm.Map && object instanceof realm.Map) {\r\n              clone = new Constructor();\r\n              cache.set(object, clone);\r\n              object.forEach(function (value, key) {\r\n                  clone.set(key, handleCopy(value, cache));\r\n              });\r\n              return clone;\r\n          }\r\n          // sets\r\n          if (realm.Set && object instanceof realm.Set) {\r\n              clone = new Constructor();\r\n              cache.set(object, clone);\r\n              object.forEach(function (value) {\r\n                  clone.add(handleCopy(value, cache));\r\n              });\r\n              return clone;\r\n          }\r\n          // blobs\r\n          if (realm.Blob && object instanceof realm.Blob) {\r\n              return object.slice(0, object.size, object.type);\r\n          }\r\n          // buffers (node-only)\r\n          if (realm.Buffer && realm.Buffer.isBuffer(object)) {\r\n              clone = realm.Buffer.allocUnsafe\r\n                  ? realm.Buffer.allocUnsafe(object.length)\r\n                  : new Constructor(object.length);\r\n              cache.set(object, clone);\r\n              object.copy(clone);\r\n              return clone;\r\n          }\r\n          // arraybuffers / dataviews\r\n          if (realm.ArrayBuffer) {\r\n              // dataviews\r\n              if (realm.ArrayBuffer.isView(object)) {\r\n                  clone = new Constructor(object.buffer.slice(0));\r\n                  cache.set(object, clone);\r\n                  return clone;\r\n              }\r\n              // arraybuffers\r\n              if (object instanceof realm.ArrayBuffer) {\r\n                  clone = object.slice(0);\r\n                  cache.set(object, clone);\r\n                  return clone;\r\n              }\r\n          }\r\n          // if the object cannot / should not be cloned, don't\r\n          if (\r\n          // promise-like\r\n          typeof object.then === 'function' ||\r\n              // errors\r\n              object instanceof Error ||\r\n              // weakmaps\r\n              (realm.WeakMap && object instanceof realm.WeakMap) ||\r\n              // weaksets\r\n              (realm.WeakSet && object instanceof realm.WeakSet)) {\r\n              return object;\r\n          }\r\n          // assume anything left is a custom constructor\r\n          return getObjectClone(object, realm, handleCopy, cache);\r\n      };\r\n      return handleCopy(object, createCache());\r\n  }\r\n  // Adding reference to allow usage in CommonJS libraries compiled using TSC, which\r\n  // expects there to be a default property on the exported object. See\r\n  // [#37](https://github.com/planttheidea/fast-copy/issues/37) for details.\r\n  copy.default = copy;\r\n  /**\r\n   * @function strictCopy\r\n   *\r\n   * @description\r\n   * copy the object with `strict` option pre-applied\r\n   *\r\n   * @param object the object to copy\r\n   * @param [options] the options for copying with\r\n   * @param [options.realm] the realm (this) object the object is copied from\r\n   * @returns the copied object\r\n   */\r\n  copy.strict = function strictCopy(object, options) {\r\n      return copy(object, {\r\n          isStrict: true,\r\n          realm: options ? options.realm : void 0,\r\n      });\r\n  };\n\n  return copy;\n\n})));\n//# sourceMappingURL=fast-copy.js.map\n","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n  var index = -1,\n      length = source.length;\n\n  array || (array = Array(length));\n  while (++index < length) {\n    array[index] = source[index];\n  }\n  return array;\n}\n\nmodule.exports = copyArray;\n","exports.nextTick = function nextTick(fn) {\n    var args = Array.prototype.slice.call(arguments);\n    args.shift();\n    setTimeout(function () {\n        fn.apply(null, args);\n    }, 0);\n};\n\nexports.platform = exports.arch = \nexports.execPath = exports.title = 'browser';\nexports.pid = 1;\nexports.browser = true;\nexports.env = {};\nexports.argv = [];\n\nexports.binding = function (name) {\n\tthrow new Error('No such module. (Possibly not yet loaded)')\n};\n\n(function () {\n    var cwd = '/';\n    var path;\n    exports.cwd = function () { return cwd };\n    exports.chdir = function (dir) {\n        if (!path) path = require('path');\n        cwd = path.resolve(dir, cwd);\n    };\n})();\n\nexports.exit = exports.kill = \nexports.umask = exports.dlopen = \nexports.uptime = exports.memoryUsage = \nexports.uvCounters = function() {};\nexports.features = {};\n","// Styles\nimport \"../../../src/styles/components/_selection-controls.sass\";\nimport \"../../../src/components/VRadioGroup/VRadioGroup.sass\"; // Extensions\n\nimport VInput from '../VInput';\nimport { BaseItemGroup } from '../VItemGroup/VItemGroup'; // Types\n\nimport mixins from '../../util/mixins';\nconst baseMixins = mixins(BaseItemGroup, VInput);\n/* @vue/component */\n\nexport default baseMixins.extend({\n  name: 'v-radio-group',\n\n  provide() {\n    return {\n      radioGroup: this\n    };\n  },\n\n  props: {\n    column: {\n      type: Boolean,\n      default: true\n    },\n    height: {\n      type: [Number, String],\n      default: 'auto'\n    },\n    name: String,\n    row: Boolean,\n    // If no value set on VRadio\n    // will match valueComparator\n    // force default to null\n    value: null\n  },\n  computed: {\n    classes() {\n      return { ...VInput.options.computed.classes.call(this),\n        'v-input--selection-controls v-input--radio-group': true,\n        'v-input--radio-group--column': this.column && !this.row,\n        'v-input--radio-group--row': this.row\n      };\n    }\n\n  },\n  methods: {\n    genDefaultSlot() {\n      return this.$createElement('div', {\n        staticClass: 'v-input--radio-group__input',\n        attrs: {\n          id: this.id,\n          role: 'radiogroup',\n          'aria-labelledby': this.computedId\n        }\n      }, VInput.options.methods.genDefaultSlot.call(this));\n    },\n\n    genInputSlot() {\n      const render = VInput.options.methods.genInputSlot.call(this);\n      delete render.data.on.click;\n      return render;\n    },\n\n    genLabel() {\n      const label = VInput.options.methods.genLabel.call(this);\n      if (!label) return null;\n      label.data.attrs.id = this.computedId; // WAI considers this an orphaned label\n\n      delete label.data.attrs.for;\n      label.tag = 'legend';\n      return label;\n    },\n\n    onClick: BaseItemGroup.options.methods.onClick\n  },\n\n  render(h) {\n    const vnode = VInput.options.render.call(this, h);\n\n    this._b(vnode.data, 'div', this.attrs$);\n\n    return vnode;\n  }\n\n});\n//# sourceMappingURL=VRadioGroup.js.map","\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = createDebug.debug = createDebug['default'] = createDebug;\nexports.coerce = coerce;\nexports.disable = disable;\nexports.enable = enable;\nexports.enabled = enabled;\nexports.humanize = require('ms');\n\n/**\n * Active `debug` instances.\n */\nexports.instances = [];\n\n/**\n * The currently active debug mode names, and names to skip.\n */\n\nexports.names = [];\nexports.skips = [];\n\n/**\n * Map of special \"%n\" handling functions, for the debug \"format\" argument.\n *\n * Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n */\n\nexports.formatters = {};\n\n/**\n * Select a color.\n * @param {String} namespace\n * @return {Number}\n * @api private\n */\n\nfunction selectColor(namespace) {\n  var hash = 0, i;\n\n  for (i in namespace) {\n    hash  = ((hash << 5) - hash) + namespace.charCodeAt(i);\n    hash |= 0; // Convert to 32bit integer\n  }\n\n  return exports.colors[Math.abs(hash) % exports.colors.length];\n}\n\n/**\n * Create a debugger with the given `namespace`.\n *\n * @param {String} namespace\n * @return {Function}\n * @api public\n */\n\nfunction createDebug(namespace) {\n\n  var prevTime;\n\n  function debug() {\n    // disabled?\n    if (!debug.enabled) return;\n\n    var self = debug;\n\n    // set `diff` timestamp\n    var curr = +new Date();\n    var ms = curr - (prevTime || curr);\n    self.diff = ms;\n    self.prev = prevTime;\n    self.curr = curr;\n    prevTime = curr;\n\n    // turn the `arguments` into a proper Array\n    var args = new Array(arguments.length);\n    for (var i = 0; i < args.length; i++) {\n      args[i] = arguments[i];\n    }\n\n    args[0] = exports.coerce(args[0]);\n\n    if ('string' !== typeof args[0]) {\n      // anything else let's inspect with %O\n      args.unshift('%O');\n    }\n\n    // apply any `formatters` transformations\n    var index = 0;\n    args[0] = args[0].replace(/%([a-zA-Z%])/g, function(match, format) {\n      // if we encounter an escaped % then don't increase the array index\n      if (match === '%%') return match;\n      index++;\n      var formatter = exports.formatters[format];\n      if ('function' === typeof formatter) {\n        var val = args[index];\n        match = formatter.call(self, val);\n\n        // now we need to remove `args[index]` since it's inlined in the `format`\n        args.splice(index, 1);\n        index--;\n      }\n      return match;\n    });\n\n    // apply env-specific formatting (colors, etc.)\n    exports.formatArgs.call(self, args);\n\n    var logFn = debug.log || exports.log || console.log.bind(console);\n    logFn.apply(self, args);\n  }\n\n  debug.namespace = namespace;\n  debug.enabled = exports.enabled(namespace);\n  debug.useColors = exports.useColors();\n  debug.color = selectColor(namespace);\n  debug.destroy = destroy;\n\n  // env-specific initialization logic for debug instances\n  if ('function' === typeof exports.init) {\n    exports.init(debug);\n  }\n\n  exports.instances.push(debug);\n\n  return debug;\n}\n\nfunction destroy () {\n  var index = exports.instances.indexOf(this);\n  if (index !== -1) {\n    exports.instances.splice(index, 1);\n    return true;\n  } else {\n    return false;\n  }\n}\n\n/**\n * Enables a debug mode by namespaces. This can include modes\n * separated by a colon and wildcards.\n *\n * @param {String} namespaces\n * @api public\n */\n\nfunction enable(namespaces) {\n  exports.save(namespaces);\n\n  exports.names = [];\n  exports.skips = [];\n\n  var i;\n  var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n  var len = split.length;\n\n  for (i = 0; i < len; i++) {\n    if (!split[i]) continue; // ignore empty strings\n    namespaces = split[i].replace(/\\*/g, '.*?');\n    if (namespaces[0] === '-') {\n      exports.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));\n    } else {\n      exports.names.push(new RegExp('^' + namespaces + '$'));\n    }\n  }\n\n  for (i = 0; i < exports.instances.length; i++) {\n    var instance = exports.instances[i];\n    instance.enabled = exports.enabled(instance.namespace);\n  }\n}\n\n/**\n * Disable debug output.\n *\n * @api public\n */\n\nfunction disable() {\n  exports.enable('');\n}\n\n/**\n * Returns true if the given mode name is enabled, false otherwise.\n *\n * @param {String} name\n * @return {Boolean}\n * @api public\n */\n\nfunction enabled(name) {\n  if (name[name.length - 1] === '*') {\n    return true;\n  }\n  var i, len;\n  for (i = 0, len = exports.skips.length; i < len; i++) {\n    if (exports.skips[i].test(name)) {\n      return false;\n    }\n  }\n  for (i = 0, len = exports.names.length; i < len; i++) {\n    if (exports.names[i].test(name)) {\n      return true;\n    }\n  }\n  return false;\n}\n\n/**\n * Coerce `val`.\n *\n * @param {Mixed} val\n * @return {Mixed}\n * @api private\n */\n\nfunction coerce(val) {\n  if (val instanceof Error) return val.stack || val.message;\n  return val;\n}\n","/**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\nfunction last(array) {\n  var length = array == null ? 0 : array.length;\n  return length ? array[length - 1] : undefined;\n}\n\nmodule.exports = last;\n","module.exports = require(\"./build/cjs/index.js\");","'use strict';\nvar $export = require('./_export');\nvar toObject = require('./_to-object');\nvar aFunction = require('./_a-function');\nvar $defineProperty = require('./_object-dp');\n\n// B.2.2.2 Object.prototype.__defineGetter__(P, getter)\nrequire('./_descriptors') && $export($export.P + require('./_object-forced-pam'), 'Object', {\n  __defineGetter__: function __defineGetter__(P, getter) {\n    $defineProperty.f(toObject(this), P, { get: aFunction(getter), enumerable: true, configurable: true });\n  }\n});\n","// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n  return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n","function hex2rgba (hex) {\n  if (typeof hex === 'number') {\n    hex = hex.toString()\n  }\n\n  if (typeof hex !== 'string') {\n    throw new Error('Color should be defined as hex string')\n  }\n\n  let hexCode = hex.slice().replace('#', '').split('')\n  if (hexCode.length < 3 || hexCode.length === 5 || hexCode.length > 8) {\n    throw new Error('Invalid hex color: ' + hex)\n  }\n\n  // Convert from short to long form (fff -> ffffff)\n  if (hexCode.length === 3 || hexCode.length === 4) {\n    hexCode = Array.prototype.concat.apply([], hexCode.map(function (c) {\n      return [c, c]\n    }))\n  }\n\n  // Add default alpha value\n  if (hexCode.length === 6) hexCode.push('F', 'F')\n\n  const hexValue = parseInt(hexCode.join(''), 16)\n\n  return {\n    r: (hexValue >> 24) & 255,\n    g: (hexValue >> 16) & 255,\n    b: (hexValue >> 8) & 255,\n    a: hexValue & 255,\n    hex: '#' + hexCode.slice(0, 6).join('')\n  }\n}\n\nexports.getOptions = function getOptions (options) {\n  if (!options) options = {}\n  if (!options.color) options.color = {}\n\n  const margin = typeof options.margin === 'undefined' ||\n    options.margin === null ||\n    options.margin < 0\n    ? 4\n    : options.margin\n\n  const width = options.width && options.width >= 21 ? options.width : undefined\n  const scale = options.scale || 4\n\n  return {\n    width: width,\n    scale: width ? 4 : scale,\n    margin: margin,\n    color: {\n      dark: hex2rgba(options.color.dark || '#000000ff'),\n      light: hex2rgba(options.color.light || '#ffffffff')\n    },\n    type: options.type,\n    rendererOpts: options.rendererOpts || {}\n  }\n}\n\nexports.getScale = function getScale (qrSize, opts) {\n  return opts.width && opts.width >= qrSize + opts.margin * 2\n    ? opts.width / (qrSize + opts.margin * 2)\n    : opts.scale\n}\n\nexports.getImageWidth = function getImageWidth (qrSize, opts) {\n  const scale = exports.getScale(qrSize, opts)\n  return Math.floor((qrSize + opts.margin * 2) * scale)\n}\n\nexports.qrToImageData = function qrToImageData (imgData, qr, opts) {\n  const size = qr.modules.size\n  const data = qr.modules.data\n  const scale = exports.getScale(size, opts)\n  const symbolSize = Math.floor((size + opts.margin * 2) * scale)\n  const scaledMargin = opts.margin * scale\n  const palette = [opts.color.light, opts.color.dark]\n\n  for (let i = 0; i < symbolSize; i++) {\n    for (let j = 0; j < symbolSize; j++) {\n      let posDst = (i * symbolSize + j) * 4\n      let pxColor = opts.color.light\n\n      if (i >= scaledMargin && j >= scaledMargin &&\n        i < symbolSize - scaledMargin && j < symbolSize - scaledMargin) {\n        const iSrc = Math.floor((i - scaledMargin) / scale)\n        const jSrc = Math.floor((j - scaledMargin) / scale)\n        pxColor = palette[data[iSrc * size + jSrc] ? 1 : 0]\n      }\n\n      imgData[posDst++] = pxColor.r\n      imgData[posDst++] = pxColor.g\n      imgData[posDst++] = pxColor.b\n      imgData[posDst] = pxColor.a\n    }\n  }\n}\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","// ie9- setTimeout & setInterval additional parameters fix\nvar global = require('./_global');\nvar $export = require('./_export');\nvar userAgent = require('./_user-agent');\nvar slice = [].slice;\nvar MSIE = /MSIE .\\./.test(userAgent); // <- dirty ie9- check\nvar wrap = function (set) {\n  return function (fn, time /* , ...args */) {\n    var boundArgs = arguments.length > 2;\n    var args = boundArgs ? slice.call(arguments, 2) : false;\n    return set(boundArgs ? function () {\n      // eslint-disable-next-line no-new-func\n      (typeof fn == 'function' ? fn : Function(fn)).apply(this, args);\n    } : fn, time);\n  };\n};\n$export($export.G + $export.B + $export.F * MSIE, {\n  setTimeout: wrap(global.setTimeout),\n  setInterval: wrap(global.setInterval)\n});\n","var baseFindIndex = require('./_baseFindIndex'),\n    baseIsNaN = require('./_baseIsNaN'),\n    strictIndexOf = require('./_strictIndexOf');\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n  return value === value\n    ? strictIndexOf(array, value, fromIndex)\n    : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\nmodule.exports = baseIndexOf;\n","// Mixins\nimport Themeable from '../../mixins/themeable';\n/* @vue/component */\n\nexport default Themeable.extend({\n  name: 'v-theme-provider',\n  props: {\n    root: Boolean\n  },\n  computed: {\n    isDark() {\n      return this.root ? this.rootIsDark : Themeable.options.computed.isDark.call(this);\n    }\n\n  },\n\n  render() {\n    /* istanbul ignore next */\n    return this.$slots.default && this.$slots.default.find(node => !node.isComment && node.text !== ' ');\n  }\n\n});\n//# sourceMappingURL=VThemeProvider.js.map","var baseForOwn = require('./_baseForOwn'),\n    createBaseEach = require('./_createBaseEach');\n\n/**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\nvar baseEach = createBaseEach(baseForOwn);\n\nmodule.exports = baseEach;\n","'use strict';\n// B.2.3.5 String.prototype.bold()\nrequire('./_string-html')('bold', function (createHTML) {\n  return function bold() {\n    return createHTML(this, 'b', '', '');\n  };\n});\n","// Styles\nimport \"../../../src/components/VProgressCircular/VProgressCircular.sass\"; // Directives\n\nimport intersect from '../../directives/intersect'; // Mixins\n\nimport Colorable from '../../mixins/colorable'; // Utils\n\nimport { convertToUnit } from '../../util/helpers';\n/* @vue/component */\n\nexport default Colorable.extend({\n  name: 'v-progress-circular',\n  directives: {\n    intersect\n  },\n  props: {\n    button: Boolean,\n    indeterminate: Boolean,\n    rotate: {\n      type: [Number, String],\n      default: 0\n    },\n    size: {\n      type: [Number, String],\n      default: 32\n    },\n    width: {\n      type: [Number, String],\n      default: 4\n    },\n    value: {\n      type: [Number, String],\n      default: 0\n    }\n  },\n  data: () => ({\n    radius: 20,\n    isVisible: true\n  }),\n  computed: {\n    calculatedSize() {\n      return Number(this.size) + (this.button ? 8 : 0);\n    },\n\n    circumference() {\n      return 2 * Math.PI * this.radius;\n    },\n\n    classes() {\n      return {\n        'v-progress-circular--visible': this.isVisible,\n        'v-progress-circular--indeterminate': this.indeterminate,\n        'v-progress-circular--button': this.button\n      };\n    },\n\n    normalizedValue() {\n      if (this.value < 0) {\n        return 0;\n      }\n\n      if (this.value > 100) {\n        return 100;\n      }\n\n      return parseFloat(this.value);\n    },\n\n    strokeDashArray() {\n      return Math.round(this.circumference * 1000) / 1000;\n    },\n\n    strokeDashOffset() {\n      return (100 - this.normalizedValue) / 100 * this.circumference + 'px';\n    },\n\n    strokeWidth() {\n      return Number(this.width) / +this.size * this.viewBoxSize * 2;\n    },\n\n    styles() {\n      return {\n        height: convertToUnit(this.calculatedSize),\n        width: convertToUnit(this.calculatedSize)\n      };\n    },\n\n    svgStyles() {\n      return {\n        transform: `rotate(${Number(this.rotate)}deg)`\n      };\n    },\n\n    viewBoxSize() {\n      return this.radius / (1 - Number(this.width) / +this.size);\n    }\n\n  },\n  methods: {\n    genCircle(name, offset) {\n      return this.$createElement('circle', {\n        class: `v-progress-circular__${name}`,\n        attrs: {\n          fill: 'transparent',\n          cx: 2 * this.viewBoxSize,\n          cy: 2 * this.viewBoxSize,\n          r: this.radius,\n          'stroke-width': this.strokeWidth,\n          'stroke-dasharray': this.strokeDashArray,\n          'stroke-dashoffset': offset\n        }\n      });\n    },\n\n    genSvg() {\n      const children = [this.indeterminate || this.genCircle('underlay', 0), this.genCircle('overlay', this.strokeDashOffset)];\n      return this.$createElement('svg', {\n        style: this.svgStyles,\n        attrs: {\n          xmlns: 'http://www.w3.org/2000/svg',\n          viewBox: `${this.viewBoxSize} ${this.viewBoxSize} ${2 * this.viewBoxSize} ${2 * this.viewBoxSize}`\n        }\n      }, children);\n    },\n\n    genInfo() {\n      return this.$createElement('div', {\n        staticClass: 'v-progress-circular__info'\n      }, this.$slots.default);\n    },\n\n    onObserve(entries, observer, isIntersecting) {\n      this.isVisible = isIntersecting;\n    }\n\n  },\n\n  render(h) {\n    return h('div', this.setTextColor(this.color, {\n      staticClass: 'v-progress-circular',\n      attrs: {\n        role: 'progressbar',\n        'aria-valuemin': 0,\n        'aria-valuemax': 100,\n        'aria-valuenow': this.indeterminate ? undefined : this.normalizedValue\n      },\n      class: this.classes,\n      directives: [{\n        name: 'intersect',\n        value: this.onObserve\n      }],\n      style: this.styles,\n      on: this.$listeners\n    }), [this.genSvg(), this.genInfo()]);\n  }\n\n});\n//# sourceMappingURL=VProgressCircular.js.map","'use strict';\n\nvar anObject = require('./_an-object');\nvar toLength = require('./_to-length');\nvar advanceStringIndex = require('./_advance-string-index');\nvar regExpExec = require('./_regexp-exec-abstract');\n\n// @@match logic\nrequire('./_fix-re-wks')('match', 1, function (defined, MATCH, $match, maybeCallNative) {\n  return [\n    // `String.prototype.match` method\n    // https://tc39.github.io/ecma262/#sec-string.prototype.match\n    function match(regexp) {\n      var O = defined(this);\n      var fn = regexp == undefined ? undefined : regexp[MATCH];\n      return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[MATCH](String(O));\n    },\n    // `RegExp.prototype[@@match]` method\n    // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@match\n    function (regexp) {\n      var res = maybeCallNative($match, regexp, this);\n      if (res.done) return res.value;\n      var rx = anObject(regexp);\n      var S = String(this);\n      if (!rx.global) return regExpExec(rx, S);\n      var fullUnicode = rx.unicode;\n      rx.lastIndex = 0;\n      var A = [];\n      var n = 0;\n      var result;\n      while ((result = regExpExec(rx, S)) !== null) {\n        var matchStr = String(result[0]);\n        A[n] = matchStr;\n        if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n        n++;\n      }\n      return n === 0 ? null : A;\n    }\n  ];\n});\n","import { VExpandTransition } from '../transitions'; // Mixins\n\nimport Bootable from '../../mixins/bootable';\nimport Colorable from '../../mixins/colorable';\nimport { inject as RegistrableInject } from '../../mixins/registrable'; // Utilities\n\nimport { getSlot } from '../../util/helpers';\nimport mixins from '../../util/mixins';\nconst baseMixins = mixins(Bootable, Colorable, RegistrableInject('expansionPanel', 'v-expansion-panel-content', 'v-expansion-panel'));\n/* @vue/component */\n\nexport default baseMixins.extend().extend({\n  name: 'v-expansion-panel-content',\n  data: () => ({\n    isActive: false\n  }),\n  computed: {\n    parentIsActive() {\n      return this.expansionPanel.isActive;\n    }\n\n  },\n  watch: {\n    parentIsActive: {\n      immediate: true,\n\n      handler(val, oldVal) {\n        if (val) this.isBooted = true;\n        if (oldVal == null) this.isActive = val;else this.$nextTick(() => this.isActive = val);\n      }\n\n    }\n  },\n\n  created() {\n    this.expansionPanel.registerContent(this);\n  },\n\n  beforeDestroy() {\n    this.expansionPanel.unregisterContent();\n  },\n\n  render(h) {\n    return h(VExpandTransition, this.showLazyContent(() => [h('div', this.setBackgroundColor(this.color, {\n      staticClass: 'v-expansion-panel-content',\n      directives: [{\n        name: 'show',\n        value: this.isActive\n      }]\n    }), [h('div', {\n      class: 'v-expansion-panel-content__wrap'\n    }, getSlot(this))])]));\n  }\n\n});\n//# sourceMappingURL=VExpansionPanelContent.js.map","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n  this.__data__ = nativeCreate ? nativeCreate(null) : {};\n  this.size = 0;\n}\n\nmodule.exports = hashClear;\n","// Helpers\nimport { wrapInArray, sortItems, deepEqual, groupItems, searchItems, fillArray } from '../../util/helpers';\nimport Vue from 'vue';\nexport default Vue.extend({\n  name: 'v-data',\n  inheritAttrs: false,\n  props: {\n    items: {\n      type: Array,\n      default: () => []\n    },\n    options: {\n      type: Object,\n      default: () => ({})\n    },\n    sortBy: {\n      type: [String, Array],\n      default: () => []\n    },\n    sortDesc: {\n      type: [Boolean, Array],\n      default: () => []\n    },\n    customSort: {\n      type: Function,\n      default: sortItems\n    },\n    mustSort: Boolean,\n    multiSort: Boolean,\n    page: {\n      type: Number,\n      default: 1\n    },\n    itemsPerPage: {\n      type: Number,\n      default: 10\n    },\n    groupBy: {\n      type: [String, Array],\n      default: () => []\n    },\n    groupDesc: {\n      type: [Boolean, Array],\n      default: () => []\n    },\n    customGroup: {\n      type: Function,\n      default: groupItems\n    },\n    locale: {\n      type: String,\n      default: 'en-US'\n    },\n    disableSort: Boolean,\n    disablePagination: Boolean,\n    disableFiltering: Boolean,\n    search: String,\n    customFilter: {\n      type: Function,\n      default: searchItems\n    },\n    serverItemsLength: {\n      type: Number,\n      default: -1\n    }\n  },\n\n  data() {\n    let internalOptions = {\n      page: this.page,\n      itemsPerPage: this.itemsPerPage,\n      sortBy: wrapInArray(this.sortBy),\n      sortDesc: wrapInArray(this.sortDesc),\n      groupBy: wrapInArray(this.groupBy),\n      groupDesc: wrapInArray(this.groupDesc),\n      mustSort: this.mustSort,\n      multiSort: this.multiSort\n    };\n\n    if (this.options) {\n      internalOptions = Object.assign(internalOptions, this.options);\n    }\n\n    const {\n      sortBy,\n      sortDesc,\n      groupBy,\n      groupDesc\n    } = internalOptions;\n    const sortDiff = sortBy.length - sortDesc.length;\n    const groupDiff = groupBy.length - groupDesc.length;\n\n    if (sortDiff > 0) {\n      internalOptions.sortDesc.push(...fillArray(sortDiff, false));\n    }\n\n    if (groupDiff > 0) {\n      internalOptions.groupDesc.push(...fillArray(groupDiff, false));\n    }\n\n    return {\n      internalOptions\n    };\n  },\n\n  computed: {\n    itemsLength() {\n      return this.serverItemsLength >= 0 ? this.serverItemsLength : this.filteredItems.length;\n    },\n\n    pageCount() {\n      return this.internalOptions.itemsPerPage <= 0 ? 1 : Math.ceil(this.itemsLength / this.internalOptions.itemsPerPage);\n    },\n\n    pageStart() {\n      if (this.internalOptions.itemsPerPage === -1 || !this.items.length) return 0;\n      return (this.internalOptions.page - 1) * this.internalOptions.itemsPerPage;\n    },\n\n    pageStop() {\n      if (this.internalOptions.itemsPerPage === -1) return this.itemsLength;\n      if (!this.items.length) return 0;\n      return Math.min(this.itemsLength, this.internalOptions.page * this.internalOptions.itemsPerPage);\n    },\n\n    isGrouped() {\n      return !!this.internalOptions.groupBy.length;\n    },\n\n    pagination() {\n      return {\n        page: this.internalOptions.page,\n        itemsPerPage: this.internalOptions.itemsPerPage,\n        pageStart: this.pageStart,\n        pageStop: this.pageStop,\n        pageCount: this.pageCount,\n        itemsLength: this.itemsLength\n      };\n    },\n\n    filteredItems() {\n      let items = this.items.slice();\n\n      if (!this.disableFiltering && this.serverItemsLength <= 0) {\n        items = this.customFilter(items, this.search);\n      }\n\n      return items;\n    },\n\n    computedItems() {\n      let items = this.filteredItems.slice();\n\n      if ((!this.disableSort || this.internalOptions.groupBy.length) && this.serverItemsLength <= 0) {\n        items = this.sortItems(items);\n      }\n\n      if (!this.disablePagination && this.serverItemsLength <= 0) {\n        items = this.paginateItems(items);\n      }\n\n      return items;\n    },\n\n    groupedItems() {\n      return this.isGrouped ? this.groupItems(this.computedItems) : null;\n    },\n\n    scopedProps() {\n      return {\n        sort: this.sort,\n        sortArray: this.sortArray,\n        group: this.group,\n        items: this.computedItems,\n        options: this.internalOptions,\n        updateOptions: this.updateOptions,\n        pagination: this.pagination,\n        groupedItems: this.groupedItems,\n        originalItemsLength: this.items.length\n      };\n    },\n\n    computedOptions() {\n      return { ...this.options\n      };\n    }\n\n  },\n  watch: {\n    computedOptions: {\n      handler(options, old) {\n        if (deepEqual(options, old)) return;\n        this.updateOptions(options);\n      },\n\n      deep: true,\n      immediate: true\n    },\n    internalOptions: {\n      handler(options, old) {\n        if (deepEqual(options, old)) return;\n        this.$emit('update:options', options);\n      },\n\n      deep: true,\n      immediate: true\n    },\n\n    page(page) {\n      this.updateOptions({\n        page\n      });\n    },\n\n    'internalOptions.page'(page) {\n      this.$emit('update:page', page);\n    },\n\n    itemsPerPage(itemsPerPage) {\n      this.updateOptions({\n        itemsPerPage\n      });\n    },\n\n    'internalOptions.itemsPerPage'(itemsPerPage) {\n      this.$emit('update:items-per-page', itemsPerPage);\n    },\n\n    sortBy(sortBy) {\n      this.updateOptions({\n        sortBy: wrapInArray(sortBy)\n      });\n    },\n\n    'internalOptions.sortBy'(sortBy, old) {\n      !deepEqual(sortBy, old) && this.$emit('update:sort-by', Array.isArray(this.sortBy) ? sortBy : sortBy[0]);\n    },\n\n    sortDesc(sortDesc) {\n      this.updateOptions({\n        sortDesc: wrapInArray(sortDesc)\n      });\n    },\n\n    'internalOptions.sortDesc'(sortDesc, old) {\n      !deepEqual(sortDesc, old) && this.$emit('update:sort-desc', Array.isArray(this.sortDesc) ? sortDesc : sortDesc[0]);\n    },\n\n    groupBy(groupBy) {\n      this.updateOptions({\n        groupBy: wrapInArray(groupBy)\n      });\n    },\n\n    'internalOptions.groupBy'(groupBy, old) {\n      !deepEqual(groupBy, old) && this.$emit('update:group-by', Array.isArray(this.groupBy) ? groupBy : groupBy[0]);\n    },\n\n    groupDesc(groupDesc) {\n      this.updateOptions({\n        groupDesc: wrapInArray(groupDesc)\n      });\n    },\n\n    'internalOptions.groupDesc'(groupDesc, old) {\n      !deepEqual(groupDesc, old) && this.$emit('update:group-desc', Array.isArray(this.groupDesc) ? groupDesc : groupDesc[0]);\n    },\n\n    multiSort(multiSort) {\n      this.updateOptions({\n        multiSort\n      });\n    },\n\n    'internalOptions.multiSort'(multiSort) {\n      this.$emit('update:multi-sort', multiSort);\n    },\n\n    mustSort(mustSort) {\n      this.updateOptions({\n        mustSort\n      });\n    },\n\n    'internalOptions.mustSort'(mustSort) {\n      this.$emit('update:must-sort', mustSort);\n    },\n\n    pageCount: {\n      handler(pageCount) {\n        this.$emit('page-count', pageCount);\n      },\n\n      immediate: true\n    },\n    computedItems: {\n      handler(computedItems) {\n        this.$emit('current-items', computedItems);\n      },\n\n      immediate: true\n    },\n    pagination: {\n      handler(pagination, old) {\n        if (deepEqual(pagination, old)) return;\n        this.$emit('pagination', this.pagination);\n      },\n\n      immediate: true\n    }\n  },\n  methods: {\n    toggle(key, oldBy, oldDesc, page, mustSort, multiSort) {\n      let by = oldBy.slice();\n      let desc = oldDesc.slice();\n      const byIndex = by.findIndex(k => k === key);\n\n      if (byIndex < 0) {\n        if (!multiSort) {\n          by = [];\n          desc = [];\n        }\n\n        by.push(key);\n        desc.push(false);\n      } else if (byIndex >= 0 && !desc[byIndex]) {\n        desc[byIndex] = true;\n      } else if (!mustSort) {\n        by.splice(byIndex, 1);\n        desc.splice(byIndex, 1);\n      } else {\n        desc[byIndex] = false;\n      } // Reset page to 1 if sortBy or sortDesc have changed\n\n\n      if (!deepEqual(by, oldBy) || !deepEqual(desc, oldDesc)) {\n        page = 1;\n      }\n\n      return {\n        by,\n        desc,\n        page\n      };\n    },\n\n    group(key) {\n      const {\n        by: groupBy,\n        desc: groupDesc,\n        page\n      } = this.toggle(key, this.internalOptions.groupBy, this.internalOptions.groupDesc, this.internalOptions.page, true, false);\n      this.updateOptions({\n        groupBy,\n        groupDesc,\n        page\n      });\n    },\n\n    sort(key) {\n      if (Array.isArray(key)) return this.sortArray(key);\n      const {\n        by: sortBy,\n        desc: sortDesc,\n        page\n      } = this.toggle(key, this.internalOptions.sortBy, this.internalOptions.sortDesc, this.internalOptions.page, this.internalOptions.mustSort, this.internalOptions.multiSort);\n      this.updateOptions({\n        sortBy,\n        sortDesc,\n        page\n      });\n    },\n\n    sortArray(sortBy) {\n      const sortDesc = sortBy.map(s => {\n        const i = this.internalOptions.sortBy.findIndex(k => k === s);\n        return i > -1 ? this.internalOptions.sortDesc[i] : false;\n      });\n      this.updateOptions({\n        sortBy,\n        sortDesc\n      });\n    },\n\n    updateOptions(options) {\n      this.internalOptions = { ...this.internalOptions,\n        ...options,\n        page: this.serverItemsLength < 0 ? Math.max(1, Math.min(options.page || this.internalOptions.page, this.pageCount)) : options.page || this.internalOptions.page\n      };\n    },\n\n    sortItems(items) {\n      let sortBy = [];\n      let sortDesc = [];\n\n      if (!this.disableSort) {\n        sortBy = this.internalOptions.sortBy;\n        sortDesc = this.internalOptions.sortDesc;\n      }\n\n      if (this.internalOptions.groupBy.length) {\n        sortBy = [...this.internalOptions.groupBy, ...sortBy];\n        sortDesc = [...this.internalOptions.groupDesc, ...sortDesc];\n      }\n\n      return this.customSort(items, sortBy, sortDesc, this.locale);\n    },\n\n    groupItems(items) {\n      return this.customGroup(items, this.internalOptions.groupBy, this.internalOptions.groupDesc);\n    },\n\n    paginateItems(items) {\n      // Make sure we don't try to display non-existant page if items suddenly change\n      // TODO: Could possibly move this to pageStart/pageStop?\n      if (this.serverItemsLength === -1 && items.length <= this.pageStart) {\n        this.internalOptions.page = Math.max(1, Math.ceil(items.length / this.internalOptions.itemsPerPage)) || 1; // Prevent NaN\n      }\n\n      return items.slice(this.pageStart, this.pageStop);\n    }\n\n  },\n\n  render() {\n    return this.$scopedSlots.default && this.$scopedSlots.default(this.scopedProps);\n  }\n\n});\n//# sourceMappingURL=VData.js.map","// Mixins\nimport Delayable from '../delayable';\nimport Toggleable from '../toggleable'; // Utilities\n\nimport mixins from '../../util/mixins';\nimport { getSlot, getSlotType } from '../../util/helpers';\nimport { consoleError } from '../../util/console';\nconst baseMixins = mixins(Delayable, Toggleable);\n/* @vue/component */\n\nexport default baseMixins.extend({\n  name: 'activatable',\n  props: {\n    activator: {\n      default: null,\n      validator: val => {\n        return ['string', 'object'].includes(typeof val);\n      }\n    },\n    disabled: Boolean,\n    internalActivator: Boolean,\n    openOnHover: Boolean,\n    openOnFocus: Boolean\n  },\n  data: () => ({\n    // Do not use this directly, call getActivator() instead\n    activatorElement: null,\n    activatorNode: [],\n    events: ['click', 'mouseenter', 'mouseleave', 'focus'],\n    listeners: {}\n  }),\n  watch: {\n    activator: 'resetActivator',\n    openOnFocus: 'resetActivator',\n    openOnHover: 'resetActivator'\n  },\n\n  mounted() {\n    const slotType = getSlotType(this, 'activator', true);\n\n    if (slotType && ['v-slot', 'normal'].includes(slotType)) {\n      consoleError(`The activator slot must be bound, try '<template v-slot:activator=\"{ on }\"><v-btn v-on=\"on\">'`, this);\n    }\n\n    this.addActivatorEvents();\n  },\n\n  beforeDestroy() {\n    this.removeActivatorEvents();\n  },\n\n  methods: {\n    addActivatorEvents() {\n      if (!this.activator || this.disabled || !this.getActivator()) return;\n      this.listeners = this.genActivatorListeners();\n      const keys = Object.keys(this.listeners);\n\n      for (const key of keys) {\n        this.getActivator().addEventListener(key, this.listeners[key]);\n      }\n    },\n\n    genActivator() {\n      const node = getSlot(this, 'activator', Object.assign(this.getValueProxy(), {\n        on: this.genActivatorListeners(),\n        attrs: this.genActivatorAttributes()\n      })) || [];\n      this.activatorNode = node;\n      return node;\n    },\n\n    genActivatorAttributes() {\n      return {\n        role: 'button',\n        'aria-haspopup': true,\n        'aria-expanded': String(this.isActive)\n      };\n    },\n\n    genActivatorListeners() {\n      if (this.disabled) return {};\n      const listeners = {};\n\n      if (this.openOnHover) {\n        listeners.mouseenter = e => {\n          this.getActivator(e);\n          this.runDelay('open');\n        };\n\n        listeners.mouseleave = e => {\n          this.getActivator(e);\n          this.runDelay('close');\n        };\n      } else {\n        listeners.click = e => {\n          const activator = this.getActivator(e);\n          if (activator) activator.focus();\n          e.stopPropagation();\n          this.isActive = !this.isActive;\n        };\n      }\n\n      if (this.openOnFocus) {\n        listeners.focus = e => {\n          this.getActivator(e);\n          e.stopPropagation();\n          this.isActive = !this.isActive;\n        };\n      }\n\n      return listeners;\n    },\n\n    getActivator(e) {\n      var _activator;\n\n      // If we've already fetched the activator, re-use\n      if (this.activatorElement) return this.activatorElement;\n      let activator = null;\n\n      if (this.activator) {\n        const target = this.internalActivator ? this.$el : document;\n\n        if (typeof this.activator === 'string') {\n          // Selector\n          activator = target.querySelector(this.activator);\n        } else if (this.activator.$el) {\n          // Component (ref)\n          activator = this.activator.$el;\n        } else {\n          // HTMLElement | Element\n          activator = this.activator;\n        }\n      } else if (this.activatorNode.length === 1 || this.activatorNode.length && !e) {\n        // Use the contents of the activator slot\n        // There's either only one element in it or we\n        // don't have a click event to use as a last resort\n        const vm = this.activatorNode[0].componentInstance;\n\n        if (vm && vm.$options.mixins && //                         Activatable is indirectly used via Menuable\n        vm.$options.mixins.some(m => m.options && ['activatable', 'menuable'].includes(m.options.name))) {\n          // Activator is actually another activatible component, use its activator (#8846)\n          activator = vm.getActivator();\n        } else {\n          activator = this.activatorNode[0].elm;\n        }\n      } else if (e) {\n        // Activated by a click or focus event\n        activator = e.currentTarget || e.target;\n      } // The activator should only be a valid element (Ignore comments and text nodes)\n\n\n      this.activatorElement = ((_activator = activator) == null ? void 0 : _activator.nodeType) === Node.ELEMENT_NODE ? activator : null;\n      return this.activatorElement;\n    },\n\n    getContentSlot() {\n      return getSlot(this, 'default', this.getValueProxy(), true);\n    },\n\n    getValueProxy() {\n      const self = this;\n      return {\n        get value() {\n          return self.isActive;\n        },\n\n        set value(isActive) {\n          self.isActive = isActive;\n        }\n\n      };\n    },\n\n    removeActivatorEvents() {\n      if (!this.activator || !this.activatorElement) return;\n      const keys = Object.keys(this.listeners);\n\n      for (const key of keys) {\n        this.activatorElement.removeEventListener(key, this.listeners[key]);\n      }\n\n      this.listeners = {};\n    },\n\n    resetActivator() {\n      this.removeActivatorEvents();\n      this.activatorElement = null;\n      this.getActivator();\n      this.addActivatorEvents();\n    }\n\n  }\n});\n//# sourceMappingURL=index.js.map","export default {\n  badge: 'Badge',\n  close: 'Close',\n  dataIterator: {\n    noResultsText: 'No matching records found',\n    loadingText: 'Loading items...',\n  },\n  dataTable: {\n    itemsPerPageText: 'Rows per page:',\n    ariaLabel: {\n      sortDescending: 'Sorted descending.',\n      sortAscending: 'Sorted ascending.',\n      sortNone: 'Not sorted.',\n      activateNone: 'Activate to remove sorting.',\n      activateDescending: 'Activate to sort descending.',\n      activateAscending: 'Activate to sort ascending.',\n    },\n    sortBy: 'Sort by',\n  },\n  dataFooter: {\n    itemsPerPageText: 'Items per page:',\n    itemsPerPageAll: 'All',\n    nextPage: 'Next page',\n    prevPage: 'Previous page',\n    firstPage: 'First page',\n    lastPage: 'Last page',\n    pageText: '{0}-{1} of {2}',\n  },\n  datePicker: {\n    itemsSelected: '{0} selected',\n    nextMonthAriaLabel: 'Next month',\n    nextYearAriaLabel: 'Next year',\n    prevMonthAriaLabel: 'Previous month',\n    prevYearAriaLabel: 'Previous year',\n  },\n  noDataText: 'No data available',\n  carousel: {\n    prev: 'Previous visual',\n    next: 'Next visual',\n    ariaLabel: {\n      delimiter: 'Carousel slide {0} of {1}',\n    },\n  },\n  calendar: {\n    moreEvents: '{0} more',\n  },\n  fileInput: {\n    counter: '{0} files',\n    counterSize: '{0} files ({1} in total)',\n  },\n  timePicker: {\n    am: 'AM',\n    pm: 'PM',\n  },\n  pagination: {\n    ariaLabel: {\n      wrapper: 'Pagination Navigation',\n      next: 'Next page',\n      previous: 'Previous page',\n      page: 'Goto Page {0}',\n      currentPage: 'Current Page, Page {0}',\n    },\n  },\n  rating: {\n    ariaLabel: {\n      icon: 'Rating {0} of {1}',\n    },\n  },\n}\n","var castPath = require('./_castPath'),\n    last = require('./last'),\n    parent = require('./_parent'),\n    toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The property path to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\nfunction baseUnset(object, path) {\n  path = castPath(path, object);\n  object = parent(object, path);\n  return object == null || delete object[toKey(last(path))];\n}\n\nmodule.exports = baseUnset;\n","// Mixins\nimport mixins from '../../util/mixins';\nimport BindsAttrs from '../../mixins/binds-attrs';\nimport { provide as RegistrableProvide } from '../../mixins/registrable';\n/* @vue/component */\n\nexport default mixins(BindsAttrs, RegistrableProvide('form')\n/* @vue/component */\n).extend({\n  name: 'v-form',\n\n  provide() {\n    return {\n      form: this\n    };\n  },\n\n  inheritAttrs: false,\n  props: {\n    disabled: Boolean,\n    lazyValidation: Boolean,\n    readonly: Boolean,\n    value: Boolean\n  },\n  data: () => ({\n    inputs: [],\n    watchers: [],\n    errorBag: {}\n  }),\n  watch: {\n    errorBag: {\n      handler(val) {\n        const errors = Object.values(val).includes(true);\n        this.$emit('input', !errors);\n      },\n\n      deep: true,\n      immediate: true\n    }\n  },\n  methods: {\n    watchInput(input) {\n      const watcher = input => {\n        return input.$watch('hasError', val => {\n          this.$set(this.errorBag, input._uid, val);\n        }, {\n          immediate: true\n        });\n      };\n\n      const watchers = {\n        _uid: input._uid,\n        valid: () => {},\n        shouldValidate: () => {}\n      };\n\n      if (this.lazyValidation) {\n        // Only start watching inputs if we need to\n        watchers.shouldValidate = input.$watch('shouldValidate', val => {\n          if (!val) return; // Only watch if we're not already doing it\n\n          if (this.errorBag.hasOwnProperty(input._uid)) return;\n          watchers.valid = watcher(input);\n        });\n      } else {\n        watchers.valid = watcher(input);\n      }\n\n      return watchers;\n    },\n\n    /** @public */\n    validate() {\n      return this.inputs.filter(input => !input.validate(true)).length === 0;\n    },\n\n    /** @public */\n    reset() {\n      this.inputs.forEach(input => input.reset());\n      this.resetErrorBag();\n    },\n\n    resetErrorBag() {\n      if (this.lazyValidation) {\n        // Account for timeout in validatable\n        setTimeout(() => {\n          this.errorBag = {};\n        }, 0);\n      }\n    },\n\n    /** @public */\n    resetValidation() {\n      this.inputs.forEach(input => input.resetValidation());\n      this.resetErrorBag();\n    },\n\n    register(input) {\n      this.inputs.push(input);\n      this.watchers.push(this.watchInput(input));\n    },\n\n    unregister(input) {\n      const found = this.inputs.find(i => i._uid === input._uid);\n      if (!found) return;\n      const unwatch = this.watchers.find(i => i._uid === found._uid);\n\n      if (unwatch) {\n        unwatch.valid();\n        unwatch.shouldValidate();\n      }\n\n      this.watchers = this.watchers.filter(i => i._uid !== found._uid);\n      this.inputs = this.inputs.filter(i => i._uid !== found._uid);\n      this.$delete(this.errorBag, found._uid);\n    }\n\n  },\n\n  render(h) {\n    return h('form', {\n      staticClass: 'v-form',\n      attrs: {\n        novalidate: true,\n        ...this.attrs$\n      },\n      on: {\n        submit: e => this.$emit('submit', e)\n      }\n    }, this.$slots.default);\n  }\n\n});\n//# sourceMappingURL=VForm.js.map","// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n  return Object(defined(it));\n};\n","// Styles\nimport \"../../../src/components/VBadge/VBadge.sass\"; // Components\n\nimport VIcon from '../VIcon/VIcon'; // Mixins\n\nimport Colorable from '../../mixins/colorable';\nimport Themeable from '../../mixins/themeable';\nimport Toggleable from '../../mixins/toggleable';\nimport Transitionable from '../../mixins/transitionable';\nimport { factory as PositionableFactory } from '../../mixins/positionable'; // Utilities\n\nimport mixins from '../../util/mixins';\nimport { convertToUnit, getSlot } from '../../util/helpers';\nexport default mixins(Colorable, PositionableFactory(['left', 'bottom']), Themeable, Toggleable, Transitionable).extend({\n  name: 'v-badge',\n  props: {\n    avatar: Boolean,\n    bordered: Boolean,\n    color: {\n      type: String,\n      default: 'primary'\n    },\n    content: {\n      required: false\n    },\n    dot: Boolean,\n    label: {\n      type: String,\n      default: '$vuetify.badge'\n    },\n    icon: String,\n    inline: Boolean,\n    offsetX: [Number, String],\n    offsetY: [Number, String],\n    overlap: Boolean,\n    tile: Boolean,\n    transition: {\n      type: String,\n      default: 'scale-rotate-transition'\n    },\n    value: {\n      default: true\n    }\n  },\n  computed: {\n    classes() {\n      return {\n        'v-badge--avatar': this.avatar,\n        'v-badge--bordered': this.bordered,\n        'v-badge--bottom': this.bottom,\n        'v-badge--dot': this.dot,\n        'v-badge--icon': this.icon != null,\n        'v-badge--inline': this.inline,\n        'v-badge--left': this.left,\n        'v-badge--overlap': this.overlap,\n        'v-badge--tile': this.tile,\n        ...this.themeClasses\n      };\n    },\n\n    computedBottom() {\n      return this.bottom ? 'auto' : this.computedYOffset;\n    },\n\n    computedLeft() {\n      if (this.isRtl) {\n        return this.left ? this.computedXOffset : 'auto';\n      }\n\n      return this.left ? 'auto' : this.computedXOffset;\n    },\n\n    computedRight() {\n      if (this.isRtl) {\n        return this.left ? 'auto' : this.computedXOffset;\n      }\n\n      return !this.left ? 'auto' : this.computedXOffset;\n    },\n\n    computedTop() {\n      return this.bottom ? this.computedYOffset : 'auto';\n    },\n\n    computedXOffset() {\n      return this.calcPosition(this.offsetX);\n    },\n\n    computedYOffset() {\n      return this.calcPosition(this.offsetY);\n    },\n\n    isRtl() {\n      return this.$vuetify.rtl;\n    },\n\n    // Default fallback if offsetX\n    // or offsetY are undefined.\n    offset() {\n      if (this.overlap) return this.dot ? 8 : 12;\n      return this.dot ? 2 : 4;\n    },\n\n    styles() {\n      if (this.inline) return {};\n      return {\n        bottom: this.computedBottom,\n        left: this.computedLeft,\n        right: this.computedRight,\n        top: this.computedTop\n      };\n    }\n\n  },\n  methods: {\n    calcPosition(offset) {\n      return `calc(100% - ${convertToUnit(offset || this.offset)})`;\n    },\n\n    genBadge() {\n      const lang = this.$vuetify.lang;\n      const label = this.$attrs['aria-label'] || lang.t(this.label);\n      const data = this.setBackgroundColor(this.color, {\n        staticClass: 'v-badge__badge',\n        style: this.styles,\n        attrs: {\n          'aria-atomic': this.$attrs['aria-atomic'] || 'true',\n          'aria-label': label,\n          'aria-live': this.$attrs['aria-live'] || 'polite',\n          title: this.$attrs.title,\n          role: this.$attrs.role || 'status'\n        },\n        directives: [{\n          name: 'show',\n          value: this.isActive\n        }]\n      });\n      const badge = this.$createElement('span', data, [this.genBadgeContent()]);\n      if (!this.transition) return badge;\n      return this.$createElement('transition', {\n        props: {\n          name: this.transition,\n          origin: this.origin,\n          mode: this.mode\n        }\n      }, [badge]);\n    },\n\n    genBadgeContent() {\n      // Dot prop shows no content\n      if (this.dot) return undefined;\n      const slot = getSlot(this, 'badge');\n      if (slot) return slot;\n      if (this.content) return String(this.content);\n      if (this.icon) return this.$createElement(VIcon, this.icon);\n      return undefined;\n    },\n\n    genBadgeWrapper() {\n      return this.$createElement('span', {\n        staticClass: 'v-badge__wrapper'\n      }, [this.genBadge()]);\n    }\n\n  },\n\n  render(h) {\n    const badge = [this.genBadgeWrapper()];\n    const children = [getSlot(this)];\n    const {\n      'aria-atomic': _x,\n      'aria-label': _y,\n      'aria-live': _z,\n      role,\n      title,\n      ...attrs\n    } = this.$attrs;\n    if (this.inline && this.left) children.unshift(badge);else children.push(badge);\n    return h('span', {\n      staticClass: 'v-badge',\n      attrs,\n      class: this.classes\n    }, children);\n  }\n\n});\n//# sourceMappingURL=VBadge.js.map","var deburrLetter = require('./_deburrLetter'),\n    toString = require('./toString');\n\n/** Used to match Latin Unicode letters (excluding mathematical operators). */\nvar reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n/** Used to compose unicode character classes. */\nvar rsComboMarksRange = '\\\\u0300-\\\\u036f',\n    reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n    rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n    rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange;\n\n/** Used to compose unicode capture groups. */\nvar rsCombo = '[' + rsComboRange + ']';\n\n/**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\nvar reComboMark = RegExp(rsCombo, 'g');\n\n/**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\nfunction deburr(string) {\n  string = toString(string);\n  return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n}\n\nmodule.exports = deburr;\n","/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n  var index = string.length;\n\n  while (index-- && reWhitespace.test(string.charAt(index))) {}\n  return index;\n}\n\nmodule.exports = trimmedEndIndex;\n","/**\n * Checks if `value` is `undefined`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\nfunction isUndefined(value) {\n  return value === undefined;\n}\n\nmodule.exports = isUndefined;\n","var baseFlatten = require('./_baseFlatten');\n\n/**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\nfunction flatten(array) {\n  var length = array == null ? 0 : array.length;\n  return length ? baseFlatten(array, 1) : [];\n}\n\nmodule.exports = flatten;\n","// Mixins\nimport { inject as RegistrableInject } from '../registrable';\nexport function factory(namespace, child, parent) {\n  return RegistrableInject(namespace, child, parent).extend({\n    name: 'groupable',\n    props: {\n      activeClass: {\n        type: String,\n\n        default() {\n          if (!this[namespace]) return undefined;\n          return this[namespace].activeClass;\n        }\n\n      },\n      disabled: Boolean\n    },\n\n    data() {\n      return {\n        isActive: false\n      };\n    },\n\n    computed: {\n      groupClasses() {\n        if (!this.activeClass) return {};\n        return {\n          [this.activeClass]: this.isActive\n        };\n      }\n\n    },\n\n    created() {\n      this[namespace] && this[namespace].register(this);\n    },\n\n    beforeDestroy() {\n      this[namespace] && this[namespace].unregister(this);\n    },\n\n    methods: {\n      toggle() {\n        this.$emit('change');\n      }\n\n    }\n  });\n}\n/* eslint-disable-next-line @typescript-eslint/no-redeclare */\n\nconst Groupable = factory('itemGroup');\nexport default Groupable;\n//# sourceMappingURL=index.js.map","export * from \"-!../../mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../vue-loader/lib/loaders/stylePostLoader.js!../../postcss-loader/src/index.js??ref--7-oneOf-1-2!./sprite.css?vue&type=style&index=0&lang=css&\"","/**\n * Compiles a querystring\n * Returns string representation of the object\n *\n * @param {Object}\n * @api private\n */\n\nexports.encode = function (obj) {\n  var str = '';\n\n  for (var i in obj) {\n    if (obj.hasOwnProperty(i)) {\n      if (str.length) str += '&';\n      str += encodeURIComponent(i) + '=' + encodeURIComponent(obj[i]);\n    }\n  }\n\n  return str;\n};\n\n/**\n * Parses a simple querystring into an object\n *\n * @param {String} qs\n * @api private\n */\n\nexports.decode = function(qs){\n  var qry = {};\n  var pairs = qs.split('&');\n  for (var i = 0, l = pairs.length; i < l; i++) {\n    var pair = pairs[i].split('=');\n    qry[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);\n  }\n  return qry;\n};\n","var assignMergeValue = require('./_assignMergeValue'),\n    cloneBuffer = require('./_cloneBuffer'),\n    cloneTypedArray = require('./_cloneTypedArray'),\n    copyArray = require('./_copyArray'),\n    initCloneObject = require('./_initCloneObject'),\n    isArguments = require('./isArguments'),\n    isArray = require('./isArray'),\n    isArrayLikeObject = require('./isArrayLikeObject'),\n    isBuffer = require('./isBuffer'),\n    isFunction = require('./isFunction'),\n    isObject = require('./isObject'),\n    isPlainObject = require('./isPlainObject'),\n    isTypedArray = require('./isTypedArray'),\n    safeGet = require('./_safeGet'),\n    toPlainObject = require('./toPlainObject');\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n *  counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n  var objValue = safeGet(object, key),\n      srcValue = safeGet(source, key),\n      stacked = stack.get(srcValue);\n\n  if (stacked) {\n    assignMergeValue(object, key, stacked);\n    return;\n  }\n  var newValue = customizer\n    ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n    : undefined;\n\n  var isCommon = newValue === undefined;\n\n  if (isCommon) {\n    var isArr = isArray(srcValue),\n        isBuff = !isArr && isBuffer(srcValue),\n        isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n    newValue = srcValue;\n    if (isArr || isBuff || isTyped) {\n      if (isArray(objValue)) {\n        newValue = objValue;\n      }\n      else if (isArrayLikeObject(objValue)) {\n        newValue = copyArray(objValue);\n      }\n      else if (isBuff) {\n        isCommon = false;\n        newValue = cloneBuffer(srcValue, true);\n      }\n      else if (isTyped) {\n        isCommon = false;\n        newValue = cloneTypedArray(srcValue, true);\n      }\n      else {\n        newValue = [];\n      }\n    }\n    else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n      newValue = objValue;\n      if (isArguments(objValue)) {\n        newValue = toPlainObject(objValue);\n      }\n      else if (!isObject(objValue) || isFunction(objValue)) {\n        newValue = initCloneObject(srcValue);\n      }\n    }\n    else {\n      isCommon = false;\n    }\n  }\n  if (isCommon) {\n    // Recursively merge objects and arrays (susceptible to call stack limits).\n    stack.set(srcValue, newValue);\n    mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n    stack['delete'](srcValue);\n  }\n  assignMergeValue(object, key, newValue);\n}\n\nmodule.exports = baseMergeDeep;\n","var baseGetTag = require('./_baseGetTag'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar numberTag = '[object Number]';\n\n/**\n * Checks if `value` is classified as a `Number` primitive or object.\n *\n * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are\n * classified as numbers, use the `_.isFinite` method.\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 number, else `false`.\n * @example\n *\n * _.isNumber(3);\n * // => true\n *\n * _.isNumber(Number.MIN_VALUE);\n * // => true\n *\n * _.isNumber(Infinity);\n * // => true\n *\n * _.isNumber('3');\n * // => false\n */\nfunction isNumber(value) {\n  return typeof value == 'number' ||\n    (isObjectLike(value) && baseGetTag(value) == numberTag);\n}\n\nmodule.exports = isNumber;\n","var arrayAggregator = require('./_arrayAggregator'),\n    baseAggregator = require('./_baseAggregator'),\n    baseIteratee = require('./_baseIteratee'),\n    isArray = require('./isArray');\n\n/**\n * Creates a function like `_.groupBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} [initializer] The accumulator object initializer.\n * @returns {Function} Returns the new aggregator function.\n */\nfunction createAggregator(setter, initializer) {\n  return function(collection, iteratee) {\n    var func = isArray(collection) ? arrayAggregator : baseAggregator,\n        accumulator = initializer ? initializer() : {};\n\n    return func(collection, setter, baseIteratee(iteratee, 2), accumulator);\n  };\n}\n\nmodule.exports = createAggregator;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n  var index = -1,\n      result = Array(n);\n\n  while (++index < n) {\n    result[index] = iteratee(index);\n  }\n  return result;\n}\n\nmodule.exports = baseTimes;\n","import {\n\tBufferAttribute,\n\tBufferGeometry,\n\tFileLoader,\n\tFloat32BufferAttribute,\n\tLoader,\n\tLoaderUtils,\n\tVector3\n} from \"../../../build/three.module.js\";\n/**\n * Description: A THREE loader for STL ASCII files, as created by Solidworks and other CAD programs.\n *\n * Supports both binary and ASCII encoded files, with automatic detection of type.\n *\n * The loader returns a non-indexed buffer geometry.\n *\n * Limitations:\n *  Binary decoding supports \"Magics\" color format (http://en.wikipedia.org/wiki/STL_(file_format)#Color_in_binary_STL).\n *  There is perhaps some question as to how valid it is to always assume little-endian-ness.\n *  ASCII decoding assumes file is UTF-8.\n *\n * Usage:\n *  var loader = new STLLoader();\n *  loader.load( './models/stl/slotted_disk.stl', function ( geometry ) {\n *    scene.add( new THREE.Mesh( geometry ) );\n *  });\n *\n * For binary STLs geometry might contain colors for vertices. To use it:\n *  // use the same code to load STL as above\n *  if (geometry.hasColors) {\n *    material = new THREE.MeshPhongMaterial({ opacity: geometry.alpha, vertexColors: true });\n *  } else { .... }\n *  var mesh = new THREE.Mesh( geometry, material );\n *\n * For ASCII STLs containing multiple solids, each solid is assigned to a different group.\n * Groups can be used to assign a different color by defining an array of materials with the same length of\n * geometry.groups and passing it to the Mesh constructor:\n *\n * var mesh = new THREE.Mesh( geometry, material );\n *\n * For example:\n *\n *  var materials = [];\n *  var nGeometryGroups = geometry.groups.length;\n *\n *  var colorMap = ...; // Some logic to index colors.\n *\n *  for (var i = 0; i < nGeometryGroups; i++) {\n *\n *\t\tvar material = new THREE.MeshPhongMaterial({\n *\t\t\tcolor: colorMap[i],\n *\t\t\twireframe: false\n *\t\t});\n *\n *  }\n *\n *  materials.push(material);\n *  var mesh = new THREE.Mesh(geometry, materials);\n */\n\n\nvar STLLoader = function ( manager ) {\n\n\tLoader.call( this, manager );\n\n};\n\nSTLLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: STLLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tvar scope = this;\n\n\t\tvar loader = new FileLoader( scope.manager );\n\t\tloader.setPath( scope.path );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\ttry {\n\n\t\t\t\tonLoad( scope.parse( text ) );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tparse: function ( data ) {\n\n\t\tfunction isBinary( data ) {\n\n\t\t\tvar expect, face_size, n_faces, reader;\n\t\t\treader = new DataView( data );\n\t\t\tface_size = ( 32 / 8 * 3 ) + ( ( 32 / 8 * 3 ) * 3 ) + ( 16 / 8 );\n\t\t\tn_faces = reader.getUint32( 80, true );\n\t\t\texpect = 80 + ( 32 / 8 ) + ( n_faces * face_size );\n\n\t\t\tif ( expect === reader.byteLength ) {\n\n\t\t\t\treturn true;\n\n\t\t\t}\n\n\t\t\t// An ASCII STL data must begin with 'solid ' as the first six bytes.\n\t\t\t// However, ASCII STLs lacking the SPACE after the 'd' are known to be\n\t\t\t// plentiful.  So, check the first 5 bytes for 'solid'.\n\n\t\t\t// Several encodings, such as UTF-8, precede the text with up to 5 bytes:\n\t\t\t// https://en.wikipedia.org/wiki/Byte_order_mark#Byte_order_marks_by_encoding\n\t\t\t// Search for \"solid\" to start anywhere after those prefixes.\n\n\t\t\t// US-ASCII ordinal values for 's', 'o', 'l', 'i', 'd'\n\n\t\t\tvar solid = [ 115, 111, 108, 105, 100 ];\n\n\t\t\tfor ( var off = 0; off < 5; off ++ ) {\n\n\t\t\t\t// If \"solid\" text is matched to the current offset, declare it to be an ASCII STL.\n\n\t\t\t\tif ( matchDataViewAt( solid, reader, off ) ) return false;\n\n\t\t\t}\n\n\t\t\t// Couldn't find \"solid\" text at the beginning; it is binary STL.\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\tfunction matchDataViewAt( query, reader, offset ) {\n\n\t\t\t// Check if each byte in query matches the corresponding byte from the current offset\n\n\t\t\tfor ( var i = 0, il = query.length; i < il; i ++ ) {\n\n\t\t\t\tif ( query[ i ] !== reader.getUint8( offset + i, false ) ) return false;\n\n\t\t\t}\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\tfunction parseBinary( data ) {\n\n\t\t\tvar reader = new DataView( data );\n\t\t\tvar faces = reader.getUint32( 80, true );\n\n\t\t\tvar r, g, b, hasColors = false, colors;\n\t\t\tvar defaultR, defaultG, defaultB, alpha;\n\n\t\t\t// process STL header\n\t\t\t// check for default color in header (\"COLOR=rgba\" sequence).\n\n\t\t\tfor ( var index = 0; index < 80 - 10; index ++ ) {\n\n\t\t\t\tif ( ( reader.getUint32( index, false ) == 0x434F4C4F /*COLO*/ ) &&\n\t\t\t\t\t( reader.getUint8( index + 4 ) == 0x52 /*'R'*/ ) &&\n\t\t\t\t\t( reader.getUint8( index + 5 ) == 0x3D /*'='*/ ) ) {\n\n\t\t\t\t\thasColors = true;\n\t\t\t\t\tcolors = new Float32Array( faces * 3 * 3 );\n\n\t\t\t\t\tdefaultR = reader.getUint8( index + 6 ) / 255;\n\t\t\t\t\tdefaultG = reader.getUint8( index + 7 ) / 255;\n\t\t\t\t\tdefaultB = reader.getUint8( index + 8 ) / 255;\n\t\t\t\t\talpha = reader.getUint8( index + 9 ) / 255;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tvar dataOffset = 84;\n\t\t\tvar faceLength = 12 * 4 + 2;\n\n\t\t\tvar geometry = new BufferGeometry();\n\n\t\t\tvar vertices = new Float32Array( faces * 3 * 3 );\n\t\t\tvar normals = new Float32Array( faces * 3 * 3 );\n\n\t\t\tfor ( var face = 0; face < faces; face ++ ) {\n\n\t\t\t\tvar start = dataOffset + face * faceLength;\n\t\t\t\tvar normalX = reader.getFloat32( start, true );\n\t\t\t\tvar normalY = reader.getFloat32( start + 4, true );\n\t\t\t\tvar normalZ = reader.getFloat32( start + 8, true );\n\n\t\t\t\tif ( hasColors ) {\n\n\t\t\t\t\tvar packedColor = reader.getUint16( start + 48, true );\n\n\t\t\t\t\tif ( ( packedColor & 0x8000 ) === 0 ) {\n\n\t\t\t\t\t\t// facet has its own unique color\n\n\t\t\t\t\t\tr = ( packedColor & 0x1F ) / 31;\n\t\t\t\t\t\tg = ( ( packedColor >> 5 ) & 0x1F ) / 31;\n\t\t\t\t\t\tb = ( ( packedColor >> 10 ) & 0x1F ) / 31;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tr = defaultR;\n\t\t\t\t\t\tg = defaultG;\n\t\t\t\t\t\tb = defaultB;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tfor ( var i = 1; i <= 3; i ++ ) {\n\n\t\t\t\t\tvar vertexstart = start + i * 12;\n\t\t\t\t\tvar componentIdx = ( face * 3 * 3 ) + ( ( i - 1 ) * 3 );\n\n\t\t\t\t\tvertices[ componentIdx ] = reader.getFloat32( vertexstart, true );\n\t\t\t\t\tvertices[ componentIdx + 1 ] = reader.getFloat32( vertexstart + 4, true );\n\t\t\t\t\tvertices[ componentIdx + 2 ] = reader.getFloat32( vertexstart + 8, true );\n\n\t\t\t\t\tnormals[ componentIdx ] = normalX;\n\t\t\t\t\tnormals[ componentIdx + 1 ] = normalY;\n\t\t\t\t\tnormals[ componentIdx + 2 ] = normalZ;\n\n\t\t\t\t\tif ( hasColors ) {\n\n\t\t\t\t\t\tcolors[ componentIdx ] = r;\n\t\t\t\t\t\tcolors[ componentIdx + 1 ] = g;\n\t\t\t\t\t\tcolors[ componentIdx + 2 ] = b;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tgeometry.setAttribute( 'position', new BufferAttribute( vertices, 3 ) );\n\t\t\tgeometry.setAttribute( 'normal', new BufferAttribute( normals, 3 ) );\n\n\t\t\tif ( hasColors ) {\n\n\t\t\t\tgeometry.setAttribute( 'color', new BufferAttribute( colors, 3 ) );\n\t\t\t\tgeometry.hasColors = true;\n\t\t\t\tgeometry.alpha = alpha;\n\n\t\t\t}\n\n\t\t\treturn geometry;\n\n\t\t}\n\n\t\tfunction parseASCII( data ) {\n\n\t\t\tvar geometry = new BufferGeometry();\n\t\t\tvar patternSolid = /solid([\\s\\S]*?)endsolid/g;\n\t\t\tvar patternFace = /facet([\\s\\S]*?)endfacet/g;\n\t\t\tvar faceCounter = 0;\n\n\t\t\tvar patternFloat = /[\\s]+([+-]?(?:\\d*)(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)/.source;\n\t\t\tvar patternVertex = new RegExp( 'vertex' + patternFloat + patternFloat + patternFloat, 'g' );\n\t\t\tvar patternNormal = new RegExp( 'normal' + patternFloat + patternFloat + patternFloat, 'g' );\n\n\t\t\tvar vertices = [];\n\t\t\tvar normals = [];\n\n\t\t\tvar normal = new Vector3();\n\n\t\t\tvar result;\n\n\t\t\tvar groupCount = 0;\n\t\t\tvar startVertex = 0;\n\t\t\tvar endVertex = 0;\n\n\t\t\twhile ( ( result = patternSolid.exec( data ) ) !== null ) {\n\n\t\t\t\tstartVertex = endVertex;\n\n\t\t\t\tvar solid = result[ 0 ];\n\n\t\t\t\twhile ( ( result = patternFace.exec( solid ) ) !== null ) {\n\n\t\t\t\t\tvar vertexCountPerFace = 0;\n\t\t\t\t\tvar normalCountPerFace = 0;\n\n\t\t\t\t\tvar text = result[ 0 ];\n\n\t\t\t\t\twhile ( ( result = patternNormal.exec( text ) ) !== null ) {\n\n\t\t\t\t\t\tnormal.x = parseFloat( result[ 1 ] );\n\t\t\t\t\t\tnormal.y = parseFloat( result[ 2 ] );\n\t\t\t\t\t\tnormal.z = parseFloat( result[ 3 ] );\n\t\t\t\t\t\tnormalCountPerFace ++;\n\n\t\t\t\t\t}\n\n\t\t\t\t\twhile ( ( result = patternVertex.exec( text ) ) !== null ) {\n\n\t\t\t\t\t\tvertices.push( parseFloat( result[ 1 ] ), parseFloat( result[ 2 ] ), parseFloat( result[ 3 ] ) );\n\t\t\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\t\t\t\t\t\tvertexCountPerFace ++;\n\t\t\t\t\t\tendVertex ++;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// every face have to own ONE valid normal\n\n\t\t\t\t\tif ( normalCountPerFace !== 1 ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.STLLoader: Something isn\\'t right with the normal of face number ' + faceCounter );\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// each face have to own THREE valid vertices\n\n\t\t\t\t\tif ( vertexCountPerFace !== 3 ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.STLLoader: Something isn\\'t right with the vertices of face number ' + faceCounter );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfaceCounter ++;\n\n\t\t\t\t}\n\n\t\t\t\tvar start = startVertex;\n\t\t\t\tvar count = endVertex - startVertex;\n\n\t\t\t\tgeometry.addGroup( start, count, groupCount );\n\t\t\t\tgroupCount ++;\n\n\t\t\t}\n\n\t\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\t\tgeometry.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\n\t\t\treturn geometry;\n\n\t\t}\n\n\t\tfunction ensureString( buffer ) {\n\n\t\t\tif ( typeof buffer !== 'string' ) {\n\n\t\t\t\treturn LoaderUtils.decodeText( new Uint8Array( buffer ) );\n\n\t\t\t}\n\n\t\t\treturn buffer;\n\n\t\t}\n\n\t\tfunction ensureBinary( buffer ) {\n\n\t\t\tif ( typeof buffer === 'string' ) {\n\n\t\t\t\tvar array_buffer = new Uint8Array( buffer.length );\n\t\t\t\tfor ( var i = 0; i < buffer.length; i ++ ) {\n\n\t\t\t\t\tarray_buffer[ i ] = buffer.charCodeAt( i ) & 0xff; // implicitly assumes little-endian\n\n\t\t\t\t}\n\n\t\t\t\treturn array_buffer.buffer || array_buffer;\n\n\t\t\t} else {\n\n\t\t\t\treturn buffer;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// start\n\n\t\tvar binData = ensureBinary( data );\n\n\t\treturn isBinary( binData ) ? parseBinary( binData ) : parseASCII( ensureString( data ) );\n\n\t}\n\n} );\n\nexport { STLLoader };\n","'use strict';\n\nvar regexpFlags = require('./_flags');\n\nvar nativeExec = RegExp.prototype.exec;\n// This always refers to the native implementation, because the\n// String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js,\n// which loads this file before patching the method.\nvar nativeReplace = String.prototype.replace;\n\nvar patchedExec = nativeExec;\n\nvar LAST_INDEX = 'lastIndex';\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n  var re1 = /a/,\n      re2 = /b*/g;\n  nativeExec.call(re1, 'a');\n  nativeExec.call(re2, 'a');\n  return re1[LAST_INDEX] !== 0 || re2[LAST_INDEX] !== 0;\n})();\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED;\n\nif (PATCH) {\n  patchedExec = function exec(str) {\n    var re = this;\n    var lastIndex, reCopy, match, i;\n\n    if (NPCG_INCLUDED) {\n      reCopy = new RegExp('^' + re.source + '$(?!\\\\s)', regexpFlags.call(re));\n    }\n    if (UPDATES_LAST_INDEX_WRONG) lastIndex = re[LAST_INDEX];\n\n    match = nativeExec.call(re, str);\n\n    if (UPDATES_LAST_INDEX_WRONG && match) {\n      re[LAST_INDEX] = re.global ? match.index + match[0].length : lastIndex;\n    }\n    if (NPCG_INCLUDED && match && match.length > 1) {\n      // Fix browsers whose `exec` methods don't consistently return `undefined`\n      // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/\n      // eslint-disable-next-line no-loop-func\n      nativeReplace.call(match[0], reCopy, function () {\n        for (i = 1; i < arguments.length - 2; i++) {\n          if (arguments[i] === undefined) match[i] = undefined;\n        }\n      });\n    }\n\n    return match;\n  };\n}\n\nmodule.exports = patchedExec;\n","exports.f = {}.propertyIsEnumerable;\n","// Directives\nimport ripple from '../../directives/ripple'; // Types\n\nimport Vue from 'vue';\nexport default Vue.extend({\n  name: 'rippleable',\n  directives: {\n    ripple\n  },\n  props: {\n    ripple: {\n      type: [Boolean, Object],\n      default: true\n    }\n  },\n  methods: {\n    genRipple(data = {}) {\n      if (!this.ripple) return null;\n      data.staticClass = 'v-input--selection-controls__ripple';\n      data.directives = data.directives || [];\n      data.directives.push({\n        name: 'ripple',\n        value: {\n          center: true\n        }\n      });\n      return this.$createElement('div', data);\n    }\n\n  }\n});\n//# sourceMappingURL=index.js.map","/**\n * Parses an URI\n *\n * @author Steven Levithan <stevenlevithan.com> (MIT license)\n * @api private\n */\n\nvar re = /^(?:(?![^:@]+:[^:@\\/]*@)(http|https|ws|wss):\\/\\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\\/?#]*)(?::(\\d*))?)(((\\/(?:[^?#](?![^?#\\/]*\\.[^?#\\/.]+(?:[?#]|$)))*\\/?)?([^?#\\/]*))(?:\\?([^#]*))?(?:#(.*))?)/;\n\nvar parts = [\n    'source', 'protocol', 'authority', 'userInfo', 'user', 'password', 'host', 'port', 'relative', 'path', 'directory', 'file', 'query', 'anchor'\n];\n\nmodule.exports = function parseuri(str) {\n    var src = str,\n        b = str.indexOf('['),\n        e = str.indexOf(']');\n\n    if (b != -1 && e != -1) {\n        str = str.substring(0, b) + str.substring(b, e).replace(/:/g, ';') + str.substring(e, str.length);\n    }\n\n    var m = re.exec(str || ''),\n        uri = {},\n        i = 14;\n\n    while (i--) {\n        uri[parts[i]] = m[i] || '';\n    }\n\n    if (b != -1 && e != -1) {\n        uri.source = src;\n        uri.host = uri.host.substring(1, uri.host.length - 1).replace(/;/g, ':');\n        uri.authority = uri.authority.replace('[', '').replace(']', '').replace(/;/g, ':');\n        uri.ipv6uri = true;\n    }\n\n    uri.pathNames = pathNames(uri, uri['path']);\n    uri.queryKey = queryKey(uri, uri['query']);\n\n    return uri;\n};\n\nfunction pathNames(obj, path) {\n    var regx = /\\/{2,9}/g,\n        names = path.replace(regx, \"/\").split(\"/\");\n\n    if (path.substr(0, 1) == '/' || path.length === 0) {\n        names.splice(0, 1);\n    }\n    if (path.substr(path.length - 1, 1) == '/') {\n        names.splice(names.length - 1, 1);\n    }\n\n    return names;\n}\n\nfunction queryKey(uri, query) {\n    var data = {};\n\n    query.replace(/(?:^|&)([^&=]*)=?([^&]*)/g, function ($0, $1, $2) {\n        if ($1) {\n            data[$1] = $2;\n        }\n    });\n\n    return data;\n}\n","var copyObject = require('./_copyObject'),\n    getSymbols = require('./_getSymbols');\n\n/**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n  return copyObject(source, getSymbols(source), object);\n}\n\nmodule.exports = copySymbols;\n","var core = require('./_core');\nvar global = require('./_global');\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n  return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n  version: core.version,\n  mode: require('./_library') ? 'pure' : 'global',\n  copyright: '© 2020 Denis Pushkarev (zloirock.ru)'\n});\n","// Styles\nimport \"../../../src/components/VFooter/VFooter.sass\"; // Components\n\nimport VSheet from '../VSheet/VSheet'; // Mixins\n\nimport Applicationable from '../../mixins/applicationable';\nimport SSRBootable from '../../mixins/ssr-bootable'; // Utilities\n\nimport mixins from '../../util/mixins';\nimport { convertToUnit } from '../../util/helpers';\n/* @vue/component */\n\nexport default mixins(VSheet, Applicationable('footer', ['height', 'inset']), SSRBootable).extend({\n  name: 'v-footer',\n  props: {\n    height: {\n      default: 'auto',\n      type: [Number, String]\n    },\n    inset: Boolean,\n    padless: Boolean,\n    tag: {\n      type: String,\n      default: 'footer'\n    }\n  },\n  computed: {\n    applicationProperty() {\n      return this.inset ? 'insetFooter' : 'footer';\n    },\n\n    classes() {\n      return { ...VSheet.options.computed.classes.call(this),\n        'v-footer--absolute': this.absolute,\n        'v-footer--fixed': !this.absolute && (this.app || this.fixed),\n        'v-footer--padless': this.padless,\n        'v-footer--inset': this.inset\n      };\n    },\n\n    computedBottom() {\n      if (!this.isPositioned) return undefined;\n      return this.app ? this.$vuetify.application.bottom : 0;\n    },\n\n    computedLeft() {\n      if (!this.isPositioned) return undefined;\n      return this.app && this.inset ? this.$vuetify.application.left : 0;\n    },\n\n    computedRight() {\n      if (!this.isPositioned) return undefined;\n      return this.app && this.inset ? this.$vuetify.application.right : 0;\n    },\n\n    isPositioned() {\n      return Boolean(this.absolute || this.fixed || this.app);\n    },\n\n    styles() {\n      const height = parseInt(this.height);\n      return { ...VSheet.options.computed.styles.call(this),\n        height: isNaN(height) ? height : convertToUnit(height),\n        left: convertToUnit(this.computedLeft),\n        right: convertToUnit(this.computedRight),\n        bottom: convertToUnit(this.computedBottom)\n      };\n    }\n\n  },\n  methods: {\n    updateApplication() {\n      const height = parseInt(this.height);\n      return isNaN(height) ? this.$el ? this.$el.clientHeight : 0 : height;\n    }\n\n  },\n\n  render(h) {\n    const data = this.setBackgroundColor(this.color, {\n      staticClass: 'v-footer',\n      class: this.classes,\n      style: this.styles\n    });\n    return h(this.tag, data, this.$slots.default);\n  }\n\n});\n//# sourceMappingURL=VFooter.js.map","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n  return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;\n","'use strict';\nvar $export = require('./_export');\nvar aFunction = require('./_a-function');\nvar toObject = require('./_to-object');\nvar fails = require('./_fails');\nvar $sort = [].sort;\nvar test = [1, 2, 3];\n\n$export($export.P + $export.F * (fails(function () {\n  // IE8-\n  test.sort(undefined);\n}) || !fails(function () {\n  // V8 bug\n  test.sort(null);\n  // Old WebKit\n}) || !require('./_strict-method')($sort)), 'Array', {\n  // 22.1.3.25 Array.prototype.sort(comparefn)\n  sort: function sort(comparefn) {\n    return comparefn === undefined\n      ? $sort.call(toObject(this))\n      : $sort.call(toObject(this), aFunction(comparefn));\n  }\n});\n","// Styles\nimport \"../../../src/directives/ripple/VRipple.sass\"; // Utilities\n\nimport { consoleWarn } from '../../util/console';\nimport { keyCodes } from '../../util/helpers';\nconst DELAY_RIPPLE = 80;\n\nfunction transform(el, value) {\n  el.style.transform = value;\n  el.style.webkitTransform = value;\n}\n\nfunction isTouchEvent(e) {\n  return e.constructor.name === 'TouchEvent';\n}\n\nfunction isKeyboardEvent(e) {\n  return e.constructor.name === 'KeyboardEvent';\n}\n\nconst calculate = (e, el, value = {}) => {\n  let localX = 0;\n  let localY = 0;\n\n  if (!isKeyboardEvent(e)) {\n    const offset = el.getBoundingClientRect();\n    const target = isTouchEvent(e) ? e.touches[e.touches.length - 1] : e;\n    localX = target.clientX - offset.left;\n    localY = target.clientY - offset.top;\n  }\n\n  let radius = 0;\n  let scale = 0.3;\n\n  if (el._ripple && el._ripple.circle) {\n    scale = 0.15;\n    radius = el.clientWidth / 2;\n    radius = value.center ? radius : radius + Math.sqrt((localX - radius) ** 2 + (localY - radius) ** 2) / 4;\n  } else {\n    radius = Math.sqrt(el.clientWidth ** 2 + el.clientHeight ** 2) / 2;\n  }\n\n  const centerX = `${(el.clientWidth - radius * 2) / 2}px`;\n  const centerY = `${(el.clientHeight - radius * 2) / 2}px`;\n  const x = value.center ? centerX : `${localX - radius}px`;\n  const y = value.center ? centerY : `${localY - radius}px`;\n  return {\n    radius,\n    scale,\n    x,\n    y,\n    centerX,\n    centerY\n  };\n};\n\nconst ripples = {\n  /* eslint-disable max-statements */\n  show(e, el, value = {}) {\n    if (!el._ripple || !el._ripple.enabled) {\n      return;\n    }\n\n    const container = document.createElement('span');\n    const animation = document.createElement('span');\n    container.appendChild(animation);\n    container.className = 'v-ripple__container';\n\n    if (value.class) {\n      container.className += ` ${value.class}`;\n    }\n\n    const {\n      radius,\n      scale,\n      x,\n      y,\n      centerX,\n      centerY\n    } = calculate(e, el, value);\n    const size = `${radius * 2}px`;\n    animation.className = 'v-ripple__animation';\n    animation.style.width = size;\n    animation.style.height = size;\n    el.appendChild(container);\n    const computed = window.getComputedStyle(el);\n\n    if (computed && computed.position === 'static') {\n      el.style.position = 'relative';\n      el.dataset.previousPosition = 'static';\n    }\n\n    animation.classList.add('v-ripple__animation--enter');\n    animation.classList.add('v-ripple__animation--visible');\n    transform(animation, `translate(${x}, ${y}) scale3d(${scale},${scale},${scale})`);\n    animation.dataset.activated = String(performance.now());\n    setTimeout(() => {\n      animation.classList.remove('v-ripple__animation--enter');\n      animation.classList.add('v-ripple__animation--in');\n      transform(animation, `translate(${centerX}, ${centerY}) scale3d(1,1,1)`);\n    }, 0);\n  },\n\n  hide(el) {\n    if (!el || !el._ripple || !el._ripple.enabled) return;\n    const ripples = el.getElementsByClassName('v-ripple__animation');\n    if (ripples.length === 0) return;\n    const animation = ripples[ripples.length - 1];\n    if (animation.dataset.isHiding) return;else animation.dataset.isHiding = 'true';\n    const diff = performance.now() - Number(animation.dataset.activated);\n    const delay = Math.max(250 - diff, 0);\n    setTimeout(() => {\n      animation.classList.remove('v-ripple__animation--in');\n      animation.classList.add('v-ripple__animation--out');\n      setTimeout(() => {\n        const ripples = el.getElementsByClassName('v-ripple__animation');\n\n        if (ripples.length === 1 && el.dataset.previousPosition) {\n          el.style.position = el.dataset.previousPosition;\n          delete el.dataset.previousPosition;\n        }\n\n        animation.parentNode && el.removeChild(animation.parentNode);\n      }, 300);\n    }, delay);\n  }\n\n};\n\nfunction isRippleEnabled(value) {\n  return typeof value === 'undefined' || !!value;\n}\n\nfunction rippleShow(e) {\n  const value = {};\n  const element = e.currentTarget;\n  if (!element || !element._ripple || element._ripple.touched || e.rippleStop) return; // Don't allow the event to trigger ripples on any other elements\n\n  e.rippleStop = true;\n\n  if (isTouchEvent(e)) {\n    element._ripple.touched = true;\n    element._ripple.isTouch = true;\n  } else {\n    // It's possible for touch events to fire\n    // as mouse events on Android/iOS, this\n    // will skip the event call if it has\n    // already been registered as touch\n    if (element._ripple.isTouch) return;\n  }\n\n  value.center = element._ripple.centered || isKeyboardEvent(e);\n\n  if (element._ripple.class) {\n    value.class = element._ripple.class;\n  }\n\n  if (isTouchEvent(e)) {\n    // already queued that shows or hides the ripple\n    if (element._ripple.showTimerCommit) return;\n\n    element._ripple.showTimerCommit = () => {\n      ripples.show(e, element, value);\n    };\n\n    element._ripple.showTimer = window.setTimeout(() => {\n      if (element && element._ripple && element._ripple.showTimerCommit) {\n        element._ripple.showTimerCommit();\n\n        element._ripple.showTimerCommit = null;\n      }\n    }, DELAY_RIPPLE);\n  } else {\n    ripples.show(e, element, value);\n  }\n}\n\nfunction rippleHide(e) {\n  const element = e.currentTarget;\n  if (!element || !element._ripple) return;\n  window.clearTimeout(element._ripple.showTimer); // The touch interaction occurs before the show timer is triggered.\n  // We still want to show ripple effect.\n\n  if (e.type === 'touchend' && element._ripple.showTimerCommit) {\n    element._ripple.showTimerCommit();\n\n    element._ripple.showTimerCommit = null; // re-queue ripple hiding\n\n    element._ripple.showTimer = setTimeout(() => {\n      rippleHide(e);\n    });\n    return;\n  }\n\n  window.setTimeout(() => {\n    if (element._ripple) {\n      element._ripple.touched = false;\n    }\n  });\n  ripples.hide(element);\n}\n\nfunction rippleCancelShow(e) {\n  const element = e.currentTarget;\n  if (!element || !element._ripple) return;\n\n  if (element._ripple.showTimerCommit) {\n    element._ripple.showTimerCommit = null;\n  }\n\n  window.clearTimeout(element._ripple.showTimer);\n}\n\nlet keyboardRipple = false;\n\nfunction keyboardRippleShow(e) {\n  if (!keyboardRipple && (e.keyCode === keyCodes.enter || e.keyCode === keyCodes.space)) {\n    keyboardRipple = true;\n    rippleShow(e);\n  }\n}\n\nfunction keyboardRippleHide(e) {\n  keyboardRipple = false;\n  rippleHide(e);\n}\n\nfunction focusRippleHide(e) {\n  if (keyboardRipple === true) {\n    keyboardRipple = false;\n    rippleHide(e);\n  }\n}\n\nfunction updateRipple(el, binding, wasEnabled) {\n  const enabled = isRippleEnabled(binding.value);\n\n  if (!enabled) {\n    ripples.hide(el);\n  }\n\n  el._ripple = el._ripple || {};\n  el._ripple.enabled = enabled;\n  const value = binding.value || {};\n\n  if (value.center) {\n    el._ripple.centered = true;\n  }\n\n  if (value.class) {\n    el._ripple.class = binding.value.class;\n  }\n\n  if (value.circle) {\n    el._ripple.circle = value.circle;\n  }\n\n  if (enabled && !wasEnabled) {\n    el.addEventListener('touchstart', rippleShow, {\n      passive: true\n    });\n    el.addEventListener('touchend', rippleHide, {\n      passive: true\n    });\n    el.addEventListener('touchmove', rippleCancelShow, {\n      passive: true\n    });\n    el.addEventListener('touchcancel', rippleHide);\n    el.addEventListener('mousedown', rippleShow);\n    el.addEventListener('mouseup', rippleHide);\n    el.addEventListener('mouseleave', rippleHide);\n    el.addEventListener('keydown', keyboardRippleShow);\n    el.addEventListener('keyup', keyboardRippleHide);\n    el.addEventListener('blur', focusRippleHide); // Anchor tags can be dragged, causes other hides to fail - #1537\n\n    el.addEventListener('dragstart', rippleHide, {\n      passive: true\n    });\n  } else if (!enabled && wasEnabled) {\n    removeListeners(el);\n  }\n}\n\nfunction removeListeners(el) {\n  el.removeEventListener('mousedown', rippleShow);\n  el.removeEventListener('touchstart', rippleShow);\n  el.removeEventListener('touchend', rippleHide);\n  el.removeEventListener('touchmove', rippleCancelShow);\n  el.removeEventListener('touchcancel', rippleHide);\n  el.removeEventListener('mouseup', rippleHide);\n  el.removeEventListener('mouseleave', rippleHide);\n  el.removeEventListener('keydown', keyboardRippleShow);\n  el.removeEventListener('keyup', keyboardRippleHide);\n  el.removeEventListener('dragstart', rippleHide);\n  el.removeEventListener('blur', focusRippleHide);\n}\n\nfunction directive(el, binding, node) {\n  updateRipple(el, binding, false);\n\n  if (process.env.NODE_ENV === 'development') {\n    // warn if an inline element is used, waiting for el to be in the DOM first\n    node.context && node.context.$nextTick(() => {\n      const computed = window.getComputedStyle(el);\n\n      if (computed && computed.display === 'inline') {\n        const context = node.fnOptions ? [node.fnOptions, node.context] : [node.componentInstance];\n        consoleWarn('v-ripple can only be used on block-level elements', ...context);\n      }\n    });\n  }\n}\n\nfunction unbind(el) {\n  delete el._ripple;\n  removeListeners(el);\n}\n\nfunction update(el, binding) {\n  if (binding.value === binding.oldValue) {\n    return;\n  }\n\n  const wasEnabled = isRippleEnabled(binding.oldValue);\n  updateRipple(el, binding, wasEnabled);\n}\n\nexport const Ripple = {\n  bind: directive,\n  unbind,\n  update\n};\nexport default Ripple;\n//# sourceMappingURL=index.js.map","\n/**\n * Module dependencies.\n */\n\nvar debug = require('debug')('socket.io-parser');\nvar Emitter = require('component-emitter');\nvar binary = require('./binary');\nvar isArray = require('isarray');\nvar isBuf = require('./is-buffer');\n\n/**\n * Protocol version.\n *\n * @api public\n */\n\nexports.protocol = 4;\n\n/**\n * Packet types.\n *\n * @api public\n */\n\nexports.types = [\n  'CONNECT',\n  'DISCONNECT',\n  'EVENT',\n  'ACK',\n  'ERROR',\n  'BINARY_EVENT',\n  'BINARY_ACK'\n];\n\n/**\n * Packet type `connect`.\n *\n * @api public\n */\n\nexports.CONNECT = 0;\n\n/**\n * Packet type `disconnect`.\n *\n * @api public\n */\n\nexports.DISCONNECT = 1;\n\n/**\n * Packet type `event`.\n *\n * @api public\n */\n\nexports.EVENT = 2;\n\n/**\n * Packet type `ack`.\n *\n * @api public\n */\n\nexports.ACK = 3;\n\n/**\n * Packet type `error`.\n *\n * @api public\n */\n\nexports.ERROR = 4;\n\n/**\n * Packet type 'binary event'\n *\n * @api public\n */\n\nexports.BINARY_EVENT = 5;\n\n/**\n * Packet type `binary ack`. For acks with binary arguments.\n *\n * @api public\n */\n\nexports.BINARY_ACK = 6;\n\n/**\n * Encoder constructor.\n *\n * @api public\n */\n\nexports.Encoder = Encoder;\n\n/**\n * Decoder constructor.\n *\n * @api public\n */\n\nexports.Decoder = Decoder;\n\n/**\n * A socket.io Encoder instance\n *\n * @api public\n */\n\nfunction Encoder() {}\n\nvar ERROR_PACKET = exports.ERROR + '\"encode error\"';\n\n/**\n * Encode a packet as a single string if non-binary, or as a\n * buffer sequence, depending on packet type.\n *\n * @param {Object} obj - packet object\n * @param {Function} callback - function to handle encodings (likely engine.write)\n * @return Calls callback with Array of encodings\n * @api public\n */\n\nEncoder.prototype.encode = function(obj, callback){\n  debug('encoding packet %j', obj);\n\n  if (exports.BINARY_EVENT === obj.type || exports.BINARY_ACK === obj.type) {\n    encodeAsBinary(obj, callback);\n  } else {\n    var encoding = encodeAsString(obj);\n    callback([encoding]);\n  }\n};\n\n/**\n * Encode packet as string.\n *\n * @param {Object} packet\n * @return {String} encoded\n * @api private\n */\n\nfunction encodeAsString(obj) {\n\n  // first is type\n  var str = '' + obj.type;\n\n  // attachments if we have them\n  if (exports.BINARY_EVENT === obj.type || exports.BINARY_ACK === obj.type) {\n    str += obj.attachments + '-';\n  }\n\n  // if we have a namespace other than `/`\n  // we append it followed by a comma `,`\n  if (obj.nsp && '/' !== obj.nsp) {\n    str += obj.nsp + ',';\n  }\n\n  // immediately followed by the id\n  if (null != obj.id) {\n    str += obj.id;\n  }\n\n  // json data\n  if (null != obj.data) {\n    var payload = tryStringify(obj.data);\n    if (payload !== false) {\n      str += payload;\n    } else {\n      return ERROR_PACKET;\n    }\n  }\n\n  debug('encoded %j as %s', obj, str);\n  return str;\n}\n\nfunction tryStringify(str) {\n  try {\n    return JSON.stringify(str);\n  } catch(e){\n    return false;\n  }\n}\n\n/**\n * Encode packet as 'buffer sequence' by removing blobs, and\n * deconstructing packet into object with placeholders and\n * a list of buffers.\n *\n * @param {Object} packet\n * @return {Buffer} encoded\n * @api private\n */\n\nfunction encodeAsBinary(obj, callback) {\n\n  function writeEncoding(bloblessData) {\n    var deconstruction = binary.deconstructPacket(bloblessData);\n    var pack = encodeAsString(deconstruction.packet);\n    var buffers = deconstruction.buffers;\n\n    buffers.unshift(pack); // add packet info to beginning of data list\n    callback(buffers); // write all the buffers\n  }\n\n  binary.removeBlobs(obj, writeEncoding);\n}\n\n/**\n * A socket.io Decoder instance\n *\n * @return {Object} decoder\n * @api public\n */\n\nfunction Decoder() {\n  this.reconstructor = null;\n}\n\n/**\n * Mix in `Emitter` with Decoder.\n */\n\nEmitter(Decoder.prototype);\n\n/**\n * Decodes an encoded packet string into packet JSON.\n *\n * @param {String} obj - encoded packet\n * @return {Object} packet\n * @api public\n */\n\nDecoder.prototype.add = function(obj) {\n  var packet;\n  if (typeof obj === 'string') {\n    packet = decodeString(obj);\n    if (exports.BINARY_EVENT === packet.type || exports.BINARY_ACK === packet.type) { // binary packet's json\n      this.reconstructor = new BinaryReconstructor(packet);\n\n      // no attachments, labeled binary but no binary data to follow\n      if (this.reconstructor.reconPack.attachments === 0) {\n        this.emit('decoded', packet);\n      }\n    } else { // non-binary full packet\n      this.emit('decoded', packet);\n    }\n  } else if (isBuf(obj) || obj.base64) { // raw binary data\n    if (!this.reconstructor) {\n      throw new Error('got binary data when not reconstructing a packet');\n    } else {\n      packet = this.reconstructor.takeBinaryData(obj);\n      if (packet) { // received final buffer\n        this.reconstructor = null;\n        this.emit('decoded', packet);\n      }\n    }\n  } else {\n    throw new Error('Unknown type: ' + obj);\n  }\n};\n\n/**\n * Decode a packet String (JSON data)\n *\n * @param {String} str\n * @return {Object} packet\n * @api private\n */\n\nfunction decodeString(str) {\n  var i = 0;\n  // look up type\n  var p = {\n    type: Number(str.charAt(0))\n  };\n\n  if (null == exports.types[p.type]) {\n    return error('unknown packet type ' + p.type);\n  }\n\n  // look up attachments if type binary\n  if (exports.BINARY_EVENT === p.type || exports.BINARY_ACK === p.type) {\n    var start = i + 1;\n    while (str.charAt(++i) !== '-' && i != str.length) {}\n    var buf = str.substring(start, i);\n    if (buf != Number(buf) || str.charAt(i) !== '-') {\n      throw new Error('Illegal attachments');\n    }\n    p.attachments = Number(buf);\n  }\n\n  // look up namespace (if any)\n  if ('/' === str.charAt(i + 1)) {\n    var start = i + 1;\n    while (++i) {\n      var c = str.charAt(i);\n      if (',' === c) break;\n      if (i === str.length) break;\n    }\n    p.nsp = str.substring(start, i);\n  } else {\n    p.nsp = '/';\n  }\n\n  // look up id\n  var next = str.charAt(i + 1);\n  if ('' !== next && Number(next) == next) {\n    var start = i + 1;\n    while (++i) {\n      var c = str.charAt(i);\n      if (null == c || Number(c) != c) {\n        --i;\n        break;\n      }\n      if (i === str.length) break;\n    }\n    p.id = Number(str.substring(start, i + 1));\n  }\n\n  // look up json data\n  if (str.charAt(++i)) {\n    var payload = tryParse(str.substr(i));\n    var isPayloadValid = payload !== false && (p.type === exports.ERROR || isArray(payload));\n    if (isPayloadValid) {\n      p.data = payload;\n    } else {\n      return error('invalid payload');\n    }\n  }\n\n  debug('decoded %s as %j', str, p);\n  return p;\n}\n\nfunction tryParse(str) {\n  try {\n    return JSON.parse(str);\n  } catch(e){\n    return false;\n  }\n}\n\n/**\n * Deallocates a parser's resources\n *\n * @api public\n */\n\nDecoder.prototype.destroy = function() {\n  if (this.reconstructor) {\n    this.reconstructor.finishedReconstruction();\n  }\n};\n\n/**\n * A manager of a binary event's 'buffer sequence'. Should\n * be constructed whenever a packet of type BINARY_EVENT is\n * decoded.\n *\n * @param {Object} packet\n * @return {BinaryReconstructor} initialized reconstructor\n * @api private\n */\n\nfunction BinaryReconstructor(packet) {\n  this.reconPack = packet;\n  this.buffers = [];\n}\n\n/**\n * Method to be called when binary data received from connection\n * after a BINARY_EVENT packet.\n *\n * @param {Buffer | ArrayBuffer} binData - the raw binary data received\n * @return {null | Object} returns null if more binary data is expected or\n *   a reconstructed packet object if all buffers have been received.\n * @api private\n */\n\nBinaryReconstructor.prototype.takeBinaryData = function(binData) {\n  this.buffers.push(binData);\n  if (this.buffers.length === this.reconPack.attachments) { // done with buffer list\n    var packet = binary.reconstructPacket(this.reconPack, this.buffers);\n    this.finishedReconstruction();\n    return packet;\n  }\n  return null;\n};\n\n/**\n * Cleans up binary packet reconstruction variables.\n *\n * @api private\n */\n\nBinaryReconstructor.prototype.finishedReconstruction = function() {\n  this.reconPack = null;\n  this.buffers = [];\n};\n\nfunction error(msg) {\n  return {\n    type: exports.ERROR,\n    data: 'parser error: ' + msg\n  };\n}\n","// Styles\nimport \"../../../src/components/VList/VListGroup.sass\"; // Components\n\nimport VIcon from '../VIcon';\nimport VListItem from './VListItem';\nimport VListItemIcon from './VListItemIcon'; // Mixins\n\nimport BindsAttrs from '../../mixins/binds-attrs';\nimport Bootable from '../../mixins/bootable';\nimport Colorable from '../../mixins/colorable';\nimport Toggleable from '../../mixins/toggleable';\nimport { inject as RegistrableInject } from '../../mixins/registrable'; // Directives\n\nimport ripple from '../../directives/ripple'; // Transitions\n\nimport { VExpandTransition } from '../transitions'; // Utils\n\nimport mixins from '../../util/mixins';\nimport { getSlot } from '../../util/helpers';\nconst baseMixins = mixins(BindsAttrs, Bootable, Colorable, RegistrableInject('list'), Toggleable);\nexport default baseMixins.extend().extend({\n  name: 'v-list-group',\n  directives: {\n    ripple\n  },\n  props: {\n    activeClass: {\n      type: String,\n      default: ''\n    },\n    appendIcon: {\n      type: String,\n      default: '$expand'\n    },\n    color: {\n      type: String,\n      default: 'primary'\n    },\n    disabled: Boolean,\n    group: [String, RegExp],\n    noAction: Boolean,\n    prependIcon: String,\n    ripple: {\n      type: [Boolean, Object],\n      default: true\n    },\n    subGroup: Boolean\n  },\n  computed: {\n    classes() {\n      return {\n        'v-list-group--active': this.isActive,\n        'v-list-group--disabled': this.disabled,\n        'v-list-group--no-action': this.noAction,\n        'v-list-group--sub-group': this.subGroup\n      };\n    }\n\n  },\n  watch: {\n    isActive(val) {\n      /* istanbul ignore else */\n      if (!this.subGroup && val) {\n        this.list && this.list.listClick(this._uid);\n      }\n    },\n\n    $route: 'onRouteChange'\n  },\n\n  created() {\n    this.list && this.list.register(this);\n\n    if (this.group && this.$route && this.value == null) {\n      this.isActive = this.matchRoute(this.$route.path);\n    }\n  },\n\n  beforeDestroy() {\n    this.list && this.list.unregister(this);\n  },\n\n  methods: {\n    click(e) {\n      if (this.disabled) return;\n      this.isBooted = true;\n      this.$emit('click', e);\n      this.$nextTick(() => this.isActive = !this.isActive);\n    },\n\n    genIcon(icon) {\n      return this.$createElement(VIcon, icon);\n    },\n\n    genAppendIcon() {\n      const icon = !this.subGroup ? this.appendIcon : false;\n      if (!icon && !this.$slots.appendIcon) return null;\n      return this.$createElement(VListItemIcon, {\n        staticClass: 'v-list-group__header__append-icon'\n      }, [this.$slots.appendIcon || this.genIcon(icon)]);\n    },\n\n    genHeader() {\n      return this.$createElement(VListItem, {\n        staticClass: 'v-list-group__header',\n        attrs: {\n          'aria-expanded': String(this.isActive),\n          role: 'button'\n        },\n        class: {\n          [this.activeClass]: this.isActive\n        },\n        props: {\n          inputValue: this.isActive\n        },\n        directives: [{\n          name: 'ripple',\n          value: this.ripple\n        }],\n        on: { ...this.listeners$,\n          click: this.click\n        }\n      }, [this.genPrependIcon(), this.$slots.activator, this.genAppendIcon()]);\n    },\n\n    genItems() {\n      return this.showLazyContent(() => [this.$createElement('div', {\n        staticClass: 'v-list-group__items',\n        directives: [{\n          name: 'show',\n          value: this.isActive\n        }]\n      }, getSlot(this))]);\n    },\n\n    genPrependIcon() {\n      const icon = this.subGroup && this.prependIcon == null ? '$subgroup' : this.prependIcon;\n      if (!icon && !this.$slots.prependIcon) return null;\n      return this.$createElement(VListItemIcon, {\n        staticClass: 'v-list-group__header__prepend-icon'\n      }, [this.$slots.prependIcon || this.genIcon(icon)]);\n    },\n\n    onRouteChange(to) {\n      /* istanbul ignore if */\n      if (!this.group) return;\n      const isActive = this.matchRoute(to.path);\n      /* istanbul ignore else */\n\n      if (isActive && this.isActive !== isActive) {\n        this.list && this.list.listClick(this._uid);\n      }\n\n      this.isActive = isActive;\n    },\n\n    toggle(uid) {\n      const isActive = this._uid === uid;\n      if (isActive) this.isBooted = true;\n      this.$nextTick(() => this.isActive = isActive);\n    },\n\n    matchRoute(to) {\n      return to.match(this.group) !== null;\n    }\n\n  },\n\n  render(h) {\n    return h('div', this.setTextColor(this.isActive && this.color, {\n      staticClass: 'v-list-group',\n      class: this.classes\n    }), [this.genHeader(), h(VExpandTransition, this.genItems())]);\n  }\n\n});\n//# sourceMappingURL=VListGroup.js.map","/**\n * Helper class to handle QR Code symbol modules\n *\n * @param {Number} size Symbol size\n */\nfunction BitMatrix (size) {\n  if (!size || size < 1) {\n    throw new Error('BitMatrix size must be defined and greater than 0')\n  }\n\n  this.size = size\n  this.data = new Uint8Array(size * size)\n  this.reservedBit = new Uint8Array(size * size)\n}\n\n/**\n * Set bit value at specified location\n * If reserved flag is set, this bit will be ignored during masking process\n *\n * @param {Number}  row\n * @param {Number}  col\n * @param {Boolean} value\n * @param {Boolean} reserved\n */\nBitMatrix.prototype.set = function (row, col, value, reserved) {\n  const index = row * this.size + col\n  this.data[index] = value\n  if (reserved) this.reservedBit[index] = true\n}\n\n/**\n * Returns bit value at specified location\n *\n * @param  {Number}  row\n * @param  {Number}  col\n * @return {Boolean}\n */\nBitMatrix.prototype.get = function (row, col) {\n  return this.data[row * this.size + col]\n}\n\n/**\n * Applies xor operator at specified location\n * (used during masking process)\n *\n * @param {Number}  row\n * @param {Number}  col\n * @param {Boolean} value\n */\nBitMatrix.prototype.xor = function (row, col, value) {\n  this.data[row * this.size + col] ^= value\n}\n\n/**\n * Check if bit at specified location is reserved\n *\n * @param {Number}   row\n * @param {Number}   col\n * @return {Boolean}\n */\nBitMatrix.prototype.isReserved = function (row, col) {\n  return this.reservedBit[row * this.size + col]\n}\n\nmodule.exports = BitMatrix\n","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","/* global Blob File */\n\n/*\n * Module requirements.\n */\n\nvar isArray = require('isarray');\n\nvar toString = Object.prototype.toString;\nvar withNativeBlob = typeof Blob === 'function' ||\n                        typeof Blob !== 'undefined' && toString.call(Blob) === '[object BlobConstructor]';\nvar withNativeFile = typeof File === 'function' ||\n                        typeof File !== 'undefined' && toString.call(File) === '[object FileConstructor]';\n\n/**\n * Module exports.\n */\n\nmodule.exports = hasBinary;\n\n/**\n * Checks for binary data.\n *\n * Supports Buffer, ArrayBuffer, Blob and File.\n *\n * @param {Object} anything\n * @api public\n */\n\nfunction hasBinary (obj) {\n  if (!obj || typeof obj !== 'object') {\n    return false;\n  }\n\n  if (isArray(obj)) {\n    for (var i = 0, l = obj.length; i < l; i++) {\n      if (hasBinary(obj[i])) {\n        return true;\n      }\n    }\n    return false;\n  }\n\n  if ((typeof Buffer === 'function' && Buffer.isBuffer && Buffer.isBuffer(obj)) ||\n    (typeof ArrayBuffer === 'function' && obj instanceof ArrayBuffer) ||\n    (withNativeBlob && obj instanceof Blob) ||\n    (withNativeFile && obj instanceof File)\n  ) {\n    return true;\n  }\n\n  // see: https://github.com/Automattic/has-binary/pull/4\n  if (obj.toJSON && typeof obj.toJSON === 'function' && arguments.length === 1) {\n    return hasBinary(obj.toJSON(), true);\n  }\n\n  for (var key in obj) {\n    if (Object.prototype.hasOwnProperty.call(obj, key) && hasBinary(obj[key])) {\n      return true;\n    }\n  }\n\n  return false;\n}\n","'use strict'\n\nmodule.exports = function encodeUtf8 (input) {\n  var result = []\n  var size = input.length\n\n  for (var index = 0; index < size; index++) {\n    var point = input.charCodeAt(index)\n\n    if (point >= 0xD800 && point <= 0xDBFF && size > index + 1) {\n      var second = input.charCodeAt(index + 1)\n\n      if (second >= 0xDC00 && second <= 0xDFFF) {\n        // https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n        point = (point - 0xD800) * 0x400 + second - 0xDC00 + 0x10000\n        index += 1\n      }\n    }\n\n    // US-ASCII\n    if (point < 0x80) {\n      result.push(point)\n      continue\n    }\n\n    // 2-byte UTF-8\n    if (point < 0x800) {\n      result.push((point >> 6) | 192)\n      result.push((point & 63) | 128)\n      continue\n    }\n\n    // 3-byte UTF-8\n    if (point < 0xD800 || (point >= 0xE000 && point < 0x10000)) {\n      result.push((point >> 12) | 224)\n      result.push(((point >> 6) & 63) | 128)\n      result.push((point & 63) | 128)\n      continue\n    }\n\n    // 4-byte UTF-8\n    if (point >= 0x10000 && point <= 0x10FFFF) {\n      result.push((point >> 18) | 240)\n      result.push(((point >> 12) & 63) | 128)\n      result.push(((point >> 6) & 63) | 128)\n      result.push((point & 63) | 128)\n      continue\n    }\n\n    // Invalid character\n    result.push(0xEF, 0xBF, 0xBD)\n  }\n\n  return new Uint8Array(result).buffer\n}\n","/* eslint-disable max-len, import/export, no-use-before-define */\nimport Vue from 'vue';\nexport default function mixins(...args) {\n  return Vue.extend({\n    mixins: args\n  });\n}\n//# sourceMappingURL=mixins.js.map","import \"../../../src/components/VSlider/VSlider.sass\"; // Components\n\nimport VInput from '../VInput';\nimport { VScaleTransition } from '../transitions'; // Mixins\n\nimport mixins from '../../util/mixins';\nimport Loadable from '../../mixins/loadable'; // Directives\n\nimport ClickOutside from '../../directives/click-outside'; // Helpers\n\nimport { addOnceEventListener, deepEqual, keyCodes, createRange, convertToUnit, passiveSupported } from '../../util/helpers';\nimport { consoleWarn } from '../../util/console';\nexport default mixins(VInput, Loadable\n/* @vue/component */\n).extend({\n  name: 'v-slider',\n  directives: {\n    ClickOutside\n  },\n  mixins: [Loadable],\n  props: {\n    disabled: Boolean,\n    inverseLabel: Boolean,\n    max: {\n      type: [Number, String],\n      default: 100\n    },\n    min: {\n      type: [Number, String],\n      default: 0\n    },\n    step: {\n      type: [Number, String],\n      default: 1\n    },\n    thumbColor: String,\n    thumbLabel: {\n      type: [Boolean, String],\n      default: undefined,\n      validator: v => typeof v === 'boolean' || v === 'always'\n    },\n    thumbSize: {\n      type: [Number, String],\n      default: 32\n    },\n    tickLabels: {\n      type: Array,\n      default: () => []\n    },\n    ticks: {\n      type: [Boolean, String],\n      default: false,\n      validator: v => typeof v === 'boolean' || v === 'always'\n    },\n    tickSize: {\n      type: [Number, String],\n      default: 2\n    },\n    trackColor: String,\n    trackFillColor: String,\n    value: [Number, String],\n    vertical: Boolean\n  },\n  data: () => ({\n    app: null,\n    oldValue: null,\n    thumbPressed: false,\n    mouseTimeout: -1,\n    isFocused: false,\n    isActive: false,\n    noClick: false,\n    startOffset: 0\n  }),\n  computed: {\n    classes() {\n      return { ...VInput.options.computed.classes.call(this),\n        'v-input__slider': true,\n        'v-input__slider--vertical': this.vertical,\n        'v-input__slider--inverse-label': this.inverseLabel\n      };\n    },\n\n    internalValue: {\n      get() {\n        return this.lazyValue;\n      },\n\n      set(val) {\n        val = isNaN(val) ? this.minValue : val; // Round value to ensure the\n        // entire slider range can\n        // be selected with step\n\n        const value = this.roundValue(Math.min(Math.max(val, this.minValue), this.maxValue));\n        if (value === this.lazyValue) return;\n        this.lazyValue = value;\n        this.$emit('input', value);\n      }\n\n    },\n\n    trackTransition() {\n      return this.thumbPressed ? this.showTicks || this.stepNumeric ? '0.1s cubic-bezier(0.25, 0.8, 0.5, 1)' : 'none' : '';\n    },\n\n    minValue() {\n      return parseFloat(this.min);\n    },\n\n    maxValue() {\n      return parseFloat(this.max);\n    },\n\n    stepNumeric() {\n      return this.step > 0 ? parseFloat(this.step) : 0;\n    },\n\n    inputWidth() {\n      const inputWidth = (this.roundValue(this.internalValue) - this.minValue) / (this.maxValue - this.minValue) * 100;\n      return isNaN(inputWidth) ? 0 : inputWidth;\n    },\n\n    trackFillStyles() {\n      const startDir = this.vertical ? 'bottom' : 'left';\n      const endDir = this.vertical ? 'top' : 'right';\n      const valueDir = this.vertical ? 'height' : 'width';\n      const start = this.$vuetify.rtl ? 'auto' : '0';\n      const end = this.$vuetify.rtl ? '0' : 'auto';\n      const value = this.isDisabled ? `calc(${this.inputWidth}% - 10px)` : `${this.inputWidth}%`;\n      return {\n        transition: this.trackTransition,\n        [startDir]: start,\n        [endDir]: end,\n        [valueDir]: value\n      };\n    },\n\n    trackStyles() {\n      const startDir = this.vertical ? this.$vuetify.rtl ? 'bottom' : 'top' : this.$vuetify.rtl ? 'left' : 'right';\n      const endDir = this.vertical ? 'height' : 'width';\n      const start = '0px';\n      const end = this.isDisabled ? `calc(${100 - this.inputWidth}% - 10px)` : `calc(${100 - this.inputWidth}%)`;\n      return {\n        transition: this.trackTransition,\n        [startDir]: start,\n        [endDir]: end\n      };\n    },\n\n    showTicks() {\n      return this.tickLabels.length > 0 || !!(!this.isDisabled && this.stepNumeric && this.ticks);\n    },\n\n    numTicks() {\n      return Math.ceil((this.maxValue - this.minValue) / this.stepNumeric);\n    },\n\n    showThumbLabel() {\n      return !this.isDisabled && !!(this.thumbLabel || this.$scopedSlots['thumb-label']);\n    },\n\n    computedTrackColor() {\n      if (this.isDisabled) return undefined;\n      if (this.trackColor) return this.trackColor;\n      if (this.isDark) return this.validationState;\n      return this.validationState || 'primary lighten-3';\n    },\n\n    computedTrackFillColor() {\n      if (this.isDisabled) return undefined;\n      if (this.trackFillColor) return this.trackFillColor;\n      return this.validationState || this.computedColor;\n    },\n\n    computedThumbColor() {\n      if (this.thumbColor) return this.thumbColor;\n      return this.validationState || this.computedColor;\n    }\n\n  },\n  watch: {\n    min(val) {\n      const parsed = parseFloat(val);\n      parsed > this.internalValue && this.$emit('input', parsed);\n    },\n\n    max(val) {\n      const parsed = parseFloat(val);\n      parsed < this.internalValue && this.$emit('input', parsed);\n    },\n\n    value: {\n      handler(v) {\n        this.internalValue = v;\n      }\n\n    }\n  },\n\n  // If done in as immediate in\n  // value watcher, causes issues\n  // with vue-test-utils\n  beforeMount() {\n    this.internalValue = this.value;\n  },\n\n  mounted() {\n    // Without a v-app, iOS does not work with body selectors\n    this.app = document.querySelector('[data-app]') || consoleWarn('Missing v-app or a non-body wrapping element with the [data-app] attribute', this);\n  },\n\n  methods: {\n    genDefaultSlot() {\n      const children = [this.genLabel()];\n      const slider = this.genSlider();\n      this.inverseLabel ? children.unshift(slider) : children.push(slider);\n      children.push(this.genProgress());\n      return children;\n    },\n\n    genSlider() {\n      return this.$createElement('div', {\n        class: {\n          'v-slider': true,\n          'v-slider--horizontal': !this.vertical,\n          'v-slider--vertical': this.vertical,\n          'v-slider--focused': this.isFocused,\n          'v-slider--active': this.isActive,\n          'v-slider--disabled': this.isDisabled,\n          'v-slider--readonly': this.isReadonly,\n          ...this.themeClasses\n        },\n        directives: [{\n          name: 'click-outside',\n          value: this.onBlur\n        }],\n        on: {\n          click: this.onSliderClick,\n          mousedown: this.onSliderMouseDown,\n          touchstart: this.onSliderMouseDown\n        }\n      }, this.genChildren());\n    },\n\n    genChildren() {\n      return [this.genInput(), this.genTrackContainer(), this.genSteps(), this.genThumbContainer(this.internalValue, this.inputWidth, this.isActive, this.isFocused, this.onFocus, this.onBlur)];\n    },\n\n    genInput() {\n      return this.$createElement('input', {\n        attrs: {\n          value: this.internalValue,\n          id: this.computedId,\n          disabled: true,\n          readonly: true,\n          tabindex: -1,\n          ...this.$attrs\n        }\n      });\n    },\n\n    genTrackContainer() {\n      const children = [this.$createElement('div', this.setBackgroundColor(this.computedTrackColor, {\n        staticClass: 'v-slider__track-background',\n        style: this.trackStyles\n      })), this.$createElement('div', this.setBackgroundColor(this.computedTrackFillColor, {\n        staticClass: 'v-slider__track-fill',\n        style: this.trackFillStyles\n      }))];\n      return this.$createElement('div', {\n        staticClass: 'v-slider__track-container',\n        ref: 'track'\n      }, children);\n    },\n\n    genSteps() {\n      if (!this.step || !this.showTicks) return null;\n      const tickSize = parseFloat(this.tickSize);\n      const range = createRange(this.numTicks + 1);\n      const direction = this.vertical ? 'bottom' : this.$vuetify.rtl ? 'right' : 'left';\n      const offsetDirection = this.vertical ? this.$vuetify.rtl ? 'left' : 'right' : 'top';\n      if (this.vertical) range.reverse();\n      const ticks = range.map(index => {\n        const children = [];\n\n        if (this.tickLabels[index]) {\n          children.push(this.$createElement('div', {\n            staticClass: 'v-slider__tick-label'\n          }, this.tickLabels[index]));\n        }\n\n        const width = index * (100 / this.numTicks);\n        const filled = this.$vuetify.rtl ? 100 - this.inputWidth < width : width < this.inputWidth;\n        return this.$createElement('span', {\n          key: index,\n          staticClass: 'v-slider__tick',\n          class: {\n            'v-slider__tick--filled': filled\n          },\n          style: {\n            width: `${tickSize}px`,\n            height: `${tickSize}px`,\n            [direction]: `calc(${width}% - ${tickSize / 2}px)`,\n            [offsetDirection]: `calc(50% - ${tickSize / 2}px)`\n          }\n        }, children);\n      });\n      return this.$createElement('div', {\n        staticClass: 'v-slider__ticks-container',\n        class: {\n          'v-slider__ticks-container--always-show': this.ticks === 'always' || this.tickLabels.length > 0\n        }\n      }, ticks);\n    },\n\n    genThumbContainer(value, valueWidth, isActive, isFocused, onFocus, onBlur, ref = 'thumb') {\n      const children = [this.genThumb()];\n      const thumbLabelContent = this.genThumbLabelContent(value);\n      this.showThumbLabel && children.push(this.genThumbLabel(thumbLabelContent));\n      return this.$createElement('div', this.setTextColor(this.computedThumbColor, {\n        ref,\n        key: ref,\n        staticClass: 'v-slider__thumb-container',\n        class: {\n          'v-slider__thumb-container--active': isActive,\n          'v-slider__thumb-container--focused': isFocused,\n          'v-slider__thumb-container--show-label': this.showThumbLabel\n        },\n        style: this.getThumbContainerStyles(valueWidth),\n        attrs: {\n          role: 'slider',\n          tabindex: this.isDisabled ? -1 : this.$attrs.tabindex ? this.$attrs.tabindex : 0,\n          'aria-label': this.$attrs['aria-label'] || this.label,\n          'aria-valuemin': this.min,\n          'aria-valuemax': this.max,\n          'aria-valuenow': this.internalValue,\n          'aria-readonly': String(this.isReadonly),\n          'aria-orientation': this.vertical ? 'vertical' : 'horizontal'\n        },\n        on: {\n          focus: onFocus,\n          blur: onBlur,\n          keydown: this.onKeyDown\n        }\n      }), children);\n    },\n\n    genThumbLabelContent(value) {\n      return this.$scopedSlots['thumb-label'] ? this.$scopedSlots['thumb-label']({\n        value\n      }) : [this.$createElement('span', [String(value)])];\n    },\n\n    genThumbLabel(content) {\n      const size = convertToUnit(this.thumbSize);\n      const transform = this.vertical ? `translateY(20%) translateY(${Number(this.thumbSize) / 3 - 1}px) translateX(55%) rotate(135deg)` : `translateY(-20%) translateY(-12px) translateX(-50%) rotate(45deg)`;\n      return this.$createElement(VScaleTransition, {\n        props: {\n          origin: 'bottom center'\n        }\n      }, [this.$createElement('div', {\n        staticClass: 'v-slider__thumb-label-container',\n        directives: [{\n          name: 'show',\n          value: this.isFocused || this.isActive || this.thumbLabel === 'always'\n        }]\n      }, [this.$createElement('div', this.setBackgroundColor(this.computedThumbColor, {\n        staticClass: 'v-slider__thumb-label',\n        style: {\n          height: size,\n          width: size,\n          transform\n        }\n      }), [this.$createElement('div', content)])])]);\n    },\n\n    genThumb() {\n      return this.$createElement('div', this.setBackgroundColor(this.computedThumbColor, {\n        staticClass: 'v-slider__thumb'\n      }));\n    },\n\n    getThumbContainerStyles(width) {\n      const direction = this.vertical ? 'top' : 'left';\n      let value = this.$vuetify.rtl ? 100 - width : width;\n      value = this.vertical ? 100 - value : value;\n      return {\n        transition: this.trackTransition,\n        [direction]: `${value}%`\n      };\n    },\n\n    onSliderMouseDown(e) {\n      var _e$target;\n\n      e.preventDefault();\n      this.oldValue = this.internalValue;\n      this.isActive = true;\n\n      if ((_e$target = e.target) != null && _e$target.matches('.v-slider__thumb-container, .v-slider__thumb-container *')) {\n        this.thumbPressed = true;\n        const domRect = e.target.getBoundingClientRect();\n        const touch = 'touches' in e ? e.touches[0] : e;\n        this.startOffset = this.vertical ? touch.clientY - (domRect.top + domRect.height / 2) : touch.clientX - (domRect.left + domRect.width / 2);\n      } else {\n        this.startOffset = 0;\n        window.clearTimeout(this.mouseTimeout);\n        this.mouseTimeout = window.setTimeout(() => {\n          this.thumbPressed = true;\n        }, 300);\n      }\n\n      const mouseUpOptions = passiveSupported ? {\n        passive: true,\n        capture: true\n      } : true;\n      const mouseMoveOptions = passiveSupported ? {\n        passive: true\n      } : false;\n      const isTouchEvent = ('touches' in e);\n      this.onMouseMove(e);\n      this.app.addEventListener(isTouchEvent ? 'touchmove' : 'mousemove', this.onMouseMove, mouseMoveOptions);\n      addOnceEventListener(this.app, isTouchEvent ? 'touchend' : 'mouseup', this.onSliderMouseUp, mouseUpOptions);\n      this.$emit('start', this.internalValue);\n    },\n\n    onSliderMouseUp(e) {\n      e.stopPropagation();\n      window.clearTimeout(this.mouseTimeout);\n      this.thumbPressed = false;\n      const mouseMoveOptions = passiveSupported ? {\n        passive: true\n      } : false;\n      this.app.removeEventListener('touchmove', this.onMouseMove, mouseMoveOptions);\n      this.app.removeEventListener('mousemove', this.onMouseMove, mouseMoveOptions);\n      this.$emit('mouseup', e);\n      this.$emit('end', this.internalValue);\n\n      if (!deepEqual(this.oldValue, this.internalValue)) {\n        this.$emit('change', this.internalValue);\n        this.noClick = true;\n      }\n\n      this.isActive = false;\n    },\n\n    onMouseMove(e) {\n      if (e.type === 'mousemove') {\n        this.thumbPressed = true;\n      }\n\n      this.internalValue = this.parseMouseMove(e);\n    },\n\n    onKeyDown(e) {\n      if (!this.isInteractive) return;\n      const value = this.parseKeyDown(e, this.internalValue);\n      if (value == null || value < this.minValue || value > this.maxValue) return;\n      this.internalValue = value;\n      this.$emit('change', value);\n    },\n\n    onSliderClick(e) {\n      if (this.noClick) {\n        this.noClick = false;\n        return;\n      }\n\n      const thumb = this.$refs.thumb;\n      thumb.focus();\n      this.onMouseMove(e);\n      this.$emit('change', this.internalValue);\n    },\n\n    onBlur(e) {\n      this.isFocused = false;\n      this.$emit('blur', e);\n    },\n\n    onFocus(e) {\n      this.isFocused = true;\n      this.$emit('focus', e);\n    },\n\n    parseMouseMove(e) {\n      const start = this.vertical ? 'top' : 'left';\n      const length = this.vertical ? 'height' : 'width';\n      const click = this.vertical ? 'clientY' : 'clientX';\n      const {\n        [start]: trackStart,\n        [length]: trackLength\n      } = this.$refs.track.getBoundingClientRect();\n      const clickOffset = 'touches' in e ? e.touches[0][click] : e[click]; // It is possible for left to be NaN, force to number\n\n      let clickPos = Math.min(Math.max((clickOffset - trackStart - this.startOffset) / trackLength, 0), 1) || 0;\n      if (this.vertical) clickPos = 1 - clickPos;\n      if (this.$vuetify.rtl) clickPos = 1 - clickPos;\n      return parseFloat(this.min) + clickPos * (this.maxValue - this.minValue);\n    },\n\n    parseKeyDown(e, value) {\n      if (!this.isInteractive) return;\n      const {\n        pageup,\n        pagedown,\n        end,\n        home,\n        left,\n        right,\n        down,\n        up\n      } = keyCodes;\n      if (![pageup, pagedown, end, home, left, right, down, up].includes(e.keyCode)) return;\n      e.preventDefault();\n      const step = this.stepNumeric || 1;\n      const steps = (this.maxValue - this.minValue) / step;\n\n      if ([left, right, down, up].includes(e.keyCode)) {\n        const increase = this.$vuetify.rtl ? [left, up] : [right, up];\n        const direction = increase.includes(e.keyCode) ? 1 : -1;\n        const multiplier = e.shiftKey ? 3 : e.ctrlKey ? 2 : 1;\n        value = value + direction * step * multiplier;\n      } else if (e.keyCode === home) {\n        value = this.minValue;\n      } else if (e.keyCode === end) {\n        value = this.maxValue;\n      } else {\n        const direction = e.keyCode === pagedown ? 1 : -1;\n        value = value - direction * step * (steps > 100 ? steps / 10 : 10);\n      }\n\n      return value;\n    },\n\n    roundValue(value) {\n      if (!this.stepNumeric) return value; // Format input value using the same number\n      // of decimals places as in the step prop\n\n      const trimmedStep = this.step.toString().trim();\n      const decimals = trimmedStep.indexOf('.') > -1 ? trimmedStep.length - trimmedStep.indexOf('.') - 1 : 0;\n      const offset = this.minValue % this.stepNumeric;\n      const newValue = Math.round((value - offset) / this.stepNumeric) * this.stepNumeric + offset;\n      return parseFloat(Math.min(newValue, this.maxValue).toFixed(decimals));\n    }\n\n  }\n});\n//# sourceMappingURL=VSlider.js.map","import VSlider from './VSlider';\nexport { VSlider };\nexport default VSlider;\n//# sourceMappingURL=index.js.map","// Styles\nimport \"../../../src/components/VRangeSlider/VRangeSlider.sass\"; // Components\n\nimport VSlider from '../VSlider'; // Helpers\n\nimport { addOnceEventListener, createRange, deepEqual, passiveSupported } from '../../util/helpers';\n/* @vue/component */\n\nexport default VSlider.extend({\n  name: 'v-range-slider',\n  props: {\n    value: {\n      type: Array,\n      default: () => [0, 0]\n    }\n  },\n\n  data() {\n    return {\n      activeThumb: null,\n      lazyValue: this.value\n    };\n  },\n\n  computed: {\n    classes() {\n      return { ...VSlider.options.computed.classes.call(this),\n        'v-input--range-slider': true\n      };\n    },\n\n    internalValue: {\n      get() {\n        return this.lazyValue;\n      },\n\n      set(val) {\n        // Round value to ensure the\n        // entire slider range can\n        // be selected with step\n        let value = val.map((v = 0) => this.roundValue(Math.min(Math.max(v, this.minValue), this.maxValue))); // Switch values if range and wrong order\n\n        if (value[0] > value[1] || value[1] < value[0]) {\n          if (this.activeThumb !== null) {\n            const toFocus = this.activeThumb === 1 ? 0 : 1;\n            const el = this.$refs[`thumb_${toFocus}`];\n            el.focus();\n          }\n\n          value = [value[1], value[0]];\n        }\n\n        this.lazyValue = value;\n        if (!deepEqual(value, this.value)) this.$emit('input', value);\n        this.validate();\n      }\n\n    },\n\n    inputWidth() {\n      return this.internalValue.map(v => (this.roundValue(v) - this.minValue) / (this.maxValue - this.minValue) * 100);\n    }\n\n  },\n  methods: {\n    getTrackStyle(startLength, endLength, startPadding = 0, endPadding = 0) {\n      const startDir = this.vertical ? this.$vuetify.rtl ? 'top' : 'bottom' : this.$vuetify.rtl ? 'right' : 'left';\n      const endDir = this.vertical ? 'height' : 'width';\n      const start = `calc(${startLength}% + ${startPadding}px)`;\n      const end = `calc(${endLength}% + ${endPadding}px)`;\n      return {\n        transition: this.trackTransition,\n        [startDir]: start,\n        [endDir]: end\n      };\n    },\n\n    getIndexOfClosestValue(arr, v) {\n      if (Math.abs(arr[0] - v) < Math.abs(arr[1] - v)) return 0;else return 1;\n    },\n\n    genInput() {\n      return createRange(2).map(i => {\n        const input = VSlider.options.methods.genInput.call(this);\n        input.data = input.data || {};\n        input.data.attrs = input.data.attrs || {};\n        input.data.attrs.value = this.internalValue[i];\n        input.data.attrs.id = `input-${i ? 'max' : 'min'}-${this._uid}`;\n        return input;\n      });\n    },\n\n    genTrackContainer() {\n      const children = [];\n      const padding = this.isDisabled ? 10 : 0;\n      const sections = [{\n        class: 'v-slider__track-background',\n        color: this.computedTrackColor,\n        styles: [0, this.inputWidth[0], 0, -padding]\n      }, {\n        class: this.isDisabled ? 'v-slider__track-background' : 'v-slider__track-fill',\n        color: this.isDisabled ? this.computedTrackColor : this.computedTrackFillColor,\n        styles: [this.inputWidth[0], Math.abs(this.inputWidth[1] - this.inputWidth[0]), padding, padding * -2]\n      }, {\n        class: 'v-slider__track-background',\n        color: this.computedTrackColor,\n        styles: [this.inputWidth[1], Math.abs(100 - this.inputWidth[1]), padding, -padding]\n      }];\n      if (this.$vuetify.rtl) sections.reverse();\n      children.push(...sections.map(section => this.$createElement('div', this.setBackgroundColor(section.color, {\n        staticClass: section.class,\n        style: this.getTrackStyle(...section.styles)\n      }))));\n      return this.$createElement('div', {\n        staticClass: 'v-slider__track-container',\n        ref: 'track'\n      }, children);\n    },\n\n    genChildren() {\n      return [this.genInput(), this.genTrackContainer(), this.genSteps(), createRange(2).map(index => {\n        const value = this.internalValue[index];\n\n        const onFocus = e => {\n          this.isFocused = true;\n          this.activeThumb = index;\n          this.$emit('focus', e);\n        };\n\n        const onBlur = e => {\n          this.isFocused = false;\n          this.activeThumb = null;\n          this.$emit('blur', e);\n        };\n\n        const valueWidth = this.inputWidth[index];\n        const isActive = this.isActive && this.activeThumb === index;\n        const isFocused = this.isFocused && this.activeThumb === index;\n        return this.genThumbContainer(value, valueWidth, isActive, isFocused, onFocus, onBlur, `thumb_${index}`);\n      })];\n    },\n\n    reevaluateSelected(value) {\n      this.activeThumb = this.getIndexOfClosestValue(this.internalValue, value);\n      const refName = `thumb_${this.activeThumb}`;\n      const thumbRef = this.$refs[refName];\n      thumbRef.focus();\n    },\n\n    onSliderMouseDown(e) {\n      var _e$target;\n\n      const value = this.parseMouseMove(e);\n      this.reevaluateSelected(value);\n      this.oldValue = this.internalValue;\n      this.isActive = true;\n\n      if ((_e$target = e.target) != null && _e$target.matches('.v-slider__thumb-container, .v-slider__thumb-container *')) {\n        this.thumbPressed = true;\n        const domRect = e.target.getBoundingClientRect();\n        const touch = 'touches' in e ? e.touches[0] : e;\n        this.startOffset = this.vertical ? touch.clientY - (domRect.top + domRect.height / 2) : touch.clientX - (domRect.left + domRect.width / 2);\n      } else {\n        this.startOffset = 0;\n        window.clearTimeout(this.mouseTimeout);\n        this.mouseTimeout = window.setTimeout(() => {\n          this.thumbPressed = true;\n        }, 300);\n      }\n\n      const mouseUpOptions = passiveSupported ? {\n        passive: true,\n        capture: true\n      } : true;\n      const mouseMoveOptions = passiveSupported ? {\n        passive: true\n      } : false;\n      const isTouchEvent = ('touches' in e);\n      this.onMouseMove(e);\n      this.app.addEventListener(isTouchEvent ? 'touchmove' : 'mousemove', this.onMouseMove, mouseMoveOptions);\n      addOnceEventListener(this.app, isTouchEvent ? 'touchend' : 'mouseup', this.onSliderMouseUp, mouseUpOptions);\n      this.$emit('start', this.internalValue);\n    },\n\n    onSliderClick(e) {\n      if (!this.isActive) {\n        if (this.noClick) {\n          this.noClick = false;\n          return;\n        }\n\n        const value = this.parseMouseMove(e);\n        this.reevaluateSelected(value);\n        this.setInternalValue(value);\n        this.$emit('change', this.internalValue);\n      }\n    },\n\n    onMouseMove(e) {\n      const value = this.parseMouseMove(e);\n\n      if (e.type === 'mousemove') {\n        this.thumbPressed = true;\n      }\n\n      if (this.activeThumb === null) {\n        this.activeThumb = this.getIndexOfClosestValue(this.internalValue, value);\n      }\n\n      this.setInternalValue(value);\n    },\n\n    onKeyDown(e) {\n      if (this.activeThumb === null) return;\n      const value = this.parseKeyDown(e, this.internalValue[this.activeThumb]);\n      if (value == null) return;\n      this.setInternalValue(value);\n      this.$emit('change', this.internalValue);\n    },\n\n    setInternalValue(value) {\n      this.internalValue = this.internalValue.map((v, i) => {\n        if (i === this.activeThumb) return value;else return Number(v);\n      });\n    }\n\n  }\n});\n//# sourceMappingURL=VRangeSlider.js.map","!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs=e()}(this,(function(){\"use strict\";var t=1e3,e=6e4,n=36e5,r=\"millisecond\",i=\"second\",s=\"minute\",u=\"hour\",a=\"day\",o=\"week\",f=\"month\",h=\"quarter\",c=\"year\",d=\"date\",$=\"Invalid Date\",l=/^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[Tt\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/,y=/\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,M={name:\"en\",weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\")},m=function(t,e,n){var r=String(t);return!r||r.length>=e?t:\"\"+Array(e+1-r.length).join(n)+t},g={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?\"+\":\"-\")+m(r,2,\"0\")+\":\"+m(i,2,\"0\")},m:function t(e,n){if(e.date()<n.date())return-t(n,e);var r=12*(n.year()-e.year())+(n.month()-e.month()),i=e.clone().add(r,f),s=n-i<0,u=e.clone().add(r+(s?-1:1),f);return+(-(r+(n-i)/(s?i-u:u-i))||0)},a:function(t){return t<0?Math.ceil(t)||0:Math.floor(t)},p:function(t){return{M:f,y:c,w:o,d:a,D:d,h:u,m:s,s:i,ms:r,Q:h}[t]||String(t||\"\").toLowerCase().replace(/s$/,\"\")},u:function(t){return void 0===t}},D=\"en\",v={};v[D]=M;var p=function(t){return t instanceof _},S=function(t,e,n){var r;if(!t)return D;if(\"string\"==typeof t)v[t]&&(r=t),e&&(v[t]=e,r=t);else{var i=t.name;v[i]=t,r=i}return!n&&r&&(D=r),r||!n&&D},w=function(t,e){if(p(t))return t.clone();var n=\"object\"==typeof e?e:{};return n.date=t,n.args=arguments,new _(n)},O=g;O.l=S,O.i=p,O.w=function(t,e){return w(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var _=function(){function M(t){this.$L=S(t.locale,null,!0),this.parse(t)}var m=M.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(O.u(e))return new Date;if(e instanceof Date)return new Date(e);if(\"string\"==typeof e&&!/Z$/i.test(e)){var r=e.match(l);if(r){var i=r[2]-1||0,s=(r[7]||\"0\").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(e)}(t),this.$x=t.x||{},this.init()},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},m.$utils=function(){return O},m.isValid=function(){return!(this.$d.toString()===$)},m.isSame=function(t,e){var n=w(t);return this.startOf(e)<=n&&n<=this.endOf(e)},m.isAfter=function(t,e){return w(t)<this.startOf(e)},m.isBefore=function(t,e){return this.endOf(e)<w(t)},m.$g=function(t,e,n){return O.u(t)?this[e]:this.set(n,t)},m.unix=function(){return Math.floor(this.valueOf()/1e3)},m.valueOf=function(){return this.$d.getTime()},m.startOf=function(t,e){var n=this,r=!!O.u(e)||e,h=O.p(t),$=function(t,e){var i=O.w(n.$u?Date.UTC(n.$y,e,t):new Date(n.$y,e,t),n);return r?i:i.endOf(a)},l=function(t,e){return O.w(n.toDate()[t].apply(n.toDate(\"s\"),(r?[0,0,0,0]:[23,59,59,999]).slice(e)),n)},y=this.$W,M=this.$M,m=this.$D,g=\"set\"+(this.$u?\"UTC\":\"\");switch(h){case c:return r?$(1,0):$(31,11);case f:return r?$(1,M):$(0,M+1);case o:var D=this.$locale().weekStart||0,v=(y<D?y+7:y)-D;return $(r?m-v:m+(6-v),M);case a:case d:return l(g+\"Hours\",0);case u:return l(g+\"Minutes\",1);case s:return l(g+\"Seconds\",2);case i:return l(g+\"Milliseconds\",3);default:return this.clone()}},m.endOf=function(t){return this.startOf(t,!1)},m.$set=function(t,e){var n,o=O.p(t),h=\"set\"+(this.$u?\"UTC\":\"\"),$=(n={},n[a]=h+\"Date\",n[d]=h+\"Date\",n[f]=h+\"Month\",n[c]=h+\"FullYear\",n[u]=h+\"Hours\",n[s]=h+\"Minutes\",n[i]=h+\"Seconds\",n[r]=h+\"Milliseconds\",n)[o],l=o===a?this.$D+(e-this.$W):e;if(o===f||o===c){var y=this.clone().set(d,1);y.$d[$](l),y.init(),this.$d=y.set(d,Math.min(this.$D,y.daysInMonth())).$d}else $&&this.$d[$](l);return this.init(),this},m.set=function(t,e){return this.clone().$set(t,e)},m.get=function(t){return this[O.p(t)]()},m.add=function(r,h){var d,$=this;r=Number(r);var l=O.p(h),y=function(t){var e=w($);return O.w(e.date(e.date()+Math.round(t*r)),$)};if(l===f)return this.set(f,this.$M+r);if(l===c)return this.set(c,this.$y+r);if(l===a)return y(1);if(l===o)return y(7);var M=(d={},d[s]=e,d[u]=n,d[i]=t,d)[l]||1,m=this.$d.getTime()+r*M;return O.w(m,this)},m.subtract=function(t,e){return this.add(-1*t,e)},m.format=function(t){var e=this,n=this.$locale();if(!this.isValid())return n.invalidDate||$;var r=t||\"YYYY-MM-DDTHH:mm:ssZ\",i=O.z(this),s=this.$H,u=this.$m,a=this.$M,o=n.weekdays,f=n.months,h=function(t,n,i,s){return t&&(t[n]||t(e,r))||i[n].substr(0,s)},c=function(t){return O.s(s%12||12,t,\"0\")},d=n.meridiem||function(t,e,n){var r=t<12?\"AM\":\"PM\";return n?r.toLowerCase():r},l={YY:String(this.$y).slice(-2),YYYY:this.$y,M:a+1,MM:O.s(a+1,2,\"0\"),MMM:h(n.monthsShort,a,f,3),MMMM:h(f,a),D:this.$D,DD:O.s(this.$D,2,\"0\"),d:String(this.$W),dd:h(n.weekdaysMin,this.$W,o,2),ddd:h(n.weekdaysShort,this.$W,o,3),dddd:o[this.$W],H:String(s),HH:O.s(s,2,\"0\"),h:c(1),hh:c(2),a:d(s,u,!0),A:d(s,u,!1),m:String(u),mm:O.s(u,2,\"0\"),s:String(this.$s),ss:O.s(this.$s,2,\"0\"),SSS:O.s(this.$ms,3,\"0\"),Z:i};return r.replace(y,(function(t,e){return e||l[t]||i.replace(\":\",\"\")}))},m.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},m.diff=function(r,d,$){var l,y=O.p(d),M=w(r),m=(M.utcOffset()-this.utcOffset())*e,g=this-M,D=O.m(this,M);return D=(l={},l[c]=D/12,l[f]=D,l[h]=D/3,l[o]=(g-m)/6048e5,l[a]=(g-m)/864e5,l[u]=g/n,l[s]=g/e,l[i]=g/t,l)[y]||g,$?D:O.a(D)},m.daysInMonth=function(){return this.endOf(f).$D},m.$locale=function(){return v[this.$L]},m.locale=function(t,e){if(!t)return this.$L;var n=this.clone(),r=S(t,e,!0);return r&&(n.$L=r),n},m.clone=function(){return O.w(this.$d,this)},m.toDate=function(){return new Date(this.valueOf())},m.toJSON=function(){return this.isValid()?this.toISOString():null},m.toISOString=function(){return this.$d.toISOString()},m.toString=function(){return this.$d.toUTCString()},M}(),b=_.prototype;return w.prototype=b,[[\"$ms\",r],[\"$s\",i],[\"$m\",s],[\"$H\",u],[\"$W\",a],[\"$M\",f],[\"$y\",c],[\"$D\",d]].forEach((function(t){b[t[1]]=function(e){return this.$g(e,t[0],t[1])}})),w.extend=function(t,e){return t.$i||(t(e,_,w),t.$i=!0),w},w.locale=S,w.isDayjs=p,w.unix=function(t){return w(1e3*t)},w.en=v[D],w.Ls=v,w.p={},w}));","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n *  - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function(val, options) {\n  options = options || {};\n  var type = typeof val;\n  if (type === 'string' && val.length > 0) {\n    return parse(val);\n  } else if (type === 'number' && isNaN(val) === false) {\n    return options.long ? fmtLong(val) : fmtShort(val);\n  }\n  throw new Error(\n    'val is not a non-empty string or a valid number. val=' +\n      JSON.stringify(val)\n  );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n  str = String(str);\n  if (str.length > 100) {\n    return;\n  }\n  var match = /^((?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(\n    str\n  );\n  if (!match) {\n    return;\n  }\n  var n = parseFloat(match[1]);\n  var type = (match[2] || 'ms').toLowerCase();\n  switch (type) {\n    case 'years':\n    case 'year':\n    case 'yrs':\n    case 'yr':\n    case 'y':\n      return n * y;\n    case 'days':\n    case 'day':\n    case 'd':\n      return n * d;\n    case 'hours':\n    case 'hour':\n    case 'hrs':\n    case 'hr':\n    case 'h':\n      return n * h;\n    case 'minutes':\n    case 'minute':\n    case 'mins':\n    case 'min':\n    case 'm':\n      return n * m;\n    case 'seconds':\n    case 'second':\n    case 'secs':\n    case 'sec':\n    case 's':\n      return n * s;\n    case 'milliseconds':\n    case 'millisecond':\n    case 'msecs':\n    case 'msec':\n    case 'ms':\n      return n;\n    default:\n      return undefined;\n  }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n  if (ms >= d) {\n    return Math.round(ms / d) + 'd';\n  }\n  if (ms >= h) {\n    return Math.round(ms / h) + 'h';\n  }\n  if (ms >= m) {\n    return Math.round(ms / m) + 'm';\n  }\n  if (ms >= s) {\n    return Math.round(ms / s) + 's';\n  }\n  return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n  return plural(ms, d, 'day') ||\n    plural(ms, h, 'hour') ||\n    plural(ms, m, 'minute') ||\n    plural(ms, s, 'second') ||\n    ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, n, name) {\n  if (ms < n) {\n    return;\n  }\n  if (ms < n * 1.5) {\n    return Math.floor(ms / n) + ' ' + name;\n  }\n  return Math.ceil(ms / n) + ' ' + name + 's';\n}\n","/**\n * Module dependencies.\n */\n\nvar keys = require('./keys');\nvar hasBinary = require('has-binary2');\nvar sliceBuffer = require('arraybuffer.slice');\nvar after = require('after');\nvar utf8 = require('./utf8');\n\nvar base64encoder;\nif (typeof ArrayBuffer !== 'undefined') {\n  base64encoder = require('base64-arraybuffer');\n}\n\n/**\n * Check if we are running an android browser. That requires us to use\n * ArrayBuffer with polling transports...\n *\n * http://ghinda.net/jpeg-blob-ajax-android/\n */\n\nvar isAndroid = typeof navigator !== 'undefined' && /Android/i.test(navigator.userAgent);\n\n/**\n * Check if we are running in PhantomJS.\n * Uploading a Blob with PhantomJS does not work correctly, as reported here:\n * https://github.com/ariya/phantomjs/issues/11395\n * @type boolean\n */\nvar isPhantomJS = typeof navigator !== 'undefined' && /PhantomJS/i.test(navigator.userAgent);\n\n/**\n * When true, avoids using Blobs to encode payloads.\n * @type boolean\n */\nvar dontSendBlobs = isAndroid || isPhantomJS;\n\n/**\n * Current protocol version.\n */\n\nexports.protocol = 3;\n\n/**\n * Packet types.\n */\n\nvar packets = exports.packets = {\n    open:     0    // non-ws\n  , close:    1    // non-ws\n  , ping:     2\n  , pong:     3\n  , message:  4\n  , upgrade:  5\n  , noop:     6\n};\n\nvar packetslist = keys(packets);\n\n/**\n * Premade error packet.\n */\n\nvar err = { type: 'error', data: 'parser error' };\n\n/**\n * Create a blob api even for blob builder when vendor prefixes exist\n */\n\nvar Blob = require('blob');\n\n/**\n * Encodes a packet.\n *\n *     <packet type id> [ <data> ]\n *\n * Example:\n *\n *     5hello world\n *     3\n *     4\n *\n * Binary is encoded in an identical principle\n *\n * @api private\n */\n\nexports.encodePacket = function (packet, supportsBinary, utf8encode, callback) {\n  if (typeof supportsBinary === 'function') {\n    callback = supportsBinary;\n    supportsBinary = false;\n  }\n\n  if (typeof utf8encode === 'function') {\n    callback = utf8encode;\n    utf8encode = null;\n  }\n\n  var data = (packet.data === undefined)\n    ? undefined\n    : packet.data.buffer || packet.data;\n\n  if (typeof ArrayBuffer !== 'undefined' && data instanceof ArrayBuffer) {\n    return encodeArrayBuffer(packet, supportsBinary, callback);\n  } else if (typeof Blob !== 'undefined' && data instanceof Blob) {\n    return encodeBlob(packet, supportsBinary, callback);\n  }\n\n  // might be an object with { base64: true, data: dataAsBase64String }\n  if (data && data.base64) {\n    return encodeBase64Object(packet, callback);\n  }\n\n  // Sending data as a utf-8 string\n  var encoded = packets[packet.type];\n\n  // data fragment is optional\n  if (undefined !== packet.data) {\n    encoded += utf8encode ? utf8.encode(String(packet.data), { strict: false }) : String(packet.data);\n  }\n\n  return callback('' + encoded);\n\n};\n\nfunction encodeBase64Object(packet, callback) {\n  // packet data is an object { base64: true, data: dataAsBase64String }\n  var message = 'b' + exports.packets[packet.type] + packet.data.data;\n  return callback(message);\n}\n\n/**\n * Encode packet helpers for binary types\n */\n\nfunction encodeArrayBuffer(packet, supportsBinary, callback) {\n  if (!supportsBinary) {\n    return exports.encodeBase64Packet(packet, callback);\n  }\n\n  var data = packet.data;\n  var contentArray = new Uint8Array(data);\n  var resultBuffer = new Uint8Array(1 + data.byteLength);\n\n  resultBuffer[0] = packets[packet.type];\n  for (var i = 0; i < contentArray.length; i++) {\n    resultBuffer[i+1] = contentArray[i];\n  }\n\n  return callback(resultBuffer.buffer);\n}\n\nfunction encodeBlobAsArrayBuffer(packet, supportsBinary, callback) {\n  if (!supportsBinary) {\n    return exports.encodeBase64Packet(packet, callback);\n  }\n\n  var fr = new FileReader();\n  fr.onload = function() {\n    exports.encodePacket({ type: packet.type, data: fr.result }, supportsBinary, true, callback);\n  };\n  return fr.readAsArrayBuffer(packet.data);\n}\n\nfunction encodeBlob(packet, supportsBinary, callback) {\n  if (!supportsBinary) {\n    return exports.encodeBase64Packet(packet, callback);\n  }\n\n  if (dontSendBlobs) {\n    return encodeBlobAsArrayBuffer(packet, supportsBinary, callback);\n  }\n\n  var length = new Uint8Array(1);\n  length[0] = packets[packet.type];\n  var blob = new Blob([length.buffer, packet.data]);\n\n  return callback(blob);\n}\n\n/**\n * Encodes a packet with binary data in a base64 string\n *\n * @param {Object} packet, has `type` and `data`\n * @return {String} base64 encoded message\n */\n\nexports.encodeBase64Packet = function(packet, callback) {\n  var message = 'b' + exports.packets[packet.type];\n  if (typeof Blob !== 'undefined' && packet.data instanceof Blob) {\n    var fr = new FileReader();\n    fr.onload = function() {\n      var b64 = fr.result.split(',')[1];\n      callback(message + b64);\n    };\n    return fr.readAsDataURL(packet.data);\n  }\n\n  var b64data;\n  try {\n    b64data = String.fromCharCode.apply(null, new Uint8Array(packet.data));\n  } catch (e) {\n    // iPhone Safari doesn't let you apply with typed arrays\n    var typed = new Uint8Array(packet.data);\n    var basic = new Array(typed.length);\n    for (var i = 0; i < typed.length; i++) {\n      basic[i] = typed[i];\n    }\n    b64data = String.fromCharCode.apply(null, basic);\n  }\n  message += btoa(b64data);\n  return callback(message);\n};\n\n/**\n * Decodes a packet. Changes format to Blob if requested.\n *\n * @return {Object} with `type` and `data` (if any)\n * @api private\n */\n\nexports.decodePacket = function (data, binaryType, utf8decode) {\n  if (data === undefined) {\n    return err;\n  }\n  // String data\n  if (typeof data === 'string') {\n    if (data.charAt(0) === 'b') {\n      return exports.decodeBase64Packet(data.substr(1), binaryType);\n    }\n\n    if (utf8decode) {\n      data = tryDecode(data);\n      if (data === false) {\n        return err;\n      }\n    }\n    var type = data.charAt(0);\n\n    if (Number(type) != type || !packetslist[type]) {\n      return err;\n    }\n\n    if (data.length > 1) {\n      return { type: packetslist[type], data: data.substring(1) };\n    } else {\n      return { type: packetslist[type] };\n    }\n  }\n\n  var asArray = new Uint8Array(data);\n  var type = asArray[0];\n  var rest = sliceBuffer(data, 1);\n  if (Blob && binaryType === 'blob') {\n    rest = new Blob([rest]);\n  }\n  return { type: packetslist[type], data: rest };\n};\n\nfunction tryDecode(data) {\n  try {\n    data = utf8.decode(data, { strict: false });\n  } catch (e) {\n    return false;\n  }\n  return data;\n}\n\n/**\n * Decodes a packet encoded in a base64 string\n *\n * @param {String} base64 encoded message\n * @return {Object} with `type` and `data` (if any)\n */\n\nexports.decodeBase64Packet = function(msg, binaryType) {\n  var type = packetslist[msg.charAt(0)];\n  if (!base64encoder) {\n    return { type: type, data: { base64: true, data: msg.substr(1) } };\n  }\n\n  var data = base64encoder.decode(msg.substr(1));\n\n  if (binaryType === 'blob' && Blob) {\n    data = new Blob([data]);\n  }\n\n  return { type: type, data: data };\n};\n\n/**\n * Encodes multiple messages (payload).\n *\n *     <length>:data\n *\n * Example:\n *\n *     11:hello world2:hi\n *\n * If any contents are binary, they will be encoded as base64 strings. Base64\n * encoded strings are marked with a b before the length specifier\n *\n * @param {Array} packets\n * @api private\n */\n\nexports.encodePayload = function (packets, supportsBinary, callback) {\n  if (typeof supportsBinary === 'function') {\n    callback = supportsBinary;\n    supportsBinary = null;\n  }\n\n  var isBinary = hasBinary(packets);\n\n  if (supportsBinary && isBinary) {\n    if (Blob && !dontSendBlobs) {\n      return exports.encodePayloadAsBlob(packets, callback);\n    }\n\n    return exports.encodePayloadAsArrayBuffer(packets, callback);\n  }\n\n  if (!packets.length) {\n    return callback('0:');\n  }\n\n  function setLengthHeader(message) {\n    return message.length + ':' + message;\n  }\n\n  function encodeOne(packet, doneCallback) {\n    exports.encodePacket(packet, !isBinary ? false : supportsBinary, false, function(message) {\n      doneCallback(null, setLengthHeader(message));\n    });\n  }\n\n  map(packets, encodeOne, function(err, results) {\n    return callback(results.join(''));\n  });\n};\n\n/**\n * Async array map using after\n */\n\nfunction map(ary, each, done) {\n  var result = new Array(ary.length);\n  var next = after(ary.length, done);\n\n  var eachWithIndex = function(i, el, cb) {\n    each(el, function(error, msg) {\n      result[i] = msg;\n      cb(error, result);\n    });\n  };\n\n  for (var i = 0; i < ary.length; i++) {\n    eachWithIndex(i, ary[i], next);\n  }\n}\n\n/*\n * Decodes data when a payload is maybe expected. Possible binary contents are\n * decoded from their base64 representation\n *\n * @param {String} data, callback method\n * @api public\n */\n\nexports.decodePayload = function (data, binaryType, callback) {\n  if (typeof data !== 'string') {\n    return exports.decodePayloadAsBinary(data, binaryType, callback);\n  }\n\n  if (typeof binaryType === 'function') {\n    callback = binaryType;\n    binaryType = null;\n  }\n\n  var packet;\n  if (data === '') {\n    // parser error - ignoring payload\n    return callback(err, 0, 1);\n  }\n\n  var length = '', n, msg;\n\n  for (var i = 0, l = data.length; i < l; i++) {\n    var chr = data.charAt(i);\n\n    if (chr !== ':') {\n      length += chr;\n      continue;\n    }\n\n    if (length === '' || (length != (n = Number(length)))) {\n      // parser error - ignoring payload\n      return callback(err, 0, 1);\n    }\n\n    msg = data.substr(i + 1, n);\n\n    if (length != msg.length) {\n      // parser error - ignoring payload\n      return callback(err, 0, 1);\n    }\n\n    if (msg.length) {\n      packet = exports.decodePacket(msg, binaryType, false);\n\n      if (err.type === packet.type && err.data === packet.data) {\n        // parser error in individual packet - ignoring payload\n        return callback(err, 0, 1);\n      }\n\n      var ret = callback(packet, i + n, l);\n      if (false === ret) return;\n    }\n\n    // advance cursor\n    i += n;\n    length = '';\n  }\n\n  if (length !== '') {\n    // parser error - ignoring payload\n    return callback(err, 0, 1);\n  }\n\n};\n\n/**\n * Encodes multiple messages (payload) as binary.\n *\n * <1 = binary, 0 = string><number from 0-9><number from 0-9>[...]<number\n * 255><data>\n *\n * Example:\n * 1 3 255 1 2 3, if the binary contents are interpreted as 8 bit integers\n *\n * @param {Array} packets\n * @return {ArrayBuffer} encoded payload\n * @api private\n */\n\nexports.encodePayloadAsArrayBuffer = function(packets, callback) {\n  if (!packets.length) {\n    return callback(new ArrayBuffer(0));\n  }\n\n  function encodeOne(packet, doneCallback) {\n    exports.encodePacket(packet, true, true, function(data) {\n      return doneCallback(null, data);\n    });\n  }\n\n  map(packets, encodeOne, function(err, encodedPackets) {\n    var totalLength = encodedPackets.reduce(function(acc, p) {\n      var len;\n      if (typeof p === 'string'){\n        len = p.length;\n      } else {\n        len = p.byteLength;\n      }\n      return acc + len.toString().length + len + 2; // string/binary identifier + separator = 2\n    }, 0);\n\n    var resultArray = new Uint8Array(totalLength);\n\n    var bufferIndex = 0;\n    encodedPackets.forEach(function(p) {\n      var isString = typeof p === 'string';\n      var ab = p;\n      if (isString) {\n        var view = new Uint8Array(p.length);\n        for (var i = 0; i < p.length; i++) {\n          view[i] = p.charCodeAt(i);\n        }\n        ab = view.buffer;\n      }\n\n      if (isString) { // not true binary\n        resultArray[bufferIndex++] = 0;\n      } else { // true binary\n        resultArray[bufferIndex++] = 1;\n      }\n\n      var lenStr = ab.byteLength.toString();\n      for (var i = 0; i < lenStr.length; i++) {\n        resultArray[bufferIndex++] = parseInt(lenStr[i]);\n      }\n      resultArray[bufferIndex++] = 255;\n\n      var view = new Uint8Array(ab);\n      for (var i = 0; i < view.length; i++) {\n        resultArray[bufferIndex++] = view[i];\n      }\n    });\n\n    return callback(resultArray.buffer);\n  });\n};\n\n/**\n * Encode as Blob\n */\n\nexports.encodePayloadAsBlob = function(packets, callback) {\n  function encodeOne(packet, doneCallback) {\n    exports.encodePacket(packet, true, true, function(encoded) {\n      var binaryIdentifier = new Uint8Array(1);\n      binaryIdentifier[0] = 1;\n      if (typeof encoded === 'string') {\n        var view = new Uint8Array(encoded.length);\n        for (var i = 0; i < encoded.length; i++) {\n          view[i] = encoded.charCodeAt(i);\n        }\n        encoded = view.buffer;\n        binaryIdentifier[0] = 0;\n      }\n\n      var len = (encoded instanceof ArrayBuffer)\n        ? encoded.byteLength\n        : encoded.size;\n\n      var lenStr = len.toString();\n      var lengthAry = new Uint8Array(lenStr.length + 1);\n      for (var i = 0; i < lenStr.length; i++) {\n        lengthAry[i] = parseInt(lenStr[i]);\n      }\n      lengthAry[lenStr.length] = 255;\n\n      if (Blob) {\n        var blob = new Blob([binaryIdentifier.buffer, lengthAry.buffer, encoded]);\n        doneCallback(null, blob);\n      }\n    });\n  }\n\n  map(packets, encodeOne, function(err, results) {\n    return callback(new Blob(results));\n  });\n};\n\n/*\n * Decodes data when a payload is maybe expected. Strings are decoded by\n * interpreting each byte as a key code for entries marked to start with 0. See\n * description of encodePayloadAsBinary\n *\n * @param {ArrayBuffer} data, callback method\n * @api public\n */\n\nexports.decodePayloadAsBinary = function (data, binaryType, callback) {\n  if (typeof binaryType === 'function') {\n    callback = binaryType;\n    binaryType = null;\n  }\n\n  var bufferTail = data;\n  var buffers = [];\n\n  while (bufferTail.byteLength > 0) {\n    var tailArray = new Uint8Array(bufferTail);\n    var isString = tailArray[0] === 0;\n    var msgLength = '';\n\n    for (var i = 1; ; i++) {\n      if (tailArray[i] === 255) break;\n\n      // 310 = char length of Number.MAX_VALUE\n      if (msgLength.length > 310) {\n        return callback(err, 0, 1);\n      }\n\n      msgLength += tailArray[i];\n    }\n\n    bufferTail = sliceBuffer(bufferTail, 2 + msgLength.length);\n    msgLength = parseInt(msgLength);\n\n    var msg = sliceBuffer(bufferTail, 0, msgLength);\n    if (isString) {\n      try {\n        msg = String.fromCharCode.apply(null, new Uint8Array(msg));\n      } catch (e) {\n        // iPhone Safari doesn't let you apply to typed arrays\n        var typed = new Uint8Array(msg);\n        msg = '';\n        for (var i = 0; i < typed.length; i++) {\n          msg += String.fromCharCode(typed[i]);\n        }\n      }\n    }\n\n    buffers.push(msg);\n    bufferTail = sliceBuffer(bufferTail, msgLength);\n  }\n\n  var total = buffers.length;\n  buffers.forEach(function(buffer, i) {\n    callback(exports.decodePacket(buffer, binaryType, true), i, total);\n  });\n};\n","// Polyfills\n\nif ( Number.EPSILON === undefined ) {\n\n\tNumber.EPSILON = Math.pow( 2, - 52 );\n\n}\n\nif ( Number.isInteger === undefined ) {\n\n\t// Missing in IE\n\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isInteger\n\n\tNumber.isInteger = function ( value ) {\n\n\t\treturn typeof value === 'number' && isFinite( value ) && Math.floor( value ) === value;\n\n\t};\n\n}\n\n//\n\nif ( Math.sign === undefined ) {\n\n\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/sign\n\n\tMath.sign = function ( x ) {\n\n\t\treturn ( x < 0 ) ? - 1 : ( x > 0 ) ? 1 : + x;\n\n\t};\n\n}\n\nif ( 'name' in Function.prototype === false ) {\n\n\t// Missing in IE\n\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/name\n\n\tObject.defineProperty( Function.prototype, 'name', {\n\n\t\tget: function () {\n\n\t\t\treturn this.toString().match( /^\\s*function\\s*([^\\(\\s]*)/ )[ 1 ];\n\n\t\t}\n\n\t} );\n\n}\n\nif ( Object.assign === undefined ) {\n\n\t// Missing in IE\n\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign\n\n\tObject.assign = function ( target ) {\n\n\t\tif ( target === undefined || target === null ) {\n\n\t\t\tthrow new TypeError( 'Cannot convert undefined or null to object' );\n\n\t\t}\n\n\t\tconst output = Object( target );\n\n\t\tfor ( let index = 1; index < arguments.length; index ++ ) {\n\n\t\t\tconst source = arguments[ index ];\n\n\t\t\tif ( source !== undefined && source !== null ) {\n\n\t\t\t\tfor ( const nextKey in source ) {\n\n\t\t\t\t\tif ( Object.prototype.hasOwnProperty.call( source, nextKey ) ) {\n\n\t\t\t\t\t\toutput[ nextKey ] = source[ nextKey ];\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn output;\n\n\t};\n\n}\n\nconst REVISION = '120';\nconst MOUSE = { LEFT: 0, MIDDLE: 1, RIGHT: 2, ROTATE: 0, DOLLY: 1, PAN: 2 };\nconst TOUCH = { ROTATE: 0, PAN: 1, DOLLY_PAN: 2, DOLLY_ROTATE: 3 };\nconst CullFaceNone = 0;\nconst CullFaceBack = 1;\nconst CullFaceFront = 2;\nconst CullFaceFrontBack = 3;\nconst BasicShadowMap = 0;\nconst PCFShadowMap = 1;\nconst PCFSoftShadowMap = 2;\nconst VSMShadowMap = 3;\nconst FrontSide = 0;\nconst BackSide = 1;\nconst DoubleSide = 2;\nconst FlatShading = 1;\nconst SmoothShading = 2;\nconst NoBlending = 0;\nconst NormalBlending = 1;\nconst AdditiveBlending = 2;\nconst SubtractiveBlending = 3;\nconst MultiplyBlending = 4;\nconst CustomBlending = 5;\nconst AddEquation = 100;\nconst SubtractEquation = 101;\nconst ReverseSubtractEquation = 102;\nconst MinEquation = 103;\nconst MaxEquation = 104;\nconst ZeroFactor = 200;\nconst OneFactor = 201;\nconst SrcColorFactor = 202;\nconst OneMinusSrcColorFactor = 203;\nconst SrcAlphaFactor = 204;\nconst OneMinusSrcAlphaFactor = 205;\nconst DstAlphaFactor = 206;\nconst OneMinusDstAlphaFactor = 207;\nconst DstColorFactor = 208;\nconst OneMinusDstColorFactor = 209;\nconst SrcAlphaSaturateFactor = 210;\nconst NeverDepth = 0;\nconst AlwaysDepth = 1;\nconst LessDepth = 2;\nconst LessEqualDepth = 3;\nconst EqualDepth = 4;\nconst GreaterEqualDepth = 5;\nconst GreaterDepth = 6;\nconst NotEqualDepth = 7;\nconst MultiplyOperation = 0;\nconst MixOperation = 1;\nconst AddOperation = 2;\nconst NoToneMapping = 0;\nconst LinearToneMapping = 1;\nconst ReinhardToneMapping = 2;\nconst CineonToneMapping = 3;\nconst ACESFilmicToneMapping = 4;\nconst CustomToneMapping = 5;\n\nconst UVMapping = 300;\nconst CubeReflectionMapping = 301;\nconst CubeRefractionMapping = 302;\nconst EquirectangularReflectionMapping = 303;\nconst EquirectangularRefractionMapping = 304;\nconst CubeUVReflectionMapping = 306;\nconst CubeUVRefractionMapping = 307;\nconst RepeatWrapping = 1000;\nconst ClampToEdgeWrapping = 1001;\nconst MirroredRepeatWrapping = 1002;\nconst NearestFilter = 1003;\nconst NearestMipmapNearestFilter = 1004;\nconst NearestMipMapNearestFilter = 1004;\nconst NearestMipmapLinearFilter = 1005;\nconst NearestMipMapLinearFilter = 1005;\nconst LinearFilter = 1006;\nconst LinearMipmapNearestFilter = 1007;\nconst LinearMipMapNearestFilter = 1007;\nconst LinearMipmapLinearFilter = 1008;\nconst LinearMipMapLinearFilter = 1008;\nconst UnsignedByteType = 1009;\nconst ByteType = 1010;\nconst ShortType = 1011;\nconst UnsignedShortType = 1012;\nconst IntType = 1013;\nconst UnsignedIntType = 1014;\nconst FloatType = 1015;\nconst HalfFloatType = 1016;\nconst UnsignedShort4444Type = 1017;\nconst UnsignedShort5551Type = 1018;\nconst UnsignedShort565Type = 1019;\nconst UnsignedInt248Type = 1020;\nconst AlphaFormat = 1021;\nconst RGBFormat = 1022;\nconst RGBAFormat = 1023;\nconst LuminanceFormat = 1024;\nconst LuminanceAlphaFormat = 1025;\nconst RGBEFormat = RGBAFormat;\nconst DepthFormat = 1026;\nconst DepthStencilFormat = 1027;\nconst RedFormat = 1028;\nconst RedIntegerFormat = 1029;\nconst RGFormat = 1030;\nconst RGIntegerFormat = 1031;\nconst RGBIntegerFormat = 1032;\nconst RGBAIntegerFormat = 1033;\n\nconst RGB_S3TC_DXT1_Format = 33776;\nconst RGBA_S3TC_DXT1_Format = 33777;\nconst RGBA_S3TC_DXT3_Format = 33778;\nconst RGBA_S3TC_DXT5_Format = 33779;\nconst RGB_PVRTC_4BPPV1_Format = 35840;\nconst RGB_PVRTC_2BPPV1_Format = 35841;\nconst RGBA_PVRTC_4BPPV1_Format = 35842;\nconst RGBA_PVRTC_2BPPV1_Format = 35843;\nconst RGB_ETC1_Format = 36196;\nconst RGB_ETC2_Format = 37492;\nconst RGBA_ETC2_EAC_Format = 37496;\nconst RGBA_ASTC_4x4_Format = 37808;\nconst RGBA_ASTC_5x4_Format = 37809;\nconst RGBA_ASTC_5x5_Format = 37810;\nconst RGBA_ASTC_6x5_Format = 37811;\nconst RGBA_ASTC_6x6_Format = 37812;\nconst RGBA_ASTC_8x5_Format = 37813;\nconst RGBA_ASTC_8x6_Format = 37814;\nconst RGBA_ASTC_8x8_Format = 37815;\nconst RGBA_ASTC_10x5_Format = 37816;\nconst RGBA_ASTC_10x6_Format = 37817;\nconst RGBA_ASTC_10x8_Format = 37818;\nconst RGBA_ASTC_10x10_Format = 37819;\nconst RGBA_ASTC_12x10_Format = 37820;\nconst RGBA_ASTC_12x12_Format = 37821;\nconst RGBA_BPTC_Format = 36492;\nconst SRGB8_ALPHA8_ASTC_4x4_Format = 37840;\nconst SRGB8_ALPHA8_ASTC_5x4_Format = 37841;\nconst SRGB8_ALPHA8_ASTC_5x5_Format = 37842;\nconst SRGB8_ALPHA8_ASTC_6x5_Format = 37843;\nconst SRGB8_ALPHA8_ASTC_6x6_Format = 37844;\nconst SRGB8_ALPHA8_ASTC_8x5_Format = 37845;\nconst SRGB8_ALPHA8_ASTC_8x6_Format = 37846;\nconst SRGB8_ALPHA8_ASTC_8x8_Format = 37847;\nconst SRGB8_ALPHA8_ASTC_10x5_Format = 37848;\nconst SRGB8_ALPHA8_ASTC_10x6_Format = 37849;\nconst SRGB8_ALPHA8_ASTC_10x8_Format = 37850;\nconst SRGB8_ALPHA8_ASTC_10x10_Format = 37851;\nconst SRGB8_ALPHA8_ASTC_12x10_Format = 37852;\nconst SRGB8_ALPHA8_ASTC_12x12_Format = 37853;\nconst LoopOnce = 2200;\nconst LoopRepeat = 2201;\nconst LoopPingPong = 2202;\nconst InterpolateDiscrete = 2300;\nconst InterpolateLinear = 2301;\nconst InterpolateSmooth = 2302;\nconst ZeroCurvatureEnding = 2400;\nconst ZeroSlopeEnding = 2401;\nconst WrapAroundEnding = 2402;\nconst NormalAnimationBlendMode = 2500;\nconst AdditiveAnimationBlendMode = 2501;\nconst TrianglesDrawMode = 0;\nconst TriangleStripDrawMode = 1;\nconst TriangleFanDrawMode = 2;\nconst LinearEncoding = 3000;\nconst sRGBEncoding = 3001;\nconst GammaEncoding = 3007;\nconst RGBEEncoding = 3002;\nconst LogLuvEncoding = 3003;\nconst RGBM7Encoding = 3004;\nconst RGBM16Encoding = 3005;\nconst RGBDEncoding = 3006;\nconst BasicDepthPacking = 3200;\nconst RGBADepthPacking = 3201;\nconst TangentSpaceNormalMap = 0;\nconst ObjectSpaceNormalMap = 1;\n\nconst ZeroStencilOp = 0;\nconst KeepStencilOp = 7680;\nconst ReplaceStencilOp = 7681;\nconst IncrementStencilOp = 7682;\nconst DecrementStencilOp = 7683;\nconst IncrementWrapStencilOp = 34055;\nconst DecrementWrapStencilOp = 34056;\nconst InvertStencilOp = 5386;\n\nconst NeverStencilFunc = 512;\nconst LessStencilFunc = 513;\nconst EqualStencilFunc = 514;\nconst LessEqualStencilFunc = 515;\nconst GreaterStencilFunc = 516;\nconst NotEqualStencilFunc = 517;\nconst GreaterEqualStencilFunc = 518;\nconst AlwaysStencilFunc = 519;\n\nconst StaticDrawUsage = 35044;\nconst DynamicDrawUsage = 35048;\nconst StreamDrawUsage = 35040;\nconst StaticReadUsage = 35045;\nconst DynamicReadUsage = 35049;\nconst StreamReadUsage = 35041;\nconst StaticCopyUsage = 35046;\nconst DynamicCopyUsage = 35050;\nconst StreamCopyUsage = 35042;\n\nconst GLSL1 = \"100\";\nconst GLSL3 = \"300 es\";\n\n/**\n * https://github.com/mrdoob/eventdispatcher.js/\n */\n\nfunction EventDispatcher() {}\n\nObject.assign( EventDispatcher.prototype, {\n\n\taddEventListener: function ( type, listener ) {\n\n\t\tif ( this._listeners === undefined ) this._listeners = {};\n\n\t\tconst listeners = this._listeners;\n\n\t\tif ( listeners[ type ] === undefined ) {\n\n\t\t\tlisteners[ type ] = [];\n\n\t\t}\n\n\t\tif ( listeners[ type ].indexOf( listener ) === - 1 ) {\n\n\t\t\tlisteners[ type ].push( listener );\n\n\t\t}\n\n\t},\n\n\thasEventListener: function ( type, listener ) {\n\n\t\tif ( this._listeners === undefined ) return false;\n\n\t\tconst listeners = this._listeners;\n\n\t\treturn listeners[ type ] !== undefined && listeners[ type ].indexOf( listener ) !== - 1;\n\n\t},\n\n\tremoveEventListener: function ( type, listener ) {\n\n\t\tif ( this._listeners === undefined ) return;\n\n\t\tconst listeners = this._listeners;\n\t\tconst listenerArray = listeners[ type ];\n\n\t\tif ( listenerArray !== undefined ) {\n\n\t\t\tconst index = listenerArray.indexOf( listener );\n\n\t\t\tif ( index !== - 1 ) {\n\n\t\t\t\tlistenerArray.splice( index, 1 );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\tdispatchEvent: function ( event ) {\n\n\t\tif ( this._listeners === undefined ) return;\n\n\t\tconst listeners = this._listeners;\n\t\tconst listenerArray = listeners[ event.type ];\n\n\t\tif ( listenerArray !== undefined ) {\n\n\t\t\tevent.target = this;\n\n\t\t\t// Make a copy, in case listeners are removed while iterating.\n\t\t\tconst array = listenerArray.slice( 0 );\n\n\t\t\tfor ( let i = 0, l = array.length; i < l; i ++ ) {\n\n\t\t\t\tarray[ i ].call( this, event );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n} );\n\nconst _lut = [];\n\nfor ( let i = 0; i < 256; i ++ ) {\n\n\t_lut[ i ] = ( i < 16 ? '0' : '' ) + ( i ).toString( 16 );\n\n}\n\nlet _seed = 1234567;\n\nconst MathUtils = {\n\n\tDEG2RAD: Math.PI / 180,\n\tRAD2DEG: 180 / Math.PI,\n\n\tgenerateUUID: function () {\n\n\t\t// http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/21963136#21963136\n\n\t\tconst d0 = Math.random() * 0xffffffff | 0;\n\t\tconst d1 = Math.random() * 0xffffffff | 0;\n\t\tconst d2 = Math.random() * 0xffffffff | 0;\n\t\tconst d3 = Math.random() * 0xffffffff | 0;\n\t\tconst uuid = _lut[ d0 & 0xff ] + _lut[ d0 >> 8 & 0xff ] + _lut[ d0 >> 16 & 0xff ] + _lut[ d0 >> 24 & 0xff ] + '-' +\n\t\t\t_lut[ d1 & 0xff ] + _lut[ d1 >> 8 & 0xff ] + '-' + _lut[ d1 >> 16 & 0x0f | 0x40 ] + _lut[ d1 >> 24 & 0xff ] + '-' +\n\t\t\t_lut[ d2 & 0x3f | 0x80 ] + _lut[ d2 >> 8 & 0xff ] + '-' + _lut[ d2 >> 16 & 0xff ] + _lut[ d2 >> 24 & 0xff ] +\n\t\t\t_lut[ d3 & 0xff ] + _lut[ d3 >> 8 & 0xff ] + _lut[ d3 >> 16 & 0xff ] + _lut[ d3 >> 24 & 0xff ];\n\n\t\t// .toUpperCase() here flattens concatenated strings to save heap memory space.\n\t\treturn uuid.toUpperCase();\n\n\t},\n\n\tclamp: function ( value, min, max ) {\n\n\t\treturn Math.max( min, Math.min( max, value ) );\n\n\t},\n\n\t// compute euclidian modulo of m % n\n\t// https://en.wikipedia.org/wiki/Modulo_operation\n\n\teuclideanModulo: function ( n, m ) {\n\n\t\treturn ( ( n % m ) + m ) % m;\n\n\t},\n\n\t// Linear mapping from range <a1, a2> to range <b1, b2>\n\n\tmapLinear: function ( x, a1, a2, b1, b2 ) {\n\n\t\treturn b1 + ( x - a1 ) * ( b2 - b1 ) / ( a2 - a1 );\n\n\t},\n\n\t// https://en.wikipedia.org/wiki/Linear_interpolation\n\n\tlerp: function ( x, y, t ) {\n\n\t\treturn ( 1 - t ) * x + t * y;\n\n\t},\n\n\t// http://en.wikipedia.org/wiki/Smoothstep\n\n\tsmoothstep: function ( x, min, max ) {\n\n\t\tif ( x <= min ) return 0;\n\t\tif ( x >= max ) return 1;\n\n\t\tx = ( x - min ) / ( max - min );\n\n\t\treturn x * x * ( 3 - 2 * x );\n\n\t},\n\n\tsmootherstep: function ( x, min, max ) {\n\n\t\tif ( x <= min ) return 0;\n\t\tif ( x >= max ) return 1;\n\n\t\tx = ( x - min ) / ( max - min );\n\n\t\treturn x * x * x * ( x * ( x * 6 - 15 ) + 10 );\n\n\t},\n\n\t// Random integer from <low, high> interval\n\n\trandInt: function ( low, high ) {\n\n\t\treturn low + Math.floor( Math.random() * ( high - low + 1 ) );\n\n\t},\n\n\t// Random float from <low, high> interval\n\n\trandFloat: function ( low, high ) {\n\n\t\treturn low + Math.random() * ( high - low );\n\n\t},\n\n\t// Random float from <-range/2, range/2> interval\n\n\trandFloatSpread: function ( range ) {\n\n\t\treturn range * ( 0.5 - Math.random() );\n\n\t},\n\n\t// Deterministic pseudo-random float in the interval [ 0, 1 ]\n\n\tseededRandom: function ( s ) {\n\n\t\tif ( s !== undefined ) _seed = s % 2147483647;\n\n\t\t// Park-Miller algorithm\n\n\t\t_seed = _seed * 16807 % 2147483647;\n\n\t\treturn ( _seed - 1 ) / 2147483646;\n\n\t},\n\n\tdegToRad: function ( degrees ) {\n\n\t\treturn degrees * MathUtils.DEG2RAD;\n\n\t},\n\n\tradToDeg: function ( radians ) {\n\n\t\treturn radians * MathUtils.RAD2DEG;\n\n\t},\n\n\tisPowerOfTwo: function ( value ) {\n\n\t\treturn ( value & ( value - 1 ) ) === 0 && value !== 0;\n\n\t},\n\n\tceilPowerOfTwo: function ( value ) {\n\n\t\treturn Math.pow( 2, Math.ceil( Math.log( value ) / Math.LN2 ) );\n\n\t},\n\n\tfloorPowerOfTwo: function ( value ) {\n\n\t\treturn Math.pow( 2, Math.floor( Math.log( value ) / Math.LN2 ) );\n\n\t},\n\n\tsetQuaternionFromProperEuler: function ( q, a, b, c, order ) {\n\n\t\t// Intrinsic Proper Euler Angles - see https://en.wikipedia.org/wiki/Euler_angles\n\n\t\t// rotations are applied to the axes in the order specified by 'order'\n\t\t// rotation by angle 'a' is applied first, then by angle 'b', then by angle 'c'\n\t\t// angles are in radians\n\n\t\tconst cos = Math.cos;\n\t\tconst sin = Math.sin;\n\n\t\tconst c2 = cos( b / 2 );\n\t\tconst s2 = sin( b / 2 );\n\n\t\tconst c13 = cos( ( a + c ) / 2 );\n\t\tconst s13 = sin( ( a + c ) / 2 );\n\n\t\tconst c1_3 = cos( ( a - c ) / 2 );\n\t\tconst s1_3 = sin( ( a - c ) / 2 );\n\n\t\tconst c3_1 = cos( ( c - a ) / 2 );\n\t\tconst s3_1 = sin( ( c - a ) / 2 );\n\n\t\tswitch ( order ) {\n\n\t\t\tcase 'XYX':\n\t\t\t\tq.set( c2 * s13, s2 * c1_3, s2 * s1_3, c2 * c13 );\n\t\t\t\tbreak;\n\n\t\t\tcase 'YZY':\n\t\t\t\tq.set( s2 * s1_3, c2 * s13, s2 * c1_3, c2 * c13 );\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZXZ':\n\t\t\t\tq.set( s2 * c1_3, s2 * s1_3, c2 * s13, c2 * c13 );\n\t\t\t\tbreak;\n\n\t\t\tcase 'XZX':\n\t\t\t\tq.set( c2 * s13, s2 * s3_1, s2 * c3_1, c2 * c13 );\n\t\t\t\tbreak;\n\n\t\t\tcase 'YXY':\n\t\t\t\tq.set( s2 * c3_1, c2 * s13, s2 * s3_1, c2 * c13 );\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZYZ':\n\t\t\t\tq.set( s2 * s3_1, s2 * c3_1, c2 * s13, c2 * c13 );\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tconsole.warn( 'THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: ' + order );\n\n\t\t}\n\n\t}\n\n};\n\nclass Vector2 {\n\n\tconstructor( x = 0, y = 0 ) {\n\n\t\tObject.defineProperty( this, 'isVector2', { value: true } );\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\n\t}\n\n\tget width() {\n\n\t\treturn this.x;\n\n\t}\n\n\tset width( value ) {\n\n\t\tthis.x = value;\n\n\t}\n\n\tget height() {\n\n\t\treturn this.y;\n\n\t}\n\n\tset height( value ) {\n\n\t\tthis.y = value;\n\n\t}\n\n\tset( x, y ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetScalar( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\n\t\treturn this;\n\n\t}\n\n\tsetX( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t}\n\n\tsetY( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetComponent( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetComponent( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.x, this.y );\n\n\t}\n\n\tcopy( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\n\t\treturn this;\n\n\t}\n\n\tadd( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector2: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' );\n\t\t\treturn this.addVectors( v, w );\n\n\t\t}\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\n\t\treturn this;\n\n\t}\n\n\taddScalar( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\n\t\treturn this;\n\n\t}\n\n\taddVectors( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\n\t\treturn this;\n\n\t}\n\n\taddScaledVector( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\n\t\treturn this;\n\n\t}\n\n\tsub( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector2: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' );\n\t\t\treturn this.subVectors( v, w );\n\n\t\t}\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\n\t\treturn this;\n\n\t}\n\n\tsubScalar( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\n\t\treturn this;\n\n\t}\n\n\tsubVectors( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( v ) {\n\n\t\tthis.x *= v.x;\n\t\tthis.y *= v.y;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\n\t\treturn this;\n\n\t}\n\n\tdivide( v ) {\n\n\t\tthis.x /= v.x;\n\t\tthis.y /= v.y;\n\n\t\treturn this;\n\n\t}\n\n\tdivideScalar( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t}\n\n\tapplyMatrix3( m ) {\n\n\t\tconst x = this.x, y = this.y;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 3 ] * y + e[ 6 ];\n\t\tthis.y = e[ 1 ] * x + e[ 4 ] * y + e[ 7 ];\n\n\t\treturn this;\n\n\t}\n\n\tmin( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\n\t\treturn this;\n\n\t}\n\n\tmax( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\n\t\treturn this;\n\n\t}\n\n\tclamp( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampScalar( minVal, maxVal ) {\n\n\t\tthis.x = Math.max( minVal, Math.min( maxVal, this.x ) );\n\t\tthis.y = Math.max( minVal, Math.min( maxVal, this.y ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampLength( min, max ) {\n\n\t\tconst length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );\n\n\t}\n\n\tfloor() {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\n\t\treturn this;\n\n\t}\n\n\tceil() {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\n\t\treturn this;\n\n\t}\n\n\tround() {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\n\t\treturn this;\n\n\t}\n\n\troundToZero() {\n\n\t\tthis.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x );\n\t\tthis.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y );\n\n\t\treturn this;\n\n\t}\n\n\tnegate() {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\n\t\treturn this;\n\n\t}\n\n\tdot( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y;\n\n\t}\n\n\tcross( v ) {\n\n\t\treturn this.x * v.y - this.y * v.x;\n\n\t}\n\n\tlengthSq() {\n\n\t\treturn this.x * this.x + this.y * this.y;\n\n\t}\n\n\tlength() {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y );\n\n\t}\n\n\tmanhattanLength() {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y );\n\n\t}\n\n\tnormalize() {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t}\n\n\tangle() {\n\n\t\t// computes the angle in radians with respect to the positive x-axis\n\n\t\tconst angle = Math.atan2( - this.y, - this.x ) + Math.PI;\n\n\t\treturn angle;\n\n\t}\n\n\tdistanceTo( v ) {\n\n\t\treturn Math.sqrt( this.distanceToSquared( v ) );\n\n\t}\n\n\tdistanceToSquared( v ) {\n\n\t\tconst dx = this.x - v.x, dy = this.y - v.y;\n\t\treturn dx * dx + dy * dy;\n\n\t}\n\n\tmanhattanDistanceTo( v ) {\n\n\t\treturn Math.abs( this.x - v.x ) + Math.abs( this.y - v.y );\n\n\t}\n\n\tsetLength( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t}\n\n\tlerp( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tlerpVectors( v1, v2, alpha ) {\n\n\t\tthis.x = v1.x + ( v2.x - v1.x ) * alpha;\n\t\tthis.y = v1.y + ( v2.y - v1.y ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tequals( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) );\n\n\t}\n\n\tfromArray( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\n\t\treturn array;\n\n\t}\n\n\tfromBufferAttribute( attribute, index, offset ) {\n\n\t\tif ( offset !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector2: offset has been removed from .fromBufferAttribute().' );\n\n\t\t}\n\n\t\tthis.x = attribute.getX( index );\n\t\tthis.y = attribute.getY( index );\n\n\t\treturn this;\n\n\t}\n\n\trotateAround( center, angle ) {\n\n\t\tconst c = Math.cos( angle ), s = Math.sin( angle );\n\n\t\tconst x = this.x - center.x;\n\t\tconst y = this.y - center.y;\n\n\t\tthis.x = x * c - y * s + center.x;\n\t\tthis.y = x * s + y * c + center.y;\n\n\t\treturn this;\n\n\t}\n\n\trandom() {\n\n\t\tthis.x = Math.random();\n\t\tthis.y = Math.random();\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass Matrix3 {\n\n\tconstructor() {\n\n\t\tObject.defineProperty( this, 'isMatrix3', { value: true } );\n\n\t\tthis.elements = [\n\n\t\t\t1, 0, 0,\n\t\t\t0, 1, 0,\n\t\t\t0, 0, 1\n\n\t\t];\n\n\t\tif ( arguments.length > 0 ) {\n\n\t\t\tconsole.error( 'THREE.Matrix3: the constructor no longer reads arguments. use .set() instead.' );\n\n\t\t}\n\n\t}\n\n\tset( n11, n12, n13, n21, n22, n23, n31, n32, n33 ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] = n11; te[ 1 ] = n21; te[ 2 ] = n31;\n\t\tte[ 3 ] = n12; te[ 4 ] = n22; te[ 5 ] = n32;\n\t\tte[ 6 ] = n13; te[ 7 ] = n23; te[ 8 ] = n33;\n\n\t\treturn this;\n\n\t}\n\n\tidentity() {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0,\n\t\t\t0, 1, 0,\n\t\t\t0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().fromArray( this.elements );\n\n\t}\n\n\tcopy( m ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = m.elements;\n\n\t\tte[ 0 ] = me[ 0 ]; te[ 1 ] = me[ 1 ]; te[ 2 ] = me[ 2 ];\n\t\tte[ 3 ] = me[ 3 ]; te[ 4 ] = me[ 4 ]; te[ 5 ] = me[ 5 ];\n\t\tte[ 6 ] = me[ 6 ]; te[ 7 ] = me[ 7 ]; te[ 8 ] = me[ 8 ];\n\n\t\treturn this;\n\n\t}\n\n\textractBasis( xAxis, yAxis, zAxis ) {\n\n\t\txAxis.setFromMatrix3Column( this, 0 );\n\t\tyAxis.setFromMatrix3Column( this, 1 );\n\t\tzAxis.setFromMatrix3Column( this, 2 );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromMatrix4( m ) {\n\n\t\tconst me = m.elements;\n\n\t\tthis.set(\n\n\t\t\tme[ 0 ], me[ 4 ], me[ 8 ],\n\t\t\tme[ 1 ], me[ 5 ], me[ 9 ],\n\t\t\tme[ 2 ], me[ 6 ], me[ 10 ]\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( m ) {\n\n\t\treturn this.multiplyMatrices( this, m );\n\n\t}\n\n\tpremultiply( m ) {\n\n\t\treturn this.multiplyMatrices( m, this );\n\n\t}\n\n\tmultiplyMatrices( a, b ) {\n\n\t\tconst ae = a.elements;\n\t\tconst be = b.elements;\n\t\tconst te = this.elements;\n\n\t\tconst a11 = ae[ 0 ], a12 = ae[ 3 ], a13 = ae[ 6 ];\n\t\tconst a21 = ae[ 1 ], a22 = ae[ 4 ], a23 = ae[ 7 ];\n\t\tconst a31 = ae[ 2 ], a32 = ae[ 5 ], a33 = ae[ 8 ];\n\n\t\tconst b11 = be[ 0 ], b12 = be[ 3 ], b13 = be[ 6 ];\n\t\tconst b21 = be[ 1 ], b22 = be[ 4 ], b23 = be[ 7 ];\n\t\tconst b31 = be[ 2 ], b32 = be[ 5 ], b33 = be[ 8 ];\n\n\t\tte[ 0 ] = a11 * b11 + a12 * b21 + a13 * b31;\n\t\tte[ 3 ] = a11 * b12 + a12 * b22 + a13 * b32;\n\t\tte[ 6 ] = a11 * b13 + a12 * b23 + a13 * b33;\n\n\t\tte[ 1 ] = a21 * b11 + a22 * b21 + a23 * b31;\n\t\tte[ 4 ] = a21 * b12 + a22 * b22 + a23 * b32;\n\t\tte[ 7 ] = a21 * b13 + a22 * b23 + a23 * b33;\n\n\t\tte[ 2 ] = a31 * b11 + a32 * b21 + a33 * b31;\n\t\tte[ 5 ] = a31 * b12 + a32 * b22 + a33 * b32;\n\t\tte[ 8 ] = a31 * b13 + a32 * b23 + a33 * b33;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( s ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] *= s; te[ 3 ] *= s; te[ 6 ] *= s;\n\t\tte[ 1 ] *= s; te[ 4 ] *= s; te[ 7 ] *= s;\n\t\tte[ 2 ] *= s; te[ 5 ] *= s; te[ 8 ] *= s;\n\n\t\treturn this;\n\n\t}\n\n\tdeterminant() {\n\n\t\tconst te = this.elements;\n\n\t\tconst a = te[ 0 ], b = te[ 1 ], c = te[ 2 ],\n\t\t\td = te[ 3 ], e = te[ 4 ], f = te[ 5 ],\n\t\t\tg = te[ 6 ], h = te[ 7 ], i = te[ 8 ];\n\n\t\treturn a * e * i - a * f * h - b * d * i + b * f * g + c * d * h - c * e * g;\n\n\t}\n\n\tgetInverse( matrix, throwOnDegenerate ) {\n\n\t\tif ( throwOnDegenerate !== undefined ) {\n\n\t\t\tconsole.warn( \"THREE.Matrix3: .getInverse() can no longer be configured to throw on degenerate.\" );\n\n\t\t}\n\n\t\tconst me = matrix.elements,\n\t\t\tte = this.elements,\n\n\t\t\tn11 = me[ 0 ], n21 = me[ 1 ], n31 = me[ 2 ],\n\t\t\tn12 = me[ 3 ], n22 = me[ 4 ], n32 = me[ 5 ],\n\t\t\tn13 = me[ 6 ], n23 = me[ 7 ], n33 = me[ 8 ],\n\n\t\t\tt11 = n33 * n22 - n32 * n23,\n\t\t\tt12 = n32 * n13 - n33 * n12,\n\t\t\tt13 = n23 * n12 - n22 * n13,\n\n\t\t\tdet = n11 * t11 + n21 * t12 + n31 * t13;\n\n\t\tif ( det === 0 ) return this.set( 0, 0, 0, 0, 0, 0, 0, 0, 0 );\n\n\t\tconst detInv = 1 / det;\n\n\t\tte[ 0 ] = t11 * detInv;\n\t\tte[ 1 ] = ( n31 * n23 - n33 * n21 ) * detInv;\n\t\tte[ 2 ] = ( n32 * n21 - n31 * n22 ) * detInv;\n\n\t\tte[ 3 ] = t12 * detInv;\n\t\tte[ 4 ] = ( n33 * n11 - n31 * n13 ) * detInv;\n\t\tte[ 5 ] = ( n31 * n12 - n32 * n11 ) * detInv;\n\n\t\tte[ 6 ] = t13 * detInv;\n\t\tte[ 7 ] = ( n21 * n13 - n23 * n11 ) * detInv;\n\t\tte[ 8 ] = ( n22 * n11 - n21 * n12 ) * detInv;\n\n\t\treturn this;\n\n\t}\n\n\ttranspose() {\n\n\t\tlet tmp;\n\t\tconst m = this.elements;\n\n\t\ttmp = m[ 1 ]; m[ 1 ] = m[ 3 ]; m[ 3 ] = tmp;\n\t\ttmp = m[ 2 ]; m[ 2 ] = m[ 6 ]; m[ 6 ] = tmp;\n\t\ttmp = m[ 5 ]; m[ 5 ] = m[ 7 ]; m[ 7 ] = tmp;\n\n\t\treturn this;\n\n\t}\n\n\tgetNormalMatrix( matrix4 ) {\n\n\t\treturn this.setFromMatrix4( matrix4 ).getInverse( this ).transpose();\n\n\t}\n\n\ttransposeIntoArray( r ) {\n\n\t\tconst m = this.elements;\n\n\t\tr[ 0 ] = m[ 0 ];\n\t\tr[ 1 ] = m[ 3 ];\n\t\tr[ 2 ] = m[ 6 ];\n\t\tr[ 3 ] = m[ 1 ];\n\t\tr[ 4 ] = m[ 4 ];\n\t\tr[ 5 ] = m[ 7 ];\n\t\tr[ 6 ] = m[ 2 ];\n\t\tr[ 7 ] = m[ 5 ];\n\t\tr[ 8 ] = m[ 8 ];\n\n\t\treturn this;\n\n\t}\n\n\tsetUvTransform( tx, ty, sx, sy, rotation, cx, cy ) {\n\n\t\tconst c = Math.cos( rotation );\n\t\tconst s = Math.sin( rotation );\n\n\t\tthis.set(\n\t\t\tsx * c, sx * s, - sx * ( c * cx + s * cy ) + cx + tx,\n\t\t\t- sy * s, sy * c, - sy * ( - s * cx + c * cy ) + cy + ty,\n\t\t\t0, 0, 1\n\t\t);\n\n\t}\n\n\tscale( sx, sy ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] *= sx; te[ 3 ] *= sx; te[ 6 ] *= sx;\n\t\tte[ 1 ] *= sy; te[ 4 ] *= sy; te[ 7 ] *= sy;\n\n\t\treturn this;\n\n\t}\n\n\trotate( theta ) {\n\n\t\tconst c = Math.cos( theta );\n\t\tconst s = Math.sin( theta );\n\n\t\tconst te = this.elements;\n\n\t\tconst a11 = te[ 0 ], a12 = te[ 3 ], a13 = te[ 6 ];\n\t\tconst a21 = te[ 1 ], a22 = te[ 4 ], a23 = te[ 7 ];\n\n\t\tte[ 0 ] = c * a11 + s * a21;\n\t\tte[ 3 ] = c * a12 + s * a22;\n\t\tte[ 6 ] = c * a13 + s * a23;\n\n\t\tte[ 1 ] = - s * a11 + c * a21;\n\t\tte[ 4 ] = - s * a12 + c * a22;\n\t\tte[ 7 ] = - s * a13 + c * a23;\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( tx, ty ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] += tx * te[ 2 ]; te[ 3 ] += tx * te[ 5 ]; te[ 6 ] += tx * te[ 8 ];\n\t\tte[ 1 ] += ty * te[ 2 ]; te[ 4 ] += ty * te[ 5 ]; te[ 7 ] += ty * te[ 8 ];\n\n\t\treturn this;\n\n\t}\n\n\tequals( matrix ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = matrix.elements;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tif ( te[ i ] !== me[ i ] ) return false;\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tfromArray( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.elements[ i ] = array[ i + offset ];\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tconst te = this.elements;\n\n\t\tarray[ offset ] = te[ 0 ];\n\t\tarray[ offset + 1 ] = te[ 1 ];\n\t\tarray[ offset + 2 ] = te[ 2 ];\n\n\t\tarray[ offset + 3 ] = te[ 3 ];\n\t\tarray[ offset + 4 ] = te[ 4 ];\n\t\tarray[ offset + 5 ] = te[ 5 ];\n\n\t\tarray[ offset + 6 ] = te[ 6 ];\n\t\tarray[ offset + 7 ] = te[ 7 ];\n\t\tarray[ offset + 8 ] = te[ 8 ];\n\n\t\treturn array;\n\n\t}\n\n}\n\nlet _canvas;\n\nconst ImageUtils = {\n\n\tgetDataURL: function ( image ) {\n\n\t\tif ( /^data:/i.test( image.src ) ) {\n\n\t\t\treturn image.src;\n\n\t\t}\n\n\t\tif ( typeof HTMLCanvasElement == 'undefined' ) {\n\n\t\t\treturn image.src;\n\n\t\t}\n\n\t\tlet canvas;\n\n\t\tif ( image instanceof HTMLCanvasElement ) {\n\n\t\t\tcanvas = image;\n\n\t\t} else {\n\n\t\t\tif ( _canvas === undefined ) _canvas = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' );\n\n\t\t\t_canvas.width = image.width;\n\t\t\t_canvas.height = image.height;\n\n\t\t\tconst context = _canvas.getContext( '2d' );\n\n\t\t\tif ( image instanceof ImageData ) {\n\n\t\t\t\tcontext.putImageData( image, 0, 0 );\n\n\t\t\t} else {\n\n\t\t\t\tcontext.drawImage( image, 0, 0, image.width, image.height );\n\n\t\t\t}\n\n\t\t\tcanvas = _canvas;\n\n\t\t}\n\n\t\tif ( canvas.width > 2048 || canvas.height > 2048 ) {\n\n\t\t\treturn canvas.toDataURL( 'image/jpeg', 0.6 );\n\n\t\t} else {\n\n\t\t\treturn canvas.toDataURL( 'image/png' );\n\n\t\t}\n\n\t}\n\n};\n\nlet textureId = 0;\n\nfunction Texture( image, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding ) {\n\n\tObject.defineProperty( this, 'id', { value: textureId ++ } );\n\n\tthis.uuid = MathUtils.generateUUID();\n\n\tthis.name = '';\n\n\tthis.image = image !== undefined ? image : Texture.DEFAULT_IMAGE;\n\tthis.mipmaps = [];\n\n\tthis.mapping = mapping !== undefined ? mapping : Texture.DEFAULT_MAPPING;\n\n\tthis.wrapS = wrapS !== undefined ? wrapS : ClampToEdgeWrapping;\n\tthis.wrapT = wrapT !== undefined ? wrapT : ClampToEdgeWrapping;\n\n\tthis.magFilter = magFilter !== undefined ? magFilter : LinearFilter;\n\tthis.minFilter = minFilter !== undefined ? minFilter : LinearMipmapLinearFilter;\n\n\tthis.anisotropy = anisotropy !== undefined ? anisotropy : 1;\n\n\tthis.format = format !== undefined ? format : RGBAFormat;\n\tthis.internalFormat = null;\n\tthis.type = type !== undefined ? type : UnsignedByteType;\n\n\tthis.offset = new Vector2( 0, 0 );\n\tthis.repeat = new Vector2( 1, 1 );\n\tthis.center = new Vector2( 0, 0 );\n\tthis.rotation = 0;\n\n\tthis.matrixAutoUpdate = true;\n\tthis.matrix = new Matrix3();\n\n\tthis.generateMipmaps = true;\n\tthis.premultiplyAlpha = false;\n\tthis.flipY = true;\n\tthis.unpackAlignment = 4;\t// valid values: 1, 2, 4, 8 (see http://www.khronos.org/opengles/sdk/docs/man/xhtml/glPixelStorei.xml)\n\n\t// Values of encoding !== THREE.LinearEncoding only supported on map, envMap and emissiveMap.\n\t//\n\t// Also changing the encoding after already used by a Material will not automatically make the Material\n\t// update. You need to explicitly call Material.needsUpdate to trigger it to recompile.\n\tthis.encoding = encoding !== undefined ? encoding : LinearEncoding;\n\n\tthis.version = 0;\n\tthis.onUpdate = null;\n\n}\n\nTexture.DEFAULT_IMAGE = undefined;\nTexture.DEFAULT_MAPPING = UVMapping;\n\nTexture.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: Texture,\n\n\tisTexture: true,\n\n\tupdateMatrix: function () {\n\n\t\tthis.matrix.setUvTransform( this.offset.x, this.offset.y, this.repeat.x, this.repeat.y, this.rotation, this.center.x, this.center.y );\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.name = source.name;\n\n\t\tthis.image = source.image;\n\t\tthis.mipmaps = source.mipmaps.slice( 0 );\n\n\t\tthis.mapping = source.mapping;\n\n\t\tthis.wrapS = source.wrapS;\n\t\tthis.wrapT = source.wrapT;\n\n\t\tthis.magFilter = source.magFilter;\n\t\tthis.minFilter = source.minFilter;\n\n\t\tthis.anisotropy = source.anisotropy;\n\n\t\tthis.format = source.format;\n\t\tthis.internalFormat = source.internalFormat;\n\t\tthis.type = source.type;\n\n\t\tthis.offset.copy( source.offset );\n\t\tthis.repeat.copy( source.repeat );\n\t\tthis.center.copy( source.center );\n\t\tthis.rotation = source.rotation;\n\n\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\t\tthis.matrix.copy( source.matrix );\n\n\t\tthis.generateMipmaps = source.generateMipmaps;\n\t\tthis.premultiplyAlpha = source.premultiplyAlpha;\n\t\tthis.flipY = source.flipY;\n\t\tthis.unpackAlignment = source.unpackAlignment;\n\t\tthis.encoding = source.encoding;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tconst isRootObject = ( meta === undefined || typeof meta === 'string' );\n\n\t\tif ( ! isRootObject && meta.textures[ this.uuid ] !== undefined ) {\n\n\t\t\treturn meta.textures[ this.uuid ];\n\n\t\t}\n\n\t\tconst output = {\n\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Texture',\n\t\t\t\tgenerator: 'Texture.toJSON'\n\t\t\t},\n\n\t\t\tuuid: this.uuid,\n\t\t\tname: this.name,\n\n\t\t\tmapping: this.mapping,\n\n\t\t\trepeat: [ this.repeat.x, this.repeat.y ],\n\t\t\toffset: [ this.offset.x, this.offset.y ],\n\t\t\tcenter: [ this.center.x, this.center.y ],\n\t\t\trotation: this.rotation,\n\n\t\t\twrap: [ this.wrapS, this.wrapT ],\n\n\t\t\tformat: this.format,\n\t\t\ttype: this.type,\n\t\t\tencoding: this.encoding,\n\n\t\t\tminFilter: this.minFilter,\n\t\t\tmagFilter: this.magFilter,\n\t\t\tanisotropy: this.anisotropy,\n\n\t\t\tflipY: this.flipY,\n\n\t\t\tpremultiplyAlpha: this.premultiplyAlpha,\n\t\t\tunpackAlignment: this.unpackAlignment\n\n\t\t};\n\n\t\tif ( this.image !== undefined ) {\n\n\t\t\t// TODO: Move to THREE.Image\n\n\t\t\tconst image = this.image;\n\n\t\t\tif ( image.uuid === undefined ) {\n\n\t\t\t\timage.uuid = MathUtils.generateUUID(); // UGH\n\n\t\t\t}\n\n\t\t\tif ( ! isRootObject && meta.images[ image.uuid ] === undefined ) {\n\n\t\t\t\tlet url;\n\n\t\t\t\tif ( Array.isArray( image ) ) {\n\n\t\t\t\t\t// process array of images e.g. CubeTexture\n\n\t\t\t\t\turl = [];\n\n\t\t\t\t\tfor ( let i = 0, l = image.length; i < l; i ++ ) {\n\n\t\t\t\t\t\turl.push( ImageUtils.getDataURL( image[ i ] ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// process single image\n\n\t\t\t\t\turl = ImageUtils.getDataURL( image );\n\n\t\t\t\t}\n\n\t\t\t\tmeta.images[ image.uuid ] = {\n\t\t\t\t\tuuid: image.uuid,\n\t\t\t\t\turl: url\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t\toutput.image = image.uuid;\n\n\t\t}\n\n\t\tif ( ! isRootObject ) {\n\n\t\t\tmeta.textures[ this.uuid ] = output;\n\n\t\t}\n\n\t\treturn output;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t},\n\n\ttransformUv: function ( uv ) {\n\n\t\tif ( this.mapping !== UVMapping ) return uv;\n\n\t\tuv.applyMatrix3( this.matrix );\n\n\t\tif ( uv.x < 0 || uv.x > 1 ) {\n\n\t\t\tswitch ( this.wrapS ) {\n\n\t\t\t\tcase RepeatWrapping:\n\n\t\t\t\t\tuv.x = uv.x - Math.floor( uv.x );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase ClampToEdgeWrapping:\n\n\t\t\t\t\tuv.x = uv.x < 0 ? 0 : 1;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase MirroredRepeatWrapping:\n\n\t\t\t\t\tif ( Math.abs( Math.floor( uv.x ) % 2 ) === 1 ) {\n\n\t\t\t\t\t\tuv.x = Math.ceil( uv.x ) - uv.x;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tuv.x = uv.x - Math.floor( uv.x );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( uv.y < 0 || uv.y > 1 ) {\n\n\t\t\tswitch ( this.wrapT ) {\n\n\t\t\t\tcase RepeatWrapping:\n\n\t\t\t\t\tuv.y = uv.y - Math.floor( uv.y );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase ClampToEdgeWrapping:\n\n\t\t\t\t\tuv.y = uv.y < 0 ? 0 : 1;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase MirroredRepeatWrapping:\n\n\t\t\t\t\tif ( Math.abs( Math.floor( uv.y ) % 2 ) === 1 ) {\n\n\t\t\t\t\t\tuv.y = Math.ceil( uv.y ) - uv.y;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tuv.y = uv.y - Math.floor( uv.y );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.flipY ) {\n\n\t\t\tuv.y = 1 - uv.y;\n\n\t\t}\n\n\t\treturn uv;\n\n\t}\n\n} );\n\nObject.defineProperty( Texture.prototype, \"needsUpdate\", {\n\n\tset: function ( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n} );\n\nclass Vector4 {\n\n\tconstructor( x = 0, y = 0, z = 0, w = 1 ) {\n\n\t\tObject.defineProperty( this, 'isVector4', { value: true } );\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\t\tthis.w = w;\n\n\t}\n\n\tget width() {\n\n\t\treturn this.z;\n\n\t}\n\n\tset width( value ) {\n\n\t\tthis.z = value;\n\n\t}\n\n\tget height() {\n\n\t\treturn this.w;\n\n\t}\n\n\tset height( value ) {\n\n\t\tthis.w = value;\n\n\t}\n\n\tset( x, y, z, w ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\t\tthis.w = w;\n\n\t\treturn this;\n\n\t}\n\n\tsetScalar( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\t\tthis.z = scalar;\n\t\tthis.w = scalar;\n\n\t\treturn this;\n\n\t}\n\n\tsetX( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t}\n\n\tsetY( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetZ( z ) {\n\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t}\n\n\tsetW( w ) {\n\n\t\tthis.w = w;\n\n\t\treturn this;\n\n\t}\n\n\tsetComponent( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tcase 2: this.z = value; break;\n\t\t\tcase 3: this.w = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetComponent( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tcase 2: return this.z;\n\t\t\tcase 3: return this.w;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.x, this.y, this.z, this.w );\n\n\t}\n\n\tcopy( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\t\tthis.z = v.z;\n\t\tthis.w = ( v.w !== undefined ) ? v.w : 1;\n\n\t\treturn this;\n\n\t}\n\n\tadd( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector4: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' );\n\t\t\treturn this.addVectors( v, w );\n\n\t\t}\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\t\tthis.z += v.z;\n\t\tthis.w += v.w;\n\n\t\treturn this;\n\n\t}\n\n\taddScalar( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\t\tthis.z += s;\n\t\tthis.w += s;\n\n\t\treturn this;\n\n\t}\n\n\taddVectors( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\t\tthis.z = a.z + b.z;\n\t\tthis.w = a.w + b.w;\n\n\t\treturn this;\n\n\t}\n\n\taddScaledVector( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\t\tthis.z += v.z * s;\n\t\tthis.w += v.w * s;\n\n\t\treturn this;\n\n\t}\n\n\tsub( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector4: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' );\n\t\t\treturn this.subVectors( v, w );\n\n\t\t}\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\t\tthis.z -= v.z;\n\t\tthis.w -= v.w;\n\n\t\treturn this;\n\n\t}\n\n\tsubScalar( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\t\tthis.z -= s;\n\t\tthis.w -= s;\n\n\t\treturn this;\n\n\t}\n\n\tsubVectors( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\t\tthis.z = a.z - b.z;\n\t\tthis.w = a.w - b.w;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\t\tthis.z *= scalar;\n\t\tthis.w *= scalar;\n\n\t\treturn this;\n\n\t}\n\n\tapplyMatrix4( m ) {\n\n\t\tconst x = this.x, y = this.y, z = this.z, w = this.w;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z + e[ 12 ] * w;\n\t\tthis.y = e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z + e[ 13 ] * w;\n\t\tthis.z = e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z + e[ 14 ] * w;\n\t\tthis.w = e[ 3 ] * x + e[ 7 ] * y + e[ 11 ] * z + e[ 15 ] * w;\n\n\t\treturn this;\n\n\t}\n\n\tdivideScalar( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t}\n\n\tsetAxisAngleFromQuaternion( q ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/quaternionToAngle/index.htm\n\n\t\t// q is assumed to be normalized\n\n\t\tthis.w = 2 * Math.acos( q.w );\n\n\t\tconst s = Math.sqrt( 1 - q.w * q.w );\n\n\t\tif ( s < 0.0001 ) {\n\n\t\t\tthis.x = 1;\n\t\t\tthis.y = 0;\n\t\t\tthis.z = 0;\n\n\t\t} else {\n\n\t\t\tthis.x = q.x / s;\n\t\t\tthis.y = q.y / s;\n\t\t\tthis.z = q.z / s;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetAxisAngleFromRotationMatrix( m ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToAngle/index.htm\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tlet angle, x, y, z; // variables for result\n\t\tconst epsilon = 0.01,\t\t// margin to allow for rounding errors\n\t\t\tepsilon2 = 0.1,\t\t// margin to distinguish between 0 and 180 degrees\n\n\t\t\tte = m.elements,\n\n\t\t\tm11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ],\n\t\t\tm21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ],\n\t\t\tm31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ];\n\n\t\tif ( ( Math.abs( m12 - m21 ) < epsilon ) &&\n\t\t     ( Math.abs( m13 - m31 ) < epsilon ) &&\n\t\t     ( Math.abs( m23 - m32 ) < epsilon ) ) {\n\n\t\t\t// singularity found\n\t\t\t// first check for identity matrix which must have +1 for all terms\n\t\t\t// in leading diagonal and zero in other terms\n\n\t\t\tif ( ( Math.abs( m12 + m21 ) < epsilon2 ) &&\n\t\t\t     ( Math.abs( m13 + m31 ) < epsilon2 ) &&\n\t\t\t     ( Math.abs( m23 + m32 ) < epsilon2 ) &&\n\t\t\t     ( Math.abs( m11 + m22 + m33 - 3 ) < epsilon2 ) ) {\n\n\t\t\t\t// this singularity is identity matrix so angle = 0\n\n\t\t\t\tthis.set( 1, 0, 0, 0 );\n\n\t\t\t\treturn this; // zero angle, arbitrary axis\n\n\t\t\t}\n\n\t\t\t// otherwise this singularity is angle = 180\n\n\t\t\tangle = Math.PI;\n\n\t\t\tconst xx = ( m11 + 1 ) / 2;\n\t\t\tconst yy = ( m22 + 1 ) / 2;\n\t\t\tconst zz = ( m33 + 1 ) / 2;\n\t\t\tconst xy = ( m12 + m21 ) / 4;\n\t\t\tconst xz = ( m13 + m31 ) / 4;\n\t\t\tconst yz = ( m23 + m32 ) / 4;\n\n\t\t\tif ( ( xx > yy ) && ( xx > zz ) ) {\n\n\t\t\t\t// m11 is the largest diagonal term\n\n\t\t\t\tif ( xx < epsilon ) {\n\n\t\t\t\t\tx = 0;\n\t\t\t\t\ty = 0.707106781;\n\t\t\t\t\tz = 0.707106781;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tx = Math.sqrt( xx );\n\t\t\t\t\ty = xy / x;\n\t\t\t\t\tz = xz / x;\n\n\t\t\t\t}\n\n\t\t\t} else if ( yy > zz ) {\n\n\t\t\t\t// m22 is the largest diagonal term\n\n\t\t\t\tif ( yy < epsilon ) {\n\n\t\t\t\t\tx = 0.707106781;\n\t\t\t\t\ty = 0;\n\t\t\t\t\tz = 0.707106781;\n\n\t\t\t\t} else {\n\n\t\t\t\t\ty = Math.sqrt( yy );\n\t\t\t\t\tx = xy / y;\n\t\t\t\t\tz = yz / y;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// m33 is the largest diagonal term so base result on this\n\n\t\t\t\tif ( zz < epsilon ) {\n\n\t\t\t\t\tx = 0.707106781;\n\t\t\t\t\ty = 0.707106781;\n\t\t\t\t\tz = 0;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tz = Math.sqrt( zz );\n\t\t\t\t\tx = xz / z;\n\t\t\t\t\ty = yz / z;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.set( x, y, z, angle );\n\n\t\t\treturn this; // return 180 deg rotation\n\n\t\t}\n\n\t\t// as we have reached here there are no singularities so we can handle normally\n\n\t\tlet s = Math.sqrt( ( m32 - m23 ) * ( m32 - m23 ) +\n\t\t\t( m13 - m31 ) * ( m13 - m31 ) +\n\t\t\t( m21 - m12 ) * ( m21 - m12 ) ); // used to normalize\n\n\t\tif ( Math.abs( s ) < 0.001 ) s = 1;\n\n\t\t// prevent divide by zero, should not happen if matrix is orthogonal and should be\n\t\t// caught by singularity test above, but I've left it in just in case\n\n\t\tthis.x = ( m32 - m23 ) / s;\n\t\tthis.y = ( m13 - m31 ) / s;\n\t\tthis.z = ( m21 - m12 ) / s;\n\t\tthis.w = Math.acos( ( m11 + m22 + m33 - 1 ) / 2 );\n\n\t\treturn this;\n\n\t}\n\n\tmin( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\t\tthis.z = Math.min( this.z, v.z );\n\t\tthis.w = Math.min( this.w, v.w );\n\n\t\treturn this;\n\n\t}\n\n\tmax( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\t\tthis.z = Math.max( this.z, v.z );\n\t\tthis.w = Math.max( this.w, v.w );\n\n\t\treturn this;\n\n\t}\n\n\tclamp( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\t\tthis.z = Math.max( min.z, Math.min( max.z, this.z ) );\n\t\tthis.w = Math.max( min.w, Math.min( max.w, this.w ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampScalar( minVal, maxVal ) {\n\n\t\tthis.x = Math.max( minVal, Math.min( maxVal, this.x ) );\n\t\tthis.y = Math.max( minVal, Math.min( maxVal, this.y ) );\n\t\tthis.z = Math.max( minVal, Math.min( maxVal, this.z ) );\n\t\tthis.w = Math.max( minVal, Math.min( maxVal, this.w ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampLength( min, max ) {\n\n\t\tconst length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );\n\n\t}\n\n\tfloor() {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\t\tthis.z = Math.floor( this.z );\n\t\tthis.w = Math.floor( this.w );\n\n\t\treturn this;\n\n\t}\n\n\tceil() {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\t\tthis.z = Math.ceil( this.z );\n\t\tthis.w = Math.ceil( this.w );\n\n\t\treturn this;\n\n\t}\n\n\tround() {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\t\tthis.z = Math.round( this.z );\n\t\tthis.w = Math.round( this.w );\n\n\t\treturn this;\n\n\t}\n\n\troundToZero() {\n\n\t\tthis.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x );\n\t\tthis.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y );\n\t\tthis.z = ( this.z < 0 ) ? Math.ceil( this.z ) : Math.floor( this.z );\n\t\tthis.w = ( this.w < 0 ) ? Math.ceil( this.w ) : Math.floor( this.w );\n\n\t\treturn this;\n\n\t}\n\n\tnegate() {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\t\tthis.z = - this.z;\n\t\tthis.w = - this.w;\n\n\t\treturn this;\n\n\t}\n\n\tdot( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y + this.z * v.z + this.w * v.w;\n\n\t}\n\n\tlengthSq() {\n\n\t\treturn this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w;\n\n\t}\n\n\tlength() {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w );\n\n\t}\n\n\tmanhattanLength() {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z ) + Math.abs( this.w );\n\n\t}\n\n\tnormalize() {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t}\n\n\tsetLength( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t}\n\n\tlerp( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\t\tthis.z += ( v.z - this.z ) * alpha;\n\t\tthis.w += ( v.w - this.w ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tlerpVectors( v1, v2, alpha ) {\n\n\t\tthis.x = v1.x + ( v2.x - v1.x ) * alpha;\n\t\tthis.y = v1.y + ( v2.y - v1.y ) * alpha;\n\t\tthis.z = v1.z + ( v2.z - v1.z ) * alpha;\n\t\tthis.w = v1.w + ( v2.w - v1.w ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tequals( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) && ( v.w === this.w ) );\n\n\t}\n\n\tfromArray( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\t\tthis.z = array[ offset + 2 ];\n\t\tthis.w = array[ offset + 3 ];\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\t\tarray[ offset + 2 ] = this.z;\n\t\tarray[ offset + 3 ] = this.w;\n\n\t\treturn array;\n\n\t}\n\n\tfromBufferAttribute( attribute, index, offset ) {\n\n\t\tif ( offset !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector4: offset has been removed from .fromBufferAttribute().' );\n\n\t\t}\n\n\t\tthis.x = attribute.getX( index );\n\t\tthis.y = attribute.getY( index );\n\t\tthis.z = attribute.getZ( index );\n\t\tthis.w = attribute.getW( index );\n\n\t\treturn this;\n\n\t}\n\n\trandom() {\n\n\t\tthis.x = Math.random();\n\t\tthis.y = Math.random();\n\t\tthis.z = Math.random();\n\t\tthis.w = Math.random();\n\n\t\treturn this;\n\n\t}\n\n}\n\n/*\n In options, we can specify:\n * Texture parameters for an auto-generated target texture\n * depthBuffer/stencilBuffer: Booleans to indicate if we should generate these buffers\n*/\nfunction WebGLRenderTarget( width, height, options ) {\n\n\tthis.width = width;\n\tthis.height = height;\n\n\tthis.scissor = new Vector4( 0, 0, width, height );\n\tthis.scissorTest = false;\n\n\tthis.viewport = new Vector4( 0, 0, width, height );\n\n\toptions = options || {};\n\n\tthis.texture = new Texture( undefined, options.mapping, options.wrapS, options.wrapT, options.magFilter, options.minFilter, options.format, options.type, options.anisotropy, options.encoding );\n\n\tthis.texture.image = {};\n\tthis.texture.image.width = width;\n\tthis.texture.image.height = height;\n\n\tthis.texture.generateMipmaps = options.generateMipmaps !== undefined ? options.generateMipmaps : false;\n\tthis.texture.minFilter = options.minFilter !== undefined ? options.minFilter : LinearFilter;\n\n\tthis.depthBuffer = options.depthBuffer !== undefined ? options.depthBuffer : true;\n\tthis.stencilBuffer = options.stencilBuffer !== undefined ? options.stencilBuffer : false;\n\tthis.depthTexture = options.depthTexture !== undefined ? options.depthTexture : null;\n\n}\n\nWebGLRenderTarget.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: WebGLRenderTarget,\n\n\tisWebGLRenderTarget: true,\n\n\tsetSize: function ( width, height ) {\n\n\t\tif ( this.width !== width || this.height !== height ) {\n\n\t\t\tthis.width = width;\n\t\t\tthis.height = height;\n\n\t\t\tthis.texture.image.width = width;\n\t\t\tthis.texture.image.height = height;\n\n\t\t\tthis.dispose();\n\n\t\t}\n\n\t\tthis.viewport.set( 0, 0, width, height );\n\t\tthis.scissor.set( 0, 0, width, height );\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.width = source.width;\n\t\tthis.height = source.height;\n\n\t\tthis.viewport.copy( source.viewport );\n\n\t\tthis.texture = source.texture.clone();\n\n\t\tthis.depthBuffer = source.depthBuffer;\n\t\tthis.stencilBuffer = source.stencilBuffer;\n\t\tthis.depthTexture = source.depthTexture;\n\n\t\treturn this;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n} );\n\nfunction WebGLMultisampleRenderTarget( width, height, options ) {\n\n\tWebGLRenderTarget.call( this, width, height, options );\n\n\tthis.samples = 4;\n\n}\n\nWebGLMultisampleRenderTarget.prototype = Object.assign( Object.create( WebGLRenderTarget.prototype ), {\n\n\tconstructor: WebGLMultisampleRenderTarget,\n\n\tisWebGLMultisampleRenderTarget: true,\n\n\tcopy: function ( source ) {\n\n\t\tWebGLRenderTarget.prototype.copy.call( this, source );\n\n\t\tthis.samples = source.samples;\n\n\t\treturn this;\n\n\t}\n\n} );\n\nclass Quaternion {\n\n\tconstructor( x = 0, y = 0, z = 0, w = 1 ) {\n\n\t\tObject.defineProperty( this, 'isQuaternion', { value: true } );\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._w = w;\n\n\t}\n\n\tstatic slerp( qa, qb, qm, t ) {\n\n\t\treturn qm.copy( qa ).slerp( qb, t );\n\n\t}\n\n\tstatic slerpFlat( dst, dstOffset, src0, srcOffset0, src1, srcOffset1, t ) {\n\n\t\t// fuzz-free, array-based Quaternion SLERP operation\n\n\t\tlet x0 = src0[ srcOffset0 + 0 ],\n\t\t\ty0 = src0[ srcOffset0 + 1 ],\n\t\t\tz0 = src0[ srcOffset0 + 2 ],\n\t\t\tw0 = src0[ srcOffset0 + 3 ];\n\n\t\tconst x1 = src1[ srcOffset1 + 0 ],\n\t\t\ty1 = src1[ srcOffset1 + 1 ],\n\t\t\tz1 = src1[ srcOffset1 + 2 ],\n\t\t\tw1 = src1[ srcOffset1 + 3 ];\n\n\t\tif ( w0 !== w1 || x0 !== x1 || y0 !== y1 || z0 !== z1 ) {\n\n\t\t\tlet s = 1 - t;\n\t\t\tconst cos = x0 * x1 + y0 * y1 + z0 * z1 + w0 * w1,\n\t\t\t\tdir = ( cos >= 0 ? 1 : - 1 ),\n\t\t\t\tsqrSin = 1 - cos * cos;\n\n\t\t\t// Skip the Slerp for tiny steps to avoid numeric problems:\n\t\t\tif ( sqrSin > Number.EPSILON ) {\n\n\t\t\t\tconst sin = Math.sqrt( sqrSin ),\n\t\t\t\t\tlen = Math.atan2( sin, cos * dir );\n\n\t\t\t\ts = Math.sin( s * len ) / sin;\n\t\t\t\tt = Math.sin( t * len ) / sin;\n\n\t\t\t}\n\n\t\t\tconst tDir = t * dir;\n\n\t\t\tx0 = x0 * s + x1 * tDir;\n\t\t\ty0 = y0 * s + y1 * tDir;\n\t\t\tz0 = z0 * s + z1 * tDir;\n\t\t\tw0 = w0 * s + w1 * tDir;\n\n\t\t\t// Normalize in case we just did a lerp:\n\t\t\tif ( s === 1 - t ) {\n\n\t\t\t\tconst f = 1 / Math.sqrt( x0 * x0 + y0 * y0 + z0 * z0 + w0 * w0 );\n\n\t\t\t\tx0 *= f;\n\t\t\t\ty0 *= f;\n\t\t\t\tz0 *= f;\n\t\t\t\tw0 *= f;\n\n\t\t\t}\n\n\t\t}\n\n\t\tdst[ dstOffset ] = x0;\n\t\tdst[ dstOffset + 1 ] = y0;\n\t\tdst[ dstOffset + 2 ] = z0;\n\t\tdst[ dstOffset + 3 ] = w0;\n\n\t}\n\n\tstatic multiplyQuaternionsFlat( dst, dstOffset, src0, srcOffset0, src1, srcOffset1 ) {\n\n\t\tconst x0 = src0[ srcOffset0 ];\n\t\tconst y0 = src0[ srcOffset0 + 1 ];\n\t\tconst z0 = src0[ srcOffset0 + 2 ];\n\t\tconst w0 = src0[ srcOffset0 + 3 ];\n\n\t\tconst x1 = src1[ srcOffset1 ];\n\t\tconst y1 = src1[ srcOffset1 + 1 ];\n\t\tconst z1 = src1[ srcOffset1 + 2 ];\n\t\tconst w1 = src1[ srcOffset1 + 3 ];\n\n\t\tdst[ dstOffset ] = x0 * w1 + w0 * x1 + y0 * z1 - z0 * y1;\n\t\tdst[ dstOffset + 1 ] = y0 * w1 + w0 * y1 + z0 * x1 - x0 * z1;\n\t\tdst[ dstOffset + 2 ] = z0 * w1 + w0 * z1 + x0 * y1 - y0 * x1;\n\t\tdst[ dstOffset + 3 ] = w0 * w1 - x0 * x1 - y0 * y1 - z0 * z1;\n\n\t\treturn dst;\n\n\t}\n\n\tget x() {\n\n\t\treturn this._x;\n\n\t}\n\n\tset x( value ) {\n\n\t\tthis._x = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget y() {\n\n\t\treturn this._y;\n\n\t}\n\n\tset y( value ) {\n\n\t\tthis._y = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget z() {\n\n\t\treturn this._z;\n\n\t}\n\n\tset z( value ) {\n\n\t\tthis._z = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget w() {\n\n\t\treturn this._w;\n\n\t}\n\n\tset w( value ) {\n\n\t\tthis._w = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tset( x, y, z, w ) {\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._w = w;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this._x, this._y, this._z, this._w );\n\n\t}\n\n\tcopy( quaternion ) {\n\n\t\tthis._x = quaternion.x;\n\t\tthis._y = quaternion.y;\n\t\tthis._z = quaternion.z;\n\t\tthis._w = quaternion.w;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromEuler( euler, update ) {\n\n\t\tif ( ! ( euler && euler.isEuler ) ) {\n\n\t\t\tthrow new Error( 'THREE.Quaternion: .setFromEuler() now expects an Euler rotation rather than a Vector3 and order.' );\n\n\t\t}\n\n\t\tconst x = euler._x, y = euler._y, z = euler._z, order = euler._order;\n\n\t\t// http://www.mathworks.com/matlabcentral/fileexchange/\n\t\t// \t20696-function-to-convert-between-dcm-euler-angles-quaternions-and-euler-vectors/\n\t\t//\tcontent/SpinCalc.m\n\n\t\tconst cos = Math.cos;\n\t\tconst sin = Math.sin;\n\n\t\tconst c1 = cos( x / 2 );\n\t\tconst c2 = cos( y / 2 );\n\t\tconst c3 = cos( z / 2 );\n\n\t\tconst s1 = sin( x / 2 );\n\t\tconst s2 = sin( y / 2 );\n\t\tconst s3 = sin( z / 2 );\n\n\t\tswitch ( order ) {\n\n\t\t\tcase 'XYZ':\n\t\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'YXZ':\n\t\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZXY':\n\t\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZYX':\n\t\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'YZX':\n\t\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'XZY':\n\t\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tconsole.warn( 'THREE.Quaternion: .setFromEuler() encountered an unknown order: ' + order );\n\n\t\t}\n\n\t\tif ( update !== false ) this._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromAxisAngle( axis, angle ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/angleToQuaternion/index.htm\n\n\t\t// assumes axis is normalized\n\n\t\tconst halfAngle = angle / 2, s = Math.sin( halfAngle );\n\n\t\tthis._x = axis.x * s;\n\t\tthis._y = axis.y * s;\n\t\tthis._z = axis.z * s;\n\t\tthis._w = Math.cos( halfAngle );\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromRotationMatrix( m ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToQuaternion/index.htm\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tconst te = m.elements,\n\n\t\t\tm11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ],\n\t\t\tm21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ],\n\t\t\tm31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ],\n\n\t\t\ttrace = m11 + m22 + m33;\n\n\t\tif ( trace > 0 ) {\n\n\t\t\tconst s = 0.5 / Math.sqrt( trace + 1.0 );\n\n\t\t\tthis._w = 0.25 / s;\n\t\t\tthis._x = ( m32 - m23 ) * s;\n\t\t\tthis._y = ( m13 - m31 ) * s;\n\t\t\tthis._z = ( m21 - m12 ) * s;\n\n\t\t} else if ( m11 > m22 && m11 > m33 ) {\n\n\t\t\tconst s = 2.0 * Math.sqrt( 1.0 + m11 - m22 - m33 );\n\n\t\t\tthis._w = ( m32 - m23 ) / s;\n\t\t\tthis._x = 0.25 * s;\n\t\t\tthis._y = ( m12 + m21 ) / s;\n\t\t\tthis._z = ( m13 + m31 ) / s;\n\n\t\t} else if ( m22 > m33 ) {\n\n\t\t\tconst s = 2.0 * Math.sqrt( 1.0 + m22 - m11 - m33 );\n\n\t\t\tthis._w = ( m13 - m31 ) / s;\n\t\t\tthis._x = ( m12 + m21 ) / s;\n\t\t\tthis._y = 0.25 * s;\n\t\t\tthis._z = ( m23 + m32 ) / s;\n\n\t\t} else {\n\n\t\t\tconst s = 2.0 * Math.sqrt( 1.0 + m33 - m11 - m22 );\n\n\t\t\tthis._w = ( m21 - m12 ) / s;\n\t\t\tthis._x = ( m13 + m31 ) / s;\n\t\t\tthis._y = ( m23 + m32 ) / s;\n\t\t\tthis._z = 0.25 * s;\n\n\t\t}\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromUnitVectors( vFrom, vTo ) {\n\n\t\t// assumes direction vectors vFrom and vTo are normalized\n\n\t\tconst EPS = 0.000001;\n\n\t\tlet r = vFrom.dot( vTo ) + 1;\n\n\t\tif ( r < EPS ) {\n\n\t\t\tr = 0;\n\n\t\t\tif ( Math.abs( vFrom.x ) > Math.abs( vFrom.z ) ) {\n\n\t\t\t\tthis._x = - vFrom.y;\n\t\t\t\tthis._y = vFrom.x;\n\t\t\t\tthis._z = 0;\n\t\t\t\tthis._w = r;\n\n\t\t\t} else {\n\n\t\t\t\tthis._x = 0;\n\t\t\t\tthis._y = - vFrom.z;\n\t\t\t\tthis._z = vFrom.y;\n\t\t\t\tthis._w = r;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// crossVectors( vFrom, vTo ); // inlined to avoid cyclic dependency on Vector3\n\n\t\t\tthis._x = vFrom.y * vTo.z - vFrom.z * vTo.y;\n\t\t\tthis._y = vFrom.z * vTo.x - vFrom.x * vTo.z;\n\t\t\tthis._z = vFrom.x * vTo.y - vFrom.y * vTo.x;\n\t\t\tthis._w = r;\n\n\t\t}\n\n\t\treturn this.normalize();\n\n\t}\n\n\tangleTo( q ) {\n\n\t\treturn 2 * Math.acos( Math.abs( MathUtils.clamp( this.dot( q ), - 1, 1 ) ) );\n\n\t}\n\n\trotateTowards( q, step ) {\n\n\t\tconst angle = this.angleTo( q );\n\n\t\tif ( angle === 0 ) return this;\n\n\t\tconst t = Math.min( 1, step / angle );\n\n\t\tthis.slerp( q, t );\n\n\t\treturn this;\n\n\t}\n\n\tidentity() {\n\n\t\treturn this.set( 0, 0, 0, 1 );\n\n\t}\n\n\tinverse() {\n\n\t\t// quaternion is assumed to have unit length\n\n\t\treturn this.conjugate();\n\n\t}\n\n\tconjugate() {\n\n\t\tthis._x *= - 1;\n\t\tthis._y *= - 1;\n\t\tthis._z *= - 1;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tdot( v ) {\n\n\t\treturn this._x * v._x + this._y * v._y + this._z * v._z + this._w * v._w;\n\n\t}\n\n\tlengthSq() {\n\n\t\treturn this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w;\n\n\t}\n\n\tlength() {\n\n\t\treturn Math.sqrt( this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w );\n\n\t}\n\n\tnormalize() {\n\n\t\tlet l = this.length();\n\n\t\tif ( l === 0 ) {\n\n\t\t\tthis._x = 0;\n\t\t\tthis._y = 0;\n\t\t\tthis._z = 0;\n\t\t\tthis._w = 1;\n\n\t\t} else {\n\n\t\t\tl = 1 / l;\n\n\t\t\tthis._x = this._x * l;\n\t\t\tthis._y = this._y * l;\n\t\t\tthis._z = this._z * l;\n\t\t\tthis._w = this._w * l;\n\n\t\t}\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( q, p ) {\n\n\t\tif ( p !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Quaternion: .multiply() now only accepts one argument. Use .multiplyQuaternions( a, b ) instead.' );\n\t\t\treturn this.multiplyQuaternions( q, p );\n\n\t\t}\n\n\t\treturn this.multiplyQuaternions( this, q );\n\n\t}\n\n\tpremultiply( q ) {\n\n\t\treturn this.multiplyQuaternions( q, this );\n\n\t}\n\n\tmultiplyQuaternions( a, b ) {\n\n\t\t// from http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/code/index.htm\n\n\t\tconst qax = a._x, qay = a._y, qaz = a._z, qaw = a._w;\n\t\tconst qbx = b._x, qby = b._y, qbz = b._z, qbw = b._w;\n\n\t\tthis._x = qax * qbw + qaw * qbx + qay * qbz - qaz * qby;\n\t\tthis._y = qay * qbw + qaw * qby + qaz * qbx - qax * qbz;\n\t\tthis._z = qaz * qbw + qaw * qbz + qax * qby - qay * qbx;\n\t\tthis._w = qaw * qbw - qax * qbx - qay * qby - qaz * qbz;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tslerp( qb, t ) {\n\n\t\tif ( t === 0 ) return this;\n\t\tif ( t === 1 ) return this.copy( qb );\n\n\t\tconst x = this._x, y = this._y, z = this._z, w = this._w;\n\n\t\t// http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/slerp/\n\n\t\tlet cosHalfTheta = w * qb._w + x * qb._x + y * qb._y + z * qb._z;\n\n\t\tif ( cosHalfTheta < 0 ) {\n\n\t\t\tthis._w = - qb._w;\n\t\t\tthis._x = - qb._x;\n\t\t\tthis._y = - qb._y;\n\t\t\tthis._z = - qb._z;\n\n\t\t\tcosHalfTheta = - cosHalfTheta;\n\n\t\t} else {\n\n\t\t\tthis.copy( qb );\n\n\t\t}\n\n\t\tif ( cosHalfTheta >= 1.0 ) {\n\n\t\t\tthis._w = w;\n\t\t\tthis._x = x;\n\t\t\tthis._y = y;\n\t\t\tthis._z = z;\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst sqrSinHalfTheta = 1.0 - cosHalfTheta * cosHalfTheta;\n\n\t\tif ( sqrSinHalfTheta <= Number.EPSILON ) {\n\n\t\t\tconst s = 1 - t;\n\t\t\tthis._w = s * w + t * this._w;\n\t\t\tthis._x = s * x + t * this._x;\n\t\t\tthis._y = s * y + t * this._y;\n\t\t\tthis._z = s * z + t * this._z;\n\n\t\t\tthis.normalize();\n\t\t\tthis._onChangeCallback();\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst sinHalfTheta = Math.sqrt( sqrSinHalfTheta );\n\t\tconst halfTheta = Math.atan2( sinHalfTheta, cosHalfTheta );\n\t\tconst ratioA = Math.sin( ( 1 - t ) * halfTheta ) / sinHalfTheta,\n\t\t\tratioB = Math.sin( t * halfTheta ) / sinHalfTheta;\n\n\t\tthis._w = ( w * ratioA + this._w * ratioB );\n\t\tthis._x = ( x * ratioA + this._x * ratioB );\n\t\tthis._y = ( y * ratioA + this._y * ratioB );\n\t\tthis._z = ( z * ratioA + this._z * ratioB );\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tequals( quaternion ) {\n\n\t\treturn ( quaternion._x === this._x ) && ( quaternion._y === this._y ) && ( quaternion._z === this._z ) && ( quaternion._w === this._w );\n\n\t}\n\n\tfromArray( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis._x = array[ offset ];\n\t\tthis._y = array[ offset + 1 ];\n\t\tthis._z = array[ offset + 2 ];\n\t\tthis._w = array[ offset + 3 ];\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this._x;\n\t\tarray[ offset + 1 ] = this._y;\n\t\tarray[ offset + 2 ] = this._z;\n\t\tarray[ offset + 3 ] = this._w;\n\n\t\treturn array;\n\n\t}\n\n\tfromBufferAttribute( attribute, index ) {\n\n\t\tthis._x = attribute.getX( index );\n\t\tthis._y = attribute.getY( index );\n\t\tthis._z = attribute.getZ( index );\n\t\tthis._w = attribute.getW( index );\n\n\t\treturn this;\n\n\t}\n\n\t_onChange( callback ) {\n\n\t\tthis._onChangeCallback = callback;\n\n\t\treturn this;\n\n\t}\n\n\t_onChangeCallback() {}\n\n}\n\nclass Vector3 {\n\n\tconstructor( x = 0, y = 0, z = 0 ) {\n\n\t\tObject.defineProperty( this, 'isVector3', { value: true } );\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\n\t}\n\n\tset( x, y, z ) {\n\n\t\tif ( z === undefined ) z = this.z; // sprite.scale.set(x,y)\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t}\n\n\tsetScalar( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\t\tthis.z = scalar;\n\n\t\treturn this;\n\n\t}\n\n\tsetX( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t}\n\n\tsetY( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetZ( z ) {\n\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t}\n\n\tsetComponent( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tcase 2: this.z = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetComponent( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tcase 2: return this.z;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.x, this.y, this.z );\n\n\t}\n\n\tcopy( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\t\tthis.z = v.z;\n\n\t\treturn this;\n\n\t}\n\n\tadd( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' );\n\t\t\treturn this.addVectors( v, w );\n\n\t\t}\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\t\tthis.z += v.z;\n\n\t\treturn this;\n\n\t}\n\n\taddScalar( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\t\tthis.z += s;\n\n\t\treturn this;\n\n\t}\n\n\taddVectors( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\t\tthis.z = a.z + b.z;\n\n\t\treturn this;\n\n\t}\n\n\taddScaledVector( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\t\tthis.z += v.z * s;\n\n\t\treturn this;\n\n\t}\n\n\tsub( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' );\n\t\t\treturn this.subVectors( v, w );\n\n\t\t}\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\t\tthis.z -= v.z;\n\n\t\treturn this;\n\n\t}\n\n\tsubScalar( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\t\tthis.z -= s;\n\n\t\treturn this;\n\n\t}\n\n\tsubVectors( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\t\tthis.z = a.z - b.z;\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .multiply() now only accepts one argument. Use .multiplyVectors( a, b ) instead.' );\n\t\t\treturn this.multiplyVectors( v, w );\n\n\t\t}\n\n\t\tthis.x *= v.x;\n\t\tthis.y *= v.y;\n\t\tthis.z *= v.z;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\t\tthis.z *= scalar;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyVectors( a, b ) {\n\n\t\tthis.x = a.x * b.x;\n\t\tthis.y = a.y * b.y;\n\t\tthis.z = a.z * b.z;\n\n\t\treturn this;\n\n\t}\n\n\tapplyEuler( euler ) {\n\n\t\tif ( ! ( euler && euler.isEuler ) ) {\n\n\t\t\tconsole.error( 'THREE.Vector3: .applyEuler() now expects an Euler rotation rather than a Vector3 and order.' );\n\n\t\t}\n\n\t\treturn this.applyQuaternion( _quaternion.setFromEuler( euler ) );\n\n\t}\n\n\tapplyAxisAngle( axis, angle ) {\n\n\t\treturn this.applyQuaternion( _quaternion.setFromAxisAngle( axis, angle ) );\n\n\t}\n\n\tapplyMatrix3( m ) {\n\n\t\tconst x = this.x, y = this.y, z = this.z;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 3 ] * y + e[ 6 ] * z;\n\t\tthis.y = e[ 1 ] * x + e[ 4 ] * y + e[ 7 ] * z;\n\t\tthis.z = e[ 2 ] * x + e[ 5 ] * y + e[ 8 ] * z;\n\n\t\treturn this;\n\n\t}\n\n\tapplyNormalMatrix( m ) {\n\n\t\treturn this.applyMatrix3( m ).normalize();\n\n\t}\n\n\tapplyMatrix4( m ) {\n\n\t\tconst x = this.x, y = this.y, z = this.z;\n\t\tconst e = m.elements;\n\n\t\tconst w = 1 / ( e[ 3 ] * x + e[ 7 ] * y + e[ 11 ] * z + e[ 15 ] );\n\n\t\tthis.x = ( e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z + e[ 12 ] ) * w;\n\t\tthis.y = ( e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z + e[ 13 ] ) * w;\n\t\tthis.z = ( e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z + e[ 14 ] ) * w;\n\n\t\treturn this;\n\n\t}\n\n\tapplyQuaternion( q ) {\n\n\t\tconst x = this.x, y = this.y, z = this.z;\n\t\tconst qx = q.x, qy = q.y, qz = q.z, qw = q.w;\n\n\t\t// calculate quat * vector\n\n\t\tconst ix = qw * x + qy * z - qz * y;\n\t\tconst iy = qw * y + qz * x - qx * z;\n\t\tconst iz = qw * z + qx * y - qy * x;\n\t\tconst iw = - qx * x - qy * y - qz * z;\n\n\t\t// calculate result * inverse quat\n\n\t\tthis.x = ix * qw + iw * - qx + iy * - qz - iz * - qy;\n\t\tthis.y = iy * qw + iw * - qy + iz * - qx - ix * - qz;\n\t\tthis.z = iz * qw + iw * - qz + ix * - qy - iy * - qx;\n\n\t\treturn this;\n\n\t}\n\n\tproject( camera ) {\n\n\t\treturn this.applyMatrix4( camera.matrixWorldInverse ).applyMatrix4( camera.projectionMatrix );\n\n\t}\n\n\tunproject( camera ) {\n\n\t\treturn this.applyMatrix4( camera.projectionMatrixInverse ).applyMatrix4( camera.matrixWorld );\n\n\t}\n\n\ttransformDirection( m ) {\n\n\t\t// input: THREE.Matrix4 affine matrix\n\t\t// vector interpreted as a direction\n\n\t\tconst x = this.x, y = this.y, z = this.z;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z;\n\t\tthis.y = e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z;\n\t\tthis.z = e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z;\n\n\t\treturn this.normalize();\n\n\t}\n\n\tdivide( v ) {\n\n\t\tthis.x /= v.x;\n\t\tthis.y /= v.y;\n\t\tthis.z /= v.z;\n\n\t\treturn this;\n\n\t}\n\n\tdivideScalar( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t}\n\n\tmin( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\t\tthis.z = Math.min( this.z, v.z );\n\n\t\treturn this;\n\n\t}\n\n\tmax( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\t\tthis.z = Math.max( this.z, v.z );\n\n\t\treturn this;\n\n\t}\n\n\tclamp( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\t\tthis.z = Math.max( min.z, Math.min( max.z, this.z ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampScalar( minVal, maxVal ) {\n\n\t\tthis.x = Math.max( minVal, Math.min( maxVal, this.x ) );\n\t\tthis.y = Math.max( minVal, Math.min( maxVal, this.y ) );\n\t\tthis.z = Math.max( minVal, Math.min( maxVal, this.z ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampLength( min, max ) {\n\n\t\tconst length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );\n\n\t}\n\n\tfloor() {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\t\tthis.z = Math.floor( this.z );\n\n\t\treturn this;\n\n\t}\n\n\tceil() {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\t\tthis.z = Math.ceil( this.z );\n\n\t\treturn this;\n\n\t}\n\n\tround() {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\t\tthis.z = Math.round( this.z );\n\n\t\treturn this;\n\n\t}\n\n\troundToZero() {\n\n\t\tthis.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x );\n\t\tthis.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y );\n\t\tthis.z = ( this.z < 0 ) ? Math.ceil( this.z ) : Math.floor( this.z );\n\n\t\treturn this;\n\n\t}\n\n\tnegate() {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\t\tthis.z = - this.z;\n\n\t\treturn this;\n\n\t}\n\n\tdot( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y + this.z * v.z;\n\n\t}\n\n\t// TODO lengthSquared?\n\n\tlengthSq() {\n\n\t\treturn this.x * this.x + this.y * this.y + this.z * this.z;\n\n\t}\n\n\tlength() {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z );\n\n\t}\n\n\tmanhattanLength() {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z );\n\n\t}\n\n\tnormalize() {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t}\n\n\tsetLength( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t}\n\n\tlerp( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\t\tthis.z += ( v.z - this.z ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tlerpVectors( v1, v2, alpha ) {\n\n\t\tthis.x = v1.x + ( v2.x - v1.x ) * alpha;\n\t\tthis.y = v1.y + ( v2.y - v1.y ) * alpha;\n\t\tthis.z = v1.z + ( v2.z - v1.z ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tcross( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .cross() now only accepts one argument. Use .crossVectors( a, b ) instead.' );\n\t\t\treturn this.crossVectors( v, w );\n\n\t\t}\n\n\t\treturn this.crossVectors( this, v );\n\n\t}\n\n\tcrossVectors( a, b ) {\n\n\t\tconst ax = a.x, ay = a.y, az = a.z;\n\t\tconst bx = b.x, by = b.y, bz = b.z;\n\n\t\tthis.x = ay * bz - az * by;\n\t\tthis.y = az * bx - ax * bz;\n\t\tthis.z = ax * by - ay * bx;\n\n\t\treturn this;\n\n\t}\n\n\tprojectOnVector( v ) {\n\n\t\tconst denominator = v.lengthSq();\n\n\t\tif ( denominator === 0 ) return this.set( 0, 0, 0 );\n\n\t\tconst scalar = v.dot( this ) / denominator;\n\n\t\treturn this.copy( v ).multiplyScalar( scalar );\n\n\t}\n\n\tprojectOnPlane( planeNormal ) {\n\n\t\t_vector.copy( this ).projectOnVector( planeNormal );\n\n\t\treturn this.sub( _vector );\n\n\t}\n\n\treflect( normal ) {\n\n\t\t// reflect incident vector off plane orthogonal to normal\n\t\t// normal is assumed to have unit length\n\n\t\treturn this.sub( _vector.copy( normal ).multiplyScalar( 2 * this.dot( normal ) ) );\n\n\t}\n\n\tangleTo( v ) {\n\n\t\tconst denominator = Math.sqrt( this.lengthSq() * v.lengthSq() );\n\n\t\tif ( denominator === 0 ) return Math.PI / 2;\n\n\t\tconst theta = this.dot( v ) / denominator;\n\n\t\t// clamp, to handle numerical problems\n\n\t\treturn Math.acos( MathUtils.clamp( theta, - 1, 1 ) );\n\n\t}\n\n\tdistanceTo( v ) {\n\n\t\treturn Math.sqrt( this.distanceToSquared( v ) );\n\n\t}\n\n\tdistanceToSquared( v ) {\n\n\t\tconst dx = this.x - v.x, dy = this.y - v.y, dz = this.z - v.z;\n\n\t\treturn dx * dx + dy * dy + dz * dz;\n\n\t}\n\n\tmanhattanDistanceTo( v ) {\n\n\t\treturn Math.abs( this.x - v.x ) + Math.abs( this.y - v.y ) + Math.abs( this.z - v.z );\n\n\t}\n\n\tsetFromSpherical( s ) {\n\n\t\treturn this.setFromSphericalCoords( s.radius, s.phi, s.theta );\n\n\t}\n\n\tsetFromSphericalCoords( radius, phi, theta ) {\n\n\t\tconst sinPhiRadius = Math.sin( phi ) * radius;\n\n\t\tthis.x = sinPhiRadius * Math.sin( theta );\n\t\tthis.y = Math.cos( phi ) * radius;\n\t\tthis.z = sinPhiRadius * Math.cos( theta );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromCylindrical( c ) {\n\n\t\treturn this.setFromCylindricalCoords( c.radius, c.theta, c.y );\n\n\t}\n\n\tsetFromCylindricalCoords( radius, theta, y ) {\n\n\t\tthis.x = radius * Math.sin( theta );\n\t\tthis.y = y;\n\t\tthis.z = radius * Math.cos( theta );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromMatrixPosition( m ) {\n\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 12 ];\n\t\tthis.y = e[ 13 ];\n\t\tthis.z = e[ 14 ];\n\n\t\treturn this;\n\n\t}\n\n\tsetFromMatrixScale( m ) {\n\n\t\tconst sx = this.setFromMatrixColumn( m, 0 ).length();\n\t\tconst sy = this.setFromMatrixColumn( m, 1 ).length();\n\t\tconst sz = this.setFromMatrixColumn( m, 2 ).length();\n\n\t\tthis.x = sx;\n\t\tthis.y = sy;\n\t\tthis.z = sz;\n\n\t\treturn this;\n\n\t}\n\n\tsetFromMatrixColumn( m, index ) {\n\n\t\treturn this.fromArray( m.elements, index * 4 );\n\n\t}\n\n\tsetFromMatrix3Column( m, index ) {\n\n\t\treturn this.fromArray( m.elements, index * 3 );\n\n\t}\n\n\tequals( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) );\n\n\t}\n\n\tfromArray( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\t\tthis.z = array[ offset + 2 ];\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\t\tarray[ offset + 2 ] = this.z;\n\n\t\treturn array;\n\n\t}\n\n\tfromBufferAttribute( attribute, index, offset ) {\n\n\t\tif ( offset !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: offset has been removed from .fromBufferAttribute().' );\n\n\t\t}\n\n\t\tthis.x = attribute.getX( index );\n\t\tthis.y = attribute.getY( index );\n\t\tthis.z = attribute.getZ( index );\n\n\t\treturn this;\n\n\t}\n\n\trandom() {\n\n\t\tthis.x = Math.random();\n\t\tthis.y = Math.random();\n\t\tthis.z = Math.random();\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst _vector = new Vector3();\nconst _quaternion = new Quaternion();\n\nclass Box3 {\n\n\tconstructor( min, max ) {\n\n\t\tObject.defineProperty( this, 'isBox3', { value: true } );\n\n\t\tthis.min = ( min !== undefined ) ? min : new Vector3( + Infinity, + Infinity, + Infinity );\n\t\tthis.max = ( max !== undefined ) ? max : new Vector3( - Infinity, - Infinity, - Infinity );\n\n\t}\n\n\tset( min, max ) {\n\n\t\tthis.min.copy( min );\n\t\tthis.max.copy( max );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromArray( array ) {\n\n\t\tlet minX = + Infinity;\n\t\tlet minY = + Infinity;\n\t\tlet minZ = + Infinity;\n\n\t\tlet maxX = - Infinity;\n\t\tlet maxY = - Infinity;\n\t\tlet maxZ = - Infinity;\n\n\t\tfor ( let i = 0, l = array.length; i < l; i += 3 ) {\n\n\t\t\tconst x = array[ i ];\n\t\t\tconst y = array[ i + 1 ];\n\t\t\tconst z = array[ i + 2 ];\n\n\t\t\tif ( x < minX ) minX = x;\n\t\t\tif ( y < minY ) minY = y;\n\t\t\tif ( z < minZ ) minZ = z;\n\n\t\t\tif ( x > maxX ) maxX = x;\n\t\t\tif ( y > maxY ) maxY = y;\n\t\t\tif ( z > maxZ ) maxZ = z;\n\n\t\t}\n\n\t\tthis.min.set( minX, minY, minZ );\n\t\tthis.max.set( maxX, maxY, maxZ );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromBufferAttribute( attribute ) {\n\n\t\tlet minX = + Infinity;\n\t\tlet minY = + Infinity;\n\t\tlet minZ = + Infinity;\n\n\t\tlet maxX = - Infinity;\n\t\tlet maxY = - Infinity;\n\t\tlet maxZ = - Infinity;\n\n\t\tfor ( let i = 0, l = attribute.count; i < l; i ++ ) {\n\n\t\t\tconst x = attribute.getX( i );\n\t\t\tconst y = attribute.getY( i );\n\t\t\tconst z = attribute.getZ( i );\n\n\t\t\tif ( x < minX ) minX = x;\n\t\t\tif ( y < minY ) minY = y;\n\t\t\tif ( z < minZ ) minZ = z;\n\n\t\t\tif ( x > maxX ) maxX = x;\n\t\t\tif ( y > maxY ) maxY = y;\n\t\t\tif ( z > maxZ ) maxZ = z;\n\n\t\t}\n\n\t\tthis.min.set( minX, minY, minZ );\n\t\tthis.max.set( maxX, maxY, maxZ );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromPoints( points ) {\n\n\t\tthis.makeEmpty();\n\n\t\tfor ( let i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\tthis.expandByPoint( points[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetFromCenterAndSize( center, size ) {\n\n\t\tconst halfSize = _vector$1.copy( size ).multiplyScalar( 0.5 );\n\n\t\tthis.min.copy( center ).sub( halfSize );\n\t\tthis.max.copy( center ).add( halfSize );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromObject( object ) {\n\n\t\tthis.makeEmpty();\n\n\t\treturn this.expandByObject( object );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( box ) {\n\n\t\tthis.min.copy( box.min );\n\t\tthis.max.copy( box.max );\n\n\t\treturn this;\n\n\t}\n\n\tmakeEmpty() {\n\n\t\tthis.min.x = this.min.y = this.min.z = + Infinity;\n\t\tthis.max.x = this.max.y = this.max.z = - Infinity;\n\n\t\treturn this;\n\n\t}\n\n\tisEmpty() {\n\n\t\t// this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes\n\n\t\treturn ( this.max.x < this.min.x ) || ( this.max.y < this.min.y ) || ( this.max.z < this.min.z );\n\n\t}\n\n\tgetCenter( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box3: .getCenter() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn this.isEmpty() ? target.set( 0, 0, 0 ) : target.addVectors( this.min, this.max ).multiplyScalar( 0.5 );\n\n\t}\n\n\tgetSize( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box3: .getSize() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn this.isEmpty() ? target.set( 0, 0, 0 ) : target.subVectors( this.max, this.min );\n\n\t}\n\n\texpandByPoint( point ) {\n\n\t\tthis.min.min( point );\n\t\tthis.max.max( point );\n\n\t\treturn this;\n\n\t}\n\n\texpandByVector( vector ) {\n\n\t\tthis.min.sub( vector );\n\t\tthis.max.add( vector );\n\n\t\treturn this;\n\n\t}\n\n\texpandByScalar( scalar ) {\n\n\t\tthis.min.addScalar( - scalar );\n\t\tthis.max.addScalar( scalar );\n\n\t\treturn this;\n\n\t}\n\n\texpandByObject( object ) {\n\n\t\t// Computes the world-axis-aligned bounding box of an object (including its children),\n\t\t// accounting for both the object's, and children's, world transforms\n\n\t\tobject.updateWorldMatrix( false, false );\n\n\t\tconst geometry = object.geometry;\n\n\t\tif ( geometry !== undefined ) {\n\n\t\t\tif ( geometry.boundingBox === null ) {\n\n\t\t\t\tgeometry.computeBoundingBox();\n\n\t\t\t}\n\n\t\t\t_box.copy( geometry.boundingBox );\n\t\t\t_box.applyMatrix4( object.matrixWorld );\n\n\t\t\tthis.union( _box );\n\n\t\t}\n\n\t\tconst children = object.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tthis.expandByObject( children[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tcontainsPoint( point ) {\n\n\t\treturn point.x < this.min.x || point.x > this.max.x ||\n\t\t\tpoint.y < this.min.y || point.y > this.max.y ||\n\t\t\tpoint.z < this.min.z || point.z > this.max.z ? false : true;\n\n\t}\n\n\tcontainsBox( box ) {\n\n\t\treturn this.min.x <= box.min.x && box.max.x <= this.max.x &&\n\t\t\tthis.min.y <= box.min.y && box.max.y <= this.max.y &&\n\t\t\tthis.min.z <= box.min.z && box.max.z <= this.max.z;\n\n\t}\n\n\tgetParameter( point, target ) {\n\n\t\t// This can potentially have a divide by zero if the box\n\t\t// has a size dimension of 0.\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box3: .getParameter() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.set(\n\t\t\t( point.x - this.min.x ) / ( this.max.x - this.min.x ),\n\t\t\t( point.y - this.min.y ) / ( this.max.y - this.min.y ),\n\t\t\t( point.z - this.min.z ) / ( this.max.z - this.min.z )\n\t\t);\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\t// using 6 splitting planes to rule out intersections.\n\t\treturn box.max.x < this.min.x || box.min.x > this.max.x ||\n\t\t\tbox.max.y < this.min.y || box.min.y > this.max.y ||\n\t\t\tbox.max.z < this.min.z || box.min.z > this.max.z ? false : true;\n\n\t}\n\n\tintersectsSphere( sphere ) {\n\n\t\t// Find the point on the AABB closest to the sphere center.\n\t\tthis.clampPoint( sphere.center, _vector$1 );\n\n\t\t// If that point is inside the sphere, the AABB and sphere intersect.\n\t\treturn _vector$1.distanceToSquared( sphere.center ) <= ( sphere.radius * sphere.radius );\n\n\t}\n\n\tintersectsPlane( plane ) {\n\n\t\t// We compute the minimum and maximum dot product values. If those values\n\t\t// are on the same side (back or front) of the plane, then there is no intersection.\n\n\t\tlet min, max;\n\n\t\tif ( plane.normal.x > 0 ) {\n\n\t\t\tmin = plane.normal.x * this.min.x;\n\t\t\tmax = plane.normal.x * this.max.x;\n\n\t\t} else {\n\n\t\t\tmin = plane.normal.x * this.max.x;\n\t\t\tmax = plane.normal.x * this.min.x;\n\n\t\t}\n\n\t\tif ( plane.normal.y > 0 ) {\n\n\t\t\tmin += plane.normal.y * this.min.y;\n\t\t\tmax += plane.normal.y * this.max.y;\n\n\t\t} else {\n\n\t\t\tmin += plane.normal.y * this.max.y;\n\t\t\tmax += plane.normal.y * this.min.y;\n\n\t\t}\n\n\t\tif ( plane.normal.z > 0 ) {\n\n\t\t\tmin += plane.normal.z * this.min.z;\n\t\t\tmax += plane.normal.z * this.max.z;\n\n\t\t} else {\n\n\t\t\tmin += plane.normal.z * this.max.z;\n\t\t\tmax += plane.normal.z * this.min.z;\n\n\t\t}\n\n\t\treturn ( min <= - plane.constant && max >= - plane.constant );\n\n\t}\n\n\tintersectsTriangle( triangle ) {\n\n\t\tif ( this.isEmpty() ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\t// compute box center and extents\n\t\tthis.getCenter( _center );\n\t\t_extents.subVectors( this.max, _center );\n\n\t\t// translate triangle to aabb origin\n\t\t_v0.subVectors( triangle.a, _center );\n\t\t_v1.subVectors( triangle.b, _center );\n\t\t_v2.subVectors( triangle.c, _center );\n\n\t\t// compute edge vectors for triangle\n\t\t_f0.subVectors( _v1, _v0 );\n\t\t_f1.subVectors( _v2, _v1 );\n\t\t_f2.subVectors( _v0, _v2 );\n\n\t\t// test against axes that are given by cross product combinations of the edges of the triangle and the edges of the aabb\n\t\t// make an axis testing of each of the 3 sides of the aabb against each of the 3 sides of the triangle = 9 axis of separation\n\t\t// axis_ij = u_i x f_j (u0, u1, u2 = face normals of aabb = x,y,z axes vectors since aabb is axis aligned)\n\t\tlet axes = [\n\t\t\t0, - _f0.z, _f0.y, 0, - _f1.z, _f1.y, 0, - _f2.z, _f2.y,\n\t\t\t_f0.z, 0, - _f0.x, _f1.z, 0, - _f1.x, _f2.z, 0, - _f2.x,\n\t\t\t- _f0.y, _f0.x, 0, - _f1.y, _f1.x, 0, - _f2.y, _f2.x, 0\n\t\t];\n\t\tif ( ! satForAxes( axes, _v0, _v1, _v2, _extents ) ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\t// test 3 face normals from the aabb\n\t\taxes = [ 1, 0, 0, 0, 1, 0, 0, 0, 1 ];\n\t\tif ( ! satForAxes( axes, _v0, _v1, _v2, _extents ) ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\t// finally testing the face normal of the triangle\n\t\t// use already existing triangle edge vectors here\n\t\t_triangleNormal.crossVectors( _f0, _f1 );\n\t\taxes = [ _triangleNormal.x, _triangleNormal.y, _triangleNormal.z ];\n\n\t\treturn satForAxes( axes, _v0, _v1, _v2, _extents );\n\n\t}\n\n\tclampPoint( point, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box3: .clampPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.copy( point ).clamp( this.min, this.max );\n\n\t}\n\n\tdistanceToPoint( point ) {\n\n\t\tconst clampedPoint = _vector$1.copy( point ).clamp( this.min, this.max );\n\n\t\treturn clampedPoint.sub( point ).length();\n\n\t}\n\n\tgetBoundingSphere( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.error( 'THREE.Box3: .getBoundingSphere() target is now required' );\n\t\t\t//target = new Sphere(); // removed to avoid cyclic dependency\n\n\t\t}\n\n\t\tthis.getCenter( target.center );\n\n\t\ttarget.radius = this.getSize( _vector$1 ).length() * 0.5;\n\n\t\treturn target;\n\n\t}\n\n\tintersect( box ) {\n\n\t\tthis.min.max( box.min );\n\t\tthis.max.min( box.max );\n\n\t\t// ensure that if there is no overlap, the result is fully empty, not slightly empty with non-inf/+inf values that will cause subsequence intersects to erroneously return valid values.\n\t\tif ( this.isEmpty() ) this.makeEmpty();\n\n\t\treturn this;\n\n\t}\n\n\tunion( box ) {\n\n\t\tthis.min.min( box.min );\n\t\tthis.max.max( box.max );\n\n\t\treturn this;\n\n\t}\n\n\tapplyMatrix4( matrix ) {\n\n\t\t// transform of empty box is an empty box.\n\t\tif ( this.isEmpty() ) return this;\n\n\t\t// NOTE: I am using a binary pattern to specify all 2^3 combinations below\n\t\t_points[ 0 ].set( this.min.x, this.min.y, this.min.z ).applyMatrix4( matrix ); // 000\n\t\t_points[ 1 ].set( this.min.x, this.min.y, this.max.z ).applyMatrix4( matrix ); // 001\n\t\t_points[ 2 ].set( this.min.x, this.max.y, this.min.z ).applyMatrix4( matrix ); // 010\n\t\t_points[ 3 ].set( this.min.x, this.max.y, this.max.z ).applyMatrix4( matrix ); // 011\n\t\t_points[ 4 ].set( this.max.x, this.min.y, this.min.z ).applyMatrix4( matrix ); // 100\n\t\t_points[ 5 ].set( this.max.x, this.min.y, this.max.z ).applyMatrix4( matrix ); // 101\n\t\t_points[ 6 ].set( this.max.x, this.max.y, this.min.z ).applyMatrix4( matrix ); // 110\n\t\t_points[ 7 ].set( this.max.x, this.max.y, this.max.z ).applyMatrix4( matrix ); // 111\n\n\t\tthis.setFromPoints( _points );\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( offset ) {\n\n\t\tthis.min.add( offset );\n\t\tthis.max.add( offset );\n\n\t\treturn this;\n\n\t}\n\n\tequals( box ) {\n\n\t\treturn box.min.equals( this.min ) && box.max.equals( this.max );\n\n\t}\n\n}\n\nfunction satForAxes( axes, v0, v1, v2, extents ) {\n\n\tfor ( let i = 0, j = axes.length - 3; i <= j; i += 3 ) {\n\n\t\t_testAxis.fromArray( axes, i );\n\t\t// project the aabb onto the seperating axis\n\t\tconst r = extents.x * Math.abs( _testAxis.x ) + extents.y * Math.abs( _testAxis.y ) + extents.z * Math.abs( _testAxis.z );\n\t\t// project all 3 vertices of the triangle onto the seperating axis\n\t\tconst p0 = v0.dot( _testAxis );\n\t\tconst p1 = v1.dot( _testAxis );\n\t\tconst p2 = v2.dot( _testAxis );\n\t\t// actual test, basically see if either of the most extreme of the triangle points intersects r\n\t\tif ( Math.max( - Math.max( p0, p1, p2 ), Math.min( p0, p1, p2 ) ) > r ) {\n\n\t\t\t// points of the projected triangle are outside the projected half-length of the aabb\n\t\t\t// the axis is seperating and we can exit\n\t\t\treturn false;\n\n\t\t}\n\n\t}\n\n\treturn true;\n\n}\n\nconst _points = [\n\tnew Vector3(),\n\tnew Vector3(),\n\tnew Vector3(),\n\tnew Vector3(),\n\tnew Vector3(),\n\tnew Vector3(),\n\tnew Vector3(),\n\tnew Vector3()\n];\n\nconst _vector$1 = new Vector3();\n\nconst _box = new Box3();\n\n// triangle centered vertices\n\nconst _v0 = new Vector3();\nconst _v1 = new Vector3();\nconst _v2 = new Vector3();\n\n// triangle edge vectors\n\nconst _f0 = new Vector3();\nconst _f1 = new Vector3();\nconst _f2 = new Vector3();\n\nconst _center = new Vector3();\nconst _extents = new Vector3();\nconst _triangleNormal = new Vector3();\nconst _testAxis = new Vector3();\n\nconst _box$1 = new Box3();\n\nclass Sphere {\n\n\tconstructor( center, radius ) {\n\n\t\tthis.center = ( center !== undefined ) ? center : new Vector3();\n\t\tthis.radius = ( radius !== undefined ) ? radius : - 1;\n\n\t}\n\n\tset( center, radius ) {\n\n\t\tthis.center.copy( center );\n\t\tthis.radius = radius;\n\n\t\treturn this;\n\n\t}\n\n\tsetFromPoints( points, optionalCenter ) {\n\n\t\tconst center = this.center;\n\n\t\tif ( optionalCenter !== undefined ) {\n\n\t\t\tcenter.copy( optionalCenter );\n\n\t\t} else {\n\n\t\t\t_box$1.setFromPoints( points ).getCenter( center );\n\n\t\t}\n\n\t\tlet maxRadiusSq = 0;\n\n\t\tfor ( let i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( points[ i ] ) );\n\n\t\t}\n\n\t\tthis.radius = Math.sqrt( maxRadiusSq );\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( sphere ) {\n\n\t\tthis.center.copy( sphere.center );\n\t\tthis.radius = sphere.radius;\n\n\t\treturn this;\n\n\t}\n\n\tisEmpty() {\n\n\t\treturn ( this.radius < 0 );\n\n\t}\n\n\tmakeEmpty() {\n\n\t\tthis.center.set( 0, 0, 0 );\n\t\tthis.radius = - 1;\n\n\t\treturn this;\n\n\t}\n\n\tcontainsPoint( point ) {\n\n\t\treturn ( point.distanceToSquared( this.center ) <= ( this.radius * this.radius ) );\n\n\t}\n\n\tdistanceToPoint( point ) {\n\n\t\treturn ( point.distanceTo( this.center ) - this.radius );\n\n\t}\n\n\tintersectsSphere( sphere ) {\n\n\t\tconst radiusSum = this.radius + sphere.radius;\n\n\t\treturn sphere.center.distanceToSquared( this.center ) <= ( radiusSum * radiusSum );\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\treturn box.intersectsSphere( this );\n\n\t}\n\n\tintersectsPlane( plane ) {\n\n\t\treturn Math.abs( plane.distanceToPoint( this.center ) ) <= this.radius;\n\n\t}\n\n\tclampPoint( point, target ) {\n\n\t\tconst deltaLengthSq = this.center.distanceToSquared( point );\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Sphere: .clampPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\ttarget.copy( point );\n\n\t\tif ( deltaLengthSq > ( this.radius * this.radius ) ) {\n\n\t\t\ttarget.sub( this.center ).normalize();\n\t\t\ttarget.multiplyScalar( this.radius ).add( this.center );\n\n\t\t}\n\n\t\treturn target;\n\n\t}\n\n\tgetBoundingBox( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Sphere: .getBoundingBox() target is now required' );\n\t\t\ttarget = new Box3();\n\n\t\t}\n\n\t\tif ( this.isEmpty() ) {\n\n\t\t\t// Empty sphere produces empty bounding box\n\t\t\ttarget.makeEmpty();\n\t\t\treturn target;\n\n\t\t}\n\n\t\ttarget.set( this.center, this.center );\n\t\ttarget.expandByScalar( this.radius );\n\n\t\treturn target;\n\n\t}\n\n\tapplyMatrix4( matrix ) {\n\n\t\tthis.center.applyMatrix4( matrix );\n\t\tthis.radius = this.radius * matrix.getMaxScaleOnAxis();\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( offset ) {\n\n\t\tthis.center.add( offset );\n\n\t\treturn this;\n\n\t}\n\n\tequals( sphere ) {\n\n\t\treturn sphere.center.equals( this.center ) && ( sphere.radius === this.radius );\n\n\t}\n\n}\n\nconst _vector$2 = new Vector3();\nconst _segCenter = new Vector3();\nconst _segDir = new Vector3();\nconst _diff = new Vector3();\n\nconst _edge1 = new Vector3();\nconst _edge2 = new Vector3();\nconst _normal = new Vector3();\n\nclass Ray {\n\n\tconstructor( origin, direction ) {\n\n\t\tthis.origin = ( origin !== undefined ) ? origin : new Vector3();\n\t\tthis.direction = ( direction !== undefined ) ? direction : new Vector3( 0, 0, - 1 );\n\n\t}\n\n\tset( origin, direction ) {\n\n\t\tthis.origin.copy( origin );\n\t\tthis.direction.copy( direction );\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( ray ) {\n\n\t\tthis.origin.copy( ray.origin );\n\t\tthis.direction.copy( ray.direction );\n\n\t\treturn this;\n\n\t}\n\n\tat( t, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Ray: .at() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.copy( this.direction ).multiplyScalar( t ).add( this.origin );\n\n\t}\n\n\tlookAt( v ) {\n\n\t\tthis.direction.copy( v ).sub( this.origin ).normalize();\n\n\t\treturn this;\n\n\t}\n\n\trecast( t ) {\n\n\t\tthis.origin.copy( this.at( t, _vector$2 ) );\n\n\t\treturn this;\n\n\t}\n\n\tclosestPointToPoint( point, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Ray: .closestPointToPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\ttarget.subVectors( point, this.origin );\n\n\t\tconst directionDistance = target.dot( this.direction );\n\n\t\tif ( directionDistance < 0 ) {\n\n\t\t\treturn target.copy( this.origin );\n\n\t\t}\n\n\t\treturn target.copy( this.direction ).multiplyScalar( directionDistance ).add( this.origin );\n\n\t}\n\n\tdistanceToPoint( point ) {\n\n\t\treturn Math.sqrt( this.distanceSqToPoint( point ) );\n\n\t}\n\n\tdistanceSqToPoint( point ) {\n\n\t\tconst directionDistance = _vector$2.subVectors( point, this.origin ).dot( this.direction );\n\n\t\t// point behind the ray\n\n\t\tif ( directionDistance < 0 ) {\n\n\t\t\treturn this.origin.distanceToSquared( point );\n\n\t\t}\n\n\t\t_vector$2.copy( this.direction ).multiplyScalar( directionDistance ).add( this.origin );\n\n\t\treturn _vector$2.distanceToSquared( point );\n\n\t}\n\n\tdistanceSqToSegment( v0, v1, optionalPointOnRay, optionalPointOnSegment ) {\n\n\t\t// from http://www.geometrictools.com/GTEngine/Include/Mathematics/GteDistRaySegment.h\n\t\t// It returns the min distance between the ray and the segment\n\t\t// defined by v0 and v1\n\t\t// It can also set two optional targets :\n\t\t// - The closest point on the ray\n\t\t// - The closest point on the segment\n\n\t\t_segCenter.copy( v0 ).add( v1 ).multiplyScalar( 0.5 );\n\t\t_segDir.copy( v1 ).sub( v0 ).normalize();\n\t\t_diff.copy( this.origin ).sub( _segCenter );\n\n\t\tconst segExtent = v0.distanceTo( v1 ) * 0.5;\n\t\tconst a01 = - this.direction.dot( _segDir );\n\t\tconst b0 = _diff.dot( this.direction );\n\t\tconst b1 = - _diff.dot( _segDir );\n\t\tconst c = _diff.lengthSq();\n\t\tconst det = Math.abs( 1 - a01 * a01 );\n\t\tlet s0, s1, sqrDist, extDet;\n\n\t\tif ( det > 0 ) {\n\n\t\t\t// The ray and segment are not parallel.\n\n\t\t\ts0 = a01 * b1 - b0;\n\t\t\ts1 = a01 * b0 - b1;\n\t\t\textDet = segExtent * det;\n\n\t\t\tif ( s0 >= 0 ) {\n\n\t\t\t\tif ( s1 >= - extDet ) {\n\n\t\t\t\t\tif ( s1 <= extDet ) {\n\n\t\t\t\t\t\t// region 0\n\t\t\t\t\t\t// Minimum at interior points of ray and segment.\n\n\t\t\t\t\t\tconst invDet = 1 / det;\n\t\t\t\t\t\ts0 *= invDet;\n\t\t\t\t\t\ts1 *= invDet;\n\t\t\t\t\t\tsqrDist = s0 * ( s0 + a01 * s1 + 2 * b0 ) + s1 * ( a01 * s0 + s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// region 1\n\n\t\t\t\t\t\ts1 = segExtent;\n\t\t\t\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// region 5\n\n\t\t\t\t\ts1 = - segExtent;\n\t\t\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( s1 <= - extDet ) {\n\n\t\t\t\t\t// region 4\n\n\t\t\t\t\ts0 = Math.max( 0, - ( - a01 * segExtent + b0 ) );\n\t\t\t\t\ts1 = ( s0 > 0 ) ? - segExtent : Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t} else if ( s1 <= extDet ) {\n\n\t\t\t\t\t// region 3\n\n\t\t\t\t\ts0 = 0;\n\t\t\t\t\ts1 = Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\tsqrDist = s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// region 2\n\n\t\t\t\t\ts0 = Math.max( 0, - ( a01 * segExtent + b0 ) );\n\t\t\t\t\ts1 = ( s0 > 0 ) ? segExtent : Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// Ray and segment are parallel.\n\n\t\t\ts1 = ( a01 > 0 ) ? - segExtent : segExtent;\n\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t}\n\n\t\tif ( optionalPointOnRay ) {\n\n\t\t\toptionalPointOnRay.copy( this.direction ).multiplyScalar( s0 ).add( this.origin );\n\n\t\t}\n\n\t\tif ( optionalPointOnSegment ) {\n\n\t\t\toptionalPointOnSegment.copy( _segDir ).multiplyScalar( s1 ).add( _segCenter );\n\n\t\t}\n\n\t\treturn sqrDist;\n\n\t}\n\n\tintersectSphere( sphere, target ) {\n\n\t\t_vector$2.subVectors( sphere.center, this.origin );\n\t\tconst tca = _vector$2.dot( this.direction );\n\t\tconst d2 = _vector$2.dot( _vector$2 ) - tca * tca;\n\t\tconst radius2 = sphere.radius * sphere.radius;\n\n\t\tif ( d2 > radius2 ) return null;\n\n\t\tconst thc = Math.sqrt( radius2 - d2 );\n\n\t\t// t0 = first intersect point - entrance on front of sphere\n\t\tconst t0 = tca - thc;\n\n\t\t// t1 = second intersect point - exit point on back of sphere\n\t\tconst t1 = tca + thc;\n\n\t\t// test to see if both t0 and t1 are behind the ray - if so, return null\n\t\tif ( t0 < 0 && t1 < 0 ) return null;\n\n\t\t// test to see if t0 is behind the ray:\n\t\t// if it is, the ray is inside the sphere, so return the second exit point scaled by t1,\n\t\t// in order to always return an intersect point that is in front of the ray.\n\t\tif ( t0 < 0 ) return this.at( t1, target );\n\n\t\t// else t0 is in front of the ray, so return the first collision point scaled by t0\n\t\treturn this.at( t0, target );\n\n\t}\n\n\tintersectsSphere( sphere ) {\n\n\t\treturn this.distanceSqToPoint( sphere.center ) <= ( sphere.radius * sphere.radius );\n\n\t}\n\n\tdistanceToPlane( plane ) {\n\n\t\tconst denominator = plane.normal.dot( this.direction );\n\n\t\tif ( denominator === 0 ) {\n\n\t\t\t// line is coplanar, return origin\n\t\t\tif ( plane.distanceToPoint( this.origin ) === 0 ) {\n\n\t\t\t\treturn 0;\n\n\t\t\t}\n\n\t\t\t// Null is preferable to undefined since undefined means.... it is undefined\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst t = - ( this.origin.dot( plane.normal ) + plane.constant ) / denominator;\n\n\t\t// Return if the ray never intersects the plane\n\n\t\treturn t >= 0 ? t : null;\n\n\t}\n\n\tintersectPlane( plane, target ) {\n\n\t\tconst t = this.distanceToPlane( plane );\n\n\t\tif ( t === null ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\treturn this.at( t, target );\n\n\t}\n\n\tintersectsPlane( plane ) {\n\n\t\t// check if the ray lies on the plane first\n\n\t\tconst distToPoint = plane.distanceToPoint( this.origin );\n\n\t\tif ( distToPoint === 0 ) {\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\tconst denominator = plane.normal.dot( this.direction );\n\n\t\tif ( denominator * distToPoint < 0 ) {\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\t// ray origin is behind the plane (and is pointing behind it)\n\n\t\treturn false;\n\n\t}\n\n\tintersectBox( box, target ) {\n\n\t\tlet tmin, tmax, tymin, tymax, tzmin, tzmax;\n\n\t\tconst invdirx = 1 / this.direction.x,\n\t\t\tinvdiry = 1 / this.direction.y,\n\t\t\tinvdirz = 1 / this.direction.z;\n\n\t\tconst origin = this.origin;\n\n\t\tif ( invdirx >= 0 ) {\n\n\t\t\ttmin = ( box.min.x - origin.x ) * invdirx;\n\t\t\ttmax = ( box.max.x - origin.x ) * invdirx;\n\n\t\t} else {\n\n\t\t\ttmin = ( box.max.x - origin.x ) * invdirx;\n\t\t\ttmax = ( box.min.x - origin.x ) * invdirx;\n\n\t\t}\n\n\t\tif ( invdiry >= 0 ) {\n\n\t\t\ttymin = ( box.min.y - origin.y ) * invdiry;\n\t\t\ttymax = ( box.max.y - origin.y ) * invdiry;\n\n\t\t} else {\n\n\t\t\ttymin = ( box.max.y - origin.y ) * invdiry;\n\t\t\ttymax = ( box.min.y - origin.y ) * invdiry;\n\n\t\t}\n\n\t\tif ( ( tmin > tymax ) || ( tymin > tmax ) ) return null;\n\n\t\t// These lines also handle the case where tmin or tmax is NaN\n\t\t// (result of 0 * Infinity). x !== x returns true if x is NaN\n\n\t\tif ( tymin > tmin || tmin !== tmin ) tmin = tymin;\n\n\t\tif ( tymax < tmax || tmax !== tmax ) tmax = tymax;\n\n\t\tif ( invdirz >= 0 ) {\n\n\t\t\ttzmin = ( box.min.z - origin.z ) * invdirz;\n\t\t\ttzmax = ( box.max.z - origin.z ) * invdirz;\n\n\t\t} else {\n\n\t\t\ttzmin = ( box.max.z - origin.z ) * invdirz;\n\t\t\ttzmax = ( box.min.z - origin.z ) * invdirz;\n\n\t\t}\n\n\t\tif ( ( tmin > tzmax ) || ( tzmin > tmax ) ) return null;\n\n\t\tif ( tzmin > tmin || tmin !== tmin ) tmin = tzmin;\n\n\t\tif ( tzmax < tmax || tmax !== tmax ) tmax = tzmax;\n\n\t\t//return point closest to the ray (positive side)\n\n\t\tif ( tmax < 0 ) return null;\n\n\t\treturn this.at( tmin >= 0 ? tmin : tmax, target );\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\treturn this.intersectBox( box, _vector$2 ) !== null;\n\n\t}\n\n\tintersectTriangle( a, b, c, backfaceCulling, target ) {\n\n\t\t// Compute the offset origin, edges, and normal.\n\n\t\t// from http://www.geometrictools.com/GTEngine/Include/Mathematics/GteIntrRay3Triangle3.h\n\n\t\t_edge1.subVectors( b, a );\n\t\t_edge2.subVectors( c, a );\n\t\t_normal.crossVectors( _edge1, _edge2 );\n\n\t\t// Solve Q + t*D = b1*E1 + b2*E2 (Q = kDiff, D = ray direction,\n\t\t// E1 = kEdge1, E2 = kEdge2, N = Cross(E1,E2)) by\n\t\t//   |Dot(D,N)|*b1 = sign(Dot(D,N))*Dot(D,Cross(Q,E2))\n\t\t//   |Dot(D,N)|*b2 = sign(Dot(D,N))*Dot(D,Cross(E1,Q))\n\t\t//   |Dot(D,N)|*t = -sign(Dot(D,N))*Dot(Q,N)\n\t\tlet DdN = this.direction.dot( _normal );\n\t\tlet sign;\n\n\t\tif ( DdN > 0 ) {\n\n\t\t\tif ( backfaceCulling ) return null;\n\t\t\tsign = 1;\n\n\t\t} else if ( DdN < 0 ) {\n\n\t\t\tsign = - 1;\n\t\t\tDdN = - DdN;\n\n\t\t} else {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t_diff.subVectors( this.origin, a );\n\t\tconst DdQxE2 = sign * this.direction.dot( _edge2.crossVectors( _diff, _edge2 ) );\n\n\t\t// b1 < 0, no intersection\n\t\tif ( DdQxE2 < 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst DdE1xQ = sign * this.direction.dot( _edge1.cross( _diff ) );\n\n\t\t// b2 < 0, no intersection\n\t\tif ( DdE1xQ < 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// b1+b2 > 1, no intersection\n\t\tif ( DdQxE2 + DdE1xQ > DdN ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// Line intersects triangle, check if ray does.\n\t\tconst QdN = - sign * _diff.dot( _normal );\n\n\t\t// t < 0, no intersection\n\t\tif ( QdN < 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// Ray intersects triangle.\n\t\treturn this.at( QdN / DdN, target );\n\n\t}\n\n\tapplyMatrix4( matrix4 ) {\n\n\t\tthis.origin.applyMatrix4( matrix4 );\n\t\tthis.direction.transformDirection( matrix4 );\n\n\t\treturn this;\n\n\t}\n\n\tequals( ray ) {\n\n\t\treturn ray.origin.equals( this.origin ) && ray.direction.equals( this.direction );\n\n\t}\n\n}\n\nclass Matrix4 {\n\n\tconstructor() {\n\n\t\tObject.defineProperty( this, 'isMatrix4', { value: true } );\n\n\t\tthis.elements = [\n\n\t\t\t1, 0, 0, 0,\n\t\t\t0, 1, 0, 0,\n\t\t\t0, 0, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t];\n\n\t\tif ( arguments.length > 0 ) {\n\n\t\t\tconsole.error( 'THREE.Matrix4: the constructor no longer reads arguments. use .set() instead.' );\n\n\t\t}\n\n\t}\n\n\tset( n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44 ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] = n11; te[ 4 ] = n12; te[ 8 ] = n13; te[ 12 ] = n14;\n\t\tte[ 1 ] = n21; te[ 5 ] = n22; te[ 9 ] = n23; te[ 13 ] = n24;\n\t\tte[ 2 ] = n31; te[ 6 ] = n32; te[ 10 ] = n33; te[ 14 ] = n34;\n\t\tte[ 3 ] = n41; te[ 7 ] = n42; te[ 11 ] = n43; te[ 15 ] = n44;\n\n\t\treturn this;\n\n\t}\n\n\tidentity() {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, 0,\n\t\t\t0, 1, 0, 0,\n\t\t\t0, 0, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new Matrix4().fromArray( this.elements );\n\n\t}\n\n\tcopy( m ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = m.elements;\n\n\t\tte[ 0 ] = me[ 0 ]; te[ 1 ] = me[ 1 ]; te[ 2 ] = me[ 2 ]; te[ 3 ] = me[ 3 ];\n\t\tte[ 4 ] = me[ 4 ]; te[ 5 ] = me[ 5 ]; te[ 6 ] = me[ 6 ]; te[ 7 ] = me[ 7 ];\n\t\tte[ 8 ] = me[ 8 ]; te[ 9 ] = me[ 9 ]; te[ 10 ] = me[ 10 ]; te[ 11 ] = me[ 11 ];\n\t\tte[ 12 ] = me[ 12 ]; te[ 13 ] = me[ 13 ]; te[ 14 ] = me[ 14 ]; te[ 15 ] = me[ 15 ];\n\n\t\treturn this;\n\n\t}\n\n\tcopyPosition( m ) {\n\n\t\tconst te = this.elements, me = m.elements;\n\n\t\tte[ 12 ] = me[ 12 ];\n\t\tte[ 13 ] = me[ 13 ];\n\t\tte[ 14 ] = me[ 14 ];\n\n\t\treturn this;\n\n\t}\n\n\textractBasis( xAxis, yAxis, zAxis ) {\n\n\t\txAxis.setFromMatrixColumn( this, 0 );\n\t\tyAxis.setFromMatrixColumn( this, 1 );\n\t\tzAxis.setFromMatrixColumn( this, 2 );\n\n\t\treturn this;\n\n\t}\n\n\tmakeBasis( xAxis, yAxis, zAxis ) {\n\n\t\tthis.set(\n\t\t\txAxis.x, yAxis.x, zAxis.x, 0,\n\t\t\txAxis.y, yAxis.y, zAxis.y, 0,\n\t\t\txAxis.z, yAxis.z, zAxis.z, 0,\n\t\t\t0, 0, 0, 1\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\textractRotation( m ) {\n\n\t\t// this method does not support reflection matrices\n\n\t\tconst te = this.elements;\n\t\tconst me = m.elements;\n\n\t\tconst scaleX = 1 / _v1$1.setFromMatrixColumn( m, 0 ).length();\n\t\tconst scaleY = 1 / _v1$1.setFromMatrixColumn( m, 1 ).length();\n\t\tconst scaleZ = 1 / _v1$1.setFromMatrixColumn( m, 2 ).length();\n\n\t\tte[ 0 ] = me[ 0 ] * scaleX;\n\t\tte[ 1 ] = me[ 1 ] * scaleX;\n\t\tte[ 2 ] = me[ 2 ] * scaleX;\n\t\tte[ 3 ] = 0;\n\n\t\tte[ 4 ] = me[ 4 ] * scaleY;\n\t\tte[ 5 ] = me[ 5 ] * scaleY;\n\t\tte[ 6 ] = me[ 6 ] * scaleY;\n\t\tte[ 7 ] = 0;\n\n\t\tte[ 8 ] = me[ 8 ] * scaleZ;\n\t\tte[ 9 ] = me[ 9 ] * scaleZ;\n\t\tte[ 10 ] = me[ 10 ] * scaleZ;\n\t\tte[ 11 ] = 0;\n\n\t\tte[ 12 ] = 0;\n\t\tte[ 13 ] = 0;\n\t\tte[ 14 ] = 0;\n\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationFromEuler( euler ) {\n\n\t\tif ( ! ( euler && euler.isEuler ) ) {\n\n\t\t\tconsole.error( 'THREE.Matrix4: .makeRotationFromEuler() now expects a Euler rotation rather than a Vector3 and order.' );\n\n\t\t}\n\n\t\tconst te = this.elements;\n\n\t\tconst x = euler.x, y = euler.y, z = euler.z;\n\t\tconst a = Math.cos( x ), b = Math.sin( x );\n\t\tconst c = Math.cos( y ), d = Math.sin( y );\n\t\tconst e = Math.cos( z ), f = Math.sin( z );\n\n\t\tif ( euler.order === 'XYZ' ) {\n\n\t\t\tconst ae = a * e, af = a * f, be = b * e, bf = b * f;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = - c * f;\n\t\t\tte[ 8 ] = d;\n\n\t\t\tte[ 1 ] = af + be * d;\n\t\t\tte[ 5 ] = ae - bf * d;\n\t\t\tte[ 9 ] = - b * c;\n\n\t\t\tte[ 2 ] = bf - ae * d;\n\t\t\tte[ 6 ] = be + af * d;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'YXZ' ) {\n\n\t\t\tconst ce = c * e, cf = c * f, de = d * e, df = d * f;\n\n\t\t\tte[ 0 ] = ce + df * b;\n\t\t\tte[ 4 ] = de * b - cf;\n\t\t\tte[ 8 ] = a * d;\n\n\t\t\tte[ 1 ] = a * f;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = - b;\n\n\t\t\tte[ 2 ] = cf * b - de;\n\t\t\tte[ 6 ] = df + ce * b;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'ZXY' ) {\n\n\t\t\tconst ce = c * e, cf = c * f, de = d * e, df = d * f;\n\n\t\t\tte[ 0 ] = ce - df * b;\n\t\t\tte[ 4 ] = - a * f;\n\t\t\tte[ 8 ] = de + cf * b;\n\n\t\t\tte[ 1 ] = cf + de * b;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = df - ce * b;\n\n\t\t\tte[ 2 ] = - a * d;\n\t\t\tte[ 6 ] = b;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'ZYX' ) {\n\n\t\t\tconst ae = a * e, af = a * f, be = b * e, bf = b * f;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = be * d - af;\n\t\t\tte[ 8 ] = ae * d + bf;\n\n\t\t\tte[ 1 ] = c * f;\n\t\t\tte[ 5 ] = bf * d + ae;\n\t\t\tte[ 9 ] = af * d - be;\n\n\t\t\tte[ 2 ] = - d;\n\t\t\tte[ 6 ] = b * c;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'YZX' ) {\n\n\t\t\tconst ac = a * c, ad = a * d, bc = b * c, bd = b * d;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = bd - ac * f;\n\t\t\tte[ 8 ] = bc * f + ad;\n\n\t\t\tte[ 1 ] = f;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = - b * e;\n\n\t\t\tte[ 2 ] = - d * e;\n\t\t\tte[ 6 ] = ad * f + bc;\n\t\t\tte[ 10 ] = ac - bd * f;\n\n\t\t} else if ( euler.order === 'XZY' ) {\n\n\t\t\tconst ac = a * c, ad = a * d, bc = b * c, bd = b * d;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = - f;\n\t\t\tte[ 8 ] = d * e;\n\n\t\t\tte[ 1 ] = ac * f + bd;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = ad * f - bc;\n\n\t\t\tte[ 2 ] = bc * f - ad;\n\t\t\tte[ 6 ] = b * e;\n\t\t\tte[ 10 ] = bd * f + ac;\n\n\t\t}\n\n\t\t// bottom row\n\t\tte[ 3 ] = 0;\n\t\tte[ 7 ] = 0;\n\t\tte[ 11 ] = 0;\n\n\t\t// last column\n\t\tte[ 12 ] = 0;\n\t\tte[ 13 ] = 0;\n\t\tte[ 14 ] = 0;\n\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationFromQuaternion( q ) {\n\n\t\treturn this.compose( _zero, q, _one );\n\n\t}\n\n\tlookAt( eye, target, up ) {\n\n\t\tconst te = this.elements;\n\n\t\t_z.subVectors( eye, target );\n\n\t\tif ( _z.lengthSq() === 0 ) {\n\n\t\t\t// eye and target are in the same position\n\n\t\t\t_z.z = 1;\n\n\t\t}\n\n\t\t_z.normalize();\n\t\t_x.crossVectors( up, _z );\n\n\t\tif ( _x.lengthSq() === 0 ) {\n\n\t\t\t// up and z are parallel\n\n\t\t\tif ( Math.abs( up.z ) === 1 ) {\n\n\t\t\t\t_z.x += 0.0001;\n\n\t\t\t} else {\n\n\t\t\t\t_z.z += 0.0001;\n\n\t\t\t}\n\n\t\t\t_z.normalize();\n\t\t\t_x.crossVectors( up, _z );\n\n\t\t}\n\n\t\t_x.normalize();\n\t\t_y.crossVectors( _z, _x );\n\n\t\tte[ 0 ] = _x.x; te[ 4 ] = _y.x; te[ 8 ] = _z.x;\n\t\tte[ 1 ] = _x.y; te[ 5 ] = _y.y; te[ 9 ] = _z.y;\n\t\tte[ 2 ] = _x.z; te[ 6 ] = _y.z; te[ 10 ] = _z.z;\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( m, n ) {\n\n\t\tif ( n !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Matrix4: .multiply() now only accepts one argument. Use .multiplyMatrices( a, b ) instead.' );\n\t\t\treturn this.multiplyMatrices( m, n );\n\n\t\t}\n\n\t\treturn this.multiplyMatrices( this, m );\n\n\t}\n\n\tpremultiply( m ) {\n\n\t\treturn this.multiplyMatrices( m, this );\n\n\t}\n\n\tmultiplyMatrices( a, b ) {\n\n\t\tconst ae = a.elements;\n\t\tconst be = b.elements;\n\t\tconst te = this.elements;\n\n\t\tconst a11 = ae[ 0 ], a12 = ae[ 4 ], a13 = ae[ 8 ], a14 = ae[ 12 ];\n\t\tconst a21 = ae[ 1 ], a22 = ae[ 5 ], a23 = ae[ 9 ], a24 = ae[ 13 ];\n\t\tconst a31 = ae[ 2 ], a32 = ae[ 6 ], a33 = ae[ 10 ], a34 = ae[ 14 ];\n\t\tconst a41 = ae[ 3 ], a42 = ae[ 7 ], a43 = ae[ 11 ], a44 = ae[ 15 ];\n\n\t\tconst b11 = be[ 0 ], b12 = be[ 4 ], b13 = be[ 8 ], b14 = be[ 12 ];\n\t\tconst b21 = be[ 1 ], b22 = be[ 5 ], b23 = be[ 9 ], b24 = be[ 13 ];\n\t\tconst b31 = be[ 2 ], b32 = be[ 6 ], b33 = be[ 10 ], b34 = be[ 14 ];\n\t\tconst b41 = be[ 3 ], b42 = be[ 7 ], b43 = be[ 11 ], b44 = be[ 15 ];\n\n\t\tte[ 0 ] = a11 * b11 + a12 * b21 + a13 * b31 + a14 * b41;\n\t\tte[ 4 ] = a11 * b12 + a12 * b22 + a13 * b32 + a14 * b42;\n\t\tte[ 8 ] = a11 * b13 + a12 * b23 + a13 * b33 + a14 * b43;\n\t\tte[ 12 ] = a11 * b14 + a12 * b24 + a13 * b34 + a14 * b44;\n\n\t\tte[ 1 ] = a21 * b11 + a22 * b21 + a23 * b31 + a24 * b41;\n\t\tte[ 5 ] = a21 * b12 + a22 * b22 + a23 * b32 + a24 * b42;\n\t\tte[ 9 ] = a21 * b13 + a22 * b23 + a23 * b33 + a24 * b43;\n\t\tte[ 13 ] = a21 * b14 + a22 * b24 + a23 * b34 + a24 * b44;\n\n\t\tte[ 2 ] = a31 * b11 + a32 * b21 + a33 * b31 + a34 * b41;\n\t\tte[ 6 ] = a31 * b12 + a32 * b22 + a33 * b32 + a34 * b42;\n\t\tte[ 10 ] = a31 * b13 + a32 * b23 + a33 * b33 + a34 * b43;\n\t\tte[ 14 ] = a31 * b14 + a32 * b24 + a33 * b34 + a34 * b44;\n\n\t\tte[ 3 ] = a41 * b11 + a42 * b21 + a43 * b31 + a44 * b41;\n\t\tte[ 7 ] = a41 * b12 + a42 * b22 + a43 * b32 + a44 * b42;\n\t\tte[ 11 ] = a41 * b13 + a42 * b23 + a43 * b33 + a44 * b43;\n\t\tte[ 15 ] = a41 * b14 + a42 * b24 + a43 * b34 + a44 * b44;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( s ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] *= s; te[ 4 ] *= s; te[ 8 ] *= s; te[ 12 ] *= s;\n\t\tte[ 1 ] *= s; te[ 5 ] *= s; te[ 9 ] *= s; te[ 13 ] *= s;\n\t\tte[ 2 ] *= s; te[ 6 ] *= s; te[ 10 ] *= s; te[ 14 ] *= s;\n\t\tte[ 3 ] *= s; te[ 7 ] *= s; te[ 11 ] *= s; te[ 15 ] *= s;\n\n\t\treturn this;\n\n\t}\n\n\tdeterminant() {\n\n\t\tconst te = this.elements;\n\n\t\tconst n11 = te[ 0 ], n12 = te[ 4 ], n13 = te[ 8 ], n14 = te[ 12 ];\n\t\tconst n21 = te[ 1 ], n22 = te[ 5 ], n23 = te[ 9 ], n24 = te[ 13 ];\n\t\tconst n31 = te[ 2 ], n32 = te[ 6 ], n33 = te[ 10 ], n34 = te[ 14 ];\n\t\tconst n41 = te[ 3 ], n42 = te[ 7 ], n43 = te[ 11 ], n44 = te[ 15 ];\n\n\t\t//TODO: make this more efficient\n\t\t//( based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm )\n\n\t\treturn (\n\t\t\tn41 * (\n\t\t\t\t+ n14 * n23 * n32\n\t\t\t\t - n13 * n24 * n32\n\t\t\t\t - n14 * n22 * n33\n\t\t\t\t + n12 * n24 * n33\n\t\t\t\t + n13 * n22 * n34\n\t\t\t\t - n12 * n23 * n34\n\t\t\t) +\n\t\t\tn42 * (\n\t\t\t\t+ n11 * n23 * n34\n\t\t\t\t - n11 * n24 * n33\n\t\t\t\t + n14 * n21 * n33\n\t\t\t\t - n13 * n21 * n34\n\t\t\t\t + n13 * n24 * n31\n\t\t\t\t - n14 * n23 * n31\n\t\t\t) +\n\t\t\tn43 * (\n\t\t\t\t+ n11 * n24 * n32\n\t\t\t\t - n11 * n22 * n34\n\t\t\t\t - n14 * n21 * n32\n\t\t\t\t + n12 * n21 * n34\n\t\t\t\t + n14 * n22 * n31\n\t\t\t\t - n12 * n24 * n31\n\t\t\t) +\n\t\t\tn44 * (\n\t\t\t\t- n13 * n22 * n31\n\t\t\t\t - n11 * n23 * n32\n\t\t\t\t + n11 * n22 * n33\n\t\t\t\t + n13 * n21 * n32\n\t\t\t\t - n12 * n21 * n33\n\t\t\t\t + n12 * n23 * n31\n\t\t\t)\n\n\t\t);\n\n\t}\n\n\ttranspose() {\n\n\t\tconst te = this.elements;\n\t\tlet tmp;\n\n\t\ttmp = te[ 1 ]; te[ 1 ] = te[ 4 ]; te[ 4 ] = tmp;\n\t\ttmp = te[ 2 ]; te[ 2 ] = te[ 8 ]; te[ 8 ] = tmp;\n\t\ttmp = te[ 6 ]; te[ 6 ] = te[ 9 ]; te[ 9 ] = tmp;\n\n\t\ttmp = te[ 3 ]; te[ 3 ] = te[ 12 ]; te[ 12 ] = tmp;\n\t\ttmp = te[ 7 ]; te[ 7 ] = te[ 13 ]; te[ 13 ] = tmp;\n\t\ttmp = te[ 11 ]; te[ 11 ] = te[ 14 ]; te[ 14 ] = tmp;\n\n\t\treturn this;\n\n\t}\n\n\tsetPosition( x, y, z ) {\n\n\t\tconst te = this.elements;\n\n\t\tif ( x.isVector3 ) {\n\n\t\t\tte[ 12 ] = x.x;\n\t\t\tte[ 13 ] = x.y;\n\t\t\tte[ 14 ] = x.z;\n\n\t\t} else {\n\n\t\t\tte[ 12 ] = x;\n\t\t\tte[ 13 ] = y;\n\t\t\tte[ 14 ] = z;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetInverse( m, throwOnDegenerate ) {\n\n\t\tif ( throwOnDegenerate !== undefined ) {\n\n\t\t\tconsole.warn( \"THREE.Matrix4: .getInverse() can no longer be configured to throw on degenerate.\" );\n\n\t\t}\n\n\t\t// based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm\n\t\tconst te = this.elements,\n\t\t\tme = m.elements,\n\n\t\t\tn11 = me[ 0 ], n21 = me[ 1 ], n31 = me[ 2 ], n41 = me[ 3 ],\n\t\t\tn12 = me[ 4 ], n22 = me[ 5 ], n32 = me[ 6 ], n42 = me[ 7 ],\n\t\t\tn13 = me[ 8 ], n23 = me[ 9 ], n33 = me[ 10 ], n43 = me[ 11 ],\n\t\t\tn14 = me[ 12 ], n24 = me[ 13 ], n34 = me[ 14 ], n44 = me[ 15 ],\n\n\t\t\tt11 = n23 * n34 * n42 - n24 * n33 * n42 + n24 * n32 * n43 - n22 * n34 * n43 - n23 * n32 * n44 + n22 * n33 * n44,\n\t\t\tt12 = n14 * n33 * n42 - n13 * n34 * n42 - n14 * n32 * n43 + n12 * n34 * n43 + n13 * n32 * n44 - n12 * n33 * n44,\n\t\t\tt13 = n13 * n24 * n42 - n14 * n23 * n42 + n14 * n22 * n43 - n12 * n24 * n43 - n13 * n22 * n44 + n12 * n23 * n44,\n\t\t\tt14 = n14 * n23 * n32 - n13 * n24 * n32 - n14 * n22 * n33 + n12 * n24 * n33 + n13 * n22 * n34 - n12 * n23 * n34;\n\n\t\tconst det = n11 * t11 + n21 * t12 + n31 * t13 + n41 * t14;\n\n\t\tif ( det === 0 ) return this.set( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 );\n\n\t\tconst detInv = 1 / det;\n\n\t\tte[ 0 ] = t11 * detInv;\n\t\tte[ 1 ] = ( n24 * n33 * n41 - n23 * n34 * n41 - n24 * n31 * n43 + n21 * n34 * n43 + n23 * n31 * n44 - n21 * n33 * n44 ) * detInv;\n\t\tte[ 2 ] = ( n22 * n34 * n41 - n24 * n32 * n41 + n24 * n31 * n42 - n21 * n34 * n42 - n22 * n31 * n44 + n21 * n32 * n44 ) * detInv;\n\t\tte[ 3 ] = ( n23 * n32 * n41 - n22 * n33 * n41 - n23 * n31 * n42 + n21 * n33 * n42 + n22 * n31 * n43 - n21 * n32 * n43 ) * detInv;\n\n\t\tte[ 4 ] = t12 * detInv;\n\t\tte[ 5 ] = ( n13 * n34 * n41 - n14 * n33 * n41 + n14 * n31 * n43 - n11 * n34 * n43 - n13 * n31 * n44 + n11 * n33 * n44 ) * detInv;\n\t\tte[ 6 ] = ( n14 * n32 * n41 - n12 * n34 * n41 - n14 * n31 * n42 + n11 * n34 * n42 + n12 * n31 * n44 - n11 * n32 * n44 ) * detInv;\n\t\tte[ 7 ] = ( n12 * n33 * n41 - n13 * n32 * n41 + n13 * n31 * n42 - n11 * n33 * n42 - n12 * n31 * n43 + n11 * n32 * n43 ) * detInv;\n\n\t\tte[ 8 ] = t13 * detInv;\n\t\tte[ 9 ] = ( n14 * n23 * n41 - n13 * n24 * n41 - n14 * n21 * n43 + n11 * n24 * n43 + n13 * n21 * n44 - n11 * n23 * n44 ) * detInv;\n\t\tte[ 10 ] = ( n12 * n24 * n41 - n14 * n22 * n41 + n14 * n21 * n42 - n11 * n24 * n42 - n12 * n21 * n44 + n11 * n22 * n44 ) * detInv;\n\t\tte[ 11 ] = ( n13 * n22 * n41 - n12 * n23 * n41 - n13 * n21 * n42 + n11 * n23 * n42 + n12 * n21 * n43 - n11 * n22 * n43 ) * detInv;\n\n\t\tte[ 12 ] = t14 * detInv;\n\t\tte[ 13 ] = ( n13 * n24 * n31 - n14 * n23 * n31 + n14 * n21 * n33 - n11 * n24 * n33 - n13 * n21 * n34 + n11 * n23 * n34 ) * detInv;\n\t\tte[ 14 ] = ( n14 * n22 * n31 - n12 * n24 * n31 - n14 * n21 * n32 + n11 * n24 * n32 + n12 * n21 * n34 - n11 * n22 * n34 ) * detInv;\n\t\tte[ 15 ] = ( n12 * n23 * n31 - n13 * n22 * n31 + n13 * n21 * n32 - n11 * n23 * n32 - n12 * n21 * n33 + n11 * n22 * n33 ) * detInv;\n\n\t\treturn this;\n\n\t}\n\n\tscale( v ) {\n\n\t\tconst te = this.elements;\n\t\tconst x = v.x, y = v.y, z = v.z;\n\n\t\tte[ 0 ] *= x; te[ 4 ] *= y; te[ 8 ] *= z;\n\t\tte[ 1 ] *= x; te[ 5 ] *= y; te[ 9 ] *= z;\n\t\tte[ 2 ] *= x; te[ 6 ] *= y; te[ 10 ] *= z;\n\t\tte[ 3 ] *= x; te[ 7 ] *= y; te[ 11 ] *= z;\n\n\t\treturn this;\n\n\t}\n\n\tgetMaxScaleOnAxis() {\n\n\t\tconst te = this.elements;\n\n\t\tconst scaleXSq = te[ 0 ] * te[ 0 ] + te[ 1 ] * te[ 1 ] + te[ 2 ] * te[ 2 ];\n\t\tconst scaleYSq = te[ 4 ] * te[ 4 ] + te[ 5 ] * te[ 5 ] + te[ 6 ] * te[ 6 ];\n\t\tconst scaleZSq = te[ 8 ] * te[ 8 ] + te[ 9 ] * te[ 9 ] + te[ 10 ] * te[ 10 ];\n\n\t\treturn Math.sqrt( Math.max( scaleXSq, scaleYSq, scaleZSq ) );\n\n\t}\n\n\tmakeTranslation( x, y, z ) {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, x,\n\t\t\t0, 1, 0, y,\n\t\t\t0, 0, 1, z,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationX( theta ) {\n\n\t\tconst c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, 0,\n\t\t\t0, c, - s, 0,\n\t\t\t0, s, c, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationY( theta ) {\n\n\t\tconst c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\t c, 0, s, 0,\n\t\t\t 0, 1, 0, 0,\n\t\t\t- s, 0, c, 0,\n\t\t\t 0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationZ( theta ) {\n\n\t\tconst c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\tc, - s, 0, 0,\n\t\t\ts, c, 0, 0,\n\t\t\t0, 0, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationAxis( axis, angle ) {\n\n\t\t// Based on http://www.gamedev.net/reference/articles/article1199.asp\n\n\t\tconst c = Math.cos( angle );\n\t\tconst s = Math.sin( angle );\n\t\tconst t = 1 - c;\n\t\tconst x = axis.x, y = axis.y, z = axis.z;\n\t\tconst tx = t * x, ty = t * y;\n\n\t\tthis.set(\n\n\t\t\ttx * x + c, tx * y - s * z, tx * z + s * y, 0,\n\t\t\ttx * y + s * z, ty * y + c, ty * z - s * x, 0,\n\t\t\ttx * z - s * y, ty * z + s * x, t * z * z + c, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeScale( x, y, z ) {\n\n\t\tthis.set(\n\n\t\t\tx, 0, 0, 0,\n\t\t\t0, y, 0, 0,\n\t\t\t0, 0, z, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeShear( x, y, z ) {\n\n\t\tthis.set(\n\n\t\t\t1, y, z, 0,\n\t\t\tx, 1, z, 0,\n\t\t\tx, y, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tcompose( position, quaternion, scale ) {\n\n\t\tconst te = this.elements;\n\n\t\tconst x = quaternion._x, y = quaternion._y, z = quaternion._z, w = quaternion._w;\n\t\tconst x2 = x + x,\ty2 = y + y, z2 = z + z;\n\t\tconst xx = x * x2, xy = x * y2, xz = x * z2;\n\t\tconst yy = y * y2, yz = y * z2, zz = z * z2;\n\t\tconst wx = w * x2, wy = w * y2, wz = w * z2;\n\n\t\tconst sx = scale.x, sy = scale.y, sz = scale.z;\n\n\t\tte[ 0 ] = ( 1 - ( yy + zz ) ) * sx;\n\t\tte[ 1 ] = ( xy + wz ) * sx;\n\t\tte[ 2 ] = ( xz - wy ) * sx;\n\t\tte[ 3 ] = 0;\n\n\t\tte[ 4 ] = ( xy - wz ) * sy;\n\t\tte[ 5 ] = ( 1 - ( xx + zz ) ) * sy;\n\t\tte[ 6 ] = ( yz + wx ) * sy;\n\t\tte[ 7 ] = 0;\n\n\t\tte[ 8 ] = ( xz + wy ) * sz;\n\t\tte[ 9 ] = ( yz - wx ) * sz;\n\t\tte[ 10 ] = ( 1 - ( xx + yy ) ) * sz;\n\t\tte[ 11 ] = 0;\n\n\t\tte[ 12 ] = position.x;\n\t\tte[ 13 ] = position.y;\n\t\tte[ 14 ] = position.z;\n\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t}\n\n\tdecompose( position, quaternion, scale ) {\n\n\t\tconst te = this.elements;\n\n\t\tlet sx = _v1$1.set( te[ 0 ], te[ 1 ], te[ 2 ] ).length();\n\t\tconst sy = _v1$1.set( te[ 4 ], te[ 5 ], te[ 6 ] ).length();\n\t\tconst sz = _v1$1.set( te[ 8 ], te[ 9 ], te[ 10 ] ).length();\n\n\t\t// if determine is negative, we need to invert one scale\n\t\tconst det = this.determinant();\n\t\tif ( det < 0 ) sx = - sx;\n\n\t\tposition.x = te[ 12 ];\n\t\tposition.y = te[ 13 ];\n\t\tposition.z = te[ 14 ];\n\n\t\t// scale the rotation part\n\t\t_m1.copy( this );\n\n\t\tconst invSX = 1 / sx;\n\t\tconst invSY = 1 / sy;\n\t\tconst invSZ = 1 / sz;\n\n\t\t_m1.elements[ 0 ] *= invSX;\n\t\t_m1.elements[ 1 ] *= invSX;\n\t\t_m1.elements[ 2 ] *= invSX;\n\n\t\t_m1.elements[ 4 ] *= invSY;\n\t\t_m1.elements[ 5 ] *= invSY;\n\t\t_m1.elements[ 6 ] *= invSY;\n\n\t\t_m1.elements[ 8 ] *= invSZ;\n\t\t_m1.elements[ 9 ] *= invSZ;\n\t\t_m1.elements[ 10 ] *= invSZ;\n\n\t\tquaternion.setFromRotationMatrix( _m1 );\n\n\t\tscale.x = sx;\n\t\tscale.y = sy;\n\t\tscale.z = sz;\n\n\t\treturn this;\n\n\t}\n\n\tmakePerspective( left, right, top, bottom, near, far ) {\n\n\t\tif ( far === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Matrix4: .makePerspective() has been redefined and has a new signature. Please check the docs.' );\n\n\t\t}\n\n\t\tconst te = this.elements;\n\t\tconst x = 2 * near / ( right - left );\n\t\tconst y = 2 * near / ( top - bottom );\n\n\t\tconst a = ( right + left ) / ( right - left );\n\t\tconst b = ( top + bottom ) / ( top - bottom );\n\t\tconst c = - ( far + near ) / ( far - near );\n\t\tconst d = - 2 * far * near / ( far - near );\n\n\t\tte[ 0 ] = x;\tte[ 4 ] = 0;\tte[ 8 ] = a;\tte[ 12 ] = 0;\n\t\tte[ 1 ] = 0;\tte[ 5 ] = y;\tte[ 9 ] = b;\tte[ 13 ] = 0;\n\t\tte[ 2 ] = 0;\tte[ 6 ] = 0;\tte[ 10 ] = c;\tte[ 14 ] = d;\n\t\tte[ 3 ] = 0;\tte[ 7 ] = 0;\tte[ 11 ] = - 1;\tte[ 15 ] = 0;\n\n\t\treturn this;\n\n\t}\n\n\tmakeOrthographic( left, right, top, bottom, near, far ) {\n\n\t\tconst te = this.elements;\n\t\tconst w = 1.0 / ( right - left );\n\t\tconst h = 1.0 / ( top - bottom );\n\t\tconst p = 1.0 / ( far - near );\n\n\t\tconst x = ( right + left ) * w;\n\t\tconst y = ( top + bottom ) * h;\n\t\tconst z = ( far + near ) * p;\n\n\t\tte[ 0 ] = 2 * w;\tte[ 4 ] = 0;\tte[ 8 ] = 0;\tte[ 12 ] = - x;\n\t\tte[ 1 ] = 0;\tte[ 5 ] = 2 * h;\tte[ 9 ] = 0;\tte[ 13 ] = - y;\n\t\tte[ 2 ] = 0;\tte[ 6 ] = 0;\tte[ 10 ] = - 2 * p;\tte[ 14 ] = - z;\n\t\tte[ 3 ] = 0;\tte[ 7 ] = 0;\tte[ 11 ] = 0;\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t}\n\n\tequals( matrix ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = matrix.elements;\n\n\t\tfor ( let i = 0; i < 16; i ++ ) {\n\n\t\t\tif ( te[ i ] !== me[ i ] ) return false;\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tfromArray( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tfor ( let i = 0; i < 16; i ++ ) {\n\n\t\t\tthis.elements[ i ] = array[ i + offset ];\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tconst te = this.elements;\n\n\t\tarray[ offset ] = te[ 0 ];\n\t\tarray[ offset + 1 ] = te[ 1 ];\n\t\tarray[ offset + 2 ] = te[ 2 ];\n\t\tarray[ offset + 3 ] = te[ 3 ];\n\n\t\tarray[ offset + 4 ] = te[ 4 ];\n\t\tarray[ offset + 5 ] = te[ 5 ];\n\t\tarray[ offset + 6 ] = te[ 6 ];\n\t\tarray[ offset + 7 ] = te[ 7 ];\n\n\t\tarray[ offset + 8 ] = te[ 8 ];\n\t\tarray[ offset + 9 ] = te[ 9 ];\n\t\tarray[ offset + 10 ] = te[ 10 ];\n\t\tarray[ offset + 11 ] = te[ 11 ];\n\n\t\tarray[ offset + 12 ] = te[ 12 ];\n\t\tarray[ offset + 13 ] = te[ 13 ];\n\t\tarray[ offset + 14 ] = te[ 14 ];\n\t\tarray[ offset + 15 ] = te[ 15 ];\n\n\t\treturn array;\n\n\t}\n\n}\n\nconst _v1$1 = new Vector3();\nconst _m1 = new Matrix4();\nconst _zero = new Vector3( 0, 0, 0 );\nconst _one = new Vector3( 1, 1, 1 );\nconst _x = new Vector3();\nconst _y = new Vector3();\nconst _z = new Vector3();\n\nclass Euler {\n\n\tconstructor( x = 0, y = 0, z = 0, order = Euler.DefaultOrder ) {\n\n\t\tObject.defineProperty( this, 'isEuler', { value: true } );\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._order = order;\n\n\t}\n\n\tget x() {\n\n\t\treturn this._x;\n\n\t}\n\n\tset x( value ) {\n\n\t\tthis._x = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget y() {\n\n\t\treturn this._y;\n\n\t}\n\n\tset y( value ) {\n\n\t\tthis._y = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget z() {\n\n\t\treturn this._z;\n\n\t}\n\n\tset z( value ) {\n\n\t\tthis._z = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget order() {\n\n\t\treturn this._order;\n\n\t}\n\n\tset order( value ) {\n\n\t\tthis._order = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tset( x, y, z, order ) {\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._order = order || this._order;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this._x, this._y, this._z, this._order );\n\n\t}\n\n\tcopy( euler ) {\n\n\t\tthis._x = euler._x;\n\t\tthis._y = euler._y;\n\t\tthis._z = euler._z;\n\t\tthis._order = euler._order;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromRotationMatrix( m, order, update ) {\n\n\t\tconst clamp = MathUtils.clamp;\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tconst te = m.elements;\n\t\tconst m11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ];\n\t\tconst m21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ];\n\t\tconst m31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ];\n\n\t\torder = order || this._order;\n\n\t\tswitch ( order ) {\n\n\t\t\tcase 'XYZ':\n\n\t\t\t\tthis._y = Math.asin( clamp( m13, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m13 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( - m23, m33 );\n\t\t\t\t\tthis._z = Math.atan2( - m12, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = Math.atan2( m32, m22 );\n\t\t\t\t\tthis._z = 0;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'YXZ':\n\n\t\t\t\tthis._x = Math.asin( - clamp( m23, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m23 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._y = Math.atan2( m13, m33 );\n\t\t\t\t\tthis._z = Math.atan2( m21, m22 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._y = Math.atan2( - m31, m11 );\n\t\t\t\t\tthis._z = 0;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZXY':\n\n\t\t\t\tthis._x = Math.asin( clamp( m32, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m32 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._y = Math.atan2( - m31, m33 );\n\t\t\t\t\tthis._z = Math.atan2( - m12, m22 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._y = 0;\n\t\t\t\t\tthis._z = Math.atan2( m21, m11 );\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZYX':\n\n\t\t\t\tthis._y = Math.asin( - clamp( m31, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m31 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( m32, m33 );\n\t\t\t\t\tthis._z = Math.atan2( m21, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = 0;\n\t\t\t\t\tthis._z = Math.atan2( - m12, m22 );\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'YZX':\n\n\t\t\t\tthis._z = Math.asin( clamp( m21, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m21 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( - m23, m22 );\n\t\t\t\t\tthis._y = Math.atan2( - m31, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = 0;\n\t\t\t\t\tthis._y = Math.atan2( m13, m33 );\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'XZY':\n\n\t\t\t\tthis._z = Math.asin( - clamp( m12, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m12 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( m32, m22 );\n\t\t\t\t\tthis._y = Math.atan2( m13, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = Math.atan2( - m23, m33 );\n\t\t\t\t\tthis._y = 0;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\n\t\t\t\tconsole.warn( 'THREE.Euler: .setFromRotationMatrix() encountered an unknown order: ' + order );\n\n\t\t}\n\n\t\tthis._order = order;\n\n\t\tif ( update !== false ) this._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromQuaternion( q, order, update ) {\n\n\t\t_matrix.makeRotationFromQuaternion( q );\n\n\t\treturn this.setFromRotationMatrix( _matrix, order, update );\n\n\t}\n\n\tsetFromVector3( v, order ) {\n\n\t\treturn this.set( v.x, v.y, v.z, order || this._order );\n\n\t}\n\n\treorder( newOrder ) {\n\n\t\t// WARNING: this discards revolution information -bhouston\n\n\t\t_quaternion$1.setFromEuler( this );\n\n\t\treturn this.setFromQuaternion( _quaternion$1, newOrder );\n\n\t}\n\n\tequals( euler ) {\n\n\t\treturn ( euler._x === this._x ) && ( euler._y === this._y ) && ( euler._z === this._z ) && ( euler._order === this._order );\n\n\t}\n\n\tfromArray( array ) {\n\n\t\tthis._x = array[ 0 ];\n\t\tthis._y = array[ 1 ];\n\t\tthis._z = array[ 2 ];\n\t\tif ( array[ 3 ] !== undefined ) this._order = array[ 3 ];\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this._x;\n\t\tarray[ offset + 1 ] = this._y;\n\t\tarray[ offset + 2 ] = this._z;\n\t\tarray[ offset + 3 ] = this._order;\n\n\t\treturn array;\n\n\t}\n\n\ttoVector3( optionalResult ) {\n\n\t\tif ( optionalResult ) {\n\n\t\t\treturn optionalResult.set( this._x, this._y, this._z );\n\n\t\t} else {\n\n\t\t\treturn new Vector3( this._x, this._y, this._z );\n\n\t\t}\n\n\t}\n\n\t_onChange( callback ) {\n\n\t\tthis._onChangeCallback = callback;\n\n\t\treturn this;\n\n\t}\n\n\t_onChangeCallback() {}\n\n}\n\nEuler.DefaultOrder = 'XYZ';\nEuler.RotationOrders = [ 'XYZ', 'YZX', 'ZXY', 'XZY', 'YXZ', 'ZYX' ];\n\nconst _matrix = new Matrix4();\nconst _quaternion$1 = new Quaternion();\n\nclass Layers {\n\n\tconstructor() {\n\n\t\tthis.mask = 1 | 0;\n\n\t}\n\n\tset( channel ) {\n\n\t\tthis.mask = 1 << channel | 0;\n\n\t}\n\n\tenable( channel ) {\n\n\t\tthis.mask |= 1 << channel | 0;\n\n\t}\n\n\tenableAll() {\n\n\t\tthis.mask = 0xffffffff | 0;\n\n\t}\n\n\ttoggle( channel ) {\n\n\t\tthis.mask ^= 1 << channel | 0;\n\n\t}\n\n\tdisable( channel ) {\n\n\t\tthis.mask &= ~ ( 1 << channel | 0 );\n\n\t}\n\n\tdisableAll() {\n\n\t\tthis.mask = 0;\n\n\t}\n\n\ttest( layers ) {\n\n\t\treturn ( this.mask & layers.mask ) !== 0;\n\n\t}\n\n}\n\nlet _object3DId = 0;\n\nconst _v1$2 = new Vector3();\nconst _q1 = new Quaternion();\nconst _m1$1 = new Matrix4();\nconst _target = new Vector3();\n\nconst _position = new Vector3();\nconst _scale = new Vector3();\nconst _quaternion$2 = new Quaternion();\n\nconst _xAxis = new Vector3( 1, 0, 0 );\nconst _yAxis = new Vector3( 0, 1, 0 );\nconst _zAxis = new Vector3( 0, 0, 1 );\n\nconst _addedEvent = { type: 'added' };\nconst _removedEvent = { type: 'removed' };\n\nfunction Object3D() {\n\n\tObject.defineProperty( this, 'id', { value: _object3DId ++ } );\n\n\tthis.uuid = MathUtils.generateUUID();\n\n\tthis.name = '';\n\tthis.type = 'Object3D';\n\n\tthis.parent = null;\n\tthis.children = [];\n\n\tthis.up = Object3D.DefaultUp.clone();\n\n\tconst position = new Vector3();\n\tconst rotation = new Euler();\n\tconst quaternion = new Quaternion();\n\tconst scale = new Vector3( 1, 1, 1 );\n\n\tfunction onRotationChange() {\n\n\t\tquaternion.setFromEuler( rotation, false );\n\n\t}\n\n\tfunction onQuaternionChange() {\n\n\t\trotation.setFromQuaternion( quaternion, undefined, false );\n\n\t}\n\n\trotation._onChange( onRotationChange );\n\tquaternion._onChange( onQuaternionChange );\n\n\tObject.defineProperties( this, {\n\t\tposition: {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: true,\n\t\t\tvalue: position\n\t\t},\n\t\trotation: {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: true,\n\t\t\tvalue: rotation\n\t\t},\n\t\tquaternion: {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: true,\n\t\t\tvalue: quaternion\n\t\t},\n\t\tscale: {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: true,\n\t\t\tvalue: scale\n\t\t},\n\t\tmodelViewMatrix: {\n\t\t\tvalue: new Matrix4()\n\t\t},\n\t\tnormalMatrix: {\n\t\t\tvalue: new Matrix3()\n\t\t}\n\t} );\n\n\tthis.matrix = new Matrix4();\n\tthis.matrixWorld = new Matrix4();\n\n\tthis.matrixAutoUpdate = Object3D.DefaultMatrixAutoUpdate;\n\tthis.matrixWorldNeedsUpdate = false;\n\n\tthis.layers = new Layers();\n\tthis.visible = true;\n\n\tthis.castShadow = false;\n\tthis.receiveShadow = false;\n\n\tthis.frustumCulled = true;\n\tthis.renderOrder = 0;\n\n\tthis.userData = {};\n\n}\n\nObject3D.DefaultUp = new Vector3( 0, 1, 0 );\nObject3D.DefaultMatrixAutoUpdate = true;\n\nObject3D.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: Object3D,\n\n\tisObject3D: true,\n\n\tonBeforeRender: function () {},\n\tonAfterRender: function () {},\n\n\tapplyMatrix4: function ( matrix ) {\n\n\t\tif ( this.matrixAutoUpdate ) this.updateMatrix();\n\n\t\tthis.matrix.premultiply( matrix );\n\n\t\tthis.matrix.decompose( this.position, this.quaternion, this.scale );\n\n\t},\n\n\tapplyQuaternion: function ( q ) {\n\n\t\tthis.quaternion.premultiply( q );\n\n\t\treturn this;\n\n\t},\n\n\tsetRotationFromAxisAngle: function ( axis, angle ) {\n\n\t\t// assumes axis is normalized\n\n\t\tthis.quaternion.setFromAxisAngle( axis, angle );\n\n\t},\n\n\tsetRotationFromEuler: function ( euler ) {\n\n\t\tthis.quaternion.setFromEuler( euler, true );\n\n\t},\n\n\tsetRotationFromMatrix: function ( m ) {\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tthis.quaternion.setFromRotationMatrix( m );\n\n\t},\n\n\tsetRotationFromQuaternion: function ( q ) {\n\n\t\t// assumes q is normalized\n\n\t\tthis.quaternion.copy( q );\n\n\t},\n\n\trotateOnAxis: function ( axis, angle ) {\n\n\t\t// rotate object on axis in object space\n\t\t// axis is assumed to be normalized\n\n\t\t_q1.setFromAxisAngle( axis, angle );\n\n\t\tthis.quaternion.multiply( _q1 );\n\n\t\treturn this;\n\n\t},\n\n\trotateOnWorldAxis: function ( axis, angle ) {\n\n\t\t// rotate object on axis in world space\n\t\t// axis is assumed to be normalized\n\t\t// method assumes no rotated parent\n\n\t\t_q1.setFromAxisAngle( axis, angle );\n\n\t\tthis.quaternion.premultiply( _q1 );\n\n\t\treturn this;\n\n\t},\n\n\trotateX: function ( angle ) {\n\n\t\treturn this.rotateOnAxis( _xAxis, angle );\n\n\t},\n\n\trotateY: function ( angle ) {\n\n\t\treturn this.rotateOnAxis( _yAxis, angle );\n\n\t},\n\n\trotateZ: function ( angle ) {\n\n\t\treturn this.rotateOnAxis( _zAxis, angle );\n\n\t},\n\n\ttranslateOnAxis: function ( axis, distance ) {\n\n\t\t// translate object by distance along axis in object space\n\t\t// axis is assumed to be normalized\n\n\t\t_v1$2.copy( axis ).applyQuaternion( this.quaternion );\n\n\t\tthis.position.add( _v1$2.multiplyScalar( distance ) );\n\n\t\treturn this;\n\n\t},\n\n\ttranslateX: function ( distance ) {\n\n\t\treturn this.translateOnAxis( _xAxis, distance );\n\n\t},\n\n\ttranslateY: function ( distance ) {\n\n\t\treturn this.translateOnAxis( _yAxis, distance );\n\n\t},\n\n\ttranslateZ: function ( distance ) {\n\n\t\treturn this.translateOnAxis( _zAxis, distance );\n\n\t},\n\n\tlocalToWorld: function ( vector ) {\n\n\t\treturn vector.applyMatrix4( this.matrixWorld );\n\n\t},\n\n\tworldToLocal: function ( vector ) {\n\n\t\treturn vector.applyMatrix4( _m1$1.getInverse( this.matrixWorld ) );\n\n\t},\n\n\tlookAt: function ( x, y, z ) {\n\n\t\t// This method does not support objects having non-uniformly-scaled parent(s)\n\n\t\tif ( x.isVector3 ) {\n\n\t\t\t_target.copy( x );\n\n\t\t} else {\n\n\t\t\t_target.set( x, y, z );\n\n\t\t}\n\n\t\tconst parent = this.parent;\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\t_position.setFromMatrixPosition( this.matrixWorld );\n\n\t\tif ( this.isCamera || this.isLight ) {\n\n\t\t\t_m1$1.lookAt( _position, _target, this.up );\n\n\t\t} else {\n\n\t\t\t_m1$1.lookAt( _target, _position, this.up );\n\n\t\t}\n\n\t\tthis.quaternion.setFromRotationMatrix( _m1$1 );\n\n\t\tif ( parent ) {\n\n\t\t\t_m1$1.extractRotation( parent.matrixWorld );\n\t\t\t_q1.setFromRotationMatrix( _m1$1 );\n\t\t\tthis.quaternion.premultiply( _q1.inverse() );\n\n\t\t}\n\n\t},\n\n\tadd: function ( object ) {\n\n\t\tif ( arguments.length > 1 ) {\n\n\t\t\tfor ( let i = 0; i < arguments.length; i ++ ) {\n\n\t\t\t\tthis.add( arguments[ i ] );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tif ( object === this ) {\n\n\t\t\tconsole.error( \"THREE.Object3D.add: object can't be added as a child of itself.\", object );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tif ( ( object && object.isObject3D ) ) {\n\n\t\t\tif ( object.parent !== null ) {\n\n\t\t\t\tobject.parent.remove( object );\n\n\t\t\t}\n\n\t\t\tobject.parent = this;\n\t\t\tthis.children.push( object );\n\n\t\t\tobject.dispatchEvent( _addedEvent );\n\n\t\t} else {\n\n\t\t\tconsole.error( \"THREE.Object3D.add: object not an instance of THREE.Object3D.\", object );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tremove: function ( object ) {\n\n\t\tif ( arguments.length > 1 ) {\n\n\t\t\tfor ( let i = 0; i < arguments.length; i ++ ) {\n\n\t\t\t\tthis.remove( arguments[ i ] );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst index = this.children.indexOf( object );\n\n\t\tif ( index !== - 1 ) {\n\n\t\t\tobject.parent = null;\n\t\t\tthis.children.splice( index, 1 );\n\n\t\t\tobject.dispatchEvent( _removedEvent );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tattach: function ( object ) {\n\n\t\t// adds object as a child of this, while maintaining the object's world transform\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\t_m1$1.getInverse( this.matrixWorld );\n\n\t\tif ( object.parent !== null ) {\n\n\t\t\tobject.parent.updateWorldMatrix( true, false );\n\n\t\t\t_m1$1.multiply( object.parent.matrixWorld );\n\n\t\t}\n\n\t\tobject.applyMatrix4( _m1$1 );\n\n\t\tobject.updateWorldMatrix( false, false );\n\n\t\tthis.add( object );\n\n\t\treturn this;\n\n\t},\n\n\tgetObjectById: function ( id ) {\n\n\t\treturn this.getObjectByProperty( 'id', id );\n\n\t},\n\n\tgetObjectByName: function ( name ) {\n\n\t\treturn this.getObjectByProperty( 'name', name );\n\n\t},\n\n\tgetObjectByProperty: function ( name, value ) {\n\n\t\tif ( this[ name ] === value ) return this;\n\n\t\tfor ( let i = 0, l = this.children.length; i < l; i ++ ) {\n\n\t\t\tconst child = this.children[ i ];\n\t\t\tconst object = child.getObjectByProperty( name, value );\n\n\t\t\tif ( object !== undefined ) {\n\n\t\t\t\treturn object;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn undefined;\n\n\t},\n\n\tgetWorldPosition: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .getWorldPosition() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\tthis.updateMatrixWorld( true );\n\n\t\treturn target.setFromMatrixPosition( this.matrixWorld );\n\n\t},\n\n\tgetWorldQuaternion: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .getWorldQuaternion() target is now required' );\n\t\t\ttarget = new Quaternion();\n\n\t\t}\n\n\t\tthis.updateMatrixWorld( true );\n\n\t\tthis.matrixWorld.decompose( _position, target, _scale );\n\n\t\treturn target;\n\n\t},\n\n\tgetWorldScale: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .getWorldScale() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\tthis.updateMatrixWorld( true );\n\n\t\tthis.matrixWorld.decompose( _position, _quaternion$2, target );\n\n\t\treturn target;\n\n\t},\n\n\tgetWorldDirection: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .getWorldDirection() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\tthis.updateMatrixWorld( true );\n\n\t\tconst e = this.matrixWorld.elements;\n\n\t\treturn target.set( e[ 8 ], e[ 9 ], e[ 10 ] ).normalize();\n\n\t},\n\n\traycast: function () {},\n\n\ttraverse: function ( callback ) {\n\n\t\tcallback( this );\n\n\t\tconst children = this.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].traverse( callback );\n\n\t\t}\n\n\t},\n\n\ttraverseVisible: function ( callback ) {\n\n\t\tif ( this.visible === false ) return;\n\n\t\tcallback( this );\n\n\t\tconst children = this.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].traverseVisible( callback );\n\n\t\t}\n\n\t},\n\n\ttraverseAncestors: function ( callback ) {\n\n\t\tconst parent = this.parent;\n\n\t\tif ( parent !== null ) {\n\n\t\t\tcallback( parent );\n\n\t\t\tparent.traverseAncestors( callback );\n\n\t\t}\n\n\t},\n\n\tupdateMatrix: function () {\n\n\t\tthis.matrix.compose( this.position, this.quaternion, this.scale );\n\n\t\tthis.matrixWorldNeedsUpdate = true;\n\n\t},\n\n\tupdateMatrixWorld: function ( force ) {\n\n\t\tif ( this.matrixAutoUpdate ) this.updateMatrix();\n\n\t\tif ( this.matrixWorldNeedsUpdate || force ) {\n\n\t\t\tif ( this.parent === null ) {\n\n\t\t\t\tthis.matrixWorld.copy( this.matrix );\n\n\t\t\t} else {\n\n\t\t\t\tthis.matrixWorld.multiplyMatrices( this.parent.matrixWorld, this.matrix );\n\n\t\t\t}\n\n\t\t\tthis.matrixWorldNeedsUpdate = false;\n\n\t\t\tforce = true;\n\n\t\t}\n\n\t\t// update children\n\n\t\tconst children = this.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].updateMatrixWorld( force );\n\n\t\t}\n\n\t},\n\n\tupdateWorldMatrix: function ( updateParents, updateChildren ) {\n\n\t\tconst parent = this.parent;\n\n\t\tif ( updateParents === true && parent !== null ) {\n\n\t\t\tparent.updateWorldMatrix( true, false );\n\n\t\t}\n\n\t\tif ( this.matrixAutoUpdate ) this.updateMatrix();\n\n\t\tif ( this.parent === null ) {\n\n\t\t\tthis.matrixWorld.copy( this.matrix );\n\n\t\t} else {\n\n\t\t\tthis.matrixWorld.multiplyMatrices( this.parent.matrixWorld, this.matrix );\n\n\t\t}\n\n\t\t// update children\n\n\t\tif ( updateChildren === true ) {\n\n\t\t\tconst children = this.children;\n\n\t\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\t\tchildren[ i ].updateWorldMatrix( false, true );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\t// meta is a string when called from JSON.stringify\n\t\tconst isRootObject = ( meta === undefined || typeof meta === 'string' );\n\n\t\tconst output = {};\n\n\t\t// meta is a hash used to collect geometries, materials.\n\t\t// not providing it implies that this is the root object\n\t\t// being serialized.\n\t\tif ( isRootObject ) {\n\n\t\t\t// initialize meta obj\n\t\t\tmeta = {\n\t\t\t\tgeometries: {},\n\t\t\t\tmaterials: {},\n\t\t\t\ttextures: {},\n\t\t\t\timages: {},\n\t\t\t\tshapes: {}\n\t\t\t};\n\n\t\t\toutput.metadata = {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Object',\n\t\t\t\tgenerator: 'Object3D.toJSON'\n\t\t\t};\n\n\t\t}\n\n\t\t// standard Object3D serialization\n\n\t\tconst object = {};\n\n\t\tobject.uuid = this.uuid;\n\t\tobject.type = this.type;\n\n\t\tif ( this.name !== '' ) object.name = this.name;\n\t\tif ( this.castShadow === true ) object.castShadow = true;\n\t\tif ( this.receiveShadow === true ) object.receiveShadow = true;\n\t\tif ( this.visible === false ) object.visible = false;\n\t\tif ( this.frustumCulled === false ) object.frustumCulled = false;\n\t\tif ( this.renderOrder !== 0 ) object.renderOrder = this.renderOrder;\n\t\tif ( JSON.stringify( this.userData ) !== '{}' ) object.userData = this.userData;\n\n\t\tobject.layers = this.layers.mask;\n\t\tobject.matrix = this.matrix.toArray();\n\n\t\tif ( this.matrixAutoUpdate === false ) object.matrixAutoUpdate = false;\n\n\t\t// object specific properties\n\n\t\tif ( this.isInstancedMesh ) {\n\n\t\t\tobject.type = 'InstancedMesh';\n\t\t\tobject.count = this.count;\n\t\t\tobject.instanceMatrix = this.instanceMatrix.toJSON();\n\n\t\t}\n\n\t\t//\n\n\t\tfunction serialize( library, element ) {\n\n\t\t\tif ( library[ element.uuid ] === undefined ) {\n\n\t\t\t\tlibrary[ element.uuid ] = element.toJSON( meta );\n\n\t\t\t}\n\n\t\t\treturn element.uuid;\n\n\t\t}\n\n\t\tif ( this.isMesh || this.isLine || this.isPoints ) {\n\n\t\t\tobject.geometry = serialize( meta.geometries, this.geometry );\n\n\t\t\tconst parameters = this.geometry.parameters;\n\n\t\t\tif ( parameters !== undefined && parameters.shapes !== undefined ) {\n\n\t\t\t\tconst shapes = parameters.shapes;\n\n\t\t\t\tif ( Array.isArray( shapes ) ) {\n\n\t\t\t\t\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\t\t\t\tconst shape = shapes[ i ];\n\n\t\t\t\t\t\tserialize( meta.shapes, shape );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tserialize( meta.shapes, shapes );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.material !== undefined ) {\n\n\t\t\tif ( Array.isArray( this.material ) ) {\n\n\t\t\t\tconst uuids = [];\n\n\t\t\t\tfor ( let i = 0, l = this.material.length; i < l; i ++ ) {\n\n\t\t\t\t\tuuids.push( serialize( meta.materials, this.material[ i ] ) );\n\n\t\t\t\t}\n\n\t\t\t\tobject.material = uuids;\n\n\t\t\t} else {\n\n\t\t\t\tobject.material = serialize( meta.materials, this.material );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tif ( this.children.length > 0 ) {\n\n\t\t\tobject.children = [];\n\n\t\t\tfor ( let i = 0; i < this.children.length; i ++ ) {\n\n\t\t\t\tobject.children.push( this.children[ i ].toJSON( meta ).object );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( isRootObject ) {\n\n\t\t\tconst geometries = extractFromCache( meta.geometries );\n\t\t\tconst materials = extractFromCache( meta.materials );\n\t\t\tconst textures = extractFromCache( meta.textures );\n\t\t\tconst images = extractFromCache( meta.images );\n\t\t\tconst shapes = extractFromCache( meta.shapes );\n\n\t\t\tif ( geometries.length > 0 ) output.geometries = geometries;\n\t\t\tif ( materials.length > 0 ) output.materials = materials;\n\t\t\tif ( textures.length > 0 ) output.textures = textures;\n\t\t\tif ( images.length > 0 ) output.images = images;\n\t\t\tif ( shapes.length > 0 ) output.shapes = shapes;\n\n\t\t}\n\n\t\toutput.object = object;\n\n\t\treturn output;\n\n\t\t// extract data from the cache hash\n\t\t// remove metadata on each item\n\t\t// and return as array\n\t\tfunction extractFromCache( cache ) {\n\n\t\t\tconst values = [];\n\t\t\tfor ( const key in cache ) {\n\n\t\t\t\tconst data = cache[ key ];\n\t\t\t\tdelete data.metadata;\n\t\t\t\tvalues.push( data );\n\n\t\t\t}\n\n\t\t\treturn values;\n\n\t\t}\n\n\t},\n\n\tclone: function ( recursive ) {\n\n\t\treturn new this.constructor().copy( this, recursive );\n\n\t},\n\n\tcopy: function ( source, recursive ) {\n\n\t\tif ( recursive === undefined ) recursive = true;\n\n\t\tthis.name = source.name;\n\n\t\tthis.up.copy( source.up );\n\n\t\tthis.position.copy( source.position );\n\t\tthis.rotation.order = source.rotation.order;\n\t\tthis.quaternion.copy( source.quaternion );\n\t\tthis.scale.copy( source.scale );\n\n\t\tthis.matrix.copy( source.matrix );\n\t\tthis.matrixWorld.copy( source.matrixWorld );\n\n\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\t\tthis.matrixWorldNeedsUpdate = source.matrixWorldNeedsUpdate;\n\n\t\tthis.layers.mask = source.layers.mask;\n\t\tthis.visible = source.visible;\n\n\t\tthis.castShadow = source.castShadow;\n\t\tthis.receiveShadow = source.receiveShadow;\n\n\t\tthis.frustumCulled = source.frustumCulled;\n\t\tthis.renderOrder = source.renderOrder;\n\n\t\tthis.userData = JSON.parse( JSON.stringify( source.userData ) );\n\n\t\tif ( recursive === true ) {\n\n\t\t\tfor ( let i = 0; i < source.children.length; i ++ ) {\n\n\t\t\t\tconst child = source.children[ i ];\n\t\t\t\tthis.add( child.clone() );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\nconst _vector1 = new Vector3();\nconst _vector2 = new Vector3();\nconst _normalMatrix = new Matrix3();\n\nclass Plane {\n\n\tconstructor( normal, constant ) {\n\n\t\tObject.defineProperty( this, 'isPlane', { value: true } );\n\n\t\t// normal is assumed to be normalized\n\n\t\tthis.normal = ( normal !== undefined ) ? normal : new Vector3( 1, 0, 0 );\n\t\tthis.constant = ( constant !== undefined ) ? constant : 0;\n\n\t}\n\n\tset( normal, constant ) {\n\n\t\tthis.normal.copy( normal );\n\t\tthis.constant = constant;\n\n\t\treturn this;\n\n\t}\n\n\tsetComponents( x, y, z, w ) {\n\n\t\tthis.normal.set( x, y, z );\n\t\tthis.constant = w;\n\n\t\treturn this;\n\n\t}\n\n\tsetFromNormalAndCoplanarPoint( normal, point ) {\n\n\t\tthis.normal.copy( normal );\n\t\tthis.constant = - point.dot( this.normal );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromCoplanarPoints( a, b, c ) {\n\n\t\tconst normal = _vector1.subVectors( c, b ).cross( _vector2.subVectors( a, b ) ).normalize();\n\n\t\t// Q: should an error be thrown if normal is zero (e.g. degenerate plane)?\n\n\t\tthis.setFromNormalAndCoplanarPoint( normal, a );\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( plane ) {\n\n\t\tthis.normal.copy( plane.normal );\n\t\tthis.constant = plane.constant;\n\n\t\treturn this;\n\n\t}\n\n\tnormalize() {\n\n\t\t// Note: will lead to a divide by zero if the plane is invalid.\n\n\t\tconst inverseNormalLength = 1.0 / this.normal.length();\n\t\tthis.normal.multiplyScalar( inverseNormalLength );\n\t\tthis.constant *= inverseNormalLength;\n\n\t\treturn this;\n\n\t}\n\n\tnegate() {\n\n\t\tthis.constant *= - 1;\n\t\tthis.normal.negate();\n\n\t\treturn this;\n\n\t}\n\n\tdistanceToPoint( point ) {\n\n\t\treturn this.normal.dot( point ) + this.constant;\n\n\t}\n\n\tdistanceToSphere( sphere ) {\n\n\t\treturn this.distanceToPoint( sphere.center ) - sphere.radius;\n\n\t}\n\n\tprojectPoint( point, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Plane: .projectPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.copy( this.normal ).multiplyScalar( - this.distanceToPoint( point ) ).add( point );\n\n\t}\n\n\tintersectLine( line, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Plane: .intersectLine() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\tconst direction = line.delta( _vector1 );\n\n\t\tconst denominator = this.normal.dot( direction );\n\n\t\tif ( denominator === 0 ) {\n\n\t\t\t// line is coplanar, return origin\n\t\t\tif ( this.distanceToPoint( line.start ) === 0 ) {\n\n\t\t\t\treturn target.copy( line.start );\n\n\t\t\t}\n\n\t\t\t// Unsure if this is the correct method to handle this case.\n\t\t\treturn undefined;\n\n\t\t}\n\n\t\tconst t = - ( line.start.dot( this.normal ) + this.constant ) / denominator;\n\n\t\tif ( t < 0 || t > 1 ) {\n\n\t\t\treturn undefined;\n\n\t\t}\n\n\t\treturn target.copy( direction ).multiplyScalar( t ).add( line.start );\n\n\t}\n\n\tintersectsLine( line ) {\n\n\t\t// Note: this tests if a line intersects the plane, not whether it (or its end-points) are coplanar with it.\n\n\t\tconst startSign = this.distanceToPoint( line.start );\n\t\tconst endSign = this.distanceToPoint( line.end );\n\n\t\treturn ( startSign < 0 && endSign > 0 ) || ( endSign < 0 && startSign > 0 );\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\treturn box.intersectsPlane( this );\n\n\t}\n\n\tintersectsSphere( sphere ) {\n\n\t\treturn sphere.intersectsPlane( this );\n\n\t}\n\n\tcoplanarPoint( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Plane: .coplanarPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.copy( this.normal ).multiplyScalar( - this.constant );\n\n\t}\n\n\tapplyMatrix4( matrix, optionalNormalMatrix ) {\n\n\t\tconst normalMatrix = optionalNormalMatrix || _normalMatrix.getNormalMatrix( matrix );\n\n\t\tconst referencePoint = this.coplanarPoint( _vector1 ).applyMatrix4( matrix );\n\n\t\tconst normal = this.normal.applyMatrix3( normalMatrix ).normalize();\n\n\t\tthis.constant = - referencePoint.dot( normal );\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( offset ) {\n\n\t\tthis.constant -= offset.dot( this.normal );\n\n\t\treturn this;\n\n\t}\n\n\tequals( plane ) {\n\n\t\treturn plane.normal.equals( this.normal ) && ( plane.constant === this.constant );\n\n\t}\n\n}\n\nconst _v0$1 = new Vector3();\nconst _v1$3 = new Vector3();\nconst _v2$1 = new Vector3();\nconst _v3 = new Vector3();\n\nconst _vab = new Vector3();\nconst _vac = new Vector3();\nconst _vbc = new Vector3();\nconst _vap = new Vector3();\nconst _vbp = new Vector3();\nconst _vcp = new Vector3();\n\nclass Triangle {\n\n\tconstructor( a, b, c ) {\n\n\t\tthis.a = ( a !== undefined ) ? a : new Vector3();\n\t\tthis.b = ( b !== undefined ) ? b : new Vector3();\n\t\tthis.c = ( c !== undefined ) ? c : new Vector3();\n\n\t}\n\n\tstatic getNormal( a, b, c, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Triangle: .getNormal() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\ttarget.subVectors( c, b );\n\t\t_v0$1.subVectors( a, b );\n\t\ttarget.cross( _v0$1 );\n\n\t\tconst targetLengthSq = target.lengthSq();\n\t\tif ( targetLengthSq > 0 ) {\n\n\t\t\treturn target.multiplyScalar( 1 / Math.sqrt( targetLengthSq ) );\n\n\t\t}\n\n\t\treturn target.set( 0, 0, 0 );\n\n\t}\n\n\t// static/instance method to calculate barycentric coordinates\n\t// based on: http://www.blackpawn.com/texts/pointinpoly/default.html\n\tstatic getBarycoord( point, a, b, c, target ) {\n\n\t\t_v0$1.subVectors( c, a );\n\t\t_v1$3.subVectors( b, a );\n\t\t_v2$1.subVectors( point, a );\n\n\t\tconst dot00 = _v0$1.dot( _v0$1 );\n\t\tconst dot01 = _v0$1.dot( _v1$3 );\n\t\tconst dot02 = _v0$1.dot( _v2$1 );\n\t\tconst dot11 = _v1$3.dot( _v1$3 );\n\t\tconst dot12 = _v1$3.dot( _v2$1 );\n\n\t\tconst denom = ( dot00 * dot11 - dot01 * dot01 );\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Triangle: .getBarycoord() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\t// collinear or singular triangle\n\t\tif ( denom === 0 ) {\n\n\t\t\t// arbitrary location outside of triangle?\n\t\t\t// not sure if this is the best idea, maybe should be returning undefined\n\t\t\treturn target.set( - 2, - 1, - 1 );\n\n\t\t}\n\n\t\tconst invDenom = 1 / denom;\n\t\tconst u = ( dot11 * dot02 - dot01 * dot12 ) * invDenom;\n\t\tconst v = ( dot00 * dot12 - dot01 * dot02 ) * invDenom;\n\n\t\t// barycentric coordinates must always sum to 1\n\t\treturn target.set( 1 - u - v, v, u );\n\n\t}\n\n\tstatic containsPoint( point, a, b, c ) {\n\n\t\tthis.getBarycoord( point, a, b, c, _v3 );\n\n\t\treturn ( _v3.x >= 0 ) && ( _v3.y >= 0 ) && ( ( _v3.x + _v3.y ) <= 1 );\n\n\t}\n\n\tstatic getUV( point, p1, p2, p3, uv1, uv2, uv3, target ) {\n\n\t\tthis.getBarycoord( point, p1, p2, p3, _v3 );\n\n\t\ttarget.set( 0, 0 );\n\t\ttarget.addScaledVector( uv1, _v3.x );\n\t\ttarget.addScaledVector( uv2, _v3.y );\n\t\ttarget.addScaledVector( uv3, _v3.z );\n\n\t\treturn target;\n\n\t}\n\n\tstatic isFrontFacing( a, b, c, direction ) {\n\n\t\t_v0$1.subVectors( c, b );\n\t\t_v1$3.subVectors( a, b );\n\n\t\t// strictly front facing\n\t\treturn ( _v0$1.cross( _v1$3 ).dot( direction ) < 0 ) ? true : false;\n\n\t}\n\n\tset( a, b, c ) {\n\n\t\tthis.a.copy( a );\n\t\tthis.b.copy( b );\n\t\tthis.c.copy( c );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromPointsAndIndices( points, i0, i1, i2 ) {\n\n\t\tthis.a.copy( points[ i0 ] );\n\t\tthis.b.copy( points[ i1 ] );\n\t\tthis.c.copy( points[ i2 ] );\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( triangle ) {\n\n\t\tthis.a.copy( triangle.a );\n\t\tthis.b.copy( triangle.b );\n\t\tthis.c.copy( triangle.c );\n\n\t\treturn this;\n\n\t}\n\n\tgetArea() {\n\n\t\t_v0$1.subVectors( this.c, this.b );\n\t\t_v1$3.subVectors( this.a, this.b );\n\n\t\treturn _v0$1.cross( _v1$3 ).length() * 0.5;\n\n\t}\n\n\tgetMidpoint( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Triangle: .getMidpoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.addVectors( this.a, this.b ).add( this.c ).multiplyScalar( 1 / 3 );\n\n\t}\n\n\tgetNormal( target ) {\n\n\t\treturn Triangle.getNormal( this.a, this.b, this.c, target );\n\n\t}\n\n\tgetPlane( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Triangle: .getPlane() target is now required' );\n\t\t\ttarget = new Plane();\n\n\t\t}\n\n\t\treturn target.setFromCoplanarPoints( this.a, this.b, this.c );\n\n\t}\n\n\tgetBarycoord( point, target ) {\n\n\t\treturn Triangle.getBarycoord( point, this.a, this.b, this.c, target );\n\n\t}\n\n\tgetUV( point, uv1, uv2, uv3, target ) {\n\n\t\treturn Triangle.getUV( point, this.a, this.b, this.c, uv1, uv2, uv3, target );\n\n\t}\n\n\tcontainsPoint( point ) {\n\n\t\treturn Triangle.containsPoint( point, this.a, this.b, this.c );\n\n\t}\n\n\tisFrontFacing( direction ) {\n\n\t\treturn Triangle.isFrontFacing( this.a, this.b, this.c, direction );\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\treturn box.intersectsTriangle( this );\n\n\t}\n\n\tclosestPointToPoint( p, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Triangle: .closestPointToPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\tconst a = this.a, b = this.b, c = this.c;\n\t\tlet v, w;\n\n\t\t// algorithm thanks to Real-Time Collision Detection by Christer Ericson,\n\t\t// published by Morgan Kaufmann Publishers, (c) 2005 Elsevier Inc.,\n\t\t// under the accompanying license; see chapter 5.1.5 for detailed explanation.\n\t\t// basically, we're distinguishing which of the voronoi regions of the triangle\n\t\t// the point lies in with the minimum amount of redundant computation.\n\n\t\t_vab.subVectors( b, a );\n\t\t_vac.subVectors( c, a );\n\t\t_vap.subVectors( p, a );\n\t\tconst d1 = _vab.dot( _vap );\n\t\tconst d2 = _vac.dot( _vap );\n\t\tif ( d1 <= 0 && d2 <= 0 ) {\n\n\t\t\t// vertex region of A; barycentric coords (1, 0, 0)\n\t\t\treturn target.copy( a );\n\n\t\t}\n\n\t\t_vbp.subVectors( p, b );\n\t\tconst d3 = _vab.dot( _vbp );\n\t\tconst d4 = _vac.dot( _vbp );\n\t\tif ( d3 >= 0 && d4 <= d3 ) {\n\n\t\t\t// vertex region of B; barycentric coords (0, 1, 0)\n\t\t\treturn target.copy( b );\n\n\t\t}\n\n\t\tconst vc = d1 * d4 - d3 * d2;\n\t\tif ( vc <= 0 && d1 >= 0 && d3 <= 0 ) {\n\n\t\t\tv = d1 / ( d1 - d3 );\n\t\t\t// edge region of AB; barycentric coords (1-v, v, 0)\n\t\t\treturn target.copy( a ).addScaledVector( _vab, v );\n\n\t\t}\n\n\t\t_vcp.subVectors( p, c );\n\t\tconst d5 = _vab.dot( _vcp );\n\t\tconst d6 = _vac.dot( _vcp );\n\t\tif ( d6 >= 0 && d5 <= d6 ) {\n\n\t\t\t// vertex region of C; barycentric coords (0, 0, 1)\n\t\t\treturn target.copy( c );\n\n\t\t}\n\n\t\tconst vb = d5 * d2 - d1 * d6;\n\t\tif ( vb <= 0 && d2 >= 0 && d6 <= 0 ) {\n\n\t\t\tw = d2 / ( d2 - d6 );\n\t\t\t// edge region of AC; barycentric coords (1-w, 0, w)\n\t\t\treturn target.copy( a ).addScaledVector( _vac, w );\n\n\t\t}\n\n\t\tconst va = d3 * d6 - d5 * d4;\n\t\tif ( va <= 0 && ( d4 - d3 ) >= 0 && ( d5 - d6 ) >= 0 ) {\n\n\t\t\t_vbc.subVectors( c, b );\n\t\t\tw = ( d4 - d3 ) / ( ( d4 - d3 ) + ( d5 - d6 ) );\n\t\t\t// edge region of BC; barycentric coords (0, 1-w, w)\n\t\t\treturn target.copy( b ).addScaledVector( _vbc, w ); // edge region of BC\n\n\t\t}\n\n\t\t// face region\n\t\tconst denom = 1 / ( va + vb + vc );\n\t\t// u = va * denom\n\t\tv = vb * denom;\n\t\tw = vc * denom;\n\n\t\treturn target.copy( a ).addScaledVector( _vab, v ).addScaledVector( _vac, w );\n\n\t}\n\n\tequals( triangle ) {\n\n\t\treturn triangle.a.equals( this.a ) && triangle.b.equals( this.b ) && triangle.c.equals( this.c );\n\n\t}\n\n}\n\nconst _colorKeywords = { 'aliceblue': 0xF0F8FF, 'antiquewhite': 0xFAEBD7, 'aqua': 0x00FFFF, 'aquamarine': 0x7FFFD4, 'azure': 0xF0FFFF,\n\t'beige': 0xF5F5DC, 'bisque': 0xFFE4C4, 'black': 0x000000, 'blanchedalmond': 0xFFEBCD, 'blue': 0x0000FF, 'blueviolet': 0x8A2BE2,\n\t'brown': 0xA52A2A, 'burlywood': 0xDEB887, 'cadetblue': 0x5F9EA0, 'chartreuse': 0x7FFF00, 'chocolate': 0xD2691E, 'coral': 0xFF7F50,\n\t'cornflowerblue': 0x6495ED, 'cornsilk': 0xFFF8DC, 'crimson': 0xDC143C, 'cyan': 0x00FFFF, 'darkblue': 0x00008B, 'darkcyan': 0x008B8B,\n\t'darkgoldenrod': 0xB8860B, 'darkgray': 0xA9A9A9, 'darkgreen': 0x006400, 'darkgrey': 0xA9A9A9, 'darkkhaki': 0xBDB76B, 'darkmagenta': 0x8B008B,\n\t'darkolivegreen': 0x556B2F, 'darkorange': 0xFF8C00, 'darkorchid': 0x9932CC, 'darkred': 0x8B0000, 'darksalmon': 0xE9967A, 'darkseagreen': 0x8FBC8F,\n\t'darkslateblue': 0x483D8B, 'darkslategray': 0x2F4F4F, 'darkslategrey': 0x2F4F4F, 'darkturquoise': 0x00CED1, 'darkviolet': 0x9400D3,\n\t'deeppink': 0xFF1493, 'deepskyblue': 0x00BFFF, 'dimgray': 0x696969, 'dimgrey': 0x696969, 'dodgerblue': 0x1E90FF, 'firebrick': 0xB22222,\n\t'floralwhite': 0xFFFAF0, 'forestgreen': 0x228B22, 'fuchsia': 0xFF00FF, 'gainsboro': 0xDCDCDC, 'ghostwhite': 0xF8F8FF, 'gold': 0xFFD700,\n\t'goldenrod': 0xDAA520, 'gray': 0x808080, 'green': 0x008000, 'greenyellow': 0xADFF2F, 'grey': 0x808080, 'honeydew': 0xF0FFF0, 'hotpink': 0xFF69B4,\n\t'indianred': 0xCD5C5C, 'indigo': 0x4B0082, 'ivory': 0xFFFFF0, 'khaki': 0xF0E68C, 'lavender': 0xE6E6FA, 'lavenderblush': 0xFFF0F5, 'lawngreen': 0x7CFC00,\n\t'lemonchiffon': 0xFFFACD, 'lightblue': 0xADD8E6, 'lightcoral': 0xF08080, 'lightcyan': 0xE0FFFF, 'lightgoldenrodyellow': 0xFAFAD2, 'lightgray': 0xD3D3D3,\n\t'lightgreen': 0x90EE90, 'lightgrey': 0xD3D3D3, 'lightpink': 0xFFB6C1, 'lightsalmon': 0xFFA07A, 'lightseagreen': 0x20B2AA, 'lightskyblue': 0x87CEFA,\n\t'lightslategray': 0x778899, 'lightslategrey': 0x778899, 'lightsteelblue': 0xB0C4DE, 'lightyellow': 0xFFFFE0, 'lime': 0x00FF00, 'limegreen': 0x32CD32,\n\t'linen': 0xFAF0E6, 'magenta': 0xFF00FF, 'maroon': 0x800000, 'mediumaquamarine': 0x66CDAA, 'mediumblue': 0x0000CD, 'mediumorchid': 0xBA55D3,\n\t'mediumpurple': 0x9370DB, 'mediumseagreen': 0x3CB371, 'mediumslateblue': 0x7B68EE, 'mediumspringgreen': 0x00FA9A, 'mediumturquoise': 0x48D1CC,\n\t'mediumvioletred': 0xC71585, 'midnightblue': 0x191970, 'mintcream': 0xF5FFFA, 'mistyrose': 0xFFE4E1, 'moccasin': 0xFFE4B5, 'navajowhite': 0xFFDEAD,\n\t'navy': 0x000080, 'oldlace': 0xFDF5E6, 'olive': 0x808000, 'olivedrab': 0x6B8E23, 'orange': 0xFFA500, 'orangered': 0xFF4500, 'orchid': 0xDA70D6,\n\t'palegoldenrod': 0xEEE8AA, 'palegreen': 0x98FB98, 'paleturquoise': 0xAFEEEE, 'palevioletred': 0xDB7093, 'papayawhip': 0xFFEFD5, 'peachpuff': 0xFFDAB9,\n\t'peru': 0xCD853F, 'pink': 0xFFC0CB, 'plum': 0xDDA0DD, 'powderblue': 0xB0E0E6, 'purple': 0x800080, 'rebeccapurple': 0x663399, 'red': 0xFF0000, 'rosybrown': 0xBC8F8F,\n\t'royalblue': 0x4169E1, 'saddlebrown': 0x8B4513, 'salmon': 0xFA8072, 'sandybrown': 0xF4A460, 'seagreen': 0x2E8B57, 'seashell': 0xFFF5EE,\n\t'sienna': 0xA0522D, 'silver': 0xC0C0C0, 'skyblue': 0x87CEEB, 'slateblue': 0x6A5ACD, 'slategray': 0x708090, 'slategrey': 0x708090, 'snow': 0xFFFAFA,\n\t'springgreen': 0x00FF7F, 'steelblue': 0x4682B4, 'tan': 0xD2B48C, 'teal': 0x008080, 'thistle': 0xD8BFD8, 'tomato': 0xFF6347, 'turquoise': 0x40E0D0,\n\t'violet': 0xEE82EE, 'wheat': 0xF5DEB3, 'white': 0xFFFFFF, 'whitesmoke': 0xF5F5F5, 'yellow': 0xFFFF00, 'yellowgreen': 0x9ACD32 };\n\nconst _hslA = { h: 0, s: 0, l: 0 };\nconst _hslB = { h: 0, s: 0, l: 0 };\n\nfunction hue2rgb( p, q, t ) {\n\n\tif ( t < 0 ) t += 1;\n\tif ( t > 1 ) t -= 1;\n\tif ( t < 1 / 6 ) return p + ( q - p ) * 6 * t;\n\tif ( t < 1 / 2 ) return q;\n\tif ( t < 2 / 3 ) return p + ( q - p ) * 6 * ( 2 / 3 - t );\n\treturn p;\n\n}\n\nfunction SRGBToLinear( c ) {\n\n\treturn ( c < 0.04045 ) ? c * 0.0773993808 : Math.pow( c * 0.9478672986 + 0.0521327014, 2.4 );\n\n}\n\nfunction LinearToSRGB( c ) {\n\n\treturn ( c < 0.0031308 ) ? c * 12.92 : 1.055 * ( Math.pow( c, 0.41666 ) ) - 0.055;\n\n}\n\nclass Color {\n\n\tconstructor( r, g, b ) {\n\n\t\tObject.defineProperty( this, 'isColor', { value: true } );\n\n\t\tif ( g === undefined && b === undefined ) {\n\n\t\t\t// r is THREE.Color, hex or string\n\t\t\treturn this.set( r );\n\n\t\t}\n\n\t\treturn this.setRGB( r, g, b );\n\n\t}\n\n\tset( value ) {\n\n\t\tif ( value && value.isColor ) {\n\n\t\t\tthis.copy( value );\n\n\t\t} else if ( typeof value === 'number' ) {\n\n\t\t\tthis.setHex( value );\n\n\t\t} else if ( typeof value === 'string' ) {\n\n\t\t\tthis.setStyle( value );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetScalar( scalar ) {\n\n\t\tthis.r = scalar;\n\t\tthis.g = scalar;\n\t\tthis.b = scalar;\n\n\t\treturn this;\n\n\t}\n\n\tsetHex( hex ) {\n\n\t\thex = Math.floor( hex );\n\n\t\tthis.r = ( hex >> 16 & 255 ) / 255;\n\t\tthis.g = ( hex >> 8 & 255 ) / 255;\n\t\tthis.b = ( hex & 255 ) / 255;\n\n\t\treturn this;\n\n\t}\n\n\tsetRGB( r, g, b ) {\n\n\t\tthis.r = r;\n\t\tthis.g = g;\n\t\tthis.b = b;\n\n\t\treturn this;\n\n\t}\n\n\tsetHSL( h, s, l ) {\n\n\t\t// h,s,l ranges are in 0.0 - 1.0\n\t\th = MathUtils.euclideanModulo( h, 1 );\n\t\ts = MathUtils.clamp( s, 0, 1 );\n\t\tl = MathUtils.clamp( l, 0, 1 );\n\n\t\tif ( s === 0 ) {\n\n\t\t\tthis.r = this.g = this.b = l;\n\n\t\t} else {\n\n\t\t\tconst p = l <= 0.5 ? l * ( 1 + s ) : l + s - ( l * s );\n\t\t\tconst q = ( 2 * l ) - p;\n\n\t\t\tthis.r = hue2rgb( q, p, h + 1 / 3 );\n\t\t\tthis.g = hue2rgb( q, p, h );\n\t\t\tthis.b = hue2rgb( q, p, h - 1 / 3 );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetStyle( style ) {\n\n\t\tfunction handleAlpha( string ) {\n\n\t\t\tif ( string === undefined ) return;\n\n\t\t\tif ( parseFloat( string ) < 1 ) {\n\n\t\t\t\tconsole.warn( 'THREE.Color: Alpha component of ' + style + ' will be ignored.' );\n\n\t\t\t}\n\n\t\t}\n\n\n\t\tlet m;\n\n\t\tif ( m = /^((?:rgb|hsl)a?)\\(\\s*([^\\)]*)\\)/.exec( style ) ) {\n\n\t\t\t// rgb / hsl\n\n\t\t\tlet color;\n\t\t\tconst name = m[ 1 ];\n\t\t\tconst components = m[ 2 ];\n\n\t\t\tswitch ( name ) {\n\n\t\t\t\tcase 'rgb':\n\t\t\t\tcase 'rgba':\n\n\t\t\t\t\tif ( color = /^(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*(,\\s*([0-9]*\\.?[0-9]+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// rgb(255,0,0) rgba(255,0,0,0.5)\n\t\t\t\t\t\tthis.r = Math.min( 255, parseInt( color[ 1 ], 10 ) ) / 255;\n\t\t\t\t\t\tthis.g = Math.min( 255, parseInt( color[ 2 ], 10 ) ) / 255;\n\t\t\t\t\t\tthis.b = Math.min( 255, parseInt( color[ 3 ], 10 ) ) / 255;\n\n\t\t\t\t\t\thandleAlpha( color[ 5 ] );\n\n\t\t\t\t\t\treturn this;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( color = /^(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*(,\\s*([0-9]*\\.?[0-9]+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// rgb(100%,0%,0%) rgba(100%,0%,0%,0.5)\n\t\t\t\t\t\tthis.r = Math.min( 100, parseInt( color[ 1 ], 10 ) ) / 100;\n\t\t\t\t\t\tthis.g = Math.min( 100, parseInt( color[ 2 ], 10 ) ) / 100;\n\t\t\t\t\t\tthis.b = Math.min( 100, parseInt( color[ 3 ], 10 ) ) / 100;\n\n\t\t\t\t\t\thandleAlpha( color[ 5 ] );\n\n\t\t\t\t\t\treturn this;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'hsl':\n\t\t\t\tcase 'hsla':\n\n\t\t\t\t\tif ( color = /^([0-9]*\\.?[0-9]+)\\s*,\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*(,\\s*([0-9]*\\.?[0-9]+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// hsl(120,50%,50%) hsla(120,50%,50%,0.5)\n\t\t\t\t\t\tconst h = parseFloat( color[ 1 ] ) / 360;\n\t\t\t\t\t\tconst s = parseInt( color[ 2 ], 10 ) / 100;\n\t\t\t\t\t\tconst l = parseInt( color[ 3 ], 10 ) / 100;\n\n\t\t\t\t\t\thandleAlpha( color[ 5 ] );\n\n\t\t\t\t\t\treturn this.setHSL( h, s, l );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t} else if ( m = /^\\#([A-Fa-f0-9]+)$/.exec( style ) ) {\n\n\t\t\t// hex color\n\n\t\t\tconst hex = m[ 1 ];\n\t\t\tconst size = hex.length;\n\n\t\t\tif ( size === 3 ) {\n\n\t\t\t\t// #ff0\n\t\t\t\tthis.r = parseInt( hex.charAt( 0 ) + hex.charAt( 0 ), 16 ) / 255;\n\t\t\t\tthis.g = parseInt( hex.charAt( 1 ) + hex.charAt( 1 ), 16 ) / 255;\n\t\t\t\tthis.b = parseInt( hex.charAt( 2 ) + hex.charAt( 2 ), 16 ) / 255;\n\n\t\t\t\treturn this;\n\n\t\t\t} else if ( size === 6 ) {\n\n\t\t\t\t// #ff0000\n\t\t\t\tthis.r = parseInt( hex.charAt( 0 ) + hex.charAt( 1 ), 16 ) / 255;\n\t\t\t\tthis.g = parseInt( hex.charAt( 2 ) + hex.charAt( 3 ), 16 ) / 255;\n\t\t\t\tthis.b = parseInt( hex.charAt( 4 ) + hex.charAt( 5 ), 16 ) / 255;\n\n\t\t\t\treturn this;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( style && style.length > 0 ) {\n\n\t\t\treturn this.setColorName( style );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetColorName( style ) {\n\n\t\t// color keywords\n\t\tconst hex = _colorKeywords[ style ];\n\n\t\tif ( hex !== undefined ) {\n\n\t\t\t// red\n\t\t\tthis.setHex( hex );\n\n\t\t} else {\n\n\t\t\t// unknown color\n\t\t\tconsole.warn( 'THREE.Color: Unknown color ' + style );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.r, this.g, this.b );\n\n\t}\n\n\tcopy( color ) {\n\n\t\tthis.r = color.r;\n\t\tthis.g = color.g;\n\t\tthis.b = color.b;\n\n\t\treturn this;\n\n\t}\n\n\tcopyGammaToLinear( color, gammaFactor ) {\n\n\t\tif ( gammaFactor === undefined ) gammaFactor = 2.0;\n\n\t\tthis.r = Math.pow( color.r, gammaFactor );\n\t\tthis.g = Math.pow( color.g, gammaFactor );\n\t\tthis.b = Math.pow( color.b, gammaFactor );\n\n\t\treturn this;\n\n\t}\n\n\tcopyLinearToGamma( color, gammaFactor ) {\n\n\t\tif ( gammaFactor === undefined ) gammaFactor = 2.0;\n\n\t\tconst safeInverse = ( gammaFactor > 0 ) ? ( 1.0 / gammaFactor ) : 1.0;\n\n\t\tthis.r = Math.pow( color.r, safeInverse );\n\t\tthis.g = Math.pow( color.g, safeInverse );\n\t\tthis.b = Math.pow( color.b, safeInverse );\n\n\t\treturn this;\n\n\t}\n\n\tconvertGammaToLinear( gammaFactor ) {\n\n\t\tthis.copyGammaToLinear( this, gammaFactor );\n\n\t\treturn this;\n\n\t}\n\n\tconvertLinearToGamma( gammaFactor ) {\n\n\t\tthis.copyLinearToGamma( this, gammaFactor );\n\n\t\treturn this;\n\n\t}\n\n\tcopySRGBToLinear( color ) {\n\n\t\tthis.r = SRGBToLinear( color.r );\n\t\tthis.g = SRGBToLinear( color.g );\n\t\tthis.b = SRGBToLinear( color.b );\n\n\t\treturn this;\n\n\t}\n\n\tcopyLinearToSRGB( color ) {\n\n\t\tthis.r = LinearToSRGB( color.r );\n\t\tthis.g = LinearToSRGB( color.g );\n\t\tthis.b = LinearToSRGB( color.b );\n\n\t\treturn this;\n\n\t}\n\n\tconvertSRGBToLinear() {\n\n\t\tthis.copySRGBToLinear( this );\n\n\t\treturn this;\n\n\t}\n\n\tconvertLinearToSRGB() {\n\n\t\tthis.copyLinearToSRGB( this );\n\n\t\treturn this;\n\n\t}\n\n\tgetHex() {\n\n\t\treturn ( this.r * 255 ) << 16 ^ ( this.g * 255 ) << 8 ^ ( this.b * 255 ) << 0;\n\n\t}\n\n\tgetHexString() {\n\n\t\treturn ( '000000' + this.getHex().toString( 16 ) ).slice( - 6 );\n\n\t}\n\n\tgetHSL( target ) {\n\n\t\t// h,s,l ranges are in 0.0 - 1.0\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Color: .getHSL() target is now required' );\n\t\t\ttarget = { h: 0, s: 0, l: 0 };\n\n\t\t}\n\n\t\tconst r = this.r, g = this.g, b = this.b;\n\n\t\tconst max = Math.max( r, g, b );\n\t\tconst min = Math.min( r, g, b );\n\n\t\tlet hue, saturation;\n\t\tconst lightness = ( min + max ) / 2.0;\n\n\t\tif ( min === max ) {\n\n\t\t\thue = 0;\n\t\t\tsaturation = 0;\n\n\t\t} else {\n\n\t\t\tconst delta = max - min;\n\n\t\t\tsaturation = lightness <= 0.5 ? delta / ( max + min ) : delta / ( 2 - max - min );\n\n\t\t\tswitch ( max ) {\n\n\t\t\t\tcase r: hue = ( g - b ) / delta + ( g < b ? 6 : 0 ); break;\n\t\t\t\tcase g: hue = ( b - r ) / delta + 2; break;\n\t\t\t\tcase b: hue = ( r - g ) / delta + 4; break;\n\n\t\t\t}\n\n\t\t\thue /= 6;\n\n\t\t}\n\n\t\ttarget.h = hue;\n\t\ttarget.s = saturation;\n\t\ttarget.l = lightness;\n\n\t\treturn target;\n\n\t}\n\n\tgetStyle() {\n\n\t\treturn 'rgb(' + ( ( this.r * 255 ) | 0 ) + ',' + ( ( this.g * 255 ) | 0 ) + ',' + ( ( this.b * 255 ) | 0 ) + ')';\n\n\t}\n\n\toffsetHSL( h, s, l ) {\n\n\t\tthis.getHSL( _hslA );\n\n\t\t_hslA.h += h; _hslA.s += s; _hslA.l += l;\n\n\t\tthis.setHSL( _hslA.h, _hslA.s, _hslA.l );\n\n\t\treturn this;\n\n\t}\n\n\tadd( color ) {\n\n\t\tthis.r += color.r;\n\t\tthis.g += color.g;\n\t\tthis.b += color.b;\n\n\t\treturn this;\n\n\t}\n\n\taddColors( color1, color2 ) {\n\n\t\tthis.r = color1.r + color2.r;\n\t\tthis.g = color1.g + color2.g;\n\t\tthis.b = color1.b + color2.b;\n\n\t\treturn this;\n\n\t}\n\n\taddScalar( s ) {\n\n\t\tthis.r += s;\n\t\tthis.g += s;\n\t\tthis.b += s;\n\n\t\treturn this;\n\n\t}\n\n\tsub( color ) {\n\n\t\tthis.r = Math.max( 0, this.r - color.r );\n\t\tthis.g = Math.max( 0, this.g - color.g );\n\t\tthis.b = Math.max( 0, this.b - color.b );\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( color ) {\n\n\t\tthis.r *= color.r;\n\t\tthis.g *= color.g;\n\t\tthis.b *= color.b;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( s ) {\n\n\t\tthis.r *= s;\n\t\tthis.g *= s;\n\t\tthis.b *= s;\n\n\t\treturn this;\n\n\t}\n\n\tlerp( color, alpha ) {\n\n\t\tthis.r += ( color.r - this.r ) * alpha;\n\t\tthis.g += ( color.g - this.g ) * alpha;\n\t\tthis.b += ( color.b - this.b ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tlerpHSL( color, alpha ) {\n\n\t\tthis.getHSL( _hslA );\n\t\tcolor.getHSL( _hslB );\n\n\t\tconst h = MathUtils.lerp( _hslA.h, _hslB.h, alpha );\n\t\tconst s = MathUtils.lerp( _hslA.s, _hslB.s, alpha );\n\t\tconst l = MathUtils.lerp( _hslA.l, _hslB.l, alpha );\n\n\t\tthis.setHSL( h, s, l );\n\n\t\treturn this;\n\n\t}\n\n\tequals( c ) {\n\n\t\treturn ( c.r === this.r ) && ( c.g === this.g ) && ( c.b === this.b );\n\n\t}\n\n\tfromArray( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.r = array[ offset ];\n\t\tthis.g = array[ offset + 1 ];\n\t\tthis.b = array[ offset + 2 ];\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this.r;\n\t\tarray[ offset + 1 ] = this.g;\n\t\tarray[ offset + 2 ] = this.b;\n\n\t\treturn array;\n\n\t}\n\n\tfromBufferAttribute( attribute, index ) {\n\n\t\tthis.r = attribute.getX( index );\n\t\tthis.g = attribute.getY( index );\n\t\tthis.b = attribute.getZ( index );\n\n\t\tif ( attribute.normalized === true ) {\n\n\t\t\t// assuming Uint8Array\n\n\t\t\tthis.r /= 255;\n\t\t\tthis.g /= 255;\n\t\t\tthis.b /= 255;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\treturn this.getHex();\n\n\t}\n\n}\n\nColor.NAMES = _colorKeywords;\nColor.prototype.r = 1;\nColor.prototype.g = 1;\nColor.prototype.b = 1;\n\nclass Face3 {\n\n\tconstructor( a, b, c, normal, color, materialIndex ) {\n\n\t\tthis.a = a;\n\t\tthis.b = b;\n\t\tthis.c = c;\n\n\t\tthis.normal = ( normal && normal.isVector3 ) ? normal : new Vector3();\n\t\tthis.vertexNormals = Array.isArray( normal ) ? normal : [];\n\n\t\tthis.color = ( color && color.isColor ) ? color : new Color();\n\t\tthis.vertexColors = Array.isArray( color ) ? color : [];\n\n\t\tthis.materialIndex = materialIndex !== undefined ? materialIndex : 0;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.a = source.a;\n\t\tthis.b = source.b;\n\t\tthis.c = source.c;\n\n\t\tthis.normal.copy( source.normal );\n\t\tthis.color.copy( source.color );\n\n\t\tthis.materialIndex = source.materialIndex;\n\n\t\tfor ( let i = 0, il = source.vertexNormals.length; i < il; i ++ ) {\n\n\t\t\tthis.vertexNormals[ i ] = source.vertexNormals[ i ].clone();\n\n\t\t}\n\n\t\tfor ( let i = 0, il = source.vertexColors.length; i < il; i ++ ) {\n\n\t\t\tthis.vertexColors[ i ] = source.vertexColors[ i ].clone();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\nlet materialId = 0;\n\nfunction Material() {\n\n\tObject.defineProperty( this, 'id', { value: materialId ++ } );\n\n\tthis.uuid = MathUtils.generateUUID();\n\n\tthis.name = '';\n\tthis.type = 'Material';\n\n\tthis.fog = true;\n\n\tthis.blending = NormalBlending;\n\tthis.side = FrontSide;\n\tthis.flatShading = false;\n\tthis.vertexColors = false;\n\n\tthis.opacity = 1;\n\tthis.transparent = false;\n\n\tthis.blendSrc = SrcAlphaFactor;\n\tthis.blendDst = OneMinusSrcAlphaFactor;\n\tthis.blendEquation = AddEquation;\n\tthis.blendSrcAlpha = null;\n\tthis.blendDstAlpha = null;\n\tthis.blendEquationAlpha = null;\n\n\tthis.depthFunc = LessEqualDepth;\n\tthis.depthTest = true;\n\tthis.depthWrite = true;\n\n\tthis.stencilWriteMask = 0xff;\n\tthis.stencilFunc = AlwaysStencilFunc;\n\tthis.stencilRef = 0;\n\tthis.stencilFuncMask = 0xff;\n\tthis.stencilFail = KeepStencilOp;\n\tthis.stencilZFail = KeepStencilOp;\n\tthis.stencilZPass = KeepStencilOp;\n\tthis.stencilWrite = false;\n\n\tthis.clippingPlanes = null;\n\tthis.clipIntersection = false;\n\tthis.clipShadows = false;\n\n\tthis.shadowSide = null;\n\n\tthis.colorWrite = true;\n\n\tthis.precision = null; // override the renderer's default precision for this material\n\n\tthis.polygonOffset = false;\n\tthis.polygonOffsetFactor = 0;\n\tthis.polygonOffsetUnits = 0;\n\n\tthis.dithering = false;\n\n\tthis.alphaTest = 0;\n\tthis.premultipliedAlpha = false;\n\n\tthis.visible = true;\n\n\tthis.toneMapped = true;\n\n\tthis.userData = {};\n\n\tthis.version = 0;\n\n}\n\nMaterial.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: Material,\n\n\tisMaterial: true,\n\n\tonBeforeCompile: function ( /* shaderobject, renderer */ ) {},\n\n\tcustomProgramCacheKey: function () {\n\n\t\treturn this.onBeforeCompile.toString();\n\n\t},\n\n\tsetValues: function ( values ) {\n\n\t\tif ( values === undefined ) return;\n\n\t\tfor ( const key in values ) {\n\n\t\t\tconst newValue = values[ key ];\n\n\t\t\tif ( newValue === undefined ) {\n\n\t\t\t\tconsole.warn( \"THREE.Material: '\" + key + \"' parameter is undefined.\" );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\t// for backward compatability if shading is set in the constructor\n\t\t\tif ( key === 'shading' ) {\n\n\t\t\t\tconsole.warn( 'THREE.' + this.type + ': .shading has been removed. Use the boolean .flatShading instead.' );\n\t\t\t\tthis.flatShading = ( newValue === FlatShading ) ? true : false;\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tconst currentValue = this[ key ];\n\n\t\t\tif ( currentValue === undefined ) {\n\n\t\t\t\tconsole.warn( \"THREE.\" + this.type + \": '\" + key + \"' is not a property of this material.\" );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tif ( currentValue && currentValue.isColor ) {\n\n\t\t\t\tcurrentValue.set( newValue );\n\n\t\t\t} else if ( ( currentValue && currentValue.isVector3 ) && ( newValue && newValue.isVector3 ) ) {\n\n\t\t\t\tcurrentValue.copy( newValue );\n\n\t\t\t} else {\n\n\t\t\t\tthis[ key ] = newValue;\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tconst isRoot = ( meta === undefined || typeof meta === 'string' );\n\n\t\tif ( isRoot ) {\n\n\t\t\tmeta = {\n\t\t\t\ttextures: {},\n\t\t\t\timages: {}\n\t\t\t};\n\n\t\t}\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Material',\n\t\t\t\tgenerator: 'Material.toJSON'\n\t\t\t}\n\t\t};\n\n\t\t// standard Material serialization\n\t\tdata.uuid = this.uuid;\n\t\tdata.type = this.type;\n\n\t\tif ( this.name !== '' ) data.name = this.name;\n\n\t\tif ( this.color && this.color.isColor ) data.color = this.color.getHex();\n\n\t\tif ( this.roughness !== undefined ) data.roughness = this.roughness;\n\t\tif ( this.metalness !== undefined ) data.metalness = this.metalness;\n\n\t\tif ( this.sheen && this.sheen.isColor ) data.sheen = this.sheen.getHex();\n\t\tif ( this.emissive && this.emissive.isColor ) data.emissive = this.emissive.getHex();\n\t\tif ( this.emissiveIntensity && this.emissiveIntensity !== 1 ) data.emissiveIntensity = this.emissiveIntensity;\n\n\t\tif ( this.specular && this.specular.isColor ) data.specular = this.specular.getHex();\n\t\tif ( this.shininess !== undefined ) data.shininess = this.shininess;\n\t\tif ( this.clearcoat !== undefined ) data.clearcoat = this.clearcoat;\n\t\tif ( this.clearcoatRoughness !== undefined ) data.clearcoatRoughness = this.clearcoatRoughness;\n\n\t\tif ( this.clearcoatMap && this.clearcoatMap.isTexture ) {\n\n\t\t\tdata.clearcoatMap = this.clearcoatMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.clearcoatRoughnessMap && this.clearcoatRoughnessMap.isTexture ) {\n\n\t\t\tdata.clearcoatRoughnessMap = this.clearcoatRoughnessMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.clearcoatNormalMap && this.clearcoatNormalMap.isTexture ) {\n\n\t\t\tdata.clearcoatNormalMap = this.clearcoatNormalMap.toJSON( meta ).uuid;\n\t\t\tdata.clearcoatNormalScale = this.clearcoatNormalScale.toArray();\n\n\t\t}\n\n\t\tif ( this.map && this.map.isTexture ) data.map = this.map.toJSON( meta ).uuid;\n\t\tif ( this.matcap && this.matcap.isTexture ) data.matcap = this.matcap.toJSON( meta ).uuid;\n\t\tif ( this.alphaMap && this.alphaMap.isTexture ) data.alphaMap = this.alphaMap.toJSON( meta ).uuid;\n\t\tif ( this.lightMap && this.lightMap.isTexture ) data.lightMap = this.lightMap.toJSON( meta ).uuid;\n\n\t\tif ( this.aoMap && this.aoMap.isTexture ) {\n\n\t\t\tdata.aoMap = this.aoMap.toJSON( meta ).uuid;\n\t\t\tdata.aoMapIntensity = this.aoMapIntensity;\n\n\t\t}\n\n\t\tif ( this.bumpMap && this.bumpMap.isTexture ) {\n\n\t\t\tdata.bumpMap = this.bumpMap.toJSON( meta ).uuid;\n\t\t\tdata.bumpScale = this.bumpScale;\n\n\t\t}\n\n\t\tif ( this.normalMap && this.normalMap.isTexture ) {\n\n\t\t\tdata.normalMap = this.normalMap.toJSON( meta ).uuid;\n\t\t\tdata.normalMapType = this.normalMapType;\n\t\t\tdata.normalScale = this.normalScale.toArray();\n\n\t\t}\n\n\t\tif ( this.displacementMap && this.displacementMap.isTexture ) {\n\n\t\t\tdata.displacementMap = this.displacementMap.toJSON( meta ).uuid;\n\t\t\tdata.displacementScale = this.displacementScale;\n\t\t\tdata.displacementBias = this.displacementBias;\n\n\t\t}\n\n\t\tif ( this.roughnessMap && this.roughnessMap.isTexture ) data.roughnessMap = this.roughnessMap.toJSON( meta ).uuid;\n\t\tif ( this.metalnessMap && this.metalnessMap.isTexture ) data.metalnessMap = this.metalnessMap.toJSON( meta ).uuid;\n\n\t\tif ( this.emissiveMap && this.emissiveMap.isTexture ) data.emissiveMap = this.emissiveMap.toJSON( meta ).uuid;\n\t\tif ( this.specularMap && this.specularMap.isTexture ) data.specularMap = this.specularMap.toJSON( meta ).uuid;\n\n\t\tif ( this.envMap && this.envMap.isTexture ) {\n\n\t\t\tdata.envMap = this.envMap.toJSON( meta ).uuid;\n\t\t\tdata.reflectivity = this.reflectivity; // Scale behind envMap\n\t\t\tdata.refractionRatio = this.refractionRatio;\n\n\t\t\tif ( this.combine !== undefined ) data.combine = this.combine;\n\t\t\tif ( this.envMapIntensity !== undefined ) data.envMapIntensity = this.envMapIntensity;\n\n\t\t}\n\n\t\tif ( this.gradientMap && this.gradientMap.isTexture ) {\n\n\t\t\tdata.gradientMap = this.gradientMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.size !== undefined ) data.size = this.size;\n\t\tif ( this.sizeAttenuation !== undefined ) data.sizeAttenuation = this.sizeAttenuation;\n\n\t\tif ( this.blending !== NormalBlending ) data.blending = this.blending;\n\t\tif ( this.flatShading === true ) data.flatShading = this.flatShading;\n\t\tif ( this.side !== FrontSide ) data.side = this.side;\n\t\tif ( this.vertexColors ) data.vertexColors = true;\n\n\t\tif ( this.opacity < 1 ) data.opacity = this.opacity;\n\t\tif ( this.transparent === true ) data.transparent = this.transparent;\n\n\t\tdata.depthFunc = this.depthFunc;\n\t\tdata.depthTest = this.depthTest;\n\t\tdata.depthWrite = this.depthWrite;\n\n\t\tdata.stencilWrite = this.stencilWrite;\n\t\tdata.stencilWriteMask = this.stencilWriteMask;\n\t\tdata.stencilFunc = this.stencilFunc;\n\t\tdata.stencilRef = this.stencilRef;\n\t\tdata.stencilFuncMask = this.stencilFuncMask;\n\t\tdata.stencilFail = this.stencilFail;\n\t\tdata.stencilZFail = this.stencilZFail;\n\t\tdata.stencilZPass = this.stencilZPass;\n\n\t\t// rotation (SpriteMaterial)\n\t\tif ( this.rotation && this.rotation !== 0 ) data.rotation = this.rotation;\n\n\t\tif ( this.polygonOffset === true ) data.polygonOffset = true;\n\t\tif ( this.polygonOffsetFactor !== 0 ) data.polygonOffsetFactor = this.polygonOffsetFactor;\n\t\tif ( this.polygonOffsetUnits !== 0 ) data.polygonOffsetUnits = this.polygonOffsetUnits;\n\n\t\tif ( this.linewidth && this.linewidth !== 1 ) data.linewidth = this.linewidth;\n\t\tif ( this.dashSize !== undefined ) data.dashSize = this.dashSize;\n\t\tif ( this.gapSize !== undefined ) data.gapSize = this.gapSize;\n\t\tif ( this.scale !== undefined ) data.scale = this.scale;\n\n\t\tif ( this.dithering === true ) data.dithering = true;\n\n\t\tif ( this.alphaTest > 0 ) data.alphaTest = this.alphaTest;\n\t\tif ( this.premultipliedAlpha === true ) data.premultipliedAlpha = this.premultipliedAlpha;\n\n\t\tif ( this.wireframe === true ) data.wireframe = this.wireframe;\n\t\tif ( this.wireframeLinewidth > 1 ) data.wireframeLinewidth = this.wireframeLinewidth;\n\t\tif ( this.wireframeLinecap !== 'round' ) data.wireframeLinecap = this.wireframeLinecap;\n\t\tif ( this.wireframeLinejoin !== 'round' ) data.wireframeLinejoin = this.wireframeLinejoin;\n\n\t\tif ( this.morphTargets === true ) data.morphTargets = true;\n\t\tif ( this.morphNormals === true ) data.morphNormals = true;\n\t\tif ( this.skinning === true ) data.skinning = true;\n\n\t\tif ( this.visible === false ) data.visible = false;\n\n\t\tif ( this.toneMapped === false ) data.toneMapped = false;\n\n\t\tif ( JSON.stringify( this.userData ) !== '{}' ) data.userData = this.userData;\n\n\t\t// TODO: Copied from Object3D.toJSON\n\n\t\tfunction extractFromCache( cache ) {\n\n\t\t\tconst values = [];\n\n\t\t\tfor ( const key in cache ) {\n\n\t\t\t\tconst data = cache[ key ];\n\t\t\t\tdelete data.metadata;\n\t\t\t\tvalues.push( data );\n\n\t\t\t}\n\n\t\t\treturn values;\n\n\t\t}\n\n\t\tif ( isRoot ) {\n\n\t\t\tconst textures = extractFromCache( meta.textures );\n\t\t\tconst images = extractFromCache( meta.images );\n\n\t\t\tif ( textures.length > 0 ) data.textures = textures;\n\t\t\tif ( images.length > 0 ) data.images = images;\n\n\t\t}\n\n\t\treturn data;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.name = source.name;\n\n\t\tthis.fog = source.fog;\n\n\t\tthis.blending = source.blending;\n\t\tthis.side = source.side;\n\t\tthis.flatShading = source.flatShading;\n\t\tthis.vertexColors = source.vertexColors;\n\n\t\tthis.opacity = source.opacity;\n\t\tthis.transparent = source.transparent;\n\n\t\tthis.blendSrc = source.blendSrc;\n\t\tthis.blendDst = source.blendDst;\n\t\tthis.blendEquation = source.blendEquation;\n\t\tthis.blendSrcAlpha = source.blendSrcAlpha;\n\t\tthis.blendDstAlpha = source.blendDstAlpha;\n\t\tthis.blendEquationAlpha = source.blendEquationAlpha;\n\n\t\tthis.depthFunc = source.depthFunc;\n\t\tthis.depthTest = source.depthTest;\n\t\tthis.depthWrite = source.depthWrite;\n\n\t\tthis.stencilWriteMask = source.stencilWriteMask;\n\t\tthis.stencilFunc = source.stencilFunc;\n\t\tthis.stencilRef = source.stencilRef;\n\t\tthis.stencilFuncMask = source.stencilFuncMask;\n\t\tthis.stencilFail = source.stencilFail;\n\t\tthis.stencilZFail = source.stencilZFail;\n\t\tthis.stencilZPass = source.stencilZPass;\n\t\tthis.stencilWrite = source.stencilWrite;\n\n\t\tconst srcPlanes = source.clippingPlanes;\n\t\tlet dstPlanes = null;\n\n\t\tif ( srcPlanes !== null ) {\n\n\t\t\tconst n = srcPlanes.length;\n\t\t\tdstPlanes = new Array( n );\n\n\t\t\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\t\t\tdstPlanes[ i ] = srcPlanes[ i ].clone();\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.clippingPlanes = dstPlanes;\n\t\tthis.clipIntersection = source.clipIntersection;\n\t\tthis.clipShadows = source.clipShadows;\n\n\t\tthis.shadowSide = source.shadowSide;\n\n\t\tthis.colorWrite = source.colorWrite;\n\n\t\tthis.precision = source.precision;\n\n\t\tthis.polygonOffset = source.polygonOffset;\n\t\tthis.polygonOffsetFactor = source.polygonOffsetFactor;\n\t\tthis.polygonOffsetUnits = source.polygonOffsetUnits;\n\n\t\tthis.dithering = source.dithering;\n\n\t\tthis.alphaTest = source.alphaTest;\n\t\tthis.premultipliedAlpha = source.premultipliedAlpha;\n\n\t\tthis.visible = source.visible;\n\n\t\tthis.toneMapped = source.toneMapped;\n\n\t\tthis.userData = JSON.parse( JSON.stringify( source.userData ) );\n\n\t\treturn this;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n} );\n\nObject.defineProperty( Material.prototype, 'needsUpdate', {\n\n\tset: function ( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n} );\n\n/**\n * parameters = {\n *  color: <hex>,\n *  opacity: <float>,\n *  map: new THREE.Texture( <Image> ),\n *\n *  lightMap: new THREE.Texture( <Image> ),\n *  lightMapIntensity: <float>\n *\n *  aoMap: new THREE.Texture( <Image> ),\n *  aoMapIntensity: <float>\n *\n *  specularMap: new THREE.Texture( <Image> ),\n *\n *  alphaMap: new THREE.Texture( <Image> ),\n *\n *  envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ),\n *  combine: THREE.Multiply,\n *  reflectivity: <float>,\n *  refractionRatio: <float>,\n *\n *  depthTest: <bool>,\n *  depthWrite: <bool>,\n *\n *  wireframe: <boolean>,\n *  wireframeLinewidth: <float>,\n *\n *  skinning: <bool>,\n *  morphTargets: <bool>\n * }\n */\n\nfunction MeshBasicMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshBasicMaterial';\n\n\tthis.color = new Color( 0xffffff ); // emissive\n\n\tthis.map = null;\n\n\tthis.lightMap = null;\n\tthis.lightMapIntensity = 1.0;\n\n\tthis.aoMap = null;\n\tthis.aoMapIntensity = 1.0;\n\n\tthis.specularMap = null;\n\n\tthis.alphaMap = null;\n\n\tthis.envMap = null;\n\tthis.combine = MultiplyOperation;\n\tthis.reflectivity = 1;\n\tthis.refractionRatio = 0.98;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\tthis.wireframeLinecap = 'round';\n\tthis.wireframeLinejoin = 'round';\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshBasicMaterial.prototype = Object.create( Material.prototype );\nMeshBasicMaterial.prototype.constructor = MeshBasicMaterial;\n\nMeshBasicMaterial.prototype.isMeshBasicMaterial = true;\n\nMeshBasicMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\tthis.map = source.map;\n\n\tthis.lightMap = source.lightMap;\n\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\tthis.aoMap = source.aoMap;\n\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\tthis.specularMap = source.specularMap;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.envMap = source.envMap;\n\tthis.combine = source.combine;\n\tthis.reflectivity = source.reflectivity;\n\tthis.refractionRatio = source.refractionRatio;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\tthis.wireframeLinecap = source.wireframeLinecap;\n\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\n\treturn this;\n\n};\n\nconst _vector$3 = new Vector3();\nconst _vector2$1 = new Vector2();\n\nfunction BufferAttribute( array, itemSize, normalized ) {\n\n\tif ( Array.isArray( array ) ) {\n\n\t\tthrow new TypeError( 'THREE.BufferAttribute: array should be a Typed Array.' );\n\n\t}\n\n\tthis.name = '';\n\n\tthis.array = array;\n\tthis.itemSize = itemSize;\n\tthis.count = array !== undefined ? array.length / itemSize : 0;\n\tthis.normalized = normalized === true;\n\n\tthis.usage = StaticDrawUsage;\n\tthis.updateRange = { offset: 0, count: - 1 };\n\n\tthis.version = 0;\n\n}\n\nObject.defineProperty( BufferAttribute.prototype, 'needsUpdate', {\n\n\tset: function ( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n} );\n\nObject.assign( BufferAttribute.prototype, {\n\n\tisBufferAttribute: true,\n\n\tonUploadCallback: function () {},\n\n\tsetUsage: function ( value ) {\n\n\t\tthis.usage = value;\n\n\t\treturn this;\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.name = source.name;\n\t\tthis.array = new source.array.constructor( source.array );\n\t\tthis.itemSize = source.itemSize;\n\t\tthis.count = source.count;\n\t\tthis.normalized = source.normalized;\n\n\t\tthis.usage = source.usage;\n\n\t\treturn this;\n\n\t},\n\n\tcopyAt: function ( index1, attribute, index2 ) {\n\n\t\tindex1 *= this.itemSize;\n\t\tindex2 *= attribute.itemSize;\n\n\t\tfor ( let i = 0, l = this.itemSize; i < l; i ++ ) {\n\n\t\t\tthis.array[ index1 + i ] = attribute.array[ index2 + i ];\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcopyArray: function ( array ) {\n\n\t\tthis.array.set( array );\n\n\t\treturn this;\n\n\t},\n\n\tcopyColorsArray: function ( colors ) {\n\n\t\tconst array = this.array;\n\t\tlet offset = 0;\n\n\t\tfor ( let i = 0, l = colors.length; i < l; i ++ ) {\n\n\t\t\tlet color = colors[ i ];\n\n\t\t\tif ( color === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyColorsArray(): color is undefined', i );\n\t\t\t\tcolor = new Color();\n\n\t\t\t}\n\n\t\t\tarray[ offset ++ ] = color.r;\n\t\t\tarray[ offset ++ ] = color.g;\n\t\t\tarray[ offset ++ ] = color.b;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcopyVector2sArray: function ( vectors ) {\n\n\t\tconst array = this.array;\n\t\tlet offset = 0;\n\n\t\tfor ( let i = 0, l = vectors.length; i < l; i ++ ) {\n\n\t\t\tlet vector = vectors[ i ];\n\n\t\t\tif ( vector === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyVector2sArray(): vector is undefined', i );\n\t\t\t\tvector = new Vector2();\n\n\t\t\t}\n\n\t\t\tarray[ offset ++ ] = vector.x;\n\t\t\tarray[ offset ++ ] = vector.y;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcopyVector3sArray: function ( vectors ) {\n\n\t\tconst array = this.array;\n\t\tlet offset = 0;\n\n\t\tfor ( let i = 0, l = vectors.length; i < l; i ++ ) {\n\n\t\t\tlet vector = vectors[ i ];\n\n\t\t\tif ( vector === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyVector3sArray(): vector is undefined', i );\n\t\t\t\tvector = new Vector3();\n\n\t\t\t}\n\n\t\t\tarray[ offset ++ ] = vector.x;\n\t\t\tarray[ offset ++ ] = vector.y;\n\t\t\tarray[ offset ++ ] = vector.z;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcopyVector4sArray: function ( vectors ) {\n\n\t\tconst array = this.array;\n\t\tlet offset = 0;\n\n\t\tfor ( let i = 0, l = vectors.length; i < l; i ++ ) {\n\n\t\t\tlet vector = vectors[ i ];\n\n\t\t\tif ( vector === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyVector4sArray(): vector is undefined', i );\n\t\t\t\tvector = new Vector4();\n\n\t\t\t}\n\n\t\t\tarray[ offset ++ ] = vector.x;\n\t\t\tarray[ offset ++ ] = vector.y;\n\t\t\tarray[ offset ++ ] = vector.z;\n\t\t\tarray[ offset ++ ] = vector.w;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tapplyMatrix3: function ( m ) {\n\n\t\tif ( this.itemSize === 2 ) {\n\n\t\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t\t_vector2$1.fromBufferAttribute( this, i );\n\t\t\t\t_vector2$1.applyMatrix3( m );\n\n\t\t\t\tthis.setXY( i, _vector2$1.x, _vector2$1.y );\n\n\t\t\t}\n\n\t\t} else if ( this.itemSize === 3 ) {\n\n\t\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t\t_vector$3.fromBufferAttribute( this, i );\n\t\t\t\t_vector$3.applyMatrix3( m );\n\n\t\t\t\tthis.setXYZ( i, _vector$3.x, _vector$3.y, _vector$3.z );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tapplyMatrix4: function ( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$3.x = this.getX( i );\n\t\t\t_vector$3.y = this.getY( i );\n\t\t\t_vector$3.z = this.getZ( i );\n\n\t\t\t_vector$3.applyMatrix4( m );\n\n\t\t\tthis.setXYZ( i, _vector$3.x, _vector$3.y, _vector$3.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tapplyNormalMatrix: function ( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$3.x = this.getX( i );\n\t\t\t_vector$3.y = this.getY( i );\n\t\t\t_vector$3.z = this.getZ( i );\n\n\t\t\t_vector$3.applyNormalMatrix( m );\n\n\t\t\tthis.setXYZ( i, _vector$3.x, _vector$3.y, _vector$3.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\ttransformDirection: function ( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$3.x = this.getX( i );\n\t\t\t_vector$3.y = this.getY( i );\n\t\t\t_vector$3.z = this.getZ( i );\n\n\t\t\t_vector$3.transformDirection( m );\n\n\t\t\tthis.setXYZ( i, _vector$3.x, _vector$3.y, _vector$3.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tset: function ( value, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.array.set( value, offset );\n\n\t\treturn this;\n\n\t},\n\n\tgetX: function ( index ) {\n\n\t\treturn this.array[ index * this.itemSize ];\n\n\t},\n\n\tsetX: function ( index, x ) {\n\n\t\tthis.array[ index * this.itemSize ] = x;\n\n\t\treturn this;\n\n\t},\n\n\tgetY: function ( index ) {\n\n\t\treturn this.array[ index * this.itemSize + 1 ];\n\n\t},\n\n\tsetY: function ( index, y ) {\n\n\t\tthis.array[ index * this.itemSize + 1 ] = y;\n\n\t\treturn this;\n\n\t},\n\n\tgetZ: function ( index ) {\n\n\t\treturn this.array[ index * this.itemSize + 2 ];\n\n\t},\n\n\tsetZ: function ( index, z ) {\n\n\t\tthis.array[ index * this.itemSize + 2 ] = z;\n\n\t\treturn this;\n\n\t},\n\n\tgetW: function ( index ) {\n\n\t\treturn this.array[ index * this.itemSize + 3 ];\n\n\t},\n\n\tsetW: function ( index, w ) {\n\n\t\tthis.array[ index * this.itemSize + 3 ] = w;\n\n\t\treturn this;\n\n\t},\n\n\tsetXY: function ( index, x, y ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetXYZ: function ( index, x, y, z ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\t\tthis.array[ index + 2 ] = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetXYZW: function ( index, x, y, z, w ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\t\tthis.array[ index + 2 ] = z;\n\t\tthis.array[ index + 3 ] = w;\n\n\t\treturn this;\n\n\t},\n\n\tonUpload: function ( callback ) {\n\n\t\tthis.onUploadCallback = callback;\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.array, this.itemSize ).copy( this );\n\n\t},\n\n\ttoJSON: function () {\n\n\t\treturn {\n\t\t\titemSize: this.itemSize,\n\t\t\ttype: this.array.constructor.name,\n\t\t\tarray: Array.prototype.slice.call( this.array ),\n\t\t\tnormalized: this.normalized\n\t\t};\n\n\t}\n\n} );\n\n//\n\nfunction Int8BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Int8Array( array ), itemSize, normalized );\n\n}\n\nInt8BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nInt8BufferAttribute.prototype.constructor = Int8BufferAttribute;\n\n\nfunction Uint8BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Uint8Array( array ), itemSize, normalized );\n\n}\n\nUint8BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nUint8BufferAttribute.prototype.constructor = Uint8BufferAttribute;\n\n\nfunction Uint8ClampedBufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Uint8ClampedArray( array ), itemSize, normalized );\n\n}\n\nUint8ClampedBufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nUint8ClampedBufferAttribute.prototype.constructor = Uint8ClampedBufferAttribute;\n\n\nfunction Int16BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Int16Array( array ), itemSize, normalized );\n\n}\n\nInt16BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nInt16BufferAttribute.prototype.constructor = Int16BufferAttribute;\n\n\nfunction Uint16BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Uint16Array( array ), itemSize, normalized );\n\n}\n\nUint16BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nUint16BufferAttribute.prototype.constructor = Uint16BufferAttribute;\n\n\nfunction Int32BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Int32Array( array ), itemSize, normalized );\n\n}\n\nInt32BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nInt32BufferAttribute.prototype.constructor = Int32BufferAttribute;\n\n\nfunction Uint32BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Uint32Array( array ), itemSize, normalized );\n\n}\n\nUint32BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nUint32BufferAttribute.prototype.constructor = Uint32BufferAttribute;\n\n\nfunction Float32BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Float32Array( array ), itemSize, normalized );\n\n}\n\nFloat32BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nFloat32BufferAttribute.prototype.constructor = Float32BufferAttribute;\n\n\nfunction Float64BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Float64Array( array ), itemSize, normalized );\n\n}\n\nFloat64BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nFloat64BufferAttribute.prototype.constructor = Float64BufferAttribute;\n\nclass DirectGeometry {\n\n\tconstructor() {\n\n\t\tthis.vertices = [];\n\t\tthis.normals = [];\n\t\tthis.colors = [];\n\t\tthis.uvs = [];\n\t\tthis.uvs2 = [];\n\n\t\tthis.groups = [];\n\n\t\tthis.morphTargets = {};\n\n\t\tthis.skinWeights = [];\n\t\tthis.skinIndices = [];\n\n\t\t// this.lineDistances = [];\n\n\t\tthis.boundingBox = null;\n\t\tthis.boundingSphere = null;\n\n\t\t// update flags\n\n\t\tthis.verticesNeedUpdate = false;\n\t\tthis.normalsNeedUpdate = false;\n\t\tthis.colorsNeedUpdate = false;\n\t\tthis.uvsNeedUpdate = false;\n\t\tthis.groupsNeedUpdate = false;\n\n\t}\n\n\tcomputeGroups( geometry ) {\n\n\t\tconst groups = [];\n\n\t\tlet group, i;\n\t\tlet materialIndex = undefined;\n\n\t\tconst faces = geometry.faces;\n\n\t\tfor ( i = 0; i < faces.length; i ++ ) {\n\n\t\t\tconst face = faces[ i ];\n\n\t\t\t// materials\n\n\t\t\tif ( face.materialIndex !== materialIndex ) {\n\n\t\t\t\tmaterialIndex = face.materialIndex;\n\n\t\t\t\tif ( group !== undefined ) {\n\n\t\t\t\t\tgroup.count = ( i * 3 ) - group.start;\n\t\t\t\t\tgroups.push( group );\n\n\t\t\t\t}\n\n\t\t\t\tgroup = {\n\t\t\t\t\tstart: i * 3,\n\t\t\t\t\tmaterialIndex: materialIndex\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( group !== undefined ) {\n\n\t\t\tgroup.count = ( i * 3 ) - group.start;\n\t\t\tgroups.push( group );\n\n\t\t}\n\n\t\tthis.groups = groups;\n\n\t}\n\n\tfromGeometry( geometry ) {\n\n\t\tconst faces = geometry.faces;\n\t\tconst vertices = geometry.vertices;\n\t\tconst faceVertexUvs = geometry.faceVertexUvs;\n\n\t\tconst hasFaceVertexUv = faceVertexUvs[ 0 ] && faceVertexUvs[ 0 ].length > 0;\n\t\tconst hasFaceVertexUv2 = faceVertexUvs[ 1 ] && faceVertexUvs[ 1 ].length > 0;\n\n\t\t// morphs\n\n\t\tconst morphTargets = geometry.morphTargets;\n\t\tconst morphTargetsLength = morphTargets.length;\n\n\t\tlet morphTargetsPosition;\n\n\t\tif ( morphTargetsLength > 0 ) {\n\n\t\t\tmorphTargetsPosition = [];\n\n\t\t\tfor ( let i = 0; i < morphTargetsLength; i ++ ) {\n\n\t\t\t\tmorphTargetsPosition[ i ] = {\n\t\t\t\t\tname: morphTargets[ i ].name,\n\t\t\t\t \tdata: []\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t\tthis.morphTargets.position = morphTargetsPosition;\n\n\t\t}\n\n\t\tconst morphNormals = geometry.morphNormals;\n\t\tconst morphNormalsLength = morphNormals.length;\n\n\t\tlet morphTargetsNormal;\n\n\t\tif ( morphNormalsLength > 0 ) {\n\n\t\t\tmorphTargetsNormal = [];\n\n\t\t\tfor ( let i = 0; i < morphNormalsLength; i ++ ) {\n\n\t\t\t\tmorphTargetsNormal[ i ] = {\n\t\t\t\t\tname: morphNormals[ i ].name,\n\t\t\t\t \tdata: []\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t\tthis.morphTargets.normal = morphTargetsNormal;\n\n\t\t}\n\n\t\t// skins\n\n\t\tconst skinIndices = geometry.skinIndices;\n\t\tconst skinWeights = geometry.skinWeights;\n\n\t\tconst hasSkinIndices = skinIndices.length === vertices.length;\n\t\tconst hasSkinWeights = skinWeights.length === vertices.length;\n\n\t\t//\n\n\t\tif ( vertices.length > 0 && faces.length === 0 ) {\n\n\t\t\tconsole.error( 'THREE.DirectGeometry: Faceless geometries are not supported.' );\n\n\t\t}\n\n\t\tfor ( let i = 0; i < faces.length; i ++ ) {\n\n\t\t\tconst face = faces[ i ];\n\n\t\t\tthis.vertices.push( vertices[ face.a ], vertices[ face.b ], vertices[ face.c ] );\n\n\t\t\tconst vertexNormals = face.vertexNormals;\n\n\t\t\tif ( vertexNormals.length === 3 ) {\n\n\t\t\t\tthis.normals.push( vertexNormals[ 0 ], vertexNormals[ 1 ], vertexNormals[ 2 ] );\n\n\t\t\t} else {\n\n\t\t\t\tconst normal = face.normal;\n\n\t\t\t\tthis.normals.push( normal, normal, normal );\n\n\t\t\t}\n\n\t\t\tconst vertexColors = face.vertexColors;\n\n\t\t\tif ( vertexColors.length === 3 ) {\n\n\t\t\t\tthis.colors.push( vertexColors[ 0 ], vertexColors[ 1 ], vertexColors[ 2 ] );\n\n\t\t\t} else {\n\n\t\t\t\tconst color = face.color;\n\n\t\t\t\tthis.colors.push( color, color, color );\n\n\t\t\t}\n\n\t\t\tif ( hasFaceVertexUv === true ) {\n\n\t\t\t\tconst vertexUvs = faceVertexUvs[ 0 ][ i ];\n\n\t\t\t\tif ( vertexUvs !== undefined ) {\n\n\t\t\t\t\tthis.uvs.push( vertexUvs[ 0 ], vertexUvs[ 1 ], vertexUvs[ 2 ] );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ', i );\n\n\t\t\t\t\tthis.uvs.push( new Vector2(), new Vector2(), new Vector2() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( hasFaceVertexUv2 === true ) {\n\n\t\t\t\tconst vertexUvs = faceVertexUvs[ 1 ][ i ];\n\n\t\t\t\tif ( vertexUvs !== undefined ) {\n\n\t\t\t\t\tthis.uvs2.push( vertexUvs[ 0 ], vertexUvs[ 1 ], vertexUvs[ 2 ] );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ', i );\n\n\t\t\t\t\tthis.uvs2.push( new Vector2(), new Vector2(), new Vector2() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// morphs\n\n\t\t\tfor ( let j = 0; j < morphTargetsLength; j ++ ) {\n\n\t\t\t\tconst morphTarget = morphTargets[ j ].vertices;\n\n\t\t\t\tmorphTargetsPosition[ j ].data.push( morphTarget[ face.a ], morphTarget[ face.b ], morphTarget[ face.c ] );\n\n\t\t\t}\n\n\t\t\tfor ( let j = 0; j < morphNormalsLength; j ++ ) {\n\n\t\t\t\tconst morphNormal = morphNormals[ j ].vertexNormals[ i ];\n\n\t\t\t\tmorphTargetsNormal[ j ].data.push( morphNormal.a, morphNormal.b, morphNormal.c );\n\n\t\t\t}\n\n\t\t\t// skins\n\n\t\t\tif ( hasSkinIndices ) {\n\n\t\t\t\tthis.skinIndices.push( skinIndices[ face.a ], skinIndices[ face.b ], skinIndices[ face.c ] );\n\n\t\t\t}\n\n\t\t\tif ( hasSkinWeights ) {\n\n\t\t\t\tthis.skinWeights.push( skinWeights[ face.a ], skinWeights[ face.b ], skinWeights[ face.c ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.computeGroups( geometry );\n\n\t\tthis.verticesNeedUpdate = geometry.verticesNeedUpdate;\n\t\tthis.normalsNeedUpdate = geometry.normalsNeedUpdate;\n\t\tthis.colorsNeedUpdate = geometry.colorsNeedUpdate;\n\t\tthis.uvsNeedUpdate = geometry.uvsNeedUpdate;\n\t\tthis.groupsNeedUpdate = geometry.groupsNeedUpdate;\n\n\t\tif ( geometry.boundingSphere !== null ) {\n\n\t\t\tthis.boundingSphere = geometry.boundingSphere.clone();\n\n\t\t}\n\n\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\tthis.boundingBox = geometry.boundingBox.clone();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\nfunction arrayMax( array ) {\n\n\tif ( array.length === 0 ) return - Infinity;\n\n\tlet max = array[ 0 ];\n\n\tfor ( let i = 1, l = array.length; i < l; ++ i ) {\n\n\t\tif ( array[ i ] > max ) max = array[ i ];\n\n\t}\n\n\treturn max;\n\n}\n\nlet _bufferGeometryId = 1; // BufferGeometry uses odd numbers as Id\n\nconst _m1$2 = new Matrix4();\nconst _obj = new Object3D();\nconst _offset = new Vector3();\nconst _box$2 = new Box3();\nconst _boxMorphTargets = new Box3();\nconst _vector$4 = new Vector3();\n\nfunction BufferGeometry() {\n\n\tObject.defineProperty( this, 'id', { value: _bufferGeometryId += 2 } );\n\n\tthis.uuid = MathUtils.generateUUID();\n\n\tthis.name = '';\n\tthis.type = 'BufferGeometry';\n\n\tthis.index = null;\n\tthis.attributes = {};\n\n\tthis.morphAttributes = {};\n\tthis.morphTargetsRelative = false;\n\n\tthis.groups = [];\n\n\tthis.boundingBox = null;\n\tthis.boundingSphere = null;\n\n\tthis.drawRange = { start: 0, count: Infinity };\n\n\tthis.userData = {};\n\n}\n\nBufferGeometry.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: BufferGeometry,\n\n\tisBufferGeometry: true,\n\n\tgetIndex: function () {\n\n\t\treturn this.index;\n\n\t},\n\n\tsetIndex: function ( index ) {\n\n\t\tif ( Array.isArray( index ) ) {\n\n\t\t\tthis.index = new ( arrayMax( index ) > 65535 ? Uint32BufferAttribute : Uint16BufferAttribute )( index, 1 );\n\n\t\t} else {\n\n\t\t\tthis.index = index;\n\n\t\t}\n\n\t},\n\n\tgetAttribute: function ( name ) {\n\n\t\treturn this.attributes[ name ];\n\n\t},\n\n\tsetAttribute: function ( name, attribute ) {\n\n\t\tthis.attributes[ name ] = attribute;\n\n\t\treturn this;\n\n\t},\n\n\tdeleteAttribute: function ( name ) {\n\n\t\tdelete this.attributes[ name ];\n\n\t\treturn this;\n\n\t},\n\n\taddGroup: function ( start, count, materialIndex ) {\n\n\t\tthis.groups.push( {\n\n\t\t\tstart: start,\n\t\t\tcount: count,\n\t\t\tmaterialIndex: materialIndex !== undefined ? materialIndex : 0\n\n\t\t} );\n\n\t},\n\n\tclearGroups: function () {\n\n\t\tthis.groups = [];\n\n\t},\n\n\tsetDrawRange: function ( start, count ) {\n\n\t\tthis.drawRange.start = start;\n\t\tthis.drawRange.count = count;\n\n\t},\n\n\tapplyMatrix4: function ( matrix ) {\n\n\t\tconst position = this.attributes.position;\n\n\t\tif ( position !== undefined ) {\n\n\t\t\tposition.applyMatrix4( matrix );\n\n\t\t\tposition.needsUpdate = true;\n\n\t\t}\n\n\t\tconst normal = this.attributes.normal;\n\n\t\tif ( normal !== undefined ) {\n\n\t\t\tconst normalMatrix = new Matrix3().getNormalMatrix( matrix );\n\n\t\t\tnormal.applyNormalMatrix( normalMatrix );\n\n\t\t\tnormal.needsUpdate = true;\n\n\t\t}\n\n\t\tconst tangent = this.attributes.tangent;\n\n\t\tif ( tangent !== undefined ) {\n\n\t\t\ttangent.transformDirection( matrix );\n\n\t\t\ttangent.needsUpdate = true;\n\n\t\t}\n\n\t\tif ( this.boundingBox !== null ) {\n\n\t\t\tthis.computeBoundingBox();\n\n\t\t}\n\n\t\tif ( this.boundingSphere !== null ) {\n\n\t\t\tthis.computeBoundingSphere();\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\trotateX: function ( angle ) {\n\n\t\t// rotate geometry around world x-axis\n\n\t\t_m1$2.makeRotationX( angle );\n\n\t\tthis.applyMatrix4( _m1$2 );\n\n\t\treturn this;\n\n\t},\n\n\trotateY: function ( angle ) {\n\n\t\t// rotate geometry around world y-axis\n\n\t\t_m1$2.makeRotationY( angle );\n\n\t\tthis.applyMatrix4( _m1$2 );\n\n\t\treturn this;\n\n\t},\n\n\trotateZ: function ( angle ) {\n\n\t\t// rotate geometry around world z-axis\n\n\t\t_m1$2.makeRotationZ( angle );\n\n\t\tthis.applyMatrix4( _m1$2 );\n\n\t\treturn this;\n\n\t},\n\n\ttranslate: function ( x, y, z ) {\n\n\t\t// translate geometry\n\n\t\t_m1$2.makeTranslation( x, y, z );\n\n\t\tthis.applyMatrix4( _m1$2 );\n\n\t\treturn this;\n\n\t},\n\n\tscale: function ( x, y, z ) {\n\n\t\t// scale geometry\n\n\t\t_m1$2.makeScale( x, y, z );\n\n\t\tthis.applyMatrix4( _m1$2 );\n\n\t\treturn this;\n\n\t},\n\n\tlookAt: function ( vector ) {\n\n\t\t_obj.lookAt( vector );\n\n\t\t_obj.updateMatrix();\n\n\t\tthis.applyMatrix4( _obj.matrix );\n\n\t\treturn this;\n\n\t},\n\n\tcenter: function () {\n\n\t\tthis.computeBoundingBox();\n\n\t\tthis.boundingBox.getCenter( _offset ).negate();\n\n\t\tthis.translate( _offset.x, _offset.y, _offset.z );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromObject: function ( object ) {\n\n\t\t// console.log( 'THREE.BufferGeometry.setFromObject(). Converting', object, this );\n\n\t\tconst geometry = object.geometry;\n\n\t\tif ( object.isPoints || object.isLine ) {\n\n\t\t\tconst positions = new Float32BufferAttribute( geometry.vertices.length * 3, 3 );\n\t\t\tconst colors = new Float32BufferAttribute( geometry.colors.length * 3, 3 );\n\n\t\t\tthis.setAttribute( 'position', positions.copyVector3sArray( geometry.vertices ) );\n\t\t\tthis.setAttribute( 'color', colors.copyColorsArray( geometry.colors ) );\n\n\t\t\tif ( geometry.lineDistances && geometry.lineDistances.length === geometry.vertices.length ) {\n\n\t\t\t\tconst lineDistances = new Float32BufferAttribute( geometry.lineDistances.length, 1 );\n\n\t\t\t\tthis.setAttribute( 'lineDistance', lineDistances.copyArray( geometry.lineDistances ) );\n\n\t\t\t}\n\n\t\t\tif ( geometry.boundingSphere !== null ) {\n\n\t\t\t\tthis.boundingSphere = geometry.boundingSphere.clone();\n\n\t\t\t}\n\n\t\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\t\tthis.boundingBox = geometry.boundingBox.clone();\n\n\t\t\t}\n\n\t\t} else if ( object.isMesh ) {\n\n\t\t\tif ( geometry && geometry.isGeometry ) {\n\n\t\t\t\tthis.fromGeometry( geometry );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetFromPoints: function ( points ) {\n\n\t\tconst position = [];\n\n\t\tfor ( let i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\tconst point = points[ i ];\n\t\t\tposition.push( point.x, point.y, point.z || 0 );\n\n\t\t}\n\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( position, 3 ) );\n\n\t\treturn this;\n\n\t},\n\n\tupdateFromObject: function ( object ) {\n\n\t\tlet geometry = object.geometry;\n\n\t\tif ( object.isMesh ) {\n\n\t\t\tlet direct = geometry.__directGeometry;\n\n\t\t\tif ( geometry.elementsNeedUpdate === true ) {\n\n\t\t\t\tdirect = undefined;\n\t\t\t\tgeometry.elementsNeedUpdate = false;\n\n\t\t\t}\n\n\t\t\tif ( direct === undefined ) {\n\n\t\t\t\treturn this.fromGeometry( geometry );\n\n\t\t\t}\n\n\t\t\tdirect.verticesNeedUpdate = geometry.verticesNeedUpdate;\n\t\t\tdirect.normalsNeedUpdate = geometry.normalsNeedUpdate;\n\t\t\tdirect.colorsNeedUpdate = geometry.colorsNeedUpdate;\n\t\t\tdirect.uvsNeedUpdate = geometry.uvsNeedUpdate;\n\t\t\tdirect.groupsNeedUpdate = geometry.groupsNeedUpdate;\n\n\t\t\tgeometry.verticesNeedUpdate = false;\n\t\t\tgeometry.normalsNeedUpdate = false;\n\t\t\tgeometry.colorsNeedUpdate = false;\n\t\t\tgeometry.uvsNeedUpdate = false;\n\t\t\tgeometry.groupsNeedUpdate = false;\n\n\t\t\tgeometry = direct;\n\n\t\t}\n\n\t\tif ( geometry.verticesNeedUpdate === true ) {\n\n\t\t\tconst attribute = this.attributes.position;\n\n\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\tattribute.copyVector3sArray( geometry.vertices );\n\t\t\t\tattribute.needsUpdate = true;\n\n\t\t\t}\n\n\t\t\tgeometry.verticesNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( geometry.normalsNeedUpdate === true ) {\n\n\t\t\tconst attribute = this.attributes.normal;\n\n\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\tattribute.copyVector3sArray( geometry.normals );\n\t\t\t\tattribute.needsUpdate = true;\n\n\t\t\t}\n\n\t\t\tgeometry.normalsNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( geometry.colorsNeedUpdate === true ) {\n\n\t\t\tconst attribute = this.attributes.color;\n\n\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\tattribute.copyColorsArray( geometry.colors );\n\t\t\t\tattribute.needsUpdate = true;\n\n\t\t\t}\n\n\t\t\tgeometry.colorsNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( geometry.uvsNeedUpdate ) {\n\n\t\t\tconst attribute = this.attributes.uv;\n\n\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\tattribute.copyVector2sArray( geometry.uvs );\n\t\t\t\tattribute.needsUpdate = true;\n\n\t\t\t}\n\n\t\t\tgeometry.uvsNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( geometry.lineDistancesNeedUpdate ) {\n\n\t\t\tconst attribute = this.attributes.lineDistance;\n\n\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\tattribute.copyArray( geometry.lineDistances );\n\t\t\t\tattribute.needsUpdate = true;\n\n\t\t\t}\n\n\t\t\tgeometry.lineDistancesNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( geometry.groupsNeedUpdate ) {\n\n\t\t\tgeometry.computeGroups( object.geometry );\n\t\t\tthis.groups = geometry.groups;\n\n\t\t\tgeometry.groupsNeedUpdate = false;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tfromGeometry: function ( geometry ) {\n\n\t\tgeometry.__directGeometry = new DirectGeometry().fromGeometry( geometry );\n\n\t\treturn this.fromDirectGeometry( geometry.__directGeometry );\n\n\t},\n\n\tfromDirectGeometry: function ( geometry ) {\n\n\t\tconst positions = new Float32Array( geometry.vertices.length * 3 );\n\t\tthis.setAttribute( 'position', new BufferAttribute( positions, 3 ).copyVector3sArray( geometry.vertices ) );\n\n\t\tif ( geometry.normals.length > 0 ) {\n\n\t\t\tconst normals = new Float32Array( geometry.normals.length * 3 );\n\t\t\tthis.setAttribute( 'normal', new BufferAttribute( normals, 3 ).copyVector3sArray( geometry.normals ) );\n\n\t\t}\n\n\t\tif ( geometry.colors.length > 0 ) {\n\n\t\t\tconst colors = new Float32Array( geometry.colors.length * 3 );\n\t\t\tthis.setAttribute( 'color', new BufferAttribute( colors, 3 ).copyColorsArray( geometry.colors ) );\n\n\t\t}\n\n\t\tif ( geometry.uvs.length > 0 ) {\n\n\t\t\tconst uvs = new Float32Array( geometry.uvs.length * 2 );\n\t\t\tthis.setAttribute( 'uv', new BufferAttribute( uvs, 2 ).copyVector2sArray( geometry.uvs ) );\n\n\t\t}\n\n\t\tif ( geometry.uvs2.length > 0 ) {\n\n\t\t\tconst uvs2 = new Float32Array( geometry.uvs2.length * 2 );\n\t\t\tthis.setAttribute( 'uv2', new BufferAttribute( uvs2, 2 ).copyVector2sArray( geometry.uvs2 ) );\n\n\t\t}\n\n\t\t// groups\n\n\t\tthis.groups = geometry.groups;\n\n\t\t// morphs\n\n\t\tfor ( const name in geometry.morphTargets ) {\n\n\t\t\tconst array = [];\n\t\t\tconst morphTargets = geometry.morphTargets[ name ];\n\n\t\t\tfor ( let i = 0, l = morphTargets.length; i < l; i ++ ) {\n\n\t\t\t\tconst morphTarget = morphTargets[ i ];\n\n\t\t\t\tconst attribute = new Float32BufferAttribute( morphTarget.data.length * 3, 3 );\n\t\t\t\tattribute.name = morphTarget.name;\n\n\t\t\t\tarray.push( attribute.copyVector3sArray( morphTarget.data ) );\n\n\t\t\t}\n\n\t\t\tthis.morphAttributes[ name ] = array;\n\n\t\t}\n\n\t\t// skinning\n\n\t\tif ( geometry.skinIndices.length > 0 ) {\n\n\t\t\tconst skinIndices = new Float32BufferAttribute( geometry.skinIndices.length * 4, 4 );\n\t\t\tthis.setAttribute( 'skinIndex', skinIndices.copyVector4sArray( geometry.skinIndices ) );\n\n\t\t}\n\n\t\tif ( geometry.skinWeights.length > 0 ) {\n\n\t\t\tconst skinWeights = new Float32BufferAttribute( geometry.skinWeights.length * 4, 4 );\n\t\t\tthis.setAttribute( 'skinWeight', skinWeights.copyVector4sArray( geometry.skinWeights ) );\n\n\t\t}\n\n\t\t//\n\n\t\tif ( geometry.boundingSphere !== null ) {\n\n\t\t\tthis.boundingSphere = geometry.boundingSphere.clone();\n\n\t\t}\n\n\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\tthis.boundingBox = geometry.boundingBox.clone();\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcomputeBoundingBox: function () {\n\n\t\tif ( this.boundingBox === null ) {\n\n\t\t\tthis.boundingBox = new Box3();\n\n\t\t}\n\n\t\tconst position = this.attributes.position;\n\t\tconst morphAttributesPosition = this.morphAttributes.position;\n\n\t\tif ( position && position.isGLBufferAttribute ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingBox(): GLBufferAttribute requires a manual bounding box. Alternatively set \"mesh.frustumCulled\" to \"false\".', this );\n\n\t\t\tthis.boundingBox.set(\n\t\t\t\tnew Vector3( - Infinity, - Infinity, - Infinity ),\n\t\t\t\tnew Vector3( + Infinity, + Infinity, + Infinity )\n\t\t\t);\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( position !== undefined ) {\n\n\t\t\tthis.boundingBox.setFromBufferAttribute( position );\n\n\t\t\t// process morph attributes if present\n\n\t\t\tif ( morphAttributesPosition ) {\n\n\t\t\t\tfor ( let i = 0, il = morphAttributesPosition.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst morphAttribute = morphAttributesPosition[ i ];\n\t\t\t\t\t_box$2.setFromBufferAttribute( morphAttribute );\n\n\t\t\t\t\tif ( this.morphTargetsRelative ) {\n\n\t\t\t\t\t\t_vector$4.addVectors( this.boundingBox.min, _box$2.min );\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _vector$4 );\n\n\t\t\t\t\t\t_vector$4.addVectors( this.boundingBox.max, _box$2.max );\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _vector$4 );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _box$2.min );\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _box$2.max );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tthis.boundingBox.makeEmpty();\n\n\t\t}\n\n\t\tif ( isNaN( this.boundingBox.min.x ) || isNaN( this.boundingBox.min.y ) || isNaN( this.boundingBox.min.z ) ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingBox(): Computed min/max have NaN values. The \"position\" attribute is likely to have NaN values.', this );\n\n\t\t}\n\n\t},\n\n\tcomputeBoundingSphere: function () {\n\n\t\tif ( this.boundingSphere === null ) {\n\n\t\t\tthis.boundingSphere = new Sphere();\n\n\t\t}\n\n\t\tconst position = this.attributes.position;\n\t\tconst morphAttributesPosition = this.morphAttributes.position;\n\n\t\tif ( position && position.isGLBufferAttribute ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingSphere(): GLBufferAttribute requires a manual bounding sphere. Alternatively set \"mesh.frustumCulled\" to \"false\".', this );\n\n\t\t\tthis.boundingSphere.set( new Vector3(), Infinity );\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( position ) {\n\n\t\t\t// first, find the center of the bounding sphere\n\n\t\t\tconst center = this.boundingSphere.center;\n\n\t\t\t_box$2.setFromBufferAttribute( position );\n\n\t\t\t// process morph attributes if present\n\n\t\t\tif ( morphAttributesPosition ) {\n\n\t\t\t\tfor ( let i = 0, il = morphAttributesPosition.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst morphAttribute = morphAttributesPosition[ i ];\n\t\t\t\t\t_boxMorphTargets.setFromBufferAttribute( morphAttribute );\n\n\t\t\t\t\tif ( this.morphTargetsRelative ) {\n\n\t\t\t\t\t\t_vector$4.addVectors( _box$2.min, _boxMorphTargets.min );\n\t\t\t\t\t\t_box$2.expandByPoint( _vector$4 );\n\n\t\t\t\t\t\t_vector$4.addVectors( _box$2.max, _boxMorphTargets.max );\n\t\t\t\t\t\t_box$2.expandByPoint( _vector$4 );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t_box$2.expandByPoint( _boxMorphTargets.min );\n\t\t\t\t\t\t_box$2.expandByPoint( _boxMorphTargets.max );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t_box$2.getCenter( center );\n\n\t\t\t// second, try to find a boundingSphere with a radius smaller than the\n\t\t\t// boundingSphere of the boundingBox: sqrt(3) smaller in the best case\n\n\t\t\tlet maxRadiusSq = 0;\n\n\t\t\tfor ( let i = 0, il = position.count; i < il; i ++ ) {\n\n\t\t\t\t_vector$4.fromBufferAttribute( position, i );\n\n\t\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( _vector$4 ) );\n\n\t\t\t}\n\n\t\t\t// process morph attributes if present\n\n\t\t\tif ( morphAttributesPosition ) {\n\n\t\t\t\tfor ( let i = 0, il = morphAttributesPosition.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst morphAttribute = morphAttributesPosition[ i ];\n\t\t\t\t\tconst morphTargetsRelative = this.morphTargetsRelative;\n\n\t\t\t\t\tfor ( let j = 0, jl = morphAttribute.count; j < jl; j ++ ) {\n\n\t\t\t\t\t\t_vector$4.fromBufferAttribute( morphAttribute, j );\n\n\t\t\t\t\t\tif ( morphTargetsRelative ) {\n\n\t\t\t\t\t\t\t_offset.fromBufferAttribute( position, j );\n\t\t\t\t\t\t\t_vector$4.add( _offset );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( _vector$4 ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.boundingSphere.radius = Math.sqrt( maxRadiusSq );\n\n\t\t\tif ( isNaN( this.boundingSphere.radius ) ) {\n\n\t\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The \"position\" attribute is likely to have NaN values.', this );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\tcomputeFaceNormals: function () {\n\n\t\t// backwards compatibility\n\n\t},\n\n\tcomputeVertexNormals: function () {\n\n\t\tconst index = this.index;\n\t\tconst positionAttribute = this.getAttribute( 'position' );\n\n\t\tif ( positionAttribute !== undefined ) {\n\n\t\t\tlet normalAttribute = this.getAttribute( 'normal' );\n\n\t\t\tif ( normalAttribute === undefined ) {\n\n\t\t\t\tnormalAttribute = new BufferAttribute( new Float32Array( positionAttribute.count * 3 ), 3 );\n\t\t\t\tthis.setAttribute( 'normal', normalAttribute );\n\n\t\t\t} else {\n\n\t\t\t\t// reset existing normals to zero\n\n\t\t\t\tfor ( let i = 0, il = normalAttribute.count; i < il; i ++ ) {\n\n\t\t\t\t\tnormalAttribute.setXYZ( i, 0, 0, 0 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst pA = new Vector3(), pB = new Vector3(), pC = new Vector3();\n\t\t\tconst nA = new Vector3(), nB = new Vector3(), nC = new Vector3();\n\t\t\tconst cb = new Vector3(), ab = new Vector3();\n\n\t\t\t// indexed elements\n\n\t\t\tif ( index ) {\n\n\t\t\t\tfor ( let i = 0, il = index.count; i < il; i += 3 ) {\n\n\t\t\t\t\tconst vA = index.getX( i + 0 );\n\t\t\t\t\tconst vB = index.getX( i + 1 );\n\t\t\t\t\tconst vC = index.getX( i + 2 );\n\n\t\t\t\t\tpA.fromBufferAttribute( positionAttribute, vA );\n\t\t\t\t\tpB.fromBufferAttribute( positionAttribute, vB );\n\t\t\t\t\tpC.fromBufferAttribute( positionAttribute, vC );\n\n\t\t\t\t\tcb.subVectors( pC, pB );\n\t\t\t\t\tab.subVectors( pA, pB );\n\t\t\t\t\tcb.cross( ab );\n\n\t\t\t\t\tnA.fromBufferAttribute( normalAttribute, vA );\n\t\t\t\t\tnB.fromBufferAttribute( normalAttribute, vB );\n\t\t\t\t\tnC.fromBufferAttribute( normalAttribute, vC );\n\n\t\t\t\t\tnA.add( cb );\n\t\t\t\t\tnB.add( cb );\n\t\t\t\t\tnC.add( cb );\n\n\t\t\t\t\tnormalAttribute.setXYZ( vA, nA.x, nA.y, nA.z );\n\t\t\t\t\tnormalAttribute.setXYZ( vB, nB.x, nB.y, nB.z );\n\t\t\t\t\tnormalAttribute.setXYZ( vC, nC.x, nC.y, nC.z );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// non-indexed elements (unconnected triangle soup)\n\n\t\t\t\tfor ( let i = 0, il = positionAttribute.count; i < il; i += 3 ) {\n\n\t\t\t\t\tpA.fromBufferAttribute( positionAttribute, i + 0 );\n\t\t\t\t\tpB.fromBufferAttribute( positionAttribute, i + 1 );\n\t\t\t\t\tpC.fromBufferAttribute( positionAttribute, i + 2 );\n\n\t\t\t\t\tcb.subVectors( pC, pB );\n\t\t\t\t\tab.subVectors( pA, pB );\n\t\t\t\t\tcb.cross( ab );\n\n\t\t\t\t\tnormalAttribute.setXYZ( i + 0, cb.x, cb.y, cb.z );\n\t\t\t\t\tnormalAttribute.setXYZ( i + 1, cb.x, cb.y, cb.z );\n\t\t\t\t\tnormalAttribute.setXYZ( i + 2, cb.x, cb.y, cb.z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.normalizeNormals();\n\n\t\t\tnormalAttribute.needsUpdate = true;\n\n\t\t}\n\n\t},\n\n\tmerge: function ( geometry, offset ) {\n\n\t\tif ( ! ( geometry && geometry.isBufferGeometry ) ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry.merge(): geometry not an instance of THREE.BufferGeometry.', geometry );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( offset === undefined ) {\n\n\t\t\toffset = 0;\n\n\t\t\tconsole.warn(\n\t\t\t\t'THREE.BufferGeometry.merge(): Overwriting original geometry, starting at offset=0. '\n\t\t\t\t+ 'Use BufferGeometryUtils.mergeBufferGeometries() for lossless merge.'\n\t\t\t);\n\n\t\t}\n\n\t\tconst attributes = this.attributes;\n\n\t\tfor ( const key in attributes ) {\n\n\t\t\tif ( geometry.attributes[ key ] === undefined ) continue;\n\n\t\t\tconst attribute1 = attributes[ key ];\n\t\t\tconst attributeArray1 = attribute1.array;\n\n\t\t\tconst attribute2 = geometry.attributes[ key ];\n\t\t\tconst attributeArray2 = attribute2.array;\n\n\t\t\tconst attributeOffset = attribute2.itemSize * offset;\n\t\t\tconst length = Math.min( attributeArray2.length, attributeArray1.length - attributeOffset );\n\n\t\t\tfor ( let i = 0, j = attributeOffset; i < length; i ++, j ++ ) {\n\n\t\t\t\tattributeArray1[ j ] = attributeArray2[ i ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tnormalizeNormals: function () {\n\n\t\tconst normals = this.attributes.normal;\n\n\t\tfor ( let i = 0, il = normals.count; i < il; i ++ ) {\n\n\t\t\t_vector$4.fromBufferAttribute( normals, i );\n\n\t\t\t_vector$4.normalize();\n\n\t\t\tnormals.setXYZ( i, _vector$4.x, _vector$4.y, _vector$4.z );\n\n\t\t}\n\n\t},\n\n\ttoNonIndexed: function () {\n\n\t\tfunction convertBufferAttribute( attribute, indices ) {\n\n\t\t\tconst array = attribute.array;\n\t\t\tconst itemSize = attribute.itemSize;\n\t\t\tconst normalized = attribute.normalized;\n\n\t\t\tconst array2 = new array.constructor( indices.length * itemSize );\n\n\t\t\tlet index = 0, index2 = 0;\n\n\t\t\tfor ( let i = 0, l = indices.length; i < l; i ++ ) {\n\n\t\t\t\tindex = indices[ i ] * itemSize;\n\n\t\t\t\tfor ( let j = 0; j < itemSize; j ++ ) {\n\n\t\t\t\t\tarray2[ index2 ++ ] = array[ index ++ ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn new BufferAttribute( array2, itemSize, normalized );\n\n\t\t}\n\n\t\t//\n\n\t\tif ( this.index === null ) {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry.toNonIndexed(): Geometry is already non-indexed.' );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst geometry2 = new BufferGeometry();\n\n\t\tconst indices = this.index.array;\n\t\tconst attributes = this.attributes;\n\n\t\t// attributes\n\n\t\tfor ( const name in attributes ) {\n\n\t\t\tconst attribute = attributes[ name ];\n\n\t\t\tconst newAttribute = convertBufferAttribute( attribute, indices );\n\n\t\t\tgeometry2.setAttribute( name, newAttribute );\n\n\t\t}\n\n\t\t// morph attributes\n\n\t\tconst morphAttributes = this.morphAttributes;\n\n\t\tfor ( const name in morphAttributes ) {\n\n\t\t\tconst morphArray = [];\n\t\t\tconst morphAttribute = morphAttributes[ name ]; // morphAttribute: array of Float32BufferAttributes\n\n\t\t\tfor ( let i = 0, il = morphAttribute.length; i < il; i ++ ) {\n\n\t\t\t\tconst attribute = morphAttribute[ i ];\n\n\t\t\t\tconst newAttribute = convertBufferAttribute( attribute, indices );\n\n\t\t\t\tmorphArray.push( newAttribute );\n\n\t\t\t}\n\n\t\t\tgeometry2.morphAttributes[ name ] = morphArray;\n\n\t\t}\n\n\t\tgeometry2.morphTargetsRelative = this.morphTargetsRelative;\n\n\t\t// groups\n\n\t\tconst groups = this.groups;\n\n\t\tfor ( let i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\tconst group = groups[ i ];\n\t\t\tgeometry2.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t}\n\n\t\treturn geometry2;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'BufferGeometry',\n\t\t\t\tgenerator: 'BufferGeometry.toJSON'\n\t\t\t}\n\t\t};\n\n\t\t// standard BufferGeometry serialization\n\n\t\tdata.uuid = this.uuid;\n\t\tdata.type = this.type;\n\t\tif ( this.name !== '' ) data.name = this.name;\n\t\tif ( Object.keys( this.userData ).length > 0 ) data.userData = this.userData;\n\n\t\tif ( this.parameters !== undefined ) {\n\n\t\t\tconst parameters = this.parameters;\n\n\t\t\tfor ( const key in parameters ) {\n\n\t\t\t\tif ( parameters[ key ] !== undefined ) data[ key ] = parameters[ key ];\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tdata.data = { attributes: {} };\n\n\t\tconst index = this.index;\n\n\t\tif ( index !== null ) {\n\n\t\t\tdata.data.index = {\n\t\t\t\ttype: index.array.constructor.name,\n\t\t\t\tarray: Array.prototype.slice.call( index.array )\n\t\t\t};\n\n\t\t}\n\n\t\tconst attributes = this.attributes;\n\n\t\tfor ( const key in attributes ) {\n\n\t\t\tconst attribute = attributes[ key ];\n\n\t\t\tconst attributeData = attribute.toJSON( data.data );\n\n\t\t\tif ( attribute.name !== '' ) attributeData.name = attribute.name;\n\n\t\t\tdata.data.attributes[ key ] = attributeData;\n\n\t\t}\n\n\t\tconst morphAttributes = {};\n\t\tlet hasMorphAttributes = false;\n\n\t\tfor ( const key in this.morphAttributes ) {\n\n\t\t\tconst attributeArray = this.morphAttributes[ key ];\n\n\t\t\tconst array = [];\n\n\t\t\tfor ( let i = 0, il = attributeArray.length; i < il; i ++ ) {\n\n\t\t\t\tconst attribute = attributeArray[ i ];\n\n\t\t\t\tconst attributeData = attribute.toJSON( data.data );\n\n\t\t\t\tif ( attribute.name !== '' ) attributeData.name = attribute.name;\n\n\t\t\t\tarray.push( attributeData );\n\n\t\t\t}\n\n\t\t\tif ( array.length > 0 ) {\n\n\t\t\t\tmorphAttributes[ key ] = array;\n\n\t\t\t\thasMorphAttributes = true;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( hasMorphAttributes ) {\n\n\t\t\tdata.data.morphAttributes = morphAttributes;\n\t\t\tdata.data.morphTargetsRelative = this.morphTargetsRelative;\n\n\t\t}\n\n\t\tconst groups = this.groups;\n\n\t\tif ( groups.length > 0 ) {\n\n\t\t\tdata.data.groups = JSON.parse( JSON.stringify( groups ) );\n\n\t\t}\n\n\t\tconst boundingSphere = this.boundingSphere;\n\n\t\tif ( boundingSphere !== null ) {\n\n\t\t\tdata.data.boundingSphere = {\n\t\t\t\tcenter: boundingSphere.center.toArray(),\n\t\t\t\tradius: boundingSphere.radius\n\t\t\t};\n\n\t\t}\n\n\t\treturn data;\n\n\t},\n\n\tclone: function () {\n\n\t\t/*\n\t\t // Handle primitives\n\n\t\t const parameters = this.parameters;\n\n\t\t if ( parameters !== undefined ) {\n\n\t\t const values = [];\n\n\t\t for ( const key in parameters ) {\n\n\t\t values.push( parameters[ key ] );\n\n\t\t }\n\n\t\t const geometry = Object.create( this.constructor.prototype );\n\t\t this.constructor.apply( geometry, values );\n\t\t return geometry;\n\n\t\t }\n\n\t\t return new this.constructor().copy( this );\n\t\t */\n\n\t\treturn new BufferGeometry().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\t// reset\n\n\t\tthis.index = null;\n\t\tthis.attributes = {};\n\t\tthis.morphAttributes = {};\n\t\tthis.groups = [];\n\t\tthis.boundingBox = null;\n\t\tthis.boundingSphere = null;\n\n\t\t// used for storing cloned, shared data\n\n\t\tconst data = {};\n\n\t\t// name\n\n\t\tthis.name = source.name;\n\n\t\t// index\n\n\t\tconst index = source.index;\n\n\t\tif ( index !== null ) {\n\n\t\t\tthis.setIndex( index.clone( data ) );\n\n\t\t}\n\n\t\t// attributes\n\n\t\tconst attributes = source.attributes;\n\n\t\tfor ( const name in attributes ) {\n\n\t\t\tconst attribute = attributes[ name ];\n\t\t\tthis.setAttribute( name, attribute.clone( data ) );\n\n\t\t}\n\n\t\t// morph attributes\n\n\t\tconst morphAttributes = source.morphAttributes;\n\n\t\tfor ( const name in morphAttributes ) {\n\n\t\t\tconst array = [];\n\t\t\tconst morphAttribute = morphAttributes[ name ]; // morphAttribute: array of Float32BufferAttributes\n\n\t\t\tfor ( let i = 0, l = morphAttribute.length; i < l; i ++ ) {\n\n\t\t\t\tarray.push( morphAttribute[ i ].clone( data ) );\n\n\t\t\t}\n\n\t\t\tthis.morphAttributes[ name ] = array;\n\n\t\t}\n\n\t\tthis.morphTargetsRelative = source.morphTargetsRelative;\n\n\t\t// groups\n\n\t\tconst groups = source.groups;\n\n\t\tfor ( let i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\tconst group = groups[ i ];\n\t\t\tthis.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t}\n\n\t\t// bounding box\n\n\t\tconst boundingBox = source.boundingBox;\n\n\t\tif ( boundingBox !== null ) {\n\n\t\t\tthis.boundingBox = boundingBox.clone();\n\n\t\t}\n\n\t\t// bounding sphere\n\n\t\tconst boundingSphere = source.boundingSphere;\n\n\t\tif ( boundingSphere !== null ) {\n\n\t\t\tthis.boundingSphere = boundingSphere.clone();\n\n\t\t}\n\n\t\t// draw range\n\n\t\tthis.drawRange.start = source.drawRange.start;\n\t\tthis.drawRange.count = source.drawRange.count;\n\n\t\t// user data\n\n\t\tthis.userData = source.userData;\n\n\t\treturn this;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n} );\n\nconst _inverseMatrix = new Matrix4();\nconst _ray = new Ray();\nconst _sphere = new Sphere();\n\nconst _vA = new Vector3();\nconst _vB = new Vector3();\nconst _vC = new Vector3();\n\nconst _tempA = new Vector3();\nconst _tempB = new Vector3();\nconst _tempC = new Vector3();\n\nconst _morphA = new Vector3();\nconst _morphB = new Vector3();\nconst _morphC = new Vector3();\n\nconst _uvA = new Vector2();\nconst _uvB = new Vector2();\nconst _uvC = new Vector2();\n\nconst _intersectionPoint = new Vector3();\nconst _intersectionPointWorld = new Vector3();\n\nfunction Mesh( geometry, material ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Mesh';\n\n\tthis.geometry = geometry !== undefined ? geometry : new BufferGeometry();\n\tthis.material = material !== undefined ? material : new MeshBasicMaterial();\n\n\tthis.updateMorphTargets();\n\n}\n\nMesh.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Mesh,\n\n\tisMesh: true,\n\n\tcopy: function ( source ) {\n\n\t\tObject3D.prototype.copy.call( this, source );\n\n\t\tif ( source.morphTargetInfluences !== undefined ) {\n\n\t\t\tthis.morphTargetInfluences = source.morphTargetInfluences.slice();\n\n\t\t}\n\n\t\tif ( source.morphTargetDictionary !== undefined ) {\n\n\t\t\tthis.morphTargetDictionary = Object.assign( {}, source.morphTargetDictionary );\n\n\t\t}\n\n\t\tthis.material = source.material;\n\t\tthis.geometry = source.geometry;\n\n\t\treturn this;\n\n\t},\n\n\tupdateMorphTargets: function () {\n\n\t\tconst geometry = this.geometry;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tconst morphAttributes = geometry.morphAttributes;\n\t\t\tconst keys = Object.keys( morphAttributes );\n\n\t\t\tif ( keys.length > 0 ) {\n\n\t\t\t\tconst morphAttribute = morphAttributes[ keys[ 0 ] ];\n\n\t\t\t\tif ( morphAttribute !== undefined ) {\n\n\t\t\t\t\tthis.morphTargetInfluences = [];\n\t\t\t\t\tthis.morphTargetDictionary = {};\n\n\t\t\t\t\tfor ( let m = 0, ml = morphAttribute.length; m < ml; m ++ ) {\n\n\t\t\t\t\t\tconst name = morphAttribute[ m ].name || String( m );\n\n\t\t\t\t\t\tthis.morphTargetInfluences.push( 0 );\n\t\t\t\t\t\tthis.morphTargetDictionary[ name ] = m;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst morphTargets = geometry.morphTargets;\n\n\t\t\tif ( morphTargets !== undefined && morphTargets.length > 0 ) {\n\n\t\t\t\tconsole.error( 'THREE.Mesh.updateMorphTargets() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.' );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\traycast: function ( raycaster, intersects ) {\n\n\t\tconst geometry = this.geometry;\n\t\tconst material = this.material;\n\t\tconst matrixWorld = this.matrixWorld;\n\n\t\tif ( material === undefined ) return;\n\n\t\t// Checking boundingSphere distance to ray\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere.copy( geometry.boundingSphere );\n\t\t_sphere.applyMatrix4( matrixWorld );\n\n\t\tif ( raycaster.ray.intersectsSphere( _sphere ) === false ) return;\n\n\t\t//\n\n\t\t_inverseMatrix.getInverse( matrixWorld );\n\t\t_ray.copy( raycaster.ray ).applyMatrix4( _inverseMatrix );\n\n\t\t// Check boundingBox before continuing\n\n\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\tif ( _ray.intersectsBox( geometry.boundingBox ) === false ) return;\n\n\t\t}\n\n\t\tlet intersection;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tconst index = geometry.index;\n\t\t\tconst position = geometry.attributes.position;\n\t\t\tconst morphPosition = geometry.morphAttributes.position;\n\t\t\tconst morphTargetsRelative = geometry.morphTargetsRelative;\n\t\t\tconst uv = geometry.attributes.uv;\n\t\t\tconst uv2 = geometry.attributes.uv2;\n\t\t\tconst groups = geometry.groups;\n\t\t\tconst drawRange = geometry.drawRange;\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\t// indexed buffer geometry\n\n\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\tfor ( let i = 0, il = groups.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tconst group = groups[ i ];\n\t\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\t\tconst start = Math.max( group.start, drawRange.start );\n\t\t\t\t\t\tconst end = Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) );\n\n\t\t\t\t\t\tfor ( let j = start, jl = end; j < jl; j += 3 ) {\n\n\t\t\t\t\t\t\tconst a = index.getX( j );\n\t\t\t\t\t\t\tconst b = index.getX( j + 1 );\n\t\t\t\t\t\t\tconst c = index.getX( j + 2 );\n\n\t\t\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, groupMaterial, raycaster, _ray, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c );\n\n\t\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\t\tintersection.faceIndex = Math.floor( j / 3 ); // triangle number in indexed buffer semantics\n\t\t\t\t\t\t\t\tintersection.face.materialIndex = group.materialIndex;\n\t\t\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\t\t\tconst end = Math.min( index.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\t\t\tfor ( let i = start, il = end; i < il; i += 3 ) {\n\n\t\t\t\t\t\tconst a = index.getX( i );\n\t\t\t\t\t\tconst b = index.getX( i + 1 );\n\t\t\t\t\t\tconst c = index.getX( i + 2 );\n\n\t\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, material, raycaster, _ray, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c );\n\n\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\tintersection.faceIndex = Math.floor( i / 3 ); // triangle number in indexed buffer semantics\n\t\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else if ( position !== undefined ) {\n\n\t\t\t\t// non-indexed buffer geometry\n\n\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\tfor ( let i = 0, il = groups.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tconst group = groups[ i ];\n\t\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\t\tconst start = Math.max( group.start, drawRange.start );\n\t\t\t\t\t\tconst end = Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) );\n\n\t\t\t\t\t\tfor ( let j = start, jl = end; j < jl; j += 3 ) {\n\n\t\t\t\t\t\t\tconst a = j;\n\t\t\t\t\t\t\tconst b = j + 1;\n\t\t\t\t\t\t\tconst c = j + 2;\n\n\t\t\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, groupMaterial, raycaster, _ray, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c );\n\n\t\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\t\tintersection.faceIndex = Math.floor( j / 3 ); // triangle number in non-indexed buffer semantics\n\t\t\t\t\t\t\t\tintersection.face.materialIndex = group.materialIndex;\n\t\t\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\t\t\tconst end = Math.min( position.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\t\t\tfor ( let i = start, il = end; i < il; i += 3 ) {\n\n\t\t\t\t\t\tconst a = i;\n\t\t\t\t\t\tconst b = i + 1;\n\t\t\t\t\t\tconst c = i + 2;\n\n\t\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, material, raycaster, _ray, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c );\n\n\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\tintersection.faceIndex = Math.floor( i / 3 ); // triangle number in non-indexed buffer semantics\n\t\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else if ( geometry.isGeometry ) {\n\n\t\t\tconst isMultiMaterial = Array.isArray( material );\n\n\t\t\tconst vertices = geometry.vertices;\n\t\t\tconst faces = geometry.faces;\n\t\t\tlet uvs;\n\n\t\t\tconst faceVertexUvs = geometry.faceVertexUvs[ 0 ];\n\t\t\tif ( faceVertexUvs.length > 0 ) uvs = faceVertexUvs;\n\n\t\t\tfor ( let f = 0, fl = faces.length; f < fl; f ++ ) {\n\n\t\t\t\tconst face = faces[ f ];\n\t\t\t\tconst faceMaterial = isMultiMaterial ? material[ face.materialIndex ] : material;\n\n\t\t\t\tif ( faceMaterial === undefined ) continue;\n\n\t\t\t\tconst fvA = vertices[ face.a ];\n\t\t\t\tconst fvB = vertices[ face.b ];\n\t\t\t\tconst fvC = vertices[ face.c ];\n\n\t\t\t\tintersection = checkIntersection( this, faceMaterial, raycaster, _ray, fvA, fvB, fvC, _intersectionPoint );\n\n\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\tif ( uvs && uvs[ f ] ) {\n\n\t\t\t\t\t\tconst uvs_f = uvs[ f ];\n\t\t\t\t\t\t_uvA.copy( uvs_f[ 0 ] );\n\t\t\t\t\t\t_uvB.copy( uvs_f[ 1 ] );\n\t\t\t\t\t\t_uvC.copy( uvs_f[ 2 ] );\n\n\t\t\t\t\t\tintersection.uv = Triangle.getUV( _intersectionPoint, fvA, fvB, fvC, _uvA, _uvB, _uvC, new Vector2() );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tintersection.face = face;\n\t\t\t\t\tintersection.faceIndex = f;\n\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n} );\n\nfunction checkIntersection( object, material, raycaster, ray, pA, pB, pC, point ) {\n\n\tlet intersect;\n\n\tif ( material.side === BackSide ) {\n\n\t\tintersect = ray.intersectTriangle( pC, pB, pA, true, point );\n\n\t} else {\n\n\t\tintersect = ray.intersectTriangle( pA, pB, pC, material.side !== DoubleSide, point );\n\n\t}\n\n\tif ( intersect === null ) return null;\n\n\t_intersectionPointWorld.copy( point );\n\t_intersectionPointWorld.applyMatrix4( object.matrixWorld );\n\n\tconst distance = raycaster.ray.origin.distanceTo( _intersectionPointWorld );\n\n\tif ( distance < raycaster.near || distance > raycaster.far ) return null;\n\n\treturn {\n\t\tdistance: distance,\n\t\tpoint: _intersectionPointWorld.clone(),\n\t\tobject: object\n\t};\n\n}\n\nfunction checkBufferGeometryIntersection( object, material, raycaster, ray, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c ) {\n\n\t_vA.fromBufferAttribute( position, a );\n\t_vB.fromBufferAttribute( position, b );\n\t_vC.fromBufferAttribute( position, c );\n\n\tconst morphInfluences = object.morphTargetInfluences;\n\n\tif ( material.morphTargets && morphPosition && morphInfluences ) {\n\n\t\t_morphA.set( 0, 0, 0 );\n\t\t_morphB.set( 0, 0, 0 );\n\t\t_morphC.set( 0, 0, 0 );\n\n\t\tfor ( let i = 0, il = morphPosition.length; i < il; i ++ ) {\n\n\t\t\tconst influence = morphInfluences[ i ];\n\t\t\tconst morphAttribute = morphPosition[ i ];\n\n\t\t\tif ( influence === 0 ) continue;\n\n\t\t\t_tempA.fromBufferAttribute( morphAttribute, a );\n\t\t\t_tempB.fromBufferAttribute( morphAttribute, b );\n\t\t\t_tempC.fromBufferAttribute( morphAttribute, c );\n\n\t\t\tif ( morphTargetsRelative ) {\n\n\t\t\t\t_morphA.addScaledVector( _tempA, influence );\n\t\t\t\t_morphB.addScaledVector( _tempB, influence );\n\t\t\t\t_morphC.addScaledVector( _tempC, influence );\n\n\t\t\t} else {\n\n\t\t\t\t_morphA.addScaledVector( _tempA.sub( _vA ), influence );\n\t\t\t\t_morphB.addScaledVector( _tempB.sub( _vB ), influence );\n\t\t\t\t_morphC.addScaledVector( _tempC.sub( _vC ), influence );\n\n\t\t\t}\n\n\t\t}\n\n\t\t_vA.add( _morphA );\n\t\t_vB.add( _morphB );\n\t\t_vC.add( _morphC );\n\n\t}\n\n\tif ( object.isSkinnedMesh ) {\n\n\t\tobject.boneTransform( a, _vA );\n\t\tobject.boneTransform( b, _vB );\n\t\tobject.boneTransform( c, _vC );\n\n\t}\n\n\tconst intersection = checkIntersection( object, material, raycaster, ray, _vA, _vB, _vC, _intersectionPoint );\n\n\tif ( intersection ) {\n\n\t\tif ( uv ) {\n\n\t\t\t_uvA.fromBufferAttribute( uv, a );\n\t\t\t_uvB.fromBufferAttribute( uv, b );\n\t\t\t_uvC.fromBufferAttribute( uv, c );\n\n\t\t\tintersection.uv = Triangle.getUV( _intersectionPoint, _vA, _vB, _vC, _uvA, _uvB, _uvC, new Vector2() );\n\n\t\t}\n\n\t\tif ( uv2 ) {\n\n\t\t\t_uvA.fromBufferAttribute( uv2, a );\n\t\t\t_uvB.fromBufferAttribute( uv2, b );\n\t\t\t_uvC.fromBufferAttribute( uv2, c );\n\n\t\t\tintersection.uv2 = Triangle.getUV( _intersectionPoint, _vA, _vB, _vC, _uvA, _uvB, _uvC, new Vector2() );\n\n\t\t}\n\n\t\tconst face = new Face3( a, b, c );\n\t\tTriangle.getNormal( _vA, _vB, _vC, face.normal );\n\n\t\tintersection.face = face;\n\n\t}\n\n\treturn intersection;\n\n}\n\nlet _geometryId = 0; // Geometry uses even numbers as Id\nconst _m1$3 = new Matrix4();\nconst _obj$1 = new Object3D();\nconst _offset$1 = new Vector3();\n\nfunction Geometry() {\n\n\tObject.defineProperty( this, 'id', { value: _geometryId += 2 } );\n\n\tthis.uuid = MathUtils.generateUUID();\n\n\tthis.name = '';\n\tthis.type = 'Geometry';\n\n\tthis.vertices = [];\n\tthis.colors = [];\n\tthis.faces = [];\n\tthis.faceVertexUvs = [[]];\n\n\tthis.morphTargets = [];\n\tthis.morphNormals = [];\n\n\tthis.skinWeights = [];\n\tthis.skinIndices = [];\n\n\tthis.lineDistances = [];\n\n\tthis.boundingBox = null;\n\tthis.boundingSphere = null;\n\n\t// update flags\n\n\tthis.elementsNeedUpdate = false;\n\tthis.verticesNeedUpdate = false;\n\tthis.uvsNeedUpdate = false;\n\tthis.normalsNeedUpdate = false;\n\tthis.colorsNeedUpdate = false;\n\tthis.lineDistancesNeedUpdate = false;\n\tthis.groupsNeedUpdate = false;\n\n}\n\nGeometry.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: Geometry,\n\n\tisGeometry: true,\n\n\tapplyMatrix4: function ( matrix ) {\n\n\t\tconst normalMatrix = new Matrix3().getNormalMatrix( matrix );\n\n\t\tfor ( let i = 0, il = this.vertices.length; i < il; i ++ ) {\n\n\t\t\tconst vertex = this.vertices[ i ];\n\t\t\tvertex.applyMatrix4( matrix );\n\n\t\t}\n\n\t\tfor ( let i = 0, il = this.faces.length; i < il; i ++ ) {\n\n\t\t\tconst face = this.faces[ i ];\n\t\t\tface.normal.applyMatrix3( normalMatrix ).normalize();\n\n\t\t\tfor ( let j = 0, jl = face.vertexNormals.length; j < jl; j ++ ) {\n\n\t\t\t\tface.vertexNormals[ j ].applyMatrix3( normalMatrix ).normalize();\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.boundingBox !== null ) {\n\n\t\t\tthis.computeBoundingBox();\n\n\t\t}\n\n\t\tif ( this.boundingSphere !== null ) {\n\n\t\t\tthis.computeBoundingSphere();\n\n\t\t}\n\n\t\tthis.verticesNeedUpdate = true;\n\t\tthis.normalsNeedUpdate = true;\n\n\t\treturn this;\n\n\t},\n\n\trotateX: function ( angle ) {\n\n\t\t// rotate geometry around world x-axis\n\n\t\t_m1$3.makeRotationX( angle );\n\n\t\tthis.applyMatrix4( _m1$3 );\n\n\t\treturn this;\n\n\t},\n\n\trotateY: function ( angle ) {\n\n\t\t// rotate geometry around world y-axis\n\n\t\t_m1$3.makeRotationY( angle );\n\n\t\tthis.applyMatrix4( _m1$3 );\n\n\t\treturn this;\n\n\t},\n\n\trotateZ: function ( angle ) {\n\n\t\t// rotate geometry around world z-axis\n\n\t\t_m1$3.makeRotationZ( angle );\n\n\t\tthis.applyMatrix4( _m1$3 );\n\n\t\treturn this;\n\n\t},\n\n\ttranslate: function ( x, y, z ) {\n\n\t\t// translate geometry\n\n\t\t_m1$3.makeTranslation( x, y, z );\n\n\t\tthis.applyMatrix4( _m1$3 );\n\n\t\treturn this;\n\n\t},\n\n\tscale: function ( x, y, z ) {\n\n\t\t// scale geometry\n\n\t\t_m1$3.makeScale( x, y, z );\n\n\t\tthis.applyMatrix4( _m1$3 );\n\n\t\treturn this;\n\n\t},\n\n\tlookAt: function ( vector ) {\n\n\t\t_obj$1.lookAt( vector );\n\n\t\t_obj$1.updateMatrix();\n\n\t\tthis.applyMatrix4( _obj$1.matrix );\n\n\t\treturn this;\n\n\t},\n\n\tfromBufferGeometry: function ( geometry ) {\n\n\t\tconst scope = this;\n\n\t\tconst index = geometry.index !== null ? geometry.index : undefined;\n\t\tconst attributes = geometry.attributes;\n\n\t\tif ( attributes.position === undefined ) {\n\n\t\t\tconsole.error( 'THREE.Geometry.fromBufferGeometry(): Position attribute required for conversion.' );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst position = attributes.position;\n\t\tconst normal = attributes.normal;\n\t\tconst color = attributes.color;\n\t\tconst uv = attributes.uv;\n\t\tconst uv2 = attributes.uv2;\n\n\t\tif ( uv2 !== undefined ) this.faceVertexUvs[ 1 ] = [];\n\n\t\tfor ( let i = 0; i < position.count; i ++ ) {\n\n\t\t\tscope.vertices.push( new Vector3().fromBufferAttribute( position, i ) );\n\n\t\t\tif ( color !== undefined ) {\n\n\t\t\t\tscope.colors.push( new Color().fromBufferAttribute( color, i ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction addFace( a, b, c, materialIndex ) {\n\n\t\t\tconst vertexColors = ( color === undefined ) ? [] : [\n\t\t\t\tscope.colors[ a ].clone(),\n\t\t\t\tscope.colors[ b ].clone(),\n\t\t\t\tscope.colors[ c ].clone()\n\t\t\t];\n\n\t\t\tconst vertexNormals = ( normal === undefined ) ? [] : [\n\t\t\t\tnew Vector3().fromBufferAttribute( normal, a ),\n\t\t\t\tnew Vector3().fromBufferAttribute( normal, b ),\n\t\t\t\tnew Vector3().fromBufferAttribute( normal, c )\n\t\t\t];\n\n\t\t\tconst face = new Face3( a, b, c, vertexNormals, vertexColors, materialIndex );\n\n\t\t\tscope.faces.push( face );\n\n\t\t\tif ( uv !== undefined ) {\n\n\t\t\t\tscope.faceVertexUvs[ 0 ].push( [\n\t\t\t\t\tnew Vector2().fromBufferAttribute( uv, a ),\n\t\t\t\t\tnew Vector2().fromBufferAttribute( uv, b ),\n\t\t\t\t\tnew Vector2().fromBufferAttribute( uv, c )\n\t\t\t\t] );\n\n\t\t\t}\n\n\t\t\tif ( uv2 !== undefined ) {\n\n\t\t\t\tscope.faceVertexUvs[ 1 ].push( [\n\t\t\t\t\tnew Vector2().fromBufferAttribute( uv2, a ),\n\t\t\t\t\tnew Vector2().fromBufferAttribute( uv2, b ),\n\t\t\t\t\tnew Vector2().fromBufferAttribute( uv2, c )\n\t\t\t\t] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst groups = geometry.groups;\n\n\t\tif ( groups.length > 0 ) {\n\n\t\t\tfor ( let i = 0; i < groups.length; i ++ ) {\n\n\t\t\t\tconst group = groups[ i ];\n\n\t\t\t\tconst start = group.start;\n\t\t\t\tconst count = group.count;\n\n\t\t\t\tfor ( let j = start, jl = start + count; j < jl; j += 3 ) {\n\n\t\t\t\t\tif ( index !== undefined ) {\n\n\t\t\t\t\t\taddFace( index.getX( j ), index.getX( j + 1 ), index.getX( j + 2 ), group.materialIndex );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\taddFace( j, j + 1, j + 2, group.materialIndex );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tif ( index !== undefined ) {\n\n\t\t\t\tfor ( let i = 0; i < index.count; i += 3 ) {\n\n\t\t\t\t\taddFace( index.getX( i ), index.getX( i + 1 ), index.getX( i + 2 ) );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tfor ( let i = 0; i < position.count; i += 3 ) {\n\n\t\t\t\t\taddFace( i, i + 1, i + 2 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.computeFaceNormals();\n\n\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\tthis.boundingBox = geometry.boundingBox.clone();\n\n\t\t}\n\n\t\tif ( geometry.boundingSphere !== null ) {\n\n\t\t\tthis.boundingSphere = geometry.boundingSphere.clone();\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcenter: function () {\n\n\t\tthis.computeBoundingBox();\n\n\t\tthis.boundingBox.getCenter( _offset$1 ).negate();\n\n\t\tthis.translate( _offset$1.x, _offset$1.y, _offset$1.z );\n\n\t\treturn this;\n\n\t},\n\n\tnormalize: function () {\n\n\t\tthis.computeBoundingSphere();\n\n\t\tconst center = this.boundingSphere.center;\n\t\tconst radius = this.boundingSphere.radius;\n\n\t\tconst s = radius === 0 ? 1 : 1.0 / radius;\n\n\t\tconst matrix = new Matrix4();\n\t\tmatrix.set(\n\t\t\ts, 0, 0, - s * center.x,\n\t\t\t0, s, 0, - s * center.y,\n\t\t\t0, 0, s, - s * center.z,\n\t\t\t0, 0, 0, 1\n\t\t);\n\n\t\tthis.applyMatrix4( matrix );\n\n\t\treturn this;\n\n\t},\n\n\tcomputeFaceNormals: function () {\n\n\t\tconst cb = new Vector3(), ab = new Vector3();\n\n\t\tfor ( let f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\tconst face = this.faces[ f ];\n\n\t\t\tconst vA = this.vertices[ face.a ];\n\t\t\tconst vB = this.vertices[ face.b ];\n\t\t\tconst vC = this.vertices[ face.c ];\n\n\t\t\tcb.subVectors( vC, vB );\n\t\t\tab.subVectors( vA, vB );\n\t\t\tcb.cross( ab );\n\n\t\t\tcb.normalize();\n\n\t\t\tface.normal.copy( cb );\n\n\t\t}\n\n\t},\n\n\tcomputeVertexNormals: function ( areaWeighted ) {\n\n\t\tif ( areaWeighted === undefined ) areaWeighted = true;\n\n\t\tconst vertices = new Array( this.vertices.length );\n\n\t\tfor ( let v = 0, vl = this.vertices.length; v < vl; v ++ ) {\n\n\t\t\tvertices[ v ] = new Vector3();\n\n\t\t}\n\n\t\tif ( areaWeighted ) {\n\n\t\t\t// vertex normals weighted by triangle areas\n\t\t\t// http://www.iquilezles.org/www/articles/normals/normals.htm\n\n\t\t\tconst cb = new Vector3(), ab = new Vector3();\n\n\t\t\tfor ( let f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\t\tconst face = this.faces[ f ];\n\n\t\t\t\tconst vA = this.vertices[ face.a ];\n\t\t\t\tconst vB = this.vertices[ face.b ];\n\t\t\t\tconst vC = this.vertices[ face.c ];\n\n\t\t\t\tcb.subVectors( vC, vB );\n\t\t\t\tab.subVectors( vA, vB );\n\t\t\t\tcb.cross( ab );\n\n\t\t\t\tvertices[ face.a ].add( cb );\n\t\t\t\tvertices[ face.b ].add( cb );\n\t\t\t\tvertices[ face.c ].add( cb );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tthis.computeFaceNormals();\n\n\t\t\tfor ( let f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\t\tconst face = this.faces[ f ];\n\n\t\t\t\tvertices[ face.a ].add( face.normal );\n\t\t\t\tvertices[ face.b ].add( face.normal );\n\t\t\t\tvertices[ face.c ].add( face.normal );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfor ( let v = 0, vl = this.vertices.length; v < vl; v ++ ) {\n\n\t\t\tvertices[ v ].normalize();\n\n\t\t}\n\n\t\tfor ( let f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\tconst face = this.faces[ f ];\n\n\t\t\tconst vertexNormals = face.vertexNormals;\n\n\t\t\tif ( vertexNormals.length === 3 ) {\n\n\t\t\t\tvertexNormals[ 0 ].copy( vertices[ face.a ] );\n\t\t\t\tvertexNormals[ 1 ].copy( vertices[ face.b ] );\n\t\t\t\tvertexNormals[ 2 ].copy( vertices[ face.c ] );\n\n\t\t\t} else {\n\n\t\t\t\tvertexNormals[ 0 ] = vertices[ face.a ].clone();\n\t\t\t\tvertexNormals[ 1 ] = vertices[ face.b ].clone();\n\t\t\t\tvertexNormals[ 2 ] = vertices[ face.c ].clone();\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.faces.length > 0 ) {\n\n\t\t\tthis.normalsNeedUpdate = true;\n\n\t\t}\n\n\t},\n\n\tcomputeFlatVertexNormals: function () {\n\n\t\tthis.computeFaceNormals();\n\n\t\tfor ( let f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\tconst face = this.faces[ f ];\n\n\t\t\tconst vertexNormals = face.vertexNormals;\n\n\t\t\tif ( vertexNormals.length === 3 ) {\n\n\t\t\t\tvertexNormals[ 0 ].copy( face.normal );\n\t\t\t\tvertexNormals[ 1 ].copy( face.normal );\n\t\t\t\tvertexNormals[ 2 ].copy( face.normal );\n\n\t\t\t} else {\n\n\t\t\t\tvertexNormals[ 0 ] = face.normal.clone();\n\t\t\t\tvertexNormals[ 1 ] = face.normal.clone();\n\t\t\t\tvertexNormals[ 2 ] = face.normal.clone();\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.faces.length > 0 ) {\n\n\t\t\tthis.normalsNeedUpdate = true;\n\n\t\t}\n\n\t},\n\n\tcomputeMorphNormals: function () {\n\n\t\t// save original normals\n\t\t// - create temp variables on first access\n\t\t//   otherwise just copy (for faster repeated calls)\n\n\t\tfor ( let f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\tconst face = this.faces[ f ];\n\n\t\t\tif ( ! face.__originalFaceNormal ) {\n\n\t\t\t\tface.__originalFaceNormal = face.normal.clone();\n\n\t\t\t} else {\n\n\t\t\t\tface.__originalFaceNormal.copy( face.normal );\n\n\t\t\t}\n\n\t\t\tif ( ! face.__originalVertexNormals ) face.__originalVertexNormals = [];\n\n\t\t\tfor ( let i = 0, il = face.vertexNormals.length; i < il; i ++ ) {\n\n\t\t\t\tif ( ! face.__originalVertexNormals[ i ] ) {\n\n\t\t\t\t\tface.__originalVertexNormals[ i ] = face.vertexNormals[ i ].clone();\n\n\t\t\t\t} else {\n\n\t\t\t\t\tface.__originalVertexNormals[ i ].copy( face.vertexNormals[ i ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// use temp geometry to compute face and vertex normals for each morph\n\n\t\tconst tmpGeo = new Geometry();\n\t\ttmpGeo.faces = this.faces;\n\n\t\tfor ( let i = 0, il = this.morphTargets.length; i < il; i ++ ) {\n\n\t\t\t// create on first access\n\n\t\t\tif ( ! this.morphNormals[ i ] ) {\n\n\t\t\t\tthis.morphNormals[ i ] = {};\n\t\t\t\tthis.morphNormals[ i ].faceNormals = [];\n\t\t\t\tthis.morphNormals[ i ].vertexNormals = [];\n\n\t\t\t\tconst dstNormalsFace = this.morphNormals[ i ].faceNormals;\n\t\t\t\tconst dstNormalsVertex = this.morphNormals[ i ].vertexNormals;\n\n\t\t\t\tfor ( let f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\t\t\tconst faceNormal = new Vector3();\n\t\t\t\t\tconst vertexNormals = { a: new Vector3(), b: new Vector3(), c: new Vector3() };\n\n\t\t\t\t\tdstNormalsFace.push( faceNormal );\n\t\t\t\t\tdstNormalsVertex.push( vertexNormals );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst morphNormals = this.morphNormals[ i ];\n\n\t\t\t// set vertices to morph target\n\n\t\t\ttmpGeo.vertices = this.morphTargets[ i ].vertices;\n\n\t\t\t// compute morph normals\n\n\t\t\ttmpGeo.computeFaceNormals();\n\t\t\ttmpGeo.computeVertexNormals();\n\n\t\t\t// store morph normals\n\n\t\t\tfor ( let f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\t\tconst face = this.faces[ f ];\n\n\t\t\t\tconst faceNormal = morphNormals.faceNormals[ f ];\n\t\t\t\tconst vertexNormals = morphNormals.vertexNormals[ f ];\n\n\t\t\t\tfaceNormal.copy( face.normal );\n\n\t\t\t\tvertexNormals.a.copy( face.vertexNormals[ 0 ] );\n\t\t\t\tvertexNormals.b.copy( face.vertexNormals[ 1 ] );\n\t\t\t\tvertexNormals.c.copy( face.vertexNormals[ 2 ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// restore original normals\n\n\t\tfor ( let f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\tconst face = this.faces[ f ];\n\n\t\t\tface.normal = face.__originalFaceNormal;\n\t\t\tface.vertexNormals = face.__originalVertexNormals;\n\n\t\t}\n\n\t},\n\n\tcomputeBoundingBox: function () {\n\n\t\tif ( this.boundingBox === null ) {\n\n\t\t\tthis.boundingBox = new Box3();\n\n\t\t}\n\n\t\tthis.boundingBox.setFromPoints( this.vertices );\n\n\t},\n\n\tcomputeBoundingSphere: function () {\n\n\t\tif ( this.boundingSphere === null ) {\n\n\t\t\tthis.boundingSphere = new Sphere();\n\n\t\t}\n\n\t\tthis.boundingSphere.setFromPoints( this.vertices );\n\n\t},\n\n\tmerge: function ( geometry, matrix, materialIndexOffset ) {\n\n\t\tif ( ! ( geometry && geometry.isGeometry ) ) {\n\n\t\t\tconsole.error( 'THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.', geometry );\n\t\t\treturn;\n\n\t\t}\n\n\t\tlet normalMatrix;\n\t\tconst vertexOffset = this.vertices.length,\n\t\t\tvertices1 = this.vertices,\n\t\t\tvertices2 = geometry.vertices,\n\t\t\tfaces1 = this.faces,\n\t\t\tfaces2 = geometry.faces,\n\t\t\tcolors1 = this.colors,\n\t\t\tcolors2 = geometry.colors;\n\n\t\tif ( materialIndexOffset === undefined ) materialIndexOffset = 0;\n\n\t\tif ( matrix !== undefined ) {\n\n\t\t\tnormalMatrix = new Matrix3().getNormalMatrix( matrix );\n\n\t\t}\n\n\t\t// vertices\n\n\t\tfor ( let i = 0, il = vertices2.length; i < il; i ++ ) {\n\n\t\t\tconst vertex = vertices2[ i ];\n\n\t\t\tconst vertexCopy = vertex.clone();\n\n\t\t\tif ( matrix !== undefined ) vertexCopy.applyMatrix4( matrix );\n\n\t\t\tvertices1.push( vertexCopy );\n\n\t\t}\n\n\t\t// colors\n\n\t\tfor ( let i = 0, il = colors2.length; i < il; i ++ ) {\n\n\t\t\tcolors1.push( colors2[ i ].clone() );\n\n\t\t}\n\n\t\t// faces\n\n\t\tfor ( let i = 0, il = faces2.length; i < il; i ++ ) {\n\n\t\t\tconst face = faces2[ i ];\n\t\t\tlet normal, color;\n\t\t\tconst faceVertexNormals = face.vertexNormals,\n\t\t\t\tfaceVertexColors = face.vertexColors;\n\n\t\t\tconst faceCopy = new Face3( face.a + vertexOffset, face.b + vertexOffset, face.c + vertexOffset );\n\t\t\tfaceCopy.normal.copy( face.normal );\n\n\t\t\tif ( normalMatrix !== undefined ) {\n\n\t\t\t\tfaceCopy.normal.applyMatrix3( normalMatrix ).normalize();\n\n\t\t\t}\n\n\t\t\tfor ( let j = 0, jl = faceVertexNormals.length; j < jl; j ++ ) {\n\n\t\t\t\tnormal = faceVertexNormals[ j ].clone();\n\n\t\t\t\tif ( normalMatrix !== undefined ) {\n\n\t\t\t\t\tnormal.applyMatrix3( normalMatrix ).normalize();\n\n\t\t\t\t}\n\n\t\t\t\tfaceCopy.vertexNormals.push( normal );\n\n\t\t\t}\n\n\t\t\tfaceCopy.color.copy( face.color );\n\n\t\t\tfor ( let j = 0, jl = faceVertexColors.length; j < jl; j ++ ) {\n\n\t\t\t\tcolor = faceVertexColors[ j ];\n\t\t\t\tfaceCopy.vertexColors.push( color.clone() );\n\n\t\t\t}\n\n\t\t\tfaceCopy.materialIndex = face.materialIndex + materialIndexOffset;\n\n\t\t\tfaces1.push( faceCopy );\n\n\t\t}\n\n\t\t// uvs\n\n\t\tfor ( let i = 0, il = geometry.faceVertexUvs.length; i < il; i ++ ) {\n\n\t\t\tconst faceVertexUvs2 = geometry.faceVertexUvs[ i ];\n\n\t\t\tif ( this.faceVertexUvs[ i ] === undefined ) this.faceVertexUvs[ i ] = [];\n\n\t\t\tfor ( let j = 0, jl = faceVertexUvs2.length; j < jl; j ++ ) {\n\n\t\t\t\tconst uvs2 = faceVertexUvs2[ j ], uvsCopy = [];\n\n\t\t\t\tfor ( let k = 0, kl = uvs2.length; k < kl; k ++ ) {\n\n\t\t\t\t\tuvsCopy.push( uvs2[ k ].clone() );\n\n\t\t\t\t}\n\n\t\t\t\tthis.faceVertexUvs[ i ].push( uvsCopy );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\tmergeMesh: function ( mesh ) {\n\n\t\tif ( ! ( mesh && mesh.isMesh ) ) {\n\n\t\t\tconsole.error( 'THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.', mesh );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( mesh.matrixAutoUpdate ) mesh.updateMatrix();\n\n\t\tthis.merge( mesh.geometry, mesh.matrix );\n\n\t},\n\n\t/*\n\t * Checks for duplicate vertices with hashmap.\n\t * Duplicated vertices are removed\n\t * and faces' vertices are updated.\n\t */\n\n\tmergeVertices: function () {\n\n\t\tconst verticesMap = {}; // Hashmap for looking up vertices by position coordinates (and making sure they are unique)\n\t\tconst unique = [], changes = [];\n\n\t\tconst precisionPoints = 4; // number of decimal points, e.g. 4 for epsilon of 0.0001\n\t\tconst precision = Math.pow( 10, precisionPoints );\n\n\t\tfor ( let i = 0, il = this.vertices.length; i < il; i ++ ) {\n\n\t\t\tconst v = this.vertices[ i ];\n\t\t\tconst key = Math.round( v.x * precision ) + '_' + Math.round( v.y * precision ) + '_' + Math.round( v.z * precision );\n\n\t\t\tif ( verticesMap[ key ] === undefined ) {\n\n\t\t\t\tverticesMap[ key ] = i;\n\t\t\t\tunique.push( this.vertices[ i ] );\n\t\t\t\tchanges[ i ] = unique.length - 1;\n\n\t\t\t} else {\n\n\t\t\t\t//console.log('Duplicate vertex found. ', i, ' could be using ', verticesMap[key]);\n\t\t\t\tchanges[ i ] = changes[ verticesMap[ key ] ];\n\n\t\t\t}\n\n\t\t}\n\n\n\t\t// if faces are completely degenerate after merging vertices, we\n\t\t// have to remove them from the geometry.\n\t\tconst faceIndicesToRemove = [];\n\n\t\tfor ( let i = 0, il = this.faces.length; i < il; i ++ ) {\n\n\t\t\tconst face = this.faces[ i ];\n\n\t\t\tface.a = changes[ face.a ];\n\t\t\tface.b = changes[ face.b ];\n\t\t\tface.c = changes[ face.c ];\n\n\t\t\tconst indices = [ face.a, face.b, face.c ];\n\n\t\t\t// if any duplicate vertices are found in a Face3\n\t\t\t// we have to remove the face as nothing can be saved\n\t\t\tfor ( let n = 0; n < 3; n ++ ) {\n\n\t\t\t\tif ( indices[ n ] === indices[ ( n + 1 ) % 3 ] ) {\n\n\t\t\t\t\tfaceIndicesToRemove.push( i );\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfor ( let i = faceIndicesToRemove.length - 1; i >= 0; i -- ) {\n\n\t\t\tconst idx = faceIndicesToRemove[ i ];\n\n\t\t\tthis.faces.splice( idx, 1 );\n\n\t\t\tfor ( let j = 0, jl = this.faceVertexUvs.length; j < jl; j ++ ) {\n\n\t\t\t\tthis.faceVertexUvs[ j ].splice( idx, 1 );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Use unique set of vertices\n\n\t\tconst diff = this.vertices.length - unique.length;\n\t\tthis.vertices = unique;\n\t\treturn diff;\n\n\t},\n\n\tsetFromPoints: function ( points ) {\n\n\t\tthis.vertices = [];\n\n\t\tfor ( let i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\tconst point = points[ i ];\n\t\t\tthis.vertices.push( new Vector3( point.x, point.y, point.z || 0 ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsortFacesByMaterialIndex: function () {\n\n\t\tconst faces = this.faces;\n\t\tconst length = faces.length;\n\n\t\t// tag faces\n\n\t\tfor ( let i = 0; i < length; i ++ ) {\n\n\t\t\tfaces[ i ]._id = i;\n\n\t\t}\n\n\t\t// sort faces\n\n\t\tfunction materialIndexSort( a, b ) {\n\n\t\t\treturn a.materialIndex - b.materialIndex;\n\n\t\t}\n\n\t\tfaces.sort( materialIndexSort );\n\n\t\t// sort uvs\n\n\t\tconst uvs1 = this.faceVertexUvs[ 0 ];\n\t\tconst uvs2 = this.faceVertexUvs[ 1 ];\n\n\t\tlet newUvs1, newUvs2;\n\n\t\tif ( uvs1 && uvs1.length === length ) newUvs1 = [];\n\t\tif ( uvs2 && uvs2.length === length ) newUvs2 = [];\n\n\t\tfor ( let i = 0; i < length; i ++ ) {\n\n\t\t\tconst id = faces[ i ]._id;\n\n\t\t\tif ( newUvs1 ) newUvs1.push( uvs1[ id ] );\n\t\t\tif ( newUvs2 ) newUvs2.push( uvs2[ id ] );\n\n\t\t}\n\n\t\tif ( newUvs1 ) this.faceVertexUvs[ 0 ] = newUvs1;\n\t\tif ( newUvs2 ) this.faceVertexUvs[ 1 ] = newUvs2;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Geometry',\n\t\t\t\tgenerator: 'Geometry.toJSON'\n\t\t\t}\n\t\t};\n\n\t\t// standard Geometry serialization\n\n\t\tdata.uuid = this.uuid;\n\t\tdata.type = this.type;\n\t\tif ( this.name !== '' ) data.name = this.name;\n\n\t\tif ( this.parameters !== undefined ) {\n\n\t\t\tconst parameters = this.parameters;\n\n\t\t\tfor ( const key in parameters ) {\n\n\t\t\t\tif ( parameters[ key ] !== undefined ) data[ key ] = parameters[ key ];\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tconst vertices = [];\n\n\t\tfor ( let i = 0; i < this.vertices.length; i ++ ) {\n\n\t\t\tconst vertex = this.vertices[ i ];\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t}\n\n\t\tconst faces = [];\n\t\tconst normals = [];\n\t\tconst normalsHash = {};\n\t\tconst colors = [];\n\t\tconst colorsHash = {};\n\t\tconst uvs = [];\n\t\tconst uvsHash = {};\n\n\t\tfor ( let i = 0; i < this.faces.length; i ++ ) {\n\n\t\t\tconst face = this.faces[ i ];\n\n\t\t\tconst hasMaterial = true;\n\t\t\tconst hasFaceUv = false; // deprecated\n\t\t\tconst hasFaceVertexUv = this.faceVertexUvs[ 0 ][ i ] !== undefined;\n\t\t\tconst hasFaceNormal = face.normal.length() > 0;\n\t\t\tconst hasFaceVertexNormal = face.vertexNormals.length > 0;\n\t\t\tconst hasFaceColor = face.color.r !== 1 || face.color.g !== 1 || face.color.b !== 1;\n\t\t\tconst hasFaceVertexColor = face.vertexColors.length > 0;\n\n\t\t\tlet faceType = 0;\n\n\t\t\tfaceType = setBit( faceType, 0, 0 ); // isQuad\n\t\t\tfaceType = setBit( faceType, 1, hasMaterial );\n\t\t\tfaceType = setBit( faceType, 2, hasFaceUv );\n\t\t\tfaceType = setBit( faceType, 3, hasFaceVertexUv );\n\t\t\tfaceType = setBit( faceType, 4, hasFaceNormal );\n\t\t\tfaceType = setBit( faceType, 5, hasFaceVertexNormal );\n\t\t\tfaceType = setBit( faceType, 6, hasFaceColor );\n\t\t\tfaceType = setBit( faceType, 7, hasFaceVertexColor );\n\n\t\t\tfaces.push( faceType );\n\t\t\tfaces.push( face.a, face.b, face.c );\n\t\t\tfaces.push( face.materialIndex );\n\n\t\t\tif ( hasFaceVertexUv ) {\n\n\t\t\t\tconst faceVertexUvs = this.faceVertexUvs[ 0 ][ i ];\n\n\t\t\t\tfaces.push(\n\t\t\t\t\tgetUvIndex( faceVertexUvs[ 0 ] ),\n\t\t\t\t\tgetUvIndex( faceVertexUvs[ 1 ] ),\n\t\t\t\t\tgetUvIndex( faceVertexUvs[ 2 ] )\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t\tif ( hasFaceNormal ) {\n\n\t\t\t\tfaces.push( getNormalIndex( face.normal ) );\n\n\t\t\t}\n\n\t\t\tif ( hasFaceVertexNormal ) {\n\n\t\t\t\tconst vertexNormals = face.vertexNormals;\n\n\t\t\t\tfaces.push(\n\t\t\t\t\tgetNormalIndex( vertexNormals[ 0 ] ),\n\t\t\t\t\tgetNormalIndex( vertexNormals[ 1 ] ),\n\t\t\t\t\tgetNormalIndex( vertexNormals[ 2 ] )\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t\tif ( hasFaceColor ) {\n\n\t\t\t\tfaces.push( getColorIndex( face.color ) );\n\n\t\t\t}\n\n\t\t\tif ( hasFaceVertexColor ) {\n\n\t\t\t\tconst vertexColors = face.vertexColors;\n\n\t\t\t\tfaces.push(\n\t\t\t\t\tgetColorIndex( vertexColors[ 0 ] ),\n\t\t\t\t\tgetColorIndex( vertexColors[ 1 ] ),\n\t\t\t\t\tgetColorIndex( vertexColors[ 2 ] )\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction setBit( value, position, enabled ) {\n\n\t\t\treturn enabled ? value | ( 1 << position ) : value & ( ~ ( 1 << position ) );\n\n\t\t}\n\n\t\tfunction getNormalIndex( normal ) {\n\n\t\t\tconst hash = normal.x.toString() + normal.y.toString() + normal.z.toString();\n\n\t\t\tif ( normalsHash[ hash ] !== undefined ) {\n\n\t\t\t\treturn normalsHash[ hash ];\n\n\t\t\t}\n\n\t\t\tnormalsHash[ hash ] = normals.length / 3;\n\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\treturn normalsHash[ hash ];\n\n\t\t}\n\n\t\tfunction getColorIndex( color ) {\n\n\t\t\tconst hash = color.r.toString() + color.g.toString() + color.b.toString();\n\n\t\t\tif ( colorsHash[ hash ] !== undefined ) {\n\n\t\t\t\treturn colorsHash[ hash ];\n\n\t\t\t}\n\n\t\t\tcolorsHash[ hash ] = colors.length;\n\t\t\tcolors.push( color.getHex() );\n\n\t\t\treturn colorsHash[ hash ];\n\n\t\t}\n\n\t\tfunction getUvIndex( uv ) {\n\n\t\t\tconst hash = uv.x.toString() + uv.y.toString();\n\n\t\t\tif ( uvsHash[ hash ] !== undefined ) {\n\n\t\t\t\treturn uvsHash[ hash ];\n\n\t\t\t}\n\n\t\t\tuvsHash[ hash ] = uvs.length / 2;\n\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\treturn uvsHash[ hash ];\n\n\t\t}\n\n\t\tdata.data = {};\n\n\t\tdata.data.vertices = vertices;\n\t\tdata.data.normals = normals;\n\t\tif ( colors.length > 0 ) data.data.colors = colors;\n\t\tif ( uvs.length > 0 ) data.data.uvs = [ uvs ]; // temporal backward compatibility\n\t\tdata.data.faces = faces;\n\n\t\treturn data;\n\n\t},\n\n\tclone: function () {\n\n\t\t/*\n\t\t // Handle primitives\n\n\t\t const parameters = this.parameters;\n\n\t\t if ( parameters !== undefined ) {\n\n\t\t const values = [];\n\n\t\t for ( const key in parameters ) {\n\n\t\t values.push( parameters[ key ] );\n\n\t\t }\n\n\t\t const geometry = Object.create( this.constructor.prototype );\n\t\t this.constructor.apply( geometry, values );\n\t\t return geometry;\n\n\t\t }\n\n\t\t return new this.constructor().copy( this );\n\t\t */\n\n\t\treturn new Geometry().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\t// reset\n\n\t\tthis.vertices = [];\n\t\tthis.colors = [];\n\t\tthis.faces = [];\n\t\tthis.faceVertexUvs = [[]];\n\t\tthis.morphTargets = [];\n\t\tthis.morphNormals = [];\n\t\tthis.skinWeights = [];\n\t\tthis.skinIndices = [];\n\t\tthis.lineDistances = [];\n\t\tthis.boundingBox = null;\n\t\tthis.boundingSphere = null;\n\n\t\t// name\n\n\t\tthis.name = source.name;\n\n\t\t// vertices\n\n\t\tconst vertices = source.vertices;\n\n\t\tfor ( let i = 0, il = vertices.length; i < il; i ++ ) {\n\n\t\t\tthis.vertices.push( vertices[ i ].clone() );\n\n\t\t}\n\n\t\t// colors\n\n\t\tconst colors = source.colors;\n\n\t\tfor ( let i = 0, il = colors.length; i < il; i ++ ) {\n\n\t\t\tthis.colors.push( colors[ i ].clone() );\n\n\t\t}\n\n\t\t// faces\n\n\t\tconst faces = source.faces;\n\n\t\tfor ( let i = 0, il = faces.length; i < il; i ++ ) {\n\n\t\t\tthis.faces.push( faces[ i ].clone() );\n\n\t\t}\n\n\t\t// face vertex uvs\n\n\t\tfor ( let i = 0, il = source.faceVertexUvs.length; i < il; i ++ ) {\n\n\t\t\tconst faceVertexUvs = source.faceVertexUvs[ i ];\n\n\t\t\tif ( this.faceVertexUvs[ i ] === undefined ) {\n\n\t\t\t\tthis.faceVertexUvs[ i ] = [];\n\n\t\t\t}\n\n\t\t\tfor ( let j = 0, jl = faceVertexUvs.length; j < jl; j ++ ) {\n\n\t\t\t\tconst uvs = faceVertexUvs[ j ], uvsCopy = [];\n\n\t\t\t\tfor ( let k = 0, kl = uvs.length; k < kl; k ++ ) {\n\n\t\t\t\t\tconst uv = uvs[ k ];\n\n\t\t\t\t\tuvsCopy.push( uv.clone() );\n\n\t\t\t\t}\n\n\t\t\t\tthis.faceVertexUvs[ i ].push( uvsCopy );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// morph targets\n\n\t\tconst morphTargets = source.morphTargets;\n\n\t\tfor ( let i = 0, il = morphTargets.length; i < il; i ++ ) {\n\n\t\t\tconst morphTarget = {};\n\t\t\tmorphTarget.name = morphTargets[ i ].name;\n\n\t\t\t// vertices\n\n\t\t\tif ( morphTargets[ i ].vertices !== undefined ) {\n\n\t\t\t\tmorphTarget.vertices = [];\n\n\t\t\t\tfor ( let j = 0, jl = morphTargets[ i ].vertices.length; j < jl; j ++ ) {\n\n\t\t\t\t\tmorphTarget.vertices.push( morphTargets[ i ].vertices[ j ].clone() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// normals\n\n\t\t\tif ( morphTargets[ i ].normals !== undefined ) {\n\n\t\t\t\tmorphTarget.normals = [];\n\n\t\t\t\tfor ( let j = 0, jl = morphTargets[ i ].normals.length; j < jl; j ++ ) {\n\n\t\t\t\t\tmorphTarget.normals.push( morphTargets[ i ].normals[ j ].clone() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.morphTargets.push( morphTarget );\n\n\t\t}\n\n\t\t// morph normals\n\n\t\tconst morphNormals = source.morphNormals;\n\n\t\tfor ( let i = 0, il = morphNormals.length; i < il; i ++ ) {\n\n\t\t\tconst morphNormal = {};\n\n\t\t\t// vertex normals\n\n\t\t\tif ( morphNormals[ i ].vertexNormals !== undefined ) {\n\n\t\t\t\tmorphNormal.vertexNormals = [];\n\n\t\t\t\tfor ( let j = 0, jl = morphNormals[ i ].vertexNormals.length; j < jl; j ++ ) {\n\n\t\t\t\t\tconst srcVertexNormal = morphNormals[ i ].vertexNormals[ j ];\n\t\t\t\t\tconst destVertexNormal = {};\n\n\t\t\t\t\tdestVertexNormal.a = srcVertexNormal.a.clone();\n\t\t\t\t\tdestVertexNormal.b = srcVertexNormal.b.clone();\n\t\t\t\t\tdestVertexNormal.c = srcVertexNormal.c.clone();\n\n\t\t\t\t\tmorphNormal.vertexNormals.push( destVertexNormal );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// face normals\n\n\t\t\tif ( morphNormals[ i ].faceNormals !== undefined ) {\n\n\t\t\t\tmorphNormal.faceNormals = [];\n\n\t\t\t\tfor ( let j = 0, jl = morphNormals[ i ].faceNormals.length; j < jl; j ++ ) {\n\n\t\t\t\t\tmorphNormal.faceNormals.push( morphNormals[ i ].faceNormals[ j ].clone() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.morphNormals.push( morphNormal );\n\n\t\t}\n\n\t\t// skin weights\n\n\t\tconst skinWeights = source.skinWeights;\n\n\t\tfor ( let i = 0, il = skinWeights.length; i < il; i ++ ) {\n\n\t\t\tthis.skinWeights.push( skinWeights[ i ].clone() );\n\n\t\t}\n\n\t\t// skin indices\n\n\t\tconst skinIndices = source.skinIndices;\n\n\t\tfor ( let i = 0, il = skinIndices.length; i < il; i ++ ) {\n\n\t\t\tthis.skinIndices.push( skinIndices[ i ].clone() );\n\n\t\t}\n\n\t\t// line distances\n\n\t\tconst lineDistances = source.lineDistances;\n\n\t\tfor ( let i = 0, il = lineDistances.length; i < il; i ++ ) {\n\n\t\t\tthis.lineDistances.push( lineDistances[ i ] );\n\n\t\t}\n\n\t\t// bounding box\n\n\t\tconst boundingBox = source.boundingBox;\n\n\t\tif ( boundingBox !== null ) {\n\n\t\t\tthis.boundingBox = boundingBox.clone();\n\n\t\t}\n\n\t\t// bounding sphere\n\n\t\tconst boundingSphere = source.boundingSphere;\n\n\t\tif ( boundingSphere !== null ) {\n\n\t\t\tthis.boundingSphere = boundingSphere.clone();\n\n\t\t}\n\n\t\t// update flags\n\n\t\tthis.elementsNeedUpdate = source.elementsNeedUpdate;\n\t\tthis.verticesNeedUpdate = source.verticesNeedUpdate;\n\t\tthis.uvsNeedUpdate = source.uvsNeedUpdate;\n\t\tthis.normalsNeedUpdate = source.normalsNeedUpdate;\n\t\tthis.colorsNeedUpdate = source.colorsNeedUpdate;\n\t\tthis.lineDistancesNeedUpdate = source.lineDistancesNeedUpdate;\n\t\tthis.groupsNeedUpdate = source.groupsNeedUpdate;\n\n\t\treturn this;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n} );\n\n// BoxGeometry\n\nclass BoxGeometry extends Geometry {\n\n\tconstructor( width, height, depth, widthSegments, heightSegments, depthSegments ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'BoxGeometry';\n\n\t\tthis.parameters = {\n\t\t\twidth: width,\n\t\t\theight: height,\n\t\t\tdepth: depth,\n\t\t\twidthSegments: widthSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\tdepthSegments: depthSegments\n\t\t};\n\n\t\tthis.fromBufferGeometry( new BoxBufferGeometry( width, height, depth, widthSegments, heightSegments, depthSegments ) );\n\t\tthis.mergeVertices();\n\n\t}\n\n}\n\n// BoxBufferGeometry\n\nclass BoxBufferGeometry extends BufferGeometry {\n\n\tconstructor( width = 1, height = 1, depth = 1, widthSegments = 1, heightSegments = 1, depthSegments = 1 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'BoxBufferGeometry';\n\n\t\tthis.parameters = {\n\t\t\twidth: width,\n\t\t\theight: height,\n\t\t\tdepth: depth,\n\t\t\twidthSegments: widthSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\tdepthSegments: depthSegments\n\t\t};\n\n\t\tconst scope = this;\n\n\t\t// segments\n\n\t\twidthSegments = Math.floor( widthSegments );\n\t\theightSegments = Math.floor( heightSegments );\n\t\tdepthSegments = Math.floor( depthSegments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tlet numberOfVertices = 0;\n\t\tlet groupStart = 0;\n\n\t\t// build each side of the box geometry\n\n\t\tbuildPlane( 'z', 'y', 'x', - 1, - 1, depth, height, width, depthSegments, heightSegments, 0 ); // px\n\t\tbuildPlane( 'z', 'y', 'x', 1, - 1, depth, height, - width, depthSegments, heightSegments, 1 ); // nx\n\t\tbuildPlane( 'x', 'z', 'y', 1, 1, width, depth, height, widthSegments, depthSegments, 2 ); // py\n\t\tbuildPlane( 'x', 'z', 'y', 1, - 1, width, depth, - height, widthSegments, depthSegments, 3 ); // ny\n\t\tbuildPlane( 'x', 'y', 'z', 1, - 1, width, height, depth, widthSegments, heightSegments, 4 ); // pz\n\t\tbuildPlane( 'x', 'y', 'z', - 1, - 1, width, height, - depth, widthSegments, heightSegments, 5 ); // nz\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t\tfunction buildPlane( u, v, w, udir, vdir, width, height, depth, gridX, gridY, materialIndex ) {\n\n\t\t\tconst segmentWidth = width / gridX;\n\t\t\tconst segmentHeight = height / gridY;\n\n\t\t\tconst widthHalf = width / 2;\n\t\t\tconst heightHalf = height / 2;\n\t\t\tconst depthHalf = depth / 2;\n\n\t\t\tconst gridX1 = gridX + 1;\n\t\t\tconst gridY1 = gridY + 1;\n\n\t\t\tlet vertexCounter = 0;\n\t\t\tlet groupCount = 0;\n\n\t\t\tconst vector = new Vector3();\n\n\t\t\t// generate vertices, normals and uvs\n\n\t\t\tfor ( let iy = 0; iy < gridY1; iy ++ ) {\n\n\t\t\t\tconst y = iy * segmentHeight - heightHalf;\n\n\t\t\t\tfor ( let ix = 0; ix < gridX1; ix ++ ) {\n\n\t\t\t\t\tconst x = ix * segmentWidth - widthHalf;\n\n\t\t\t\t\t// set values to correct vector component\n\n\t\t\t\t\tvector[ u ] = x * udir;\n\t\t\t\t\tvector[ v ] = y * vdir;\n\t\t\t\t\tvector[ w ] = depthHalf;\n\n\t\t\t\t\t// now apply vector to vertex buffer\n\n\t\t\t\t\tvertices.push( vector.x, vector.y, vector.z );\n\n\t\t\t\t\t// set values to correct vector component\n\n\t\t\t\t\tvector[ u ] = 0;\n\t\t\t\t\tvector[ v ] = 0;\n\t\t\t\t\tvector[ w ] = depth > 0 ? 1 : - 1;\n\n\t\t\t\t\t// now apply vector to normal buffer\n\n\t\t\t\t\tnormals.push( vector.x, vector.y, vector.z );\n\n\t\t\t\t\t// uvs\n\n\t\t\t\t\tuvs.push( ix / gridX );\n\t\t\t\t\tuvs.push( 1 - ( iy / gridY ) );\n\n\t\t\t\t\t// counters\n\n\t\t\t\t\tvertexCounter += 1;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// indices\n\n\t\t\t// 1. you need three indices to draw a single face\n\t\t\t// 2. a single segment consists of two faces\n\t\t\t// 3. so we need to generate six (2*3) indices per segment\n\n\t\t\tfor ( let iy = 0; iy < gridY; iy ++ ) {\n\n\t\t\t\tfor ( let ix = 0; ix < gridX; ix ++ ) {\n\n\t\t\t\t\tconst a = numberOfVertices + ix + gridX1 * iy;\n\t\t\t\t\tconst b = numberOfVertices + ix + gridX1 * ( iy + 1 );\n\t\t\t\t\tconst c = numberOfVertices + ( ix + 1 ) + gridX1 * ( iy + 1 );\n\t\t\t\t\tconst d = numberOfVertices + ( ix + 1 ) + gridX1 * iy;\n\n\t\t\t\t\t// faces\n\n\t\t\t\t\tindices.push( a, b, d );\n\t\t\t\t\tindices.push( b, c, d );\n\n\t\t\t\t\t// increase counter\n\n\t\t\t\t\tgroupCount += 6;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// add a group to the geometry. this will ensure multi material support\n\n\t\t\tscope.addGroup( groupStart, groupCount, materialIndex );\n\n\t\t\t// calculate new start value for groups\n\n\t\t\tgroupStart += groupCount;\n\n\t\t\t// update total number of vertices\n\n\t\t\tnumberOfVertices += vertexCounter;\n\n\t\t}\n\n\t}\n\n}\n\n/**\n * Uniform Utilities\n */\n\nfunction cloneUniforms( src ) {\n\n\tconst dst = {};\n\n\tfor ( const u in src ) {\n\n\t\tdst[ u ] = {};\n\n\t\tfor ( const p in src[ u ] ) {\n\n\t\t\tconst property = src[ u ][ p ];\n\n\t\t\tif ( property && ( property.isColor ||\n\t\t\t\tproperty.isMatrix3 || property.isMatrix4 ||\n\t\t\t\tproperty.isVector2 || property.isVector3 || property.isVector4 ||\n\t\t\t\tproperty.isTexture ) ) {\n\n\t\t\t\tdst[ u ][ p ] = property.clone();\n\n\t\t\t} else if ( Array.isArray( property ) ) {\n\n\t\t\t\tdst[ u ][ p ] = property.slice();\n\n\t\t\t} else {\n\n\t\t\t\tdst[ u ][ p ] = property;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\treturn dst;\n\n}\n\nfunction mergeUniforms( uniforms ) {\n\n\tconst merged = {};\n\n\tfor ( let u = 0; u < uniforms.length; u ++ ) {\n\n\t\tconst tmp = cloneUniforms( uniforms[ u ] );\n\n\t\tfor ( const p in tmp ) {\n\n\t\t\tmerged[ p ] = tmp[ p ];\n\n\t\t}\n\n\t}\n\n\treturn merged;\n\n}\n\n// Legacy\n\nconst UniformsUtils = { clone: cloneUniforms, merge: mergeUniforms };\n\nvar default_vertex = \"void main() {\\n\\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\\n}\";\n\nvar default_fragment = \"void main() {\\n\\tgl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 );\\n}\";\n\n/**\n * parameters = {\n *  defines: { \"label\" : \"value\" },\n *  uniforms: { \"parameter1\": { value: 1.0 }, \"parameter2\": { value2: 2 } },\n *\n *  fragmentShader: <string>,\n *  vertexShader: <string>,\n *\n *  wireframe: <boolean>,\n *  wireframeLinewidth: <float>,\n *\n *  lights: <bool>,\n *\n *  skinning: <bool>,\n *  morphTargets: <bool>,\n *  morphNormals: <bool>\n * }\n */\n\nfunction ShaderMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'ShaderMaterial';\n\n\tthis.defines = {};\n\tthis.uniforms = {};\n\n\tthis.vertexShader = default_vertex;\n\tthis.fragmentShader = default_fragment;\n\n\tthis.linewidth = 1;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\n\tthis.fog = false; // set to use scene fog\n\tthis.lights = false; // set to use scene lights\n\tthis.clipping = false; // set to use user-defined clipping planes\n\n\tthis.skinning = false; // set to use skinning attribute streams\n\tthis.morphTargets = false; // set to use morph targets\n\tthis.morphNormals = false; // set to use morph normals\n\n\tthis.extensions = {\n\t\tderivatives: false, // set to use derivatives\n\t\tfragDepth: false, // set to use fragment depth values\n\t\tdrawBuffers: false, // set to use draw buffers\n\t\tshaderTextureLOD: false // set to use shader texture LOD\n\t};\n\n\t// When rendered geometry doesn't include these attributes but the material does,\n\t// use these default values in WebGL. This avoids errors when buffer data is missing.\n\tthis.defaultAttributeValues = {\n\t\t'color': [ 1, 1, 1 ],\n\t\t'uv': [ 0, 0 ],\n\t\t'uv2': [ 0, 0 ]\n\t};\n\n\tthis.index0AttributeName = undefined;\n\tthis.uniformsNeedUpdate = false;\n\n\tthis.glslVersion = null;\n\n\tif ( parameters !== undefined ) {\n\n\t\tif ( parameters.attributes !== undefined ) {\n\n\t\t\tconsole.error( 'THREE.ShaderMaterial: attributes should now be defined in THREE.BufferGeometry instead.' );\n\n\t\t}\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n}\n\nShaderMaterial.prototype = Object.create( Material.prototype );\nShaderMaterial.prototype.constructor = ShaderMaterial;\n\nShaderMaterial.prototype.isShaderMaterial = true;\n\nShaderMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.fragmentShader = source.fragmentShader;\n\tthis.vertexShader = source.vertexShader;\n\n\tthis.uniforms = cloneUniforms( source.uniforms );\n\n\tthis.defines = Object.assign( {}, source.defines );\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\tthis.lights = source.lights;\n\tthis.clipping = source.clipping;\n\n\tthis.skinning = source.skinning;\n\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\tthis.extensions = Object.assign( {}, source.extensions );\n\n\tthis.glslVersion = source.glslVersion;\n\n\treturn this;\n\n};\n\nShaderMaterial.prototype.toJSON = function ( meta ) {\n\n\tconst data = Material.prototype.toJSON.call( this, meta );\n\n\tdata.glslVersion = this.glslVersion;\n\tdata.uniforms = {};\n\n\tfor ( const name in this.uniforms ) {\n\n\t\tconst uniform = this.uniforms[ name ];\n\t\tconst value = uniform.value;\n\n\t\tif ( value && value.isTexture ) {\n\n\t\t\tdata.uniforms[ name ] = {\n\t\t\t\ttype: 't',\n\t\t\t\tvalue: value.toJSON( meta ).uuid\n\t\t\t};\n\n\t\t} else if ( value && value.isColor ) {\n\n\t\t\tdata.uniforms[ name ] = {\n\t\t\t\ttype: 'c',\n\t\t\t\tvalue: value.getHex()\n\t\t\t};\n\n\t\t} else if ( value && value.isVector2 ) {\n\n\t\t\tdata.uniforms[ name ] = {\n\t\t\t\ttype: 'v2',\n\t\t\t\tvalue: value.toArray()\n\t\t\t};\n\n\t\t} else if ( value && value.isVector3 ) {\n\n\t\t\tdata.uniforms[ name ] = {\n\t\t\t\ttype: 'v3',\n\t\t\t\tvalue: value.toArray()\n\t\t\t};\n\n\t\t} else if ( value && value.isVector4 ) {\n\n\t\t\tdata.uniforms[ name ] = {\n\t\t\t\ttype: 'v4',\n\t\t\t\tvalue: value.toArray()\n\t\t\t};\n\n\t\t} else if ( value && value.isMatrix3 ) {\n\n\t\t\tdata.uniforms[ name ] = {\n\t\t\t\ttype: 'm3',\n\t\t\t\tvalue: value.toArray()\n\t\t\t};\n\n\t\t} else if ( value && value.isMatrix4 ) {\n\n\t\t\tdata.uniforms[ name ] = {\n\t\t\t\ttype: 'm4',\n\t\t\t\tvalue: value.toArray()\n\t\t\t};\n\n\t\t} else {\n\n\t\t\tdata.uniforms[ name ] = {\n\t\t\t\tvalue: value\n\t\t\t};\n\n\t\t\t// note: the array variants v2v, v3v, v4v, m4v and tv are not supported so far\n\n\t\t}\n\n\t}\n\n\tif ( Object.keys( this.defines ).length > 0 ) data.defines = this.defines;\n\n\tdata.vertexShader = this.vertexShader;\n\tdata.fragmentShader = this.fragmentShader;\n\n\tconst extensions = {};\n\n\tfor ( const key in this.extensions ) {\n\n\t\tif ( this.extensions[ key ] === true ) extensions[ key ] = true;\n\n\t}\n\n\tif ( Object.keys( extensions ).length > 0 ) data.extensions = extensions;\n\n\treturn data;\n\n};\n\nfunction Camera() {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Camera';\n\n\tthis.matrixWorldInverse = new Matrix4();\n\n\tthis.projectionMatrix = new Matrix4();\n\tthis.projectionMatrixInverse = new Matrix4();\n\n}\n\nCamera.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Camera,\n\n\tisCamera: true,\n\n\tcopy: function ( source, recursive ) {\n\n\t\tObject3D.prototype.copy.call( this, source, recursive );\n\n\t\tthis.matrixWorldInverse.copy( source.matrixWorldInverse );\n\n\t\tthis.projectionMatrix.copy( source.projectionMatrix );\n\t\tthis.projectionMatrixInverse.copy( source.projectionMatrixInverse );\n\n\t\treturn this;\n\n\t},\n\n\tgetWorldDirection: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Camera: .getWorldDirection() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\tthis.updateMatrixWorld( true );\n\n\t\tconst e = this.matrixWorld.elements;\n\n\t\treturn target.set( - e[ 8 ], - e[ 9 ], - e[ 10 ] ).normalize();\n\n\t},\n\n\tupdateMatrixWorld: function ( force ) {\n\n\t\tObject3D.prototype.updateMatrixWorld.call( this, force );\n\n\t\tthis.matrixWorldInverse.getInverse( this.matrixWorld );\n\n\t},\n\n\tupdateWorldMatrix: function ( updateParents, updateChildren ) {\n\n\t\tObject3D.prototype.updateWorldMatrix.call( this, updateParents, updateChildren );\n\n\t\tthis.matrixWorldInverse.getInverse( this.matrixWorld );\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n} );\n\nfunction PerspectiveCamera( fov, aspect, near, far ) {\n\n\tCamera.call( this );\n\n\tthis.type = 'PerspectiveCamera';\n\n\tthis.fov = fov !== undefined ? fov : 50;\n\tthis.zoom = 1;\n\n\tthis.near = near !== undefined ? near : 0.1;\n\tthis.far = far !== undefined ? far : 2000;\n\tthis.focus = 10;\n\n\tthis.aspect = aspect !== undefined ? aspect : 1;\n\tthis.view = null;\n\n\tthis.filmGauge = 35;\t// width of the film (default in millimeters)\n\tthis.filmOffset = 0;\t// horizontal film offset (same unit as gauge)\n\n\tthis.updateProjectionMatrix();\n\n}\n\nPerspectiveCamera.prototype = Object.assign( Object.create( Camera.prototype ), {\n\n\tconstructor: PerspectiveCamera,\n\n\tisPerspectiveCamera: true,\n\n\tcopy: function ( source, recursive ) {\n\n\t\tCamera.prototype.copy.call( this, source, recursive );\n\n\t\tthis.fov = source.fov;\n\t\tthis.zoom = source.zoom;\n\n\t\tthis.near = source.near;\n\t\tthis.far = source.far;\n\t\tthis.focus = source.focus;\n\n\t\tthis.aspect = source.aspect;\n\t\tthis.view = source.view === null ? null : Object.assign( {}, source.view );\n\n\t\tthis.filmGauge = source.filmGauge;\n\t\tthis.filmOffset = source.filmOffset;\n\n\t\treturn this;\n\n\t},\n\n\t/**\n\t * Sets the FOV by focal length in respect to the current .filmGauge.\n\t *\n\t * The default film gauge is 35, so that the focal length can be specified for\n\t * a 35mm (full frame) camera.\n\t *\n\t * Values for focal length and film gauge must have the same unit.\n\t */\n\tsetFocalLength: function ( focalLength ) {\n\n\t\t// see http://www.bobatkins.com/photography/technical/field_of_view.html\n\t\tconst vExtentSlope = 0.5 * this.getFilmHeight() / focalLength;\n\n\t\tthis.fov = MathUtils.RAD2DEG * 2 * Math.atan( vExtentSlope );\n\t\tthis.updateProjectionMatrix();\n\n\t},\n\n\t/**\n\t * Calculates the focal length from the current .fov and .filmGauge.\n\t */\n\tgetFocalLength: function () {\n\n\t\tconst vExtentSlope = Math.tan( MathUtils.DEG2RAD * 0.5 * this.fov );\n\n\t\treturn 0.5 * this.getFilmHeight() / vExtentSlope;\n\n\t},\n\n\tgetEffectiveFOV: function () {\n\n\t\treturn MathUtils.RAD2DEG * 2 * Math.atan(\n\t\t\tMath.tan( MathUtils.DEG2RAD * 0.5 * this.fov ) / this.zoom );\n\n\t},\n\n\tgetFilmWidth: function () {\n\n\t\t// film not completely covered in portrait format (aspect < 1)\n\t\treturn this.filmGauge * Math.min( this.aspect, 1 );\n\n\t},\n\n\tgetFilmHeight: function () {\n\n\t\t// film not completely covered in landscape format (aspect > 1)\n\t\treturn this.filmGauge / Math.max( this.aspect, 1 );\n\n\t},\n\n\t/**\n\t * Sets an offset in a larger frustum. This is useful for multi-window or\n\t * multi-monitor/multi-machine setups.\n\t *\n\t * For example, if you have 3x2 monitors and each monitor is 1920x1080 and\n\t * the monitors are in grid like this\n\t *\n\t *   +---+---+---+\n\t *   | A | B | C |\n\t *   +---+---+---+\n\t *   | D | E | F |\n\t *   +---+---+---+\n\t *\n\t * then for each monitor you would call it like this\n\t *\n\t *   const w = 1920;\n\t *   const h = 1080;\n\t *   const fullWidth = w * 3;\n\t *   const fullHeight = h * 2;\n\t *\n\t *   --A--\n\t *   camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 0, w, h );\n\t *   --B--\n\t *   camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 0, w, h );\n\t *   --C--\n\t *   camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 0, w, h );\n\t *   --D--\n\t *   camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 1, w, h );\n\t *   --E--\n\t *   camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 1, w, h );\n\t *   --F--\n\t *   camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 1, w, h );\n\t *\n\t *   Note there is no reason monitors have to be the same size or in a grid.\n\t */\n\tsetViewOffset: function ( fullWidth, fullHeight, x, y, width, height ) {\n\n\t\tthis.aspect = fullWidth / fullHeight;\n\n\t\tif ( this.view === null ) {\n\n\t\t\tthis.view = {\n\t\t\t\tenabled: true,\n\t\t\t\tfullWidth: 1,\n\t\t\t\tfullHeight: 1,\n\t\t\t\toffsetX: 0,\n\t\t\t\toffsetY: 0,\n\t\t\t\twidth: 1,\n\t\t\t\theight: 1\n\t\t\t};\n\n\t\t}\n\n\t\tthis.view.enabled = true;\n\t\tthis.view.fullWidth = fullWidth;\n\t\tthis.view.fullHeight = fullHeight;\n\t\tthis.view.offsetX = x;\n\t\tthis.view.offsetY = y;\n\t\tthis.view.width = width;\n\t\tthis.view.height = height;\n\n\t\tthis.updateProjectionMatrix();\n\n\t},\n\n\tclearViewOffset: function () {\n\n\t\tif ( this.view !== null ) {\n\n\t\t\tthis.view.enabled = false;\n\n\t\t}\n\n\t\tthis.updateProjectionMatrix();\n\n\t},\n\n\tupdateProjectionMatrix: function () {\n\n\t\tconst near = this.near;\n\t\tlet top = near * Math.tan( MathUtils.DEG2RAD * 0.5 * this.fov ) / this.zoom;\n\t\tlet height = 2 * top;\n\t\tlet width = this.aspect * height;\n\t\tlet left = - 0.5 * width;\n\t\tconst view = this.view;\n\n\t\tif ( this.view !== null && this.view.enabled ) {\n\n\t\t\tconst fullWidth = view.fullWidth,\n\t\t\t\tfullHeight = view.fullHeight;\n\n\t\t\tleft += view.offsetX * width / fullWidth;\n\t\t\ttop -= view.offsetY * height / fullHeight;\n\t\t\twidth *= view.width / fullWidth;\n\t\t\theight *= view.height / fullHeight;\n\n\t\t}\n\n\t\tconst skew = this.filmOffset;\n\t\tif ( skew !== 0 ) left += near * skew / this.getFilmWidth();\n\n\t\tthis.projectionMatrix.makePerspective( left, left + width, top, top - height, near, this.far );\n\n\t\tthis.projectionMatrixInverse.getInverse( this.projectionMatrix );\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tconst data = Object3D.prototype.toJSON.call( this, meta );\n\n\t\tdata.object.fov = this.fov;\n\t\tdata.object.zoom = this.zoom;\n\n\t\tdata.object.near = this.near;\n\t\tdata.object.far = this.far;\n\t\tdata.object.focus = this.focus;\n\n\t\tdata.object.aspect = this.aspect;\n\n\t\tif ( this.view !== null ) data.object.view = Object.assign( {}, this.view );\n\n\t\tdata.object.filmGauge = this.filmGauge;\n\t\tdata.object.filmOffset = this.filmOffset;\n\n\t\treturn data;\n\n\t}\n\n} );\n\nconst fov = 90, aspect = 1;\n\nfunction CubeCamera( near, far, renderTarget ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'CubeCamera';\n\n\tif ( renderTarget.isWebGLCubeRenderTarget !== true ) {\n\n\t\tconsole.error( 'THREE.CubeCamera: The constructor now expects an instance of WebGLCubeRenderTarget as third parameter.' );\n\t\treturn;\n\n\t}\n\n\tthis.renderTarget = renderTarget;\n\n\tconst cameraPX = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraPX.layers = this.layers;\n\tcameraPX.up.set( 0, - 1, 0 );\n\tcameraPX.lookAt( new Vector3( 1, 0, 0 ) );\n\tthis.add( cameraPX );\n\n\tconst cameraNX = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraNX.layers = this.layers;\n\tcameraNX.up.set( 0, - 1, 0 );\n\tcameraNX.lookAt( new Vector3( - 1, 0, 0 ) );\n\tthis.add( cameraNX );\n\n\tconst cameraPY = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraPY.layers = this.layers;\n\tcameraPY.up.set( 0, 0, 1 );\n\tcameraPY.lookAt( new Vector3( 0, 1, 0 ) );\n\tthis.add( cameraPY );\n\n\tconst cameraNY = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraNY.layers = this.layers;\n\tcameraNY.up.set( 0, 0, - 1 );\n\tcameraNY.lookAt( new Vector3( 0, - 1, 0 ) );\n\tthis.add( cameraNY );\n\n\tconst cameraPZ = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraPZ.layers = this.layers;\n\tcameraPZ.up.set( 0, - 1, 0 );\n\tcameraPZ.lookAt( new Vector3( 0, 0, 1 ) );\n\tthis.add( cameraPZ );\n\n\tconst cameraNZ = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraNZ.layers = this.layers;\n\tcameraNZ.up.set( 0, - 1, 0 );\n\tcameraNZ.lookAt( new Vector3( 0, 0, - 1 ) );\n\tthis.add( cameraNZ );\n\n\tthis.update = function ( renderer, scene ) {\n\n\t\tif ( this.parent === null ) this.updateMatrixWorld();\n\n\t\tconst currentXrEnabled = renderer.xr.enabled;\n\t\tconst currentRenderTarget = renderer.getRenderTarget();\n\n\t\trenderer.xr.enabled = false;\n\n\t\tconst generateMipmaps = renderTarget.texture.generateMipmaps;\n\n\t\trenderTarget.texture.generateMipmaps = false;\n\n\t\trenderer.setRenderTarget( renderTarget, 0 );\n\t\trenderer.render( scene, cameraPX );\n\n\t\trenderer.setRenderTarget( renderTarget, 1 );\n\t\trenderer.render( scene, cameraNX );\n\n\t\trenderer.setRenderTarget( renderTarget, 2 );\n\t\trenderer.render( scene, cameraPY );\n\n\t\trenderer.setRenderTarget( renderTarget, 3 );\n\t\trenderer.render( scene, cameraNY );\n\n\t\trenderer.setRenderTarget( renderTarget, 4 );\n\t\trenderer.render( scene, cameraPZ );\n\n\t\trenderTarget.texture.generateMipmaps = generateMipmaps;\n\n\t\trenderer.setRenderTarget( renderTarget, 5 );\n\t\trenderer.render( scene, cameraNZ );\n\n\t\trenderer.setRenderTarget( currentRenderTarget );\n\n\t\trenderer.xr.enabled = currentXrEnabled;\n\n\t};\n\n\tthis.clear = function ( renderer, color, depth, stencil ) {\n\n\t\tconst currentRenderTarget = renderer.getRenderTarget();\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\trenderer.setRenderTarget( renderTarget, i );\n\n\t\t\trenderer.clear( color, depth, stencil );\n\n\t\t}\n\n\t\trenderer.setRenderTarget( currentRenderTarget );\n\n\t};\n\n}\n\nCubeCamera.prototype = Object.create( Object3D.prototype );\nCubeCamera.prototype.constructor = CubeCamera;\n\nfunction WebGLCubeRenderTarget( size, options, dummy ) {\n\n\tif ( Number.isInteger( options ) ) {\n\n\t\tconsole.warn( 'THREE.WebGLCubeRenderTarget: constructor signature is now WebGLCubeRenderTarget( size, options )' );\n\n\t\toptions = dummy;\n\n\t}\n\n\tWebGLRenderTarget.call( this, size, size, options );\n\n\tthis.texture.isWebGLCubeRenderTargetTexture = true; // HACK Why is texture not a CubeTexture?\n\n}\n\nWebGLCubeRenderTarget.prototype = Object.create( WebGLRenderTarget.prototype );\nWebGLCubeRenderTarget.prototype.constructor = WebGLCubeRenderTarget;\n\nWebGLCubeRenderTarget.prototype.isWebGLCubeRenderTarget = true;\n\nWebGLCubeRenderTarget.prototype.fromEquirectangularTexture = function ( renderer, texture ) {\n\n\tthis.texture.type = texture.type;\n\tthis.texture.format = RGBAFormat; // see #18859\n\tthis.texture.encoding = texture.encoding;\n\n\tthis.texture.generateMipmaps = texture.generateMipmaps;\n\tthis.texture.minFilter = texture.minFilter;\n\tthis.texture.magFilter = texture.magFilter;\n\n\tconst shader = {\n\n\t\tuniforms: {\n\t\t\ttEquirect: { value: null },\n\t\t},\n\n\t\tvertexShader: /* glsl */`\n\n\t\t\tvarying vec3 vWorldDirection;\n\n\t\t\tvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\n\n\t\t\t\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\n\n\t\t\t}\n\n\t\t\tvoid main() {\n\n\t\t\t\tvWorldDirection = transformDirection( position, modelMatrix );\n\n\t\t\t\t#include <begin_vertex>\n\t\t\t\t#include <project_vertex>\n\n\t\t\t}\n\t\t`,\n\n\t\tfragmentShader: /* glsl */`\n\n\t\t\tuniform sampler2D tEquirect;\n\n\t\t\tvarying vec3 vWorldDirection;\n\n\t\t\t#include <common>\n\n\t\t\tvoid main() {\n\n\t\t\t\tvec3 direction = normalize( vWorldDirection );\n\n\t\t\t\tvec2 sampleUV = equirectUv( direction );\n\n\t\t\t\tgl_FragColor = texture2D( tEquirect, sampleUV );\n\n\t\t\t}\n\t\t`\n\t};\n\n\tconst geometry = new BoxBufferGeometry( 5, 5, 5 );\n\n\tconst material = new ShaderMaterial( {\n\n\t\tname: 'CubemapFromEquirect',\n\n\t\tuniforms: cloneUniforms( shader.uniforms ),\n\t\tvertexShader: shader.vertexShader,\n\t\tfragmentShader: shader.fragmentShader,\n\t\tside: BackSide,\n\t\tblending: NoBlending\n\n\t} );\n\n\tmaterial.uniforms.tEquirect.value = texture;\n\n\tconst mesh = new Mesh( geometry, material );\n\n\tconst currentMinFilter = texture.minFilter;\n\n\t// Avoid blurred poles\n\tif ( texture.minFilter === LinearMipmapLinearFilter ) texture.minFilter = LinearFilter;\n\n\tconst camera = new CubeCamera( 1, 10, this );\n\tcamera.update( renderer, mesh );\n\n\ttexture.minFilter = currentMinFilter;\n\n\tmesh.geometry.dispose();\n\tmesh.material.dispose();\n\n\treturn this;\n\n};\n\nfunction DataTexture( data, width, height, format, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, encoding ) {\n\n\tTexture.call( this, null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding );\n\n\tthis.image = { data: data || null, width: width || 1, height: height || 1 };\n\n\tthis.magFilter = magFilter !== undefined ? magFilter : NearestFilter;\n\tthis.minFilter = minFilter !== undefined ? minFilter : NearestFilter;\n\n\tthis.generateMipmaps = false;\n\tthis.flipY = false;\n\tthis.unpackAlignment = 1;\n\n\tthis.needsUpdate = true;\n\n}\n\nDataTexture.prototype = Object.create( Texture.prototype );\nDataTexture.prototype.constructor = DataTexture;\n\nDataTexture.prototype.isDataTexture = true;\n\nconst _sphere$1 = new Sphere();\nconst _vector$5 = new Vector3();\n\nclass Frustum {\n\n\tconstructor( p0, p1, p2, p3, p4, p5 ) {\n\n\t\tthis.planes = [\n\n\t\t\t( p0 !== undefined ) ? p0 : new Plane(),\n\t\t\t( p1 !== undefined ) ? p1 : new Plane(),\n\t\t\t( p2 !== undefined ) ? p2 : new Plane(),\n\t\t\t( p3 !== undefined ) ? p3 : new Plane(),\n\t\t\t( p4 !== undefined ) ? p4 : new Plane(),\n\t\t\t( p5 !== undefined ) ? p5 : new Plane()\n\n\t\t];\n\n\t}\n\n\tset( p0, p1, p2, p3, p4, p5 ) {\n\n\t\tconst planes = this.planes;\n\n\t\tplanes[ 0 ].copy( p0 );\n\t\tplanes[ 1 ].copy( p1 );\n\t\tplanes[ 2 ].copy( p2 );\n\t\tplanes[ 3 ].copy( p3 );\n\t\tplanes[ 4 ].copy( p4 );\n\t\tplanes[ 5 ].copy( p5 );\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( frustum ) {\n\n\t\tconst planes = this.planes;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tplanes[ i ].copy( frustum.planes[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetFromProjectionMatrix( m ) {\n\n\t\tconst planes = this.planes;\n\t\tconst me = m.elements;\n\t\tconst me0 = me[ 0 ], me1 = me[ 1 ], me2 = me[ 2 ], me3 = me[ 3 ];\n\t\tconst me4 = me[ 4 ], me5 = me[ 5 ], me6 = me[ 6 ], me7 = me[ 7 ];\n\t\tconst me8 = me[ 8 ], me9 = me[ 9 ], me10 = me[ 10 ], me11 = me[ 11 ];\n\t\tconst me12 = me[ 12 ], me13 = me[ 13 ], me14 = me[ 14 ], me15 = me[ 15 ];\n\n\t\tplanes[ 0 ].setComponents( me3 - me0, me7 - me4, me11 - me8, me15 - me12 ).normalize();\n\t\tplanes[ 1 ].setComponents( me3 + me0, me7 + me4, me11 + me8, me15 + me12 ).normalize();\n\t\tplanes[ 2 ].setComponents( me3 + me1, me7 + me5, me11 + me9, me15 + me13 ).normalize();\n\t\tplanes[ 3 ].setComponents( me3 - me1, me7 - me5, me11 - me9, me15 - me13 ).normalize();\n\t\tplanes[ 4 ].setComponents( me3 - me2, me7 - me6, me11 - me10, me15 - me14 ).normalize();\n\t\tplanes[ 5 ].setComponents( me3 + me2, me7 + me6, me11 + me10, me15 + me14 ).normalize();\n\n\t\treturn this;\n\n\t}\n\n\tintersectsObject( object ) {\n\n\t\tconst geometry = object.geometry;\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere$1.copy( geometry.boundingSphere ).applyMatrix4( object.matrixWorld );\n\n\t\treturn this.intersectsSphere( _sphere$1 );\n\n\t}\n\n\tintersectsSprite( sprite ) {\n\n\t\t_sphere$1.center.set( 0, 0, 0 );\n\t\t_sphere$1.radius = 0.7071067811865476;\n\t\t_sphere$1.applyMatrix4( sprite.matrixWorld );\n\n\t\treturn this.intersectsSphere( _sphere$1 );\n\n\t}\n\n\tintersectsSphere( sphere ) {\n\n\t\tconst planes = this.planes;\n\t\tconst center = sphere.center;\n\t\tconst negRadius = - sphere.radius;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tconst distance = planes[ i ].distanceToPoint( center );\n\n\t\t\tif ( distance < negRadius ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\tconst planes = this.planes;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tconst plane = planes[ i ];\n\n\t\t\t// corner at max distance\n\n\t\t\t_vector$5.x = plane.normal.x > 0 ? box.max.x : box.min.x;\n\t\t\t_vector$5.y = plane.normal.y > 0 ? box.max.y : box.min.y;\n\t\t\t_vector$5.z = plane.normal.z > 0 ? box.max.z : box.min.z;\n\n\t\t\tif ( plane.distanceToPoint( _vector$5 ) < 0 ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tcontainsPoint( point ) {\n\n\t\tconst planes = this.planes;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tif ( planes[ i ].distanceToPoint( point ) < 0 ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n}\n\nfunction WebGLAnimation() {\n\n\tlet context = null;\n\tlet isAnimating = false;\n\tlet animationLoop = null;\n\tlet requestId = null;\n\n\tfunction onAnimationFrame( time, frame ) {\n\n\t\tanimationLoop( time, frame );\n\n\t\trequestId = context.requestAnimationFrame( onAnimationFrame );\n\n\t}\n\n\treturn {\n\n\t\tstart: function () {\n\n\t\t\tif ( isAnimating === true ) return;\n\t\t\tif ( animationLoop === null ) return;\n\n\t\t\trequestId = context.requestAnimationFrame( onAnimationFrame );\n\n\t\t\tisAnimating = true;\n\n\t\t},\n\n\t\tstop: function () {\n\n\t\t\tcontext.cancelAnimationFrame( requestId );\n\n\t\t\tisAnimating = false;\n\n\t\t},\n\n\t\tsetAnimationLoop: function ( callback ) {\n\n\t\t\tanimationLoop = callback;\n\n\t\t},\n\n\t\tsetContext: function ( value ) {\n\n\t\t\tcontext = value;\n\n\t\t}\n\n\t};\n\n}\n\nfunction WebGLAttributes( gl, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\n\tconst buffers = new WeakMap();\n\n\tfunction createBuffer( attribute, bufferType ) {\n\n\t\tconst array = attribute.array;\n\t\tconst usage = attribute.usage;\n\n\t\tconst buffer = gl.createBuffer();\n\n\t\tgl.bindBuffer( bufferType, buffer );\n\t\tgl.bufferData( bufferType, array, usage );\n\n\t\tattribute.onUploadCallback();\n\n\t\tlet type = 5126;\n\n\t\tif ( array instanceof Float32Array ) {\n\n\t\t\ttype = 5126;\n\n\t\t} else if ( array instanceof Float64Array ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLAttributes: Unsupported data buffer format: Float64Array.' );\n\n\t\t} else if ( array instanceof Uint16Array ) {\n\n\t\t\ttype = 5123;\n\n\t\t} else if ( array instanceof Int16Array ) {\n\n\t\t\ttype = 5122;\n\n\t\t} else if ( array instanceof Uint32Array ) {\n\n\t\t\ttype = 5125;\n\n\t\t} else if ( array instanceof Int32Array ) {\n\n\t\t\ttype = 5124;\n\n\t\t} else if ( array instanceof Int8Array ) {\n\n\t\t\ttype = 5120;\n\n\t\t} else if ( array instanceof Uint8Array ) {\n\n\t\t\ttype = 5121;\n\n\t\t}\n\n\t\treturn {\n\t\t\tbuffer: buffer,\n\t\t\ttype: type,\n\t\t\tbytesPerElement: array.BYTES_PER_ELEMENT,\n\t\t\tversion: attribute.version\n\t\t};\n\n\t}\n\n\tfunction updateBuffer( buffer, attribute, bufferType ) {\n\n\t\tconst array = attribute.array;\n\t\tconst updateRange = attribute.updateRange;\n\n\t\tgl.bindBuffer( bufferType, buffer );\n\n\t\tif ( updateRange.count === - 1 ) {\n\n\t\t\t// Not using update ranges\n\n\t\t\tgl.bufferSubData( bufferType, 0, array );\n\n\t\t} else {\n\n\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\tgl.bufferSubData( bufferType, updateRange.offset * array.BYTES_PER_ELEMENT,\n\t\t\t\t\tarray, updateRange.offset, updateRange.count );\n\n\t\t\t} else {\n\n\t\t\t\tgl.bufferSubData( bufferType, updateRange.offset * array.BYTES_PER_ELEMENT,\n\t\t\t\t\tarray.subarray( updateRange.offset, updateRange.offset + updateRange.count ) );\n\n\t\t\t}\n\n\t\t\tupdateRange.count = - 1; // reset range\n\n\t\t}\n\n\t}\n\n\t//\n\n\tfunction get( attribute ) {\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;\n\n\t\treturn buffers.get( attribute );\n\n\t}\n\n\tfunction remove( attribute ) {\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;\n\n\t\tconst data = buffers.get( attribute );\n\n\t\tif ( data ) {\n\n\t\t\tgl.deleteBuffer( data.buffer );\n\n\t\t\tbuffers.delete( attribute );\n\n\t\t}\n\n\t}\n\n\tfunction update( attribute, bufferType ) {\n\n\t\tif ( attribute.isGLBufferAttribute ) {\n\n\t\t\tvar cached = buffers.get( attribute );\n\n\t\t\tif ( ! cached || cached.version < attribute.version ) {\n\n\t\t\t\tbuffers.set( attribute, {\n\t\t\t\t\tbuffer: attribute.buffer,\n\t\t\t\t\ttype: attribute.type,\n\t\t\t\t\tbytesPerElement: attribute.elementSize,\n\t\t\t\t\tversion: attribute.version\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;\n\n\t\tconst data = buffers.get( attribute );\n\n\t\tif ( data === undefined ) {\n\n\t\t\tbuffers.set( attribute, createBuffer( attribute, bufferType ) );\n\n\t\t} else if ( data.version < attribute.version ) {\n\n\t\t\tupdateBuffer( data.buffer, attribute, bufferType );\n\n\t\t\tdata.version = attribute.version;\n\n\t\t}\n\n\t}\n\n\treturn {\n\n\t\tget: get,\n\t\tremove: remove,\n\t\tupdate: update\n\n\t};\n\n}\n\n// PlaneGeometry\n\nclass PlaneGeometry extends Geometry {\n\n\tconstructor( width, height, widthSegments, heightSegments ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'PlaneGeometry';\n\n\t\tthis.parameters = {\n\t\t\twidth: width,\n\t\t\theight: height,\n\t\t\twidthSegments: widthSegments,\n\t\t\theightSegments: heightSegments\n\t\t};\n\n\t\tthis.fromBufferGeometry( new PlaneBufferGeometry( width, height, widthSegments, heightSegments ) );\n\t\tthis.mergeVertices();\n\n\t}\n\n}\n\n// PlaneBufferGeometry\n\nclass PlaneBufferGeometry extends BufferGeometry {\n\n\tconstructor( width, height, widthSegments, heightSegments ) {\n\n\t\tsuper();\n\t\tthis.type = 'PlaneBufferGeometry';\n\n\t\tthis.parameters = {\n\t\t\twidth: width,\n\t\t\theight: height,\n\t\t\twidthSegments: widthSegments,\n\t\t\theightSegments: heightSegments\n\t\t};\n\n\t\twidth = width || 1;\n\t\theight = height || 1;\n\n\t\tconst width_half = width / 2;\n\t\tconst height_half = height / 2;\n\n\t\tconst gridX = Math.floor( widthSegments ) || 1;\n\t\tconst gridY = Math.floor( heightSegments ) || 1;\n\n\t\tconst gridX1 = gridX + 1;\n\t\tconst gridY1 = gridY + 1;\n\n\t\tconst segment_width = width / gridX;\n\t\tconst segment_height = height / gridY;\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( let iy = 0; iy < gridY1; iy ++ ) {\n\n\t\t\tconst y = iy * segment_height - height_half;\n\n\t\t\tfor ( let ix = 0; ix < gridX1; ix ++ ) {\n\n\t\t\t\tconst x = ix * segment_width - width_half;\n\n\t\t\t\tvertices.push( x, - y, 0 );\n\n\t\t\t\tnormals.push( 0, 0, 1 );\n\n\t\t\t\tuvs.push( ix / gridX );\n\t\t\t\tuvs.push( 1 - ( iy / gridY ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// indices\n\n\t\tfor ( let iy = 0; iy < gridY; iy ++ ) {\n\n\t\t\tfor ( let ix = 0; ix < gridX; ix ++ ) {\n\n\t\t\t\tconst a = ix + gridX1 * iy;\n\t\t\t\tconst b = ix + gridX1 * ( iy + 1 );\n\t\t\t\tconst c = ( ix + 1 ) + gridX1 * ( iy + 1 );\n\t\t\t\tconst d = ( ix + 1 ) + gridX1 * iy;\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t}\n\n}\n\nvar alphamap_fragment = \"#ifdef USE_ALPHAMAP\\n\\tdiffuseColor.a *= texture2D( alphaMap, vUv ).g;\\n#endif\";\n\nvar alphamap_pars_fragment = \"#ifdef USE_ALPHAMAP\\n\\tuniform sampler2D alphaMap;\\n#endif\";\n\nvar alphatest_fragment = \"#ifdef ALPHATEST\\n\\tif ( diffuseColor.a < ALPHATEST ) discard;\\n#endif\";\n\nvar aomap_fragment = \"#ifdef USE_AOMAP\\n\\tfloat ambientOcclusion = ( texture2D( aoMap, vUv2 ).r - 1.0 ) * aoMapIntensity + 1.0;\\n\\treflectedLight.indirectDiffuse *= ambientOcclusion;\\n\\t#if defined( USE_ENVMAP ) && defined( STANDARD )\\n\\t\\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\\n\\t\\treflectedLight.indirectSpecular *= computeSpecularOcclusion( dotNV, ambientOcclusion, material.specularRoughness );\\n\\t#endif\\n#endif\";\n\nvar aomap_pars_fragment = \"#ifdef USE_AOMAP\\n\\tuniform sampler2D aoMap;\\n\\tuniform float aoMapIntensity;\\n#endif\";\n\nvar begin_vertex = \"vec3 transformed = vec3( position );\";\n\nvar beginnormal_vertex = \"vec3 objectNormal = vec3( normal );\\n#ifdef USE_TANGENT\\n\\tvec3 objectTangent = vec3( tangent.xyz );\\n#endif\";\n\nvar bsdfs = \"vec2 integrateSpecularBRDF( const in float dotNV, const in float roughness ) {\\n\\tconst vec4 c0 = vec4( - 1, - 0.0275, - 0.572, 0.022 );\\n\\tconst vec4 c1 = vec4( 1, 0.0425, 1.04, - 0.04 );\\n\\tvec4 r = roughness * c0 + c1;\\n\\tfloat a004 = min( r.x * r.x, exp2( - 9.28 * dotNV ) ) * r.x + r.y;\\n\\treturn vec2( -1.04, 1.04 ) * a004 + r.zw;\\n}\\nfloat punctualLightIntensityToIrradianceFactor( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) {\\n#if defined ( PHYSICALLY_CORRECT_LIGHTS )\\n\\tfloat distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 );\\n\\tif( cutoffDistance > 0.0 ) {\\n\\t\\tdistanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) );\\n\\t}\\n\\treturn distanceFalloff;\\n#else\\n\\tif( cutoffDistance > 0.0 && decayExponent > 0.0 ) {\\n\\t\\treturn pow( saturate( -lightDistance / cutoffDistance + 1.0 ), decayExponent );\\n\\t}\\n\\treturn 1.0;\\n#endif\\n}\\nvec3 BRDF_Diffuse_Lambert( const in vec3 diffuseColor ) {\\n\\treturn RECIPROCAL_PI * diffuseColor;\\n}\\nvec3 F_Schlick( const in vec3 specularColor, const in float dotLH ) {\\n\\tfloat fresnel = exp2( ( -5.55473 * dotLH - 6.98316 ) * dotLH );\\n\\treturn ( 1.0 - specularColor ) * fresnel + specularColor;\\n}\\nvec3 F_Schlick_RoughnessDependent( const in vec3 F0, const in float dotNV, const in float roughness ) {\\n\\tfloat fresnel = exp2( ( -5.55473 * dotNV - 6.98316 ) * dotNV );\\n\\tvec3 Fr = max( vec3( 1.0 - roughness ), F0 ) - F0;\\n\\treturn Fr * fresnel + F0;\\n}\\nfloat G_GGX_Smith( const in float alpha, const in float dotNL, const in float dotNV ) {\\n\\tfloat a2 = pow2( alpha );\\n\\tfloat gl = dotNL + sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\\n\\tfloat gv = dotNV + sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\\n\\treturn 1.0 / ( gl * gv );\\n}\\nfloat G_GGX_SmithCorrelated( const in float alpha, const in float dotNL, const in float dotNV ) {\\n\\tfloat a2 = pow2( alpha );\\n\\tfloat gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\\n\\tfloat gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\\n\\treturn 0.5 / max( gv + gl, EPSILON );\\n}\\nfloat D_GGX( const in float alpha, const in float dotNH ) {\\n\\tfloat a2 = pow2( alpha );\\n\\tfloat denom = pow2( dotNH ) * ( a2 - 1.0 ) + 1.0;\\n\\treturn RECIPROCAL_PI * a2 / pow2( denom );\\n}\\nvec3 BRDF_Specular_GGX( const in IncidentLight incidentLight, const in vec3 viewDir, const in vec3 normal, const in vec3 specularColor, const in float roughness ) {\\n\\tfloat alpha = pow2( roughness );\\n\\tvec3 halfDir = normalize( incidentLight.direction + viewDir );\\n\\tfloat dotNL = saturate( dot( normal, incidentLight.direction ) );\\n\\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\\tfloat dotNH = saturate( dot( normal, halfDir ) );\\n\\tfloat dotLH = saturate( dot( incidentLight.direction, halfDir ) );\\n\\tvec3 F = F_Schlick( specularColor, dotLH );\\n\\tfloat G = G_GGX_SmithCorrelated( alpha, dotNL, dotNV );\\n\\tfloat D = D_GGX( alpha, dotNH );\\n\\treturn F * ( G * D );\\n}\\nvec2 LTC_Uv( const in vec3 N, const in vec3 V, const in float roughness ) {\\n\\tconst float LUT_SIZE = 64.0;\\n\\tconst float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE;\\n\\tconst float LUT_BIAS = 0.5 / LUT_SIZE;\\n\\tfloat dotNV = saturate( dot( N, V ) );\\n\\tvec2 uv = vec2( roughness, sqrt( 1.0 - dotNV ) );\\n\\tuv = uv * LUT_SCALE + LUT_BIAS;\\n\\treturn uv;\\n}\\nfloat LTC_ClippedSphereFormFactor( const in vec3 f ) {\\n\\tfloat l = length( f );\\n\\treturn max( ( l * l + f.z ) / ( l + 1.0 ), 0.0 );\\n}\\nvec3 LTC_EdgeVectorFormFactor( const in vec3 v1, const in vec3 v2 ) {\\n\\tfloat x = dot( v1, v2 );\\n\\tfloat y = abs( x );\\n\\tfloat a = 0.8543985 + ( 0.4965155 + 0.0145206 * y ) * y;\\n\\tfloat b = 3.4175940 + ( 4.1616724 + y ) * y;\\n\\tfloat v = a / b;\\n\\tfloat theta_sintheta = ( x > 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v;\\n\\treturn cross( v1, v2 ) * theta_sintheta;\\n}\\nvec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in vec3 rectCoords[ 4 ] ) {\\n\\tvec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ];\\n\\tvec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ];\\n\\tvec3 lightNormal = cross( v1, v2 );\\n\\tif( dot( lightNormal, P - rectCoords[ 0 ] ) < 0.0 ) return vec3( 0.0 );\\n\\tvec3 T1, T2;\\n\\tT1 = normalize( V - N * dot( V, N ) );\\n\\tT2 = - cross( N, T1 );\\n\\tmat3 mat = mInv * transposeMat3( mat3( T1, T2, N ) );\\n\\tvec3 coords[ 4 ];\\n\\tcoords[ 0 ] = mat * ( rectCoords[ 0 ] - P );\\n\\tcoords[ 1 ] = mat * ( rectCoords[ 1 ] - P );\\n\\tcoords[ 2 ] = mat * ( rectCoords[ 2 ] - P );\\n\\tcoords[ 3 ] = mat * ( rectCoords[ 3 ] - P );\\n\\tcoords[ 0 ] = normalize( coords[ 0 ] );\\n\\tcoords[ 1 ] = normalize( coords[ 1 ] );\\n\\tcoords[ 2 ] = normalize( coords[ 2 ] );\\n\\tcoords[ 3 ] = normalize( coords[ 3 ] );\\n\\tvec3 vectorFormFactor = vec3( 0.0 );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] );\\n\\tfloat result = LTC_ClippedSphereFormFactor( vectorFormFactor );\\n\\treturn vec3( result );\\n}\\nvec3 BRDF_Specular_GGX_Environment( const in vec3 viewDir, const in vec3 normal, const in vec3 specularColor, const in float roughness ) {\\n\\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\\tvec2 brdf = integrateSpecularBRDF( dotNV, roughness );\\n\\treturn specularColor * brdf.x + brdf.y;\\n}\\nvoid BRDF_Specular_Multiscattering_Environment( const in GeometricContext geometry, const in vec3 specularColor, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {\\n\\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\\n\\tvec3 F = F_Schlick_RoughnessDependent( specularColor, dotNV, roughness );\\n\\tvec2 brdf = integrateSpecularBRDF( dotNV, roughness );\\n\\tvec3 FssEss = F * brdf.x + brdf.y;\\n\\tfloat Ess = brdf.x + brdf.y;\\n\\tfloat Ems = 1.0 - Ess;\\n\\tvec3 Favg = specularColor + ( 1.0 - specularColor ) * 0.047619;\\tvec3 Fms = FssEss * Favg / ( 1.0 - Ems * Favg );\\n\\tsingleScatter += FssEss;\\n\\tmultiScatter += Fms * Ems;\\n}\\nfloat G_BlinnPhong_Implicit( ) {\\n\\treturn 0.25;\\n}\\nfloat D_BlinnPhong( const in float shininess, const in float dotNH ) {\\n\\treturn RECIPROCAL_PI * ( shininess * 0.5 + 1.0 ) * pow( dotNH, shininess );\\n}\\nvec3 BRDF_Specular_BlinnPhong( const in IncidentLight incidentLight, const in GeometricContext geometry, const in vec3 specularColor, const in float shininess ) {\\n\\tvec3 halfDir = normalize( incidentLight.direction + geometry.viewDir );\\n\\tfloat dotNH = saturate( dot( geometry.normal, halfDir ) );\\n\\tfloat dotLH = saturate( dot( incidentLight.direction, halfDir ) );\\n\\tvec3 F = F_Schlick( specularColor, dotLH );\\n\\tfloat G = G_BlinnPhong_Implicit( );\\n\\tfloat D = D_BlinnPhong( shininess, dotNH );\\n\\treturn F * ( G * D );\\n}\\nfloat GGXRoughnessToBlinnExponent( const in float ggxRoughness ) {\\n\\treturn ( 2.0 / pow2( ggxRoughness + 0.0001 ) - 2.0 );\\n}\\nfloat BlinnExponentToGGXRoughness( const in float blinnExponent ) {\\n\\treturn sqrt( 2.0 / ( blinnExponent + 2.0 ) );\\n}\\n#if defined( USE_SHEEN )\\nfloat D_Charlie(float roughness, float NoH) {\\n\\tfloat invAlpha = 1.0 / roughness;\\n\\tfloat cos2h = NoH * NoH;\\n\\tfloat sin2h = max(1.0 - cos2h, 0.0078125);\\treturn (2.0 + invAlpha) * pow(sin2h, invAlpha * 0.5) / (2.0 * PI);\\n}\\nfloat V_Neubelt(float NoV, float NoL) {\\n\\treturn saturate(1.0 / (4.0 * (NoL + NoV - NoL * NoV)));\\n}\\nvec3 BRDF_Specular_Sheen( const in float roughness, const in vec3 L, const in GeometricContext geometry, vec3 specularColor ) {\\n\\tvec3 N = geometry.normal;\\n\\tvec3 V = geometry.viewDir;\\n\\tvec3 H = normalize( V + L );\\n\\tfloat dotNH = saturate( dot( N, H ) );\\n\\treturn specularColor * D_Charlie( roughness, dotNH ) * V_Neubelt( dot(N, V), dot(N, L) );\\n}\\n#endif\";\n\nvar bumpmap_pars_fragment = \"#ifdef USE_BUMPMAP\\n\\tuniform sampler2D bumpMap;\\n\\tuniform float bumpScale;\\n\\tvec2 dHdxy_fwd() {\\n\\t\\tvec2 dSTdx = dFdx( vUv );\\n\\t\\tvec2 dSTdy = dFdy( vUv );\\n\\t\\tfloat Hll = bumpScale * texture2D( bumpMap, vUv ).x;\\n\\t\\tfloat dBx = bumpScale * texture2D( bumpMap, vUv + dSTdx ).x - Hll;\\n\\t\\tfloat dBy = bumpScale * texture2D( bumpMap, vUv + dSTdy ).x - Hll;\\n\\t\\treturn vec2( dBx, dBy );\\n\\t}\\n\\tvec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy ) {\\n\\t\\tvec3 vSigmaX = vec3( dFdx( surf_pos.x ), dFdx( surf_pos.y ), dFdx( surf_pos.z ) );\\n\\t\\tvec3 vSigmaY = vec3( dFdy( surf_pos.x ), dFdy( surf_pos.y ), dFdy( surf_pos.z ) );\\n\\t\\tvec3 vN = surf_norm;\\n\\t\\tvec3 R1 = cross( vSigmaY, vN );\\n\\t\\tvec3 R2 = cross( vN, vSigmaX );\\n\\t\\tfloat fDet = dot( vSigmaX, R1 );\\n\\t\\tfDet *= ( float( gl_FrontFacing ) * 2.0 - 1.0 );\\n\\t\\tvec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );\\n\\t\\treturn normalize( abs( fDet ) * surf_norm - vGrad );\\n\\t}\\n#endif\";\n\nvar clipping_planes_fragment = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvec4 plane;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {\\n\\t\\tplane = clippingPlanes[ i ];\\n\\t\\tif ( dot( vClipPosition, plane.xyz ) > plane.w ) discard;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES\\n\\t\\tbool clipped = true;\\n\\t\\t#pragma unroll_loop_start\\n\\t\\tfor ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {\\n\\t\\t\\tplane = clippingPlanes[ i ];\\n\\t\\t\\tclipped = ( dot( vClipPosition, plane.xyz ) > plane.w ) && clipped;\\n\\t\\t}\\n\\t\\t#pragma unroll_loop_end\\n\\t\\tif ( clipped ) discard;\\n\\t#endif\\n#endif\";\n\nvar clipping_planes_pars_fragment = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvarying vec3 vClipPosition;\\n\\tuniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ];\\n#endif\";\n\nvar clipping_planes_pars_vertex = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvarying vec3 vClipPosition;\\n#endif\";\n\nvar clipping_planes_vertex = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvClipPosition = - mvPosition.xyz;\\n#endif\";\n\nvar color_fragment = \"#ifdef USE_COLOR\\n\\tdiffuseColor.rgb *= vColor;\\n#endif\";\n\nvar color_pars_fragment = \"#ifdef USE_COLOR\\n\\tvarying vec3 vColor;\\n#endif\";\n\nvar color_pars_vertex = \"#if defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR )\\n\\tvarying vec3 vColor;\\n#endif\";\n\nvar color_vertex = \"#if defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR )\\n\\tvColor = vec3( 1.0 );\\n#endif\\n#ifdef USE_COLOR\\n\\tvColor.xyz *= color.xyz;\\n#endif\\n#ifdef USE_INSTANCING_COLOR\\n\\tvColor.xyz *= instanceColor.xyz;\\n#endif\";\n\nvar common = \"#define PI 3.141592653589793\\n#define PI2 6.283185307179586\\n#define PI_HALF 1.5707963267948966\\n#define RECIPROCAL_PI 0.3183098861837907\\n#define RECIPROCAL_PI2 0.15915494309189535\\n#define EPSILON 1e-6\\n#ifndef saturate\\n#define saturate(a) clamp( a, 0.0, 1.0 )\\n#endif\\n#define whiteComplement(a) ( 1.0 - saturate( a ) )\\nfloat pow2( const in float x ) { return x*x; }\\nfloat pow3( const in float x ) { return x*x*x; }\\nfloat pow4( const in float x ) { float x2 = x*x; return x2*x2; }\\nfloat average( const in vec3 color ) { return dot( color, vec3( 0.3333 ) ); }\\nhighp float rand( const in vec2 uv ) {\\n\\tconst highp float a = 12.9898, b = 78.233, c = 43758.5453;\\n\\thighp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI );\\n\\treturn fract(sin(sn) * c);\\n}\\n#ifdef HIGH_PRECISION\\n\\tfloat precisionSafeLength( vec3 v ) { return length( v ); }\\n#else\\n\\tfloat max3( vec3 v ) { return max( max( v.x, v.y ), v.z ); }\\n\\tfloat precisionSafeLength( vec3 v ) {\\n\\t\\tfloat maxComponent = max3( abs( v ) );\\n\\t\\treturn length( v / maxComponent ) * maxComponent;\\n\\t}\\n#endif\\nstruct IncidentLight {\\n\\tvec3 color;\\n\\tvec3 direction;\\n\\tbool visible;\\n};\\nstruct ReflectedLight {\\n\\tvec3 directDiffuse;\\n\\tvec3 directSpecular;\\n\\tvec3 indirectDiffuse;\\n\\tvec3 indirectSpecular;\\n};\\nstruct GeometricContext {\\n\\tvec3 position;\\n\\tvec3 normal;\\n\\tvec3 viewDir;\\n#ifdef CLEARCOAT\\n\\tvec3 clearcoatNormal;\\n#endif\\n};\\nvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\\n\\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\\n}\\nvec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) {\\n\\treturn normalize( ( vec4( dir, 0.0 ) * matrix ).xyz );\\n}\\nvec3 projectOnPlane(in vec3 point, in vec3 pointOnPlane, in vec3 planeNormal ) {\\n\\tfloat distance = dot( planeNormal, point - pointOnPlane );\\n\\treturn - distance * planeNormal + point;\\n}\\nfloat sideOfPlane( in vec3 point, in vec3 pointOnPlane, in vec3 planeNormal ) {\\n\\treturn sign( dot( point - pointOnPlane, planeNormal ) );\\n}\\nvec3 linePlaneIntersect( in vec3 pointOnLine, in vec3 lineDirection, in vec3 pointOnPlane, in vec3 planeNormal ) {\\n\\treturn lineDirection * ( dot( planeNormal, pointOnPlane - pointOnLine ) / dot( planeNormal, lineDirection ) ) + pointOnLine;\\n}\\nmat3 transposeMat3( const in mat3 m ) {\\n\\tmat3 tmp;\\n\\ttmp[ 0 ] = vec3( m[ 0 ].x, m[ 1 ].x, m[ 2 ].x );\\n\\ttmp[ 1 ] = vec3( m[ 0 ].y, m[ 1 ].y, m[ 2 ].y );\\n\\ttmp[ 2 ] = vec3( m[ 0 ].z, m[ 1 ].z, m[ 2 ].z );\\n\\treturn tmp;\\n}\\nfloat linearToRelativeLuminance( const in vec3 color ) {\\n\\tvec3 weights = vec3( 0.2126, 0.7152, 0.0722 );\\n\\treturn dot( weights, color.rgb );\\n}\\nbool isPerspectiveMatrix( mat4 m ) {\\n\\treturn m[ 2 ][ 3 ] == - 1.0;\\n}\\nvec2 equirectUv( in vec3 dir ) {\\n\\tfloat u = atan( dir.z, dir.x ) * RECIPROCAL_PI2 + 0.5;\\n\\tfloat v = asin( clamp( dir.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\\n\\treturn vec2( u, v );\\n}\";\n\nvar cube_uv_reflection_fragment = \"#ifdef ENVMAP_TYPE_CUBE_UV\\n\\t#define cubeUV_maxMipLevel 8.0\\n\\t#define cubeUV_minMipLevel 4.0\\n\\t#define cubeUV_maxTileSize 256.0\\n\\t#define cubeUV_minTileSize 16.0\\n\\tfloat getFace( vec3 direction ) {\\n\\t\\tvec3 absDirection = abs( direction );\\n\\t\\tfloat face = - 1.0;\\n\\t\\tif ( absDirection.x > absDirection.z ) {\\n\\t\\t\\tif ( absDirection.x > absDirection.y )\\n\\t\\t\\t\\tface = direction.x > 0.0 ? 0.0 : 3.0;\\n\\t\\t\\telse\\n\\t\\t\\t\\tface = direction.y > 0.0 ? 1.0 : 4.0;\\n\\t\\t} else {\\n\\t\\t\\tif ( absDirection.z > absDirection.y )\\n\\t\\t\\t\\tface = direction.z > 0.0 ? 2.0 : 5.0;\\n\\t\\t\\telse\\n\\t\\t\\t\\tface = direction.y > 0.0 ? 1.0 : 4.0;\\n\\t\\t}\\n\\t\\treturn face;\\n\\t}\\n\\tvec2 getUV( vec3 direction, float face ) {\\n\\t\\tvec2 uv;\\n\\t\\tif ( face == 0.0 ) {\\n\\t\\t\\tuv = vec2( direction.z, direction.y ) / abs( direction.x );\\n\\t\\t} else if ( face == 1.0 ) {\\n\\t\\t\\tuv = vec2( - direction.x, - direction.z ) / abs( direction.y );\\n\\t\\t} else if ( face == 2.0 ) {\\n\\t\\t\\tuv = vec2( - direction.x, direction.y ) / abs( direction.z );\\n\\t\\t} else if ( face == 3.0 ) {\\n\\t\\t\\tuv = vec2( - direction.z, direction.y ) / abs( direction.x );\\n\\t\\t} else if ( face == 4.0 ) {\\n\\t\\t\\tuv = vec2( - direction.x, direction.z ) / abs( direction.y );\\n\\t\\t} else {\\n\\t\\t\\tuv = vec2( direction.x, direction.y ) / abs( direction.z );\\n\\t\\t}\\n\\t\\treturn 0.5 * ( uv + 1.0 );\\n\\t}\\n\\tvec3 bilinearCubeUV( sampler2D envMap, vec3 direction, float mipInt ) {\\n\\t\\tfloat face = getFace( direction );\\n\\t\\tfloat filterInt = max( cubeUV_minMipLevel - mipInt, 0.0 );\\n\\t\\tmipInt = max( mipInt, cubeUV_minMipLevel );\\n\\t\\tfloat faceSize = exp2( mipInt );\\n\\t\\tfloat texelSize = 1.0 / ( 3.0 * cubeUV_maxTileSize );\\n\\t\\tvec2 uv = getUV( direction, face ) * ( faceSize - 1.0 );\\n\\t\\tvec2 f = fract( uv );\\n\\t\\tuv += 0.5 - f;\\n\\t\\tif ( face > 2.0 ) {\\n\\t\\t\\tuv.y += faceSize;\\n\\t\\t\\tface -= 3.0;\\n\\t\\t}\\n\\t\\tuv.x += face * faceSize;\\n\\t\\tif ( mipInt < cubeUV_maxMipLevel ) {\\n\\t\\t\\tuv.y += 2.0 * cubeUV_maxTileSize;\\n\\t\\t}\\n\\t\\tuv.y += filterInt * 2.0 * cubeUV_minTileSize;\\n\\t\\tuv.x += 3.0 * max( 0.0, cubeUV_maxTileSize - 2.0 * faceSize );\\n\\t\\tuv *= texelSize;\\n\\t\\tvec3 tl = envMapTexelToLinear( texture2D( envMap, uv ) ).rgb;\\n\\t\\tuv.x += texelSize;\\n\\t\\tvec3 tr = envMapTexelToLinear( texture2D( envMap, uv ) ).rgb;\\n\\t\\tuv.y += texelSize;\\n\\t\\tvec3 br = envMapTexelToLinear( texture2D( envMap, uv ) ).rgb;\\n\\t\\tuv.x -= texelSize;\\n\\t\\tvec3 bl = envMapTexelToLinear( texture2D( envMap, uv ) ).rgb;\\n\\t\\tvec3 tm = mix( tl, tr, f.x );\\n\\t\\tvec3 bm = mix( bl, br, f.x );\\n\\t\\treturn mix( tm, bm, f.y );\\n\\t}\\n\\t#define r0 1.0\\n\\t#define v0 0.339\\n\\t#define m0 - 2.0\\n\\t#define r1 0.8\\n\\t#define v1 0.276\\n\\t#define m1 - 1.0\\n\\t#define r4 0.4\\n\\t#define v4 0.046\\n\\t#define m4 2.0\\n\\t#define r5 0.305\\n\\t#define v5 0.016\\n\\t#define m5 3.0\\n\\t#define r6 0.21\\n\\t#define v6 0.0038\\n\\t#define m6 4.0\\n\\tfloat roughnessToMip( float roughness ) {\\n\\t\\tfloat mip = 0.0;\\n\\t\\tif ( roughness >= r1 ) {\\n\\t\\t\\tmip = ( r0 - roughness ) * ( m1 - m0 ) / ( r0 - r1 ) + m0;\\n\\t\\t} else if ( roughness >= r4 ) {\\n\\t\\t\\tmip = ( r1 - roughness ) * ( m4 - m1 ) / ( r1 - r4 ) + m1;\\n\\t\\t} else if ( roughness >= r5 ) {\\n\\t\\t\\tmip = ( r4 - roughness ) * ( m5 - m4 ) / ( r4 - r5 ) + m4;\\n\\t\\t} else if ( roughness >= r6 ) {\\n\\t\\t\\tmip = ( r5 - roughness ) * ( m6 - m5 ) / ( r5 - r6 ) + m5;\\n\\t\\t} else {\\n\\t\\t\\tmip = - 2.0 * log2( 1.16 * roughness );\\t\\t}\\n\\t\\treturn mip;\\n\\t}\\n\\tvec4 textureCubeUV( sampler2D envMap, vec3 sampleDir, float roughness ) {\\n\\t\\tfloat mip = clamp( roughnessToMip( roughness ), m0, cubeUV_maxMipLevel );\\n\\t\\tfloat mipF = fract( mip );\\n\\t\\tfloat mipInt = floor( mip );\\n\\t\\tvec3 color0 = bilinearCubeUV( envMap, sampleDir, mipInt );\\n\\t\\tif ( mipF == 0.0 ) {\\n\\t\\t\\treturn vec4( color0, 1.0 );\\n\\t\\t} else {\\n\\t\\t\\tvec3 color1 = bilinearCubeUV( envMap, sampleDir, mipInt + 1.0 );\\n\\t\\t\\treturn vec4( mix( color0, color1, mipF ), 1.0 );\\n\\t\\t}\\n\\t}\\n#endif\";\n\nvar defaultnormal_vertex = \"vec3 transformedNormal = objectNormal;\\n#ifdef USE_INSTANCING\\n\\tmat3 m = mat3( instanceMatrix );\\n\\ttransformedNormal /= vec3( dot( m[ 0 ], m[ 0 ] ), dot( m[ 1 ], m[ 1 ] ), dot( m[ 2 ], m[ 2 ] ) );\\n\\ttransformedNormal = m * transformedNormal;\\n#endif\\ntransformedNormal = normalMatrix * transformedNormal;\\n#ifdef FLIP_SIDED\\n\\ttransformedNormal = - transformedNormal;\\n#endif\\n#ifdef USE_TANGENT\\n\\tvec3 transformedTangent = ( modelViewMatrix * vec4( objectTangent, 0.0 ) ).xyz;\\n\\t#ifdef FLIP_SIDED\\n\\t\\ttransformedTangent = - transformedTangent;\\n\\t#endif\\n#endif\";\n\nvar displacementmap_pars_vertex = \"#ifdef USE_DISPLACEMENTMAP\\n\\tuniform sampler2D displacementMap;\\n\\tuniform float displacementScale;\\n\\tuniform float displacementBias;\\n#endif\";\n\nvar displacementmap_vertex = \"#ifdef USE_DISPLACEMENTMAP\\n\\ttransformed += normalize( objectNormal ) * ( texture2D( displacementMap, vUv ).x * displacementScale + displacementBias );\\n#endif\";\n\nvar emissivemap_fragment = \"#ifdef USE_EMISSIVEMAP\\n\\tvec4 emissiveColor = texture2D( emissiveMap, vUv );\\n\\temissiveColor.rgb = emissiveMapTexelToLinear( emissiveColor ).rgb;\\n\\ttotalEmissiveRadiance *= emissiveColor.rgb;\\n#endif\";\n\nvar emissivemap_pars_fragment = \"#ifdef USE_EMISSIVEMAP\\n\\tuniform sampler2D emissiveMap;\\n#endif\";\n\nvar encodings_fragment = \"gl_FragColor = linearToOutputTexel( gl_FragColor );\";\n\nvar encodings_pars_fragment = \"\\nvec4 LinearToLinear( in vec4 value ) {\\n\\treturn value;\\n}\\nvec4 GammaToLinear( in vec4 value, in float gammaFactor ) {\\n\\treturn vec4( pow( value.rgb, vec3( gammaFactor ) ), value.a );\\n}\\nvec4 LinearToGamma( in vec4 value, in float gammaFactor ) {\\n\\treturn vec4( pow( value.rgb, vec3( 1.0 / gammaFactor ) ), value.a );\\n}\\nvec4 sRGBToLinear( in vec4 value ) {\\n\\treturn vec4( mix( pow( value.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), value.rgb * 0.0773993808, vec3( lessThanEqual( value.rgb, vec3( 0.04045 ) ) ) ), value.a );\\n}\\nvec4 LinearTosRGB( in vec4 value ) {\\n\\treturn vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.a );\\n}\\nvec4 RGBEToLinear( in vec4 value ) {\\n\\treturn vec4( value.rgb * exp2( value.a * 255.0 - 128.0 ), 1.0 );\\n}\\nvec4 LinearToRGBE( in vec4 value ) {\\n\\tfloat maxComponent = max( max( value.r, value.g ), value.b );\\n\\tfloat fExp = clamp( ceil( log2( maxComponent ) ), -128.0, 127.0 );\\n\\treturn vec4( value.rgb / exp2( fExp ), ( fExp + 128.0 ) / 255.0 );\\n}\\nvec4 RGBMToLinear( in vec4 value, in float maxRange ) {\\n\\treturn vec4( value.rgb * value.a * maxRange, 1.0 );\\n}\\nvec4 LinearToRGBM( in vec4 value, in float maxRange ) {\\n\\tfloat maxRGB = max( value.r, max( value.g, value.b ) );\\n\\tfloat M = clamp( maxRGB / maxRange, 0.0, 1.0 );\\n\\tM = ceil( M * 255.0 ) / 255.0;\\n\\treturn vec4( value.rgb / ( M * maxRange ), M );\\n}\\nvec4 RGBDToLinear( in vec4 value, in float maxRange ) {\\n\\treturn vec4( value.rgb * ( ( maxRange / 255.0 ) / value.a ), 1.0 );\\n}\\nvec4 LinearToRGBD( in vec4 value, in float maxRange ) {\\n\\tfloat maxRGB = max( value.r, max( value.g, value.b ) );\\n\\tfloat D = max( maxRange / maxRGB, 1.0 );\\n\\tD = clamp( floor( D ) / 255.0, 0.0, 1.0 );\\n\\treturn vec4( value.rgb * ( D * ( 255.0 / maxRange ) ), D );\\n}\\nconst mat3 cLogLuvM = mat3( 0.2209, 0.3390, 0.4184, 0.1138, 0.6780, 0.7319, 0.0102, 0.1130, 0.2969 );\\nvec4 LinearToLogLuv( in vec4 value ) {\\n\\tvec3 Xp_Y_XYZp = cLogLuvM * value.rgb;\\n\\tXp_Y_XYZp = max( Xp_Y_XYZp, vec3( 1e-6, 1e-6, 1e-6 ) );\\n\\tvec4 vResult;\\n\\tvResult.xy = Xp_Y_XYZp.xy / Xp_Y_XYZp.z;\\n\\tfloat Le = 2.0 * log2(Xp_Y_XYZp.y) + 127.0;\\n\\tvResult.w = fract( Le );\\n\\tvResult.z = ( Le - ( floor( vResult.w * 255.0 ) ) / 255.0 ) / 255.0;\\n\\treturn vResult;\\n}\\nconst mat3 cLogLuvInverseM = mat3( 6.0014, -2.7008, -1.7996, -1.3320, 3.1029, -5.7721, 0.3008, -1.0882, 5.6268 );\\nvec4 LogLuvToLinear( in vec4 value ) {\\n\\tfloat Le = value.z * 255.0 + value.w;\\n\\tvec3 Xp_Y_XYZp;\\n\\tXp_Y_XYZp.y = exp2( ( Le - 127.0 ) / 2.0 );\\n\\tXp_Y_XYZp.z = Xp_Y_XYZp.y / value.y;\\n\\tXp_Y_XYZp.x = value.x * Xp_Y_XYZp.z;\\n\\tvec3 vRGB = cLogLuvInverseM * Xp_Y_XYZp.rgb;\\n\\treturn vec4( max( vRGB, 0.0 ), 1.0 );\\n}\";\n\nvar envmap_fragment = \"#ifdef USE_ENVMAP\\n\\t#ifdef ENV_WORLDPOS\\n\\t\\tvec3 cameraToFrag;\\n\\t\\tif ( isOrthographic ) {\\n\\t\\t\\tcameraToFrag = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\\n\\t\\t} else {\\n\\t\\t\\tcameraToFrag = normalize( vWorldPosition - cameraPosition );\\n\\t\\t}\\n\\t\\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\\n\\t\\t#ifdef ENVMAP_MODE_REFLECTION\\n\\t\\t\\tvec3 reflectVec = reflect( cameraToFrag, worldNormal );\\n\\t\\t#else\\n\\t\\t\\tvec3 reflectVec = refract( cameraToFrag, worldNormal, refractionRatio );\\n\\t\\t#endif\\n\\t#else\\n\\t\\tvec3 reflectVec = vReflect;\\n\\t#endif\\n\\t#ifdef ENVMAP_TYPE_CUBE\\n\\t\\tvec4 envColor = textureCube( envMap, vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );\\n\\t#elif defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\tvec4 envColor = textureCubeUV( envMap, reflectVec, 0.0 );\\n\\t#else\\n\\t\\tvec4 envColor = vec4( 0.0 );\\n\\t#endif\\n\\t#ifndef ENVMAP_TYPE_CUBE_UV\\n\\t\\tenvColor = envMapTexelToLinear( envColor );\\n\\t#endif\\n\\t#ifdef ENVMAP_BLENDING_MULTIPLY\\n\\t\\toutgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity );\\n\\t#elif defined( ENVMAP_BLENDING_MIX )\\n\\t\\toutgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity );\\n\\t#elif defined( ENVMAP_BLENDING_ADD )\\n\\t\\toutgoingLight += envColor.xyz * specularStrength * reflectivity;\\n\\t#endif\\n#endif\";\n\nvar envmap_common_pars_fragment = \"#ifdef USE_ENVMAP\\n\\tuniform float envMapIntensity;\\n\\tuniform float flipEnvMap;\\n\\tuniform int maxMipLevel;\\n\\t#ifdef ENVMAP_TYPE_CUBE\\n\\t\\tuniform samplerCube envMap;\\n\\t#else\\n\\t\\tuniform sampler2D envMap;\\n\\t#endif\\n\\t\\n#endif\";\n\nvar envmap_pars_fragment = \"#ifdef USE_ENVMAP\\n\\tuniform float reflectivity;\\n\\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )\\n\\t\\t#define ENV_WORLDPOS\\n\\t#endif\\n\\t#ifdef ENV_WORLDPOS\\n\\t\\tvarying vec3 vWorldPosition;\\n\\t\\tuniform float refractionRatio;\\n\\t#else\\n\\t\\tvarying vec3 vReflect;\\n\\t#endif\\n#endif\";\n\nvar envmap_pars_vertex = \"#ifdef USE_ENVMAP\\n\\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) ||defined( PHONG )\\n\\t\\t#define ENV_WORLDPOS\\n\\t#endif\\n\\t#ifdef ENV_WORLDPOS\\n\\t\\t\\n\\t\\tvarying vec3 vWorldPosition;\\n\\t#else\\n\\t\\tvarying vec3 vReflect;\\n\\t\\tuniform float refractionRatio;\\n\\t#endif\\n#endif\";\n\nvar envmap_vertex = \"#ifdef USE_ENVMAP\\n\\t#ifdef ENV_WORLDPOS\\n\\t\\tvWorldPosition = worldPosition.xyz;\\n\\t#else\\n\\t\\tvec3 cameraToVertex;\\n\\t\\tif ( isOrthographic ) {\\n\\t\\t\\tcameraToVertex = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\\n\\t\\t} else {\\n\\t\\t\\tcameraToVertex = normalize( worldPosition.xyz - cameraPosition );\\n\\t\\t}\\n\\t\\tvec3 worldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\\n\\t\\t#ifdef ENVMAP_MODE_REFLECTION\\n\\t\\t\\tvReflect = reflect( cameraToVertex, worldNormal );\\n\\t\\t#else\\n\\t\\t\\tvReflect = refract( cameraToVertex, worldNormal, refractionRatio );\\n\\t\\t#endif\\n\\t#endif\\n#endif\";\n\nvar fog_vertex = \"#ifdef USE_FOG\\n\\tfogDepth = - mvPosition.z;\\n#endif\";\n\nvar fog_pars_vertex = \"#ifdef USE_FOG\\n\\tvarying float fogDepth;\\n#endif\";\n\nvar fog_fragment = \"#ifdef USE_FOG\\n\\t#ifdef FOG_EXP2\\n\\t\\tfloat fogFactor = 1.0 - exp( - fogDensity * fogDensity * fogDepth * fogDepth );\\n\\t#else\\n\\t\\tfloat fogFactor = smoothstep( fogNear, fogFar, fogDepth );\\n\\t#endif\\n\\tgl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor );\\n#endif\";\n\nvar fog_pars_fragment = \"#ifdef USE_FOG\\n\\tuniform vec3 fogColor;\\n\\tvarying float fogDepth;\\n\\t#ifdef FOG_EXP2\\n\\t\\tuniform float fogDensity;\\n\\t#else\\n\\t\\tuniform float fogNear;\\n\\t\\tuniform float fogFar;\\n\\t#endif\\n#endif\";\n\nvar gradientmap_pars_fragment = \"#ifdef USE_GRADIENTMAP\\n\\tuniform sampler2D gradientMap;\\n#endif\\nvec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) {\\n\\tfloat dotNL = dot( normal, lightDirection );\\n\\tvec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 );\\n\\t#ifdef USE_GRADIENTMAP\\n\\t\\treturn texture2D( gradientMap, coord ).rgb;\\n\\t#else\\n\\t\\treturn ( coord.x < 0.7 ) ? vec3( 0.7 ) : vec3( 1.0 );\\n\\t#endif\\n}\";\n\nvar lightmap_fragment = \"#ifdef USE_LIGHTMAP\\n\\tvec4 lightMapTexel= texture2D( lightMap, vUv2 );\\n\\treflectedLight.indirectDiffuse += PI * lightMapTexelToLinear( lightMapTexel ).rgb * lightMapIntensity;\\n#endif\";\n\nvar lightmap_pars_fragment = \"#ifdef USE_LIGHTMAP\\n\\tuniform sampler2D lightMap;\\n\\tuniform float lightMapIntensity;\\n#endif\";\n\nvar lights_lambert_vertex = \"vec3 diffuse = vec3( 1.0 );\\nGeometricContext geometry;\\ngeometry.position = mvPosition.xyz;\\ngeometry.normal = normalize( transformedNormal );\\ngeometry.viewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( -mvPosition.xyz );\\nGeometricContext backGeometry;\\nbackGeometry.position = geometry.position;\\nbackGeometry.normal = -geometry.normal;\\nbackGeometry.viewDir = geometry.viewDir;\\nvLightFront = vec3( 0.0 );\\nvIndirectFront = vec3( 0.0 );\\n#ifdef DOUBLE_SIDED\\n\\tvLightBack = vec3( 0.0 );\\n\\tvIndirectBack = vec3( 0.0 );\\n#endif\\nIncidentLight directLight;\\nfloat dotNL;\\nvec3 directLightColor_Diffuse;\\nvIndirectFront += getAmbientLightIrradiance( ambientLightColor );\\nvIndirectFront += getLightProbeIrradiance( lightProbe, geometry );\\n#ifdef DOUBLE_SIDED\\n\\tvIndirectBack += getAmbientLightIrradiance( ambientLightColor );\\n\\tvIndirectBack += getLightProbeIrradiance( lightProbe, backGeometry );\\n#endif\\n#if NUM_POINT_LIGHTS > 0\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\\n\\t\\tgetPointDirectLightIrradiance( pointLights[ i ], geometry, directLight );\\n\\t\\tdotNL = dot( geometry.normal, directLight.direction );\\n\\t\\tdirectLightColor_Diffuse = PI * directLight.color;\\n\\t\\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\\n\\t\\t#ifdef DOUBLE_SIDED\\n\\t\\t\\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\\n\\t\\t#endif\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if NUM_SPOT_LIGHTS > 0\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\\n\\t\\tgetSpotDirectLightIrradiance( spotLights[ i ], geometry, directLight );\\n\\t\\tdotNL = dot( geometry.normal, directLight.direction );\\n\\t\\tdirectLightColor_Diffuse = PI * directLight.color;\\n\\t\\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\\n\\t\\t#ifdef DOUBLE_SIDED\\n\\t\\t\\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\\n\\t\\t#endif\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if NUM_DIR_LIGHTS > 0\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\\n\\t\\tgetDirectionalDirectLightIrradiance( directionalLights[ i ], geometry, directLight );\\n\\t\\tdotNL = dot( geometry.normal, directLight.direction );\\n\\t\\tdirectLightColor_Diffuse = PI * directLight.color;\\n\\t\\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\\n\\t\\t#ifdef DOUBLE_SIDED\\n\\t\\t\\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\\n\\t\\t#endif\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if NUM_HEMI_LIGHTS > 0\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\\n\\t\\tvIndirectFront += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry );\\n\\t\\t#ifdef DOUBLE_SIDED\\n\\t\\t\\tvIndirectBack += getHemisphereLightIrradiance( hemisphereLights[ i ], backGeometry );\\n\\t\\t#endif\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\";\n\nvar lights_pars_begin = \"uniform bool receiveShadow;\\nuniform vec3 ambientLightColor;\\nuniform vec3 lightProbe[ 9 ];\\nvec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) {\\n\\tfloat x = normal.x, y = normal.y, z = normal.z;\\n\\tvec3 result = shCoefficients[ 0 ] * 0.886227;\\n\\tresult += shCoefficients[ 1 ] * 2.0 * 0.511664 * y;\\n\\tresult += shCoefficients[ 2 ] * 2.0 * 0.511664 * z;\\n\\tresult += shCoefficients[ 3 ] * 2.0 * 0.511664 * x;\\n\\tresult += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y;\\n\\tresult += shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z;\\n\\tresult += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 );\\n\\tresult += shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z;\\n\\tresult += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y );\\n\\treturn result;\\n}\\nvec3 getLightProbeIrradiance( const in vec3 lightProbe[ 9 ], const in GeometricContext geometry ) {\\n\\tvec3 worldNormal = inverseTransformDirection( geometry.normal, viewMatrix );\\n\\tvec3 irradiance = shGetIrradianceAt( worldNormal, lightProbe );\\n\\treturn irradiance;\\n}\\nvec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) {\\n\\tvec3 irradiance = ambientLightColor;\\n\\t#ifndef PHYSICALLY_CORRECT_LIGHTS\\n\\t\\tirradiance *= PI;\\n\\t#endif\\n\\treturn irradiance;\\n}\\n#if NUM_DIR_LIGHTS > 0\\n\\tstruct DirectionalLight {\\n\\t\\tvec3 direction;\\n\\t\\tvec3 color;\\n\\t};\\n\\tuniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ];\\n\\tvoid getDirectionalDirectLightIrradiance( const in DirectionalLight directionalLight, const in GeometricContext geometry, out IncidentLight directLight ) {\\n\\t\\tdirectLight.color = directionalLight.color;\\n\\t\\tdirectLight.direction = directionalLight.direction;\\n\\t\\tdirectLight.visible = true;\\n\\t}\\n#endif\\n#if NUM_POINT_LIGHTS > 0\\n\\tstruct PointLight {\\n\\t\\tvec3 position;\\n\\t\\tvec3 color;\\n\\t\\tfloat distance;\\n\\t\\tfloat decay;\\n\\t};\\n\\tuniform PointLight pointLights[ NUM_POINT_LIGHTS ];\\n\\tvoid getPointDirectLightIrradiance( const in PointLight pointLight, const in GeometricContext geometry, out IncidentLight directLight ) {\\n\\t\\tvec3 lVector = pointLight.position - geometry.position;\\n\\t\\tdirectLight.direction = normalize( lVector );\\n\\t\\tfloat lightDistance = length( lVector );\\n\\t\\tdirectLight.color = pointLight.color;\\n\\t\\tdirectLight.color *= punctualLightIntensityToIrradianceFactor( lightDistance, pointLight.distance, pointLight.decay );\\n\\t\\tdirectLight.visible = ( directLight.color != vec3( 0.0 ) );\\n\\t}\\n#endif\\n#if NUM_SPOT_LIGHTS > 0\\n\\tstruct SpotLight {\\n\\t\\tvec3 position;\\n\\t\\tvec3 direction;\\n\\t\\tvec3 color;\\n\\t\\tfloat distance;\\n\\t\\tfloat decay;\\n\\t\\tfloat coneCos;\\n\\t\\tfloat penumbraCos;\\n\\t};\\n\\tuniform SpotLight spotLights[ NUM_SPOT_LIGHTS ];\\n\\tvoid getSpotDirectLightIrradiance( const in SpotLight spotLight, const in GeometricContext geometry, out IncidentLight directLight ) {\\n\\t\\tvec3 lVector = spotLight.position - geometry.position;\\n\\t\\tdirectLight.direction = normalize( lVector );\\n\\t\\tfloat lightDistance = length( lVector );\\n\\t\\tfloat angleCos = dot( directLight.direction, spotLight.direction );\\n\\t\\tif ( angleCos > spotLight.coneCos ) {\\n\\t\\t\\tfloat spotEffect = smoothstep( spotLight.coneCos, spotLight.penumbraCos, angleCos );\\n\\t\\t\\tdirectLight.color = spotLight.color;\\n\\t\\t\\tdirectLight.color *= spotEffect * punctualLightIntensityToIrradianceFactor( lightDistance, spotLight.distance, spotLight.decay );\\n\\t\\t\\tdirectLight.visible = true;\\n\\t\\t} else {\\n\\t\\t\\tdirectLight.color = vec3( 0.0 );\\n\\t\\t\\tdirectLight.visible = false;\\n\\t\\t}\\n\\t}\\n#endif\\n#if NUM_RECT_AREA_LIGHTS > 0\\n\\tstruct RectAreaLight {\\n\\t\\tvec3 color;\\n\\t\\tvec3 position;\\n\\t\\tvec3 halfWidth;\\n\\t\\tvec3 halfHeight;\\n\\t};\\n\\tuniform sampler2D ltc_1;\\tuniform sampler2D ltc_2;\\n\\tuniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ];\\n#endif\\n#if NUM_HEMI_LIGHTS > 0\\n\\tstruct HemisphereLight {\\n\\t\\tvec3 direction;\\n\\t\\tvec3 skyColor;\\n\\t\\tvec3 groundColor;\\n\\t};\\n\\tuniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ];\\n\\tvec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in GeometricContext geometry ) {\\n\\t\\tfloat dotNL = dot( geometry.normal, hemiLight.direction );\\n\\t\\tfloat hemiDiffuseWeight = 0.5 * dotNL + 0.5;\\n\\t\\tvec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight );\\n\\t\\t#ifndef PHYSICALLY_CORRECT_LIGHTS\\n\\t\\t\\tirradiance *= PI;\\n\\t\\t#endif\\n\\t\\treturn irradiance;\\n\\t}\\n#endif\";\n\nvar envmap_physical_pars_fragment = \"#if defined( USE_ENVMAP )\\n\\t#ifdef ENVMAP_MODE_REFRACTION\\n\\t\\tuniform float refractionRatio;\\n\\t#endif\\n\\tvec3 getLightProbeIndirectIrradiance( const in GeometricContext geometry, const in int maxMIPLevel ) {\\n\\t\\tvec3 worldNormal = inverseTransformDirection( geometry.normal, viewMatrix );\\n\\t\\t#ifdef ENVMAP_TYPE_CUBE\\n\\t\\t\\tvec3 queryVec = vec3( flipEnvMap * worldNormal.x, worldNormal.yz );\\n\\t\\t\\t#ifdef TEXTURE_LOD_EXT\\n\\t\\t\\t\\tvec4 envMapColor = textureCubeLodEXT( envMap, queryVec, float( maxMIPLevel ) );\\n\\t\\t\\t#else\\n\\t\\t\\t\\tvec4 envMapColor = textureCube( envMap, queryVec, float( maxMIPLevel ) );\\n\\t\\t\\t#endif\\n\\t\\t\\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\\n\\t\\t#elif defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\t\\tvec4 envMapColor = textureCubeUV( envMap, worldNormal, 1.0 );\\n\\t\\t#else\\n\\t\\t\\tvec4 envMapColor = vec4( 0.0 );\\n\\t\\t#endif\\n\\t\\treturn PI * envMapColor.rgb * envMapIntensity;\\n\\t}\\n\\tfloat getSpecularMIPLevel( const in float roughness, const in int maxMIPLevel ) {\\n\\t\\tfloat maxMIPLevelScalar = float( maxMIPLevel );\\n\\t\\tfloat sigma = PI * roughness * roughness / ( 1.0 + roughness );\\n\\t\\tfloat desiredMIPLevel = maxMIPLevelScalar + log2( sigma );\\n\\t\\treturn clamp( desiredMIPLevel, 0.0, maxMIPLevelScalar );\\n\\t}\\n\\tvec3 getLightProbeIndirectRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness, const in int maxMIPLevel ) {\\n\\t\\t#ifdef ENVMAP_MODE_REFLECTION\\n\\t\\t\\tvec3 reflectVec = reflect( -viewDir, normal );\\n\\t\\t\\treflectVec = normalize( mix( reflectVec, normal, roughness * roughness) );\\n\\t\\t#else\\n\\t\\t\\tvec3 reflectVec = refract( -viewDir, normal, refractionRatio );\\n\\t\\t#endif\\n\\t\\treflectVec = inverseTransformDirection( reflectVec, viewMatrix );\\n\\t\\tfloat specularMIPLevel = getSpecularMIPLevel( roughness, maxMIPLevel );\\n\\t\\t#ifdef ENVMAP_TYPE_CUBE\\n\\t\\t\\tvec3 queryReflectVec = vec3( flipEnvMap * reflectVec.x, reflectVec.yz );\\n\\t\\t\\t#ifdef TEXTURE_LOD_EXT\\n\\t\\t\\t\\tvec4 envMapColor = textureCubeLodEXT( envMap, queryReflectVec, specularMIPLevel );\\n\\t\\t\\t#else\\n\\t\\t\\t\\tvec4 envMapColor = textureCube( envMap, queryReflectVec, specularMIPLevel );\\n\\t\\t\\t#endif\\n\\t\\t\\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\\n\\t\\t#elif defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\t\\tvec4 envMapColor = textureCubeUV( envMap, reflectVec, roughness );\\n\\t\\t#endif\\n\\t\\treturn envMapColor.rgb * envMapIntensity;\\n\\t}\\n#endif\";\n\nvar lights_toon_fragment = \"ToonMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb;\";\n\nvar lights_toon_pars_fragment = \"varying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n#endif\\nstruct ToonMaterial {\\n\\tvec3 diffuseColor;\\n};\\nvoid RE_Direct_Toon( const in IncidentLight directLight, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\\n\\tvec3 irradiance = getGradientIrradiance( geometry.normal, directLight.direction ) * directLight.color;\\n\\t#ifndef PHYSICALLY_CORRECT_LIGHTS\\n\\t\\tirradiance *= PI;\\n\\t#endif\\n\\treflectedLight.directDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\\n}\\nvoid RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\\n\\treflectedLight.indirectDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\\n}\\n#define RE_Direct\\t\\t\\t\\tRE_Direct_Toon\\n#define RE_IndirectDiffuse\\t\\tRE_IndirectDiffuse_Toon\\n#define Material_LightProbeLOD( material )\\t(0)\";\n\nvar lights_phong_fragment = \"BlinnPhongMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb;\\nmaterial.specularColor = specular;\\nmaterial.specularShininess = shininess;\\nmaterial.specularStrength = specularStrength;\";\n\nvar lights_phong_pars_fragment = \"varying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n#endif\\nstruct BlinnPhongMaterial {\\n\\tvec3 diffuseColor;\\n\\tvec3 specularColor;\\n\\tfloat specularShininess;\\n\\tfloat specularStrength;\\n};\\nvoid RE_Direct_BlinnPhong( const in IncidentLight directLight, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\\n\\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\\n\\tvec3 irradiance = dotNL * directLight.color;\\n\\t#ifndef PHYSICALLY_CORRECT_LIGHTS\\n\\t\\tirradiance *= PI;\\n\\t#endif\\n\\treflectedLight.directDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\\n\\treflectedLight.directSpecular += irradiance * BRDF_Specular_BlinnPhong( directLight, geometry, material.specularColor, material.specularShininess ) * material.specularStrength;\\n}\\nvoid RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\\n\\treflectedLight.indirectDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\\n}\\n#define RE_Direct\\t\\t\\t\\tRE_Direct_BlinnPhong\\n#define RE_IndirectDiffuse\\t\\tRE_IndirectDiffuse_BlinnPhong\\n#define Material_LightProbeLOD( material )\\t(0)\";\n\nvar lights_physical_fragment = \"PhysicalMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor );\\nvec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) );\\nfloat geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );\\nmaterial.specularRoughness = max( roughnessFactor, 0.0525 );material.specularRoughness += geometryRoughness;\\nmaterial.specularRoughness = min( material.specularRoughness, 1.0 );\\n#ifdef REFLECTIVITY\\n\\tmaterial.specularColor = mix( vec3( MAXIMUM_SPECULAR_COEFFICIENT * pow2( reflectivity ) ), diffuseColor.rgb, metalnessFactor );\\n#else\\n\\tmaterial.specularColor = mix( vec3( DEFAULT_SPECULAR_COEFFICIENT ), diffuseColor.rgb, metalnessFactor );\\n#endif\\n#ifdef CLEARCOAT\\n\\tmaterial.clearcoat = clearcoat;\\n\\tmaterial.clearcoatRoughness = clearcoatRoughness;\\n\\t#ifdef USE_CLEARCOATMAP\\n\\t\\tmaterial.clearcoat *= texture2D( clearcoatMap, vUv ).x;\\n\\t#endif\\n\\t#ifdef USE_CLEARCOAT_ROUGHNESSMAP\\n\\t\\tmaterial.clearcoatRoughness *= texture2D( clearcoatRoughnessMap, vUv ).y;\\n\\t#endif\\n\\tmaterial.clearcoat = saturate( material.clearcoat );\\tmaterial.clearcoatRoughness = max( material.clearcoatRoughness, 0.0525 );\\n\\tmaterial.clearcoatRoughness += geometryRoughness;\\n\\tmaterial.clearcoatRoughness = min( material.clearcoatRoughness, 1.0 );\\n#endif\\n#ifdef USE_SHEEN\\n\\tmaterial.sheenColor = sheen;\\n#endif\";\n\nvar lights_physical_pars_fragment = \"struct PhysicalMaterial {\\n\\tvec3 diffuseColor;\\n\\tfloat specularRoughness;\\n\\tvec3 specularColor;\\n#ifdef CLEARCOAT\\n\\tfloat clearcoat;\\n\\tfloat clearcoatRoughness;\\n#endif\\n#ifdef USE_SHEEN\\n\\tvec3 sheenColor;\\n#endif\\n};\\n#define MAXIMUM_SPECULAR_COEFFICIENT 0.16\\n#define DEFAULT_SPECULAR_COEFFICIENT 0.04\\nfloat clearcoatDHRApprox( const in float roughness, const in float dotNL ) {\\n\\treturn DEFAULT_SPECULAR_COEFFICIENT + ( 1.0 - DEFAULT_SPECULAR_COEFFICIENT ) * ( pow( 1.0 - dotNL, 5.0 ) * pow( 1.0 - roughness, 2.0 ) );\\n}\\n#if NUM_RECT_AREA_LIGHTS > 0\\n\\tvoid RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\\t\\tvec3 normal = geometry.normal;\\n\\t\\tvec3 viewDir = geometry.viewDir;\\n\\t\\tvec3 position = geometry.position;\\n\\t\\tvec3 lightPos = rectAreaLight.position;\\n\\t\\tvec3 halfWidth = rectAreaLight.halfWidth;\\n\\t\\tvec3 halfHeight = rectAreaLight.halfHeight;\\n\\t\\tvec3 lightColor = rectAreaLight.color;\\n\\t\\tfloat roughness = material.specularRoughness;\\n\\t\\tvec3 rectCoords[ 4 ];\\n\\t\\trectCoords[ 0 ] = lightPos + halfWidth - halfHeight;\\t\\trectCoords[ 1 ] = lightPos - halfWidth - halfHeight;\\n\\t\\trectCoords[ 2 ] = lightPos - halfWidth + halfHeight;\\n\\t\\trectCoords[ 3 ] = lightPos + halfWidth + halfHeight;\\n\\t\\tvec2 uv = LTC_Uv( normal, viewDir, roughness );\\n\\t\\tvec4 t1 = texture2D( ltc_1, uv );\\n\\t\\tvec4 t2 = texture2D( ltc_2, uv );\\n\\t\\tmat3 mInv = mat3(\\n\\t\\t\\tvec3( t1.x, 0, t1.y ),\\n\\t\\t\\tvec3(    0, 1,    0 ),\\n\\t\\t\\tvec3( t1.z, 0, t1.w )\\n\\t\\t);\\n\\t\\tvec3 fresnel = ( material.specularColor * t2.x + ( vec3( 1.0 ) - material.specularColor ) * t2.y );\\n\\t\\treflectedLight.directSpecular += lightColor * fresnel * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords );\\n\\t\\treflectedLight.directDiffuse += lightColor * material.diffuseColor * LTC_Evaluate( normal, viewDir, position, mat3( 1.0 ), rectCoords );\\n\\t}\\n#endif\\nvoid RE_Direct_Physical( const in IncidentLight directLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\\n\\tvec3 irradiance = dotNL * directLight.color;\\n\\t#ifndef PHYSICALLY_CORRECT_LIGHTS\\n\\t\\tirradiance *= PI;\\n\\t#endif\\n\\t#ifdef CLEARCOAT\\n\\t\\tfloat ccDotNL = saturate( dot( geometry.clearcoatNormal, directLight.direction ) );\\n\\t\\tvec3 ccIrradiance = ccDotNL * directLight.color;\\n\\t\\t#ifndef PHYSICALLY_CORRECT_LIGHTS\\n\\t\\t\\tccIrradiance *= PI;\\n\\t\\t#endif\\n\\t\\tfloat clearcoatDHR = material.clearcoat * clearcoatDHRApprox( material.clearcoatRoughness, ccDotNL );\\n\\t\\treflectedLight.directSpecular += ccIrradiance * material.clearcoat * BRDF_Specular_GGX( directLight, geometry.viewDir, geometry.clearcoatNormal, vec3( DEFAULT_SPECULAR_COEFFICIENT ), material.clearcoatRoughness );\\n\\t#else\\n\\t\\tfloat clearcoatDHR = 0.0;\\n\\t#endif\\n\\t#ifdef USE_SHEEN\\n\\t\\treflectedLight.directSpecular += ( 1.0 - clearcoatDHR ) * irradiance * BRDF_Specular_Sheen(\\n\\t\\t\\tmaterial.specularRoughness,\\n\\t\\t\\tdirectLight.direction,\\n\\t\\t\\tgeometry,\\n\\t\\t\\tmaterial.sheenColor\\n\\t\\t);\\n\\t#else\\n\\t\\treflectedLight.directSpecular += ( 1.0 - clearcoatDHR ) * irradiance * BRDF_Specular_GGX( directLight, geometry.viewDir, geometry.normal, material.specularColor, material.specularRoughness);\\n\\t#endif\\n\\treflectedLight.directDiffuse += ( 1.0 - clearcoatDHR ) * irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\\n}\\nvoid RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\\treflectedLight.indirectDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\\n}\\nvoid RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradiance, const in vec3 clearcoatRadiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) {\\n\\t#ifdef CLEARCOAT\\n\\t\\tfloat ccDotNV = saturate( dot( geometry.clearcoatNormal, geometry.viewDir ) );\\n\\t\\treflectedLight.indirectSpecular += clearcoatRadiance * material.clearcoat * BRDF_Specular_GGX_Environment( geometry.viewDir, geometry.clearcoatNormal, vec3( DEFAULT_SPECULAR_COEFFICIENT ), material.clearcoatRoughness );\\n\\t\\tfloat ccDotNL = ccDotNV;\\n\\t\\tfloat clearcoatDHR = material.clearcoat * clearcoatDHRApprox( material.clearcoatRoughness, ccDotNL );\\n\\t#else\\n\\t\\tfloat clearcoatDHR = 0.0;\\n\\t#endif\\n\\tfloat clearcoatInv = 1.0 - clearcoatDHR;\\n\\tvec3 singleScattering = vec3( 0.0 );\\n\\tvec3 multiScattering = vec3( 0.0 );\\n\\tvec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI;\\n\\tBRDF_Specular_Multiscattering_Environment( geometry, material.specularColor, material.specularRoughness, singleScattering, multiScattering );\\n\\tvec3 diffuse = material.diffuseColor * ( 1.0 - ( singleScattering + multiScattering ) );\\n\\treflectedLight.indirectSpecular += clearcoatInv * radiance * singleScattering;\\n\\treflectedLight.indirectSpecular += multiScattering * cosineWeightedIrradiance;\\n\\treflectedLight.indirectDiffuse += diffuse * cosineWeightedIrradiance;\\n}\\n#define RE_Direct\\t\\t\\t\\tRE_Direct_Physical\\n#define RE_Direct_RectArea\\t\\tRE_Direct_RectArea_Physical\\n#define RE_IndirectDiffuse\\t\\tRE_IndirectDiffuse_Physical\\n#define RE_IndirectSpecular\\t\\tRE_IndirectSpecular_Physical\\nfloat computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) {\\n\\treturn saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion );\\n}\";\n\nvar lights_fragment_begin = \"\\nGeometricContext geometry;\\ngeometry.position = - vViewPosition;\\ngeometry.normal = normal;\\ngeometry.viewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition );\\n#ifdef CLEARCOAT\\n\\tgeometry.clearcoatNormal = clearcoatNormal;\\n#endif\\nIncidentLight directLight;\\n#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct )\\n\\tPointLight pointLight;\\n\\t#if defined( USE_SHADOWMAP ) && NUM_POINT_LIGHT_SHADOWS > 0\\n\\tPointLightShadow pointLightShadow;\\n\\t#endif\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\\n\\t\\tpointLight = pointLights[ i ];\\n\\t\\tgetPointDirectLightIrradiance( pointLight, geometry, directLight );\\n\\t\\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS )\\n\\t\\tpointLightShadow = pointLightShadows[ i ];\\n\\t\\tdirectLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getPointShadow( pointShadowMap[ i ], pointLightShadow.shadowMapSize, pointLightShadow.shadowBias, pointLightShadow.shadowRadius, vPointShadowCoord[ i ], pointLightShadow.shadowCameraNear, pointLightShadow.shadowCameraFar ) : 1.0;\\n\\t\\t#endif\\n\\t\\tRE_Direct( directLight, geometry, material, reflectedLight );\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct )\\n\\tSpotLight spotLight;\\n\\t#if defined( USE_SHADOWMAP ) && NUM_SPOT_LIGHT_SHADOWS > 0\\n\\tSpotLightShadow spotLightShadow;\\n\\t#endif\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\\n\\t\\tspotLight = spotLights[ i ];\\n\\t\\tgetSpotDirectLightIrradiance( spotLight, geometry, directLight );\\n\\t\\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\\n\\t\\tspotLightShadow = spotLightShadows[ i ];\\n\\t\\tdirectLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getShadow( spotShadowMap[ i ], spotLightShadow.shadowMapSize, spotLightShadow.shadowBias, spotLightShadow.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\\n\\t\\t#endif\\n\\t\\tRE_Direct( directLight, geometry, material, reflectedLight );\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct )\\n\\tDirectionalLight directionalLight;\\n\\t#if defined( USE_SHADOWMAP ) && NUM_DIR_LIGHT_SHADOWS > 0\\n\\tDirectionalLightShadow directionalLightShadow;\\n\\t#endif\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\\n\\t\\tdirectionalLight = directionalLights[ i ];\\n\\t\\tgetDirectionalDirectLightIrradiance( directionalLight, geometry, directLight );\\n\\t\\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS )\\n\\t\\tdirectionalLightShadow = directionalLightShadows[ i ];\\n\\t\\tdirectLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\\n\\t\\t#endif\\n\\t\\tRE_Direct( directLight, geometry, material, reflectedLight );\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea )\\n\\tRectAreaLight rectAreaLight;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) {\\n\\t\\trectAreaLight = rectAreaLights[ i ];\\n\\t\\tRE_Direct_RectArea( rectAreaLight, geometry, material, reflectedLight );\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if defined( RE_IndirectDiffuse )\\n\\tvec3 iblIrradiance = vec3( 0.0 );\\n\\tvec3 irradiance = getAmbientLightIrradiance( ambientLightColor );\\n\\tirradiance += getLightProbeIrradiance( lightProbe, geometry );\\n\\t#if ( NUM_HEMI_LIGHTS > 0 )\\n\\t\\t#pragma unroll_loop_start\\n\\t\\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\\n\\t\\t\\tirradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry );\\n\\t\\t}\\n\\t\\t#pragma unroll_loop_end\\n\\t#endif\\n#endif\\n#if defined( RE_IndirectSpecular )\\n\\tvec3 radiance = vec3( 0.0 );\\n\\tvec3 clearcoatRadiance = vec3( 0.0 );\\n#endif\";\n\nvar lights_fragment_maps = \"#if defined( RE_IndirectDiffuse )\\n\\t#ifdef USE_LIGHTMAP\\n\\t\\tvec4 lightMapTexel= texture2D( lightMap, vUv2 );\\n\\t\\tvec3 lightMapIrradiance = lightMapTexelToLinear( lightMapTexel ).rgb * lightMapIntensity;\\n\\t\\t#ifndef PHYSICALLY_CORRECT_LIGHTS\\n\\t\\t\\tlightMapIrradiance *= PI;\\n\\t\\t#endif\\n\\t\\tirradiance += lightMapIrradiance;\\n\\t#endif\\n\\t#if defined( USE_ENVMAP ) && defined( STANDARD ) && defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\tiblIrradiance += getLightProbeIndirectIrradiance( geometry, maxMipLevel );\\n\\t#endif\\n#endif\\n#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular )\\n\\tradiance += getLightProbeIndirectRadiance( geometry.viewDir, geometry.normal, material.specularRoughness, maxMipLevel );\\n\\t#ifdef CLEARCOAT\\n\\t\\tclearcoatRadiance += getLightProbeIndirectRadiance( geometry.viewDir, geometry.clearcoatNormal, material.clearcoatRoughness, maxMipLevel );\\n\\t#endif\\n#endif\";\n\nvar lights_fragment_end = \"#if defined( RE_IndirectDiffuse )\\n\\tRE_IndirectDiffuse( irradiance, geometry, material, reflectedLight );\\n#endif\\n#if defined( RE_IndirectSpecular )\\n\\tRE_IndirectSpecular( radiance, iblIrradiance, clearcoatRadiance, geometry, material, reflectedLight );\\n#endif\";\n\nvar logdepthbuf_fragment = \"#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\\n\\tgl_FragDepthEXT = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\\n#endif\";\n\nvar logdepthbuf_pars_fragment = \"#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\\n\\tuniform float logDepthBufFC;\\n\\tvarying float vFragDepth;\\n\\tvarying float vIsPerspective;\\n#endif\";\n\nvar logdepthbuf_pars_vertex = \"#ifdef USE_LOGDEPTHBUF\\n\\t#ifdef USE_LOGDEPTHBUF_EXT\\n\\t\\tvarying float vFragDepth;\\n\\t\\tvarying float vIsPerspective;\\n\\t#else\\n\\t\\tuniform float logDepthBufFC;\\n\\t#endif\\n#endif\";\n\nvar logdepthbuf_vertex = \"#ifdef USE_LOGDEPTHBUF\\n\\t#ifdef USE_LOGDEPTHBUF_EXT\\n\\t\\tvFragDepth = 1.0 + gl_Position.w;\\n\\t\\tvIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) );\\n\\t#else\\n\\t\\tif ( isPerspectiveMatrix( projectionMatrix ) ) {\\n\\t\\t\\tgl_Position.z = log2( max( EPSILON, gl_Position.w + 1.0 ) ) * logDepthBufFC - 1.0;\\n\\t\\t\\tgl_Position.z *= gl_Position.w;\\n\\t\\t}\\n\\t#endif\\n#endif\";\n\nvar map_fragment = \"#ifdef USE_MAP\\n\\tvec4 texelColor = texture2D( map, vUv );\\n\\ttexelColor = mapTexelToLinear( texelColor );\\n\\tdiffuseColor *= texelColor;\\n#endif\";\n\nvar map_pars_fragment = \"#ifdef USE_MAP\\n\\tuniform sampler2D map;\\n#endif\";\n\nvar map_particle_fragment = \"#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\\n\\tvec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy;\\n#endif\\n#ifdef USE_MAP\\n\\tvec4 mapTexel = texture2D( map, uv );\\n\\tdiffuseColor *= mapTexelToLinear( mapTexel );\\n#endif\\n#ifdef USE_ALPHAMAP\\n\\tdiffuseColor.a *= texture2D( alphaMap, uv ).g;\\n#endif\";\n\nvar map_particle_pars_fragment = \"#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\\n\\tuniform mat3 uvTransform;\\n#endif\\n#ifdef USE_MAP\\n\\tuniform sampler2D map;\\n#endif\\n#ifdef USE_ALPHAMAP\\n\\tuniform sampler2D alphaMap;\\n#endif\";\n\nvar metalnessmap_fragment = \"float metalnessFactor = metalness;\\n#ifdef USE_METALNESSMAP\\n\\tvec4 texelMetalness = texture2D( metalnessMap, vUv );\\n\\tmetalnessFactor *= texelMetalness.b;\\n#endif\";\n\nvar metalnessmap_pars_fragment = \"#ifdef USE_METALNESSMAP\\n\\tuniform sampler2D metalnessMap;\\n#endif\";\n\nvar morphnormal_vertex = \"#ifdef USE_MORPHNORMALS\\n\\tobjectNormal *= morphTargetBaseInfluence;\\n\\tobjectNormal += morphNormal0 * morphTargetInfluences[ 0 ];\\n\\tobjectNormal += morphNormal1 * morphTargetInfluences[ 1 ];\\n\\tobjectNormal += morphNormal2 * morphTargetInfluences[ 2 ];\\n\\tobjectNormal += morphNormal3 * morphTargetInfluences[ 3 ];\\n#endif\";\n\nvar morphtarget_pars_vertex = \"#ifdef USE_MORPHTARGETS\\n\\tuniform float morphTargetBaseInfluence;\\n\\t#ifndef USE_MORPHNORMALS\\n\\t\\tuniform float morphTargetInfluences[ 8 ];\\n\\t#else\\n\\t\\tuniform float morphTargetInfluences[ 4 ];\\n\\t#endif\\n#endif\";\n\nvar morphtarget_vertex = \"#ifdef USE_MORPHTARGETS\\n\\ttransformed *= morphTargetBaseInfluence;\\n\\ttransformed += morphTarget0 * morphTargetInfluences[ 0 ];\\n\\ttransformed += morphTarget1 * morphTargetInfluences[ 1 ];\\n\\ttransformed += morphTarget2 * morphTargetInfluences[ 2 ];\\n\\ttransformed += morphTarget3 * morphTargetInfluences[ 3 ];\\n\\t#ifndef USE_MORPHNORMALS\\n\\t\\ttransformed += morphTarget4 * morphTargetInfluences[ 4 ];\\n\\t\\ttransformed += morphTarget5 * morphTargetInfluences[ 5 ];\\n\\t\\ttransformed += morphTarget6 * morphTargetInfluences[ 6 ];\\n\\t\\ttransformed += morphTarget7 * morphTargetInfluences[ 7 ];\\n\\t#endif\\n#endif\";\n\nvar normal_fragment_begin = \"#ifdef FLAT_SHADED\\n\\tvec3 fdx = vec3( dFdx( vViewPosition.x ), dFdx( vViewPosition.y ), dFdx( vViewPosition.z ) );\\n\\tvec3 fdy = vec3( dFdy( vViewPosition.x ), dFdy( vViewPosition.y ), dFdy( vViewPosition.z ) );\\n\\tvec3 normal = normalize( cross( fdx, fdy ) );\\n#else\\n\\tvec3 normal = normalize( vNormal );\\n\\t#ifdef DOUBLE_SIDED\\n\\t\\tnormal = normal * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\\n\\t#endif\\n\\t#ifdef USE_TANGENT\\n\\t\\tvec3 tangent = normalize( vTangent );\\n\\t\\tvec3 bitangent = normalize( vBitangent );\\n\\t\\t#ifdef DOUBLE_SIDED\\n\\t\\t\\ttangent = tangent * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\\n\\t\\t\\tbitangent = bitangent * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\\n\\t\\t#endif\\n\\t\\t#if defined( TANGENTSPACE_NORMALMAP ) || defined( USE_CLEARCOAT_NORMALMAP )\\n\\t\\t\\tmat3 vTBN = mat3( tangent, bitangent, normal );\\n\\t\\t#endif\\n\\t#endif\\n#endif\\nvec3 geometryNormal = normal;\";\n\nvar normal_fragment_maps = \"#ifdef OBJECTSPACE_NORMALMAP\\n\\tnormal = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\\n\\t#ifdef FLIP_SIDED\\n\\t\\tnormal = - normal;\\n\\t#endif\\n\\t#ifdef DOUBLE_SIDED\\n\\t\\tnormal = normal * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\\n\\t#endif\\n\\tnormal = normalize( normalMatrix * normal );\\n#elif defined( TANGENTSPACE_NORMALMAP )\\n\\tvec3 mapN = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\\n\\tmapN.xy *= normalScale;\\n\\t#ifdef USE_TANGENT\\n\\t\\tnormal = normalize( vTBN * mapN );\\n\\t#else\\n\\t\\tnormal = perturbNormal2Arb( -vViewPosition, normal, mapN );\\n\\t#endif\\n#elif defined( USE_BUMPMAP )\\n\\tnormal = perturbNormalArb( -vViewPosition, normal, dHdxy_fwd() );\\n#endif\";\n\nvar normalmap_pars_fragment = \"#ifdef USE_NORMALMAP\\n\\tuniform sampler2D normalMap;\\n\\tuniform vec2 normalScale;\\n#endif\\n#ifdef OBJECTSPACE_NORMALMAP\\n\\tuniform mat3 normalMatrix;\\n#endif\\n#if ! defined ( USE_TANGENT ) && ( defined ( TANGENTSPACE_NORMALMAP ) || defined ( USE_CLEARCOAT_NORMALMAP ) )\\n\\tvec3 perturbNormal2Arb( vec3 eye_pos, vec3 surf_norm, vec3 mapN ) {\\n\\t\\tvec3 q0 = vec3( dFdx( eye_pos.x ), dFdx( eye_pos.y ), dFdx( eye_pos.z ) );\\n\\t\\tvec3 q1 = vec3( dFdy( eye_pos.x ), dFdy( eye_pos.y ), dFdy( eye_pos.z ) );\\n\\t\\tvec2 st0 = dFdx( vUv.st );\\n\\t\\tvec2 st1 = dFdy( vUv.st );\\n\\t\\tfloat scale = sign( st1.t * st0.s - st0.t * st1.s );\\n\\t\\tvec3 S = normalize( ( q0 * st1.t - q1 * st0.t ) * scale );\\n\\t\\tvec3 T = normalize( ( - q0 * st1.s + q1 * st0.s ) * scale );\\n\\t\\tvec3 N = normalize( surf_norm );\\n\\t\\tmat3 tsn = mat3( S, T, N );\\n\\t\\tmapN.xy *= ( float( gl_FrontFacing ) * 2.0 - 1.0 );\\n\\t\\treturn normalize( tsn * mapN );\\n\\t}\\n#endif\";\n\nvar clearcoat_normal_fragment_begin = \"#ifdef CLEARCOAT\\n\\tvec3 clearcoatNormal = geometryNormal;\\n#endif\";\n\nvar clearcoat_normal_fragment_maps = \"#ifdef USE_CLEARCOAT_NORMALMAP\\n\\tvec3 clearcoatMapN = texture2D( clearcoatNormalMap, vUv ).xyz * 2.0 - 1.0;\\n\\tclearcoatMapN.xy *= clearcoatNormalScale;\\n\\t#ifdef USE_TANGENT\\n\\t\\tclearcoatNormal = normalize( vTBN * clearcoatMapN );\\n\\t#else\\n\\t\\tclearcoatNormal = perturbNormal2Arb( - vViewPosition, clearcoatNormal, clearcoatMapN );\\n\\t#endif\\n#endif\";\n\nvar clearcoat_pars_fragment = \"#ifdef USE_CLEARCOATMAP\\n\\tuniform sampler2D clearcoatMap;\\n#endif\\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\\n\\tuniform sampler2D clearcoatRoughnessMap;\\n#endif\\n#ifdef USE_CLEARCOAT_NORMALMAP\\n\\tuniform sampler2D clearcoatNormalMap;\\n\\tuniform vec2 clearcoatNormalScale;\\n#endif\";\n\nvar packing = \"vec3 packNormalToRGB( const in vec3 normal ) {\\n\\treturn normalize( normal ) * 0.5 + 0.5;\\n}\\nvec3 unpackRGBToNormal( const in vec3 rgb ) {\\n\\treturn 2.0 * rgb.xyz - 1.0;\\n}\\nconst float PackUpscale = 256. / 255.;const float UnpackDownscale = 255. / 256.;\\nconst vec3 PackFactors = vec3( 256. * 256. * 256., 256. * 256., 256. );\\nconst vec4 UnpackFactors = UnpackDownscale / vec4( PackFactors, 1. );\\nconst float ShiftRight8 = 1. / 256.;\\nvec4 packDepthToRGBA( const in float v ) {\\n\\tvec4 r = vec4( fract( v * PackFactors ), v );\\n\\tr.yzw -= r.xyz * ShiftRight8;\\treturn r * PackUpscale;\\n}\\nfloat unpackRGBAToDepth( const in vec4 v ) {\\n\\treturn dot( v, UnpackFactors );\\n}\\nvec4 pack2HalfToRGBA( vec2 v ) {\\n\\tvec4 r = vec4( v.x, fract( v.x * 255.0 ), v.y, fract( v.y * 255.0 ));\\n\\treturn vec4( r.x - r.y / 255.0, r.y, r.z - r.w / 255.0, r.w);\\n}\\nvec2 unpackRGBATo2Half( vec4 v ) {\\n\\treturn vec2( v.x + ( v.y / 255.0 ), v.z + ( v.w / 255.0 ) );\\n}\\nfloat viewZToOrthographicDepth( const in float viewZ, const in float near, const in float far ) {\\n\\treturn ( viewZ + near ) / ( near - far );\\n}\\nfloat orthographicDepthToViewZ( const in float linearClipZ, const in float near, const in float far ) {\\n\\treturn linearClipZ * ( near - far ) - near;\\n}\\nfloat viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) {\\n\\treturn (( near + viewZ ) * far ) / (( far - near ) * viewZ );\\n}\\nfloat perspectiveDepthToViewZ( const in float invClipZ, const in float near, const in float far ) {\\n\\treturn ( near * far ) / ( ( far - near ) * invClipZ - far );\\n}\";\n\nvar premultiplied_alpha_fragment = \"#ifdef PREMULTIPLIED_ALPHA\\n\\tgl_FragColor.rgb *= gl_FragColor.a;\\n#endif\";\n\nvar project_vertex = \"vec4 mvPosition = vec4( transformed, 1.0 );\\n#ifdef USE_INSTANCING\\n\\tmvPosition = instanceMatrix * mvPosition;\\n#endif\\nmvPosition = modelViewMatrix * mvPosition;\\ngl_Position = projectionMatrix * mvPosition;\";\n\nvar dithering_fragment = \"#ifdef DITHERING\\n\\tgl_FragColor.rgb = dithering( gl_FragColor.rgb );\\n#endif\";\n\nvar dithering_pars_fragment = \"#ifdef DITHERING\\n\\tvec3 dithering( vec3 color ) {\\n\\t\\tfloat grid_position = rand( gl_FragCoord.xy );\\n\\t\\tvec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 );\\n\\t\\tdither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position );\\n\\t\\treturn color + dither_shift_RGB;\\n\\t}\\n#endif\";\n\nvar roughnessmap_fragment = \"float roughnessFactor = roughness;\\n#ifdef USE_ROUGHNESSMAP\\n\\tvec4 texelRoughness = texture2D( roughnessMap, vUv );\\n\\troughnessFactor *= texelRoughness.g;\\n#endif\";\n\nvar roughnessmap_pars_fragment = \"#ifdef USE_ROUGHNESSMAP\\n\\tuniform sampler2D roughnessMap;\\n#endif\";\n\nvar shadowmap_pars_fragment = \"#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\\t\\tuniform sampler2D directionalShadowMap[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t\\tstruct DirectionalLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t};\\n\\t\\tuniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHT_SHADOWS > 0\\n\\t\\tuniform sampler2D spotShadowMap[ NUM_SPOT_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHT_SHADOWS ];\\n\\t\\tstruct SpotLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t};\\n\\t\\tuniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\\n\\t#endif\\n\\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\\t\\tuniform sampler2D pointShadowMap[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t\\tstruct PointLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t\\tfloat shadowCameraNear;\\n\\t\\t\\tfloat shadowCameraFar;\\n\\t\\t};\\n\\t\\tuniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t#endif\\n\\tfloat texture2DCompare( sampler2D depths, vec2 uv, float compare ) {\\n\\t\\treturn step( compare, unpackRGBAToDepth( texture2D( depths, uv ) ) );\\n\\t}\\n\\tvec2 texture2DDistribution( sampler2D shadow, vec2 uv ) {\\n\\t\\treturn unpackRGBATo2Half( texture2D( shadow, uv ) );\\n\\t}\\n\\tfloat VSMShadow (sampler2D shadow, vec2 uv, float compare ){\\n\\t\\tfloat occlusion = 1.0;\\n\\t\\tvec2 distribution = texture2DDistribution( shadow, uv );\\n\\t\\tfloat hard_shadow = step( compare , distribution.x );\\n\\t\\tif (hard_shadow != 1.0 ) {\\n\\t\\t\\tfloat distance = compare - distribution.x ;\\n\\t\\t\\tfloat variance = max( 0.00000, distribution.y * distribution.y );\\n\\t\\t\\tfloat softness_probability = variance / (variance + distance * distance );\\t\\t\\tsoftness_probability = clamp( ( softness_probability - 0.3 ) / ( 0.95 - 0.3 ), 0.0, 1.0 );\\t\\t\\tocclusion = clamp( max( hard_shadow, softness_probability ), 0.0, 1.0 );\\n\\t\\t}\\n\\t\\treturn occlusion;\\n\\t}\\n\\tfloat getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord ) {\\n\\t\\tfloat shadow = 1.0;\\n\\t\\tshadowCoord.xyz /= shadowCoord.w;\\n\\t\\tshadowCoord.z += shadowBias;\\n\\t\\tbvec4 inFrustumVec = bvec4 ( shadowCoord.x >= 0.0, shadowCoord.x <= 1.0, shadowCoord.y >= 0.0, shadowCoord.y <= 1.0 );\\n\\t\\tbool inFrustum = all( inFrustumVec );\\n\\t\\tbvec2 frustumTestVec = bvec2( inFrustum, shadowCoord.z <= 1.0 );\\n\\t\\tbool frustumTest = all( frustumTestVec );\\n\\t\\tif ( frustumTest ) {\\n\\t\\t#if defined( SHADOWMAP_TYPE_PCF )\\n\\t\\t\\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\\n\\t\\t\\tfloat dx0 = - texelSize.x * shadowRadius;\\n\\t\\t\\tfloat dy0 = - texelSize.y * shadowRadius;\\n\\t\\t\\tfloat dx1 = + texelSize.x * shadowRadius;\\n\\t\\t\\tfloat dy1 = + texelSize.y * shadowRadius;\\n\\t\\t\\tfloat dx2 = dx0 / 2.0;\\n\\t\\t\\tfloat dy2 = dy0 / 2.0;\\n\\t\\t\\tfloat dx3 = dx1 / 2.0;\\n\\t\\t\\tfloat dy3 = dy1 / 2.0;\\n\\t\\t\\tshadow = (\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy2 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy2 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy2 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy3 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy3 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy3 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z )\\n\\t\\t\\t) * ( 1.0 / 17.0 );\\n\\t\\t#elif defined( SHADOWMAP_TYPE_PCF_SOFT )\\n\\t\\t\\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\\n\\t\\t\\tfloat dx = texelSize.x;\\n\\t\\t\\tfloat dy = texelSize.y;\\n\\t\\t\\tvec2 uv = shadowCoord.xy;\\n\\t\\t\\tvec2 f = fract( uv * shadowMapSize + 0.5 );\\n\\t\\t\\tuv -= f * texelSize;\\n\\t\\t\\tshadow = (\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, uv, shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, uv + vec2( dx, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, uv + vec2( 0.0, dy ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, uv + texelSize, shadowCoord.z ) +\\n\\t\\t\\t\\tmix( texture2DCompare( shadowMap, uv + vec2( -dx, 0.0 ), shadowCoord.z ), \\n\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 0.0 ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t f.x ) +\\n\\t\\t\\t\\tmix( texture2DCompare( shadowMap, uv + vec2( -dx, dy ), shadowCoord.z ), \\n\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t f.x ) +\\n\\t\\t\\t\\tmix( texture2DCompare( shadowMap, uv + vec2( 0.0, -dy ), shadowCoord.z ), \\n\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 0.0, 2.0 * dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t f.y ) +\\n\\t\\t\\t\\tmix( texture2DCompare( shadowMap, uv + vec2( dx, -dy ), shadowCoord.z ), \\n\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( dx, 2.0 * dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t f.y ) +\\n\\t\\t\\t\\tmix( mix( texture2DCompare( shadowMap, uv + vec2( -dx, -dy ), shadowCoord.z ), \\n\\t\\t\\t\\t\\t\\t  texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, -dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t\\t  f.x ),\\n\\t\\t\\t\\t\\t mix( texture2DCompare( shadowMap, uv + vec2( -dx, 2.0 * dy ), shadowCoord.z ), \\n\\t\\t\\t\\t\\t\\t  texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 2.0 * dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t\\t  f.x ),\\n\\t\\t\\t\\t\\t f.y )\\n\\t\\t\\t) * ( 1.0 / 9.0 );\\n\\t\\t#elif defined( SHADOWMAP_TYPE_VSM )\\n\\t\\t\\tshadow = VSMShadow( shadowMap, shadowCoord.xy, shadowCoord.z );\\n\\t\\t#else\\n\\t\\t\\tshadow = texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z );\\n\\t\\t#endif\\n\\t\\t}\\n\\t\\treturn shadow;\\n\\t}\\n\\tvec2 cubeToUV( vec3 v, float texelSizeY ) {\\n\\t\\tvec3 absV = abs( v );\\n\\t\\tfloat scaleToCube = 1.0 / max( absV.x, max( absV.y, absV.z ) );\\n\\t\\tabsV *= scaleToCube;\\n\\t\\tv *= scaleToCube * ( 1.0 - 2.0 * texelSizeY );\\n\\t\\tvec2 planar = v.xy;\\n\\t\\tfloat almostATexel = 1.5 * texelSizeY;\\n\\t\\tfloat almostOne = 1.0 - almostATexel;\\n\\t\\tif ( absV.z >= almostOne ) {\\n\\t\\t\\tif ( v.z > 0.0 )\\n\\t\\t\\t\\tplanar.x = 4.0 - v.x;\\n\\t\\t} else if ( absV.x >= almostOne ) {\\n\\t\\t\\tfloat signX = sign( v.x );\\n\\t\\t\\tplanar.x = v.z * signX + 2.0 * signX;\\n\\t\\t} else if ( absV.y >= almostOne ) {\\n\\t\\t\\tfloat signY = sign( v.y );\\n\\t\\t\\tplanar.x = v.x + 2.0 * signY + 2.0;\\n\\t\\t\\tplanar.y = v.z * signY - 2.0;\\n\\t\\t}\\n\\t\\treturn vec2( 0.125, 0.25 ) * planar + vec2( 0.375, 0.75 );\\n\\t}\\n\\tfloat getPointShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) {\\n\\t\\tvec2 texelSize = vec2( 1.0 ) / ( shadowMapSize * vec2( 4.0, 2.0 ) );\\n\\t\\tvec3 lightToPosition = shadowCoord.xyz;\\n\\t\\tfloat dp = ( length( lightToPosition ) - shadowCameraNear ) / ( shadowCameraFar - shadowCameraNear );\\t\\tdp += shadowBias;\\n\\t\\tvec3 bd3D = normalize( lightToPosition );\\n\\t\\t#if defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_PCF_SOFT ) || defined( SHADOWMAP_TYPE_VSM )\\n\\t\\t\\tvec2 offset = vec2( - 1, 1 ) * shadowRadius * texelSize.y;\\n\\t\\t\\treturn (\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyy, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyy, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyx, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyx, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxy, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxy, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxx, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxx, texelSize.y ), dp )\\n\\t\\t\\t) * ( 1.0 / 9.0 );\\n\\t\\t#else\\n\\t\\t\\treturn texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp );\\n\\t\\t#endif\\n\\t}\\n#endif\";\n\nvar shadowmap_pars_vertex = \"#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\\t\\tuniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t\\tstruct DirectionalLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t};\\n\\t\\tuniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHT_SHADOWS > 0\\n\\t\\tuniform mat4 spotShadowMatrix[ NUM_SPOT_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHT_SHADOWS ];\\n\\t\\tstruct SpotLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t};\\n\\t\\tuniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\\n\\t#endif\\n\\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\\t\\tuniform mat4 pointShadowMatrix[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t\\tstruct PointLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t\\tfloat shadowCameraNear;\\n\\t\\t\\tfloat shadowCameraFar;\\n\\t\\t};\\n\\t\\tuniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t#endif\\n#endif\";\n\nvar shadowmap_vertex = \"#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0 || NUM_SPOT_LIGHT_SHADOWS > 0 || NUM_POINT_LIGHT_SHADOWS > 0\\n\\t\\tvec3 shadowWorldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\\n\\t\\tvec4 shadowWorldPosition;\\n\\t#endif\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * directionalLightShadows[ i ].shadowNormalBias, 0 );\\n\\t\\tvDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * shadowWorldPosition;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHT_SHADOWS > 0\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * spotLightShadows[ i ].shadowNormalBias, 0 );\\n\\t\\tvSpotShadowCoord[ i ] = spotShadowMatrix[ i ] * shadowWorldPosition;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * pointLightShadows[ i ].shadowNormalBias, 0 );\\n\\t\\tvPointShadowCoord[ i ] = pointShadowMatrix[ i ] * shadowWorldPosition;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n#endif\";\n\nvar shadowmask_pars_fragment = \"float getShadowMask() {\\n\\tfloat shadow = 1.0;\\n\\t#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\\tDirectionalLightShadow directionalLight;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tdirectionalLight = directionalLightShadows[ i ];\\n\\t\\tshadow *= receiveShadow ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHT_SHADOWS > 0\\n\\tSpotLightShadow spotLight;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tspotLight = spotLightShadows[ i ];\\n\\t\\tshadow *= receiveShadow ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\\tPointLightShadow pointLight;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tpointLight = pointLightShadows[ i ];\\n\\t\\tshadow *= receiveShadow ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#endif\\n\\treturn shadow;\\n}\";\n\nvar skinbase_vertex = \"#ifdef USE_SKINNING\\n\\tmat4 boneMatX = getBoneMatrix( skinIndex.x );\\n\\tmat4 boneMatY = getBoneMatrix( skinIndex.y );\\n\\tmat4 boneMatZ = getBoneMatrix( skinIndex.z );\\n\\tmat4 boneMatW = getBoneMatrix( skinIndex.w );\\n#endif\";\n\nvar skinning_pars_vertex = \"#ifdef USE_SKINNING\\n\\tuniform mat4 bindMatrix;\\n\\tuniform mat4 bindMatrixInverse;\\n\\t#ifdef BONE_TEXTURE\\n\\t\\tuniform highp sampler2D boneTexture;\\n\\t\\tuniform int boneTextureSize;\\n\\t\\tmat4 getBoneMatrix( const in float i ) {\\n\\t\\t\\tfloat j = i * 4.0;\\n\\t\\t\\tfloat x = mod( j, float( boneTextureSize ) );\\n\\t\\t\\tfloat y = floor( j / float( boneTextureSize ) );\\n\\t\\t\\tfloat dx = 1.0 / float( boneTextureSize );\\n\\t\\t\\tfloat dy = 1.0 / float( boneTextureSize );\\n\\t\\t\\ty = dy * ( y + 0.5 );\\n\\t\\t\\tvec4 v1 = texture2D( boneTexture, vec2( dx * ( x + 0.5 ), y ) );\\n\\t\\t\\tvec4 v2 = texture2D( boneTexture, vec2( dx * ( x + 1.5 ), y ) );\\n\\t\\t\\tvec4 v3 = texture2D( boneTexture, vec2( dx * ( x + 2.5 ), y ) );\\n\\t\\t\\tvec4 v4 = texture2D( boneTexture, vec2( dx * ( x + 3.5 ), y ) );\\n\\t\\t\\tmat4 bone = mat4( v1, v2, v3, v4 );\\n\\t\\t\\treturn bone;\\n\\t\\t}\\n\\t#else\\n\\t\\tuniform mat4 boneMatrices[ MAX_BONES ];\\n\\t\\tmat4 getBoneMatrix( const in float i ) {\\n\\t\\t\\tmat4 bone = boneMatrices[ int(i) ];\\n\\t\\t\\treturn bone;\\n\\t\\t}\\n\\t#endif\\n#endif\";\n\nvar skinning_vertex = \"#ifdef USE_SKINNING\\n\\tvec4 skinVertex = bindMatrix * vec4( transformed, 1.0 );\\n\\tvec4 skinned = vec4( 0.0 );\\n\\tskinned += boneMatX * skinVertex * skinWeight.x;\\n\\tskinned += boneMatY * skinVertex * skinWeight.y;\\n\\tskinned += boneMatZ * skinVertex * skinWeight.z;\\n\\tskinned += boneMatW * skinVertex * skinWeight.w;\\n\\ttransformed = ( bindMatrixInverse * skinned ).xyz;\\n#endif\";\n\nvar skinnormal_vertex = \"#ifdef USE_SKINNING\\n\\tmat4 skinMatrix = mat4( 0.0 );\\n\\tskinMatrix += skinWeight.x * boneMatX;\\n\\tskinMatrix += skinWeight.y * boneMatY;\\n\\tskinMatrix += skinWeight.z * boneMatZ;\\n\\tskinMatrix += skinWeight.w * boneMatW;\\n\\tskinMatrix = bindMatrixInverse * skinMatrix * bindMatrix;\\n\\tobjectNormal = vec4( skinMatrix * vec4( objectNormal, 0.0 ) ).xyz;\\n\\t#ifdef USE_TANGENT\\n\\t\\tobjectTangent = vec4( skinMatrix * vec4( objectTangent, 0.0 ) ).xyz;\\n\\t#endif\\n#endif\";\n\nvar specularmap_fragment = \"float specularStrength;\\n#ifdef USE_SPECULARMAP\\n\\tvec4 texelSpecular = texture2D( specularMap, vUv );\\n\\tspecularStrength = texelSpecular.r;\\n#else\\n\\tspecularStrength = 1.0;\\n#endif\";\n\nvar specularmap_pars_fragment = \"#ifdef USE_SPECULARMAP\\n\\tuniform sampler2D specularMap;\\n#endif\";\n\nvar tonemapping_fragment = \"#if defined( TONE_MAPPING )\\n\\tgl_FragColor.rgb = toneMapping( gl_FragColor.rgb );\\n#endif\";\n\nvar tonemapping_pars_fragment = \"#ifndef saturate\\n#define saturate(a) clamp( a, 0.0, 1.0 )\\n#endif\\nuniform float toneMappingExposure;\\nvec3 LinearToneMapping( vec3 color ) {\\n\\treturn toneMappingExposure * color;\\n}\\nvec3 ReinhardToneMapping( vec3 color ) {\\n\\tcolor *= toneMappingExposure;\\n\\treturn saturate( color / ( vec3( 1.0 ) + color ) );\\n}\\nvec3 OptimizedCineonToneMapping( vec3 color ) {\\n\\tcolor *= toneMappingExposure;\\n\\tcolor = max( vec3( 0.0 ), color - 0.004 );\\n\\treturn pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) );\\n}\\nvec3 RRTAndODTFit( vec3 v ) {\\n\\tvec3 a = v * ( v + 0.0245786 ) - 0.000090537;\\n\\tvec3 b = v * ( 0.983729 * v + 0.4329510 ) + 0.238081;\\n\\treturn a / b;\\n}\\nvec3 ACESFilmicToneMapping( vec3 color ) {\\n\\tconst mat3 ACESInputMat = mat3(\\n\\t\\tvec3( 0.59719, 0.07600, 0.02840 ),\\t\\tvec3( 0.35458, 0.90834, 0.13383 ),\\n\\t\\tvec3( 0.04823, 0.01566, 0.83777 )\\n\\t);\\n\\tconst mat3 ACESOutputMat = mat3(\\n\\t\\tvec3(  1.60475, -0.10208, -0.00327 ),\\t\\tvec3( -0.53108,  1.10813, -0.07276 ),\\n\\t\\tvec3( -0.07367, -0.00605,  1.07602 )\\n\\t);\\n\\tcolor *= toneMappingExposure / 0.6;\\n\\tcolor = ACESInputMat * color;\\n\\tcolor = RRTAndODTFit( color );\\n\\tcolor = ACESOutputMat * color;\\n\\treturn saturate( color );\\n}\\nvec3 CustomToneMapping( vec3 color ) { return color; }\";\n\nvar transmissionmap_fragment = \"#ifdef USE_TRANSMISSIONMAP\\n\\ttotalTransmission *= texture2D( transmissionMap, vUv ).r;\\n#endif\";\n\nvar transmissionmap_pars_fragment = \"#ifdef USE_TRANSMISSIONMAP\\n\\tuniform sampler2D transmissionMap;\\n#endif\";\n\nvar uv_pars_fragment = \"#if ( defined( USE_UV ) && ! defined( UVS_VERTEX_ONLY ) )\\n\\tvarying vec2 vUv;\\n#endif\";\n\nvar uv_pars_vertex = \"#ifdef USE_UV\\n\\t#ifdef UVS_VERTEX_ONLY\\n\\t\\tvec2 vUv;\\n\\t#else\\n\\t\\tvarying vec2 vUv;\\n\\t#endif\\n\\tuniform mat3 uvTransform;\\n#endif\";\n\nvar uv_vertex = \"#ifdef USE_UV\\n\\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\\n#endif\";\n\nvar uv2_pars_fragment = \"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\\n\\tvarying vec2 vUv2;\\n#endif\";\n\nvar uv2_pars_vertex = \"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\\n\\tattribute vec2 uv2;\\n\\tvarying vec2 vUv2;\\n\\tuniform mat3 uv2Transform;\\n#endif\";\n\nvar uv2_vertex = \"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\\n\\tvUv2 = ( uv2Transform * vec3( uv2, 1 ) ).xy;\\n#endif\";\n\nvar worldpos_vertex = \"#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP )\\n\\tvec4 worldPosition = vec4( transformed, 1.0 );\\n\\t#ifdef USE_INSTANCING\\n\\t\\tworldPosition = instanceMatrix * worldPosition;\\n\\t#endif\\n\\tworldPosition = modelMatrix * worldPosition;\\n#endif\";\n\nvar background_frag = \"uniform sampler2D t2D;\\nvarying vec2 vUv;\\nvoid main() {\\n\\tvec4 texColor = texture2D( t2D, vUv );\\n\\tgl_FragColor = mapTexelToLinear( texColor );\\n\\t#include <tonemapping_fragment>\\n\\t#include <encodings_fragment>\\n}\";\n\nvar background_vert = \"varying vec2 vUv;\\nuniform mat3 uvTransform;\\nvoid main() {\\n\\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\\n\\tgl_Position = vec4( position.xy, 1.0, 1.0 );\\n}\";\n\nvar cube_frag = \"#include <envmap_common_pars_fragment>\\nuniform float opacity;\\nvarying vec3 vWorldDirection;\\n#include <cube_uv_reflection_fragment>\\nvoid main() {\\n\\tvec3 vReflect = vWorldDirection;\\n\\t#include <envmap_fragment>\\n\\tgl_FragColor = envColor;\\n\\tgl_FragColor.a *= opacity;\\n\\t#include <tonemapping_fragment>\\n\\t#include <encodings_fragment>\\n}\";\n\nvar cube_vert = \"varying vec3 vWorldDirection;\\n#include <common>\\nvoid main() {\\n\\tvWorldDirection = transformDirection( position, modelMatrix );\\n\\t#include <begin_vertex>\\n\\t#include <project_vertex>\\n\\tgl_Position.z = gl_Position.w;\\n}\";\n\nvar depth_frag = \"#if DEPTH_PACKING == 3200\\n\\tuniform float opacity;\\n#endif\\n#include <common>\\n#include <packing>\\n#include <uv_pars_fragment>\\n#include <map_pars_fragment>\\n#include <alphamap_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvarying vec2 vHighPrecisionZW;\\nvoid main() {\\n\\t#include <clipping_planes_fragment>\\n\\tvec4 diffuseColor = vec4( 1.0 );\\n\\t#if DEPTH_PACKING == 3200\\n\\t\\tdiffuseColor.a = opacity;\\n\\t#endif\\n\\t#include <map_fragment>\\n\\t#include <alphamap_fragment>\\n\\t#include <alphatest_fragment>\\n\\t#include <logdepthbuf_fragment>\\n\\tfloat fragCoordZ = 0.5 * vHighPrecisionZW[0] / vHighPrecisionZW[1] + 0.5;\\n\\t#if DEPTH_PACKING == 3200\\n\\t\\tgl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity );\\n\\t#elif DEPTH_PACKING == 3201\\n\\t\\tgl_FragColor = packDepthToRGBA( fragCoordZ );\\n\\t#endif\\n}\";\n\nvar depth_vert = \"#include <common>\\n#include <uv_pars_vertex>\\n#include <displacementmap_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvarying vec2 vHighPrecisionZW;\\nvoid main() {\\n\\t#include <uv_vertex>\\n\\t#include <skinbase_vertex>\\n\\t#ifdef USE_DISPLACEMENTMAP\\n\\t\\t#include <beginnormal_vertex>\\n\\t\\t#include <morphnormal_vertex>\\n\\t\\t#include <skinnormal_vertex>\\n\\t#endif\\n\\t#include <begin_vertex>\\n\\t#include <morphtarget_vertex>\\n\\t#include <skinning_vertex>\\n\\t#include <displacementmap_vertex>\\n\\t#include <project_vertex>\\n\\t#include <logdepthbuf_vertex>\\n\\t#include <clipping_planes_vertex>\\n\\tvHighPrecisionZW = gl_Position.zw;\\n}\";\n\nvar distanceRGBA_frag = \"#define DISTANCE\\nuniform vec3 referencePosition;\\nuniform float nearDistance;\\nuniform float farDistance;\\nvarying vec3 vWorldPosition;\\n#include <common>\\n#include <packing>\\n#include <uv_pars_fragment>\\n#include <map_pars_fragment>\\n#include <alphamap_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main () {\\n\\t#include <clipping_planes_fragment>\\n\\tvec4 diffuseColor = vec4( 1.0 );\\n\\t#include <map_fragment>\\n\\t#include <alphamap_fragment>\\n\\t#include <alphatest_fragment>\\n\\tfloat dist = length( vWorldPosition - referencePosition );\\n\\tdist = ( dist - nearDistance ) / ( farDistance - nearDistance );\\n\\tdist = saturate( dist );\\n\\tgl_FragColor = packDepthToRGBA( dist );\\n}\";\n\nvar distanceRGBA_vert = \"#define DISTANCE\\nvarying vec3 vWorldPosition;\\n#include <common>\\n#include <uv_pars_vertex>\\n#include <displacementmap_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\\t#include <uv_vertex>\\n\\t#include <skinbase_vertex>\\n\\t#ifdef USE_DISPLACEMENTMAP\\n\\t\\t#include <beginnormal_vertex>\\n\\t\\t#include <morphnormal_vertex>\\n\\t\\t#include <skinnormal_vertex>\\n\\t#endif\\n\\t#include <begin_vertex>\\n\\t#include <morphtarget_vertex>\\n\\t#include <skinning_vertex>\\n\\t#include <displacementmap_vertex>\\n\\t#include <project_vertex>\\n\\t#include <worldpos_vertex>\\n\\t#include <clipping_planes_vertex>\\n\\tvWorldPosition = worldPosition.xyz;\\n}\";\n\nvar equirect_frag = \"uniform sampler2D tEquirect;\\nvarying vec3 vWorldDirection;\\n#include <common>\\nvoid main() {\\n\\tvec3 direction = normalize( vWorldDirection );\\n\\tvec2 sampleUV = equirectUv( direction );\\n\\tvec4 texColor = texture2D( tEquirect, sampleUV );\\n\\tgl_FragColor = mapTexelToLinear( texColor );\\n\\t#include <tonemapping_fragment>\\n\\t#include <encodings_fragment>\\n}\";\n\nvar equirect_vert = \"varying vec3 vWorldDirection;\\n#include <common>\\nvoid main() {\\n\\tvWorldDirection = transformDirection( position, modelMatrix );\\n\\t#include <begin_vertex>\\n\\t#include <project_vertex>\\n}\";\n\nvar linedashed_frag = \"uniform vec3 diffuse;\\nuniform float opacity;\\nuniform float dashSize;\\nuniform float totalSize;\\nvarying float vLineDistance;\\n#include <common>\\n#include <color_pars_fragment>\\n#include <fog_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\\t#include <clipping_planes_fragment>\\n\\tif ( mod( vLineDistance, totalSize ) > dashSize ) {\\n\\t\\tdiscard;\\n\\t}\\n\\tvec3 outgoingLight = vec3( 0.0 );\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include <logdepthbuf_fragment>\\n\\t#include <color_fragment>\\n\\toutgoingLight = diffuseColor.rgb;\\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include <tonemapping_fragment>\\n\\t#include <encodings_fragment>\\n\\t#include <fog_fragment>\\n\\t#include <premultiplied_alpha_fragment>\\n}\";\n\nvar linedashed_vert = \"uniform float scale;\\nattribute float lineDistance;\\nvarying float vLineDistance;\\n#include <common>\\n#include <color_pars_vertex>\\n#include <fog_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\\tvLineDistance = scale * lineDistance;\\n\\t#include <color_vertex>\\n\\t#include <begin_vertex>\\n\\t#include <morphtarget_vertex>\\n\\t#include <project_vertex>\\n\\t#include <logdepthbuf_vertex>\\n\\t#include <clipping_planes_vertex>\\n\\t#include <fog_vertex>\\n}\";\n\nvar meshbasic_frag = \"uniform vec3 diffuse;\\nuniform float opacity;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n#endif\\n#include <common>\\n#include <dithering_pars_fragment>\\n#include <color_pars_fragment>\\n#include <uv_pars_fragment>\\n#include <uv2_pars_fragment>\\n#include <map_pars_fragment>\\n#include <alphamap_pars_fragment>\\n#include <aomap_pars_fragment>\\n#include <lightmap_pars_fragment>\\n#include <envmap_common_pars_fragment>\\n#include <envmap_pars_fragment>\\n#include <cube_uv_reflection_fragment>\\n#include <fog_pars_fragment>\\n#include <specularmap_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\\t#include <clipping_planes_fragment>\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include <logdepthbuf_fragment>\\n\\t#include <map_fragment>\\n\\t#include <color_fragment>\\n\\t#include <alphamap_fragment>\\n\\t#include <alphatest_fragment>\\n\\t#include <specularmap_fragment>\\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\t#ifdef USE_LIGHTMAP\\n\\t\\n\\t\\tvec4 lightMapTexel= texture2D( lightMap, vUv2 );\\n\\t\\treflectedLight.indirectDiffuse += lightMapTexelToLinear( lightMapTexel ).rgb * lightMapIntensity;\\n\\t#else\\n\\t\\treflectedLight.indirectDiffuse += vec3( 1.0 );\\n\\t#endif\\n\\t#include <aomap_fragment>\\n\\treflectedLight.indirectDiffuse *= diffuseColor.rgb;\\n\\tvec3 outgoingLight = reflectedLight.indirectDiffuse;\\n\\t#include <envmap_fragment>\\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include <tonemapping_fragment>\\n\\t#include <encodings_fragment>\\n\\t#include <fog_fragment>\\n\\t#include <premultiplied_alpha_fragment>\\n\\t#include <dithering_fragment>\\n}\";\n\nvar meshbasic_vert = \"#include <common>\\n#include <uv_pars_vertex>\\n#include <uv2_pars_vertex>\\n#include <envmap_pars_vertex>\\n#include <color_pars_vertex>\\n#include <fog_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\\t#include <uv_vertex>\\n\\t#include <uv2_vertex>\\n\\t#include <color_vertex>\\n\\t#include <skinbase_vertex>\\n\\t#ifdef USE_ENVMAP\\n\\t#include <beginnormal_vertex>\\n\\t#include <morphnormal_vertex>\\n\\t#include <skinnormal_vertex>\\n\\t#include <defaultnormal_vertex>\\n\\t#endif\\n\\t#include <begin_vertex>\\n\\t#include <morphtarget_vertex>\\n\\t#include <skinning_vertex>\\n\\t#include <project_vertex>\\n\\t#include <logdepthbuf_vertex>\\n\\t#include <worldpos_vertex>\\n\\t#include <clipping_planes_vertex>\\n\\t#include <envmap_vertex>\\n\\t#include <fog_vertex>\\n}\";\n\nvar meshlambert_frag = \"uniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform float opacity;\\nvarying vec3 vLightFront;\\nvarying vec3 vIndirectFront;\\n#ifdef DOUBLE_SIDED\\n\\tvarying vec3 vLightBack;\\n\\tvarying vec3 vIndirectBack;\\n#endif\\n#include <common>\\n#include <packing>\\n#include <dithering_pars_fragment>\\n#include <color_pars_fragment>\\n#include <uv_pars_fragment>\\n#include <uv2_pars_fragment>\\n#include <map_pars_fragment>\\n#include <alphamap_pars_fragment>\\n#include <aomap_pars_fragment>\\n#include <lightmap_pars_fragment>\\n#include <emissivemap_pars_fragment>\\n#include <envmap_common_pars_fragment>\\n#include <envmap_pars_fragment>\\n#include <cube_uv_reflection_fragment>\\n#include <bsdfs>\\n#include <lights_pars_begin>\\n#include <fog_pars_fragment>\\n#include <shadowmap_pars_fragment>\\n#include <shadowmask_pars_fragment>\\n#include <specularmap_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\\t#include <clipping_planes_fragment>\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\tvec3 totalEmissiveRadiance = emissive;\\n\\t#include <logdepthbuf_fragment>\\n\\t#include <map_fragment>\\n\\t#include <color_fragment>\\n\\t#include <alphamap_fragment>\\n\\t#include <alphatest_fragment>\\n\\t#include <specularmap_fragment>\\n\\t#include <emissivemap_fragment>\\n\\t#ifdef DOUBLE_SIDED\\n\\t\\treflectedLight.indirectDiffuse += ( gl_FrontFacing ) ? vIndirectFront : vIndirectBack;\\n\\t#else\\n\\t\\treflectedLight.indirectDiffuse += vIndirectFront;\\n\\t#endif\\n\\t#include <lightmap_fragment>\\n\\treflectedLight.indirectDiffuse *= BRDF_Diffuse_Lambert( diffuseColor.rgb );\\n\\t#ifdef DOUBLE_SIDED\\n\\t\\treflectedLight.directDiffuse = ( gl_FrontFacing ) ? vLightFront : vLightBack;\\n\\t#else\\n\\t\\treflectedLight.directDiffuse = vLightFront;\\n\\t#endif\\n\\treflectedLight.directDiffuse *= BRDF_Diffuse_Lambert( diffuseColor.rgb ) * getShadowMask();\\n\\t#include <aomap_fragment>\\n\\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\\n\\t#include <envmap_fragment>\\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include <tonemapping_fragment>\\n\\t#include <encodings_fragment>\\n\\t#include <fog_fragment>\\n\\t#include <premultiplied_alpha_fragment>\\n\\t#include <dithering_fragment>\\n}\";\n\nvar meshlambert_vert = \"#define LAMBERT\\nvarying vec3 vLightFront;\\nvarying vec3 vIndirectFront;\\n#ifdef DOUBLE_SIDED\\n\\tvarying vec3 vLightBack;\\n\\tvarying vec3 vIndirectBack;\\n#endif\\n#include <common>\\n#include <uv_pars_vertex>\\n#include <uv2_pars_vertex>\\n#include <envmap_pars_vertex>\\n#include <bsdfs>\\n#include <lights_pars_begin>\\n#include <color_pars_vertex>\\n#include <fog_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <shadowmap_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\\t#include <uv_vertex>\\n\\t#include <uv2_vertex>\\n\\t#include <color_vertex>\\n\\t#include <beginnormal_vertex>\\n\\t#include <morphnormal_vertex>\\n\\t#include <skinbase_vertex>\\n\\t#include <skinnormal_vertex>\\n\\t#include <defaultnormal_vertex>\\n\\t#include <begin_vertex>\\n\\t#include <morphtarget_vertex>\\n\\t#include <skinning_vertex>\\n\\t#include <project_vertex>\\n\\t#include <logdepthbuf_vertex>\\n\\t#include <clipping_planes_vertex>\\n\\t#include <worldpos_vertex>\\n\\t#include <envmap_vertex>\\n\\t#include <lights_lambert_vertex>\\n\\t#include <shadowmap_vertex>\\n\\t#include <fog_vertex>\\n}\";\n\nvar meshmatcap_frag = \"#define MATCAP\\nuniform vec3 diffuse;\\nuniform float opacity;\\nuniform sampler2D matcap;\\nvarying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n#endif\\n#include <common>\\n#include <dithering_pars_fragment>\\n#include <color_pars_fragment>\\n#include <uv_pars_fragment>\\n#include <map_pars_fragment>\\n#include <alphamap_pars_fragment>\\n#include <fog_pars_fragment>\\n#include <bumpmap_pars_fragment>\\n#include <normalmap_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\\t#include <clipping_planes_fragment>\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include <logdepthbuf_fragment>\\n\\t#include <map_fragment>\\n\\t#include <color_fragment>\\n\\t#include <alphamap_fragment>\\n\\t#include <alphatest_fragment>\\n\\t#include <normal_fragment_begin>\\n\\t#include <normal_fragment_maps>\\n\\tvec3 viewDir = normalize( vViewPosition );\\n\\tvec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );\\n\\tvec3 y = cross( viewDir, x );\\n\\tvec2 uv = vec2( dot( x, normal ), dot( y, normal ) ) * 0.495 + 0.5;\\n\\t#ifdef USE_MATCAP\\n\\t\\tvec4 matcapColor = texture2D( matcap, uv );\\n\\t\\tmatcapColor = matcapTexelToLinear( matcapColor );\\n\\t#else\\n\\t\\tvec4 matcapColor = vec4( 1.0 );\\n\\t#endif\\n\\tvec3 outgoingLight = diffuseColor.rgb * matcapColor.rgb;\\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include <tonemapping_fragment>\\n\\t#include <encodings_fragment>\\n\\t#include <fog_fragment>\\n\\t#include <premultiplied_alpha_fragment>\\n\\t#include <dithering_fragment>\\n}\";\n\nvar meshmatcap_vert = \"#define MATCAP\\nvarying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n#endif\\n#include <common>\\n#include <uv_pars_vertex>\\n#include <color_pars_vertex>\\n#include <displacementmap_pars_vertex>\\n#include <fog_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\\t#include <uv_vertex>\\n\\t#include <color_vertex>\\n\\t#include <beginnormal_vertex>\\n\\t#include <morphnormal_vertex>\\n\\t#include <skinbase_vertex>\\n\\t#include <skinnormal_vertex>\\n\\t#include <defaultnormal_vertex>\\n\\t#ifndef FLAT_SHADED\\n\\t\\tvNormal = normalize( transformedNormal );\\n\\t#endif\\n\\t#include <begin_vertex>\\n\\t#include <morphtarget_vertex>\\n\\t#include <skinning_vertex>\\n\\t#include <displacementmap_vertex>\\n\\t#include <project_vertex>\\n\\t#include <logdepthbuf_vertex>\\n\\t#include <clipping_planes_vertex>\\n\\t#include <fog_vertex>\\n\\tvViewPosition = - mvPosition.xyz;\\n}\";\n\nvar meshtoon_frag = \"#define TOON\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform float opacity;\\n#include <common>\\n#include <packing>\\n#include <dithering_pars_fragment>\\n#include <color_pars_fragment>\\n#include <uv_pars_fragment>\\n#include <uv2_pars_fragment>\\n#include <map_pars_fragment>\\n#include <alphamap_pars_fragment>\\n#include <aomap_pars_fragment>\\n#include <lightmap_pars_fragment>\\n#include <emissivemap_pars_fragment>\\n#include <gradientmap_pars_fragment>\\n#include <fog_pars_fragment>\\n#include <bsdfs>\\n#include <lights_pars_begin>\\n#include <lights_toon_pars_fragment>\\n#include <shadowmap_pars_fragment>\\n#include <bumpmap_pars_fragment>\\n#include <normalmap_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\\t#include <clipping_planes_fragment>\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\tvec3 totalEmissiveRadiance = emissive;\\n\\t#include <logdepthbuf_fragment>\\n\\t#include <map_fragment>\\n\\t#include <color_fragment>\\n\\t#include <alphamap_fragment>\\n\\t#include <alphatest_fragment>\\n\\t#include <normal_fragment_begin>\\n\\t#include <normal_fragment_maps>\\n\\t#include <emissivemap_fragment>\\n\\t#include <lights_toon_fragment>\\n\\t#include <lights_fragment_begin>\\n\\t#include <lights_fragment_maps>\\n\\t#include <lights_fragment_end>\\n\\t#include <aomap_fragment>\\n\\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include <tonemapping_fragment>\\n\\t#include <encodings_fragment>\\n\\t#include <fog_fragment>\\n\\t#include <premultiplied_alpha_fragment>\\n\\t#include <dithering_fragment>\\n}\";\n\nvar meshtoon_vert = \"#define TOON\\nvarying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n#endif\\n#include <common>\\n#include <uv_pars_vertex>\\n#include <uv2_pars_vertex>\\n#include <displacementmap_pars_vertex>\\n#include <color_pars_vertex>\\n#include <fog_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <shadowmap_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\\t#include <uv_vertex>\\n\\t#include <uv2_vertex>\\n\\t#include <color_vertex>\\n\\t#include <beginnormal_vertex>\\n\\t#include <morphnormal_vertex>\\n\\t#include <skinbase_vertex>\\n\\t#include <skinnormal_vertex>\\n\\t#include <defaultnormal_vertex>\\n#ifndef FLAT_SHADED\\n\\tvNormal = normalize( transformedNormal );\\n#endif\\n\\t#include <begin_vertex>\\n\\t#include <morphtarget_vertex>\\n\\t#include <skinning_vertex>\\n\\t#include <displacementmap_vertex>\\n\\t#include <project_vertex>\\n\\t#include <logdepthbuf_vertex>\\n\\t#include <clipping_planes_vertex>\\n\\tvViewPosition = - mvPosition.xyz;\\n\\t#include <worldpos_vertex>\\n\\t#include <shadowmap_vertex>\\n\\t#include <fog_vertex>\\n}\";\n\nvar meshphong_frag = \"#define PHONG\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform vec3 specular;\\nuniform float shininess;\\nuniform float opacity;\\n#include <common>\\n#include <packing>\\n#include <dithering_pars_fragment>\\n#include <color_pars_fragment>\\n#include <uv_pars_fragment>\\n#include <uv2_pars_fragment>\\n#include <map_pars_fragment>\\n#include <alphamap_pars_fragment>\\n#include <aomap_pars_fragment>\\n#include <lightmap_pars_fragment>\\n#include <emissivemap_pars_fragment>\\n#include <envmap_common_pars_fragment>\\n#include <envmap_pars_fragment>\\n#include <cube_uv_reflection_fragment>\\n#include <fog_pars_fragment>\\n#include <bsdfs>\\n#include <lights_pars_begin>\\n#include <lights_phong_pars_fragment>\\n#include <shadowmap_pars_fragment>\\n#include <bumpmap_pars_fragment>\\n#include <normalmap_pars_fragment>\\n#include <specularmap_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\\t#include <clipping_planes_fragment>\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\tvec3 totalEmissiveRadiance = emissive;\\n\\t#include <logdepthbuf_fragment>\\n\\t#include <map_fragment>\\n\\t#include <color_fragment>\\n\\t#include <alphamap_fragment>\\n\\t#include <alphatest_fragment>\\n\\t#include <specularmap_fragment>\\n\\t#include <normal_fragment_begin>\\n\\t#include <normal_fragment_maps>\\n\\t#include <emissivemap_fragment>\\n\\t#include <lights_phong_fragment>\\n\\t#include <lights_fragment_begin>\\n\\t#include <lights_fragment_maps>\\n\\t#include <lights_fragment_end>\\n\\t#include <aomap_fragment>\\n\\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\\n\\t#include <envmap_fragment>\\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include <tonemapping_fragment>\\n\\t#include <encodings_fragment>\\n\\t#include <fog_fragment>\\n\\t#include <premultiplied_alpha_fragment>\\n\\t#include <dithering_fragment>\\n}\";\n\nvar meshphong_vert = \"#define PHONG\\nvarying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n#endif\\n#include <common>\\n#include <uv_pars_vertex>\\n#include <uv2_pars_vertex>\\n#include <displacementmap_pars_vertex>\\n#include <envmap_pars_vertex>\\n#include <color_pars_vertex>\\n#include <fog_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <shadowmap_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\\t#include <uv_vertex>\\n\\t#include <uv2_vertex>\\n\\t#include <color_vertex>\\n\\t#include <beginnormal_vertex>\\n\\t#include <morphnormal_vertex>\\n\\t#include <skinbase_vertex>\\n\\t#include <skinnormal_vertex>\\n\\t#include <defaultnormal_vertex>\\n#ifndef FLAT_SHADED\\n\\tvNormal = normalize( transformedNormal );\\n#endif\\n\\t#include <begin_vertex>\\n\\t#include <morphtarget_vertex>\\n\\t#include <skinning_vertex>\\n\\t#include <displacementmap_vertex>\\n\\t#include <project_vertex>\\n\\t#include <logdepthbuf_vertex>\\n\\t#include <clipping_planes_vertex>\\n\\tvViewPosition = - mvPosition.xyz;\\n\\t#include <worldpos_vertex>\\n\\t#include <envmap_vertex>\\n\\t#include <shadowmap_vertex>\\n\\t#include <fog_vertex>\\n}\";\n\nvar meshphysical_frag = \"#define STANDARD\\n#ifdef PHYSICAL\\n\\t#define REFLECTIVITY\\n\\t#define CLEARCOAT\\n\\t#define TRANSMISSION\\n#endif\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform float roughness;\\nuniform float metalness;\\nuniform float opacity;\\n#ifdef TRANSMISSION\\n\\tuniform float transmission;\\n#endif\\n#ifdef REFLECTIVITY\\n\\tuniform float reflectivity;\\n#endif\\n#ifdef CLEARCOAT\\n\\tuniform float clearcoat;\\n\\tuniform float clearcoatRoughness;\\n#endif\\n#ifdef USE_SHEEN\\n\\tuniform vec3 sheen;\\n#endif\\nvarying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n\\t#ifdef USE_TANGENT\\n\\t\\tvarying vec3 vTangent;\\n\\t\\tvarying vec3 vBitangent;\\n\\t#endif\\n#endif\\n#include <common>\\n#include <packing>\\n#include <dithering_pars_fragment>\\n#include <color_pars_fragment>\\n#include <uv_pars_fragment>\\n#include <uv2_pars_fragment>\\n#include <map_pars_fragment>\\n#include <alphamap_pars_fragment>\\n#include <aomap_pars_fragment>\\n#include <lightmap_pars_fragment>\\n#include <emissivemap_pars_fragment>\\n#include <transmissionmap_pars_fragment>\\n#include <bsdfs>\\n#include <cube_uv_reflection_fragment>\\n#include <envmap_common_pars_fragment>\\n#include <envmap_physical_pars_fragment>\\n#include <fog_pars_fragment>\\n#include <lights_pars_begin>\\n#include <lights_physical_pars_fragment>\\n#include <shadowmap_pars_fragment>\\n#include <bumpmap_pars_fragment>\\n#include <normalmap_pars_fragment>\\n#include <clearcoat_pars_fragment>\\n#include <roughnessmap_pars_fragment>\\n#include <metalnessmap_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\\t#include <clipping_planes_fragment>\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\tvec3 totalEmissiveRadiance = emissive;\\n\\t#ifdef TRANSMISSION\\n\\t\\tfloat totalTransmission = transmission;\\n\\t#endif\\n\\t#include <logdepthbuf_fragment>\\n\\t#include <map_fragment>\\n\\t#include <color_fragment>\\n\\t#include <alphamap_fragment>\\n\\t#include <alphatest_fragment>\\n\\t#include <roughnessmap_fragment>\\n\\t#include <metalnessmap_fragment>\\n\\t#include <normal_fragment_begin>\\n\\t#include <normal_fragment_maps>\\n\\t#include <clearcoat_normal_fragment_begin>\\n\\t#include <clearcoat_normal_fragment_maps>\\n\\t#include <emissivemap_fragment>\\n\\t#include <transmissionmap_fragment>\\n\\t#include <lights_physical_fragment>\\n\\t#include <lights_fragment_begin>\\n\\t#include <lights_fragment_maps>\\n\\t#include <lights_fragment_end>\\n\\t#include <aomap_fragment>\\n\\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\\n\\t#ifdef TRANSMISSION\\n\\t\\tdiffuseColor.a *= saturate( 1. - totalTransmission + linearToRelativeLuminance( reflectedLight.directSpecular + reflectedLight.indirectSpecular ) );\\n\\t#endif\\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include <tonemapping_fragment>\\n\\t#include <encodings_fragment>\\n\\t#include <fog_fragment>\\n\\t#include <premultiplied_alpha_fragment>\\n\\t#include <dithering_fragment>\\n}\";\n\nvar meshphysical_vert = \"#define STANDARD\\nvarying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n\\t#ifdef USE_TANGENT\\n\\t\\tvarying vec3 vTangent;\\n\\t\\tvarying vec3 vBitangent;\\n\\t#endif\\n#endif\\n#include <common>\\n#include <uv_pars_vertex>\\n#include <uv2_pars_vertex>\\n#include <displacementmap_pars_vertex>\\n#include <color_pars_vertex>\\n#include <fog_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <shadowmap_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\\t#include <uv_vertex>\\n\\t#include <uv2_vertex>\\n\\t#include <color_vertex>\\n\\t#include <beginnormal_vertex>\\n\\t#include <morphnormal_vertex>\\n\\t#include <skinbase_vertex>\\n\\t#include <skinnormal_vertex>\\n\\t#include <defaultnormal_vertex>\\n#ifndef FLAT_SHADED\\n\\tvNormal = normalize( transformedNormal );\\n\\t#ifdef USE_TANGENT\\n\\t\\tvTangent = normalize( transformedTangent );\\n\\t\\tvBitangent = normalize( cross( vNormal, vTangent ) * tangent.w );\\n\\t#endif\\n#endif\\n\\t#include <begin_vertex>\\n\\t#include <morphtarget_vertex>\\n\\t#include <skinning_vertex>\\n\\t#include <displacementmap_vertex>\\n\\t#include <project_vertex>\\n\\t#include <logdepthbuf_vertex>\\n\\t#include <clipping_planes_vertex>\\n\\tvViewPosition = - mvPosition.xyz;\\n\\t#include <worldpos_vertex>\\n\\t#include <shadowmap_vertex>\\n\\t#include <fog_vertex>\\n}\";\n\nvar normal_frag = \"#define NORMAL\\nuniform float opacity;\\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\\n\\tvarying vec3 vViewPosition;\\n#endif\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n\\t#ifdef USE_TANGENT\\n\\t\\tvarying vec3 vTangent;\\n\\t\\tvarying vec3 vBitangent;\\n\\t#endif\\n#endif\\n#include <packing>\\n#include <uv_pars_fragment>\\n#include <bumpmap_pars_fragment>\\n#include <normalmap_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\\t#include <clipping_planes_fragment>\\n\\t#include <logdepthbuf_fragment>\\n\\t#include <normal_fragment_begin>\\n\\t#include <normal_fragment_maps>\\n\\tgl_FragColor = vec4( packNormalToRGB( normal ), opacity );\\n}\";\n\nvar normal_vert = \"#define NORMAL\\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\\n\\tvarying vec3 vViewPosition;\\n#endif\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n\\t#ifdef USE_TANGENT\\n\\t\\tvarying vec3 vTangent;\\n\\t\\tvarying vec3 vBitangent;\\n\\t#endif\\n#endif\\n#include <common>\\n#include <uv_pars_vertex>\\n#include <displacementmap_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\\t#include <uv_vertex>\\n\\t#include <beginnormal_vertex>\\n\\t#include <morphnormal_vertex>\\n\\t#include <skinbase_vertex>\\n\\t#include <skinnormal_vertex>\\n\\t#include <defaultnormal_vertex>\\n#ifndef FLAT_SHADED\\n\\tvNormal = normalize( transformedNormal );\\n\\t#ifdef USE_TANGENT\\n\\t\\tvTangent = normalize( transformedTangent );\\n\\t\\tvBitangent = normalize( cross( vNormal, vTangent ) * tangent.w );\\n\\t#endif\\n#endif\\n\\t#include <begin_vertex>\\n\\t#include <morphtarget_vertex>\\n\\t#include <skinning_vertex>\\n\\t#include <displacementmap_vertex>\\n\\t#include <project_vertex>\\n\\t#include <logdepthbuf_vertex>\\n\\t#include <clipping_planes_vertex>\\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\\n\\tvViewPosition = - mvPosition.xyz;\\n#endif\\n}\";\n\nvar points_frag = \"uniform vec3 diffuse;\\nuniform float opacity;\\n#include <common>\\n#include <color_pars_fragment>\\n#include <map_particle_pars_fragment>\\n#include <fog_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\\t#include <clipping_planes_fragment>\\n\\tvec3 outgoingLight = vec3( 0.0 );\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include <logdepthbuf_fragment>\\n\\t#include <map_particle_fragment>\\n\\t#include <color_fragment>\\n\\t#include <alphatest_fragment>\\n\\toutgoingLight = diffuseColor.rgb;\\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include <tonemapping_fragment>\\n\\t#include <encodings_fragment>\\n\\t#include <fog_fragment>\\n\\t#include <premultiplied_alpha_fragment>\\n}\";\n\nvar points_vert = \"uniform float size;\\nuniform float scale;\\n#include <common>\\n#include <color_pars_vertex>\\n#include <fog_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\\t#include <color_vertex>\\n\\t#include <begin_vertex>\\n\\t#include <morphtarget_vertex>\\n\\t#include <project_vertex>\\n\\tgl_PointSize = size;\\n\\t#ifdef USE_SIZEATTENUATION\\n\\t\\tbool isPerspective = isPerspectiveMatrix( projectionMatrix );\\n\\t\\tif ( isPerspective ) gl_PointSize *= ( scale / - mvPosition.z );\\n\\t#endif\\n\\t#include <logdepthbuf_vertex>\\n\\t#include <clipping_planes_vertex>\\n\\t#include <worldpos_vertex>\\n\\t#include <fog_vertex>\\n}\";\n\nvar shadow_frag = \"uniform vec3 color;\\nuniform float opacity;\\n#include <common>\\n#include <packing>\\n#include <fog_pars_fragment>\\n#include <bsdfs>\\n#include <lights_pars_begin>\\n#include <shadowmap_pars_fragment>\\n#include <shadowmask_pars_fragment>\\nvoid main() {\\n\\tgl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) );\\n\\t#include <tonemapping_fragment>\\n\\t#include <encodings_fragment>\\n\\t#include <fog_fragment>\\n}\";\n\nvar shadow_vert = \"#include <common>\\n#include <fog_pars_vertex>\\n#include <shadowmap_pars_vertex>\\nvoid main() {\\n\\t#include <begin_vertex>\\n\\t#include <project_vertex>\\n\\t#include <worldpos_vertex>\\n\\t#include <beginnormal_vertex>\\n\\t#include <morphnormal_vertex>\\n\\t#include <skinbase_vertex>\\n\\t#include <skinnormal_vertex>\\n\\t#include <defaultnormal_vertex>\\n\\t#include <shadowmap_vertex>\\n\\t#include <fog_vertex>\\n}\";\n\nvar sprite_frag = \"uniform vec3 diffuse;\\nuniform float opacity;\\n#include <common>\\n#include <uv_pars_fragment>\\n#include <map_pars_fragment>\\n#include <alphamap_pars_fragment>\\n#include <fog_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\\t#include <clipping_planes_fragment>\\n\\tvec3 outgoingLight = vec3( 0.0 );\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include <logdepthbuf_fragment>\\n\\t#include <map_fragment>\\n\\t#include <alphamap_fragment>\\n\\t#include <alphatest_fragment>\\n\\toutgoingLight = diffuseColor.rgb;\\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include <tonemapping_fragment>\\n\\t#include <encodings_fragment>\\n\\t#include <fog_fragment>\\n}\";\n\nvar sprite_vert = \"uniform float rotation;\\nuniform vec2 center;\\n#include <common>\\n#include <uv_pars_vertex>\\n#include <fog_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\\t#include <uv_vertex>\\n\\tvec4 mvPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 );\\n\\tvec2 scale;\\n\\tscale.x = length( vec3( modelMatrix[ 0 ].x, modelMatrix[ 0 ].y, modelMatrix[ 0 ].z ) );\\n\\tscale.y = length( vec3( modelMatrix[ 1 ].x, modelMatrix[ 1 ].y, modelMatrix[ 1 ].z ) );\\n\\t#ifndef USE_SIZEATTENUATION\\n\\t\\tbool isPerspective = isPerspectiveMatrix( projectionMatrix );\\n\\t\\tif ( isPerspective ) scale *= - mvPosition.z;\\n\\t#endif\\n\\tvec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale;\\n\\tvec2 rotatedPosition;\\n\\trotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y;\\n\\trotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y;\\n\\tmvPosition.xy += rotatedPosition;\\n\\tgl_Position = projectionMatrix * mvPosition;\\n\\t#include <logdepthbuf_vertex>\\n\\t#include <clipping_planes_vertex>\\n\\t#include <fog_vertex>\\n}\";\n\nconst ShaderChunk = {\n\talphamap_fragment: alphamap_fragment,\n\talphamap_pars_fragment: alphamap_pars_fragment,\n\talphatest_fragment: alphatest_fragment,\n\taomap_fragment: aomap_fragment,\n\taomap_pars_fragment: aomap_pars_fragment,\n\tbegin_vertex: begin_vertex,\n\tbeginnormal_vertex: beginnormal_vertex,\n\tbsdfs: bsdfs,\n\tbumpmap_pars_fragment: bumpmap_pars_fragment,\n\tclipping_planes_fragment: clipping_planes_fragment,\n\tclipping_planes_pars_fragment: clipping_planes_pars_fragment,\n\tclipping_planes_pars_vertex: clipping_planes_pars_vertex,\n\tclipping_planes_vertex: clipping_planes_vertex,\n\tcolor_fragment: color_fragment,\n\tcolor_pars_fragment: color_pars_fragment,\n\tcolor_pars_vertex: color_pars_vertex,\n\tcolor_vertex: color_vertex,\n\tcommon: common,\n\tcube_uv_reflection_fragment: cube_uv_reflection_fragment,\n\tdefaultnormal_vertex: defaultnormal_vertex,\n\tdisplacementmap_pars_vertex: displacementmap_pars_vertex,\n\tdisplacementmap_vertex: displacementmap_vertex,\n\temissivemap_fragment: emissivemap_fragment,\n\temissivemap_pars_fragment: emissivemap_pars_fragment,\n\tencodings_fragment: encodings_fragment,\n\tencodings_pars_fragment: encodings_pars_fragment,\n\tenvmap_fragment: envmap_fragment,\n\tenvmap_common_pars_fragment: envmap_common_pars_fragment,\n\tenvmap_pars_fragment: envmap_pars_fragment,\n\tenvmap_pars_vertex: envmap_pars_vertex,\n\tenvmap_physical_pars_fragment: envmap_physical_pars_fragment,\n\tenvmap_vertex: envmap_vertex,\n\tfog_vertex: fog_vertex,\n\tfog_pars_vertex: fog_pars_vertex,\n\tfog_fragment: fog_fragment,\n\tfog_pars_fragment: fog_pars_fragment,\n\tgradientmap_pars_fragment: gradientmap_pars_fragment,\n\tlightmap_fragment: lightmap_fragment,\n\tlightmap_pars_fragment: lightmap_pars_fragment,\n\tlights_lambert_vertex: lights_lambert_vertex,\n\tlights_pars_begin: lights_pars_begin,\n\tlights_toon_fragment: lights_toon_fragment,\n\tlights_toon_pars_fragment: lights_toon_pars_fragment,\n\tlights_phong_fragment: lights_phong_fragment,\n\tlights_phong_pars_fragment: lights_phong_pars_fragment,\n\tlights_physical_fragment: lights_physical_fragment,\n\tlights_physical_pars_fragment: lights_physical_pars_fragment,\n\tlights_fragment_begin: lights_fragment_begin,\n\tlights_fragment_maps: lights_fragment_maps,\n\tlights_fragment_end: lights_fragment_end,\n\tlogdepthbuf_fragment: logdepthbuf_fragment,\n\tlogdepthbuf_pars_fragment: logdepthbuf_pars_fragment,\n\tlogdepthbuf_pars_vertex: logdepthbuf_pars_vertex,\n\tlogdepthbuf_vertex: logdepthbuf_vertex,\n\tmap_fragment: map_fragment,\n\tmap_pars_fragment: map_pars_fragment,\n\tmap_particle_fragment: map_particle_fragment,\n\tmap_particle_pars_fragment: map_particle_pars_fragment,\n\tmetalnessmap_fragment: metalnessmap_fragment,\n\tmetalnessmap_pars_fragment: metalnessmap_pars_fragment,\n\tmorphnormal_vertex: morphnormal_vertex,\n\tmorphtarget_pars_vertex: morphtarget_pars_vertex,\n\tmorphtarget_vertex: morphtarget_vertex,\n\tnormal_fragment_begin: normal_fragment_begin,\n\tnormal_fragment_maps: normal_fragment_maps,\n\tnormalmap_pars_fragment: normalmap_pars_fragment,\n\tclearcoat_normal_fragment_begin: clearcoat_normal_fragment_begin,\n\tclearcoat_normal_fragment_maps: clearcoat_normal_fragment_maps,\n\tclearcoat_pars_fragment: clearcoat_pars_fragment,\n\tpacking: packing,\n\tpremultiplied_alpha_fragment: premultiplied_alpha_fragment,\n\tproject_vertex: project_vertex,\n\tdithering_fragment: dithering_fragment,\n\tdithering_pars_fragment: dithering_pars_fragment,\n\troughnessmap_fragment: roughnessmap_fragment,\n\troughnessmap_pars_fragment: roughnessmap_pars_fragment,\n\tshadowmap_pars_fragment: shadowmap_pars_fragment,\n\tshadowmap_pars_vertex: shadowmap_pars_vertex,\n\tshadowmap_vertex: shadowmap_vertex,\n\tshadowmask_pars_fragment: shadowmask_pars_fragment,\n\tskinbase_vertex: skinbase_vertex,\n\tskinning_pars_vertex: skinning_pars_vertex,\n\tskinning_vertex: skinning_vertex,\n\tskinnormal_vertex: skinnormal_vertex,\n\tspecularmap_fragment: specularmap_fragment,\n\tspecularmap_pars_fragment: specularmap_pars_fragment,\n\ttonemapping_fragment: tonemapping_fragment,\n\ttonemapping_pars_fragment: tonemapping_pars_fragment,\n\ttransmissionmap_fragment: transmissionmap_fragment,\n\ttransmissionmap_pars_fragment: transmissionmap_pars_fragment,\n\tuv_pars_fragment: uv_pars_fragment,\n\tuv_pars_vertex: uv_pars_vertex,\n\tuv_vertex: uv_vertex,\n\tuv2_pars_fragment: uv2_pars_fragment,\n\tuv2_pars_vertex: uv2_pars_vertex,\n\tuv2_vertex: uv2_vertex,\n\tworldpos_vertex: worldpos_vertex,\n\n\tbackground_frag: background_frag,\n\tbackground_vert: background_vert,\n\tcube_frag: cube_frag,\n\tcube_vert: cube_vert,\n\tdepth_frag: depth_frag,\n\tdepth_vert: depth_vert,\n\tdistanceRGBA_frag: distanceRGBA_frag,\n\tdistanceRGBA_vert: distanceRGBA_vert,\n\tequirect_frag: equirect_frag,\n\tequirect_vert: equirect_vert,\n\tlinedashed_frag: linedashed_frag,\n\tlinedashed_vert: linedashed_vert,\n\tmeshbasic_frag: meshbasic_frag,\n\tmeshbasic_vert: meshbasic_vert,\n\tmeshlambert_frag: meshlambert_frag,\n\tmeshlambert_vert: meshlambert_vert,\n\tmeshmatcap_frag: meshmatcap_frag,\n\tmeshmatcap_vert: meshmatcap_vert,\n\tmeshtoon_frag: meshtoon_frag,\n\tmeshtoon_vert: meshtoon_vert,\n\tmeshphong_frag: meshphong_frag,\n\tmeshphong_vert: meshphong_vert,\n\tmeshphysical_frag: meshphysical_frag,\n\tmeshphysical_vert: meshphysical_vert,\n\tnormal_frag: normal_frag,\n\tnormal_vert: normal_vert,\n\tpoints_frag: points_frag,\n\tpoints_vert: points_vert,\n\tshadow_frag: shadow_frag,\n\tshadow_vert: shadow_vert,\n\tsprite_frag: sprite_frag,\n\tsprite_vert: sprite_vert\n};\n\n/**\n * Uniforms library for shared webgl shaders\n */\n\nconst UniformsLib = {\n\n\tcommon: {\n\n\t\tdiffuse: { value: new Color( 0xeeeeee ) },\n\t\topacity: { value: 1.0 },\n\n\t\tmap: { value: null },\n\t\tuvTransform: { value: new Matrix3() },\n\t\tuv2Transform: { value: new Matrix3() },\n\n\t\talphaMap: { value: null },\n\n\t},\n\n\tspecularmap: {\n\n\t\tspecularMap: { value: null },\n\n\t},\n\n\tenvmap: {\n\n\t\tenvMap: { value: null },\n\t\tflipEnvMap: { value: - 1 },\n\t\treflectivity: { value: 1.0 },\n\t\trefractionRatio: { value: 0.98 },\n\t\tmaxMipLevel: { value: 0 }\n\n\t},\n\n\taomap: {\n\n\t\taoMap: { value: null },\n\t\taoMapIntensity: { value: 1 }\n\n\t},\n\n\tlightmap: {\n\n\t\tlightMap: { value: null },\n\t\tlightMapIntensity: { value: 1 }\n\n\t},\n\n\temissivemap: {\n\n\t\temissiveMap: { value: null }\n\n\t},\n\n\tbumpmap: {\n\n\t\tbumpMap: { value: null },\n\t\tbumpScale: { value: 1 }\n\n\t},\n\n\tnormalmap: {\n\n\t\tnormalMap: { value: null },\n\t\tnormalScale: { value: new Vector2( 1, 1 ) }\n\n\t},\n\n\tdisplacementmap: {\n\n\t\tdisplacementMap: { value: null },\n\t\tdisplacementScale: { value: 1 },\n\t\tdisplacementBias: { value: 0 }\n\n\t},\n\n\troughnessmap: {\n\n\t\troughnessMap: { value: null }\n\n\t},\n\n\tmetalnessmap: {\n\n\t\tmetalnessMap: { value: null }\n\n\t},\n\n\tgradientmap: {\n\n\t\tgradientMap: { value: null }\n\n\t},\n\n\tfog: {\n\n\t\tfogDensity: { value: 0.00025 },\n\t\tfogNear: { value: 1 },\n\t\tfogFar: { value: 2000 },\n\t\tfogColor: { value: new Color( 0xffffff ) }\n\n\t},\n\n\tlights: {\n\n\t\tambientLightColor: { value: [] },\n\n\t\tlightProbe: { value: [] },\n\n\t\tdirectionalLights: { value: [], properties: {\n\t\t\tdirection: {},\n\t\t\tcolor: {}\n\t\t} },\n\n\t\tdirectionalLightShadows: { value: [], properties: {\n\t\t\tshadowBias: {},\n\t\t\tshadowNormalBias: {},\n\t\t\tshadowRadius: {},\n\t\t\tshadowMapSize: {}\n\t\t} },\n\n\t\tdirectionalShadowMap: { value: [] },\n\t\tdirectionalShadowMatrix: { value: [] },\n\n\t\tspotLights: { value: [], properties: {\n\t\t\tcolor: {},\n\t\t\tposition: {},\n\t\t\tdirection: {},\n\t\t\tdistance: {},\n\t\t\tconeCos: {},\n\t\t\tpenumbraCos: {},\n\t\t\tdecay: {}\n\t\t} },\n\n\t\tspotLightShadows: { value: [], properties: {\n\t\t\tshadowBias: {},\n\t\t\tshadowNormalBias: {},\n\t\t\tshadowRadius: {},\n\t\t\tshadowMapSize: {}\n\t\t} },\n\n\t\tspotShadowMap: { value: [] },\n\t\tspotShadowMatrix: { value: [] },\n\n\t\tpointLights: { value: [], properties: {\n\t\t\tcolor: {},\n\t\t\tposition: {},\n\t\t\tdecay: {},\n\t\t\tdistance: {}\n\t\t} },\n\n\t\tpointLightShadows: { value: [], properties: {\n\t\t\tshadowBias: {},\n\t\t\tshadowNormalBias: {},\n\t\t\tshadowRadius: {},\n\t\t\tshadowMapSize: {},\n\t\t\tshadowCameraNear: {},\n\t\t\tshadowCameraFar: {}\n\t\t} },\n\n\t\tpointShadowMap: { value: [] },\n\t\tpointShadowMatrix: { value: [] },\n\n\t\themisphereLights: { value: [], properties: {\n\t\t\tdirection: {},\n\t\t\tskyColor: {},\n\t\t\tgroundColor: {}\n\t\t} },\n\n\t\t// TODO (abelnation): RectAreaLight BRDF data needs to be moved from example to main src\n\t\trectAreaLights: { value: [], properties: {\n\t\t\tcolor: {},\n\t\t\tposition: {},\n\t\t\twidth: {},\n\t\t\theight: {}\n\t\t} },\n\n\t\tltc_1: { value: null },\n\t\tltc_2: { value: null }\n\n\t},\n\n\tpoints: {\n\n\t\tdiffuse: { value: new Color( 0xeeeeee ) },\n\t\topacity: { value: 1.0 },\n\t\tsize: { value: 1.0 },\n\t\tscale: { value: 1.0 },\n\t\tmap: { value: null },\n\t\talphaMap: { value: null },\n\t\tuvTransform: { value: new Matrix3() }\n\n\t},\n\n\tsprite: {\n\n\t\tdiffuse: { value: new Color( 0xeeeeee ) },\n\t\topacity: { value: 1.0 },\n\t\tcenter: { value: new Vector2( 0.5, 0.5 ) },\n\t\trotation: { value: 0.0 },\n\t\tmap: { value: null },\n\t\talphaMap: { value: null },\n\t\tuvTransform: { value: new Matrix3() }\n\n\t}\n\n};\n\nconst ShaderLib = {\n\n\tbasic: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.specularmap,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.fog\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshbasic_vert,\n\t\tfragmentShader: ShaderChunk.meshbasic_frag\n\n\t},\n\n\tlambert: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.specularmap,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: new Color( 0x000000 ) }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshlambert_vert,\n\t\tfragmentShader: ShaderChunk.meshlambert_frag\n\n\t},\n\n\tphong: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.specularmap,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: new Color( 0x000000 ) },\n\t\t\t\tspecular: { value: new Color( 0x111111 ) },\n\t\t\t\tshininess: { value: 30 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshphong_vert,\n\t\tfragmentShader: ShaderChunk.meshphong_frag\n\n\t},\n\n\tstandard: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.roughnessmap,\n\t\t\tUniformsLib.metalnessmap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: new Color( 0x000000 ) },\n\t\t\t\troughness: { value: 1.0 },\n\t\t\t\tmetalness: { value: 0.0 },\n\t\t\t\tenvMapIntensity: { value: 1 } // temporary\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshphysical_vert,\n\t\tfragmentShader: ShaderChunk.meshphysical_frag\n\n\t},\n\n\ttoon: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.gradientmap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: new Color( 0x000000 ) }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshtoon_vert,\n\t\tfragmentShader: ShaderChunk.meshtoon_frag\n\n\t},\n\n\tmatcap: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.fog,\n\t\t\t{\n\t\t\t\tmatcap: { value: null }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshmatcap_vert,\n\t\tfragmentShader: ShaderChunk.meshmatcap_frag\n\n\t},\n\n\tpoints: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.points,\n\t\t\tUniformsLib.fog\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.points_vert,\n\t\tfragmentShader: ShaderChunk.points_frag\n\n\t},\n\n\tdashed: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.fog,\n\t\t\t{\n\t\t\t\tscale: { value: 1 },\n\t\t\t\tdashSize: { value: 1 },\n\t\t\t\ttotalSize: { value: 2 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.linedashed_vert,\n\t\tfragmentShader: ShaderChunk.linedashed_frag\n\n\t},\n\n\tdepth: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.displacementmap\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.depth_vert,\n\t\tfragmentShader: ShaderChunk.depth_frag\n\n\t},\n\n\tnormal: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\t{\n\t\t\t\topacity: { value: 1.0 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.normal_vert,\n\t\tfragmentShader: ShaderChunk.normal_frag\n\n\t},\n\n\tsprite: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.sprite,\n\t\t\tUniformsLib.fog\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.sprite_vert,\n\t\tfragmentShader: ShaderChunk.sprite_frag\n\n\t},\n\n\tbackground: {\n\n\t\tuniforms: {\n\t\t\tuvTransform: { value: new Matrix3() },\n\t\t\tt2D: { value: null },\n\t\t},\n\n\t\tvertexShader: ShaderChunk.background_vert,\n\t\tfragmentShader: ShaderChunk.background_frag\n\n\t},\n\t/* -------------------------------------------------------------------------\n\t//\tCube map shader\n\t ------------------------------------------------------------------------- */\n\n\tcube: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.envmap,\n\t\t\t{\n\t\t\t\topacity: { value: 1.0 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.cube_vert,\n\t\tfragmentShader: ShaderChunk.cube_frag\n\n\t},\n\n\tequirect: {\n\n\t\tuniforms: {\n\t\t\ttEquirect: { value: null },\n\t\t},\n\n\t\tvertexShader: ShaderChunk.equirect_vert,\n\t\tfragmentShader: ShaderChunk.equirect_frag\n\n\t},\n\n\tdistanceRGBA: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.displacementmap,\n\t\t\t{\n\t\t\t\treferencePosition: { value: new Vector3() },\n\t\t\t\tnearDistance: { value: 1 },\n\t\t\t\tfarDistance: { value: 1000 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.distanceRGBA_vert,\n\t\tfragmentShader: ShaderChunk.distanceRGBA_frag\n\n\t},\n\n\tshadow: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.lights,\n\t\t\tUniformsLib.fog,\n\t\t\t{\n\t\t\t\tcolor: { value: new Color( 0x00000 ) },\n\t\t\t\topacity: { value: 1.0 }\n\t\t\t},\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.shadow_vert,\n\t\tfragmentShader: ShaderChunk.shadow_frag\n\n\t}\n\n};\n\nShaderLib.physical = {\n\n\tuniforms: mergeUniforms( [\n\t\tShaderLib.standard.uniforms,\n\t\t{\n\t\t\tclearcoat: { value: 0 },\n\t\t\tclearcoatMap: { value: null },\n\t\t\tclearcoatRoughness: { value: 0 },\n\t\t\tclearcoatRoughnessMap: { value: null },\n\t\t\tclearcoatNormalScale: { value: new Vector2( 1, 1 ) },\n\t\t\tclearcoatNormalMap: { value: null },\n\t\t\tsheen: { value: new Color( 0x000000 ) },\n\t\t\ttransmission: { value: 0 },\n\t\t\ttransmissionMap: { value: null },\n\t\t}\n\t] ),\n\n\tvertexShader: ShaderChunk.meshphysical_vert,\n\tfragmentShader: ShaderChunk.meshphysical_frag\n\n};\n\nfunction WebGLBackground( renderer, cubemaps, state, objects, premultipliedAlpha ) {\n\n\tconst clearColor = new Color( 0x000000 );\n\tlet clearAlpha = 0;\n\n\tlet planeMesh;\n\tlet boxMesh;\n\n\tlet currentBackground = null;\n\tlet currentBackgroundVersion = 0;\n\tlet currentTonemapping = null;\n\n\tfunction render( renderList, scene, camera, forceClear ) {\n\n\t\tlet background = scene.isScene === true ? scene.background : null;\n\n\t\tif ( background && background.isTexture ) {\n\n\t\t\tbackground = cubemaps.get( background );\n\n\t\t}\n\n\t\t// Ignore background in AR\n\t\t// TODO: Reconsider this.\n\n\t\tconst xr = renderer.xr;\n\t\tconst session = xr.getSession && xr.getSession();\n\n\t\tif ( session && session.environmentBlendMode === 'additive' ) {\n\n\t\t\tbackground = null;\n\n\t\t}\n\n\t\tif ( background === null ) {\n\n\t\t\tsetClear( clearColor, clearAlpha );\n\n\t\t} else if ( background && background.isColor ) {\n\n\t\t\tsetClear( background, 1 );\n\t\t\tforceClear = true;\n\n\t\t}\n\n\t\tif ( renderer.autoClear || forceClear ) {\n\n\t\t\trenderer.clear( renderer.autoClearColor, renderer.autoClearDepth, renderer.autoClearStencil );\n\n\t\t}\n\n\t\tif ( background && ( background.isCubeTexture || background.isWebGLCubeRenderTarget || background.isWebGLCubeRenderTargetTexture || background.mapping === CubeUVReflectionMapping ) ) {\n\n\t\t\tif ( boxMesh === undefined ) {\n\n\t\t\t\tboxMesh = new Mesh(\n\t\t\t\t\tnew BoxBufferGeometry( 1, 1, 1 ),\n\t\t\t\t\tnew ShaderMaterial( {\n\t\t\t\t\t\tname: 'BackgroundCubeMaterial',\n\t\t\t\t\t\tuniforms: cloneUniforms( ShaderLib.cube.uniforms ),\n\t\t\t\t\t\tvertexShader: ShaderLib.cube.vertexShader,\n\t\t\t\t\t\tfragmentShader: ShaderLib.cube.fragmentShader,\n\t\t\t\t\t\tside: BackSide,\n\t\t\t\t\t\tdepthTest: false,\n\t\t\t\t\t\tdepthWrite: false,\n\t\t\t\t\t\tfog: false\n\t\t\t\t\t} )\n\t\t\t\t);\n\n\t\t\t\tboxMesh.geometry.deleteAttribute( 'normal' );\n\t\t\t\tboxMesh.geometry.deleteAttribute( 'uv' );\n\n\t\t\t\tboxMesh.onBeforeRender = function ( renderer, scene, camera ) {\n\n\t\t\t\t\tthis.matrixWorld.copyPosition( camera.matrixWorld );\n\n\t\t\t\t};\n\n\t\t\t\t// enable code injection for non-built-in material\n\t\t\t\tObject.defineProperty( boxMesh.material, 'envMap', {\n\n\t\t\t\t\tget: function () {\n\n\t\t\t\t\t\treturn this.uniforms.envMap.value;\n\n\t\t\t\t\t}\n\n\t\t\t\t} );\n\n\t\t\t\tobjects.update( boxMesh );\n\n\t\t\t}\n\n\t\t\tif ( background.isWebGLCubeRenderTarget ) {\n\n\t\t\t\t// TODO Deprecate\n\n\t\t\t\tbackground = background.texture;\n\n\t\t\t}\n\n\t\t\tboxMesh.material.uniforms.envMap.value = background;\n\t\t\tboxMesh.material.uniforms.flipEnvMap.value = background.isCubeTexture ? - 1 : 1;\n\n\t\t\tif ( currentBackground !== background ||\n\t\t\t\tcurrentBackgroundVersion !== background.version ||\n\t\t\t\tcurrentTonemapping !== renderer.toneMapping ) {\n\n\t\t\t\tboxMesh.material.needsUpdate = true;\n\n\t\t\t\tcurrentBackground = background;\n\t\t\t\tcurrentBackgroundVersion = background.version;\n\t\t\t\tcurrentTonemapping = renderer.toneMapping;\n\n\t\t\t}\n\n\t\t\t// push to the pre-sorted opaque render list\n\t\t\trenderList.unshift( boxMesh, boxMesh.geometry, boxMesh.material, 0, 0, null );\n\n\t\t} else if ( background && background.isTexture ) {\n\n\t\t\tif ( planeMesh === undefined ) {\n\n\t\t\t\tplaneMesh = new Mesh(\n\t\t\t\t\tnew PlaneBufferGeometry( 2, 2 ),\n\t\t\t\t\tnew ShaderMaterial( {\n\t\t\t\t\t\tname: 'BackgroundMaterial',\n\t\t\t\t\t\tuniforms: cloneUniforms( ShaderLib.background.uniforms ),\n\t\t\t\t\t\tvertexShader: ShaderLib.background.vertexShader,\n\t\t\t\t\t\tfragmentShader: ShaderLib.background.fragmentShader,\n\t\t\t\t\t\tside: FrontSide,\n\t\t\t\t\t\tdepthTest: false,\n\t\t\t\t\t\tdepthWrite: false,\n\t\t\t\t\t\tfog: false\n\t\t\t\t\t} )\n\t\t\t\t);\n\n\t\t\t\tplaneMesh.geometry.deleteAttribute( 'normal' );\n\n\t\t\t\t// enable code injection for non-built-in material\n\t\t\t\tObject.defineProperty( planeMesh.material, 'map', {\n\n\t\t\t\t\tget: function () {\n\n\t\t\t\t\t\treturn this.uniforms.t2D.value;\n\n\t\t\t\t\t}\n\n\t\t\t\t} );\n\n\t\t\t\tobjects.update( planeMesh );\n\n\t\t\t}\n\n\t\t\tplaneMesh.material.uniforms.t2D.value = background;\n\n\t\t\tif ( background.matrixAutoUpdate === true ) {\n\n\t\t\t\tbackground.updateMatrix();\n\n\t\t\t}\n\n\t\t\tplaneMesh.material.uniforms.uvTransform.value.copy( background.matrix );\n\n\t\t\tif ( currentBackground !== background ||\n\t\t\t\tcurrentBackgroundVersion !== background.version ||\n\t\t\t\tcurrentTonemapping !== renderer.toneMapping ) {\n\n\t\t\t\tplaneMesh.material.needsUpdate = true;\n\n\t\t\t\tcurrentBackground = background;\n\t\t\t\tcurrentBackgroundVersion = background.version;\n\t\t\t\tcurrentTonemapping = renderer.toneMapping;\n\n\t\t\t}\n\n\n\t\t\t// push to the pre-sorted opaque render list\n\t\t\trenderList.unshift( planeMesh, planeMesh.geometry, planeMesh.material, 0, 0, null );\n\n\t\t}\n\n\t}\n\n\tfunction setClear( color, alpha ) {\n\n\t\tstate.buffers.color.setClear( color.r, color.g, color.b, alpha, premultipliedAlpha );\n\n\t}\n\n\treturn {\n\n\t\tgetClearColor: function () {\n\n\t\t\treturn clearColor;\n\n\t\t},\n\t\tsetClearColor: function ( color, alpha ) {\n\n\t\t\tclearColor.set( color );\n\t\t\tclearAlpha = alpha !== undefined ? alpha : 1;\n\t\t\tsetClear( clearColor, clearAlpha );\n\n\t\t},\n\t\tgetClearAlpha: function () {\n\n\t\t\treturn clearAlpha;\n\n\t\t},\n\t\tsetClearAlpha: function ( alpha ) {\n\n\t\t\tclearAlpha = alpha;\n\t\t\tsetClear( clearColor, clearAlpha );\n\n\t\t},\n\t\trender: render\n\n\t};\n\n}\n\nfunction WebGLBindingStates( gl, extensions, attributes, capabilities ) {\n\n\tconst maxVertexAttributes = gl.getParameter( 34921 );\n\n\tconst extension = capabilities.isWebGL2 ? null : extensions.get( 'OES_vertex_array_object' );\n\tconst vaoAvailable = capabilities.isWebGL2 || extension !== null;\n\n\tconst bindingStates = {};\n\n\tconst defaultState = createBindingState( null );\n\tlet currentState = defaultState;\n\n\tfunction setup( object, material, program, geometry, index ) {\n\n\t\tlet updateBuffers = false;\n\n\t\tif ( vaoAvailable ) {\n\n\t\t\tconst state = getBindingState( geometry, program, material );\n\n\t\t\tif ( currentState !== state ) {\n\n\t\t\t\tcurrentState = state;\n\t\t\t\tbindVertexArrayObject( currentState.object );\n\n\t\t\t}\n\n\t\t\tupdateBuffers = needsUpdate( geometry, index );\n\n\t\t\tif ( updateBuffers ) saveCache( geometry, index );\n\n\t\t} else {\n\n\t\t\tconst wireframe = ( material.wireframe === true );\n\n\t\t\tif ( currentState.geometry !== geometry.id ||\n\t\t\t\tcurrentState.program !== program.id ||\n\t\t\t\tcurrentState.wireframe !== wireframe ) {\n\n\t\t\t\tcurrentState.geometry = geometry.id;\n\t\t\t\tcurrentState.program = program.id;\n\t\t\t\tcurrentState.wireframe = wireframe;\n\n\t\t\t\tupdateBuffers = true;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( object.isInstancedMesh === true ) {\n\n\t\t\tupdateBuffers = true;\n\n\t\t}\n\n\t\tif ( index !== null ) {\n\n\t\t\tattributes.update( index, 34963 );\n\n\t\t}\n\n\t\tif ( updateBuffers ) {\n\n\t\t\tsetupVertexAttributes( object, material, program, geometry );\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\tgl.bindBuffer( 34963, attributes.get( index ).buffer );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction createVertexArrayObject() {\n\n\t\tif ( capabilities.isWebGL2 ) return gl.createVertexArray();\n\n\t\treturn extension.createVertexArrayOES();\n\n\t}\n\n\tfunction bindVertexArrayObject( vao ) {\n\n\t\tif ( capabilities.isWebGL2 ) return gl.bindVertexArray( vao );\n\n\t\treturn extension.bindVertexArrayOES( vao );\n\n\t}\n\n\tfunction deleteVertexArrayObject( vao ) {\n\n\t\tif ( capabilities.isWebGL2 ) return gl.deleteVertexArray( vao );\n\n\t\treturn extension.deleteVertexArrayOES( vao );\n\n\t}\n\n\tfunction getBindingState( geometry, program, material ) {\n\n\t\tconst wireframe = ( material.wireframe === true );\n\n\t\tlet programMap = bindingStates[ geometry.id ];\n\n\t\tif ( programMap === undefined ) {\n\n\t\t\tprogramMap = {};\n\t\t\tbindingStates[ geometry.id ] = programMap;\n\n\t\t}\n\n\t\tlet stateMap = programMap[ program.id ];\n\n\t\tif ( stateMap === undefined ) {\n\n\t\t\tstateMap = {};\n\t\t\tprogramMap[ program.id ] = stateMap;\n\n\t\t}\n\n\t\tlet state = stateMap[ wireframe ];\n\n\t\tif ( state === undefined ) {\n\n\t\t\tstate = createBindingState( createVertexArrayObject() );\n\t\t\tstateMap[ wireframe ] = state;\n\n\t\t}\n\n\t\treturn state;\n\n\t}\n\n\tfunction createBindingState( vao ) {\n\n\t\tconst newAttributes = [];\n\t\tconst enabledAttributes = [];\n\t\tconst attributeDivisors = [];\n\n\t\tfor ( let i = 0; i < maxVertexAttributes; i ++ ) {\n\n\t\t\tnewAttributes[ i ] = 0;\n\t\t\tenabledAttributes[ i ] = 0;\n\t\t\tattributeDivisors[ i ] = 0;\n\n\t\t}\n\n\t\treturn {\n\n\t\t\t// for backward compatibility on non-VAO support browser\n\t\t\tgeometry: null,\n\t\t\tprogram: null,\n\t\t\twireframe: false,\n\n\t\t\tnewAttributes: newAttributes,\n\t\t\tenabledAttributes: enabledAttributes,\n\t\t\tattributeDivisors: attributeDivisors,\n\t\t\tobject: vao,\n\t\t\tattributes: {},\n\t\t\tindex: null\n\n\t\t};\n\n\t}\n\n\tfunction needsUpdate( geometry, index ) {\n\n\t\tconst cachedAttributes = currentState.attributes;\n\t\tconst geometryAttributes = geometry.attributes;\n\n\t\tif ( Object.keys( cachedAttributes ).length !== Object.keys( geometryAttributes ).length ) return true;\n\n\t\tfor ( const key in geometryAttributes ) {\n\n\t\t\tconst cachedAttribute = cachedAttributes[ key ];\n\t\t\tconst geometryAttribute = geometryAttributes[ key ];\n\n\t\t\tif ( cachedAttribute === undefined ) return true;\n\n\t\t\tif ( cachedAttribute.attribute !== geometryAttribute ) return true;\n\n\t\t\tif ( cachedAttribute.data !== geometryAttribute.data ) return true;\n\n\t\t}\n\n\t\tif ( currentState.index !== index ) return true;\n\n\t\treturn false;\n\n\t}\n\n\tfunction saveCache( geometry, index ) {\n\n\t\tconst cache = {};\n\t\tconst attributes = geometry.attributes;\n\n\t\tfor ( const key in attributes ) {\n\n\t\t\tconst attribute = attributes[ key ];\n\n\t\t\tconst data = {};\n\t\t\tdata.attribute = attribute;\n\n\t\t\tif ( attribute.data ) {\n\n\t\t\t\tdata.data = attribute.data;\n\n\t\t\t}\n\n\t\t\tcache[ key ] = data;\n\n\t\t}\n\n\t\tcurrentState.attributes = cache;\n\n\t\tcurrentState.index = index;\n\n\t}\n\n\tfunction initAttributes() {\n\n\t\tconst newAttributes = currentState.newAttributes;\n\n\t\tfor ( let i = 0, il = newAttributes.length; i < il; i ++ ) {\n\n\t\t\tnewAttributes[ i ] = 0;\n\n\t\t}\n\n\t}\n\n\tfunction enableAttribute( attribute ) {\n\n\t\tenableAttributeAndDivisor( attribute, 0 );\n\n\t}\n\n\tfunction enableAttributeAndDivisor( attribute, meshPerAttribute ) {\n\n\t\tconst newAttributes = currentState.newAttributes;\n\t\tconst enabledAttributes = currentState.enabledAttributes;\n\t\tconst attributeDivisors = currentState.attributeDivisors;\n\n\t\tnewAttributes[ attribute ] = 1;\n\n\t\tif ( enabledAttributes[ attribute ] === 0 ) {\n\n\t\t\tgl.enableVertexAttribArray( attribute );\n\t\t\tenabledAttributes[ attribute ] = 1;\n\n\t\t}\n\n\t\tif ( attributeDivisors[ attribute ] !== meshPerAttribute ) {\n\n\t\t\tconst extension = capabilities.isWebGL2 ? gl : extensions.get( 'ANGLE_instanced_arrays' );\n\n\t\t\textension[ capabilities.isWebGL2 ? 'vertexAttribDivisor' : 'vertexAttribDivisorANGLE' ]( attribute, meshPerAttribute );\n\t\t\tattributeDivisors[ attribute ] = meshPerAttribute;\n\n\t\t}\n\n\t}\n\n\tfunction disableUnusedAttributes() {\n\n\t\tconst newAttributes = currentState.newAttributes;\n\t\tconst enabledAttributes = currentState.enabledAttributes;\n\n\t\tfor ( let i = 0, il = enabledAttributes.length; i < il; i ++ ) {\n\n\t\t\tif ( enabledAttributes[ i ] !== newAttributes[ i ] ) {\n\n\t\t\t\tgl.disableVertexAttribArray( i );\n\t\t\t\tenabledAttributes[ i ] = 0;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction vertexAttribPointer( index, size, type, normalized, stride, offset ) {\n\n\t\tif ( capabilities.isWebGL2 === true && ( type === 5124 || type === 5125 ) ) {\n\n\t\t\tgl.vertexAttribIPointer( index, size, type, stride, offset );\n\n\t\t} else {\n\n\t\t\tgl.vertexAttribPointer( index, size, type, normalized, stride, offset );\n\n\t\t}\n\n\t}\n\n\tfunction setupVertexAttributes( object, material, program, geometry ) {\n\n\t\tif ( capabilities.isWebGL2 === false && ( object.isInstancedMesh || geometry.isInstancedBufferGeometry ) ) {\n\n\t\t\tif ( extensions.get( 'ANGLE_instanced_arrays' ) === null ) return;\n\n\t\t}\n\n\t\tinitAttributes();\n\n\t\tconst geometryAttributes = geometry.attributes;\n\n\t\tconst programAttributes = program.getAttributes();\n\n\t\tconst materialDefaultAttributeValues = material.defaultAttributeValues;\n\n\t\tfor ( const name in programAttributes ) {\n\n\t\t\tconst programAttribute = programAttributes[ name ];\n\n\t\t\tif ( programAttribute >= 0 ) {\n\n\t\t\t\tconst geometryAttribute = geometryAttributes[ name ];\n\n\t\t\t\tif ( geometryAttribute !== undefined ) {\n\n\t\t\t\t\tconst normalized = geometryAttribute.normalized;\n\t\t\t\t\tconst size = geometryAttribute.itemSize;\n\n\t\t\t\t\tconst attribute = attributes.get( geometryAttribute );\n\n\t\t\t\t\t// TODO Attribute may not be available on context restore\n\n\t\t\t\t\tif ( attribute === undefined ) continue;\n\n\t\t\t\t\tconst buffer = attribute.buffer;\n\t\t\t\t\tconst type = attribute.type;\n\t\t\t\t\tconst bytesPerElement = attribute.bytesPerElement;\n\n\t\t\t\t\tif ( geometryAttribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\t\t\tconst data = geometryAttribute.data;\n\t\t\t\t\t\tconst stride = data.stride;\n\t\t\t\t\t\tconst offset = geometryAttribute.offset;\n\n\t\t\t\t\t\tif ( data && data.isInstancedInterleavedBuffer ) {\n\n\t\t\t\t\t\t\tenableAttributeAndDivisor( programAttribute, data.meshPerAttribute );\n\n\t\t\t\t\t\t\tif ( geometry._maxInstanceCount === undefined ) {\n\n\t\t\t\t\t\t\t\tgeometry._maxInstanceCount = data.meshPerAttribute * data.count;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tenableAttribute( programAttribute );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tgl.bindBuffer( 34962, buffer );\n\t\t\t\t\t\tvertexAttribPointer( programAttribute, size, type, normalized, stride * bytesPerElement, offset * bytesPerElement );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( geometryAttribute.isInstancedBufferAttribute ) {\n\n\t\t\t\t\t\t\tenableAttributeAndDivisor( programAttribute, geometryAttribute.meshPerAttribute );\n\n\t\t\t\t\t\t\tif ( geometry._maxInstanceCount === undefined ) {\n\n\t\t\t\t\t\t\t\tgeometry._maxInstanceCount = geometryAttribute.meshPerAttribute * geometryAttribute.count;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tenableAttribute( programAttribute );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tgl.bindBuffer( 34962, buffer );\n\t\t\t\t\t\tvertexAttribPointer( programAttribute, size, type, normalized, 0, 0 );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( name === 'instanceMatrix' ) {\n\n\t\t\t\t\tconst attribute = attributes.get( object.instanceMatrix );\n\n\t\t\t\t\t// TODO Attribute may not be available on context restore\n\n\t\t\t\t\tif ( attribute === undefined ) continue;\n\n\t\t\t\t\tconst buffer = attribute.buffer;\n\t\t\t\t\tconst type = attribute.type;\n\n\t\t\t\t\tenableAttributeAndDivisor( programAttribute + 0, 1 );\n\t\t\t\t\tenableAttributeAndDivisor( programAttribute + 1, 1 );\n\t\t\t\t\tenableAttributeAndDivisor( programAttribute + 2, 1 );\n\t\t\t\t\tenableAttributeAndDivisor( programAttribute + 3, 1 );\n\n\t\t\t\t\tgl.bindBuffer( 34962, buffer );\n\n\t\t\t\t\tgl.vertexAttribPointer( programAttribute + 0, 4, type, false, 64, 0 );\n\t\t\t\t\tgl.vertexAttribPointer( programAttribute + 1, 4, type, false, 64, 16 );\n\t\t\t\t\tgl.vertexAttribPointer( programAttribute + 2, 4, type, false, 64, 32 );\n\t\t\t\t\tgl.vertexAttribPointer( programAttribute + 3, 4, type, false, 64, 48 );\n\n\t\t\t\t} else if ( name === 'instanceColor' ) {\n\n\t\t\t\t\tconst attribute = attributes.get( object.instanceColor );\n\n\t\t\t\t\t// TODO Attribute may not be available on context restore\n\n\t\t\t\t\tif ( attribute === undefined ) continue;\n\n\t\t\t\t\tconst buffer = attribute.buffer;\n\t\t\t\t\tconst type = attribute.type;\n\n\t\t\t\t\tenableAttributeAndDivisor( programAttribute, 1 );\n\n\t\t\t\t\tgl.bindBuffer( 34962, buffer );\n\n\t\t\t\t\tgl.vertexAttribPointer( programAttribute, 3, type, false, 12, 0 );\n\n\t\t\t\t} else if ( materialDefaultAttributeValues !== undefined ) {\n\n\t\t\t\t\tconst value = materialDefaultAttributeValues[ name ];\n\n\t\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\t\tswitch ( value.length ) {\n\n\t\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\t\tgl.vertexAttrib2fv( programAttribute, value );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase 3:\n\t\t\t\t\t\t\t\tgl.vertexAttrib3fv( programAttribute, value );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase 4:\n\t\t\t\t\t\t\t\tgl.vertexAttrib4fv( programAttribute, value );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tgl.vertexAttrib1fv( programAttribute, value );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tdisableUnusedAttributes();\n\n\t}\n\n\tfunction dispose() {\n\n\t\treset();\n\n\t\tfor ( const geometryId in bindingStates ) {\n\n\t\t\tconst programMap = bindingStates[ geometryId ];\n\n\t\t\tfor ( const programId in programMap ) {\n\n\t\t\t\tconst stateMap = programMap[ programId ];\n\n\t\t\t\tfor ( const wireframe in stateMap ) {\n\n\t\t\t\t\tdeleteVertexArrayObject( stateMap[ wireframe ].object );\n\n\t\t\t\t\tdelete stateMap[ wireframe ];\n\n\t\t\t\t}\n\n\t\t\t\tdelete programMap[ programId ];\n\n\t\t\t}\n\n\t\t\tdelete bindingStates[ geometryId ];\n\n\t\t}\n\n\t}\n\n\tfunction releaseStatesOfGeometry( geometry ) {\n\n\t\tif ( bindingStates[ geometry.id ] === undefined ) return;\n\n\t\tconst programMap = bindingStates[ geometry.id ];\n\n\t\tfor ( const programId in programMap ) {\n\n\t\t\tconst stateMap = programMap[ programId ];\n\n\t\t\tfor ( const wireframe in stateMap ) {\n\n\t\t\t\tdeleteVertexArrayObject( stateMap[ wireframe ].object );\n\n\t\t\t\tdelete stateMap[ wireframe ];\n\n\t\t\t}\n\n\t\t\tdelete programMap[ programId ];\n\n\t\t}\n\n\t\tdelete bindingStates[ geometry.id ];\n\n\t}\n\n\tfunction releaseStatesOfProgram( program ) {\n\n\t\tfor ( const geometryId in bindingStates ) {\n\n\t\t\tconst programMap = bindingStates[ geometryId ];\n\n\t\t\tif ( programMap[ program.id ] === undefined ) continue;\n\n\t\t\tconst stateMap = programMap[ program.id ];\n\n\t\t\tfor ( const wireframe in stateMap ) {\n\n\t\t\t\tdeleteVertexArrayObject( stateMap[ wireframe ].object );\n\n\t\t\t\tdelete stateMap[ wireframe ];\n\n\t\t\t}\n\n\t\t\tdelete programMap[ program.id ];\n\n\t\t}\n\n\t}\n\n\tfunction reset() {\n\n\t\tresetDefaultState();\n\n\t\tif ( currentState === defaultState ) return;\n\n\t\tcurrentState = defaultState;\n\t\tbindVertexArrayObject( currentState.object );\n\n\t}\n\n\t// for backward-compatilibity\n\n\tfunction resetDefaultState() {\n\n\t\tdefaultState.geometry = null;\n\t\tdefaultState.program = null;\n\t\tdefaultState.wireframe = false;\n\n\t}\n\n\treturn {\n\n\t\tsetup: setup,\n\t\treset: reset,\n\t\tresetDefaultState: resetDefaultState,\n\t\tdispose: dispose,\n\t\treleaseStatesOfGeometry: releaseStatesOfGeometry,\n\t\treleaseStatesOfProgram: releaseStatesOfProgram,\n\n\t\tinitAttributes: initAttributes,\n\t\tenableAttribute: enableAttribute,\n\t\tdisableUnusedAttributes: disableUnusedAttributes\n\n\t};\n\n}\n\nfunction WebGLBufferRenderer( gl, extensions, info, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\n\tlet mode;\n\n\tfunction setMode( value ) {\n\n\t\tmode = value;\n\n\t}\n\n\tfunction render( start, count ) {\n\n\t\tgl.drawArrays( mode, start, count );\n\n\t\tinfo.update( count, mode, 1 );\n\n\t}\n\n\tfunction renderInstances( start, count, primcount ) {\n\n\t\tif ( primcount === 0 ) return;\n\n\t\tlet extension, methodName;\n\n\t\tif ( isWebGL2 ) {\n\n\t\t\textension = gl;\n\t\t\tmethodName = 'drawArraysInstanced';\n\n\t\t} else {\n\n\t\t\textension = extensions.get( 'ANGLE_instanced_arrays' );\n\t\t\tmethodName = 'drawArraysInstancedANGLE';\n\n\t\t\tif ( extension === null ) {\n\n\t\t\t\tconsole.error( 'THREE.WebGLBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\textension[ methodName ]( mode, start, count, primcount );\n\n\t\tinfo.update( count, mode, primcount );\n\n\t}\n\n\t//\n\n\tthis.setMode = setMode;\n\tthis.render = render;\n\tthis.renderInstances = renderInstances;\n\n}\n\nfunction WebGLCapabilities( gl, extensions, parameters ) {\n\n\tlet maxAnisotropy;\n\n\tfunction getMaxAnisotropy() {\n\n\t\tif ( maxAnisotropy !== undefined ) return maxAnisotropy;\n\n\t\tconst extension = extensions.get( 'EXT_texture_filter_anisotropic' );\n\n\t\tif ( extension !== null ) {\n\n\t\t\tmaxAnisotropy = gl.getParameter( extension.MAX_TEXTURE_MAX_ANISOTROPY_EXT );\n\n\t\t} else {\n\n\t\t\tmaxAnisotropy = 0;\n\n\t\t}\n\n\t\treturn maxAnisotropy;\n\n\t}\n\n\tfunction getMaxPrecision( precision ) {\n\n\t\tif ( precision === 'highp' ) {\n\n\t\t\tif ( gl.getShaderPrecisionFormat( 35633, 36338 ).precision > 0 &&\n\t\t\t\tgl.getShaderPrecisionFormat( 35632, 36338 ).precision > 0 ) {\n\n\t\t\t\treturn 'highp';\n\n\t\t\t}\n\n\t\t\tprecision = 'mediump';\n\n\t\t}\n\n\t\tif ( precision === 'mediump' ) {\n\n\t\t\tif ( gl.getShaderPrecisionFormat( 35633, 36337 ).precision > 0 &&\n\t\t\t\tgl.getShaderPrecisionFormat( 35632, 36337 ).precision > 0 ) {\n\n\t\t\t\treturn 'mediump';\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn 'lowp';\n\n\t}\n\n\t/* eslint-disable no-undef */\n\tconst isWebGL2 = ( typeof WebGL2RenderingContext !== 'undefined' && gl instanceof WebGL2RenderingContext ) ||\n\t\t( typeof WebGL2ComputeRenderingContext !== 'undefined' && gl instanceof WebGL2ComputeRenderingContext );\n\t/* eslint-enable no-undef */\n\n\tlet precision = parameters.precision !== undefined ? parameters.precision : 'highp';\n\tconst maxPrecision = getMaxPrecision( precision );\n\n\tif ( maxPrecision !== precision ) {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer:', precision, 'not supported, using', maxPrecision, 'instead.' );\n\t\tprecision = maxPrecision;\n\n\t}\n\n\tconst logarithmicDepthBuffer = parameters.logarithmicDepthBuffer === true;\n\n\tconst maxTextures = gl.getParameter( 34930 );\n\tconst maxVertexTextures = gl.getParameter( 35660 );\n\tconst maxTextureSize = gl.getParameter( 3379 );\n\tconst maxCubemapSize = gl.getParameter( 34076 );\n\n\tconst maxAttributes = gl.getParameter( 34921 );\n\tconst maxVertexUniforms = gl.getParameter( 36347 );\n\tconst maxVaryings = gl.getParameter( 36348 );\n\tconst maxFragmentUniforms = gl.getParameter( 36349 );\n\n\tconst vertexTextures = maxVertexTextures > 0;\n\tconst floatFragmentTextures = isWebGL2 || !! extensions.get( 'OES_texture_float' );\n\tconst floatVertexTextures = vertexTextures && floatFragmentTextures;\n\n\tconst maxSamples = isWebGL2 ? gl.getParameter( 36183 ) : 0;\n\n\treturn {\n\n\t\tisWebGL2: isWebGL2,\n\n\t\tgetMaxAnisotropy: getMaxAnisotropy,\n\t\tgetMaxPrecision: getMaxPrecision,\n\n\t\tprecision: precision,\n\t\tlogarithmicDepthBuffer: logarithmicDepthBuffer,\n\n\t\tmaxTextures: maxTextures,\n\t\tmaxVertexTextures: maxVertexTextures,\n\t\tmaxTextureSize: maxTextureSize,\n\t\tmaxCubemapSize: maxCubemapSize,\n\n\t\tmaxAttributes: maxAttributes,\n\t\tmaxVertexUniforms: maxVertexUniforms,\n\t\tmaxVaryings: maxVaryings,\n\t\tmaxFragmentUniforms: maxFragmentUniforms,\n\n\t\tvertexTextures: vertexTextures,\n\t\tfloatFragmentTextures: floatFragmentTextures,\n\t\tfloatVertexTextures: floatVertexTextures,\n\n\t\tmaxSamples: maxSamples\n\n\t};\n\n}\n\nfunction WebGLClipping( properties ) {\n\n\tconst scope = this;\n\n\tlet globalState = null,\n\t\tnumGlobalPlanes = 0,\n\t\tlocalClippingEnabled = false,\n\t\trenderingShadows = false;\n\n\tconst plane = new Plane(),\n\t\tviewNormalMatrix = new Matrix3(),\n\n\t\tuniform = { value: null, needsUpdate: false };\n\n\tthis.uniform = uniform;\n\tthis.numPlanes = 0;\n\tthis.numIntersection = 0;\n\n\tthis.init = function ( planes, enableLocalClipping, camera ) {\n\n\t\tconst enabled =\n\t\t\tplanes.length !== 0 ||\n\t\t\tenableLocalClipping ||\n\t\t\t// enable state of previous frame - the clipping code has to\n\t\t\t// run another frame in order to reset the state:\n\t\t\tnumGlobalPlanes !== 0 ||\n\t\t\tlocalClippingEnabled;\n\n\t\tlocalClippingEnabled = enableLocalClipping;\n\n\t\tglobalState = projectPlanes( planes, camera, 0 );\n\t\tnumGlobalPlanes = planes.length;\n\n\t\treturn enabled;\n\n\t};\n\n\tthis.beginShadows = function () {\n\n\t\trenderingShadows = true;\n\t\tprojectPlanes( null );\n\n\t};\n\n\tthis.endShadows = function () {\n\n\t\trenderingShadows = false;\n\t\tresetGlobalState();\n\n\t};\n\n\tthis.setState = function ( material, camera, useCache ) {\n\n\t\tconst planes = material.clippingPlanes,\n\t\t\tclipIntersection = material.clipIntersection,\n\t\t\tclipShadows = material.clipShadows;\n\n\t\tconst materialProperties = properties.get( material );\n\n\t\tif ( ! localClippingEnabled || planes === null || planes.length === 0 || renderingShadows && ! clipShadows ) {\n\n\t\t\t// there's no local clipping\n\n\t\t\tif ( renderingShadows ) {\n\n\t\t\t\t// there's no global clipping\n\n\t\t\t\tprojectPlanes( null );\n\n\t\t\t} else {\n\n\t\t\t\tresetGlobalState();\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst nGlobal = renderingShadows ? 0 : numGlobalPlanes,\n\t\t\t\tlGlobal = nGlobal * 4;\n\n\t\t\tlet dstArray = materialProperties.clippingState || null;\n\n\t\t\tuniform.value = dstArray; // ensure unique state\n\n\t\t\tdstArray = projectPlanes( planes, camera, lGlobal, useCache );\n\n\t\t\tfor ( let i = 0; i !== lGlobal; ++ i ) {\n\n\t\t\t\tdstArray[ i ] = globalState[ i ];\n\n\t\t\t}\n\n\t\t\tmaterialProperties.clippingState = dstArray;\n\t\t\tthis.numIntersection = clipIntersection ? this.numPlanes : 0;\n\t\t\tthis.numPlanes += nGlobal;\n\n\t\t}\n\n\n\t};\n\n\tfunction resetGlobalState() {\n\n\t\tif ( uniform.value !== globalState ) {\n\n\t\t\tuniform.value = globalState;\n\t\t\tuniform.needsUpdate = numGlobalPlanes > 0;\n\n\t\t}\n\n\t\tscope.numPlanes = numGlobalPlanes;\n\t\tscope.numIntersection = 0;\n\n\t}\n\n\tfunction projectPlanes( planes, camera, dstOffset, skipTransform ) {\n\n\t\tconst nPlanes = planes !== null ? planes.length : 0;\n\t\tlet dstArray = null;\n\n\t\tif ( nPlanes !== 0 ) {\n\n\t\t\tdstArray = uniform.value;\n\n\t\t\tif ( skipTransform !== true || dstArray === null ) {\n\n\t\t\t\tconst flatSize = dstOffset + nPlanes * 4,\n\t\t\t\t\tviewMatrix = camera.matrixWorldInverse;\n\n\t\t\t\tviewNormalMatrix.getNormalMatrix( viewMatrix );\n\n\t\t\t\tif ( dstArray === null || dstArray.length < flatSize ) {\n\n\t\t\t\t\tdstArray = new Float32Array( flatSize );\n\n\t\t\t\t}\n\n\t\t\t\tfor ( let i = 0, i4 = dstOffset; i !== nPlanes; ++ i, i4 += 4 ) {\n\n\t\t\t\t\tplane.copy( planes[ i ] ).applyMatrix4( viewMatrix, viewNormalMatrix );\n\n\t\t\t\t\tplane.normal.toArray( dstArray, i4 );\n\t\t\t\t\tdstArray[ i4 + 3 ] = plane.constant;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tuniform.value = dstArray;\n\t\t\tuniform.needsUpdate = true;\n\n\t\t}\n\n\t\tscope.numPlanes = nPlanes;\n\t\tscope.numIntersection = 0;\n\n\t\treturn dstArray;\n\n\t}\n\n}\n\nfunction WebGLCubeMaps( renderer ) {\n\n\tlet cubemaps = new WeakMap();\n\n\tfunction mapTextureMapping( texture, mapping ) {\n\n\t\tif ( mapping === EquirectangularReflectionMapping ) {\n\n\t\t\ttexture.mapping = CubeReflectionMapping;\n\n\t\t} else if ( mapping === EquirectangularRefractionMapping ) {\n\n\t\t\ttexture.mapping = CubeRefractionMapping;\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n\tfunction get( texture ) {\n\n\t\tif ( texture && texture.isTexture ) {\n\n\t\t\tconst mapping = texture.mapping;\n\n\t\t\tif ( mapping === EquirectangularReflectionMapping || mapping === EquirectangularRefractionMapping ) {\n\n\t\t\t\tif ( cubemaps.has( texture ) ) {\n\n\t\t\t\t\tconst cubemap = cubemaps.get( texture ).texture;\n\t\t\t\t\treturn mapTextureMapping( cubemap, texture.mapping );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconst image = texture.image;\n\n\t\t\t\t\tif ( image && image.height > 0 ) {\n\n\t\t\t\t\t\tconst currentRenderList = renderer.getRenderList();\n\t\t\t\t\t\tconst currentRenderTarget = renderer.getRenderTarget();\n\t\t\t\t\t\tconst currentRenderState = renderer.getRenderState();\n\n\t\t\t\t\t\tconst renderTarget = new WebGLCubeRenderTarget( image.height / 2 );\n\t\t\t\t\t\trenderTarget.fromEquirectangularTexture( renderer, texture );\n\t\t\t\t\t\tcubemaps.set( texture, renderTarget );\n\n\t\t\t\t\t\trenderer.setRenderTarget( currentRenderTarget );\n\t\t\t\t\t\trenderer.setRenderList( currentRenderList );\n\t\t\t\t\t\trenderer.setRenderState( currentRenderState );\n\n\t\t\t\t\t\treturn mapTextureMapping( renderTarget.texture, texture.mapping );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// image not yet ready. try the conversion next frame\n\n\t\t\t\t\t\treturn null;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n\tfunction dispose() {\n\n\t\tcubemaps = new WeakMap();\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tdispose: dispose\n\t};\n\n}\n\nfunction WebGLExtensions( gl ) {\n\n\tconst extensions = {};\n\n\treturn {\n\n\t\thas: function ( name ) {\n\n\t\t\tif ( extensions[ name ] !== undefined ) {\n\n\t\t\t\treturn extensions[ name ] !== null;\n\n\t\t\t}\n\n\t\t\tlet extension;\n\n\t\t\tswitch ( name ) {\n\n\t\t\t\tcase 'WEBGL_depth_texture':\n\t\t\t\t\textension = gl.getExtension( 'WEBGL_depth_texture' ) || gl.getExtension( 'MOZ_WEBGL_depth_texture' ) || gl.getExtension( 'WEBKIT_WEBGL_depth_texture' );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'EXT_texture_filter_anisotropic':\n\t\t\t\t\textension = gl.getExtension( 'EXT_texture_filter_anisotropic' ) || gl.getExtension( 'MOZ_EXT_texture_filter_anisotropic' ) || gl.getExtension( 'WEBKIT_EXT_texture_filter_anisotropic' );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'WEBGL_compressed_texture_s3tc':\n\t\t\t\t\textension = gl.getExtension( 'WEBGL_compressed_texture_s3tc' ) || gl.getExtension( 'MOZ_WEBGL_compressed_texture_s3tc' ) || gl.getExtension( 'WEBKIT_WEBGL_compressed_texture_s3tc' );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'WEBGL_compressed_texture_pvrtc':\n\t\t\t\t\textension = gl.getExtension( 'WEBGL_compressed_texture_pvrtc' ) || gl.getExtension( 'WEBKIT_WEBGL_compressed_texture_pvrtc' );\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\textension = gl.getExtension( name );\n\n\t\t\t}\n\n\t\t\textensions[ name ] = extension;\n\n\t\t\treturn extension !== null;\n\n\t\t},\n\n\t\tget: function ( name ) {\n\n\t\t\tif ( ! this.has( name ) ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: ' + name + ' extension not supported.' );\n\n\t\t\t}\n\n\t\t\treturn extensions[ name ];\n\n\t\t}\n\n\t};\n\n}\n\nfunction WebGLGeometries( gl, attributes, info, bindingStates ) {\n\n\tconst geometries = new WeakMap();\n\tconst wireframeAttributes = new WeakMap();\n\n\tfunction onGeometryDispose( event ) {\n\n\t\tconst geometry = event.target;\n\t\tconst buffergeometry = geometries.get( geometry );\n\n\t\tif ( buffergeometry.index !== null ) {\n\n\t\t\tattributes.remove( buffergeometry.index );\n\n\t\t}\n\n\t\tfor ( const name in buffergeometry.attributes ) {\n\n\t\t\tattributes.remove( buffergeometry.attributes[ name ] );\n\n\t\t}\n\n\t\tgeometry.removeEventListener( 'dispose', onGeometryDispose );\n\n\t\tgeometries.delete( geometry );\n\n\t\tconst attribute = wireframeAttributes.get( buffergeometry );\n\n\t\tif ( attribute ) {\n\n\t\t\tattributes.remove( attribute );\n\t\t\twireframeAttributes.delete( buffergeometry );\n\n\t\t}\n\n\t\tbindingStates.releaseStatesOfGeometry( geometry );\n\n\t\tif ( geometry.isInstancedBufferGeometry === true ) {\n\n\t\t\tdelete geometry._maxInstanceCount;\n\n\t\t}\n\n\t\t//\n\n\t\tinfo.memory.geometries --;\n\n\t}\n\n\tfunction get( object, geometry ) {\n\n\t\tlet buffergeometry = geometries.get( geometry );\n\n\t\tif ( buffergeometry ) return buffergeometry;\n\n\t\tgeometry.addEventListener( 'dispose', onGeometryDispose );\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tbuffergeometry = geometry;\n\n\t\t} else if ( geometry.isGeometry ) {\n\n\t\t\tif ( geometry._bufferGeometry === undefined ) {\n\n\t\t\t\tgeometry._bufferGeometry = new BufferGeometry().setFromObject( object );\n\n\t\t\t}\n\n\t\t\tbuffergeometry = geometry._bufferGeometry;\n\n\t\t}\n\n\t\tgeometries.set( geometry, buffergeometry );\n\n\t\tinfo.memory.geometries ++;\n\n\t\treturn buffergeometry;\n\n\t}\n\n\tfunction update( geometry ) {\n\n\t\tconst geometryAttributes = geometry.attributes;\n\n\t\t// Updating index buffer in VAO now. See WebGLBindingStates.\n\n\t\tfor ( const name in geometryAttributes ) {\n\n\t\t\tattributes.update( geometryAttributes[ name ], 34962 );\n\n\t\t}\n\n\t\t// morph targets\n\n\t\tconst morphAttributes = geometry.morphAttributes;\n\n\t\tfor ( const name in morphAttributes ) {\n\n\t\t\tconst array = morphAttributes[ name ];\n\n\t\t\tfor ( let i = 0, l = array.length; i < l; i ++ ) {\n\n\t\t\t\tattributes.update( array[ i ], 34962 );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction updateWireframeAttribute( geometry ) {\n\n\t\tconst indices = [];\n\n\t\tconst geometryIndex = geometry.index;\n\t\tconst geometryPosition = geometry.attributes.position;\n\t\tlet version = 0;\n\n\t\tif ( geometryIndex !== null ) {\n\n\t\t\tconst array = geometryIndex.array;\n\t\t\tversion = geometryIndex.version;\n\n\t\t\tfor ( let i = 0, l = array.length; i < l; i += 3 ) {\n\n\t\t\t\tconst a = array[ i + 0 ];\n\t\t\t\tconst b = array[ i + 1 ];\n\t\t\t\tconst c = array[ i + 2 ];\n\n\t\t\t\tindices.push( a, b, b, c, c, a );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst array = geometryPosition.array;\n\t\t\tversion = geometryPosition.version;\n\n\t\t\tfor ( let i = 0, l = ( array.length / 3 ) - 1; i < l; i += 3 ) {\n\n\t\t\t\tconst a = i + 0;\n\t\t\t\tconst b = i + 1;\n\t\t\t\tconst c = i + 2;\n\n\t\t\t\tindices.push( a, b, b, c, c, a );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst attribute = new ( arrayMax( indices ) > 65535 ? Uint32BufferAttribute : Uint16BufferAttribute )( indices, 1 );\n\t\tattribute.version = version;\n\n\t\t// Updating index buffer in VAO now. See WebGLBindingStates\n\n\t\t//\n\n\t\tconst previousAttribute = wireframeAttributes.get( geometry );\n\n\t\tif ( previousAttribute ) attributes.remove( previousAttribute );\n\n\t\t//\n\n\t\twireframeAttributes.set( geometry, attribute );\n\n\t}\n\n\tfunction getWireframeAttribute( geometry ) {\n\n\t\tconst currentAttribute = wireframeAttributes.get( geometry );\n\n\t\tif ( currentAttribute ) {\n\n\t\t\tconst geometryIndex = geometry.index;\n\n\t\t\tif ( geometryIndex !== null ) {\n\n\t\t\t\t// if the attribute is obsolete, create a new one\n\n\t\t\t\tif ( currentAttribute.version < geometryIndex.version ) {\n\n\t\t\t\t\tupdateWireframeAttribute( geometry );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tupdateWireframeAttribute( geometry );\n\n\t\t}\n\n\t\treturn wireframeAttributes.get( geometry );\n\n\t}\n\n\treturn {\n\n\t\tget: get,\n\t\tupdate: update,\n\n\t\tgetWireframeAttribute: getWireframeAttribute\n\n\t};\n\n}\n\nfunction WebGLIndexedBufferRenderer( gl, extensions, info, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\n\tlet mode;\n\n\tfunction setMode( value ) {\n\n\t\tmode = value;\n\n\t}\n\n\tlet type, bytesPerElement;\n\n\tfunction setIndex( value ) {\n\n\t\ttype = value.type;\n\t\tbytesPerElement = value.bytesPerElement;\n\n\t}\n\n\tfunction render( start, count ) {\n\n\t\tgl.drawElements( mode, count, type, start * bytesPerElement );\n\n\t\tinfo.update( count, mode, 1 );\n\n\t}\n\n\tfunction renderInstances( start, count, primcount ) {\n\n\t\tif ( primcount === 0 ) return;\n\n\t\tlet extension, methodName;\n\n\t\tif ( isWebGL2 ) {\n\n\t\t\textension = gl;\n\t\t\tmethodName = 'drawElementsInstanced';\n\n\t\t} else {\n\n\t\t\textension = extensions.get( 'ANGLE_instanced_arrays' );\n\t\t\tmethodName = 'drawElementsInstancedANGLE';\n\n\t\t\tif ( extension === null ) {\n\n\t\t\t\tconsole.error( 'THREE.WebGLIndexedBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\textension[ methodName ]( mode, count, type, start * bytesPerElement, primcount );\n\n\t\tinfo.update( count, mode, primcount );\n\n\t}\n\n\t//\n\n\tthis.setMode = setMode;\n\tthis.setIndex = setIndex;\n\tthis.render = render;\n\tthis.renderInstances = renderInstances;\n\n}\n\nfunction WebGLInfo( gl ) {\n\n\tconst memory = {\n\t\tgeometries: 0,\n\t\ttextures: 0\n\t};\n\n\tconst render = {\n\t\tframe: 0,\n\t\tcalls: 0,\n\t\ttriangles: 0,\n\t\tpoints: 0,\n\t\tlines: 0\n\t};\n\n\tfunction update( count, mode, instanceCount ) {\n\n\t\trender.calls ++;\n\n\t\tswitch ( mode ) {\n\n\t\t\tcase 4:\n\t\t\t\trender.triangles += instanceCount * ( count / 3 );\n\t\t\t\tbreak;\n\n\t\t\tcase 1:\n\t\t\t\trender.lines += instanceCount * ( count / 2 );\n\t\t\t\tbreak;\n\n\t\t\tcase 3:\n\t\t\t\trender.lines += instanceCount * ( count - 1 );\n\t\t\t\tbreak;\n\n\t\t\tcase 2:\n\t\t\t\trender.lines += instanceCount * count;\n\t\t\t\tbreak;\n\n\t\t\tcase 0:\n\t\t\t\trender.points += instanceCount * count;\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tconsole.error( 'THREE.WebGLInfo: Unknown draw mode:', mode );\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\tfunction reset() {\n\n\t\trender.frame ++;\n\t\trender.calls = 0;\n\t\trender.triangles = 0;\n\t\trender.points = 0;\n\t\trender.lines = 0;\n\n\t}\n\n\treturn {\n\t\tmemory: memory,\n\t\trender: render,\n\t\tprograms: null,\n\t\tautoReset: true,\n\t\treset: reset,\n\t\tupdate: update\n\t};\n\n}\n\nfunction numericalSort( a, b ) {\n\n\treturn a[ 0 ] - b[ 0 ];\n\n}\n\nfunction absNumericalSort( a, b ) {\n\n\treturn Math.abs( b[ 1 ] ) - Math.abs( a[ 1 ] );\n\n}\n\nfunction WebGLMorphtargets( gl ) {\n\n\tconst influencesList = {};\n\tconst morphInfluences = new Float32Array( 8 );\n\n\tconst workInfluences = [];\n\n\tfor ( let i = 0; i < 8; i ++ ) {\n\n\t\tworkInfluences[ i ] = [ i, 0 ];\n\n\t}\n\n\tfunction update( object, geometry, material, program ) {\n\n\t\tconst objectInfluences = object.morphTargetInfluences;\n\n\t\t// When object doesn't have morph target influences defined, we treat it as a 0-length array\n\t\t// This is important to make sure we set up morphTargetBaseInfluence / morphTargetInfluences\n\n\t\tconst length = objectInfluences === undefined ? 0 : objectInfluences.length;\n\n\t\tlet influences = influencesList[ geometry.id ];\n\n\t\tif ( influences === undefined ) {\n\n\t\t\t// initialise list\n\n\t\t\tinfluences = [];\n\n\t\t\tfor ( let i = 0; i < length; i ++ ) {\n\n\t\t\t\tinfluences[ i ] = [ i, 0 ];\n\n\t\t\t}\n\n\t\t\tinfluencesList[ geometry.id ] = influences;\n\n\t\t}\n\n\t\t// Collect influences\n\n\t\tfor ( let i = 0; i < length; i ++ ) {\n\n\t\t\tconst influence = influences[ i ];\n\n\t\t\tinfluence[ 0 ] = i;\n\t\t\tinfluence[ 1 ] = objectInfluences[ i ];\n\n\t\t}\n\n\t\tinfluences.sort( absNumericalSort );\n\n\t\tfor ( let i = 0; i < 8; i ++ ) {\n\n\t\t\tif ( i < length && influences[ i ][ 1 ] ) {\n\n\t\t\t\tworkInfluences[ i ][ 0 ] = influences[ i ][ 0 ];\n\t\t\t\tworkInfluences[ i ][ 1 ] = influences[ i ][ 1 ];\n\n\t\t\t} else {\n\n\t\t\t\tworkInfluences[ i ][ 0 ] = Number.MAX_SAFE_INTEGER;\n\t\t\t\tworkInfluences[ i ][ 1 ] = 0;\n\n\t\t\t}\n\n\t\t}\n\n\t\tworkInfluences.sort( numericalSort );\n\n\t\tconst morphTargets = material.morphTargets && geometry.morphAttributes.position;\n\t\tconst morphNormals = material.morphNormals && geometry.morphAttributes.normal;\n\n\t\tlet morphInfluencesSum = 0;\n\n\t\tfor ( let i = 0; i < 8; i ++ ) {\n\n\t\t\tconst influence = workInfluences[ i ];\n\t\t\tconst index = influence[ 0 ];\n\t\t\tconst value = influence[ 1 ];\n\n\t\t\tif ( index !== Number.MAX_SAFE_INTEGER && value ) {\n\n\t\t\t\tif ( morphTargets && geometry.getAttribute( 'morphTarget' + i ) !== morphTargets[ index ] ) {\n\n\t\t\t\t\tgeometry.setAttribute( 'morphTarget' + i, morphTargets[ index ] );\n\n\t\t\t\t}\n\n\t\t\t\tif ( morphNormals && geometry.getAttribute( 'morphNormal' + i ) !== morphNormals[ index ] ) {\n\n\t\t\t\t\tgeometry.setAttribute( 'morphNormal' + i, morphNormals[ index ] );\n\n\t\t\t\t}\n\n\t\t\t\tmorphInfluences[ i ] = value;\n\t\t\t\tmorphInfluencesSum += value;\n\n\t\t\t} else {\n\n\t\t\t\tif ( morphTargets && geometry.getAttribute( 'morphTarget' + i ) !== undefined ) {\n\n\t\t\t\t\tgeometry.deleteAttribute( 'morphTarget' + i );\n\n\t\t\t\t}\n\n\t\t\t\tif ( morphNormals && geometry.getAttribute( 'morphNormal' + i ) !== undefined ) {\n\n\t\t\t\t\tgeometry.deleteAttribute( 'morphNormal' + i );\n\n\t\t\t\t}\n\n\t\t\t\tmorphInfluences[ i ] = 0;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// GLSL shader uses formula baseinfluence * base + sum(target * influence)\n\t\t// This allows us to switch between absolute morphs and relative morphs without changing shader code\n\t\t// When baseinfluence = 1 - sum(influence), the above is equivalent to sum((target - base) * influence)\n\t\tconst morphBaseInfluence = geometry.morphTargetsRelative ? 1 : 1 - morphInfluencesSum;\n\n\t\tprogram.getUniforms().setValue( gl, 'morphTargetBaseInfluence', morphBaseInfluence );\n\t\tprogram.getUniforms().setValue( gl, 'morphTargetInfluences', morphInfluences );\n\n\t}\n\n\treturn {\n\n\t\tupdate: update\n\n\t};\n\n}\n\nfunction WebGLObjects( gl, geometries, attributes, info ) {\n\n\tlet updateMap = new WeakMap();\n\n\tfunction update( object ) {\n\n\t\tconst frame = info.render.frame;\n\n\t\tconst geometry = object.geometry;\n\t\tconst buffergeometry = geometries.get( object, geometry );\n\n\t\t// Update once per frame\n\n\t\tif ( updateMap.get( buffergeometry ) !== frame ) {\n\n\t\t\tif ( geometry.isGeometry ) {\n\n\t\t\t\tbuffergeometry.updateFromObject( object );\n\n\t\t\t}\n\n\t\t\tgeometries.update( buffergeometry );\n\n\t\t\tupdateMap.set( buffergeometry, frame );\n\n\t\t}\n\n\t\tif ( object.isInstancedMesh ) {\n\n\t\t\tattributes.update( object.instanceMatrix, 34962 );\n\n\t\t\tif ( object.instanceColor !== null ) {\n\n\t\t\t\tattributes.update( object.instanceColor, 34962 );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn buffergeometry;\n\n\t}\n\n\tfunction dispose() {\n\n\t\tupdateMap = new WeakMap();\n\n\t}\n\n\treturn {\n\n\t\tupdate: update,\n\t\tdispose: dispose\n\n\t};\n\n}\n\nfunction CubeTexture( images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding ) {\n\n\timages = images !== undefined ? images : [];\n\tmapping = mapping !== undefined ? mapping : CubeReflectionMapping;\n\tformat = format !== undefined ? format : RGBFormat;\n\n\tTexture.call( this, images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding );\n\n\tthis.flipY = false;\n\n}\n\nCubeTexture.prototype = Object.create( Texture.prototype );\nCubeTexture.prototype.constructor = CubeTexture;\n\nCubeTexture.prototype.isCubeTexture = true;\n\nObject.defineProperty( CubeTexture.prototype, 'images', {\n\n\tget: function () {\n\n\t\treturn this.image;\n\n\t},\n\n\tset: function ( value ) {\n\n\t\tthis.image = value;\n\n\t}\n\n} );\n\nfunction DataTexture2DArray( data, width, height, depth ) {\n\n\tTexture.call( this, null );\n\n\tthis.image = { data: data || null, width: width || 1, height: height || 1, depth: depth || 1 };\n\n\tthis.magFilter = NearestFilter;\n\tthis.minFilter = NearestFilter;\n\n\tthis.wrapR = ClampToEdgeWrapping;\n\n\tthis.generateMipmaps = false;\n\tthis.flipY = false;\n\n\tthis.needsUpdate = true;\n\n}\n\nDataTexture2DArray.prototype = Object.create( Texture.prototype );\nDataTexture2DArray.prototype.constructor = DataTexture2DArray;\nDataTexture2DArray.prototype.isDataTexture2DArray = true;\n\nfunction DataTexture3D( data, width, height, depth ) {\n\n\t// We're going to add .setXXX() methods for setting properties later.\n\t// Users can still set in DataTexture3D directly.\n\t//\n\t//\tconst texture = new THREE.DataTexture3D( data, width, height, depth );\n\t// \ttexture.anisotropy = 16;\n\t//\n\t// See #14839\n\n\tTexture.call( this, null );\n\n\tthis.image = { data: data || null, width: width || 1, height: height || 1, depth: depth || 1 };\n\n\tthis.magFilter = NearestFilter;\n\tthis.minFilter = NearestFilter;\n\n\tthis.wrapR = ClampToEdgeWrapping;\n\n\tthis.generateMipmaps = false;\n\tthis.flipY = false;\n\n\tthis.needsUpdate = true;\n\n\n}\n\nDataTexture3D.prototype = Object.create( Texture.prototype );\nDataTexture3D.prototype.constructor = DataTexture3D;\nDataTexture3D.prototype.isDataTexture3D = true;\n\n/**\n * Uniforms of a program.\n * Those form a tree structure with a special top-level container for the root,\n * which you get by calling 'new WebGLUniforms( gl, program )'.\n *\n *\n * Properties of inner nodes including the top-level container:\n *\n * .seq - array of nested uniforms\n * .map - nested uniforms by name\n *\n *\n * Methods of all nodes except the top-level container:\n *\n * .setValue( gl, value, [textures] )\n *\n * \t\tuploads a uniform value(s)\n *  \tthe 'textures' parameter is needed for sampler uniforms\n *\n *\n * Static methods of the top-level container (textures factorizations):\n *\n * .upload( gl, seq, values, textures )\n *\n * \t\tsets uniforms in 'seq' to 'values[id].value'\n *\n * .seqWithValue( seq, values ) : filteredSeq\n *\n * \t\tfilters 'seq' entries with corresponding entry in values\n *\n *\n * Methods of the top-level container (textures factorizations):\n *\n * .setValue( gl, name, value, textures )\n *\n * \t\tsets uniform with  name 'name' to 'value'\n *\n * .setOptional( gl, obj, prop )\n *\n * \t\tlike .set for an optional property of the object\n *\n */\n\nconst emptyTexture = new Texture();\nconst emptyTexture2dArray = new DataTexture2DArray();\nconst emptyTexture3d = new DataTexture3D();\nconst emptyCubeTexture = new CubeTexture();\n\n// --- Utilities ---\n\n// Array Caches (provide typed arrays for temporary by size)\n\nconst arrayCacheF32 = [];\nconst arrayCacheI32 = [];\n\n// Float32Array caches used for uploading Matrix uniforms\n\nconst mat4array = new Float32Array( 16 );\nconst mat3array = new Float32Array( 9 );\nconst mat2array = new Float32Array( 4 );\n\n// Flattening for arrays of vectors and matrices\n\nfunction flatten( array, nBlocks, blockSize ) {\n\n\tconst firstElem = array[ 0 ];\n\n\tif ( firstElem <= 0 || firstElem > 0 ) return array;\n\t// unoptimized: ! isNaN( firstElem )\n\t// see http://jacksondunstan.com/articles/983\n\n\tconst n = nBlocks * blockSize;\n\tlet r = arrayCacheF32[ n ];\n\n\tif ( r === undefined ) {\n\n\t\tr = new Float32Array( n );\n\t\tarrayCacheF32[ n ] = r;\n\n\t}\n\n\tif ( nBlocks !== 0 ) {\n\n\t\tfirstElem.toArray( r, 0 );\n\n\t\tfor ( let i = 1, offset = 0; i !== nBlocks; ++ i ) {\n\n\t\t\toffset += blockSize;\n\t\t\tarray[ i ].toArray( r, offset );\n\n\t\t}\n\n\t}\n\n\treturn r;\n\n}\n\nfunction arraysEqual( a, b ) {\n\n\tif ( a.length !== b.length ) return false;\n\n\tfor ( let i = 0, l = a.length; i < l; i ++ ) {\n\n\t\tif ( a[ i ] !== b[ i ] ) return false;\n\n\t}\n\n\treturn true;\n\n}\n\nfunction copyArray( a, b ) {\n\n\tfor ( let i = 0, l = b.length; i < l; i ++ ) {\n\n\t\ta[ i ] = b[ i ];\n\n\t}\n\n}\n\n// Texture unit allocation\n\nfunction allocTexUnits( textures, n ) {\n\n\tlet r = arrayCacheI32[ n ];\n\n\tif ( r === undefined ) {\n\n\t\tr = new Int32Array( n );\n\t\tarrayCacheI32[ n ] = r;\n\n\t}\n\n\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\tr[ i ] = textures.allocateTextureUnit();\n\n\t}\n\n\treturn r;\n\n}\n\n// --- Setters ---\n\n// Note: Defining these methods externally, because they come in a bunch\n// and this way their names minify.\n\n// Single scalar\n\nfunction setValueV1f( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( cache[ 0 ] === v ) return;\n\n\tgl.uniform1f( this.addr, v );\n\n\tcache[ 0 ] = v;\n\n}\n\n// Single float vector (from flat array or THREE.VectorN)\n\nfunction setValueV2f( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y ) {\n\n\t\t\tgl.uniform2f( this.addr, v.x, v.y );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform2fv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\nfunction setValueV3f( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z ) {\n\n\t\t\tgl.uniform3f( this.addr, v.x, v.y, v.z );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\t\t\tcache[ 2 ] = v.z;\n\n\t\t}\n\n\t} else if ( v.r !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.r || cache[ 1 ] !== v.g || cache[ 2 ] !== v.b ) {\n\n\t\t\tgl.uniform3f( this.addr, v.r, v.g, v.b );\n\n\t\t\tcache[ 0 ] = v.r;\n\t\t\tcache[ 1 ] = v.g;\n\t\t\tcache[ 2 ] = v.b;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform3fv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\nfunction setValueV4f( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z || cache[ 3 ] !== v.w ) {\n\n\t\t\tgl.uniform4f( this.addr, v.x, v.y, v.z, v.w );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\t\t\tcache[ 2 ] = v.z;\n\t\t\tcache[ 3 ] = v.w;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform4fv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\n// Single matrix (from flat array or MatrixN)\n\nfunction setValueM2( gl, v ) {\n\n\tconst cache = this.cache;\n\tconst elements = v.elements;\n\n\tif ( elements === undefined ) {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniformMatrix2fv( this.addr, false, v );\n\n\t\tcopyArray( cache, v );\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, elements ) ) return;\n\n\t\tmat2array.set( elements );\n\n\t\tgl.uniformMatrix2fv( this.addr, false, mat2array );\n\n\t\tcopyArray( cache, elements );\n\n\t}\n\n}\n\nfunction setValueM3( gl, v ) {\n\n\tconst cache = this.cache;\n\tconst elements = v.elements;\n\n\tif ( elements === undefined ) {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniformMatrix3fv( this.addr, false, v );\n\n\t\tcopyArray( cache, v );\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, elements ) ) return;\n\n\t\tmat3array.set( elements );\n\n\t\tgl.uniformMatrix3fv( this.addr, false, mat3array );\n\n\t\tcopyArray( cache, elements );\n\n\t}\n\n}\n\nfunction setValueM4( gl, v ) {\n\n\tconst cache = this.cache;\n\tconst elements = v.elements;\n\n\tif ( elements === undefined ) {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniformMatrix4fv( this.addr, false, v );\n\n\t\tcopyArray( cache, v );\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, elements ) ) return;\n\n\t\tmat4array.set( elements );\n\n\t\tgl.uniformMatrix4fv( this.addr, false, mat4array );\n\n\t\tcopyArray( cache, elements );\n\n\t}\n\n}\n\n// Single texture (2D / Cube)\n\nfunction setValueT1( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\tconst unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\ttextures.safeSetTexture2D( v || emptyTexture, unit );\n\n}\n\nfunction setValueT2DArray1( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\tconst unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\ttextures.setTexture2DArray( v || emptyTexture2dArray, unit );\n\n}\n\nfunction setValueT3D1( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\tconst unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\ttextures.setTexture3D( v || emptyTexture3d, unit );\n\n}\n\nfunction setValueT6( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\tconst unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\ttextures.safeSetTextureCube( v || emptyCubeTexture, unit );\n\n}\n\n// Integer / Boolean vectors or arrays thereof (always flat arrays)\n\nfunction setValueV1i( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( cache[ 0 ] === v ) return;\n\n\tgl.uniform1i( this.addr, v );\n\n\tcache[ 0 ] = v;\n\n}\n\nfunction setValueV2i( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( arraysEqual( cache, v ) ) return;\n\n\tgl.uniform2iv( this.addr, v );\n\n\tcopyArray( cache, v );\n\n}\n\nfunction setValueV3i( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( arraysEqual( cache, v ) ) return;\n\n\tgl.uniform3iv( this.addr, v );\n\n\tcopyArray( cache, v );\n\n}\n\nfunction setValueV4i( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( arraysEqual( cache, v ) ) return;\n\n\tgl.uniform4iv( this.addr, v );\n\n\tcopyArray( cache, v );\n\n}\n\n// uint\n\nfunction setValueV1ui( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( cache[ 0 ] === v ) return;\n\n\tgl.uniform1ui( this.addr, v );\n\n\tcache[ 0 ] = v;\n\n}\n\n// Helper to pick the right setter for the singular case\n\nfunction getSingularSetter( type ) {\n\n\tswitch ( type ) {\n\n\t\tcase 0x1406: return setValueV1f; // FLOAT\n\t\tcase 0x8b50: return setValueV2f; // _VEC2\n\t\tcase 0x8b51: return setValueV3f; // _VEC3\n\t\tcase 0x8b52: return setValueV4f; // _VEC4\n\n\t\tcase 0x8b5a: return setValueM2; // _MAT2\n\t\tcase 0x8b5b: return setValueM3; // _MAT3\n\t\tcase 0x8b5c: return setValueM4; // _MAT4\n\n\t\tcase 0x1404: case 0x8b56: return setValueV1i; // INT, BOOL\n\t\tcase 0x8b53: case 0x8b57: return setValueV2i; // _VEC2\n\t\tcase 0x8b54: case 0x8b58: return setValueV3i; // _VEC3\n\t\tcase 0x8b55: case 0x8b59: return setValueV4i; // _VEC4\n\n\t\tcase 0x1405: return setValueV1ui; // UINT\n\n\t\tcase 0x8b5e: // SAMPLER_2D\n\t\tcase 0x8d66: // SAMPLER_EXTERNAL_OES\n\t\tcase 0x8dca: // INT_SAMPLER_2D\n\t\tcase 0x8dd2: // UNSIGNED_INT_SAMPLER_2D\n\t\tcase 0x8b62: // SAMPLER_2D_SHADOW\n\t\t\treturn setValueT1;\n\n\t\tcase 0x8b5f: // SAMPLER_3D\n\t\tcase 0x8dcb: // INT_SAMPLER_3D\n\t\tcase 0x8dd3: // UNSIGNED_INT_SAMPLER_3D\n\t\t\treturn setValueT3D1;\n\n\t\tcase 0x8b60: // SAMPLER_CUBE\n\t\tcase 0x8dcc: // INT_SAMPLER_CUBE\n\t\tcase 0x8dd4: // UNSIGNED_INT_SAMPLER_CUBE\n\t\tcase 0x8dc5: // SAMPLER_CUBE_SHADOW\n\t\t\treturn setValueT6;\n\n\t\tcase 0x8dc1: // SAMPLER_2D_ARRAY\n\t\tcase 0x8dcf: // INT_SAMPLER_2D_ARRAY\n\t\tcase 0x8dd7: // UNSIGNED_INT_SAMPLER_2D_ARRAY\n\t\tcase 0x8dc4: // SAMPLER_2D_ARRAY_SHADOW\n\t\t\treturn setValueT2DArray1;\n\n\t}\n\n}\n\n// Array of scalars\nfunction setValueV1fArray( gl, v ) {\n\n\tgl.uniform1fv( this.addr, v );\n\n}\n\n// Integer / Boolean vectors or arrays thereof (always flat arrays)\nfunction setValueV1iArray( gl, v ) {\n\n\tgl.uniform1iv( this.addr, v );\n\n}\n\nfunction setValueV2iArray( gl, v ) {\n\n\tgl.uniform2iv( this.addr, v );\n\n}\n\nfunction setValueV3iArray( gl, v ) {\n\n\tgl.uniform3iv( this.addr, v );\n\n}\n\nfunction setValueV4iArray( gl, v ) {\n\n\tgl.uniform4iv( this.addr, v );\n\n}\n\n\n// Array of vectors (flat or from THREE classes)\n\nfunction setValueV2fArray( gl, v ) {\n\n\tconst data = flatten( v, this.size, 2 );\n\n\tgl.uniform2fv( this.addr, data );\n\n}\n\nfunction setValueV3fArray( gl, v ) {\n\n\tconst data = flatten( v, this.size, 3 );\n\n\tgl.uniform3fv( this.addr, data );\n\n}\n\nfunction setValueV4fArray( gl, v ) {\n\n\tconst data = flatten( v, this.size, 4 );\n\n\tgl.uniform4fv( this.addr, data );\n\n}\n\n// Array of matrices (flat or from THREE clases)\n\nfunction setValueM2Array( gl, v ) {\n\n\tconst data = flatten( v, this.size, 4 );\n\n\tgl.uniformMatrix2fv( this.addr, false, data );\n\n}\n\nfunction setValueM3Array( gl, v ) {\n\n\tconst data = flatten( v, this.size, 9 );\n\n\tgl.uniformMatrix3fv( this.addr, false, data );\n\n}\n\nfunction setValueM4Array( gl, v ) {\n\n\tconst data = flatten( v, this.size, 16 );\n\n\tgl.uniformMatrix4fv( this.addr, false, data );\n\n}\n\n// Array of textures (2D / Cube)\n\nfunction setValueT1Array( gl, v, textures ) {\n\n\tconst n = v.length;\n\n\tconst units = allocTexUnits( textures, n );\n\n\tgl.uniform1iv( this.addr, units );\n\n\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\ttextures.safeSetTexture2D( v[ i ] || emptyTexture, units[ i ] );\n\n\t}\n\n}\n\nfunction setValueT6Array( gl, v, textures ) {\n\n\tconst n = v.length;\n\n\tconst units = allocTexUnits( textures, n );\n\n\tgl.uniform1iv( this.addr, units );\n\n\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\ttextures.safeSetTextureCube( v[ i ] || emptyCubeTexture, units[ i ] );\n\n\t}\n\n}\n\n// Helper to pick the right setter for a pure (bottom-level) array\n\nfunction getPureArraySetter( type ) {\n\n\tswitch ( type ) {\n\n\t\tcase 0x1406: return setValueV1fArray; // FLOAT\n\t\tcase 0x8b50: return setValueV2fArray; // _VEC2\n\t\tcase 0x8b51: return setValueV3fArray; // _VEC3\n\t\tcase 0x8b52: return setValueV4fArray; // _VEC4\n\n\t\tcase 0x8b5a: return setValueM2Array; // _MAT2\n\t\tcase 0x8b5b: return setValueM3Array; // _MAT3\n\t\tcase 0x8b5c: return setValueM4Array; // _MAT4\n\n\t\tcase 0x1404: case 0x8b56: return setValueV1iArray; // INT, BOOL\n\t\tcase 0x8b53: case 0x8b57: return setValueV2iArray; // _VEC2\n\t\tcase 0x8b54: case 0x8b58: return setValueV3iArray; // _VEC3\n\t\tcase 0x8b55: case 0x8b59: return setValueV4iArray; // _VEC4\n\n\t\tcase 0x8b5e: // SAMPLER_2D\n\t\tcase 0x8d66: // SAMPLER_EXTERNAL_OES\n\t\tcase 0x8dca: // INT_SAMPLER_2D\n\t\tcase 0x8dd2: // UNSIGNED_INT_SAMPLER_2D\n\t\tcase 0x8b62: // SAMPLER_2D_SHADOW\n\t\t\treturn setValueT1Array;\n\n\t\tcase 0x8b60: // SAMPLER_CUBE\n\t\tcase 0x8dcc: // INT_SAMPLER_CUBE\n\t\tcase 0x8dd4: // UNSIGNED_INT_SAMPLER_CUBE\n\t\tcase 0x8dc5: // SAMPLER_CUBE_SHADOW\n\t\t\treturn setValueT6Array;\n\n\t}\n\n}\n\n// --- Uniform Classes ---\n\nfunction SingleUniform( id, activeInfo, addr ) {\n\n\tthis.id = id;\n\tthis.addr = addr;\n\tthis.cache = [];\n\tthis.setValue = getSingularSetter( activeInfo.type );\n\n\t// this.path = activeInfo.name; // DEBUG\n\n}\n\nfunction PureArrayUniform( id, activeInfo, addr ) {\n\n\tthis.id = id;\n\tthis.addr = addr;\n\tthis.cache = [];\n\tthis.size = activeInfo.size;\n\tthis.setValue = getPureArraySetter( activeInfo.type );\n\n\t// this.path = activeInfo.name; // DEBUG\n\n}\n\nPureArrayUniform.prototype.updateCache = function ( data ) {\n\n\tconst cache = this.cache;\n\n\tif ( data instanceof Float32Array && cache.length !== data.length ) {\n\n\t\tthis.cache = new Float32Array( data.length );\n\n\t}\n\n\tcopyArray( cache, data );\n\n};\n\nfunction StructuredUniform( id ) {\n\n\tthis.id = id;\n\n\tthis.seq = [];\n\tthis.map = {};\n\n}\n\nStructuredUniform.prototype.setValue = function ( gl, value, textures ) {\n\n\tconst seq = this.seq;\n\n\tfor ( let i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\tconst u = seq[ i ];\n\t\tu.setValue( gl, value[ u.id ], textures );\n\n\t}\n\n};\n\n// --- Top-level ---\n\n// Parser - builds up the property tree from the path strings\n\nconst RePathPart = /([\\w\\d_]+)(\\])?(\\[|\\.)?/g;\n\n// extracts\n// \t- the identifier (member name or array index)\n//  - followed by an optional right bracket (found when array index)\n//  - followed by an optional left bracket or dot (type of subscript)\n//\n// Note: These portions can be read in a non-overlapping fashion and\n// allow straightforward parsing of the hierarchy that WebGL encodes\n// in the uniform names.\n\nfunction addUniform( container, uniformObject ) {\n\n\tcontainer.seq.push( uniformObject );\n\tcontainer.map[ uniformObject.id ] = uniformObject;\n\n}\n\nfunction parseUniform( activeInfo, addr, container ) {\n\n\tconst path = activeInfo.name,\n\t\tpathLength = path.length;\n\n\t// reset RegExp object, because of the early exit of a previous run\n\tRePathPart.lastIndex = 0;\n\n\twhile ( true ) {\n\n\t\tconst match = RePathPart.exec( path ),\n\t\t\tmatchEnd = RePathPart.lastIndex;\n\n\t\tlet id = match[ 1 ];\n\t\tconst idIsIndex = match[ 2 ] === ']',\n\t\t\tsubscript = match[ 3 ];\n\n\t\tif ( idIsIndex ) id = id | 0; // convert to integer\n\n\t\tif ( subscript === undefined || subscript === '[' && matchEnd + 2 === pathLength ) {\n\n\t\t\t// bare name or \"pure\" bottom-level array \"[0]\" suffix\n\n\t\t\taddUniform( container, subscript === undefined ?\n\t\t\t\tnew SingleUniform( id, activeInfo, addr ) :\n\t\t\t\tnew PureArrayUniform( id, activeInfo, addr ) );\n\n\t\t\tbreak;\n\n\t\t} else {\n\n\t\t\t// step into inner node / create it in case it doesn't exist\n\n\t\t\tconst map = container.map;\n\t\t\tlet next = map[ id ];\n\n\t\t\tif ( next === undefined ) {\n\n\t\t\t\tnext = new StructuredUniform( id );\n\t\t\t\taddUniform( container, next );\n\n\t\t\t}\n\n\t\t\tcontainer = next;\n\n\t\t}\n\n\t}\n\n}\n\n// Root Container\n\nfunction WebGLUniforms( gl, program ) {\n\n\tthis.seq = [];\n\tthis.map = {};\n\n\tconst n = gl.getProgramParameter( program, 35718 );\n\n\tfor ( let i = 0; i < n; ++ i ) {\n\n\t\tconst info = gl.getActiveUniform( program, i ),\n\t\t\taddr = gl.getUniformLocation( program, info.name );\n\n\t\tparseUniform( info, addr, this );\n\n\t}\n\n}\n\nWebGLUniforms.prototype.setValue = function ( gl, name, value, textures ) {\n\n\tconst u = this.map[ name ];\n\n\tif ( u !== undefined ) u.setValue( gl, value, textures );\n\n};\n\nWebGLUniforms.prototype.setOptional = function ( gl, object, name ) {\n\n\tconst v = object[ name ];\n\n\tif ( v !== undefined ) this.setValue( gl, name, v );\n\n};\n\n\n// Static interface\n\nWebGLUniforms.upload = function ( gl, seq, values, textures ) {\n\n\tfor ( let i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\tconst u = seq[ i ],\n\t\t\tv = values[ u.id ];\n\n\t\tif ( v.needsUpdate !== false ) {\n\n\t\t\t// note: always updating when .needsUpdate is undefined\n\t\t\tu.setValue( gl, v.value, textures );\n\n\t\t}\n\n\t}\n\n};\n\nWebGLUniforms.seqWithValue = function ( seq, values ) {\n\n\tconst r = [];\n\n\tfor ( let i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\tconst u = seq[ i ];\n\t\tif ( u.id in values ) r.push( u );\n\n\t}\n\n\treturn r;\n\n};\n\nfunction WebGLShader( gl, type, string ) {\n\n\tconst shader = gl.createShader( type );\n\n\tgl.shaderSource( shader, string );\n\tgl.compileShader( shader );\n\n\treturn shader;\n\n}\n\nlet programIdCount = 0;\n\nfunction addLineNumbers( string ) {\n\n\tconst lines = string.split( '\\n' );\n\n\tfor ( let i = 0; i < lines.length; i ++ ) {\n\n\t\tlines[ i ] = ( i + 1 ) + ': ' + lines[ i ];\n\n\t}\n\n\treturn lines.join( '\\n' );\n\n}\n\nfunction getEncodingComponents( encoding ) {\n\n\tswitch ( encoding ) {\n\n\t\tcase LinearEncoding:\n\t\t\treturn [ 'Linear', '( value )' ];\n\t\tcase sRGBEncoding:\n\t\t\treturn [ 'sRGB', '( value )' ];\n\t\tcase RGBEEncoding:\n\t\t\treturn [ 'RGBE', '( value )' ];\n\t\tcase RGBM7Encoding:\n\t\t\treturn [ 'RGBM', '( value, 7.0 )' ];\n\t\tcase RGBM16Encoding:\n\t\t\treturn [ 'RGBM', '( value, 16.0 )' ];\n\t\tcase RGBDEncoding:\n\t\t\treturn [ 'RGBD', '( value, 256.0 )' ];\n\t\tcase GammaEncoding:\n\t\t\treturn [ 'Gamma', '( value, float( GAMMA_FACTOR ) )' ];\n\t\tcase LogLuvEncoding:\n\t\t\treturn [ 'LogLuv', '( value )' ];\n\t\tdefault:\n\t\t\tconsole.warn( 'THREE.WebGLProgram: Unsupported encoding:', encoding );\n\t\t\treturn [ 'Linear', '( value )' ];\n\n\t}\n\n}\n\nfunction getShaderErrors( gl, shader, type ) {\n\n\tconst status = gl.getShaderParameter( shader, 35713 );\n\tconst log = gl.getShaderInfoLog( shader ).trim();\n\n\tif ( status && log === '' ) return '';\n\n\t// --enable-privileged-webgl-extension\n\t// console.log( '**' + type + '**', gl.getExtension( 'WEBGL_debug_shaders' ).getTranslatedShaderSource( shader ) );\n\n\tconst source = gl.getShaderSource( shader );\n\n\treturn 'THREE.WebGLShader: gl.getShaderInfoLog() ' + type + '\\n' + log + addLineNumbers( source );\n\n}\n\nfunction getTexelDecodingFunction( functionName, encoding ) {\n\n\tconst components = getEncodingComponents( encoding );\n\treturn 'vec4 ' + functionName + '( vec4 value ) { return ' + components[ 0 ] + 'ToLinear' + components[ 1 ] + '; }';\n\n}\n\nfunction getTexelEncodingFunction( functionName, encoding ) {\n\n\tconst components = getEncodingComponents( encoding );\n\treturn 'vec4 ' + functionName + '( vec4 value ) { return LinearTo' + components[ 0 ] + components[ 1 ] + '; }';\n\n}\n\nfunction getToneMappingFunction( functionName, toneMapping ) {\n\n\tlet toneMappingName;\n\n\tswitch ( toneMapping ) {\n\n\t\tcase LinearToneMapping:\n\t\t\ttoneMappingName = 'Linear';\n\t\t\tbreak;\n\n\t\tcase ReinhardToneMapping:\n\t\t\ttoneMappingName = 'Reinhard';\n\t\t\tbreak;\n\n\t\tcase CineonToneMapping:\n\t\t\ttoneMappingName = 'OptimizedCineon';\n\t\t\tbreak;\n\n\t\tcase ACESFilmicToneMapping:\n\t\t\ttoneMappingName = 'ACESFilmic';\n\t\t\tbreak;\n\n\t\tcase CustomToneMapping:\n\t\t\ttoneMappingName = 'Custom';\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tconsole.warn( 'THREE.WebGLProgram: Unsupported toneMapping:', toneMapping );\n\t\t\ttoneMappingName = 'Linear';\n\n\t}\n\n\treturn 'vec3 ' + functionName + '( vec3 color ) { return ' + toneMappingName + 'ToneMapping( color ); }';\n\n}\n\nfunction generateExtensions( parameters ) {\n\n\tconst chunks = [\n\t\t( parameters.extensionDerivatives || parameters.envMapCubeUV || parameters.bumpMap || parameters.tangentSpaceNormalMap || parameters.clearcoatNormalMap || parameters.flatShading || parameters.shaderID === 'physical' ) ? '#extension GL_OES_standard_derivatives : enable' : '',\n\t\t( parameters.extensionFragDepth || parameters.logarithmicDepthBuffer ) && parameters.rendererExtensionFragDepth ? '#extension GL_EXT_frag_depth : enable' : '',\n\t\t( parameters.extensionDrawBuffers && parameters.rendererExtensionDrawBuffers ) ? '#extension GL_EXT_draw_buffers : require' : '',\n\t\t( parameters.extensionShaderTextureLOD || parameters.envMap ) && parameters.rendererExtensionShaderTextureLod ? '#extension GL_EXT_shader_texture_lod : enable' : ''\n\t];\n\n\treturn chunks.filter( filterEmptyLine ).join( '\\n' );\n\n}\n\nfunction generateDefines( defines ) {\n\n\tconst chunks = [];\n\n\tfor ( const name in defines ) {\n\n\t\tconst value = defines[ name ];\n\n\t\tif ( value === false ) continue;\n\n\t\tchunks.push( '#define ' + name + ' ' + value );\n\n\t}\n\n\treturn chunks.join( '\\n' );\n\n}\n\nfunction fetchAttributeLocations( gl, program ) {\n\n\tconst attributes = {};\n\n\tconst n = gl.getProgramParameter( program, 35721 );\n\n\tfor ( let i = 0; i < n; i ++ ) {\n\n\t\tconst info = gl.getActiveAttrib( program, i );\n\t\tconst name = info.name;\n\n\t\t// console.log( 'THREE.WebGLProgram: ACTIVE VERTEX ATTRIBUTE:', name, i );\n\n\t\tattributes[ name ] = gl.getAttribLocation( program, name );\n\n\t}\n\n\treturn attributes;\n\n}\n\nfunction filterEmptyLine( string ) {\n\n\treturn string !== '';\n\n}\n\nfunction replaceLightNums( string, parameters ) {\n\n\treturn string\n\t\t.replace( /NUM_DIR_LIGHTS/g, parameters.numDirLights )\n\t\t.replace( /NUM_SPOT_LIGHTS/g, parameters.numSpotLights )\n\t\t.replace( /NUM_RECT_AREA_LIGHTS/g, parameters.numRectAreaLights )\n\t\t.replace( /NUM_POINT_LIGHTS/g, parameters.numPointLights )\n\t\t.replace( /NUM_HEMI_LIGHTS/g, parameters.numHemiLights )\n\t\t.replace( /NUM_DIR_LIGHT_SHADOWS/g, parameters.numDirLightShadows )\n\t\t.replace( /NUM_SPOT_LIGHT_SHADOWS/g, parameters.numSpotLightShadows )\n\t\t.replace( /NUM_POINT_LIGHT_SHADOWS/g, parameters.numPointLightShadows );\n\n}\n\nfunction replaceClippingPlaneNums( string, parameters ) {\n\n\treturn string\n\t\t.replace( /NUM_CLIPPING_PLANES/g, parameters.numClippingPlanes )\n\t\t.replace( /UNION_CLIPPING_PLANES/g, ( parameters.numClippingPlanes - parameters.numClipIntersection ) );\n\n}\n\n// Resolve Includes\n\nconst includePattern = /^[ \\t]*#include +<([\\w\\d./]+)>/gm;\n\nfunction resolveIncludes( string ) {\n\n\treturn string.replace( includePattern, includeReplacer );\n\n}\n\nfunction includeReplacer( match, include ) {\n\n\tconst string = ShaderChunk[ include ];\n\n\tif ( string === undefined ) {\n\n\t\tthrow new Error( 'Can not resolve #include <' + include + '>' );\n\n\t}\n\n\treturn resolveIncludes( string );\n\n}\n\n// Unroll Loops\n\nconst deprecatedUnrollLoopPattern = /#pragma unroll_loop[\\s]+?for \\( int i \\= (\\d+)\\; i < (\\d+)\\; i \\+\\+ \\) \\{([\\s\\S]+?)(?=\\})\\}/g;\nconst unrollLoopPattern = /#pragma unroll_loop_start\\s+for\\s*\\(\\s*int\\s+i\\s*=\\s*(\\d+)\\s*;\\s*i\\s*<\\s*(\\d+)\\s*;\\s*i\\s*\\+\\+\\s*\\)\\s*{([\\s\\S]+?)}\\s+#pragma unroll_loop_end/g;\n\nfunction unrollLoops( string ) {\n\n\treturn string\n\t\t.replace( unrollLoopPattern, loopReplacer )\n\t\t.replace( deprecatedUnrollLoopPattern, deprecatedLoopReplacer );\n\n}\n\nfunction deprecatedLoopReplacer( match, start, end, snippet ) {\n\n\tconsole.warn( 'WebGLProgram: #pragma unroll_loop shader syntax is deprecated. Please use #pragma unroll_loop_start syntax instead.' );\n\treturn loopReplacer( match, start, end, snippet );\n\n}\n\nfunction loopReplacer( match, start, end, snippet ) {\n\n\tlet string = '';\n\n\tfor ( let i = parseInt( start ); i < parseInt( end ); i ++ ) {\n\n\t\tstring += snippet\n\t\t\t.replace( /\\[\\s*i\\s*\\]/g, '[ ' + i + ' ]' )\n\t\t\t.replace( /UNROLLED_LOOP_INDEX/g, i );\n\n\t}\n\n\treturn string;\n\n}\n\n//\n\nfunction generatePrecision( parameters ) {\n\n\tlet precisionstring = \"precision \" + parameters.precision + \" float;\\nprecision \" + parameters.precision + \" int;\";\n\n\tif ( parameters.precision === \"highp\" ) {\n\n\t\tprecisionstring += \"\\n#define HIGH_PRECISION\";\n\n\t} else if ( parameters.precision === \"mediump\" ) {\n\n\t\tprecisionstring += \"\\n#define MEDIUM_PRECISION\";\n\n\t} else if ( parameters.precision === \"lowp\" ) {\n\n\t\tprecisionstring += \"\\n#define LOW_PRECISION\";\n\n\t}\n\n\treturn precisionstring;\n\n}\n\nfunction generateShadowMapTypeDefine( parameters ) {\n\n\tlet shadowMapTypeDefine = 'SHADOWMAP_TYPE_BASIC';\n\n\tif ( parameters.shadowMapType === PCFShadowMap ) {\n\n\t\tshadowMapTypeDefine = 'SHADOWMAP_TYPE_PCF';\n\n\t} else if ( parameters.shadowMapType === PCFSoftShadowMap ) {\n\n\t\tshadowMapTypeDefine = 'SHADOWMAP_TYPE_PCF_SOFT';\n\n\t} else if ( parameters.shadowMapType === VSMShadowMap ) {\n\n\t\tshadowMapTypeDefine = 'SHADOWMAP_TYPE_VSM';\n\n\t}\n\n\treturn shadowMapTypeDefine;\n\n}\n\nfunction generateEnvMapTypeDefine( parameters ) {\n\n\tlet envMapTypeDefine = 'ENVMAP_TYPE_CUBE';\n\n\tif ( parameters.envMap ) {\n\n\t\tswitch ( parameters.envMapMode ) {\n\n\t\t\tcase CubeReflectionMapping:\n\t\t\tcase CubeRefractionMapping:\n\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_CUBE';\n\t\t\t\tbreak;\n\n\t\t\tcase CubeUVReflectionMapping:\n\t\t\tcase CubeUVRefractionMapping:\n\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_CUBE_UV';\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\treturn envMapTypeDefine;\n\n}\n\nfunction generateEnvMapModeDefine( parameters ) {\n\n\tlet envMapModeDefine = 'ENVMAP_MODE_REFLECTION';\n\n\tif ( parameters.envMap ) {\n\n\t\tswitch ( parameters.envMapMode ) {\n\n\t\t\tcase CubeRefractionMapping:\n\t\t\tcase CubeUVRefractionMapping:\n\n\t\t\t\tenvMapModeDefine = 'ENVMAP_MODE_REFRACTION';\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\treturn envMapModeDefine;\n\n}\n\nfunction generateEnvMapBlendingDefine( parameters ) {\n\n\tlet envMapBlendingDefine = 'ENVMAP_BLENDING_NONE';\n\n\tif ( parameters.envMap ) {\n\n\t\tswitch ( parameters.combine ) {\n\n\t\t\tcase MultiplyOperation:\n\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_MULTIPLY';\n\t\t\t\tbreak;\n\n\t\t\tcase MixOperation:\n\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_MIX';\n\t\t\t\tbreak;\n\n\t\t\tcase AddOperation:\n\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_ADD';\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\treturn envMapBlendingDefine;\n\n}\n\nfunction WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {\n\n\tconst gl = renderer.getContext();\n\n\tconst defines = parameters.defines;\n\n\tlet vertexShader = parameters.vertexShader;\n\tlet fragmentShader = parameters.fragmentShader;\n\n\tconst shadowMapTypeDefine = generateShadowMapTypeDefine( parameters );\n\tconst envMapTypeDefine = generateEnvMapTypeDefine( parameters );\n\tconst envMapModeDefine = generateEnvMapModeDefine( parameters );\n\tconst envMapBlendingDefine = generateEnvMapBlendingDefine( parameters );\n\n\n\tconst gammaFactorDefine = ( renderer.gammaFactor > 0 ) ? renderer.gammaFactor : 1.0;\n\n\tconst customExtensions = parameters.isWebGL2 ? '' : generateExtensions( parameters );\n\n\tconst customDefines = generateDefines( defines );\n\n\tconst program = gl.createProgram();\n\n\tlet prefixVertex, prefixFragment;\n\tlet versionString = parameters.glslVersion ? '#version ' + parameters.glslVersion + \"\\n\" : '';\n\n\tif ( parameters.isRawShaderMaterial ) {\n\n\t\tprefixVertex = [\n\n\t\t\tcustomDefines\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t\tif ( prefixVertex.length > 0 ) {\n\n\t\t\tprefixVertex += '\\n';\n\n\t\t}\n\n\t\tprefixFragment = [\n\n\t\t\tcustomExtensions,\n\t\t\tcustomDefines\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t\tif ( prefixFragment.length > 0 ) {\n\n\t\t\tprefixFragment += '\\n';\n\n\t\t}\n\n\t} else {\n\n\t\tprefixVertex = [\n\n\t\t\tgeneratePrecision( parameters ),\n\n\t\t\t'#define SHADER_NAME ' + parameters.shaderName,\n\n\t\t\tcustomDefines,\n\n\t\t\tparameters.instancing ? '#define USE_INSTANCING' : '',\n\t\t\tparameters.instancingColor ? '#define USE_INSTANCING_COLOR' : '',\n\n\t\t\tparameters.supportsVertexTextures ? '#define VERTEX_TEXTURES' : '',\n\n\t\t\t'#define GAMMA_FACTOR ' + gammaFactorDefine,\n\n\t\t\t'#define MAX_BONES ' + parameters.maxBones,\n\t\t\t( parameters.useFog && parameters.fog ) ? '#define USE_FOG' : '',\n\t\t\t( parameters.useFog && parameters.fogExp2 ) ? '#define FOG_EXP2' : '',\n\n\t\t\tparameters.map ? '#define USE_MAP' : '',\n\t\t\tparameters.envMap ? '#define USE_ENVMAP' : '',\n\t\t\tparameters.envMap ? '#define ' + envMapModeDefine : '',\n\t\t\tparameters.lightMap ? '#define USE_LIGHTMAP' : '',\n\t\t\tparameters.aoMap ? '#define USE_AOMAP' : '',\n\t\t\tparameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '',\n\t\t\tparameters.bumpMap ? '#define USE_BUMPMAP' : '',\n\t\t\tparameters.normalMap ? '#define USE_NORMALMAP' : '',\n\t\t\t( parameters.normalMap && parameters.objectSpaceNormalMap ) ? '#define OBJECTSPACE_NORMALMAP' : '',\n\t\t\t( parameters.normalMap && parameters.tangentSpaceNormalMap ) ? '#define TANGENTSPACE_NORMALMAP' : '',\n\n\t\t\tparameters.clearcoatMap ? '#define USE_CLEARCOATMAP' : '',\n\t\t\tparameters.clearcoatRoughnessMap ? '#define USE_CLEARCOAT_ROUGHNESSMAP' : '',\n\t\t\tparameters.clearcoatNormalMap ? '#define USE_CLEARCOAT_NORMALMAP' : '',\n\t\t\tparameters.displacementMap && parameters.supportsVertexTextures ? '#define USE_DISPLACEMENTMAP' : '',\n\t\t\tparameters.specularMap ? '#define USE_SPECULARMAP' : '',\n\t\t\tparameters.roughnessMap ? '#define USE_ROUGHNESSMAP' : '',\n\t\t\tparameters.metalnessMap ? '#define USE_METALNESSMAP' : '',\n\t\t\tparameters.alphaMap ? '#define USE_ALPHAMAP' : '',\n\t\t\tparameters.transmissionMap ? '#define USE_TRANSMISSIONMAP' : '',\n\n\t\t\tparameters.vertexTangents ? '#define USE_TANGENT' : '',\n\t\t\tparameters.vertexColors ? '#define USE_COLOR' : '',\n\t\t\tparameters.vertexUvs ? '#define USE_UV' : '',\n\t\t\tparameters.uvsVertexOnly ? '#define UVS_VERTEX_ONLY' : '',\n\n\t\t\tparameters.flatShading ? '#define FLAT_SHADED' : '',\n\n\t\t\tparameters.skinning ? '#define USE_SKINNING' : '',\n\t\t\tparameters.useVertexTexture ? '#define BONE_TEXTURE' : '',\n\n\t\t\tparameters.morphTargets ? '#define USE_MORPHTARGETS' : '',\n\t\t\tparameters.morphNormals && parameters.flatShading === false ? '#define USE_MORPHNORMALS' : '',\n\t\t\tparameters.doubleSided ? '#define DOUBLE_SIDED' : '',\n\t\t\tparameters.flipSided ? '#define FLIP_SIDED' : '',\n\n\t\t\tparameters.shadowMapEnabled ? '#define USE_SHADOWMAP' : '',\n\t\t\tparameters.shadowMapEnabled ? '#define ' + shadowMapTypeDefine : '',\n\n\t\t\tparameters.sizeAttenuation ? '#define USE_SIZEATTENUATION' : '',\n\n\t\t\tparameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '',\n\t\t\t( parameters.logarithmicDepthBuffer && parameters.rendererExtensionFragDepth ) ? '#define USE_LOGDEPTHBUF_EXT' : '',\n\n\t\t\t'uniform mat4 modelMatrix;',\n\t\t\t'uniform mat4 modelViewMatrix;',\n\t\t\t'uniform mat4 projectionMatrix;',\n\t\t\t'uniform mat4 viewMatrix;',\n\t\t\t'uniform mat3 normalMatrix;',\n\t\t\t'uniform vec3 cameraPosition;',\n\t\t\t'uniform bool isOrthographic;',\n\n\t\t\t'#ifdef USE_INSTANCING',\n\n\t\t\t'\tattribute mat4 instanceMatrix;',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_INSTANCING_COLOR',\n\n\t\t\t'\tattribute vec3 instanceColor;',\n\n\t\t\t'#endif',\n\n\t\t\t'attribute vec3 position;',\n\t\t\t'attribute vec3 normal;',\n\t\t\t'attribute vec2 uv;',\n\n\t\t\t'#ifdef USE_TANGENT',\n\n\t\t\t'\tattribute vec4 tangent;',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_COLOR',\n\n\t\t\t'\tattribute vec3 color;',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_MORPHTARGETS',\n\n\t\t\t'\tattribute vec3 morphTarget0;',\n\t\t\t'\tattribute vec3 morphTarget1;',\n\t\t\t'\tattribute vec3 morphTarget2;',\n\t\t\t'\tattribute vec3 morphTarget3;',\n\n\t\t\t'\t#ifdef USE_MORPHNORMALS',\n\n\t\t\t'\t\tattribute vec3 morphNormal0;',\n\t\t\t'\t\tattribute vec3 morphNormal1;',\n\t\t\t'\t\tattribute vec3 morphNormal2;',\n\t\t\t'\t\tattribute vec3 morphNormal3;',\n\n\t\t\t'\t#else',\n\n\t\t\t'\t\tattribute vec3 morphTarget4;',\n\t\t\t'\t\tattribute vec3 morphTarget5;',\n\t\t\t'\t\tattribute vec3 morphTarget6;',\n\t\t\t'\t\tattribute vec3 morphTarget7;',\n\n\t\t\t'\t#endif',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_SKINNING',\n\n\t\t\t'\tattribute vec4 skinIndex;',\n\t\t\t'\tattribute vec4 skinWeight;',\n\n\t\t\t'#endif',\n\n\t\t\t'\\n'\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t\tprefixFragment = [\n\n\t\t\tcustomExtensions,\n\n\t\t\tgeneratePrecision( parameters ),\n\n\t\t\t'#define SHADER_NAME ' + parameters.shaderName,\n\n\t\t\tcustomDefines,\n\n\t\t\tparameters.alphaTest ? '#define ALPHATEST ' + parameters.alphaTest + ( parameters.alphaTest % 1 ? '' : '.0' ) : '', // add '.0' if integer\n\n\t\t\t'#define GAMMA_FACTOR ' + gammaFactorDefine,\n\n\t\t\t( parameters.useFog && parameters.fog ) ? '#define USE_FOG' : '',\n\t\t\t( parameters.useFog && parameters.fogExp2 ) ? '#define FOG_EXP2' : '',\n\n\t\t\tparameters.map ? '#define USE_MAP' : '',\n\t\t\tparameters.matcap ? '#define USE_MATCAP' : '',\n\t\t\tparameters.envMap ? '#define USE_ENVMAP' : '',\n\t\t\tparameters.envMap ? '#define ' + envMapTypeDefine : '',\n\t\t\tparameters.envMap ? '#define ' + envMapModeDefine : '',\n\t\t\tparameters.envMap ? '#define ' + envMapBlendingDefine : '',\n\t\t\tparameters.lightMap ? '#define USE_LIGHTMAP' : '',\n\t\t\tparameters.aoMap ? '#define USE_AOMAP' : '',\n\t\t\tparameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '',\n\t\t\tparameters.bumpMap ? '#define USE_BUMPMAP' : '',\n\t\t\tparameters.normalMap ? '#define USE_NORMALMAP' : '',\n\t\t\t( parameters.normalMap && parameters.objectSpaceNormalMap ) ? '#define OBJECTSPACE_NORMALMAP' : '',\n\t\t\t( parameters.normalMap && parameters.tangentSpaceNormalMap ) ? '#define TANGENTSPACE_NORMALMAP' : '',\n\t\t\tparameters.clearcoatMap ? '#define USE_CLEARCOATMAP' : '',\n\t\t\tparameters.clearcoatRoughnessMap ? '#define USE_CLEARCOAT_ROUGHNESSMAP' : '',\n\t\t\tparameters.clearcoatNormalMap ? '#define USE_CLEARCOAT_NORMALMAP' : '',\n\t\t\tparameters.specularMap ? '#define USE_SPECULARMAP' : '',\n\t\t\tparameters.roughnessMap ? '#define USE_ROUGHNESSMAP' : '',\n\t\t\tparameters.metalnessMap ? '#define USE_METALNESSMAP' : '',\n\t\t\tparameters.alphaMap ? '#define USE_ALPHAMAP' : '',\n\n\t\t\tparameters.sheen ? '#define USE_SHEEN' : '',\n\t\t\tparameters.transmissionMap ? '#define USE_TRANSMISSIONMAP' : '',\n\n\t\t\tparameters.vertexTangents ? '#define USE_TANGENT' : '',\n\t\t\tparameters.vertexColors || parameters.instancingColor ? '#define USE_COLOR' : '',\n\t\t\tparameters.vertexUvs ? '#define USE_UV' : '',\n\t\t\tparameters.uvsVertexOnly ? '#define UVS_VERTEX_ONLY' : '',\n\n\t\t\tparameters.gradientMap ? '#define USE_GRADIENTMAP' : '',\n\n\t\t\tparameters.flatShading ? '#define FLAT_SHADED' : '',\n\n\t\t\tparameters.doubleSided ? '#define DOUBLE_SIDED' : '',\n\t\t\tparameters.flipSided ? '#define FLIP_SIDED' : '',\n\n\t\t\tparameters.shadowMapEnabled ? '#define USE_SHADOWMAP' : '',\n\t\t\tparameters.shadowMapEnabled ? '#define ' + shadowMapTypeDefine : '',\n\n\t\t\tparameters.premultipliedAlpha ? '#define PREMULTIPLIED_ALPHA' : '',\n\n\t\t\tparameters.physicallyCorrectLights ? '#define PHYSICALLY_CORRECT_LIGHTS' : '',\n\n\t\t\tparameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '',\n\t\t\t( parameters.logarithmicDepthBuffer && parameters.rendererExtensionFragDepth ) ? '#define USE_LOGDEPTHBUF_EXT' : '',\n\n\t\t\t( ( parameters.extensionShaderTextureLOD || parameters.envMap ) && parameters.rendererExtensionShaderTextureLod ) ? '#define TEXTURE_LOD_EXT' : '',\n\n\t\t\t'uniform mat4 viewMatrix;',\n\t\t\t'uniform vec3 cameraPosition;',\n\t\t\t'uniform bool isOrthographic;',\n\n\t\t\t( parameters.toneMapping !== NoToneMapping ) ? '#define TONE_MAPPING' : '',\n\t\t\t( parameters.toneMapping !== NoToneMapping ) ? ShaderChunk[ 'tonemapping_pars_fragment' ] : '', // this code is required here because it is used by the toneMapping() function defined below\n\t\t\t( parameters.toneMapping !== NoToneMapping ) ? getToneMappingFunction( 'toneMapping', parameters.toneMapping ) : '',\n\n\t\t\tparameters.dithering ? '#define DITHERING' : '',\n\n\t\t\tShaderChunk[ 'encodings_pars_fragment' ], // this code is required here because it is used by the various encoding/decoding function defined below\n\t\t\tparameters.map ? getTexelDecodingFunction( 'mapTexelToLinear', parameters.mapEncoding ) : '',\n\t\t\tparameters.matcap ? getTexelDecodingFunction( 'matcapTexelToLinear', parameters.matcapEncoding ) : '',\n\t\t\tparameters.envMap ? getTexelDecodingFunction( 'envMapTexelToLinear', parameters.envMapEncoding ) : '',\n\t\t\tparameters.emissiveMap ? getTexelDecodingFunction( 'emissiveMapTexelToLinear', parameters.emissiveMapEncoding ) : '',\n\t\t\tparameters.lightMap ? getTexelDecodingFunction( 'lightMapTexelToLinear', parameters.lightMapEncoding ) : '',\n\t\t\tgetTexelEncodingFunction( 'linearToOutputTexel', parameters.outputEncoding ),\n\n\t\t\tparameters.depthPacking ? '#define DEPTH_PACKING ' + parameters.depthPacking : '',\n\n\t\t\t'\\n'\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t}\n\n\tvertexShader = resolveIncludes( vertexShader );\n\tvertexShader = replaceLightNums( vertexShader, parameters );\n\tvertexShader = replaceClippingPlaneNums( vertexShader, parameters );\n\n\tfragmentShader = resolveIncludes( fragmentShader );\n\tfragmentShader = replaceLightNums( fragmentShader, parameters );\n\tfragmentShader = replaceClippingPlaneNums( fragmentShader, parameters );\n\n\tvertexShader = unrollLoops( vertexShader );\n\tfragmentShader = unrollLoops( fragmentShader );\n\n\tif ( parameters.isWebGL2 && parameters.isRawShaderMaterial !== true ) {\n\n\t\t// GLSL 3.0 conversion for built-in materials and ShaderMaterial\n\n\t\tversionString = '#version 300 es\\n';\n\n\t\tprefixVertex = [\n\t\t\t'#define attribute in',\n\t\t\t'#define varying out',\n\t\t\t'#define texture2D texture'\n\t\t].join( '\\n' ) + '\\n' + prefixVertex;\n\n\t\tprefixFragment = [\n\t\t\t'#define varying in',\n\t\t\t( parameters.glslVersion === GLSL3 ) ? '' : 'out highp vec4 pc_fragColor;',\n\t\t\t( parameters.glslVersion === GLSL3 ) ? '' : '#define gl_FragColor pc_fragColor',\n\t\t\t'#define gl_FragDepthEXT gl_FragDepth',\n\t\t\t'#define texture2D texture',\n\t\t\t'#define textureCube texture',\n\t\t\t'#define texture2DProj textureProj',\n\t\t\t'#define texture2DLodEXT textureLod',\n\t\t\t'#define texture2DProjLodEXT textureProjLod',\n\t\t\t'#define textureCubeLodEXT textureLod',\n\t\t\t'#define texture2DGradEXT textureGrad',\n\t\t\t'#define texture2DProjGradEXT textureProjGrad',\n\t\t\t'#define textureCubeGradEXT textureGrad'\n\t\t].join( '\\n' ) + '\\n' + prefixFragment;\n\n\t}\n\n\tconst vertexGlsl = versionString + prefixVertex + vertexShader;\n\tconst fragmentGlsl = versionString + prefixFragment + fragmentShader;\n\n\t// console.log( '*VERTEX*', vertexGlsl );\n\t// console.log( '*FRAGMENT*', fragmentGlsl );\n\n\tconst glVertexShader = WebGLShader( gl, 35633, vertexGlsl );\n\tconst glFragmentShader = WebGLShader( gl, 35632, fragmentGlsl );\n\n\tgl.attachShader( program, glVertexShader );\n\tgl.attachShader( program, glFragmentShader );\n\n\t// Force a particular attribute to index 0.\n\n\tif ( parameters.index0AttributeName !== undefined ) {\n\n\t\tgl.bindAttribLocation( program, 0, parameters.index0AttributeName );\n\n\t} else if ( parameters.morphTargets === true ) {\n\n\t\t// programs with morphTargets displace position out of attribute 0\n\t\tgl.bindAttribLocation( program, 0, 'position' );\n\n\t}\n\n\tgl.linkProgram( program );\n\n\t// check for link errors\n\tif ( renderer.debug.checkShaderErrors ) {\n\n\t\tconst programLog = gl.getProgramInfoLog( program ).trim();\n\t\tconst vertexLog = gl.getShaderInfoLog( glVertexShader ).trim();\n\t\tconst fragmentLog = gl.getShaderInfoLog( glFragmentShader ).trim();\n\n\t\tlet runnable = true;\n\t\tlet haveDiagnostics = true;\n\n\t\tif ( gl.getProgramParameter( program, 35714 ) === false ) {\n\n\t\t\trunnable = false;\n\n\t\t\tconst vertexErrors = getShaderErrors( gl, glVertexShader, 'vertex' );\n\t\t\tconst fragmentErrors = getShaderErrors( gl, glFragmentShader, 'fragment' );\n\n\t\t\tconsole.error( 'THREE.WebGLProgram: shader error: ', gl.getError(), '35715', gl.getProgramParameter( program, 35715 ), 'gl.getProgramInfoLog', programLog, vertexErrors, fragmentErrors );\n\n\t\t} else if ( programLog !== '' ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLProgram: gl.getProgramInfoLog()', programLog );\n\n\t\t} else if ( vertexLog === '' || fragmentLog === '' ) {\n\n\t\t\thaveDiagnostics = false;\n\n\t\t}\n\n\t\tif ( haveDiagnostics ) {\n\n\t\t\tthis.diagnostics = {\n\n\t\t\t\trunnable: runnable,\n\n\t\t\t\tprogramLog: programLog,\n\n\t\t\t\tvertexShader: {\n\n\t\t\t\t\tlog: vertexLog,\n\t\t\t\t\tprefix: prefixVertex\n\n\t\t\t\t},\n\n\t\t\t\tfragmentShader: {\n\n\t\t\t\t\tlog: fragmentLog,\n\t\t\t\t\tprefix: prefixFragment\n\n\t\t\t\t}\n\n\t\t\t};\n\n\t\t}\n\n\t}\n\n\t// Clean up\n\n\t// Crashes in iOS9 and iOS10. #18402\n\t// gl.detachShader( program, glVertexShader );\n\t// gl.detachShader( program, glFragmentShader );\n\n\tgl.deleteShader( glVertexShader );\n\tgl.deleteShader( glFragmentShader );\n\n\t// set up caching for uniform locations\n\n\tlet cachedUniforms;\n\n\tthis.getUniforms = function () {\n\n\t\tif ( cachedUniforms === undefined ) {\n\n\t\t\tcachedUniforms = new WebGLUniforms( gl, program );\n\n\t\t}\n\n\t\treturn cachedUniforms;\n\n\t};\n\n\t// set up caching for attribute locations\n\n\tlet cachedAttributes;\n\n\tthis.getAttributes = function () {\n\n\t\tif ( cachedAttributes === undefined ) {\n\n\t\t\tcachedAttributes = fetchAttributeLocations( gl, program );\n\n\t\t}\n\n\t\treturn cachedAttributes;\n\n\t};\n\n\t// free resource\n\n\tthis.destroy = function () {\n\n\t\tbindingStates.releaseStatesOfProgram( this );\n\n\t\tgl.deleteProgram( program );\n\t\tthis.program = undefined;\n\n\t};\n\n\t//\n\n\tthis.name = parameters.shaderName;\n\tthis.id = programIdCount ++;\n\tthis.cacheKey = cacheKey;\n\tthis.usedTimes = 1;\n\tthis.program = program;\n\tthis.vertexShader = glVertexShader;\n\tthis.fragmentShader = glFragmentShader;\n\n\treturn this;\n\n}\n\nfunction WebGLPrograms( renderer, cubemaps, extensions, capabilities, bindingStates, clipping ) {\n\n\tconst programs = [];\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\tconst logarithmicDepthBuffer = capabilities.logarithmicDepthBuffer;\n\tconst floatVertexTextures = capabilities.floatVertexTextures;\n\tconst maxVertexUniforms = capabilities.maxVertexUniforms;\n\tconst vertexTextures = capabilities.vertexTextures;\n\n\tlet precision = capabilities.precision;\n\n\tconst shaderIDs = {\n\t\tMeshDepthMaterial: 'depth',\n\t\tMeshDistanceMaterial: 'distanceRGBA',\n\t\tMeshNormalMaterial: 'normal',\n\t\tMeshBasicMaterial: 'basic',\n\t\tMeshLambertMaterial: 'lambert',\n\t\tMeshPhongMaterial: 'phong',\n\t\tMeshToonMaterial: 'toon',\n\t\tMeshStandardMaterial: 'physical',\n\t\tMeshPhysicalMaterial: 'physical',\n\t\tMeshMatcapMaterial: 'matcap',\n\t\tLineBasicMaterial: 'basic',\n\t\tLineDashedMaterial: 'dashed',\n\t\tPointsMaterial: 'points',\n\t\tShadowMaterial: 'shadow',\n\t\tSpriteMaterial: 'sprite'\n\t};\n\n\tconst parameterNames = [\n\t\t\"precision\", \"isWebGL2\", \"supportsVertexTextures\", \"outputEncoding\", \"instancing\", \"instancingColor\",\n\t\t\"map\", \"mapEncoding\", \"matcap\", \"matcapEncoding\", \"envMap\", \"envMapMode\", \"envMapEncoding\", \"envMapCubeUV\",\n\t\t\"lightMap\", \"lightMapEncoding\", \"aoMap\", \"emissiveMap\", \"emissiveMapEncoding\", \"bumpMap\", \"normalMap\", \"objectSpaceNormalMap\", \"tangentSpaceNormalMap\", \"clearcoatMap\", \"clearcoatRoughnessMap\", \"clearcoatNormalMap\", \"displacementMap\", \"specularMap\",\n\t\t\"roughnessMap\", \"metalnessMap\", \"gradientMap\",\n\t\t\"alphaMap\", \"combine\", \"vertexColors\", \"vertexTangents\", \"vertexUvs\", \"uvsVertexOnly\", \"fog\", \"useFog\", \"fogExp2\",\n\t\t\"flatShading\", \"sizeAttenuation\", \"logarithmicDepthBuffer\", \"skinning\",\n\t\t\"maxBones\", \"useVertexTexture\", \"morphTargets\", \"morphNormals\",\n\t\t\"maxMorphTargets\", \"maxMorphNormals\", \"premultipliedAlpha\",\n\t\t\"numDirLights\", \"numPointLights\", \"numSpotLights\", \"numHemiLights\", \"numRectAreaLights\",\n\t\t\"numDirLightShadows\", \"numPointLightShadows\", \"numSpotLightShadows\",\n\t\t\"shadowMapEnabled\", \"shadowMapType\", \"toneMapping\", 'physicallyCorrectLights',\n\t\t\"alphaTest\", \"doubleSided\", \"flipSided\", \"numClippingPlanes\", \"numClipIntersection\", \"depthPacking\", \"dithering\",\n\t\t\"sheen\", \"transmissionMap\"\n\t];\n\n\tfunction getMaxBones( object ) {\n\n\t\tconst skeleton = object.skeleton;\n\t\tconst bones = skeleton.bones;\n\n\t\tif ( floatVertexTextures ) {\n\n\t\t\treturn 1024;\n\n\t\t} else {\n\n\t\t\t// default for when object is not specified\n\t\t\t// ( for example when prebuilding shader to be used with multiple objects )\n\t\t\t//\n\t\t\t//  - leave some extra space for other uniforms\n\t\t\t//  - limit here is ANGLE's 254 max uniform vectors\n\t\t\t//    (up to 54 should be safe)\n\n\t\t\tconst nVertexUniforms = maxVertexUniforms;\n\t\t\tconst nVertexMatrices = Math.floor( ( nVertexUniforms - 20 ) / 4 );\n\n\t\t\tconst maxBones = Math.min( nVertexMatrices, bones.length );\n\n\t\t\tif ( maxBones < bones.length ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Skeleton has ' + bones.length + ' bones. This GPU supports ' + maxBones + '.' );\n\t\t\t\treturn 0;\n\n\t\t\t}\n\n\t\t\treturn maxBones;\n\n\t\t}\n\n\t}\n\n\tfunction getTextureEncodingFromMap( map ) {\n\n\t\tlet encoding;\n\n\t\tif ( ! map ) {\n\n\t\t\tencoding = LinearEncoding;\n\n\t\t} else if ( map.isTexture ) {\n\n\t\t\tencoding = map.encoding;\n\n\t\t} else if ( map.isWebGLRenderTarget ) {\n\n\t\t\tconsole.warn( \"THREE.WebGLPrograms.getTextureEncodingFromMap: don't use render targets as textures. Use their .texture property instead.\" );\n\t\t\tencoding = map.texture.encoding;\n\n\t\t}\n\n\t\treturn encoding;\n\n\t}\n\n\tfunction getParameters( material, lights, shadows, scene, object ) {\n\n\t\tconst fog = scene.fog;\n\t\tconst environment = material.isMeshStandardMaterial ? scene.environment : null;\n\n\t\tconst envMap = cubemaps.get( material.envMap || environment );\n\n\t\tconst shaderID = shaderIDs[ material.type ];\n\n\t\t// heuristics to create shader parameters according to lights in the scene\n\t\t// (not to blow over maxLights budget)\n\n\t\tconst maxBones = object.isSkinnedMesh ? getMaxBones( object ) : 0;\n\n\t\tif ( material.precision !== null ) {\n\n\t\t\tprecision = capabilities.getMaxPrecision( material.precision );\n\n\t\t\tif ( precision !== material.precision ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLProgram.getParameters:', material.precision, 'not supported, using', precision, 'instead.' );\n\n\t\t\t}\n\n\t\t}\n\n\t\tlet vertexShader, fragmentShader;\n\n\t\tif ( shaderID ) {\n\n\t\t\tconst shader = ShaderLib[ shaderID ];\n\n\t\t\tvertexShader = shader.vertexShader;\n\t\t\tfragmentShader = shader.fragmentShader;\n\n\t\t} else {\n\n\t\t\tvertexShader = material.vertexShader;\n\t\t\tfragmentShader = material.fragmentShader;\n\n\t\t}\n\n\t\tconst currentRenderTarget = renderer.getRenderTarget();\n\n\t\tconst parameters = {\n\n\t\t\tisWebGL2: isWebGL2,\n\n\t\t\tshaderID: shaderID,\n\t\t\tshaderName: material.type,\n\n\t\t\tvertexShader: vertexShader,\n\t\t\tfragmentShader: fragmentShader,\n\t\t\tdefines: material.defines,\n\n\t\t\tisRawShaderMaterial: material.isRawShaderMaterial === true,\n\t\t\tglslVersion: material.glslVersion,\n\n\t\t\tprecision: precision,\n\n\t\t\tinstancing: object.isInstancedMesh === true,\n\t\t\tinstancingColor: object.isInstancedMesh === true && object.instanceColor !== null,\n\n\t\t\tsupportsVertexTextures: vertexTextures,\n\t\t\toutputEncoding: ( currentRenderTarget !== null ) ? getTextureEncodingFromMap( currentRenderTarget.texture ) : renderer.outputEncoding,\n\t\t\tmap: !! material.map,\n\t\t\tmapEncoding: getTextureEncodingFromMap( material.map ),\n\t\t\tmatcap: !! material.matcap,\n\t\t\tmatcapEncoding: getTextureEncodingFromMap( material.matcap ),\n\t\t\tenvMap: !! envMap,\n\t\t\tenvMapMode: envMap && envMap.mapping,\n\t\t\tenvMapEncoding: getTextureEncodingFromMap( envMap ),\n\t\t\tenvMapCubeUV: ( !! envMap ) && ( ( envMap.mapping === CubeUVReflectionMapping ) || ( envMap.mapping === CubeUVRefractionMapping ) ),\n\t\t\tlightMap: !! material.lightMap,\n\t\t\tlightMapEncoding: getTextureEncodingFromMap( material.lightMap ),\n\t\t\taoMap: !! material.aoMap,\n\t\t\temissiveMap: !! material.emissiveMap,\n\t\t\temissiveMapEncoding: getTextureEncodingFromMap( material.emissiveMap ),\n\t\t\tbumpMap: !! material.bumpMap,\n\t\t\tnormalMap: !! material.normalMap,\n\t\t\tobjectSpaceNormalMap: material.normalMapType === ObjectSpaceNormalMap,\n\t\t\ttangentSpaceNormalMap: material.normalMapType === TangentSpaceNormalMap,\n\t\t\tclearcoatMap: !! material.clearcoatMap,\n\t\t\tclearcoatRoughnessMap: !! material.clearcoatRoughnessMap,\n\t\t\tclearcoatNormalMap: !! material.clearcoatNormalMap,\n\t\t\tdisplacementMap: !! material.displacementMap,\n\t\t\troughnessMap: !! material.roughnessMap,\n\t\t\tmetalnessMap: !! material.metalnessMap,\n\t\t\tspecularMap: !! material.specularMap,\n\t\t\talphaMap: !! material.alphaMap,\n\n\t\t\tgradientMap: !! material.gradientMap,\n\n\t\t\tsheen: !! material.sheen,\n\n\t\t\ttransmissionMap: !! material.transmissionMap,\n\n\t\t\tcombine: material.combine,\n\n\t\t\tvertexTangents: ( material.normalMap && material.vertexTangents ),\n\t\t\tvertexColors: material.vertexColors,\n\t\t\tvertexUvs: !! material.map || !! material.bumpMap || !! material.normalMap || !! material.specularMap || !! material.alphaMap || !! material.emissiveMap || !! material.roughnessMap || !! material.metalnessMap || !! material.clearcoatMap || !! material.clearcoatRoughnessMap || !! material.clearcoatNormalMap || !! material.displacementMap || !! material.transmissionMap,\n\t\t\tuvsVertexOnly: ! ( !! material.map || !! material.bumpMap || !! material.normalMap || !! material.specularMap || !! material.alphaMap || !! material.emissiveMap || !! material.roughnessMap || !! material.metalnessMap || !! material.clearcoatNormalMap || !! material.transmissionMap ) && !! material.displacementMap,\n\n\t\t\tfog: !! fog,\n\t\t\tuseFog: material.fog,\n\t\t\tfogExp2: ( fog && fog.isFogExp2 ),\n\n\t\t\tflatShading: material.flatShading,\n\n\t\t\tsizeAttenuation: material.sizeAttenuation,\n\t\t\tlogarithmicDepthBuffer: logarithmicDepthBuffer,\n\n\t\t\tskinning: material.skinning && maxBones > 0,\n\t\t\tmaxBones: maxBones,\n\t\t\tuseVertexTexture: floatVertexTextures,\n\n\t\t\tmorphTargets: material.morphTargets,\n\t\t\tmorphNormals: material.morphNormals,\n\t\t\tmaxMorphTargets: renderer.maxMorphTargets,\n\t\t\tmaxMorphNormals: renderer.maxMorphNormals,\n\n\t\t\tnumDirLights: lights.directional.length,\n\t\t\tnumPointLights: lights.point.length,\n\t\t\tnumSpotLights: lights.spot.length,\n\t\t\tnumRectAreaLights: lights.rectArea.length,\n\t\t\tnumHemiLights: lights.hemi.length,\n\n\t\t\tnumDirLightShadows: lights.directionalShadowMap.length,\n\t\t\tnumPointLightShadows: lights.pointShadowMap.length,\n\t\t\tnumSpotLightShadows: lights.spotShadowMap.length,\n\n\t\t\tnumClippingPlanes: clipping.numPlanes,\n\t\t\tnumClipIntersection: clipping.numIntersection,\n\n\t\t\tdithering: material.dithering,\n\n\t\t\tshadowMapEnabled: renderer.shadowMap.enabled && shadows.length > 0,\n\t\t\tshadowMapType: renderer.shadowMap.type,\n\n\t\t\ttoneMapping: material.toneMapped ? renderer.toneMapping : NoToneMapping,\n\t\t\tphysicallyCorrectLights: renderer.physicallyCorrectLights,\n\n\t\t\tpremultipliedAlpha: material.premultipliedAlpha,\n\n\t\t\talphaTest: material.alphaTest,\n\t\t\tdoubleSided: material.side === DoubleSide,\n\t\t\tflipSided: material.side === BackSide,\n\n\t\t\tdepthPacking: ( material.depthPacking !== undefined ) ? material.depthPacking : false,\n\n\t\t\tindex0AttributeName: material.index0AttributeName,\n\n\t\t\textensionDerivatives: material.extensions && material.extensions.derivatives,\n\t\t\textensionFragDepth: material.extensions && material.extensions.fragDepth,\n\t\t\textensionDrawBuffers: material.extensions && material.extensions.drawBuffers,\n\t\t\textensionShaderTextureLOD: material.extensions && material.extensions.shaderTextureLOD,\n\n\t\t\trendererExtensionFragDepth: isWebGL2 || extensions.has( 'EXT_frag_depth' ),\n\t\t\trendererExtensionDrawBuffers: isWebGL2 || extensions.has( 'WEBGL_draw_buffers' ),\n\t\t\trendererExtensionShaderTextureLod: isWebGL2 || extensions.has( 'EXT_shader_texture_lod' ),\n\n\t\t\tcustomProgramCacheKey: material.customProgramCacheKey()\n\n\t\t};\n\n\t\treturn parameters;\n\n\t}\n\n\tfunction getProgramCacheKey( parameters ) {\n\n\t\tconst array = [];\n\n\t\tif ( parameters.shaderID ) {\n\n\t\t\tarray.push( parameters.shaderID );\n\n\t\t} else {\n\n\t\t\tarray.push( parameters.fragmentShader );\n\t\t\tarray.push( parameters.vertexShader );\n\n\t\t}\n\n\t\tif ( parameters.defines !== undefined ) {\n\n\t\t\tfor ( const name in parameters.defines ) {\n\n\t\t\t\tarray.push( name );\n\t\t\t\tarray.push( parameters.defines[ name ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( parameters.isRawShaderMaterial === false ) {\n\n\t\t\tfor ( let i = 0; i < parameterNames.length; i ++ ) {\n\n\t\t\t\tarray.push( parameters[ parameterNames[ i ] ] );\n\n\t\t\t}\n\n\t\t\tarray.push( renderer.outputEncoding );\n\t\t\tarray.push( renderer.gammaFactor );\n\n\t\t}\n\n\t\tarray.push( parameters.customProgramCacheKey );\n\n\t\treturn array.join();\n\n\t}\n\n\tfunction getUniforms( material ) {\n\n\t\tconst shaderID = shaderIDs[ material.type ];\n\t\tlet uniforms;\n\n\t\tif ( shaderID ) {\n\n\t\t\tconst shader = ShaderLib[ shaderID ];\n\t\t\tuniforms = UniformsUtils.clone( shader.uniforms );\n\n\t\t} else {\n\n\t\t\tuniforms = material.uniforms;\n\n\t\t}\n\n\t\treturn uniforms;\n\n\t}\n\n\tfunction acquireProgram( parameters, cacheKey ) {\n\n\t\tlet program;\n\n\t\t// Check if code has been already compiled\n\t\tfor ( let p = 0, pl = programs.length; p < pl; p ++ ) {\n\n\t\t\tconst preexistingProgram = programs[ p ];\n\n\t\t\tif ( preexistingProgram.cacheKey === cacheKey ) {\n\n\t\t\t\tprogram = preexistingProgram;\n\t\t\t\t++ program.usedTimes;\n\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( program === undefined ) {\n\n\t\t\tprogram = new WebGLProgram( renderer, cacheKey, parameters, bindingStates );\n\t\t\tprograms.push( program );\n\n\t\t}\n\n\t\treturn program;\n\n\t}\n\n\tfunction releaseProgram( program ) {\n\n\t\tif ( -- program.usedTimes === 0 ) {\n\n\t\t\t// Remove from unordered set\n\t\t\tconst i = programs.indexOf( program );\n\t\t\tprograms[ i ] = programs[ programs.length - 1 ];\n\t\t\tprograms.pop();\n\n\t\t\t// Free WebGL resources\n\t\t\tprogram.destroy();\n\n\t\t}\n\n\t}\n\n\treturn {\n\t\tgetParameters: getParameters,\n\t\tgetProgramCacheKey: getProgramCacheKey,\n\t\tgetUniforms: getUniforms,\n\t\tacquireProgram: acquireProgram,\n\t\treleaseProgram: releaseProgram,\n\t\t// Exposed for resource monitoring & error feedback via renderer.info:\n\t\tprograms: programs\n\t};\n\n}\n\nfunction WebGLProperties() {\n\n\tlet properties = new WeakMap();\n\n\tfunction get( object ) {\n\n\t\tlet map = properties.get( object );\n\n\t\tif ( map === undefined ) {\n\n\t\t\tmap = {};\n\t\t\tproperties.set( object, map );\n\n\t\t}\n\n\t\treturn map;\n\n\t}\n\n\tfunction remove( object ) {\n\n\t\tproperties.delete( object );\n\n\t}\n\n\tfunction update( object, key, value ) {\n\n\t\tproperties.get( object )[ key ] = value;\n\n\t}\n\n\tfunction dispose() {\n\n\t\tproperties = new WeakMap();\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tremove: remove,\n\t\tupdate: update,\n\t\tdispose: dispose\n\t};\n\n}\n\nfunction painterSortStable( a, b ) {\n\n\tif ( a.groupOrder !== b.groupOrder ) {\n\n\t\treturn a.groupOrder - b.groupOrder;\n\n\t} else if ( a.renderOrder !== b.renderOrder ) {\n\n\t\treturn a.renderOrder - b.renderOrder;\n\n\t} else if ( a.program !== b.program ) {\n\n\t\treturn a.program.id - b.program.id;\n\n\t} else if ( a.material.id !== b.material.id ) {\n\n\t\treturn a.material.id - b.material.id;\n\n\t} else if ( a.z !== b.z ) {\n\n\t\treturn a.z - b.z;\n\n\t} else {\n\n\t\treturn a.id - b.id;\n\n\t}\n\n}\n\nfunction reversePainterSortStable( a, b ) {\n\n\tif ( a.groupOrder !== b.groupOrder ) {\n\n\t\treturn a.groupOrder - b.groupOrder;\n\n\t} else if ( a.renderOrder !== b.renderOrder ) {\n\n\t\treturn a.renderOrder - b.renderOrder;\n\n\t} else if ( a.z !== b.z ) {\n\n\t\treturn b.z - a.z;\n\n\t} else {\n\n\t\treturn a.id - b.id;\n\n\t}\n\n}\n\n\nfunction WebGLRenderList( properties ) {\n\n\tconst renderItems = [];\n\tlet renderItemsIndex = 0;\n\n\tconst opaque = [];\n\tconst transparent = [];\n\n\tconst defaultProgram = { id: - 1 };\n\n\tfunction init() {\n\n\t\trenderItemsIndex = 0;\n\n\t\topaque.length = 0;\n\t\ttransparent.length = 0;\n\n\t}\n\n\tfunction getNextRenderItem( object, geometry, material, groupOrder, z, group ) {\n\n\t\tlet renderItem = renderItems[ renderItemsIndex ];\n\t\tconst materialProperties = properties.get( material );\n\n\t\tif ( renderItem === undefined ) {\n\n\t\t\trenderItem = {\n\t\t\t\tid: object.id,\n\t\t\t\tobject: object,\n\t\t\t\tgeometry: geometry,\n\t\t\t\tmaterial: material,\n\t\t\t\tprogram: materialProperties.program || defaultProgram,\n\t\t\t\tgroupOrder: groupOrder,\n\t\t\t\trenderOrder: object.renderOrder,\n\t\t\t\tz: z,\n\t\t\t\tgroup: group\n\t\t\t};\n\n\t\t\trenderItems[ renderItemsIndex ] = renderItem;\n\n\t\t} else {\n\n\t\t\trenderItem.id = object.id;\n\t\t\trenderItem.object = object;\n\t\t\trenderItem.geometry = geometry;\n\t\t\trenderItem.material = material;\n\t\t\trenderItem.program = materialProperties.program || defaultProgram;\n\t\t\trenderItem.groupOrder = groupOrder;\n\t\t\trenderItem.renderOrder = object.renderOrder;\n\t\t\trenderItem.z = z;\n\t\t\trenderItem.group = group;\n\n\t\t}\n\n\t\trenderItemsIndex ++;\n\n\t\treturn renderItem;\n\n\t}\n\n\tfunction push( object, geometry, material, groupOrder, z, group ) {\n\n\t\tconst renderItem = getNextRenderItem( object, geometry, material, groupOrder, z, group );\n\n\t\t( material.transparent === true ? transparent : opaque ).push( renderItem );\n\n\t}\n\n\tfunction unshift( object, geometry, material, groupOrder, z, group ) {\n\n\t\tconst renderItem = getNextRenderItem( object, geometry, material, groupOrder, z, group );\n\n\t\t( material.transparent === true ? transparent : opaque ).unshift( renderItem );\n\n\t}\n\n\tfunction sort( customOpaqueSort, customTransparentSort ) {\n\n\t\tif ( opaque.length > 1 ) opaque.sort( customOpaqueSort || painterSortStable );\n\t\tif ( transparent.length > 1 ) transparent.sort( customTransparentSort || reversePainterSortStable );\n\n\t}\n\n\tfunction finish() {\n\n\t\t// Clear references from inactive renderItems in the list\n\n\t\tfor ( let i = renderItemsIndex, il = renderItems.length; i < il; i ++ ) {\n\n\t\t\tconst renderItem = renderItems[ i ];\n\n\t\t\tif ( renderItem.id === null ) break;\n\n\t\t\trenderItem.id = null;\n\t\t\trenderItem.object = null;\n\t\t\trenderItem.geometry = null;\n\t\t\trenderItem.material = null;\n\t\t\trenderItem.program = null;\n\t\t\trenderItem.group = null;\n\n\t\t}\n\n\t}\n\n\treturn {\n\n\t\topaque: opaque,\n\t\ttransparent: transparent,\n\n\t\tinit: init,\n\t\tpush: push,\n\t\tunshift: unshift,\n\t\tfinish: finish,\n\n\t\tsort: sort\n\t};\n\n}\n\nfunction WebGLRenderLists( properties ) {\n\n\tlet lists = new WeakMap();\n\n\tfunction get( scene, camera ) {\n\n\t\tconst cameras = lists.get( scene );\n\t\tlet list;\n\n\t\tif ( cameras === undefined ) {\n\n\t\t\tlist = new WebGLRenderList( properties );\n\t\t\tlists.set( scene, new WeakMap() );\n\t\t\tlists.get( scene ).set( camera, list );\n\n\t\t} else {\n\n\t\t\tlist = cameras.get( camera );\n\t\t\tif ( list === undefined ) {\n\n\t\t\t\tlist = new WebGLRenderList( properties );\n\t\t\t\tcameras.set( camera, list );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn list;\n\n\t}\n\n\tfunction dispose() {\n\n\t\tlists = new WeakMap();\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tdispose: dispose\n\t};\n\n}\n\nfunction UniformsCache() {\n\n\tconst lights = {};\n\n\treturn {\n\n\t\tget: function ( light ) {\n\n\t\t\tif ( lights[ light.id ] !== undefined ) {\n\n\t\t\t\treturn lights[ light.id ];\n\n\t\t\t}\n\n\t\t\tlet uniforms;\n\n\t\t\tswitch ( light.type ) {\n\n\t\t\t\tcase 'DirectionalLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tdirection: new Vector3(),\n\t\t\t\t\t\tcolor: new Color()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'SpotLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tposition: new Vector3(),\n\t\t\t\t\t\tdirection: new Vector3(),\n\t\t\t\t\t\tcolor: new Color(),\n\t\t\t\t\t\tdistance: 0,\n\t\t\t\t\t\tconeCos: 0,\n\t\t\t\t\t\tpenumbraCos: 0,\n\t\t\t\t\t\tdecay: 0\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'PointLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tposition: new Vector3(),\n\t\t\t\t\t\tcolor: new Color(),\n\t\t\t\t\t\tdistance: 0,\n\t\t\t\t\t\tdecay: 0\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'HemisphereLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tdirection: new Vector3(),\n\t\t\t\t\t\tskyColor: new Color(),\n\t\t\t\t\t\tgroundColor: new Color()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'RectAreaLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tcolor: new Color(),\n\t\t\t\t\t\tposition: new Vector3(),\n\t\t\t\t\t\thalfWidth: new Vector3(),\n\t\t\t\t\t\thalfHeight: new Vector3()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tlights[ light.id ] = uniforms;\n\n\t\t\treturn uniforms;\n\n\t\t}\n\n\t};\n\n}\n\nfunction ShadowUniformsCache() {\n\n\tconst lights = {};\n\n\treturn {\n\n\t\tget: function ( light ) {\n\n\t\t\tif ( lights[ light.id ] !== undefined ) {\n\n\t\t\t\treturn lights[ light.id ];\n\n\t\t\t}\n\n\t\t\tlet uniforms;\n\n\t\t\tswitch ( light.type ) {\n\n\t\t\t\tcase 'DirectionalLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tshadowBias: 0,\n\t\t\t\t\t\tshadowNormalBias: 0,\n\t\t\t\t\t\tshadowRadius: 1,\n\t\t\t\t\t\tshadowMapSize: new Vector2()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'SpotLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tshadowBias: 0,\n\t\t\t\t\t\tshadowNormalBias: 0,\n\t\t\t\t\t\tshadowRadius: 1,\n\t\t\t\t\t\tshadowMapSize: new Vector2()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'PointLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tshadowBias: 0,\n\t\t\t\t\t\tshadowNormalBias: 0,\n\t\t\t\t\t\tshadowRadius: 1,\n\t\t\t\t\t\tshadowMapSize: new Vector2(),\n\t\t\t\t\t\tshadowCameraNear: 1,\n\t\t\t\t\t\tshadowCameraFar: 1000\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\t// TODO (abelnation): set RectAreaLight shadow uniforms\n\n\t\t\t}\n\n\t\t\tlights[ light.id ] = uniforms;\n\n\t\t\treturn uniforms;\n\n\t\t}\n\n\t};\n\n}\n\n\n\nlet nextVersion = 0;\n\nfunction shadowCastingLightsFirst( lightA, lightB ) {\n\n\treturn ( lightB.castShadow ? 1 : 0 ) - ( lightA.castShadow ? 1 : 0 );\n\n}\n\nfunction WebGLLights() {\n\n\tconst cache = new UniformsCache();\n\n\tconst shadowCache = ShadowUniformsCache();\n\n\tconst state = {\n\n\t\tversion: 0,\n\n\t\thash: {\n\t\t\tdirectionalLength: - 1,\n\t\t\tpointLength: - 1,\n\t\t\tspotLength: - 1,\n\t\t\trectAreaLength: - 1,\n\t\t\themiLength: - 1,\n\n\t\t\tnumDirectionalShadows: - 1,\n\t\t\tnumPointShadows: - 1,\n\t\t\tnumSpotShadows: - 1\n\t\t},\n\n\t\tambient: [ 0, 0, 0 ],\n\t\tprobe: [],\n\t\tdirectional: [],\n\t\tdirectionalShadow: [],\n\t\tdirectionalShadowMap: [],\n\t\tdirectionalShadowMatrix: [],\n\t\tspot: [],\n\t\tspotShadow: [],\n\t\tspotShadowMap: [],\n\t\tspotShadowMatrix: [],\n\t\trectArea: [],\n\t\trectAreaLTC1: null,\n\t\trectAreaLTC2: null,\n\t\tpoint: [],\n\t\tpointShadow: [],\n\t\tpointShadowMap: [],\n\t\tpointShadowMatrix: [],\n\t\themi: []\n\n\t};\n\n\tfor ( let i = 0; i < 9; i ++ ) state.probe.push( new Vector3() );\n\n\tconst vector3 = new Vector3();\n\tconst matrix4 = new Matrix4();\n\tconst matrix42 = new Matrix4();\n\n\tfunction setup( lights, shadows, camera ) {\n\n\t\tlet r = 0, g = 0, b = 0;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) state.probe[ i ].set( 0, 0, 0 );\n\n\t\tlet directionalLength = 0;\n\t\tlet pointLength = 0;\n\t\tlet spotLength = 0;\n\t\tlet rectAreaLength = 0;\n\t\tlet hemiLength = 0;\n\n\t\tlet numDirectionalShadows = 0;\n\t\tlet numPointShadows = 0;\n\t\tlet numSpotShadows = 0;\n\n\t\tconst viewMatrix = camera.matrixWorldInverse;\n\n\t\tlights.sort( shadowCastingLightsFirst );\n\n\t\tfor ( let i = 0, l = lights.length; i < l; i ++ ) {\n\n\t\t\tconst light = lights[ i ];\n\n\t\t\tconst color = light.color;\n\t\t\tconst intensity = light.intensity;\n\t\t\tconst distance = light.distance;\n\n\t\t\tconst shadowMap = ( light.shadow && light.shadow.map ) ? light.shadow.map.texture : null;\n\n\t\t\tif ( light.isAmbientLight ) {\n\n\t\t\t\tr += color.r * intensity;\n\t\t\t\tg += color.g * intensity;\n\t\t\t\tb += color.b * intensity;\n\n\t\t\t} else if ( light.isLightProbe ) {\n\n\t\t\t\tfor ( let j = 0; j < 9; j ++ ) {\n\n\t\t\t\t\tstate.probe[ j ].addScaledVector( light.sh.coefficients[ j ], intensity );\n\n\t\t\t\t}\n\n\t\t\t} else if ( light.isDirectionalLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.color.copy( light.color ).multiplyScalar( light.intensity );\n\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tvector3.setFromMatrixPosition( light.target.matrixWorld );\n\t\t\t\tuniforms.direction.sub( vector3 );\n\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\n\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\tconst shadow = light.shadow;\n\n\t\t\t\t\tconst shadowUniforms = shadowCache.get( light );\n\n\t\t\t\t\tshadowUniforms.shadowBias = shadow.bias;\n\t\t\t\t\tshadowUniforms.shadowNormalBias = shadow.normalBias;\n\t\t\t\t\tshadowUniforms.shadowRadius = shadow.radius;\n\t\t\t\t\tshadowUniforms.shadowMapSize = shadow.mapSize;\n\n\t\t\t\t\tstate.directionalShadow[ directionalLength ] = shadowUniforms;\n\t\t\t\t\tstate.directionalShadowMap[ directionalLength ] = shadowMap;\n\t\t\t\t\tstate.directionalShadowMatrix[ directionalLength ] = light.shadow.matrix;\n\n\t\t\t\t\tnumDirectionalShadows ++;\n\n\t\t\t\t}\n\n\t\t\t\tstate.directional[ directionalLength ] = uniforms;\n\n\t\t\t\tdirectionalLength ++;\n\n\t\t\t} else if ( light.isSpotLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\n\n\t\t\t\tuniforms.color.copy( color ).multiplyScalar( intensity );\n\t\t\t\tuniforms.distance = distance;\n\n\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tvector3.setFromMatrixPosition( light.target.matrixWorld );\n\t\t\t\tuniforms.direction.sub( vector3 );\n\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\n\t\t\t\tuniforms.coneCos = Math.cos( light.angle );\n\t\t\t\tuniforms.penumbraCos = Math.cos( light.angle * ( 1 - light.penumbra ) );\n\t\t\t\tuniforms.decay = light.decay;\n\n\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\tconst shadow = light.shadow;\n\n\t\t\t\t\tconst shadowUniforms = shadowCache.get( light );\n\n\t\t\t\t\tshadowUniforms.shadowBias = shadow.bias;\n\t\t\t\t\tshadowUniforms.shadowNormalBias = shadow.normalBias;\n\t\t\t\t\tshadowUniforms.shadowRadius = shadow.radius;\n\t\t\t\t\tshadowUniforms.shadowMapSize = shadow.mapSize;\n\n\t\t\t\t\tstate.spotShadow[ spotLength ] = shadowUniforms;\n\t\t\t\t\tstate.spotShadowMap[ spotLength ] = shadowMap;\n\t\t\t\t\tstate.spotShadowMatrix[ spotLength ] = light.shadow.matrix;\n\n\t\t\t\t\tnumSpotShadows ++;\n\n\t\t\t\t}\n\n\t\t\t\tstate.spot[ spotLength ] = uniforms;\n\n\t\t\t\tspotLength ++;\n\n\t\t\t} else if ( light.isRectAreaLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\t// (a) intensity is the total visible light emitted\n\t\t\t\t//uniforms.color.copy( color ).multiplyScalar( intensity / ( light.width * light.height * Math.PI ) );\n\n\t\t\t\t// (b) intensity is the brightness of the light\n\t\t\t\tuniforms.color.copy( color ).multiplyScalar( intensity );\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\n\n\t\t\t\t// extract local rotation of light to derive width/height half vectors\n\t\t\t\tmatrix42.identity();\n\t\t\t\tmatrix4.copy( light.matrixWorld );\n\t\t\t\tmatrix4.premultiply( viewMatrix );\n\t\t\t\tmatrix42.extractRotation( matrix4 );\n\n\t\t\t\tuniforms.halfWidth.set( light.width * 0.5, 0.0, 0.0 );\n\t\t\t\tuniforms.halfHeight.set( 0.0, light.height * 0.5, 0.0 );\n\n\t\t\t\tuniforms.halfWidth.applyMatrix4( matrix42 );\n\t\t\t\tuniforms.halfHeight.applyMatrix4( matrix42 );\n\n\t\t\t\t// TODO (abelnation): RectAreaLight distance?\n\t\t\t\t// uniforms.distance = distance;\n\n\t\t\t\tstate.rectArea[ rectAreaLength ] = uniforms;\n\n\t\t\t\trectAreaLength ++;\n\n\t\t\t} else if ( light.isPointLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\n\n\t\t\t\tuniforms.color.copy( light.color ).multiplyScalar( light.intensity );\n\t\t\t\tuniforms.distance = light.distance;\n\t\t\t\tuniforms.decay = light.decay;\n\n\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\tconst shadow = light.shadow;\n\n\t\t\t\t\tconst shadowUniforms = shadowCache.get( light );\n\n\t\t\t\t\tshadowUniforms.shadowBias = shadow.bias;\n\t\t\t\t\tshadowUniforms.shadowNormalBias = shadow.normalBias;\n\t\t\t\t\tshadowUniforms.shadowRadius = shadow.radius;\n\t\t\t\t\tshadowUniforms.shadowMapSize = shadow.mapSize;\n\t\t\t\t\tshadowUniforms.shadowCameraNear = shadow.camera.near;\n\t\t\t\t\tshadowUniforms.shadowCameraFar = shadow.camera.far;\n\n\t\t\t\t\tstate.pointShadow[ pointLength ] = shadowUniforms;\n\t\t\t\t\tstate.pointShadowMap[ pointLength ] = shadowMap;\n\t\t\t\t\tstate.pointShadowMatrix[ pointLength ] = light.shadow.matrix;\n\n\t\t\t\t\tnumPointShadows ++;\n\n\t\t\t\t}\n\n\t\t\t\tstate.point[ pointLength ] = uniforms;\n\n\t\t\t\tpointLength ++;\n\n\t\t\t} else if ( light.isHemisphereLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\t\t\t\tuniforms.direction.normalize();\n\n\t\t\t\tuniforms.skyColor.copy( light.color ).multiplyScalar( intensity );\n\t\t\t\tuniforms.groundColor.copy( light.groundColor ).multiplyScalar( intensity );\n\n\t\t\t\tstate.hemi[ hemiLength ] = uniforms;\n\n\t\t\t\themiLength ++;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( rectAreaLength > 0 ) {\n\n\t\t\tstate.rectAreaLTC1 = UniformsLib.LTC_1;\n\t\t\tstate.rectAreaLTC2 = UniformsLib.LTC_2;\n\n\t\t}\n\n\t\tstate.ambient[ 0 ] = r;\n\t\tstate.ambient[ 1 ] = g;\n\t\tstate.ambient[ 2 ] = b;\n\n\t\tconst hash = state.hash;\n\n\t\tif ( hash.directionalLength !== directionalLength ||\n\t\t\thash.pointLength !== pointLength ||\n\t\t\thash.spotLength !== spotLength ||\n\t\t\thash.rectAreaLength !== rectAreaLength ||\n\t\t\thash.hemiLength !== hemiLength ||\n\t\t\thash.numDirectionalShadows !== numDirectionalShadows ||\n\t\t\thash.numPointShadows !== numPointShadows ||\n\t\t\thash.numSpotShadows !== numSpotShadows ) {\n\n\t\t\tstate.directional.length = directionalLength;\n\t\t\tstate.spot.length = spotLength;\n\t\t\tstate.rectArea.length = rectAreaLength;\n\t\t\tstate.point.length = pointLength;\n\t\t\tstate.hemi.length = hemiLength;\n\n\t\t\tstate.directionalShadow.length = numDirectionalShadows;\n\t\t\tstate.directionalShadowMap.length = numDirectionalShadows;\n\t\t\tstate.pointShadow.length = numPointShadows;\n\t\t\tstate.pointShadowMap.length = numPointShadows;\n\t\t\tstate.spotShadow.length = numSpotShadows;\n\t\t\tstate.spotShadowMap.length = numSpotShadows;\n\t\t\tstate.directionalShadowMatrix.length = numDirectionalShadows;\n\t\t\tstate.pointShadowMatrix.length = numPointShadows;\n\t\t\tstate.spotShadowMatrix.length = numSpotShadows;\n\n\t\t\thash.directionalLength = directionalLength;\n\t\t\thash.pointLength = pointLength;\n\t\t\thash.spotLength = spotLength;\n\t\t\thash.rectAreaLength = rectAreaLength;\n\t\t\thash.hemiLength = hemiLength;\n\n\t\t\thash.numDirectionalShadows = numDirectionalShadows;\n\t\t\thash.numPointShadows = numPointShadows;\n\t\t\thash.numSpotShadows = numSpotShadows;\n\n\t\t\tstate.version = nextVersion ++;\n\n\t\t}\n\n\t}\n\n\treturn {\n\t\tsetup: setup,\n\t\tstate: state\n\t};\n\n}\n\nfunction WebGLRenderState() {\n\n\tconst lights = new WebGLLights();\n\n\tconst lightsArray = [];\n\tconst shadowsArray = [];\n\n\tfunction init() {\n\n\t\tlightsArray.length = 0;\n\t\tshadowsArray.length = 0;\n\n\t}\n\n\tfunction pushLight( light ) {\n\n\t\tlightsArray.push( light );\n\n\t}\n\n\tfunction pushShadow( shadowLight ) {\n\n\t\tshadowsArray.push( shadowLight );\n\n\t}\n\n\tfunction setupLights( camera ) {\n\n\t\tlights.setup( lightsArray, shadowsArray, camera );\n\n\t}\n\n\tconst state = {\n\t\tlightsArray: lightsArray,\n\t\tshadowsArray: shadowsArray,\n\n\t\tlights: lights\n\t};\n\n\treturn {\n\t\tinit: init,\n\t\tstate: state,\n\t\tsetupLights: setupLights,\n\n\t\tpushLight: pushLight,\n\t\tpushShadow: pushShadow\n\t};\n\n}\n\nfunction WebGLRenderStates() {\n\n\tlet renderStates = new WeakMap();\n\n\tfunction get( scene, camera ) {\n\n\t\tlet renderState;\n\n\t\tif ( renderStates.has( scene ) === false ) {\n\n\t\t\trenderState = new WebGLRenderState();\n\t\t\trenderStates.set( scene, new WeakMap() );\n\t\t\trenderStates.get( scene ).set( camera, renderState );\n\n\t\t} else {\n\n\t\t\tif ( renderStates.get( scene ).has( camera ) === false ) {\n\n\t\t\t\trenderState = new WebGLRenderState();\n\t\t\t\trenderStates.get( scene ).set( camera, renderState );\n\n\t\t\t} else {\n\n\t\t\t\trenderState = renderStates.get( scene ).get( camera );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn renderState;\n\n\t}\n\n\tfunction dispose() {\n\n\t\trenderStates = new WeakMap();\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tdispose: dispose\n\t};\n\n}\n\n/**\n * parameters = {\n *\n *  opacity: <float>,\n *\n *  map: new THREE.Texture( <Image> ),\n *\n *  alphaMap: new THREE.Texture( <Image> ),\n *\n *  displacementMap: new THREE.Texture( <Image> ),\n *  displacementScale: <float>,\n *  displacementBias: <float>,\n *\n *  wireframe: <boolean>,\n *  wireframeLinewidth: <float>\n * }\n */\n\nfunction MeshDepthMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshDepthMaterial';\n\n\tthis.depthPacking = BasicDepthPacking;\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\n\tthis.map = null;\n\n\tthis.alphaMap = null;\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\n\tthis.fog = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshDepthMaterial.prototype = Object.create( Material.prototype );\nMeshDepthMaterial.prototype.constructor = MeshDepthMaterial;\n\nMeshDepthMaterial.prototype.isMeshDepthMaterial = true;\n\nMeshDepthMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.depthPacking = source.depthPacking;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\n\tthis.map = source.map;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\treturn this;\n\n};\n\n/**\n * parameters = {\n *\n *  referencePosition: <float>,\n *  nearDistance: <float>,\n *  farDistance: <float>,\n *\n *  skinning: <bool>,\n *  morphTargets: <bool>,\n *\n *  map: new THREE.Texture( <Image> ),\n *\n *  alphaMap: new THREE.Texture( <Image> ),\n *\n *  displacementMap: new THREE.Texture( <Image> ),\n *  displacementScale: <float>,\n *  displacementBias: <float>\n *\n * }\n */\n\nfunction MeshDistanceMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshDistanceMaterial';\n\n\tthis.referencePosition = new Vector3();\n\tthis.nearDistance = 1;\n\tthis.farDistance = 1000;\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\n\tthis.map = null;\n\n\tthis.alphaMap = null;\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.fog = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshDistanceMaterial.prototype = Object.create( Material.prototype );\nMeshDistanceMaterial.prototype.constructor = MeshDistanceMaterial;\n\nMeshDistanceMaterial.prototype.isMeshDistanceMaterial = true;\n\nMeshDistanceMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.referencePosition.copy( source.referencePosition );\n\tthis.nearDistance = source.nearDistance;\n\tthis.farDistance = source.farDistance;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\n\tthis.map = source.map;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\treturn this;\n\n};\n\nvar vsm_frag = \"uniform sampler2D shadow_pass;\\nuniform vec2 resolution;\\nuniform float radius;\\n#include <packing>\\nvoid main() {\\n\\tfloat mean = 0.0;\\n\\tfloat squared_mean = 0.0;\\n\\tfloat depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy ) / resolution ) );\\n\\tfor ( float i = -1.0; i < 1.0 ; i += SAMPLE_RATE) {\\n\\t\\t#ifdef HORIZONAL_PASS\\n\\t\\t\\tvec2 distribution = unpackRGBATo2Half( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( i, 0.0 ) * radius ) / resolution ) );\\n\\t\\t\\tmean += distribution.x;\\n\\t\\t\\tsquared_mean += distribution.y * distribution.y + distribution.x * distribution.x;\\n\\t\\t#else\\n\\t\\t\\tfloat depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( 0.0, i ) * radius ) / resolution ) );\\n\\t\\t\\tmean += depth;\\n\\t\\t\\tsquared_mean += depth * depth;\\n\\t\\t#endif\\n\\t}\\n\\tmean = mean * HALF_SAMPLE_RATE;\\n\\tsquared_mean = squared_mean * HALF_SAMPLE_RATE;\\n\\tfloat std_dev = sqrt( squared_mean - mean * mean );\\n\\tgl_FragColor = pack2HalfToRGBA( vec2( mean, std_dev ) );\\n}\";\n\nvar vsm_vert = \"void main() {\\n\\tgl_Position = vec4( position, 1.0 );\\n}\";\n\nfunction WebGLShadowMap( _renderer, _objects, maxTextureSize ) {\n\n\tlet _frustum = new Frustum();\n\n\tconst _shadowMapSize = new Vector2(),\n\t\t_viewportSize = new Vector2(),\n\n\t\t_viewport = new Vector4(),\n\n\t\t_depthMaterials = [],\n\t\t_distanceMaterials = [],\n\n\t\t_materialCache = {};\n\n\tconst shadowSide = { 0: BackSide, 1: FrontSide, 2: DoubleSide };\n\n\tconst shadowMaterialVertical = new ShaderMaterial( {\n\n\t\tdefines: {\n\t\t\tSAMPLE_RATE: 2.0 / 8.0,\n\t\t\tHALF_SAMPLE_RATE: 1.0 / 8.0\n\t\t},\n\n\t\tuniforms: {\n\t\t\tshadow_pass: { value: null },\n\t\t\tresolution: { value: new Vector2() },\n\t\t\tradius: { value: 4.0 }\n\t\t},\n\n\t\tvertexShader: vsm_vert,\n\n\t\tfragmentShader: vsm_frag\n\n\t} );\n\n\tconst shadowMaterialHorizonal = shadowMaterialVertical.clone();\n\tshadowMaterialHorizonal.defines.HORIZONAL_PASS = 1;\n\n\tconst fullScreenTri = new BufferGeometry();\n\tfullScreenTri.setAttribute(\n\t\t\"position\",\n\t\tnew BufferAttribute(\n\t\t\tnew Float32Array( [ - 1, - 1, 0.5, 3, - 1, 0.5, - 1, 3, 0.5 ] ),\n\t\t\t3\n\t\t)\n\t);\n\n\tconst fullScreenMesh = new Mesh( fullScreenTri, shadowMaterialVertical );\n\n\tconst scope = this;\n\n\tthis.enabled = false;\n\n\tthis.autoUpdate = true;\n\tthis.needsUpdate = false;\n\n\tthis.type = PCFShadowMap;\n\n\tthis.render = function ( lights, scene, camera ) {\n\n\t\tif ( scope.enabled === false ) return;\n\t\tif ( scope.autoUpdate === false && scope.needsUpdate === false ) return;\n\n\t\tif ( lights.length === 0 ) return;\n\n\t\tconst currentRenderTarget = _renderer.getRenderTarget();\n\t\tconst activeCubeFace = _renderer.getActiveCubeFace();\n\t\tconst activeMipmapLevel = _renderer.getActiveMipmapLevel();\n\n\t\tconst _state = _renderer.state;\n\n\t\t// Set GL state for depth map.\n\t\t_state.setBlending( NoBlending );\n\t\t_state.buffers.color.setClear( 1, 1, 1, 1 );\n\t\t_state.buffers.depth.setTest( true );\n\t\t_state.setScissorTest( false );\n\n\t\t// render depth map\n\n\t\tfor ( let i = 0, il = lights.length; i < il; i ++ ) {\n\n\t\t\tconst light = lights[ i ];\n\t\t\tconst shadow = light.shadow;\n\n\t\t\tif ( shadow.autoUpdate === false && shadow.needsUpdate === false ) continue;\n\n\t\t\tif ( shadow === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLShadowMap:', light, 'has no shadow.' );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\t_shadowMapSize.copy( shadow.mapSize );\n\n\t\t\tconst shadowFrameExtents = shadow.getFrameExtents();\n\n\t\t\t_shadowMapSize.multiply( shadowFrameExtents );\n\n\t\t\t_viewportSize.copy( shadow.mapSize );\n\n\t\t\tif ( _shadowMapSize.x > maxTextureSize || _shadowMapSize.y > maxTextureSize ) {\n\n\t\t\t\tif ( _shadowMapSize.x > maxTextureSize ) {\n\n\t\t\t\t\t_viewportSize.x = Math.floor( maxTextureSize / shadowFrameExtents.x );\n\t\t\t\t\t_shadowMapSize.x = _viewportSize.x * shadowFrameExtents.x;\n\t\t\t\t\tshadow.mapSize.x = _viewportSize.x;\n\n\t\t\t\t}\n\n\t\t\t\tif ( _shadowMapSize.y > maxTextureSize ) {\n\n\t\t\t\t\t_viewportSize.y = Math.floor( maxTextureSize / shadowFrameExtents.y );\n\t\t\t\t\t_shadowMapSize.y = _viewportSize.y * shadowFrameExtents.y;\n\t\t\t\t\tshadow.mapSize.y = _viewportSize.y;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( shadow.map === null && ! shadow.isPointLightShadow && this.type === VSMShadowMap ) {\n\n\t\t\t\tconst pars = { minFilter: LinearFilter, magFilter: LinearFilter, format: RGBAFormat };\n\n\t\t\t\tshadow.map = new WebGLRenderTarget( _shadowMapSize.x, _shadowMapSize.y, pars );\n\t\t\t\tshadow.map.texture.name = light.name + \".shadowMap\";\n\n\t\t\t\tshadow.mapPass = new WebGLRenderTarget( _shadowMapSize.x, _shadowMapSize.y, pars );\n\n\t\t\t\tshadow.camera.updateProjectionMatrix();\n\n\t\t\t}\n\n\t\t\tif ( shadow.map === null ) {\n\n\t\t\t\tconst pars = { minFilter: NearestFilter, magFilter: NearestFilter, format: RGBAFormat };\n\n\t\t\t\tshadow.map = new WebGLRenderTarget( _shadowMapSize.x, _shadowMapSize.y, pars );\n\t\t\t\tshadow.map.texture.name = light.name + \".shadowMap\";\n\n\t\t\t\tshadow.camera.updateProjectionMatrix();\n\n\t\t\t}\n\n\t\t\t_renderer.setRenderTarget( shadow.map );\n\t\t\t_renderer.clear();\n\n\t\t\tconst viewportCount = shadow.getViewportCount();\n\n\t\t\tfor ( let vp = 0; vp < viewportCount; vp ++ ) {\n\n\t\t\t\tconst viewport = shadow.getViewport( vp );\n\n\t\t\t\t_viewport.set(\n\t\t\t\t\t_viewportSize.x * viewport.x,\n\t\t\t\t\t_viewportSize.y * viewport.y,\n\t\t\t\t\t_viewportSize.x * viewport.z,\n\t\t\t\t\t_viewportSize.y * viewport.w\n\t\t\t\t);\n\n\t\t\t\t_state.viewport( _viewport );\n\n\t\t\t\tshadow.updateMatrices( light, vp );\n\n\t\t\t\t_frustum = shadow.getFrustum();\n\n\t\t\t\trenderObject( scene, camera, shadow.camera, light, this.type );\n\n\t\t\t}\n\n\t\t\t// do blur pass for VSM\n\n\t\t\tif ( ! shadow.isPointLightShadow && this.type === VSMShadowMap ) {\n\n\t\t\t\tVSMPass( shadow, camera );\n\n\t\t\t}\n\n\t\t\tshadow.needsUpdate = false;\n\n\t\t}\n\n\t\tscope.needsUpdate = false;\n\n\t\t_renderer.setRenderTarget( currentRenderTarget, activeCubeFace, activeMipmapLevel );\n\n\t};\n\n\tfunction VSMPass( shadow, camera ) {\n\n\t\tconst geometry = _objects.update( fullScreenMesh );\n\n\t\t// vertical pass\n\n\t\tshadowMaterialVertical.uniforms.shadow_pass.value = shadow.map.texture;\n\t\tshadowMaterialVertical.uniforms.resolution.value = shadow.mapSize;\n\t\tshadowMaterialVertical.uniforms.radius.value = shadow.radius;\n\t\t_renderer.setRenderTarget( shadow.mapPass );\n\t\t_renderer.clear();\n\t\t_renderer.renderBufferDirect( camera, null, geometry, shadowMaterialVertical, fullScreenMesh, null );\n\n\t\t// horizonal pass\n\n\t\tshadowMaterialHorizonal.uniforms.shadow_pass.value = shadow.mapPass.texture;\n\t\tshadowMaterialHorizonal.uniforms.resolution.value = shadow.mapSize;\n\t\tshadowMaterialHorizonal.uniforms.radius.value = shadow.radius;\n\t\t_renderer.setRenderTarget( shadow.map );\n\t\t_renderer.clear();\n\t\t_renderer.renderBufferDirect( camera, null, geometry, shadowMaterialHorizonal, fullScreenMesh, null );\n\n\t}\n\n\tfunction getDepthMaterialVariant( useMorphing, useSkinning, useInstancing ) {\n\n\t\tconst index = useMorphing << 0 | useSkinning << 1 | useInstancing << 2;\n\n\t\tlet material = _depthMaterials[ index ];\n\n\t\tif ( material === undefined ) {\n\n\t\t\tmaterial = new MeshDepthMaterial( {\n\n\t\t\t\tdepthPacking: RGBADepthPacking,\n\n\t\t\t\tmorphTargets: useMorphing,\n\t\t\t\tskinning: useSkinning\n\n\t\t\t} );\n\n\t\t\t_depthMaterials[ index ] = material;\n\n\t\t}\n\n\t\treturn material;\n\n\t}\n\n\tfunction getDistanceMaterialVariant( useMorphing, useSkinning, useInstancing ) {\n\n\t\tconst index = useMorphing << 0 | useSkinning << 1 | useInstancing << 2;\n\n\t\tlet material = _distanceMaterials[ index ];\n\n\t\tif ( material === undefined ) {\n\n\t\t\tmaterial = new MeshDistanceMaterial( {\n\n\t\t\t\tmorphTargets: useMorphing,\n\t\t\t\tskinning: useSkinning\n\n\t\t\t} );\n\n\t\t\t_distanceMaterials[ index ] = material;\n\n\t\t}\n\n\t\treturn material;\n\n\t}\n\n\tfunction getDepthMaterial( object, geometry, material, light, shadowCameraNear, shadowCameraFar, type ) {\n\n\t\tlet result = null;\n\n\t\tlet getMaterialVariant = getDepthMaterialVariant;\n\t\tlet customMaterial = object.customDepthMaterial;\n\n\t\tif ( light.isPointLight === true ) {\n\n\t\t\tgetMaterialVariant = getDistanceMaterialVariant;\n\t\t\tcustomMaterial = object.customDistanceMaterial;\n\n\t\t}\n\n\t\tif ( customMaterial === undefined ) {\n\n\t\t\tlet useMorphing = false;\n\n\t\t\tif ( material.morphTargets === true ) {\n\n\t\t\t\tuseMorphing = geometry.morphAttributes && geometry.morphAttributes.position && geometry.morphAttributes.position.length > 0;\n\n\t\t\t}\n\n\t\t\tlet useSkinning = false;\n\n\t\t\tif ( object.isSkinnedMesh === true ) {\n\n\t\t\t\tif ( material.skinning === true ) {\n\n\t\t\t\t\tuseSkinning = true;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLShadowMap: THREE.SkinnedMesh with material.skinning set to false:', object );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst useInstancing = object.isInstancedMesh === true;\n\n\t\t\tresult = getMaterialVariant( useMorphing, useSkinning, useInstancing );\n\n\t\t} else {\n\n\t\t\tresult = customMaterial;\n\n\t\t}\n\n\t\tif ( _renderer.localClippingEnabled &&\n\t\t\t\tmaterial.clipShadows === true &&\n\t\t\t\tmaterial.clippingPlanes.length !== 0 ) {\n\n\t\t\t// in this case we need a unique material instance reflecting the\n\t\t\t// appropriate state\n\n\t\t\tconst keyA = result.uuid, keyB = material.uuid;\n\n\t\t\tlet materialsForVariant = _materialCache[ keyA ];\n\n\t\t\tif ( materialsForVariant === undefined ) {\n\n\t\t\t\tmaterialsForVariant = {};\n\t\t\t\t_materialCache[ keyA ] = materialsForVariant;\n\n\t\t\t}\n\n\t\t\tlet cachedMaterial = materialsForVariant[ keyB ];\n\n\t\t\tif ( cachedMaterial === undefined ) {\n\n\t\t\t\tcachedMaterial = result.clone();\n\t\t\t\tmaterialsForVariant[ keyB ] = cachedMaterial;\n\n\t\t\t}\n\n\t\t\tresult = cachedMaterial;\n\n\t\t}\n\n\t\tresult.visible = material.visible;\n\t\tresult.wireframe = material.wireframe;\n\n\t\tif ( type === VSMShadowMap ) {\n\n\t\t\tresult.side = ( material.shadowSide !== null ) ? material.shadowSide : material.side;\n\n\t\t} else {\n\n\t\t\tresult.side = ( material.shadowSide !== null ) ? material.shadowSide : shadowSide[ material.side ];\n\n\t\t}\n\n\t\tresult.clipShadows = material.clipShadows;\n\t\tresult.clippingPlanes = material.clippingPlanes;\n\t\tresult.clipIntersection = material.clipIntersection;\n\n\t\tresult.wireframeLinewidth = material.wireframeLinewidth;\n\t\tresult.linewidth = material.linewidth;\n\n\t\tif ( light.isPointLight === true && result.isMeshDistanceMaterial === true ) {\n\n\t\t\tresult.referencePosition.setFromMatrixPosition( light.matrixWorld );\n\t\t\tresult.nearDistance = shadowCameraNear;\n\t\t\tresult.farDistance = shadowCameraFar;\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n\tfunction renderObject( object, camera, shadowCamera, light, type ) {\n\n\t\tif ( object.visible === false ) return;\n\n\t\tconst visible = object.layers.test( camera.layers );\n\n\t\tif ( visible && ( object.isMesh || object.isLine || object.isPoints ) ) {\n\n\t\t\tif ( ( object.castShadow || ( object.receiveShadow && type === VSMShadowMap ) ) && ( ! object.frustumCulled || _frustum.intersectsObject( object ) ) ) {\n\n\t\t\t\tobject.modelViewMatrix.multiplyMatrices( shadowCamera.matrixWorldInverse, object.matrixWorld );\n\n\t\t\t\tconst geometry = _objects.update( object );\n\t\t\t\tconst material = object.material;\n\n\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\tconst groups = geometry.groups;\n\n\t\t\t\t\tfor ( let k = 0, kl = groups.length; k < kl; k ++ ) {\n\n\t\t\t\t\t\tconst group = groups[ k ];\n\t\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\t\tif ( groupMaterial && groupMaterial.visible ) {\n\n\t\t\t\t\t\t\tconst depthMaterial = getDepthMaterial( object, geometry, groupMaterial, light, shadowCamera.near, shadowCamera.far, type );\n\n\t\t\t\t\t\t\t_renderer.renderBufferDirect( shadowCamera, null, geometry, depthMaterial, object, group );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( material.visible ) {\n\n\t\t\t\t\tconst depthMaterial = getDepthMaterial( object, geometry, material, light, shadowCamera.near, shadowCamera.far, type );\n\n\t\t\t\t\t_renderer.renderBufferDirect( shadowCamera, null, geometry, depthMaterial, object, null );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst children = object.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\trenderObject( children[ i ], camera, shadowCamera, light, type );\n\n\t\t}\n\n\t}\n\n}\n\nfunction WebGLState( gl, extensions, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\n\tfunction ColorBuffer() {\n\n\t\tlet locked = false;\n\n\t\tconst color = new Vector4();\n\t\tlet currentColorMask = null;\n\t\tconst currentColorClear = new Vector4( 0, 0, 0, 0 );\n\n\t\treturn {\n\n\t\t\tsetMask: function ( colorMask ) {\n\n\t\t\t\tif ( currentColorMask !== colorMask && ! locked ) {\n\n\t\t\t\t\tgl.colorMask( colorMask, colorMask, colorMask, colorMask );\n\t\t\t\t\tcurrentColorMask = colorMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetLocked: function ( lock ) {\n\n\t\t\t\tlocked = lock;\n\n\t\t\t},\n\n\t\t\tsetClear: function ( r, g, b, a, premultipliedAlpha ) {\n\n\t\t\t\tif ( premultipliedAlpha === true ) {\n\n\t\t\t\t\tr *= a; g *= a; b *= a;\n\n\t\t\t\t}\n\n\t\t\t\tcolor.set( r, g, b, a );\n\n\t\t\t\tif ( currentColorClear.equals( color ) === false ) {\n\n\t\t\t\t\tgl.clearColor( r, g, b, a );\n\t\t\t\t\tcurrentColorClear.copy( color );\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\treset: function () {\n\n\t\t\t\tlocked = false;\n\n\t\t\t\tcurrentColorMask = null;\n\t\t\t\tcurrentColorClear.set( - 1, 0, 0, 0 ); // set to invalid state\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\tfunction DepthBuffer() {\n\n\t\tlet locked = false;\n\n\t\tlet currentDepthMask = null;\n\t\tlet currentDepthFunc = null;\n\t\tlet currentDepthClear = null;\n\n\t\treturn {\n\n\t\t\tsetTest: function ( depthTest ) {\n\n\t\t\t\tif ( depthTest ) {\n\n\t\t\t\t\tenable( 2929 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tdisable( 2929 );\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetMask: function ( depthMask ) {\n\n\t\t\t\tif ( currentDepthMask !== depthMask && ! locked ) {\n\n\t\t\t\t\tgl.depthMask( depthMask );\n\t\t\t\t\tcurrentDepthMask = depthMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetFunc: function ( depthFunc ) {\n\n\t\t\t\tif ( currentDepthFunc !== depthFunc ) {\n\n\t\t\t\t\tif ( depthFunc ) {\n\n\t\t\t\t\t\tswitch ( depthFunc ) {\n\n\t\t\t\t\t\t\tcase NeverDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 512 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase AlwaysDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 519 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase LessDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 513 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase LessEqualDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 515 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase EqualDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 514 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase GreaterEqualDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 518 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase GreaterDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 516 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase NotEqualDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 517 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tdefault:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 515 );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tgl.depthFunc( 515 );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tcurrentDepthFunc = depthFunc;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetLocked: function ( lock ) {\n\n\t\t\t\tlocked = lock;\n\n\t\t\t},\n\n\t\t\tsetClear: function ( depth ) {\n\n\t\t\t\tif ( currentDepthClear !== depth ) {\n\n\t\t\t\t\tgl.clearDepth( depth );\n\t\t\t\t\tcurrentDepthClear = depth;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\treset: function () {\n\n\t\t\t\tlocked = false;\n\n\t\t\t\tcurrentDepthMask = null;\n\t\t\t\tcurrentDepthFunc = null;\n\t\t\t\tcurrentDepthClear = null;\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\tfunction StencilBuffer() {\n\n\t\tlet locked = false;\n\n\t\tlet currentStencilMask = null;\n\t\tlet currentStencilFunc = null;\n\t\tlet currentStencilRef = null;\n\t\tlet currentStencilFuncMask = null;\n\t\tlet currentStencilFail = null;\n\t\tlet currentStencilZFail = null;\n\t\tlet currentStencilZPass = null;\n\t\tlet currentStencilClear = null;\n\n\t\treturn {\n\n\t\t\tsetTest: function ( stencilTest ) {\n\n\t\t\t\tif ( ! locked ) {\n\n\t\t\t\t\tif ( stencilTest ) {\n\n\t\t\t\t\t\tenable( 2960 );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tdisable( 2960 );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetMask: function ( stencilMask ) {\n\n\t\t\t\tif ( currentStencilMask !== stencilMask && ! locked ) {\n\n\t\t\t\t\tgl.stencilMask( stencilMask );\n\t\t\t\t\tcurrentStencilMask = stencilMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetFunc: function ( stencilFunc, stencilRef, stencilMask ) {\n\n\t\t\t\tif ( currentStencilFunc !== stencilFunc ||\n\t\t\t\t     currentStencilRef !== stencilRef ||\n\t\t\t\t     currentStencilFuncMask !== stencilMask ) {\n\n\t\t\t\t\tgl.stencilFunc( stencilFunc, stencilRef, stencilMask );\n\n\t\t\t\t\tcurrentStencilFunc = stencilFunc;\n\t\t\t\t\tcurrentStencilRef = stencilRef;\n\t\t\t\t\tcurrentStencilFuncMask = stencilMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetOp: function ( stencilFail, stencilZFail, stencilZPass ) {\n\n\t\t\t\tif ( currentStencilFail !== stencilFail ||\n\t\t\t\t     currentStencilZFail !== stencilZFail ||\n\t\t\t\t     currentStencilZPass !== stencilZPass ) {\n\n\t\t\t\t\tgl.stencilOp( stencilFail, stencilZFail, stencilZPass );\n\n\t\t\t\t\tcurrentStencilFail = stencilFail;\n\t\t\t\t\tcurrentStencilZFail = stencilZFail;\n\t\t\t\t\tcurrentStencilZPass = stencilZPass;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetLocked: function ( lock ) {\n\n\t\t\t\tlocked = lock;\n\n\t\t\t},\n\n\t\t\tsetClear: function ( stencil ) {\n\n\t\t\t\tif ( currentStencilClear !== stencil ) {\n\n\t\t\t\t\tgl.clearStencil( stencil );\n\t\t\t\t\tcurrentStencilClear = stencil;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\treset: function () {\n\n\t\t\t\tlocked = false;\n\n\t\t\t\tcurrentStencilMask = null;\n\t\t\t\tcurrentStencilFunc = null;\n\t\t\t\tcurrentStencilRef = null;\n\t\t\t\tcurrentStencilFuncMask = null;\n\t\t\t\tcurrentStencilFail = null;\n\t\t\t\tcurrentStencilZFail = null;\n\t\t\t\tcurrentStencilZPass = null;\n\t\t\t\tcurrentStencilClear = null;\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\t//\n\n\tconst colorBuffer = new ColorBuffer();\n\tconst depthBuffer = new DepthBuffer();\n\tconst stencilBuffer = new StencilBuffer();\n\n\tlet enabledCapabilities = {};\n\n\tlet currentProgram = null;\n\n\tlet currentBlendingEnabled = null;\n\tlet currentBlending = null;\n\tlet currentBlendEquation = null;\n\tlet currentBlendSrc = null;\n\tlet currentBlendDst = null;\n\tlet currentBlendEquationAlpha = null;\n\tlet currentBlendSrcAlpha = null;\n\tlet currentBlendDstAlpha = null;\n\tlet currentPremultipledAlpha = false;\n\n\tlet currentFlipSided = null;\n\tlet currentCullFace = null;\n\n\tlet currentLineWidth = null;\n\n\tlet currentPolygonOffsetFactor = null;\n\tlet currentPolygonOffsetUnits = null;\n\n\tconst maxTextures = gl.getParameter( 35661 );\n\n\tlet lineWidthAvailable = false;\n\tlet version = 0;\n\tconst glVersion = gl.getParameter( 7938 );\n\n\tif ( glVersion.indexOf( 'WebGL' ) !== - 1 ) {\n\n\t\tversion = parseFloat( /^WebGL\\ ([0-9])/.exec( glVersion )[ 1 ] );\n\t\tlineWidthAvailable = ( version >= 1.0 );\n\n\t} else if ( glVersion.indexOf( 'OpenGL ES' ) !== - 1 ) {\n\n\t\tversion = parseFloat( /^OpenGL\\ ES\\ ([0-9])/.exec( glVersion )[ 1 ] );\n\t\tlineWidthAvailable = ( version >= 2.0 );\n\n\t}\n\n\tlet currentTextureSlot = null;\n\tlet currentBoundTextures = {};\n\n\tconst currentScissor = new Vector4();\n\tconst currentViewport = new Vector4();\n\n\tfunction createTexture( type, target, count ) {\n\n\t\tconst data = new Uint8Array( 4 ); // 4 is required to match default unpack alignment of 4.\n\t\tconst texture = gl.createTexture();\n\n\t\tgl.bindTexture( type, texture );\n\t\tgl.texParameteri( type, 10241, 9728 );\n\t\tgl.texParameteri( type, 10240, 9728 );\n\n\t\tfor ( let i = 0; i < count; i ++ ) {\n\n\t\t\tgl.texImage2D( target + i, 0, 6408, 1, 1, 0, 6408, 5121, data );\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n\tconst emptyTextures = {};\n\temptyTextures[ 3553 ] = createTexture( 3553, 3553, 1 );\n\temptyTextures[ 34067 ] = createTexture( 34067, 34069, 6 );\n\n\t// init\n\n\tcolorBuffer.setClear( 0, 0, 0, 1 );\n\tdepthBuffer.setClear( 1 );\n\tstencilBuffer.setClear( 0 );\n\n\tenable( 2929 );\n\tdepthBuffer.setFunc( LessEqualDepth );\n\n\tsetFlipSided( false );\n\tsetCullFace( CullFaceBack );\n\tenable( 2884 );\n\n\tsetBlending( NoBlending );\n\n\t//\n\n\tfunction enable( id ) {\n\n\t\tif ( enabledCapabilities[ id ] !== true ) {\n\n\t\t\tgl.enable( id );\n\t\t\tenabledCapabilities[ id ] = true;\n\n\t\t}\n\n\t}\n\n\tfunction disable( id ) {\n\n\t\tif ( enabledCapabilities[ id ] !== false ) {\n\n\t\t\tgl.disable( id );\n\t\t\tenabledCapabilities[ id ] = false;\n\n\t\t}\n\n\t}\n\n\tfunction useProgram( program ) {\n\n\t\tif ( currentProgram !== program ) {\n\n\t\t\tgl.useProgram( program );\n\n\t\t\tcurrentProgram = program;\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\treturn false;\n\n\t}\n\n\tconst equationToGL = {\n\t\t[ AddEquation ]: 32774,\n\t\t[ SubtractEquation ]: 32778,\n\t\t[ ReverseSubtractEquation ]: 32779\n\t};\n\n\tif ( isWebGL2 ) {\n\n\t\tequationToGL[ MinEquation ] = 32775;\n\t\tequationToGL[ MaxEquation ] = 32776;\n\n\t} else {\n\n\t\tconst extension = extensions.get( 'EXT_blend_minmax' );\n\n\t\tif ( extension !== null ) {\n\n\t\t\tequationToGL[ MinEquation ] = extension.MIN_EXT;\n\t\t\tequationToGL[ MaxEquation ] = extension.MAX_EXT;\n\n\t\t}\n\n\t}\n\n\tconst factorToGL = {\n\t\t[ ZeroFactor ]: 0,\n\t\t[ OneFactor ]: 1,\n\t\t[ SrcColorFactor ]: 768,\n\t\t[ SrcAlphaFactor ]: 770,\n\t\t[ SrcAlphaSaturateFactor ]: 776,\n\t\t[ DstColorFactor ]: 774,\n\t\t[ DstAlphaFactor ]: 772,\n\t\t[ OneMinusSrcColorFactor ]: 769,\n\t\t[ OneMinusSrcAlphaFactor ]: 771,\n\t\t[ OneMinusDstColorFactor ]: 775,\n\t\t[ OneMinusDstAlphaFactor ]: 773\n\t};\n\n\tfunction setBlending( blending, blendEquation, blendSrc, blendDst, blendEquationAlpha, blendSrcAlpha, blendDstAlpha, premultipliedAlpha ) {\n\n\t\tif ( blending === NoBlending ) {\n\n\t\t\tif ( currentBlendingEnabled ) {\n\n\t\t\t\tdisable( 3042 );\n\t\t\t\tcurrentBlendingEnabled = false;\n\n\t\t\t}\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( ! currentBlendingEnabled ) {\n\n\t\t\tenable( 3042 );\n\t\t\tcurrentBlendingEnabled = true;\n\n\t\t}\n\n\t\tif ( blending !== CustomBlending ) {\n\n\t\t\tif ( blending !== currentBlending || premultipliedAlpha !== currentPremultipledAlpha ) {\n\n\t\t\t\tif ( currentBlendEquation !== AddEquation || currentBlendEquationAlpha !== AddEquation ) {\n\n\t\t\t\t\tgl.blendEquation( 32774 );\n\n\t\t\t\t\tcurrentBlendEquation = AddEquation;\n\t\t\t\t\tcurrentBlendEquationAlpha = AddEquation;\n\n\t\t\t\t}\n\n\t\t\t\tif ( premultipliedAlpha ) {\n\n\t\t\t\t\tswitch ( blending ) {\n\n\t\t\t\t\t\tcase NormalBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( 1, 771, 1, 771 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase AdditiveBlending:\n\t\t\t\t\t\t\tgl.blendFunc( 1, 1 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase SubtractiveBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( 0, 0, 769, 771 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase MultiplyBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( 0, 768, 0, 770 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tconsole.error( 'THREE.WebGLState: Invalid blending: ', blending );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tswitch ( blending ) {\n\n\t\t\t\t\t\tcase NormalBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( 770, 771, 1, 771 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase AdditiveBlending:\n\t\t\t\t\t\t\tgl.blendFunc( 770, 1 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase SubtractiveBlending:\n\t\t\t\t\t\t\tgl.blendFunc( 0, 769 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase MultiplyBlending:\n\t\t\t\t\t\t\tgl.blendFunc( 0, 768 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tconsole.error( 'THREE.WebGLState: Invalid blending: ', blending );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tcurrentBlendSrc = null;\n\t\t\t\tcurrentBlendDst = null;\n\t\t\t\tcurrentBlendSrcAlpha = null;\n\t\t\t\tcurrentBlendDstAlpha = null;\n\n\t\t\t\tcurrentBlending = blending;\n\t\t\t\tcurrentPremultipledAlpha = premultipliedAlpha;\n\n\t\t\t}\n\n\t\t\treturn;\n\n\t\t}\n\n\t\t// custom blending\n\n\t\tblendEquationAlpha = blendEquationAlpha || blendEquation;\n\t\tblendSrcAlpha = blendSrcAlpha || blendSrc;\n\t\tblendDstAlpha = blendDstAlpha || blendDst;\n\n\t\tif ( blendEquation !== currentBlendEquation || blendEquationAlpha !== currentBlendEquationAlpha ) {\n\n\t\t\tgl.blendEquationSeparate( equationToGL[ blendEquation ], equationToGL[ blendEquationAlpha ] );\n\n\t\t\tcurrentBlendEquation = blendEquation;\n\t\t\tcurrentBlendEquationAlpha = blendEquationAlpha;\n\n\t\t}\n\n\t\tif ( blendSrc !== currentBlendSrc || blendDst !== currentBlendDst || blendSrcAlpha !== currentBlendSrcAlpha || blendDstAlpha !== currentBlendDstAlpha ) {\n\n\t\t\tgl.blendFuncSeparate( factorToGL[ blendSrc ], factorToGL[ blendDst ], factorToGL[ blendSrcAlpha ], factorToGL[ blendDstAlpha ] );\n\n\t\t\tcurrentBlendSrc = blendSrc;\n\t\t\tcurrentBlendDst = blendDst;\n\t\t\tcurrentBlendSrcAlpha = blendSrcAlpha;\n\t\t\tcurrentBlendDstAlpha = blendDstAlpha;\n\n\t\t}\n\n\t\tcurrentBlending = blending;\n\t\tcurrentPremultipledAlpha = null;\n\n\t}\n\n\tfunction setMaterial( material, frontFaceCW ) {\n\n\t\tmaterial.side === DoubleSide\n\t\t\t? disable( 2884 )\n\t\t\t: enable( 2884 );\n\n\t\tlet flipSided = ( material.side === BackSide );\n\t\tif ( frontFaceCW ) flipSided = ! flipSided;\n\n\t\tsetFlipSided( flipSided );\n\n\t\t( material.blending === NormalBlending && material.transparent === false )\n\t\t\t? setBlending( NoBlending )\n\t\t\t: setBlending( material.blending, material.blendEquation, material.blendSrc, material.blendDst, material.blendEquationAlpha, material.blendSrcAlpha, material.blendDstAlpha, material.premultipliedAlpha );\n\n\t\tdepthBuffer.setFunc( material.depthFunc );\n\t\tdepthBuffer.setTest( material.depthTest );\n\t\tdepthBuffer.setMask( material.depthWrite );\n\t\tcolorBuffer.setMask( material.colorWrite );\n\n\t\tconst stencilWrite = material.stencilWrite;\n\t\tstencilBuffer.setTest( stencilWrite );\n\t\tif ( stencilWrite ) {\n\n\t\t\tstencilBuffer.setMask( material.stencilWriteMask );\n\t\t\tstencilBuffer.setFunc( material.stencilFunc, material.stencilRef, material.stencilFuncMask );\n\t\t\tstencilBuffer.setOp( material.stencilFail, material.stencilZFail, material.stencilZPass );\n\n\t\t}\n\n\t\tsetPolygonOffset( material.polygonOffset, material.polygonOffsetFactor, material.polygonOffsetUnits );\n\n\t}\n\n\t//\n\n\tfunction setFlipSided( flipSided ) {\n\n\t\tif ( currentFlipSided !== flipSided ) {\n\n\t\t\tif ( flipSided ) {\n\n\t\t\t\tgl.frontFace( 2304 );\n\n\t\t\t} else {\n\n\t\t\t\tgl.frontFace( 2305 );\n\n\t\t\t}\n\n\t\t\tcurrentFlipSided = flipSided;\n\n\t\t}\n\n\t}\n\n\tfunction setCullFace( cullFace ) {\n\n\t\tif ( cullFace !== CullFaceNone ) {\n\n\t\t\tenable( 2884 );\n\n\t\t\tif ( cullFace !== currentCullFace ) {\n\n\t\t\t\tif ( cullFace === CullFaceBack ) {\n\n\t\t\t\t\tgl.cullFace( 1029 );\n\n\t\t\t\t} else if ( cullFace === CullFaceFront ) {\n\n\t\t\t\t\tgl.cullFace( 1028 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tgl.cullFace( 1032 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tdisable( 2884 );\n\n\t\t}\n\n\t\tcurrentCullFace = cullFace;\n\n\t}\n\n\tfunction setLineWidth( width ) {\n\n\t\tif ( width !== currentLineWidth ) {\n\n\t\t\tif ( lineWidthAvailable ) gl.lineWidth( width );\n\n\t\t\tcurrentLineWidth = width;\n\n\t\t}\n\n\t}\n\n\tfunction setPolygonOffset( polygonOffset, factor, units ) {\n\n\t\tif ( polygonOffset ) {\n\n\t\t\tenable( 32823 );\n\n\t\t\tif ( currentPolygonOffsetFactor !== factor || currentPolygonOffsetUnits !== units ) {\n\n\t\t\t\tgl.polygonOffset( factor, units );\n\n\t\t\t\tcurrentPolygonOffsetFactor = factor;\n\t\t\t\tcurrentPolygonOffsetUnits = units;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tdisable( 32823 );\n\n\t\t}\n\n\t}\n\n\tfunction setScissorTest( scissorTest ) {\n\n\t\tif ( scissorTest ) {\n\n\t\t\tenable( 3089 );\n\n\t\t} else {\n\n\t\t\tdisable( 3089 );\n\n\t\t}\n\n\t}\n\n\t// texture\n\n\tfunction activeTexture( webglSlot ) {\n\n\t\tif ( webglSlot === undefined ) webglSlot = 33984 + maxTextures - 1;\n\n\t\tif ( currentTextureSlot !== webglSlot ) {\n\n\t\t\tgl.activeTexture( webglSlot );\n\t\t\tcurrentTextureSlot = webglSlot;\n\n\t\t}\n\n\t}\n\n\tfunction bindTexture( webglType, webglTexture ) {\n\n\t\tif ( currentTextureSlot === null ) {\n\n\t\t\tactiveTexture();\n\n\t\t}\n\n\t\tlet boundTexture = currentBoundTextures[ currentTextureSlot ];\n\n\t\tif ( boundTexture === undefined ) {\n\n\t\t\tboundTexture = { type: undefined, texture: undefined };\n\t\t\tcurrentBoundTextures[ currentTextureSlot ] = boundTexture;\n\n\t\t}\n\n\t\tif ( boundTexture.type !== webglType || boundTexture.texture !== webglTexture ) {\n\n\t\t\tgl.bindTexture( webglType, webglTexture || emptyTextures[ webglType ] );\n\n\t\t\tboundTexture.type = webglType;\n\t\t\tboundTexture.texture = webglTexture;\n\n\t\t}\n\n\t}\n\n\tfunction unbindTexture() {\n\n\t\tconst boundTexture = currentBoundTextures[ currentTextureSlot ];\n\n\t\tif ( boundTexture !== undefined && boundTexture.type !== undefined ) {\n\n\t\t\tgl.bindTexture( boundTexture.type, null );\n\n\t\t\tboundTexture.type = undefined;\n\t\t\tboundTexture.texture = undefined;\n\n\t\t}\n\n\t}\n\n\tfunction compressedTexImage2D() {\n\n\t\ttry {\n\n\t\t\tgl.compressedTexImage2D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction texImage2D() {\n\n\t\ttry {\n\n\t\t\tgl.texImage2D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction texImage3D() {\n\n\t\ttry {\n\n\t\t\tgl.texImage3D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\t//\n\n\tfunction scissor( scissor ) {\n\n\t\tif ( currentScissor.equals( scissor ) === false ) {\n\n\t\t\tgl.scissor( scissor.x, scissor.y, scissor.z, scissor.w );\n\t\t\tcurrentScissor.copy( scissor );\n\n\t\t}\n\n\t}\n\n\tfunction viewport( viewport ) {\n\n\t\tif ( currentViewport.equals( viewport ) === false ) {\n\n\t\t\tgl.viewport( viewport.x, viewport.y, viewport.z, viewport.w );\n\t\t\tcurrentViewport.copy( viewport );\n\n\t\t}\n\n\t}\n\n\t//\n\n\tfunction reset() {\n\n\t\tenabledCapabilities = {};\n\n\t\tcurrentTextureSlot = null;\n\t\tcurrentBoundTextures = {};\n\n\t\tcurrentProgram = null;\n\n\t\tcurrentBlending = null;\n\n\t\tcurrentFlipSided = null;\n\t\tcurrentCullFace = null;\n\n\t\tcolorBuffer.reset();\n\t\tdepthBuffer.reset();\n\t\tstencilBuffer.reset();\n\n\t}\n\n\treturn {\n\n\t\tbuffers: {\n\t\t\tcolor: colorBuffer,\n\t\t\tdepth: depthBuffer,\n\t\t\tstencil: stencilBuffer\n\t\t},\n\n\t\tenable: enable,\n\t\tdisable: disable,\n\n\t\tuseProgram: useProgram,\n\n\t\tsetBlending: setBlending,\n\t\tsetMaterial: setMaterial,\n\n\t\tsetFlipSided: setFlipSided,\n\t\tsetCullFace: setCullFace,\n\n\t\tsetLineWidth: setLineWidth,\n\t\tsetPolygonOffset: setPolygonOffset,\n\n\t\tsetScissorTest: setScissorTest,\n\n\t\tactiveTexture: activeTexture,\n\t\tbindTexture: bindTexture,\n\t\tunbindTexture: unbindTexture,\n\t\tcompressedTexImage2D: compressedTexImage2D,\n\t\ttexImage2D: texImage2D,\n\t\ttexImage3D: texImage3D,\n\n\t\tscissor: scissor,\n\t\tviewport: viewport,\n\n\t\treset: reset\n\n\t};\n\n}\n\nfunction WebGLTextures( _gl, extensions, state, properties, capabilities, utils, info ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\tconst maxTextures = capabilities.maxTextures;\n\tconst maxCubemapSize = capabilities.maxCubemapSize;\n\tconst maxTextureSize = capabilities.maxTextureSize;\n\tconst maxSamples = capabilities.maxSamples;\n\n\tconst _videoTextures = new WeakMap();\n\tlet _canvas;\n\n\t// cordova iOS (as of 5.0) still uses UIWebView, which provides OffscreenCanvas,\n\t// also OffscreenCanvas.getContext(\"webgl\"), but not OffscreenCanvas.getContext(\"2d\")!\n\t// Some implementations may only implement OffscreenCanvas partially (e.g. lacking 2d).\n\n\tlet useOffscreenCanvas = false;\n\n\ttry {\n\n\t\tuseOffscreenCanvas = typeof OffscreenCanvas !== 'undefined'\n\t\t\t&& ( new OffscreenCanvas( 1, 1 ).getContext( \"2d\" ) ) !== null;\n\n\t} catch ( err ) {\n\n\t\t// Ignore any errors\n\n\t}\n\n\tfunction createCanvas( width, height ) {\n\n\t\t// Use OffscreenCanvas when available. Specially needed in web workers\n\n\t\treturn useOffscreenCanvas ?\n\t\t\tnew OffscreenCanvas( width, height ) :\n\t\t\tdocument.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' );\n\n\t}\n\n\tfunction resizeImage( image, needsPowerOfTwo, needsNewCanvas, maxSize ) {\n\n\t\tlet scale = 1;\n\n\t\t// handle case if texture exceeds max size\n\n\t\tif ( image.width > maxSize || image.height > maxSize ) {\n\n\t\t\tscale = maxSize / Math.max( image.width, image.height );\n\n\t\t}\n\n\t\t// only perform resize if necessary\n\n\t\tif ( scale < 1 || needsPowerOfTwo === true ) {\n\n\t\t\t// only perform resize for certain image types\n\n\t\t\tif ( ( typeof HTMLImageElement !== 'undefined' && image instanceof HTMLImageElement ) ||\n\t\t\t\t( typeof HTMLCanvasElement !== 'undefined' && image instanceof HTMLCanvasElement ) ||\n\t\t\t\t( typeof ImageBitmap !== 'undefined' && image instanceof ImageBitmap ) ) {\n\n\t\t\t\tconst floor = needsPowerOfTwo ? MathUtils.floorPowerOfTwo : Math.floor;\n\n\t\t\t\tconst width = floor( scale * image.width );\n\t\t\t\tconst height = floor( scale * image.height );\n\n\t\t\t\tif ( _canvas === undefined ) _canvas = createCanvas( width, height );\n\n\t\t\t\t// cube textures can't reuse the same canvas\n\n\t\t\t\tconst canvas = needsNewCanvas ? createCanvas( width, height ) : _canvas;\n\n\t\t\t\tcanvas.width = width;\n\t\t\t\tcanvas.height = height;\n\n\t\t\t\tconst context = canvas.getContext( '2d' );\n\t\t\t\tcontext.drawImage( image, 0, 0, width, height );\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture has been resized from (' + image.width + 'x' + image.height + ') to (' + width + 'x' + height + ').' );\n\n\t\t\t\treturn canvas;\n\n\t\t\t} else {\n\n\t\t\t\tif ( 'data' in image ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Image in DataTexture is too big (' + image.width + 'x' + image.height + ').' );\n\n\t\t\t\t}\n\n\t\t\t\treturn image;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn image;\n\n\t}\n\n\tfunction isPowerOfTwo( image ) {\n\n\t\treturn MathUtils.isPowerOfTwo( image.width ) && MathUtils.isPowerOfTwo( image.height );\n\n\t}\n\n\tfunction textureNeedsPowerOfTwo( texture ) {\n\n\t\tif ( isWebGL2 ) return false;\n\n\t\treturn ( texture.wrapS !== ClampToEdgeWrapping || texture.wrapT !== ClampToEdgeWrapping ) ||\n\t\t\t( texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter );\n\n\t}\n\n\tfunction textureNeedsGenerateMipmaps( texture, supportsMips ) {\n\n\t\treturn texture.generateMipmaps && supportsMips &&\n\t\t\ttexture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter;\n\n\t}\n\n\tfunction generateMipmap( target, texture, width, height ) {\n\n\t\t_gl.generateMipmap( target );\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\t// Note: Math.log( x ) * Math.LOG2E used instead of Math.log2( x ) which is not supported by IE11\n\t\ttextureProperties.__maxMipLevel = Math.log( Math.max( width, height ) ) * Math.LOG2E;\n\n\t}\n\n\tfunction getInternalFormat( internalFormatName, glFormat, glType ) {\n\n\t\tif ( isWebGL2 === false ) return glFormat;\n\n\t\tif ( internalFormatName !== null ) {\n\n\t\t\tif ( _gl[ internalFormatName ] !== undefined ) return _gl[ internalFormatName ];\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format \\'' + internalFormatName + '\\'' );\n\n\t\t}\n\n\t\tlet internalFormat = glFormat;\n\n\t\tif ( glFormat === 6403 ) {\n\n\t\t\tif ( glType === 5126 ) internalFormat = 33326;\n\t\t\tif ( glType === 5131 ) internalFormat = 33325;\n\t\t\tif ( glType === 5121 ) internalFormat = 33321;\n\n\t\t}\n\n\t\tif ( glFormat === 6407 ) {\n\n\t\t\tif ( glType === 5126 ) internalFormat = 34837;\n\t\t\tif ( glType === 5131 ) internalFormat = 34843;\n\t\t\tif ( glType === 5121 ) internalFormat = 32849;\n\n\t\t}\n\n\t\tif ( glFormat === 6408 ) {\n\n\t\t\tif ( glType === 5126 ) internalFormat = 34836;\n\t\t\tif ( glType === 5131 ) internalFormat = 34842;\n\t\t\tif ( glType === 5121 ) internalFormat = 32856;\n\n\t\t}\n\n\t\tif ( internalFormat === 33325 || internalFormat === 33326 ||\n\t\t\tinternalFormat === 34842 || internalFormat === 34836 ) {\n\n\t\t\textensions.get( 'EXT_color_buffer_float' );\n\n\t\t}\n\n\t\treturn internalFormat;\n\n\t}\n\n\t// Fallback filters for non-power-of-2 textures\n\n\tfunction filterFallback( f ) {\n\n\t\tif ( f === NearestFilter || f === NearestMipmapNearestFilter || f === NearestMipmapLinearFilter ) {\n\n\t\t\treturn 9728;\n\n\t\t}\n\n\t\treturn 9729;\n\n\t}\n\n\t//\n\n\tfunction onTextureDispose( event ) {\n\n\t\tconst texture = event.target;\n\n\t\ttexture.removeEventListener( 'dispose', onTextureDispose );\n\n\t\tdeallocateTexture( texture );\n\n\t\tif ( texture.isVideoTexture ) {\n\n\t\t\t_videoTextures.delete( texture );\n\n\t\t}\n\n\t\tinfo.memory.textures --;\n\n\t}\n\n\tfunction onRenderTargetDispose( event ) {\n\n\t\tconst renderTarget = event.target;\n\n\t\trenderTarget.removeEventListener( 'dispose', onRenderTargetDispose );\n\n\t\tdeallocateRenderTarget( renderTarget );\n\n\t\tinfo.memory.textures --;\n\n\t}\n\n\t//\n\n\tfunction deallocateTexture( texture ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( textureProperties.__webglInit === undefined ) return;\n\n\t\t_gl.deleteTexture( textureProperties.__webglTexture );\n\n\t\tproperties.remove( texture );\n\n\t}\n\n\tfunction deallocateRenderTarget( renderTarget ) {\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\tconst textureProperties = properties.get( renderTarget.texture );\n\n\t\tif ( ! renderTarget ) return;\n\n\t\tif ( textureProperties.__webglTexture !== undefined ) {\n\n\t\t\t_gl.deleteTexture( textureProperties.__webglTexture );\n\n\t\t}\n\n\t\tif ( renderTarget.depthTexture ) {\n\n\t\t\trenderTarget.depthTexture.dispose();\n\n\t\t}\n\n\t\tif ( renderTarget.isWebGLCubeRenderTarget ) {\n\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\t_gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer[ i ] );\n\t\t\t\tif ( renderTargetProperties.__webglDepthbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthbuffer[ i ] );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t_gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer );\n\t\t\tif ( renderTargetProperties.__webglDepthbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthbuffer );\n\t\t\tif ( renderTargetProperties.__webglMultisampledFramebuffer ) _gl.deleteFramebuffer( renderTargetProperties.__webglMultisampledFramebuffer );\n\t\t\tif ( renderTargetProperties.__webglColorRenderbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglColorRenderbuffer );\n\t\t\tif ( renderTargetProperties.__webglDepthRenderbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthRenderbuffer );\n\n\t\t}\n\n\t\tproperties.remove( renderTarget.texture );\n\t\tproperties.remove( renderTarget );\n\n\t}\n\n\t//\n\n\tlet textureUnits = 0;\n\n\tfunction resetTextureUnits() {\n\n\t\ttextureUnits = 0;\n\n\t}\n\n\tfunction allocateTextureUnit() {\n\n\t\tconst textureUnit = textureUnits;\n\n\t\tif ( textureUnit >= maxTextures ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLTextures: Trying to use ' + textureUnit + ' texture units while this GPU supports only ' + maxTextures );\n\n\t\t}\n\n\t\ttextureUnits += 1;\n\n\t\treturn textureUnit;\n\n\t}\n\n\t//\n\n\tfunction setTexture2D( texture, slot ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( texture.isVideoTexture ) updateVideoTexture( texture );\n\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tconst image = texture.image;\n\n\t\t\tif ( image === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture marked for update but image is undefined' );\n\n\t\t\t} else if ( image.complete === false ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture marked for update but image is incomplete' );\n\n\t\t\t} else {\n\n\t\t\t\tuploadTexture( textureProperties, texture, slot );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( 3553, textureProperties.__webglTexture );\n\n\t}\n\n\tfunction setTexture2DArray( texture, slot ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tuploadTexture( textureProperties, texture, slot );\n\t\t\treturn;\n\n\t\t}\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( 35866, textureProperties.__webglTexture );\n\n\t}\n\n\tfunction setTexture3D( texture, slot ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tuploadTexture( textureProperties, texture, slot );\n\t\t\treturn;\n\n\t\t}\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( 32879, textureProperties.__webglTexture );\n\n\t}\n\n\tfunction setTextureCube( texture, slot ) {\n\n\t\tif ( texture.image.length !== 6 ) return;\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tinitTexture( textureProperties, texture );\n\n\t\t\tstate.activeTexture( 33984 + slot );\n\t\t\tstate.bindTexture( 34067, textureProperties.__webglTexture );\n\n\t\t\t_gl.pixelStorei( 37440, texture.flipY );\n\n\t\t\tconst isCompressed = ( texture && ( texture.isCompressedTexture || texture.image[ 0 ].isCompressedTexture ) );\n\t\t\tconst isDataTexture = ( texture.image[ 0 ] && texture.image[ 0 ].isDataTexture );\n\n\t\t\tconst cubeImage = [];\n\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\tif ( ! isCompressed && ! isDataTexture ) {\n\n\t\t\t\t\tcubeImage[ i ] = resizeImage( texture.image[ i ], false, true, maxCubemapSize );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tcubeImage[ i ] = isDataTexture ? texture.image[ i ].image : texture.image[ i ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst image = cubeImage[ 0 ],\n\t\t\t\tsupportsMips = isPowerOfTwo( image ) || isWebGL2,\n\t\t\t\tglFormat = utils.convert( texture.format ),\n\t\t\t\tglType = utils.convert( texture.type ),\n\t\t\t\tglInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType );\n\n\t\t\tsetTextureParameters( 34067, texture, supportsMips );\n\n\t\t\tlet mipmaps;\n\n\t\t\tif ( isCompressed ) {\n\n\t\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\tmipmaps = cubeImage[ i ].mipmaps;\n\n\t\t\t\t\tfor ( let j = 0; j < mipmaps.length; j ++ ) {\n\n\t\t\t\t\t\tconst mipmap = mipmaps[ j ];\n\n\t\t\t\t\t\tif ( texture.format !== RGBAFormat && texture.format !== RGBFormat ) {\n\n\t\t\t\t\t\t\tif ( glFormat !== null ) {\n\n\t\t\t\t\t\t\t\tstate.compressedTexImage2D( 34069 + i, j, glInternalFormat, mipmap.width, mipmap.height, 0, mipmap.data );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()' );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tstate.texImage2D( 34069 + i, j, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\ttextureProperties.__maxMipLevel = mipmaps.length - 1;\n\n\t\t\t} else {\n\n\t\t\t\tmipmaps = texture.mipmaps;\n\n\t\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\tif ( isDataTexture ) {\n\n\t\t\t\t\t\tstate.texImage2D( 34069 + i, 0, glInternalFormat, cubeImage[ i ].width, cubeImage[ i ].height, 0, glFormat, glType, cubeImage[ i ].data );\n\n\t\t\t\t\t\tfor ( let j = 0; j < mipmaps.length; j ++ ) {\n\n\t\t\t\t\t\t\tconst mipmap = mipmaps[ j ];\n\t\t\t\t\t\t\tconst mipmapImage = mipmap.image[ i ].image;\n\n\t\t\t\t\t\t\tstate.texImage2D( 34069 + i, j + 1, glInternalFormat, mipmapImage.width, mipmapImage.height, 0, glFormat, glType, mipmapImage.data );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tstate.texImage2D( 34069 + i, 0, glInternalFormat, glFormat, glType, cubeImage[ i ] );\n\n\t\t\t\t\t\tfor ( let j = 0; j < mipmaps.length; j ++ ) {\n\n\t\t\t\t\t\t\tconst mipmap = mipmaps[ j ];\n\n\t\t\t\t\t\t\tstate.texImage2D( 34069 + i, j + 1, glInternalFormat, glFormat, glType, mipmap.image[ i ] );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\ttextureProperties.__maxMipLevel = mipmaps.length;\n\n\t\t\t}\n\n\t\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\t\t// We assume images for cube map have the same size.\n\t\t\t\tgenerateMipmap( 34067, texture, image.width, image.height );\n\n\t\t\t}\n\n\t\t\ttextureProperties.__version = texture.version;\n\n\t\t\tif ( texture.onUpdate ) texture.onUpdate( texture );\n\n\t\t} else {\n\n\t\t\tstate.activeTexture( 33984 + slot );\n\t\t\tstate.bindTexture( 34067, textureProperties.__webglTexture );\n\n\t\t}\n\n\t}\n\n\tfunction setTextureCubeDynamic( texture, slot ) {\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( 34067, properties.get( texture ).__webglTexture );\n\n\t}\n\n\tconst wrappingToGL = {\n\t\t[ RepeatWrapping ]: 10497,\n\t\t[ ClampToEdgeWrapping ]: 33071,\n\t\t[ MirroredRepeatWrapping ]: 33648\n\t};\n\n\tconst filterToGL = {\n\t\t[ NearestFilter ]: 9728,\n\t\t[ NearestMipmapNearestFilter ]: 9984,\n\t\t[ NearestMipmapLinearFilter ]: 9986,\n\n\t\t[ LinearFilter ]: 9729,\n\t\t[ LinearMipmapNearestFilter ]: 9985,\n\t\t[ LinearMipmapLinearFilter ]: 9987\n\t};\n\n\tfunction setTextureParameters( textureType, texture, supportsMips ) {\n\n\t\tif ( supportsMips ) {\n\n\t\t\t_gl.texParameteri( textureType, 10242, wrappingToGL[ texture.wrapS ] );\n\t\t\t_gl.texParameteri( textureType, 10243, wrappingToGL[ texture.wrapT ] );\n\n\t\t\tif ( textureType === 32879 || textureType === 35866 ) {\n\n\t\t\t\t_gl.texParameteri( textureType, 32882, wrappingToGL[ texture.wrapR ] );\n\n\t\t\t}\n\n\t\t\t_gl.texParameteri( textureType, 10240, filterToGL[ texture.magFilter ] );\n\t\t\t_gl.texParameteri( textureType, 10241, filterToGL[ texture.minFilter ] );\n\n\t\t} else {\n\n\t\t\t_gl.texParameteri( textureType, 10242, 33071 );\n\t\t\t_gl.texParameteri( textureType, 10243, 33071 );\n\n\t\t\tif ( textureType === 32879 || textureType === 35866 ) {\n\n\t\t\t\t_gl.texParameteri( textureType, 32882, 33071 );\n\n\t\t\t}\n\n\t\t\tif ( texture.wrapS !== ClampToEdgeWrapping || texture.wrapT !== ClampToEdgeWrapping ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping.' );\n\n\t\t\t}\n\n\t\t\t_gl.texParameteri( textureType, 10240, filterFallback( texture.magFilter ) );\n\t\t\t_gl.texParameteri( textureType, 10241, filterFallback( texture.minFilter ) );\n\n\t\t\tif ( texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter.' );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst extension = extensions.get( 'EXT_texture_filter_anisotropic' );\n\n\t\tif ( extension ) {\n\n\t\t\tif ( texture.type === FloatType && extensions.get( 'OES_texture_float_linear' ) === null ) return;\n\t\t\tif ( texture.type === HalfFloatType && ( isWebGL2 || extensions.get( 'OES_texture_half_float_linear' ) ) === null ) return;\n\n\t\t\tif ( texture.anisotropy > 1 || properties.get( texture ).__currentAnisotropy ) {\n\n\t\t\t\t_gl.texParameterf( textureType, extension.TEXTURE_MAX_ANISOTROPY_EXT, Math.min( texture.anisotropy, capabilities.getMaxAnisotropy() ) );\n\t\t\t\tproperties.get( texture ).__currentAnisotropy = texture.anisotropy;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction initTexture( textureProperties, texture ) {\n\n\t\tif ( textureProperties.__webglInit === undefined ) {\n\n\t\t\ttextureProperties.__webglInit = true;\n\n\t\t\ttexture.addEventListener( 'dispose', onTextureDispose );\n\n\t\t\ttextureProperties.__webglTexture = _gl.createTexture();\n\n\t\t\tinfo.memory.textures ++;\n\n\t\t}\n\n\t}\n\n\tfunction uploadTexture( textureProperties, texture, slot ) {\n\n\t\tlet textureType = 3553;\n\n\t\tif ( texture.isDataTexture2DArray ) textureType = 35866;\n\t\tif ( texture.isDataTexture3D ) textureType = 32879;\n\n\t\tinitTexture( textureProperties, texture );\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( textureType, textureProperties.__webglTexture );\n\n\t\t_gl.pixelStorei( 37440, texture.flipY );\n\t\t_gl.pixelStorei( 37441, texture.premultiplyAlpha );\n\t\t_gl.pixelStorei( 3317, texture.unpackAlignment );\n\n\t\tconst needsPowerOfTwo = textureNeedsPowerOfTwo( texture ) && isPowerOfTwo( texture.image ) === false;\n\t\tconst image = resizeImage( texture.image, needsPowerOfTwo, false, maxTextureSize );\n\n\t\tconst supportsMips = isPowerOfTwo( image ) || isWebGL2,\n\t\t\tglFormat = utils.convert( texture.format );\n\n\t\tlet glType = utils.convert( texture.type ),\n\t\t\tglInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType );\n\n\t\tsetTextureParameters( textureType, texture, supportsMips );\n\n\t\tlet mipmap;\n\t\tconst mipmaps = texture.mipmaps;\n\n\t\tif ( texture.isDepthTexture ) {\n\n\t\t\t// populate depth texture with dummy data\n\n\t\t\tglInternalFormat = 6402;\n\n\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\tif ( texture.type === FloatType ) {\n\n\t\t\t\t\tglInternalFormat = 36012;\n\n\t\t\t\t} else if ( texture.type === UnsignedIntType ) {\n\n\t\t\t\t\tglInternalFormat = 33190;\n\n\t\t\t\t} else if ( texture.type === UnsignedInt248Type ) {\n\n\t\t\t\t\tglInternalFormat = 35056;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tglInternalFormat = 33189; // WebGL2 requires sized internalformat for glTexImage2D\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( texture.type === FloatType ) {\n\n\t\t\t\t\tconsole.error( 'WebGLRenderer: Floating point depth texture requires WebGL2.' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// validation checks for WebGL 1\n\n\t\t\tif ( texture.format === DepthFormat && glInternalFormat === 6402 ) {\n\n\t\t\t\t// The error INVALID_OPERATION is generated by texImage2D if format and internalformat are\n\t\t\t\t// DEPTH_COMPONENT and type is not UNSIGNED_SHORT or UNSIGNED_INT\n\t\t\t\t// (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/)\n\t\t\t\tif ( texture.type !== UnsignedShortType && texture.type !== UnsignedIntType ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture.' );\n\n\t\t\t\t\ttexture.type = UnsignedShortType;\n\t\t\t\t\tglType = utils.convert( texture.type );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( texture.format === DepthStencilFormat && glInternalFormat === 6402 ) {\n\n\t\t\t\t// Depth stencil textures need the DEPTH_STENCIL internal format\n\t\t\t\t// (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/)\n\t\t\t\tglInternalFormat = 34041;\n\n\t\t\t\t// The error INVALID_OPERATION is generated by texImage2D if format and internalformat are\n\t\t\t\t// DEPTH_STENCIL and type is not UNSIGNED_INT_24_8_WEBGL.\n\t\t\t\t// (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/)\n\t\t\t\tif ( texture.type !== UnsignedInt248Type ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture.' );\n\n\t\t\t\t\ttexture.type = UnsignedInt248Type;\n\t\t\t\t\tglType = utils.convert( texture.type );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tstate.texImage2D( 3553, 0, glInternalFormat, image.width, image.height, 0, glFormat, glType, null );\n\n\t\t} else if ( texture.isDataTexture ) {\n\n\t\t\t// use manually created mipmaps if available\n\t\t\t// if there are no manual mipmaps\n\t\t\t// set 0 level mipmap and then use GL to generate other mipmap levels\n\n\t\t\tif ( mipmaps.length > 0 && supportsMips ) {\n\n\t\t\t\tfor ( let i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\t\tmipmap = mipmaps[ i ];\n\t\t\t\t\tstate.texImage2D( 3553, i, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t}\n\n\t\t\t\ttexture.generateMipmaps = false;\n\t\t\t\ttextureProperties.__maxMipLevel = mipmaps.length - 1;\n\n\t\t\t} else {\n\n\t\t\t\tstate.texImage2D( 3553, 0, glInternalFormat, image.width, image.height, 0, glFormat, glType, image.data );\n\t\t\t\ttextureProperties.__maxMipLevel = 0;\n\n\t\t\t}\n\n\t\t} else if ( texture.isCompressedTexture ) {\n\n\t\t\tfor ( let i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\tmipmap = mipmaps[ i ];\n\n\t\t\t\tif ( texture.format !== RGBAFormat && texture.format !== RGBFormat ) {\n\n\t\t\t\t\tif ( glFormat !== null ) {\n\n\t\t\t\t\t\tstate.compressedTexImage2D( 3553, i, glInternalFormat, mipmap.width, mipmap.height, 0, mipmap.data );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()' );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tstate.texImage2D( 3553, i, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\ttextureProperties.__maxMipLevel = mipmaps.length - 1;\n\n\t\t} else if ( texture.isDataTexture2DArray ) {\n\n\t\t\tstate.texImage3D( 35866, 0, glInternalFormat, image.width, image.height, image.depth, 0, glFormat, glType, image.data );\n\t\t\ttextureProperties.__maxMipLevel = 0;\n\n\t\t} else if ( texture.isDataTexture3D ) {\n\n\t\t\tstate.texImage3D( 32879, 0, glInternalFormat, image.width, image.height, image.depth, 0, glFormat, glType, image.data );\n\t\t\ttextureProperties.__maxMipLevel = 0;\n\n\t\t} else {\n\n\t\t\t// regular Texture (image, video, canvas)\n\n\t\t\t// use manually created mipmaps if available\n\t\t\t// if there are no manual mipmaps\n\t\t\t// set 0 level mipmap and then use GL to generate other mipmap levels\n\n\t\t\tif ( mipmaps.length > 0 && supportsMips ) {\n\n\t\t\t\tfor ( let i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\t\tmipmap = mipmaps[ i ];\n\t\t\t\t\tstate.texImage2D( 3553, i, glInternalFormat, glFormat, glType, mipmap );\n\n\t\t\t\t}\n\n\t\t\t\ttexture.generateMipmaps = false;\n\t\t\t\ttextureProperties.__maxMipLevel = mipmaps.length - 1;\n\n\t\t\t} else {\n\n\t\t\t\tstate.texImage2D( 3553, 0, glInternalFormat, glFormat, glType, image );\n\t\t\t\ttextureProperties.__maxMipLevel = 0;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\tgenerateMipmap( textureType, texture, image.width, image.height );\n\n\t\t}\n\n\t\ttextureProperties.__version = texture.version;\n\n\t\tif ( texture.onUpdate ) texture.onUpdate( texture );\n\n\t}\n\n\t// Render targets\n\n\t// Setup storage for target texture and bind it to correct framebuffer\n\tfunction setupFrameBufferTexture( framebuffer, renderTarget, attachment, textureTarget ) {\n\n\t\tconst glFormat = utils.convert( renderTarget.texture.format );\n\t\tconst glType = utils.convert( renderTarget.texture.type );\n\t\tconst glInternalFormat = getInternalFormat( renderTarget.texture.internalFormat, glFormat, glType );\n\t\tstate.texImage2D( textureTarget, 0, glInternalFormat, renderTarget.width, renderTarget.height, 0, glFormat, glType, null );\n\t\t_gl.bindFramebuffer( 36160, framebuffer );\n\t\t_gl.framebufferTexture2D( 36160, attachment, textureTarget, properties.get( renderTarget.texture ).__webglTexture, 0 );\n\t\t_gl.bindFramebuffer( 36160, null );\n\n\t}\n\n\t// Setup storage for internal depth/stencil buffers and bind to correct framebuffer\n\tfunction setupRenderBufferStorage( renderbuffer, renderTarget, isMultisample ) {\n\n\t\t_gl.bindRenderbuffer( 36161, renderbuffer );\n\n\t\tif ( renderTarget.depthBuffer && ! renderTarget.stencilBuffer ) {\n\n\t\t\tlet glInternalFormat = 33189;\n\n\t\t\tif ( isMultisample ) {\n\n\t\t\t\tconst depthTexture = renderTarget.depthTexture;\n\n\t\t\t\tif ( depthTexture && depthTexture.isDepthTexture ) {\n\n\t\t\t\t\tif ( depthTexture.type === FloatType ) {\n\n\t\t\t\t\t\tglInternalFormat = 36012;\n\n\t\t\t\t\t} else if ( depthTexture.type === UnsignedIntType ) {\n\n\t\t\t\t\t\tglInternalFormat = 33190;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tconst samples = getRenderTargetSamples( renderTarget );\n\n\t\t\t\t_gl.renderbufferStorageMultisample( 36161, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.renderbufferStorage( 36161, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t}\n\n\t\t\t_gl.framebufferRenderbuffer( 36160, 36096, 36161, renderbuffer );\n\n\t\t} else if ( renderTarget.depthBuffer && renderTarget.stencilBuffer ) {\n\n\t\t\tif ( isMultisample ) {\n\n\t\t\t\tconst samples = getRenderTargetSamples( renderTarget );\n\n\t\t\t\t_gl.renderbufferStorageMultisample( 36161, samples, 35056, renderTarget.width, renderTarget.height );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.renderbufferStorage( 36161, 34041, renderTarget.width, renderTarget.height );\n\n\t\t\t}\n\n\n\t\t\t_gl.framebufferRenderbuffer( 36160, 33306, 36161, renderbuffer );\n\n\t\t} else {\n\n\t\t\tconst glFormat = utils.convert( renderTarget.texture.format );\n\t\t\tconst glType = utils.convert( renderTarget.texture.type );\n\t\t\tconst glInternalFormat = getInternalFormat( renderTarget.texture.internalFormat, glFormat, glType );\n\n\t\t\tif ( isMultisample ) {\n\n\t\t\t\tconst samples = getRenderTargetSamples( renderTarget );\n\n\t\t\t\t_gl.renderbufferStorageMultisample( 36161, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.renderbufferStorage( 36161, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t}\n\n\t\t}\n\n\t\t_gl.bindRenderbuffer( 36161, null );\n\n\t}\n\n\t// Setup resources for a Depth Texture for a FBO (needs an extension)\n\tfunction setupDepthTexture( framebuffer, renderTarget ) {\n\n\t\tconst isCube = ( renderTarget && renderTarget.isWebGLCubeRenderTarget );\n\t\tif ( isCube ) throw new Error( 'Depth Texture with cube render targets is not supported' );\n\n\t\t_gl.bindFramebuffer( 36160, framebuffer );\n\n\t\tif ( ! ( renderTarget.depthTexture && renderTarget.depthTexture.isDepthTexture ) ) {\n\n\t\t\tthrow new Error( 'renderTarget.depthTexture must be an instance of THREE.DepthTexture' );\n\n\t\t}\n\n\t\t// upload an empty depth texture with framebuffer size\n\t\tif ( ! properties.get( renderTarget.depthTexture ).__webglTexture ||\n\t\t\t\trenderTarget.depthTexture.image.width !== renderTarget.width ||\n\t\t\t\trenderTarget.depthTexture.image.height !== renderTarget.height ) {\n\n\t\t\trenderTarget.depthTexture.image.width = renderTarget.width;\n\t\t\trenderTarget.depthTexture.image.height = renderTarget.height;\n\t\t\trenderTarget.depthTexture.needsUpdate = true;\n\n\t\t}\n\n\t\tsetTexture2D( renderTarget.depthTexture, 0 );\n\n\t\tconst webglDepthTexture = properties.get( renderTarget.depthTexture ).__webglTexture;\n\n\t\tif ( renderTarget.depthTexture.format === DepthFormat ) {\n\n\t\t\t_gl.framebufferTexture2D( 36160, 36096, 3553, webglDepthTexture, 0 );\n\n\t\t} else if ( renderTarget.depthTexture.format === DepthStencilFormat ) {\n\n\t\t\t_gl.framebufferTexture2D( 36160, 33306, 3553, webglDepthTexture, 0 );\n\n\t\t} else {\n\n\t\t\tthrow new Error( 'Unknown depthTexture format' );\n\n\t\t}\n\n\t}\n\n\t// Setup GL resources for a non-texture depth buffer\n\tfunction setupDepthRenderbuffer( renderTarget ) {\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\n\t\tconst isCube = ( renderTarget.isWebGLCubeRenderTarget === true );\n\n\t\tif ( renderTarget.depthTexture ) {\n\n\t\t\tif ( isCube ) throw new Error( 'target.depthTexture not supported in Cube render targets' );\n\n\t\t\tsetupDepthTexture( renderTargetProperties.__webglFramebuffer, renderTarget );\n\n\t\t} else {\n\n\t\t\tif ( isCube ) {\n\n\t\t\t\trenderTargetProperties.__webglDepthbuffer = [];\n\n\t\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\t_gl.bindFramebuffer( 36160, renderTargetProperties.__webglFramebuffer[ i ] );\n\t\t\t\t\trenderTargetProperties.__webglDepthbuffer[ i ] = _gl.createRenderbuffer();\n\t\t\t\t\tsetupRenderBufferStorage( renderTargetProperties.__webglDepthbuffer[ i ], renderTarget, false );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t_gl.bindFramebuffer( 36160, renderTargetProperties.__webglFramebuffer );\n\t\t\t\trenderTargetProperties.__webglDepthbuffer = _gl.createRenderbuffer();\n\t\t\t\tsetupRenderBufferStorage( renderTargetProperties.__webglDepthbuffer, renderTarget, false );\n\n\t\t\t}\n\n\t\t}\n\n\t\t_gl.bindFramebuffer( 36160, null );\n\n\t}\n\n\t// Set up GL resources for the render target\n\tfunction setupRenderTarget( renderTarget ) {\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\tconst textureProperties = properties.get( renderTarget.texture );\n\n\t\trenderTarget.addEventListener( 'dispose', onRenderTargetDispose );\n\n\t\ttextureProperties.__webglTexture = _gl.createTexture();\n\n\t\tinfo.memory.textures ++;\n\n\t\tconst isCube = ( renderTarget.isWebGLCubeRenderTarget === true );\n\t\tconst isMultisample = ( renderTarget.isWebGLMultisampleRenderTarget === true );\n\t\tconst supportsMips = isPowerOfTwo( renderTarget ) || isWebGL2;\n\n\t\t// Handles WebGL2 RGBFormat fallback - #18858\n\n\t\tif ( isWebGL2 && renderTarget.texture.format === RGBFormat && ( renderTarget.texture.type === FloatType || renderTarget.texture.type === HalfFloatType ) ) {\n\n\t\t\trenderTarget.texture.format = RGBAFormat;\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: Rendering to textures with RGB format is not supported. Using RGBA format instead.' );\n\n\t\t}\n\n\t\t// Setup framebuffer\n\n\t\tif ( isCube ) {\n\n\t\t\trenderTargetProperties.__webglFramebuffer = [];\n\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\trenderTargetProperties.__webglFramebuffer[ i ] = _gl.createFramebuffer();\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\trenderTargetProperties.__webglFramebuffer = _gl.createFramebuffer();\n\n\t\t\tif ( isMultisample ) {\n\n\t\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\t\trenderTargetProperties.__webglMultisampledFramebuffer = _gl.createFramebuffer();\n\t\t\t\t\trenderTargetProperties.__webglColorRenderbuffer = _gl.createRenderbuffer();\n\n\t\t\t\t\t_gl.bindRenderbuffer( 36161, renderTargetProperties.__webglColorRenderbuffer );\n\n\t\t\t\t\tconst glFormat = utils.convert( renderTarget.texture.format );\n\t\t\t\t\tconst glType = utils.convert( renderTarget.texture.type );\n\t\t\t\t\tconst glInternalFormat = getInternalFormat( renderTarget.texture.internalFormat, glFormat, glType );\n\t\t\t\t\tconst samples = getRenderTargetSamples( renderTarget );\n\t\t\t\t\t_gl.renderbufferStorageMultisample( 36161, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t\t\t_gl.bindFramebuffer( 36160, renderTargetProperties.__webglMultisampledFramebuffer );\n\t\t\t\t\t_gl.framebufferRenderbuffer( 36160, 36064, 36161, renderTargetProperties.__webglColorRenderbuffer );\n\t\t\t\t\t_gl.bindRenderbuffer( 36161, null );\n\n\t\t\t\t\tif ( renderTarget.depthBuffer ) {\n\n\t\t\t\t\t\trenderTargetProperties.__webglDepthRenderbuffer = _gl.createRenderbuffer();\n\t\t\t\t\t\tsetupRenderBufferStorage( renderTargetProperties.__webglDepthRenderbuffer, renderTarget, true );\n\n\t\t\t\t\t}\n\n\t\t\t\t\t_gl.bindFramebuffer( 36160, null );\n\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: WebGLMultisampleRenderTarget can only be used with WebGL2.' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Setup color buffer\n\n\t\tif ( isCube ) {\n\n\t\t\tstate.bindTexture( 34067, textureProperties.__webglTexture );\n\t\t\tsetTextureParameters( 34067, renderTarget.texture, supportsMips );\n\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer[ i ], renderTarget, 36064, 34069 + i );\n\n\t\t\t}\n\n\t\t\tif ( textureNeedsGenerateMipmaps( renderTarget.texture, supportsMips ) ) {\n\n\t\t\t\tgenerateMipmap( 34067, renderTarget.texture, renderTarget.width, renderTarget.height );\n\n\t\t\t}\n\n\t\t\tstate.bindTexture( 34067, null );\n\n\t\t} else {\n\n\t\t\tstate.bindTexture( 3553, textureProperties.__webglTexture );\n\t\t\tsetTextureParameters( 3553, renderTarget.texture, supportsMips );\n\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer, renderTarget, 36064, 3553 );\n\n\t\t\tif ( textureNeedsGenerateMipmaps( renderTarget.texture, supportsMips ) ) {\n\n\t\t\t\tgenerateMipmap( 3553, renderTarget.texture, renderTarget.width, renderTarget.height );\n\n\t\t\t}\n\n\t\t\tstate.bindTexture( 3553, null );\n\n\t\t}\n\n\t\t// Setup depth and stencil buffers\n\n\t\tif ( renderTarget.depthBuffer ) {\n\n\t\t\tsetupDepthRenderbuffer( renderTarget );\n\n\t\t}\n\n\t}\n\n\tfunction updateRenderTargetMipmap( renderTarget ) {\n\n\t\tconst texture = renderTarget.texture;\n\t\tconst supportsMips = isPowerOfTwo( renderTarget ) || isWebGL2;\n\n\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\tconst target = renderTarget.isWebGLCubeRenderTarget ? 34067 : 3553;\n\t\t\tconst webglTexture = properties.get( texture ).__webglTexture;\n\n\t\t\tstate.bindTexture( target, webglTexture );\n\t\t\tgenerateMipmap( target, texture, renderTarget.width, renderTarget.height );\n\t\t\tstate.bindTexture( target, null );\n\n\t\t}\n\n\t}\n\n\tfunction updateMultisampleRenderTarget( renderTarget ) {\n\n\t\tif ( renderTarget.isWebGLMultisampleRenderTarget ) {\n\n\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\tconst renderTargetProperties = properties.get( renderTarget );\n\n\t\t\t\t_gl.bindFramebuffer( 36008, renderTargetProperties.__webglMultisampledFramebuffer );\n\t\t\t\t_gl.bindFramebuffer( 36009, renderTargetProperties.__webglFramebuffer );\n\n\t\t\t\tconst width = renderTarget.width;\n\t\t\t\tconst height = renderTarget.height;\n\t\t\t\tlet mask = 16384;\n\n\t\t\t\tif ( renderTarget.depthBuffer ) mask |= 256;\n\t\t\t\tif ( renderTarget.stencilBuffer ) mask |= 1024;\n\n\t\t\t\t_gl.blitFramebuffer( 0, 0, width, height, 0, 0, width, height, mask, 9728 );\n\n\t\t\t\t_gl.bindFramebuffer( 36160, renderTargetProperties.__webglMultisampledFramebuffer ); // see #18905\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: WebGLMultisampleRenderTarget can only be used with WebGL2.' );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction getRenderTargetSamples( renderTarget ) {\n\n\t\treturn ( isWebGL2 && renderTarget.isWebGLMultisampleRenderTarget ) ?\n\t\t\tMath.min( maxSamples, renderTarget.samples ) : 0;\n\n\t}\n\n\tfunction updateVideoTexture( texture ) {\n\n\t\tconst frame = info.render.frame;\n\n\t\t// Check the last frame we updated the VideoTexture\n\n\t\tif ( _videoTextures.get( texture ) !== frame ) {\n\n\t\t\t_videoTextures.set( texture, frame );\n\t\t\ttexture.update();\n\n\t\t}\n\n\t}\n\n\t// backwards compatibility\n\n\tlet warnedTexture2D = false;\n\tlet warnedTextureCube = false;\n\n\tfunction safeSetTexture2D( texture, slot ) {\n\n\t\tif ( texture && texture.isWebGLRenderTarget ) {\n\n\t\t\tif ( warnedTexture2D === false ) {\n\n\t\t\t\tconsole.warn( \"THREE.WebGLTextures.safeSetTexture2D: don't use render targets as textures. Use their .texture property instead.\" );\n\t\t\t\twarnedTexture2D = true;\n\n\t\t\t}\n\n\t\t\ttexture = texture.texture;\n\n\t\t}\n\n\t\tsetTexture2D( texture, slot );\n\n\t}\n\n\tfunction safeSetTextureCube( texture, slot ) {\n\n\t\tif ( texture && texture.isWebGLCubeRenderTarget ) {\n\n\t\t\tif ( warnedTextureCube === false ) {\n\n\t\t\t\tconsole.warn( \"THREE.WebGLTextures.safeSetTextureCube: don't use cube render targets as textures. Use their .texture property instead.\" );\n\t\t\t\twarnedTextureCube = true;\n\n\t\t\t}\n\n\t\t\ttexture = texture.texture;\n\n\t\t}\n\n\t\t// currently relying on the fact that WebGLCubeRenderTarget.texture is a Texture and NOT a CubeTexture\n\t\t// TODO: unify these code paths\n\t\tif ( ( texture && texture.isCubeTexture ) ||\n\t\t\t( Array.isArray( texture.image ) && texture.image.length === 6 ) ) {\n\n\t\t\t// CompressedTexture can have Array in image :/\n\n\t\t\t// this function alone should take care of cube textures\n\t\t\tsetTextureCube( texture, slot );\n\n\t\t} else {\n\n\t\t\t// assumed: texture property of THREE.WebGLCubeRenderTarget\n\t\t\tsetTextureCubeDynamic( texture, slot );\n\n\t\t}\n\n\t}\n\n\t//\n\n\tthis.allocateTextureUnit = allocateTextureUnit;\n\tthis.resetTextureUnits = resetTextureUnits;\n\n\tthis.setTexture2D = setTexture2D;\n\tthis.setTexture2DArray = setTexture2DArray;\n\tthis.setTexture3D = setTexture3D;\n\tthis.setTextureCube = setTextureCube;\n\tthis.setTextureCubeDynamic = setTextureCubeDynamic;\n\tthis.setupRenderTarget = setupRenderTarget;\n\tthis.updateRenderTargetMipmap = updateRenderTargetMipmap;\n\tthis.updateMultisampleRenderTarget = updateMultisampleRenderTarget;\n\n\tthis.safeSetTexture2D = safeSetTexture2D;\n\tthis.safeSetTextureCube = safeSetTextureCube;\n\n}\n\nfunction WebGLUtils( gl, extensions, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\n\tfunction convert( p ) {\n\n\t\tlet extension;\n\n\t\tif ( p === UnsignedByteType ) return 5121;\n\t\tif ( p === UnsignedShort4444Type ) return 32819;\n\t\tif ( p === UnsignedShort5551Type ) return 32820;\n\t\tif ( p === UnsignedShort565Type ) return 33635;\n\n\t\tif ( p === ByteType ) return 5120;\n\t\tif ( p === ShortType ) return 5122;\n\t\tif ( p === UnsignedShortType ) return 5123;\n\t\tif ( p === IntType ) return 5124;\n\t\tif ( p === UnsignedIntType ) return 5125;\n\t\tif ( p === FloatType ) return 5126;\n\n\t\tif ( p === HalfFloatType ) {\n\n\t\t\tif ( isWebGL2 ) return 5131;\n\n\t\t\textension = extensions.get( 'OES_texture_half_float' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\treturn extension.HALF_FLOAT_OES;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === AlphaFormat ) return 6406;\n\t\tif ( p === RGBFormat ) return 6407;\n\t\tif ( p === RGBAFormat ) return 6408;\n\t\tif ( p === LuminanceFormat ) return 6409;\n\t\tif ( p === LuminanceAlphaFormat ) return 6410;\n\t\tif ( p === DepthFormat ) return 6402;\n\t\tif ( p === DepthStencilFormat ) return 34041;\n\t\tif ( p === RedFormat ) return 6403;\n\n\t\t// WebGL2 formats.\n\n\t\tif ( p === RedIntegerFormat ) return 36244;\n\t\tif ( p === RGFormat ) return 33319;\n\t\tif ( p === RGIntegerFormat ) return 33320;\n\t\tif ( p === RGBIntegerFormat ) return 36248;\n\t\tif ( p === RGBAIntegerFormat ) return 36249;\n\n\t\tif ( p === RGB_S3TC_DXT1_Format || p === RGBA_S3TC_DXT1_Format ||\n\t\t\tp === RGBA_S3TC_DXT3_Format || p === RGBA_S3TC_DXT5_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_s3tc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGB_S3TC_DXT1_Format ) return extension.COMPRESSED_RGB_S3TC_DXT1_EXT;\n\t\t\t\tif ( p === RGBA_S3TC_DXT1_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT1_EXT;\n\t\t\t\tif ( p === RGBA_S3TC_DXT3_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT3_EXT;\n\t\t\t\tif ( p === RGBA_S3TC_DXT5_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT5_EXT;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === RGB_PVRTC_4BPPV1_Format || p === RGB_PVRTC_2BPPV1_Format ||\n\t\t\tp === RGBA_PVRTC_4BPPV1_Format || p === RGBA_PVRTC_2BPPV1_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_pvrtc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGB_PVRTC_4BPPV1_Format ) return extension.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;\n\t\t\t\tif ( p === RGB_PVRTC_2BPPV1_Format ) return extension.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;\n\t\t\t\tif ( p === RGBA_PVRTC_4BPPV1_Format ) return extension.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;\n\t\t\t\tif ( p === RGBA_PVRTC_2BPPV1_Format ) return extension.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === RGB_ETC1_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_etc1' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\treturn extension.COMPRESSED_RGB_ETC1_WEBGL;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === RGB_ETC2_Format || p === RGBA_ETC2_EAC_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_etc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGB_ETC2_Format ) return extension.COMPRESSED_RGB8_ETC2;\n\t\t\t\tif ( p === RGBA_ETC2_EAC_Format ) return extension.COMPRESSED_RGBA8_ETC2_EAC;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === RGBA_ASTC_4x4_Format || p === RGBA_ASTC_5x4_Format || p === RGBA_ASTC_5x5_Format ||\n\t\t\tp === RGBA_ASTC_6x5_Format || p === RGBA_ASTC_6x6_Format || p === RGBA_ASTC_8x5_Format ||\n\t\t\tp === RGBA_ASTC_8x6_Format || p === RGBA_ASTC_8x8_Format || p === RGBA_ASTC_10x5_Format ||\n\t\t\tp === RGBA_ASTC_10x6_Format || p === RGBA_ASTC_10x8_Format || p === RGBA_ASTC_10x10_Format ||\n\t\t\tp === RGBA_ASTC_12x10_Format || p === RGBA_ASTC_12x12_Format ||\n\t\t\tp === SRGB8_ALPHA8_ASTC_4x4_Format || p === SRGB8_ALPHA8_ASTC_5x4_Format || p === SRGB8_ALPHA8_ASTC_5x5_Format ||\n\t\t\tp === SRGB8_ALPHA8_ASTC_6x5_Format || p === SRGB8_ALPHA8_ASTC_6x6_Format || p === SRGB8_ALPHA8_ASTC_8x5_Format ||\n\t\t\tp === SRGB8_ALPHA8_ASTC_8x6_Format || p === SRGB8_ALPHA8_ASTC_8x8_Format || p === SRGB8_ALPHA8_ASTC_10x5_Format ||\n\t\t\tp === SRGB8_ALPHA8_ASTC_10x6_Format || p === SRGB8_ALPHA8_ASTC_10x8_Format || p === SRGB8_ALPHA8_ASTC_10x10_Format ||\n\t\t\tp === SRGB8_ALPHA8_ASTC_12x10_Format || p === SRGB8_ALPHA8_ASTC_12x12_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_astc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\t// TODO Complete?\n\n\t\t\t\treturn p;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === RGBA_BPTC_Format ) {\n\n\t\t\textension = extensions.get( 'EXT_texture_compression_bptc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\t// TODO Complete?\n\n\t\t\t\treturn p;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === UnsignedInt248Type ) {\n\n\t\t\tif ( isWebGL2 ) return 34042;\n\n\t\t\textension = extensions.get( 'WEBGL_depth_texture' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\treturn extension.UNSIGNED_INT_24_8_WEBGL;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\treturn { convert: convert };\n\n}\n\nfunction ArrayCamera( array ) {\n\n\tPerspectiveCamera.call( this );\n\n\tthis.cameras = array || [];\n\n}\n\nArrayCamera.prototype = Object.assign( Object.create( PerspectiveCamera.prototype ), {\n\n\tconstructor: ArrayCamera,\n\n\tisArrayCamera: true\n\n} );\n\nfunction Group() {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Group';\n\n}\n\nGroup.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Group,\n\n\tisGroup: true\n\n} );\n\nfunction WebXRController() {\n\n\tthis._targetRay = null;\n\tthis._grip = null;\n\tthis._hand = null;\n\n}\n\nObject.assign( WebXRController.prototype, {\n\n\tconstructor: WebXRController,\n\n\tgetHandSpace: function () {\n\n\t\tif ( this._hand === null ) {\n\n\t\t\tthis._hand = new Group();\n\t\t\tthis._hand.matrixAutoUpdate = false;\n\t\t\tthis._hand.visible = false;\n\n\t\t\tthis._hand.joints = [];\n\t\t\tthis._hand.inputState = { pinching: false };\n\n\t\t\tif ( window.XRHand ) {\n\n\t\t\t\tfor ( let i = 0; i <= window.XRHand.LITTLE_PHALANX_TIP; i ++ ) {\n\n\t\t\t\t\t// The transform of this joint will be updated with the joint pose on each frame\n\t\t\t\t\tconst joint = new Group();\n\t\t\t\t\tjoint.matrixAutoUpdate = false;\n\t\t\t\t\tjoint.visible = false;\n\t\t\t\t\tthis._hand.joints.push( joint );\n\t\t\t\t\t// ??\n\t\t\t\t\tthis._hand.add( joint );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this._hand;\n\n\t},\n\n\tgetTargetRaySpace: function () {\n\n\t\tif ( this._targetRay === null ) {\n\n\t\t\tthis._targetRay = new Group();\n\t\t\tthis._targetRay.matrixAutoUpdate = false;\n\t\t\tthis._targetRay.visible = false;\n\n\t\t}\n\n\t\treturn this._targetRay;\n\n\t},\n\n\tgetGripSpace: function () {\n\n\t\tif ( this._grip === null ) {\n\n\t\t\tthis._grip = new Group();\n\t\t\tthis._grip.matrixAutoUpdate = false;\n\t\t\tthis._grip.visible = false;\n\n\t\t}\n\n\t\treturn this._grip;\n\n\t},\n\n\tdispatchEvent: function ( event ) {\n\n\t\tif ( this._targetRay !== null ) {\n\n\t\t\tthis._targetRay.dispatchEvent( event );\n\n\t\t}\n\n\t\tif ( this._grip !== null ) {\n\n\t\t\tthis._grip.dispatchEvent( event );\n\n\t\t}\n\n\t\tif ( this._hand !== null ) {\n\n\t\t\tthis._hand.dispatchEvent( event );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tdisconnect: function ( inputSource ) {\n\n\t\tthis.dispatchEvent( { type: 'disconnected', data: inputSource } );\n\n\t\tif ( this._targetRay !== null ) {\n\n\t\t\tthis._targetRay.visible = false;\n\n\t\t}\n\n\t\tif ( this._grip !== null ) {\n\n\t\t\tthis._grip.visible = false;\n\n\t\t}\n\n\t\tif ( this._hand !== null ) {\n\n\t\t\tthis._hand.visible = false;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tupdate: function ( inputSource, frame, referenceSpace ) {\n\n\t\tlet inputPose = null;\n\t\tlet gripPose = null;\n\t\tlet handPose = null;\n\n\t\tconst targetRay = this._targetRay;\n\t\tconst grip = this._grip;\n\t\tconst hand = this._hand;\n\n\t\tif ( inputSource ) {\n\n\t\t\tif ( hand && inputSource.hand ) {\n\n\t\t\t\thandPose = true;\n\n\t\t\t\tfor ( let i = 0; i <= window.XRHand.LITTLE_PHALANX_TIP; i ++ ) {\n\n\t\t\t\t\tif ( inputSource.hand[ i ] ) {\n\n\t\t\t\t\t\t// Update the joints groups with the XRJoint poses\n\t\t\t\t\t\tconst jointPose = frame.getJointPose( inputSource.hand[ i ], referenceSpace );\n\t\t\t\t\t\tconst joint = hand.joints[ i ];\n\n\t\t\t\t\t\tif ( jointPose !== null ) {\n\n\t\t\t\t\t\t\tjoint.matrix.fromArray( jointPose.transform.matrix );\n\t\t\t\t\t\t\tjoint.matrix.decompose( joint.position, joint.rotation, joint.scale );\n\t\t\t\t\t\t\tjoint.jointRadius = jointPose.radius;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tjoint.visible = jointPose !== null;\n\n\t\t\t\t\t\t// Custom events\n\n\t\t\t\t\t\t// Check pinch\n\t\t\t\t\t\tconst indexTip = hand.joints[ window.XRHand.INDEX_PHALANX_TIP ];\n\t\t\t\t\t\tconst thumbTip = hand.joints[ window.XRHand.THUMB_PHALANX_TIP ];\n\t\t\t\t\t\tconst distance = indexTip.position.distanceTo( thumbTip.position );\n\n\t\t\t\t\t\tconst distanceToPinch = 0.02;\n\t\t\t\t\t\tconst threshold = 0.005;\n\n\t\t\t\t\t\tif ( hand.inputState.pinching && distance > distanceToPinch + threshold ) {\n\n\t\t\t\t\t\t\thand.inputState.pinching = false;\n\t\t\t\t\t\t\tthis.dispatchEvent( {\n\t\t\t\t\t\t\t\ttype: \"pinchend\",\n\t\t\t\t\t\t\t\thandedness: inputSource.handedness,\n\t\t\t\t\t\t\t\ttarget: this\n\t\t\t\t\t\t\t} );\n\n\t\t\t\t\t\t} else if ( ! hand.inputState.pinching && distance <= distanceToPinch - threshold ) {\n\n\t\t\t\t\t\t\thand.inputState.pinching = true;\n\t\t\t\t\t\t\tthis.dispatchEvent( {\n\t\t\t\t\t\t\t\ttype: \"pinchstart\",\n\t\t\t\t\t\t\t\thandedness: inputSource.handedness,\n\t\t\t\t\t\t\t\ttarget: this\n\t\t\t\t\t\t\t} );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( targetRay !== null ) {\n\n\t\t\t\t\tinputPose = frame.getPose( inputSource.targetRaySpace, referenceSpace );\n\n\t\t\t\t\tif ( inputPose !== null ) {\n\n\t\t\t\t\t\ttargetRay.matrix.fromArray( inputPose.transform.matrix );\n\t\t\t\t\t\ttargetRay.matrix.decompose( targetRay.position, targetRay.rotation, targetRay.scale );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( grip !== null && inputSource.gripSpace ) {\n\n\t\t\t\t\tgripPose = frame.getPose( inputSource.gripSpace, referenceSpace );\n\n\t\t\t\t\tif ( gripPose !== null ) {\n\n\t\t\t\t\t\tgrip.matrix.fromArray( gripPose.transform.matrix );\n\t\t\t\t\t\tgrip.matrix.decompose( grip.position, grip.rotation, grip.scale );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( targetRay !== null ) {\n\n\t\t\ttargetRay.visible = ( inputPose !== null );\n\n\t\t}\n\n\t\tif ( grip !== null ) {\n\n\t\t\tgrip.visible = ( gripPose !== null );\n\n\t\t}\n\n\t\tif ( hand !== null ) {\n\n\t\t\thand.visible = ( handPose !== null );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\nfunction WebXRManager( renderer, gl ) {\n\n\tconst scope = this;\n\n\tlet session = null;\n\n\tlet framebufferScaleFactor = 1.0;\n\n\tlet referenceSpace = null;\n\tlet referenceSpaceType = 'local-floor';\n\n\tlet pose = null;\n\n\tconst controllers = [];\n\tconst inputSourcesMap = new Map();\n\n\t//\n\n\tconst cameraL = new PerspectiveCamera();\n\tcameraL.layers.enable( 1 );\n\tcameraL.viewport = new Vector4();\n\n\tconst cameraR = new PerspectiveCamera();\n\tcameraR.layers.enable( 2 );\n\tcameraR.viewport = new Vector4();\n\n\tconst cameras = [ cameraL, cameraR ];\n\n\tconst cameraVR = new ArrayCamera();\n\tcameraVR.layers.enable( 1 );\n\tcameraVR.layers.enable( 2 );\n\n\tlet _currentDepthNear = null;\n\tlet _currentDepthFar = null;\n\n\t//\n\n\tthis.enabled = false;\n\n\tthis.isPresenting = false;\n\n\tthis.getController = function ( index ) {\n\n\t\tlet controller = controllers[ index ];\n\n\t\tif ( controller === undefined ) {\n\n\t\t\tcontroller = new WebXRController();\n\t\t\tcontrollers[ index ] = controller;\n\n\t\t}\n\n\t\treturn controller.getTargetRaySpace();\n\n\t};\n\n\tthis.getControllerGrip = function ( index ) {\n\n\t\tlet controller = controllers[ index ];\n\n\t\tif ( controller === undefined ) {\n\n\t\t\tcontroller = new WebXRController();\n\t\t\tcontrollers[ index ] = controller;\n\n\t\t}\n\n\t\treturn controller.getGripSpace();\n\n\t};\n\n\tthis.getHand = function ( index ) {\n\n\t\tlet controller = controllers[ index ];\n\n\t\tif ( controller === undefined ) {\n\n\t\t\tcontroller = new WebXRController();\n\t\t\tcontrollers[ index ] = controller;\n\n\t\t}\n\n\t\treturn controller.getHandSpace();\n\n\t};\n\n\t//\n\n\tfunction onSessionEvent( event ) {\n\n\t\tconst controller = inputSourcesMap.get( event.inputSource );\n\n\t\tif ( controller ) {\n\n\t\t\tcontroller.dispatchEvent( { type: event.type } );\n\n\t\t}\n\n\t}\n\n\tfunction onSessionEnd() {\n\n\t\tinputSourcesMap.forEach( function ( controller, inputSource ) {\n\n\t\t\tcontroller.disconnect( inputSource );\n\n\t\t} );\n\n\t\tinputSourcesMap.clear();\n\n\t\t//\n\n\t\trenderer.setFramebuffer( null );\n\t\trenderer.setRenderTarget( renderer.getRenderTarget() ); // Hack #15830\n\t\tanimation.stop();\n\n\t\tscope.isPresenting = false;\n\n\t\tscope.dispatchEvent( { type: 'sessionend' } );\n\n\t}\n\n\tfunction onRequestReferenceSpace( value ) {\n\n\t\treferenceSpace = value;\n\n\t\tanimation.setContext( session );\n\t\tanimation.start();\n\n\t\tscope.isPresenting = true;\n\n\t\tscope.dispatchEvent( { type: 'sessionstart' } );\n\n\t}\n\n\tthis.setFramebufferScaleFactor = function ( value ) {\n\n\t\tframebufferScaleFactor = value;\n\n\t\tif ( scope.isPresenting === true ) {\n\n\t\t\tconsole.warn( 'THREE.WebXRManager: Cannot change framebuffer scale while presenting.' );\n\n\t\t}\n\n\t};\n\n\tthis.setReferenceSpaceType = function ( value ) {\n\n\t\treferenceSpaceType = value;\n\n\t\tif ( scope.isPresenting === true ) {\n\n\t\t\tconsole.warn( 'THREE.WebXRManager: Cannot change reference space type while presenting.' );\n\n\t\t}\n\n\t};\n\n\tthis.getReferenceSpace = function () {\n\n\t\treturn referenceSpace;\n\n\t};\n\n\tthis.getSession = function () {\n\n\t\treturn session;\n\n\t};\n\n\tthis.setSession = function ( value ) {\n\n\t\tsession = value;\n\n\t\tif ( session !== null ) {\n\n\t\t\tsession.addEventListener( 'select', onSessionEvent );\n\t\t\tsession.addEventListener( 'selectstart', onSessionEvent );\n\t\t\tsession.addEventListener( 'selectend', onSessionEvent );\n\t\t\tsession.addEventListener( 'squeeze', onSessionEvent );\n\t\t\tsession.addEventListener( 'squeezestart', onSessionEvent );\n\t\t\tsession.addEventListener( 'squeezeend', onSessionEvent );\n\t\t\tsession.addEventListener( 'end', onSessionEnd );\n\n\t\t\tconst attributes = gl.getContextAttributes();\n\n\t\t\tif ( attributes.xrCompatible !== true ) {\n\n\t\t\t\tgl.makeXRCompatible();\n\n\t\t\t}\n\n\t\t\tconst layerInit = {\n\t\t\t\tantialias: attributes.antialias,\n\t\t\t\talpha: attributes.alpha,\n\t\t\t\tdepth: attributes.depth,\n\t\t\t\tstencil: attributes.stencil,\n\t\t\t\tframebufferScaleFactor: framebufferScaleFactor\n\t\t\t};\n\n\t\t\t// eslint-disable-next-line no-undef\n\t\t\tconst baseLayer = new XRWebGLLayer( session, gl, layerInit );\n\n\t\t\tsession.updateRenderState( { baseLayer: baseLayer } );\n\n\t\t\tsession.requestReferenceSpace( referenceSpaceType ).then( onRequestReferenceSpace );\n\n\t\t\t//\n\n\t\t\tsession.addEventListener( 'inputsourceschange', updateInputSources );\n\n\t\t}\n\n\t};\n\n\tfunction updateInputSources( event ) {\n\n\t\tconst inputSources = session.inputSources;\n\n\t\t// Assign inputSources to available controllers\n\n\t\tfor ( let i = 0; i < controllers.length; i ++ ) {\n\n\t\t\tinputSourcesMap.set( inputSources[ i ], controllers[ i ] );\n\n\t\t}\n\n\t\t// Notify disconnected\n\n\t\tfor ( let i = 0; i < event.removed.length; i ++ ) {\n\n\t\t\tconst inputSource = event.removed[ i ];\n\t\t\tconst controller = inputSourcesMap.get( inputSource );\n\n\t\t\tif ( controller ) {\n\n\t\t\t\tcontroller.dispatchEvent( { type: 'disconnected', data: inputSource } );\n\t\t\t\tinputSourcesMap.delete( inputSource );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Notify connected\n\n\t\tfor ( let i = 0; i < event.added.length; i ++ ) {\n\n\t\t\tconst inputSource = event.added[ i ];\n\t\t\tconst controller = inputSourcesMap.get( inputSource );\n\n\t\t\tif ( controller ) {\n\n\t\t\t\tcontroller.dispatchEvent( { type: 'connected', data: inputSource } );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t//\n\n\tconst cameraLPos = new Vector3();\n\tconst cameraRPos = new Vector3();\n\n\t/**\n\t * Assumes 2 cameras that are parallel and share an X-axis, and that\n\t * the cameras' projection and world matrices have already been set.\n\t * And that near and far planes are identical for both cameras.\n\t * Visualization of this technique: https://computergraphics.stackexchange.com/a/4765\n\t */\n\tfunction setProjectionFromUnion( camera, cameraL, cameraR ) {\n\n\t\tcameraLPos.setFromMatrixPosition( cameraL.matrixWorld );\n\t\tcameraRPos.setFromMatrixPosition( cameraR.matrixWorld );\n\n\t\tconst ipd = cameraLPos.distanceTo( cameraRPos );\n\n\t\tconst projL = cameraL.projectionMatrix.elements;\n\t\tconst projR = cameraR.projectionMatrix.elements;\n\n\t\t// VR systems will have identical far and near planes, and\n\t\t// most likely identical top and bottom frustum extents.\n\t\t// Use the left camera for these values.\n\t\tconst near = projL[ 14 ] / ( projL[ 10 ] - 1 );\n\t\tconst far = projL[ 14 ] / ( projL[ 10 ] + 1 );\n\t\tconst topFov = ( projL[ 9 ] + 1 ) / projL[ 5 ];\n\t\tconst bottomFov = ( projL[ 9 ] - 1 ) / projL[ 5 ];\n\n\t\tconst leftFov = ( projL[ 8 ] - 1 ) / projL[ 0 ];\n\t\tconst rightFov = ( projR[ 8 ] + 1 ) / projR[ 0 ];\n\t\tconst left = near * leftFov;\n\t\tconst right = near * rightFov;\n\n\t\t// Calculate the new camera's position offset from the\n\t\t// left camera. xOffset should be roughly half `ipd`.\n\t\tconst zOffset = ipd / ( - leftFov + rightFov );\n\t\tconst xOffset = zOffset * - leftFov;\n\n\t\t// TODO: Better way to apply this offset?\n\t\tcameraL.matrixWorld.decompose( camera.position, camera.quaternion, camera.scale );\n\t\tcamera.translateX( xOffset );\n\t\tcamera.translateZ( zOffset );\n\t\tcamera.matrixWorld.compose( camera.position, camera.quaternion, camera.scale );\n\t\tcamera.matrixWorldInverse.getInverse( camera.matrixWorld );\n\n\t\t// Find the union of the frustum values of the cameras and scale\n\t\t// the values so that the near plane's position does not change in world space,\n\t\t// although must now be relative to the new union camera.\n\t\tconst near2 = near + zOffset;\n\t\tconst far2 = far + zOffset;\n\t\tconst left2 = left - xOffset;\n\t\tconst right2 = right + ( ipd - xOffset );\n\t\tconst top2 = topFov * far / far2 * near2;\n\t\tconst bottom2 = bottomFov * far / far2 * near2;\n\n\t\tcamera.projectionMatrix.makePerspective( left2, right2, top2, bottom2, near2, far2 );\n\n\t}\n\n\tfunction updateCamera( camera, parent ) {\n\n\t\tif ( parent === null ) {\n\n\t\t\tcamera.matrixWorld.copy( camera.matrix );\n\n\t\t} else {\n\n\t\t\tcamera.matrixWorld.multiplyMatrices( parent.matrixWorld, camera.matrix );\n\n\t\t}\n\n\t\tcamera.matrixWorldInverse.getInverse( camera.matrixWorld );\n\n\t}\n\n\tthis.getCamera = function ( camera ) {\n\n\t\tcameraVR.near = cameraR.near = cameraL.near = camera.near;\n\t\tcameraVR.far = cameraR.far = cameraL.far = camera.far;\n\n\t\tif ( _currentDepthNear !== cameraVR.near || _currentDepthFar !== cameraVR.far ) {\n\n\t\t\t// Note that the new renderState won't apply until the next frame. See #18320\n\n\t\t\tsession.updateRenderState( {\n\t\t\t\tdepthNear: cameraVR.near,\n\t\t\t\tdepthFar: cameraVR.far\n\t\t\t} );\n\n\t\t\t_currentDepthNear = cameraVR.near;\n\t\t\t_currentDepthFar = cameraVR.far;\n\n\t\t}\n\n\t\tconst parent = camera.parent;\n\t\tconst cameras = cameraVR.cameras;\n\n\t\tupdateCamera( cameraVR, parent );\n\n\t\tfor ( let i = 0; i < cameras.length; i ++ ) {\n\n\t\t\tupdateCamera( cameras[ i ], parent );\n\n\t\t}\n\n\t\t// update camera and its children\n\n\t\tcamera.matrixWorld.copy( cameraVR.matrixWorld );\n\n\t\tconst children = camera.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].updateMatrixWorld( true );\n\n\t\t}\n\n\t\t// update projection matrix for proper view frustum culling\n\n\t\tif ( cameras.length === 2 ) {\n\n\t\t\tsetProjectionFromUnion( cameraVR, cameraL, cameraR );\n\n\t\t} else {\n\n\t\t\t// assume single camera setup (AR)\n\n\t\t\tcameraVR.projectionMatrix.copy( cameraL.projectionMatrix );\n\n\t\t}\n\n\t\treturn cameraVR;\n\n\t};\n\n\t// Animation Loop\n\n\tlet onAnimationFrameCallback = null;\n\n\tfunction onAnimationFrame( time, frame ) {\n\n\t\tpose = frame.getViewerPose( referenceSpace );\n\n\t\tif ( pose !== null ) {\n\n\t\t\tconst views = pose.views;\n\t\t\tconst baseLayer = session.renderState.baseLayer;\n\n\t\t\trenderer.setFramebuffer( baseLayer.framebuffer );\n\n\t\t\tlet cameraVRNeedsUpdate = false;\n\n\t\t\t// check if it's necessary to rebuild cameraVR's camera list\n\n\t\t\tif ( views.length !== cameraVR.cameras.length ) {\n\n\t\t\t\tcameraVR.cameras.length = 0;\n\t\t\t\tcameraVRNeedsUpdate = true;\n\n\t\t\t}\n\n\t\t\tfor ( let i = 0; i < views.length; i ++ ) {\n\n\t\t\t\tconst view = views[ i ];\n\t\t\t\tconst viewport = baseLayer.getViewport( view );\n\n\t\t\t\tconst camera = cameras[ i ];\n\t\t\t\tcamera.matrix.fromArray( view.transform.matrix );\n\t\t\t\tcamera.projectionMatrix.fromArray( view.projectionMatrix );\n\t\t\t\tcamera.viewport.set( viewport.x, viewport.y, viewport.width, viewport.height );\n\n\t\t\t\tif ( i === 0 ) {\n\n\t\t\t\t\tcameraVR.matrix.copy( camera.matrix );\n\n\t\t\t\t}\n\n\t\t\t\tif ( cameraVRNeedsUpdate === true ) {\n\n\t\t\t\t\tcameraVR.cameras.push( camera );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tconst inputSources = session.inputSources;\n\n\t\tfor ( let i = 0; i < controllers.length; i ++ ) {\n\n\t\t\tconst controller = controllers[ i ];\n\t\t\tconst inputSource = inputSources[ i ];\n\n\t\t\tcontroller.update( inputSource, frame, referenceSpace );\n\n\t\t}\n\n\t\tif ( onAnimationFrameCallback ) onAnimationFrameCallback( time, frame );\n\n\t}\n\n\tconst animation = new WebGLAnimation();\n\tanimation.setAnimationLoop( onAnimationFrame );\n\n\tthis.setAnimationLoop = function ( callback ) {\n\n\t\tonAnimationFrameCallback = callback;\n\n\t};\n\n\tthis.dispose = function () {};\n\n}\n\nObject.assign( WebXRManager.prototype, EventDispatcher.prototype );\n\nfunction WebGLMaterials( properties ) {\n\n\tfunction refreshFogUniforms( uniforms, fog ) {\n\n\t\tuniforms.fogColor.value.copy( fog.color );\n\n\t\tif ( fog.isFog ) {\n\n\t\t\tuniforms.fogNear.value = fog.near;\n\t\t\tuniforms.fogFar.value = fog.far;\n\n\t\t} else if ( fog.isFogExp2 ) {\n\n\t\t\tuniforms.fogDensity.value = fog.density;\n\n\t\t}\n\n\t}\n\n\tfunction refreshMaterialUniforms( uniforms, material, pixelRatio, height ) {\n\n\t\tif ( material.isMeshBasicMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\n\t\t} else if ( material.isMeshLambertMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsLambert( uniforms, material );\n\n\t\t} else if ( material.isMeshToonMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsToon( uniforms, material );\n\n\t\t} else if ( material.isMeshPhongMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsPhong( uniforms, material );\n\n\t\t} else if ( material.isMeshStandardMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\n\t\t\tif ( material.isMeshPhysicalMaterial ) {\n\n\t\t\t\trefreshUniformsPhysical( uniforms, material );\n\n\t\t\t} else {\n\n\t\t\t\trefreshUniformsStandard( uniforms, material );\n\n\t\t\t}\n\n\t\t} else if ( material.isMeshMatcapMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsMatcap( uniforms, material );\n\n\t\t} else if ( material.isMeshDepthMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsDepth( uniforms, material );\n\n\t\t} else if ( material.isMeshDistanceMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsDistance( uniforms, material );\n\n\t\t} else if ( material.isMeshNormalMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsNormal( uniforms, material );\n\n\t\t} else if ( material.isLineBasicMaterial ) {\n\n\t\t\trefreshUniformsLine( uniforms, material );\n\n\t\t\tif ( material.isLineDashedMaterial ) {\n\n\t\t\t\trefreshUniformsDash( uniforms, material );\n\n\t\t\t}\n\n\t\t} else if ( material.isPointsMaterial ) {\n\n\t\t\trefreshUniformsPoints( uniforms, material, pixelRatio, height );\n\n\t\t} else if ( material.isSpriteMaterial ) {\n\n\t\t\trefreshUniformsSprites( uniforms, material );\n\n\t\t} else if ( material.isShadowMaterial ) {\n\n\t\t\tuniforms.color.value.copy( material.color );\n\t\t\tuniforms.opacity.value = material.opacity;\n\n\t\t} else if ( material.isShaderMaterial ) {\n\n\t\t\tmaterial.uniformsNeedUpdate = false; // #15581\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsCommon( uniforms, material ) {\n\n\t\tuniforms.opacity.value = material.opacity;\n\n\t\tif ( material.color ) {\n\n\t\t\tuniforms.diffuse.value.copy( material.color );\n\n\t\t}\n\n\t\tif ( material.emissive ) {\n\n\t\t\tuniforms.emissive.value.copy( material.emissive ).multiplyScalar( material.emissiveIntensity );\n\n\t\t}\n\n\t\tif ( material.map ) {\n\n\t\t\tuniforms.map.value = material.map;\n\n\t\t}\n\n\t\tif ( material.alphaMap ) {\n\n\t\t\tuniforms.alphaMap.value = material.alphaMap;\n\n\t\t}\n\n\t\tif ( material.specularMap ) {\n\n\t\t\tuniforms.specularMap.value = material.specularMap;\n\n\t\t}\n\n\t\tconst envMap = properties.get( material ).envMap;\n\n\t\tif ( envMap ) {\n\n\t\t\tuniforms.envMap.value = envMap;\n\n\t\t\tuniforms.flipEnvMap.value = envMap.isCubeTexture ? - 1 : 1;\n\n\t\t\tuniforms.reflectivity.value = material.reflectivity;\n\t\t\tuniforms.refractionRatio.value = material.refractionRatio;\n\n\t\t\tconst maxMipLevel = properties.get( envMap ).__maxMipLevel;\n\n\t\t\tif ( maxMipLevel !== undefined ) {\n\n\t\t\t\tuniforms.maxMipLevel.value = maxMipLevel;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.lightMap ) {\n\n\t\t\tuniforms.lightMap.value = material.lightMap;\n\t\t\tuniforms.lightMapIntensity.value = material.lightMapIntensity;\n\n\t\t}\n\n\t\tif ( material.aoMap ) {\n\n\t\t\tuniforms.aoMap.value = material.aoMap;\n\t\t\tuniforms.aoMapIntensity.value = material.aoMapIntensity;\n\n\t\t}\n\n\t\t// uv repeat and offset setting priorities\n\t\t// 1. color map\n\t\t// 2. specular map\n\t\t// 3. displacementMap map\n\t\t// 4. normal map\n\t\t// 5. bump map\n\t\t// 6. roughnessMap map\n\t\t// 7. metalnessMap map\n\t\t// 8. alphaMap map\n\t\t// 9. emissiveMap map\n\t\t// 10. clearcoat map\n\t\t// 11. clearcoat normal map\n\t\t// 12. clearcoat roughnessMap map\n\n\t\tlet uvScaleMap;\n\n\t\tif ( material.map ) {\n\n\t\t\tuvScaleMap = material.map;\n\n\t\t} else if ( material.specularMap ) {\n\n\t\t\tuvScaleMap = material.specularMap;\n\n\t\t} else if ( material.displacementMap ) {\n\n\t\t\tuvScaleMap = material.displacementMap;\n\n\t\t} else if ( material.normalMap ) {\n\n\t\t\tuvScaleMap = material.normalMap;\n\n\t\t} else if ( material.bumpMap ) {\n\n\t\t\tuvScaleMap = material.bumpMap;\n\n\t\t} else if ( material.roughnessMap ) {\n\n\t\t\tuvScaleMap = material.roughnessMap;\n\n\t\t} else if ( material.metalnessMap ) {\n\n\t\t\tuvScaleMap = material.metalnessMap;\n\n\t\t} else if ( material.alphaMap ) {\n\n\t\t\tuvScaleMap = material.alphaMap;\n\n\t\t} else if ( material.emissiveMap ) {\n\n\t\t\tuvScaleMap = material.emissiveMap;\n\n\t\t} else if ( material.clearcoatMap ) {\n\n\t\t\tuvScaleMap = material.clearcoatMap;\n\n\t\t} else if ( material.clearcoatNormalMap ) {\n\n\t\t\tuvScaleMap = material.clearcoatNormalMap;\n\n\t\t} else if ( material.clearcoatRoughnessMap ) {\n\n\t\t\tuvScaleMap = material.clearcoatRoughnessMap;\n\n\t\t}\n\n\t\tif ( uvScaleMap !== undefined ) {\n\n\t\t\t// backwards compatibility\n\t\t\tif ( uvScaleMap.isWebGLRenderTarget ) {\n\n\t\t\t\tuvScaleMap = uvScaleMap.texture;\n\n\t\t\t}\n\n\t\t\tif ( uvScaleMap.matrixAutoUpdate === true ) {\n\n\t\t\t\tuvScaleMap.updateMatrix();\n\n\t\t\t}\n\n\t\t\tuniforms.uvTransform.value.copy( uvScaleMap.matrix );\n\n\t\t}\n\n\t\t// uv repeat and offset setting priorities for uv2\n\t\t// 1. ao map\n\t\t// 2. light map\n\n\t\tlet uv2ScaleMap;\n\n\t\tif ( material.aoMap ) {\n\n\t\t\tuv2ScaleMap = material.aoMap;\n\n\t\t} else if ( material.lightMap ) {\n\n\t\t\tuv2ScaleMap = material.lightMap;\n\n\t\t}\n\n\t\tif ( uv2ScaleMap !== undefined ) {\n\n\t\t\t// backwards compatibility\n\t\t\tif ( uv2ScaleMap.isWebGLRenderTarget ) {\n\n\t\t\t\tuv2ScaleMap = uv2ScaleMap.texture;\n\n\t\t\t}\n\n\t\t\tif ( uv2ScaleMap.matrixAutoUpdate === true ) {\n\n\t\t\t\tuv2ScaleMap.updateMatrix();\n\n\t\t\t}\n\n\t\t\tuniforms.uv2Transform.value.copy( uv2ScaleMap.matrix );\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsLine( uniforms, material ) {\n\n\t\tuniforms.diffuse.value.copy( material.color );\n\t\tuniforms.opacity.value = material.opacity;\n\n\t}\n\n\tfunction refreshUniformsDash( uniforms, material ) {\n\n\t\tuniforms.dashSize.value = material.dashSize;\n\t\tuniforms.totalSize.value = material.dashSize + material.gapSize;\n\t\tuniforms.scale.value = material.scale;\n\n\t}\n\n\tfunction refreshUniformsPoints( uniforms, material, pixelRatio, height ) {\n\n\t\tuniforms.diffuse.value.copy( material.color );\n\t\tuniforms.opacity.value = material.opacity;\n\t\tuniforms.size.value = material.size * pixelRatio;\n\t\tuniforms.scale.value = height * 0.5;\n\n\t\tif ( material.map ) {\n\n\t\t\tuniforms.map.value = material.map;\n\n\t\t}\n\n\t\tif ( material.alphaMap ) {\n\n\t\t\tuniforms.alphaMap.value = material.alphaMap;\n\n\t\t}\n\n\t\t// uv repeat and offset setting priorities\n\t\t// 1. color map\n\t\t// 2. alpha map\n\n\t\tlet uvScaleMap;\n\n\t\tif ( material.map ) {\n\n\t\t\tuvScaleMap = material.map;\n\n\t\t} else if ( material.alphaMap ) {\n\n\t\t\tuvScaleMap = material.alphaMap;\n\n\t\t}\n\n\t\tif ( uvScaleMap !== undefined ) {\n\n\t\t\tif ( uvScaleMap.matrixAutoUpdate === true ) {\n\n\t\t\t\tuvScaleMap.updateMatrix();\n\n\t\t\t}\n\n\t\t\tuniforms.uvTransform.value.copy( uvScaleMap.matrix );\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsSprites( uniforms, material ) {\n\n\t\tuniforms.diffuse.value.copy( material.color );\n\t\tuniforms.opacity.value = material.opacity;\n\t\tuniforms.rotation.value = material.rotation;\n\n\t\tif ( material.map ) {\n\n\t\t\tuniforms.map.value = material.map;\n\n\t\t}\n\n\t\tif ( material.alphaMap ) {\n\n\t\t\tuniforms.alphaMap.value = material.alphaMap;\n\n\t\t}\n\n\t\t// uv repeat and offset setting priorities\n\t\t// 1. color map\n\t\t// 2. alpha map\n\n\t\tlet uvScaleMap;\n\n\t\tif ( material.map ) {\n\n\t\t\tuvScaleMap = material.map;\n\n\t\t} else if ( material.alphaMap ) {\n\n\t\t\tuvScaleMap = material.alphaMap;\n\n\t\t}\n\n\t\tif ( uvScaleMap !== undefined ) {\n\n\t\t\tif ( uvScaleMap.matrixAutoUpdate === true ) {\n\n\t\t\t\tuvScaleMap.updateMatrix();\n\n\t\t\t}\n\n\t\t\tuniforms.uvTransform.value.copy( uvScaleMap.matrix );\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsLambert( uniforms, material ) {\n\n\t\tif ( material.emissiveMap ) {\n\n\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsPhong( uniforms, material ) {\n\n\t\tuniforms.specular.value.copy( material.specular );\n\t\tuniforms.shininess.value = Math.max( material.shininess, 1e-4 ); // to prevent pow( 0.0, 0.0 )\n\n\t\tif ( material.emissiveMap ) {\n\n\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\n\n\t\t}\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\t\t\tif ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\t\t\tif ( material.side === BackSide ) uniforms.normalScale.value.negate();\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsToon( uniforms, material ) {\n\n\t\tif ( material.gradientMap ) {\n\n\t\t\tuniforms.gradientMap.value = material.gradientMap;\n\n\t\t}\n\n\t\tif ( material.emissiveMap ) {\n\n\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\n\n\t\t}\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\t\t\tif ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\t\t\tif ( material.side === BackSide ) uniforms.normalScale.value.negate();\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsStandard( uniforms, material ) {\n\n\t\tuniforms.roughness.value = material.roughness;\n\t\tuniforms.metalness.value = material.metalness;\n\n\t\tif ( material.roughnessMap ) {\n\n\t\t\tuniforms.roughnessMap.value = material.roughnessMap;\n\n\t\t}\n\n\t\tif ( material.metalnessMap ) {\n\n\t\t\tuniforms.metalnessMap.value = material.metalnessMap;\n\n\t\t}\n\n\t\tif ( material.emissiveMap ) {\n\n\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\n\n\t\t}\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\t\t\tif ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\t\t\tif ( material.side === BackSide ) uniforms.normalScale.value.negate();\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t\tconst envMap = properties.get( material ).envMap;\n\n\t\tif ( envMap ) {\n\n\t\t\t//uniforms.envMap.value = material.envMap; // part of uniforms common\n\t\t\tuniforms.envMapIntensity.value = material.envMapIntensity;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsPhysical( uniforms, material ) {\n\n\t\trefreshUniformsStandard( uniforms, material );\n\n\t\tuniforms.reflectivity.value = material.reflectivity; // also part of uniforms common\n\n\t\tuniforms.clearcoat.value = material.clearcoat;\n\t\tuniforms.clearcoatRoughness.value = material.clearcoatRoughness;\n\t\tif ( material.sheen ) uniforms.sheen.value.copy( material.sheen );\n\n\t\tif ( material.clearcoatMap ) {\n\n\t\t\tuniforms.clearcoatMap.value = material.clearcoatMap;\n\n\t\t}\n\n\t\tif ( material.clearcoatRoughnessMap ) {\n\n\t\t\tuniforms.clearcoatRoughnessMap.value = material.clearcoatRoughnessMap;\n\n\t\t}\n\n\t\tif ( material.clearcoatNormalMap ) {\n\n\t\t\tuniforms.clearcoatNormalScale.value.copy( material.clearcoatNormalScale );\n\t\t\tuniforms.clearcoatNormalMap.value = material.clearcoatNormalMap;\n\n\t\t\tif ( material.side === BackSide ) {\n\n\t\t\t\tuniforms.clearcoatNormalScale.value.negate();\n\n\t\t\t}\n\n\t\t}\n\n\t\tuniforms.transmission.value = material.transmission;\n\n\t\tif ( material.transmissionMap ) {\n\n\t\t\tuniforms.transmissionMap.value = material.transmissionMap;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsMatcap( uniforms, material ) {\n\n\t\tif ( material.matcap ) {\n\n\t\t\tuniforms.matcap.value = material.matcap;\n\n\t\t}\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\t\t\tif ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\t\t\tif ( material.side === BackSide ) uniforms.normalScale.value.negate();\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsDepth( uniforms, material ) {\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsDistance( uniforms, material ) {\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t\tuniforms.referencePosition.value.copy( material.referencePosition );\n\t\tuniforms.nearDistance.value = material.nearDistance;\n\t\tuniforms.farDistance.value = material.farDistance;\n\n\t}\n\n\tfunction refreshUniformsNormal( uniforms, material ) {\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\t\t\tif ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\t\t\tif ( material.side === BackSide ) uniforms.normalScale.value.negate();\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t}\n\n\treturn {\n\t\trefreshFogUniforms: refreshFogUniforms,\n\t\trefreshMaterialUniforms: refreshMaterialUniforms\n\t};\n\n}\n\nfunction WebGLRenderer( parameters ) {\n\n\tparameters = parameters || {};\n\n\tconst _canvas = parameters.canvas !== undefined ? parameters.canvas : document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' ),\n\t\t_context = parameters.context !== undefined ? parameters.context : null,\n\n\t\t_alpha = parameters.alpha !== undefined ? parameters.alpha : false,\n\t\t_depth = parameters.depth !== undefined ? parameters.depth : true,\n\t\t_stencil = parameters.stencil !== undefined ? parameters.stencil : true,\n\t\t_antialias = parameters.antialias !== undefined ? parameters.antialias : false,\n\t\t_premultipliedAlpha = parameters.premultipliedAlpha !== undefined ? parameters.premultipliedAlpha : true,\n\t\t_preserveDrawingBuffer = parameters.preserveDrawingBuffer !== undefined ? parameters.preserveDrawingBuffer : false,\n\t\t_powerPreference = parameters.powerPreference !== undefined ? parameters.powerPreference : 'default',\n\t\t_failIfMajorPerformanceCaveat = parameters.failIfMajorPerformanceCaveat !== undefined ? parameters.failIfMajorPerformanceCaveat : false;\n\n\tlet currentRenderList = null;\n\tlet currentRenderState = null;\n\n\t// public properties\n\n\tthis.domElement = _canvas;\n\n\t// Debug configuration container\n\tthis.debug = {\n\n\t\t/**\n\t\t * Enables error checking and reporting when shader programs are being compiled\n\t\t * @type {boolean}\n\t\t */\n\t\tcheckShaderErrors: true\n\t};\n\n\t// clearing\n\n\tthis.autoClear = true;\n\tthis.autoClearColor = true;\n\tthis.autoClearDepth = true;\n\tthis.autoClearStencil = true;\n\n\t// scene graph\n\n\tthis.sortObjects = true;\n\n\t// user-defined clipping\n\n\tthis.clippingPlanes = [];\n\tthis.localClippingEnabled = false;\n\n\t// physically based shading\n\n\tthis.gammaFactor = 2.0;\t// for backwards compatibility\n\tthis.outputEncoding = LinearEncoding;\n\n\t// physical lights\n\n\tthis.physicallyCorrectLights = false;\n\n\t// tone mapping\n\n\tthis.toneMapping = NoToneMapping;\n\tthis.toneMappingExposure = 1.0;\n\n\t// morphs\n\n\tthis.maxMorphTargets = 8;\n\tthis.maxMorphNormals = 4;\n\n\t// internal properties\n\n\tconst _this = this;\n\n\tlet _isContextLost = false;\n\n\t// internal state cache\n\n\tlet _framebuffer = null;\n\n\tlet _currentActiveCubeFace = 0;\n\tlet _currentActiveMipmapLevel = 0;\n\tlet _currentRenderTarget = null;\n\tlet _currentFramebuffer = null;\n\tlet _currentMaterialId = - 1;\n\n\tlet _currentCamera = null;\n\tlet _currentArrayCamera = null;\n\n\tconst _currentViewport = new Vector4();\n\tconst _currentScissor = new Vector4();\n\tlet _currentScissorTest = null;\n\n\t//\n\n\tlet _width = _canvas.width;\n\tlet _height = _canvas.height;\n\n\tlet _pixelRatio = 1;\n\tlet _opaqueSort = null;\n\tlet _transparentSort = null;\n\n\tconst _viewport = new Vector4( 0, 0, _width, _height );\n\tconst _scissor = new Vector4( 0, 0, _width, _height );\n\tlet _scissorTest = false;\n\n\t// frustum\n\n\tconst _frustum = new Frustum();\n\n\t// clipping\n\n\tlet _clippingEnabled = false;\n\tlet _localClippingEnabled = false;\n\n\t// camera matrices cache\n\n\tconst _projScreenMatrix = new Matrix4();\n\n\tconst _vector3 = new Vector3();\n\n\tconst _emptyScene = { background: null, fog: null, environment: null, overrideMaterial: null, isScene: true };\n\n\tfunction getTargetPixelRatio() {\n\n\t\treturn _currentRenderTarget === null ? _pixelRatio : 1;\n\n\t}\n\n\t// initialize\n\n\tlet _gl = _context;\n\n\tfunction getContext( contextNames, contextAttributes ) {\n\n\t\tfor ( let i = 0; i < contextNames.length; i ++ ) {\n\n\t\t\tconst contextName = contextNames[ i ];\n\t\t\tconst context = _canvas.getContext( contextName, contextAttributes );\n\t\t\tif ( context !== null ) return context;\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n\ttry {\n\n\t\tconst contextAttributes = {\n\t\t\talpha: _alpha,\n\t\t\tdepth: _depth,\n\t\t\tstencil: _stencil,\n\t\t\tantialias: _antialias,\n\t\t\tpremultipliedAlpha: _premultipliedAlpha,\n\t\t\tpreserveDrawingBuffer: _preserveDrawingBuffer,\n\t\t\tpowerPreference: _powerPreference,\n\t\t\tfailIfMajorPerformanceCaveat: _failIfMajorPerformanceCaveat\n\t\t};\n\n\t\t// event listeners must be registered before WebGL context is created, see #12753\n\n\t\t_canvas.addEventListener( 'webglcontextlost', onContextLost, false );\n\t\t_canvas.addEventListener( 'webglcontextrestored', onContextRestore, false );\n\n\t\tif ( _gl === null ) {\n\n\t\t\tconst contextNames = [ 'webgl2', 'webgl', 'experimental-webgl' ];\n\n\t\t\tif ( _this.isWebGL1Renderer === true ) {\n\n\t\t\t\tcontextNames.shift();\n\n\t\t\t}\n\n\t\t\t_gl = getContext( contextNames, contextAttributes );\n\n\t\t\tif ( _gl === null ) {\n\n\t\t\t\tif ( getContext( contextNames ) ) {\n\n\t\t\t\t\tthrow new Error( 'Error creating WebGL context with your selected attributes.' );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthrow new Error( 'Error creating WebGL context.' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Some experimental-webgl implementations do not have getShaderPrecisionFormat\n\n\t\tif ( _gl.getShaderPrecisionFormat === undefined ) {\n\n\t\t\t_gl.getShaderPrecisionFormat = function () {\n\n\t\t\t\treturn { 'rangeMin': 1, 'rangeMax': 1, 'precision': 1 };\n\n\t\t\t};\n\n\t\t}\n\n\t} catch ( error ) {\n\n\t\tconsole.error( 'THREE.WebGLRenderer: ' + error.message );\n\t\tthrow error;\n\n\t}\n\n\tlet extensions, capabilities, state, info;\n\tlet properties, textures, cubemaps, attributes, geometries, objects;\n\tlet programCache, materials, renderLists, renderStates, clipping;\n\n\tlet background, morphtargets, bufferRenderer, indexedBufferRenderer;\n\n\tlet utils, bindingStates;\n\n\tfunction initGLContext() {\n\n\t\textensions = new WebGLExtensions( _gl );\n\n\t\tcapabilities = new WebGLCapabilities( _gl, extensions, parameters );\n\n\t\tif ( capabilities.isWebGL2 === false ) {\n\n\t\t\textensions.get( 'WEBGL_depth_texture' );\n\t\t\textensions.get( 'OES_texture_float' );\n\t\t\textensions.get( 'OES_texture_half_float' );\n\t\t\textensions.get( 'OES_texture_half_float_linear' );\n\t\t\textensions.get( 'OES_standard_derivatives' );\n\t\t\textensions.get( 'OES_element_index_uint' );\n\t\t\textensions.get( 'OES_vertex_array_object' );\n\t\t\textensions.get( 'ANGLE_instanced_arrays' );\n\n\t\t}\n\n\t\textensions.get( 'OES_texture_float_linear' );\n\n\t\tutils = new WebGLUtils( _gl, extensions, capabilities );\n\n\t\tstate = new WebGLState( _gl, extensions, capabilities );\n\t\tstate.scissor( _currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ).floor() );\n\t\tstate.viewport( _currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ).floor() );\n\n\t\tinfo = new WebGLInfo( _gl );\n\t\tproperties = new WebGLProperties();\n\t\ttextures = new WebGLTextures( _gl, extensions, state, properties, capabilities, utils, info );\n\t\tcubemaps = new WebGLCubeMaps( _this );\n\t\tattributes = new WebGLAttributes( _gl, capabilities );\n\t\tbindingStates = new WebGLBindingStates( _gl, extensions, attributes, capabilities );\n\t\tgeometries = new WebGLGeometries( _gl, attributes, info, bindingStates );\n\t\tobjects = new WebGLObjects( _gl, geometries, attributes, info );\n\t\tmorphtargets = new WebGLMorphtargets( _gl );\n\t\tclipping = new WebGLClipping( properties );\n\t\tprogramCache = new WebGLPrograms( _this, cubemaps, extensions, capabilities, bindingStates, clipping );\n\t\tmaterials = new WebGLMaterials( properties );\n\t\trenderLists = new WebGLRenderLists( properties );\n\t\trenderStates = new WebGLRenderStates();\n\t\tbackground = new WebGLBackground( _this, cubemaps, state, objects, _premultipliedAlpha );\n\n\t\tbufferRenderer = new WebGLBufferRenderer( _gl, extensions, info, capabilities );\n\t\tindexedBufferRenderer = new WebGLIndexedBufferRenderer( _gl, extensions, info, capabilities );\n\n\t\tinfo.programs = programCache.programs;\n\n\t\t_this.capabilities = capabilities;\n\t\t_this.extensions = extensions;\n\t\t_this.properties = properties;\n\t\t_this.renderLists = renderLists;\n\t\t_this.state = state;\n\t\t_this.info = info;\n\n\t}\n\n\tinitGLContext();\n\n\t// xr\n\n\tconst xr = new WebXRManager( _this, _gl );\n\n\tthis.xr = xr;\n\n\t// shadow map\n\n\tconst shadowMap = new WebGLShadowMap( _this, objects, capabilities.maxTextureSize );\n\n\tthis.shadowMap = shadowMap;\n\n\t// API\n\n\tthis.getContext = function () {\n\n\t\treturn _gl;\n\n\t};\n\n\tthis.getContextAttributes = function () {\n\n\t\treturn _gl.getContextAttributes();\n\n\t};\n\n\tthis.forceContextLoss = function () {\n\n\t\tconst extension = extensions.get( 'WEBGL_lose_context' );\n\t\tif ( extension ) extension.loseContext();\n\n\t};\n\n\tthis.forceContextRestore = function () {\n\n\t\tconst extension = extensions.get( 'WEBGL_lose_context' );\n\t\tif ( extension ) extension.restoreContext();\n\n\t};\n\n\tthis.getPixelRatio = function () {\n\n\t\treturn _pixelRatio;\n\n\t};\n\n\tthis.setPixelRatio = function ( value ) {\n\n\t\tif ( value === undefined ) return;\n\n\t\t_pixelRatio = value;\n\n\t\tthis.setSize( _width, _height, false );\n\n\t};\n\n\tthis.getSize = function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'WebGLRenderer: .getsize() now requires a Vector2 as an argument' );\n\n\t\t\ttarget = new Vector2();\n\n\t\t}\n\n\t\treturn target.set( _width, _height );\n\n\t};\n\n\tthis.setSize = function ( width, height, updateStyle ) {\n\n\t\tif ( xr.isPresenting ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: Can\\'t change size while VR device is presenting.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\t_width = width;\n\t\t_height = height;\n\n\t\t_canvas.width = Math.floor( width * _pixelRatio );\n\t\t_canvas.height = Math.floor( height * _pixelRatio );\n\n\t\tif ( updateStyle !== false ) {\n\n\t\t\t_canvas.style.width = width + 'px';\n\t\t\t_canvas.style.height = height + 'px';\n\n\t\t}\n\n\t\tthis.setViewport( 0, 0, width, height );\n\n\t};\n\n\tthis.getDrawingBufferSize = function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'WebGLRenderer: .getdrawingBufferSize() now requires a Vector2 as an argument' );\n\n\t\t\ttarget = new Vector2();\n\n\t\t}\n\n\t\treturn target.set( _width * _pixelRatio, _height * _pixelRatio ).floor();\n\n\t};\n\n\tthis.setDrawingBufferSize = function ( width, height, pixelRatio ) {\n\n\t\t_width = width;\n\t\t_height = height;\n\n\t\t_pixelRatio = pixelRatio;\n\n\t\t_canvas.width = Math.floor( width * pixelRatio );\n\t\t_canvas.height = Math.floor( height * pixelRatio );\n\n\t\tthis.setViewport( 0, 0, width, height );\n\n\t};\n\n\tthis.getCurrentViewport = function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'WebGLRenderer: .getCurrentViewport() now requires a Vector4 as an argument' );\n\n\t\t\ttarget = new Vector4();\n\n\t\t}\n\n\t\treturn target.copy( _currentViewport );\n\n\t};\n\n\tthis.getViewport = function ( target ) {\n\n\t\treturn target.copy( _viewport );\n\n\t};\n\n\tthis.setViewport = function ( x, y, width, height ) {\n\n\t\tif ( x.isVector4 ) {\n\n\t\t\t_viewport.set( x.x, x.y, x.z, x.w );\n\n\t\t} else {\n\n\t\t\t_viewport.set( x, y, width, height );\n\n\t\t}\n\n\t\tstate.viewport( _currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ).floor() );\n\n\t};\n\n\tthis.getScissor = function ( target ) {\n\n\t\treturn target.copy( _scissor );\n\n\t};\n\n\tthis.setScissor = function ( x, y, width, height ) {\n\n\t\tif ( x.isVector4 ) {\n\n\t\t\t_scissor.set( x.x, x.y, x.z, x.w );\n\n\t\t} else {\n\n\t\t\t_scissor.set( x, y, width, height );\n\n\t\t}\n\n\t\tstate.scissor( _currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ).floor() );\n\n\t};\n\n\tthis.getScissorTest = function () {\n\n\t\treturn _scissorTest;\n\n\t};\n\n\tthis.setScissorTest = function ( boolean ) {\n\n\t\tstate.setScissorTest( _scissorTest = boolean );\n\n\t};\n\n\tthis.setOpaqueSort = function ( method ) {\n\n\t\t_opaqueSort = method;\n\n\t};\n\n\tthis.setTransparentSort = function ( method ) {\n\n\t\t_transparentSort = method;\n\n\t};\n\n\t// Clearing\n\n\tthis.getClearColor = function () {\n\n\t\treturn background.getClearColor();\n\n\t};\n\n\tthis.setClearColor = function () {\n\n\t\tbackground.setClearColor.apply( background, arguments );\n\n\t};\n\n\tthis.getClearAlpha = function () {\n\n\t\treturn background.getClearAlpha();\n\n\t};\n\n\tthis.setClearAlpha = function () {\n\n\t\tbackground.setClearAlpha.apply( background, arguments );\n\n\t};\n\n\tthis.clear = function ( color, depth, stencil ) {\n\n\t\tlet bits = 0;\n\n\t\tif ( color === undefined || color ) bits |= 16384;\n\t\tif ( depth === undefined || depth ) bits |= 256;\n\t\tif ( stencil === undefined || stencil ) bits |= 1024;\n\n\t\t_gl.clear( bits );\n\n\t};\n\n\tthis.clearColor = function () {\n\n\t\tthis.clear( true, false, false );\n\n\t};\n\n\tthis.clearDepth = function () {\n\n\t\tthis.clear( false, true, false );\n\n\t};\n\n\tthis.clearStencil = function () {\n\n\t\tthis.clear( false, false, true );\n\n\t};\n\n\t//\n\n\tthis.dispose = function () {\n\n\t\t_canvas.removeEventListener( 'webglcontextlost', onContextLost, false );\n\t\t_canvas.removeEventListener( 'webglcontextrestored', onContextRestore, false );\n\n\t\trenderLists.dispose();\n\t\trenderStates.dispose();\n\t\tproperties.dispose();\n\t\tcubemaps.dispose();\n\t\tobjects.dispose();\n\t\tbindingStates.dispose();\n\n\t\txr.dispose();\n\n\t\tanimation.stop();\n\n\t};\n\n\t// Events\n\n\tfunction onContextLost( event ) {\n\n\t\tevent.preventDefault();\n\n\t\tconsole.log( 'THREE.WebGLRenderer: Context Lost.' );\n\n\t\t_isContextLost = true;\n\n\t}\n\n\tfunction onContextRestore( /* event */ ) {\n\n\t\tconsole.log( 'THREE.WebGLRenderer: Context Restored.' );\n\n\t\t_isContextLost = false;\n\n\t\tinitGLContext();\n\n\t}\n\n\tfunction onMaterialDispose( event ) {\n\n\t\tconst material = event.target;\n\n\t\tmaterial.removeEventListener( 'dispose', onMaterialDispose );\n\n\t\tdeallocateMaterial( material );\n\n\t}\n\n\t// Buffer deallocation\n\n\tfunction deallocateMaterial( material ) {\n\n\t\treleaseMaterialProgramReference( material );\n\n\t\tproperties.remove( material );\n\n\t}\n\n\n\tfunction releaseMaterialProgramReference( material ) {\n\n\t\tconst programInfo = properties.get( material ).program;\n\n\t\tif ( programInfo !== undefined ) {\n\n\t\t\tprogramCache.releaseProgram( programInfo );\n\n\t\t}\n\n\t}\n\n\t// Buffer rendering\n\n\tfunction renderObjectImmediate( object, program ) {\n\n\t\tobject.render( function ( object ) {\n\n\t\t\t_this.renderBufferImmediate( object, program );\n\n\t\t} );\n\n\t}\n\n\tthis.renderBufferImmediate = function ( object, program ) {\n\n\t\tbindingStates.initAttributes();\n\n\t\tconst buffers = properties.get( object );\n\n\t\tif ( object.hasPositions && ! buffers.position ) buffers.position = _gl.createBuffer();\n\t\tif ( object.hasNormals && ! buffers.normal ) buffers.normal = _gl.createBuffer();\n\t\tif ( object.hasUvs && ! buffers.uv ) buffers.uv = _gl.createBuffer();\n\t\tif ( object.hasColors && ! buffers.color ) buffers.color = _gl.createBuffer();\n\n\t\tconst programAttributes = program.getAttributes();\n\n\t\tif ( object.hasPositions ) {\n\n\t\t\t_gl.bindBuffer( 34962, buffers.position );\n\t\t\t_gl.bufferData( 34962, object.positionArray, 35048 );\n\n\t\t\tbindingStates.enableAttribute( programAttributes.position );\n\t\t\t_gl.vertexAttribPointer( programAttributes.position, 3, 5126, false, 0, 0 );\n\n\t\t}\n\n\t\tif ( object.hasNormals ) {\n\n\t\t\t_gl.bindBuffer( 34962, buffers.normal );\n\t\t\t_gl.bufferData( 34962, object.normalArray, 35048 );\n\n\t\t\tbindingStates.enableAttribute( programAttributes.normal );\n\t\t\t_gl.vertexAttribPointer( programAttributes.normal, 3, 5126, false, 0, 0 );\n\n\t\t}\n\n\t\tif ( object.hasUvs ) {\n\n\t\t\t_gl.bindBuffer( 34962, buffers.uv );\n\t\t\t_gl.bufferData( 34962, object.uvArray, 35048 );\n\n\t\t\tbindingStates.enableAttribute( programAttributes.uv );\n\t\t\t_gl.vertexAttribPointer( programAttributes.uv, 2, 5126, false, 0, 0 );\n\n\t\t}\n\n\t\tif ( object.hasColors ) {\n\n\t\t\t_gl.bindBuffer( 34962, buffers.color );\n\t\t\t_gl.bufferData( 34962, object.colorArray, 35048 );\n\n\t\t\tbindingStates.enableAttribute( programAttributes.color );\n\t\t\t_gl.vertexAttribPointer( programAttributes.color, 3, 5126, false, 0, 0 );\n\n\t\t}\n\n\t\tbindingStates.disableUnusedAttributes();\n\n\t\t_gl.drawArrays( 4, 0, object.count );\n\n\t\tobject.count = 0;\n\n\t};\n\n\tthis.renderBufferDirect = function ( camera, scene, geometry, material, object, group ) {\n\n\t\tif ( scene === null ) scene = _emptyScene; // renderBufferDirect second parameter used to be fog (could be null)\n\n\t\tconst frontFaceCW = ( object.isMesh && object.matrixWorld.determinant() < 0 );\n\n\t\tconst program = setProgram( camera, scene, material, object );\n\n\t\tstate.setMaterial( material, frontFaceCW );\n\n\t\t//\n\n\t\tlet index = geometry.index;\n\t\tconst position = geometry.attributes.position;\n\n\t\t//\n\n\t\tif ( index === null ) {\n\n\t\t\tif ( position === undefined || position.count === 0 ) return;\n\n\t\t} else if ( index.count === 0 ) {\n\n\t\t\treturn;\n\n\t\t}\n\n\t\t//\n\n\t\tlet rangeFactor = 1;\n\n\t\tif ( material.wireframe === true ) {\n\n\t\t\tindex = geometries.getWireframeAttribute( geometry );\n\t\t\trangeFactor = 2;\n\n\t\t}\n\n\t\tif ( material.morphTargets || material.morphNormals ) {\n\n\t\t\tmorphtargets.update( object, geometry, material, program );\n\n\t\t}\n\n\t\tbindingStates.setup( object, material, program, geometry, index );\n\n\t\tlet attribute;\n\t\tlet renderer = bufferRenderer;\n\n\t\tif ( index !== null ) {\n\n\t\t\tattribute = attributes.get( index );\n\n\t\t\trenderer = indexedBufferRenderer;\n\t\t\trenderer.setIndex( attribute );\n\n\t\t}\n\n\t\t//\n\n\t\tconst dataCount = ( index !== null ) ? index.count : position.count;\n\n\t\tconst rangeStart = geometry.drawRange.start * rangeFactor;\n\t\tconst rangeCount = geometry.drawRange.count * rangeFactor;\n\n\t\tconst groupStart = group !== null ? group.start * rangeFactor : 0;\n\t\tconst groupCount = group !== null ? group.count * rangeFactor : Infinity;\n\n\t\tconst drawStart = Math.max( rangeStart, groupStart );\n\t\tconst drawEnd = Math.min( dataCount, rangeStart + rangeCount, groupStart + groupCount ) - 1;\n\n\t\tconst drawCount = Math.max( 0, drawEnd - drawStart + 1 );\n\n\t\tif ( drawCount === 0 ) return;\n\n\t\t//\n\n\t\tif ( object.isMesh ) {\n\n\t\t\tif ( material.wireframe === true ) {\n\n\t\t\t\tstate.setLineWidth( material.wireframeLinewidth * getTargetPixelRatio() );\n\t\t\t\trenderer.setMode( 1 );\n\n\t\t\t} else {\n\n\t\t\t\trenderer.setMode( 4 );\n\n\t\t\t}\n\n\t\t} else if ( object.isLine ) {\n\n\t\t\tlet lineWidth = material.linewidth;\n\n\t\t\tif ( lineWidth === undefined ) lineWidth = 1; // Not using Line*Material\n\n\t\t\tstate.setLineWidth( lineWidth * getTargetPixelRatio() );\n\n\t\t\tif ( object.isLineSegments ) {\n\n\t\t\t\trenderer.setMode( 1 );\n\n\t\t\t} else if ( object.isLineLoop ) {\n\n\t\t\t\trenderer.setMode( 2 );\n\n\t\t\t} else {\n\n\t\t\t\trenderer.setMode( 3 );\n\n\t\t\t}\n\n\t\t} else if ( object.isPoints ) {\n\n\t\t\trenderer.setMode( 0 );\n\n\t\t} else if ( object.isSprite ) {\n\n\t\t\trenderer.setMode( 4 );\n\n\t\t}\n\n\t\tif ( object.isInstancedMesh ) {\n\n\t\t\trenderer.renderInstances( drawStart, drawCount, object.count );\n\n\t\t} else if ( geometry.isInstancedBufferGeometry ) {\n\n\t\t\tconst instanceCount = Math.min( geometry.instanceCount, geometry._maxInstanceCount );\n\n\t\t\trenderer.renderInstances( drawStart, drawCount, instanceCount );\n\n\t\t} else {\n\n\t\t\trenderer.render( drawStart, drawCount );\n\n\t\t}\n\n\t};\n\n\t// Compile\n\n\tthis.compile = function ( scene, camera ) {\n\n\t\tcurrentRenderState = renderStates.get( scene, camera );\n\t\tcurrentRenderState.init();\n\n\t\tscene.traverse( function ( object ) {\n\n\t\t\tif ( object.isLight ) {\n\n\t\t\t\tcurrentRenderState.pushLight( object );\n\n\t\t\t\tif ( object.castShadow ) {\n\n\t\t\t\t\tcurrentRenderState.pushShadow( object );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} );\n\n\t\tcurrentRenderState.setupLights( camera );\n\n\t\tconst compiled = new WeakMap();\n\n\t\tscene.traverse( function ( object ) {\n\n\t\t\tconst material = object.material;\n\n\t\t\tif ( material ) {\n\n\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\tfor ( let i = 0; i < material.length; i ++ ) {\n\n\t\t\t\t\t\tconst material2 = material[ i ];\n\n\t\t\t\t\t\tif ( compiled.has( material2 ) === false ) {\n\n\t\t\t\t\t\t\tinitMaterial( material2, scene, object );\n\t\t\t\t\t\t\tcompiled.set( material2 );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( compiled.has( material ) === false ) {\n\n\t\t\t\t\tinitMaterial( material, scene, object );\n\t\t\t\t\tcompiled.set( material );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} );\n\n\t};\n\n\t// Animation Loop\n\n\tlet onAnimationFrameCallback = null;\n\n\tfunction onAnimationFrame( time ) {\n\n\t\tif ( xr.isPresenting ) return;\n\t\tif ( onAnimationFrameCallback ) onAnimationFrameCallback( time );\n\n\t}\n\n\tconst animation = new WebGLAnimation();\n\tanimation.setAnimationLoop( onAnimationFrame );\n\n\tif ( typeof window !== 'undefined' ) animation.setContext( window );\n\n\tthis.setAnimationLoop = function ( callback ) {\n\n\t\tonAnimationFrameCallback = callback;\n\t\txr.setAnimationLoop( callback );\n\n\t\t( callback === null ) ? animation.stop() : animation.start();\n\n\t};\n\n\t// Rendering\n\n\tthis.render = function ( scene, camera ) {\n\n\t\tlet renderTarget, forceClear;\n\n\t\tif ( arguments[ 2 ] !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer.render(): the renderTarget argument has been removed. Use .setRenderTarget() instead.' );\n\t\t\trenderTarget = arguments[ 2 ];\n\n\t\t}\n\n\t\tif ( arguments[ 3 ] !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer.render(): the forceClear argument has been removed. Use .clear() instead.' );\n\t\t\tforceClear = arguments[ 3 ];\n\n\t\t}\n\n\t\tif ( camera !== undefined && camera.isCamera !== true ) {\n\n\t\t\tconsole.error( 'THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( _isContextLost === true ) return;\n\n\t\t// reset caching for this frame\n\n\t\tbindingStates.resetDefaultState();\n\t\t_currentMaterialId = - 1;\n\t\t_currentCamera = null;\n\n\t\t// update scene graph\n\n\t\tif ( scene.autoUpdate === true ) scene.updateMatrixWorld();\n\n\t\t// update camera matrices and frustum\n\n\t\tif ( camera.parent === null ) camera.updateMatrixWorld();\n\n\t\tif ( xr.enabled === true && xr.isPresenting === true ) {\n\n\t\t\tcamera = xr.getCamera( camera );\n\n\t\t}\n\n\t\t//\n\t\tif ( scene.isScene === true ) scene.onBeforeRender( _this, scene, camera, renderTarget || _currentRenderTarget );\n\n\t\tcurrentRenderState = renderStates.get( scene, camera );\n\t\tcurrentRenderState.init();\n\n\t\t_projScreenMatrix.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse );\n\t\t_frustum.setFromProjectionMatrix( _projScreenMatrix );\n\n\t\t_localClippingEnabled = this.localClippingEnabled;\n\t\t_clippingEnabled = clipping.init( this.clippingPlanes, _localClippingEnabled, camera );\n\n\t\tcurrentRenderList = renderLists.get( scene, camera );\n\t\tcurrentRenderList.init();\n\n\t\tprojectObject( scene, camera, 0, _this.sortObjects );\n\n\t\tcurrentRenderList.finish();\n\n\t\tif ( _this.sortObjects === true ) {\n\n\t\t\tcurrentRenderList.sort( _opaqueSort, _transparentSort );\n\n\t\t}\n\n\t\t//\n\n\t\tif ( _clippingEnabled === true ) clipping.beginShadows();\n\n\t\tconst shadowsArray = currentRenderState.state.shadowsArray;\n\n\t\tshadowMap.render( shadowsArray, scene, camera );\n\n\t\tcurrentRenderState.setupLights( camera );\n\n\t\tif ( _clippingEnabled === true ) clipping.endShadows();\n\n\t\t//\n\n\t\tif ( this.info.autoReset === true ) this.info.reset();\n\n\t\tif ( renderTarget !== undefined ) {\n\n\t\t\tthis.setRenderTarget( renderTarget );\n\n\t\t}\n\n\t\t//\n\n\t\tbackground.render( currentRenderList, scene, camera, forceClear );\n\n\t\t// render scene\n\n\t\tconst opaqueObjects = currentRenderList.opaque;\n\t\tconst transparentObjects = currentRenderList.transparent;\n\n\t\tif ( opaqueObjects.length > 0 ) renderObjects( opaqueObjects, scene, camera );\n\t\tif ( transparentObjects.length > 0 ) renderObjects( transparentObjects, scene, camera );\n\n\t\t//\n\n\t\tif ( scene.isScene === true ) scene.onAfterRender( _this, scene, camera );\n\n\t\t//\n\n\t\tif ( _currentRenderTarget !== null ) {\n\n\t\t\t// Generate mipmap if we're using any kind of mipmap filtering\n\n\t\t\ttextures.updateRenderTargetMipmap( _currentRenderTarget );\n\n\t\t\t// resolve multisample renderbuffers to a single-sample texture if necessary\n\n\t\t\ttextures.updateMultisampleRenderTarget( _currentRenderTarget );\n\n\t\t}\n\n\t\t// Ensure depth buffer writing is enabled so it can be cleared on next render\n\n\t\tstate.buffers.depth.setTest( true );\n\t\tstate.buffers.depth.setMask( true );\n\t\tstate.buffers.color.setMask( true );\n\n\t\tstate.setPolygonOffset( false );\n\n\t\t// _gl.finish();\n\n\t\tcurrentRenderList = null;\n\t\tcurrentRenderState = null;\n\n\t};\n\n\tfunction projectObject( object, camera, groupOrder, sortObjects ) {\n\n\t\tif ( object.visible === false ) return;\n\n\t\tconst visible = object.layers.test( camera.layers );\n\n\t\tif ( visible ) {\n\n\t\t\tif ( object.isGroup ) {\n\n\t\t\t\tgroupOrder = object.renderOrder;\n\n\t\t\t} else if ( object.isLOD ) {\n\n\t\t\t\tif ( object.autoUpdate === true ) object.update( camera );\n\n\t\t\t} else if ( object.isLight ) {\n\n\t\t\t\tcurrentRenderState.pushLight( object );\n\n\t\t\t\tif ( object.castShadow ) {\n\n\t\t\t\t\tcurrentRenderState.pushShadow( object );\n\n\t\t\t\t}\n\n\t\t\t} else if ( object.isSprite ) {\n\n\t\t\t\tif ( ! object.frustumCulled || _frustum.intersectsSprite( object ) ) {\n\n\t\t\t\t\tif ( sortObjects ) {\n\n\t\t\t\t\t\t_vector3.setFromMatrixPosition( object.matrixWorld )\n\t\t\t\t\t\t\t.applyMatrix4( _projScreenMatrix );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst geometry = objects.update( object );\n\t\t\t\t\tconst material = object.material;\n\n\t\t\t\t\tif ( material.visible ) {\n\n\t\t\t\t\t\tcurrentRenderList.push( object, geometry, material, groupOrder, _vector3.z, null );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else if ( object.isImmediateRenderObject ) {\n\n\t\t\t\tif ( sortObjects ) {\n\n\t\t\t\t\t_vector3.setFromMatrixPosition( object.matrixWorld )\n\t\t\t\t\t\t.applyMatrix4( _projScreenMatrix );\n\n\t\t\t\t}\n\n\t\t\t\tcurrentRenderList.push( object, null, object.material, groupOrder, _vector3.z, null );\n\n\t\t\t} else if ( object.isMesh || object.isLine || object.isPoints ) {\n\n\t\t\t\tif ( object.isSkinnedMesh ) {\n\n\t\t\t\t\t// update skeleton only once in a frame\n\n\t\t\t\t\tif ( object.skeleton.frame !== info.render.frame ) {\n\n\t\t\t\t\t\tobject.skeleton.update();\n\t\t\t\t\t\tobject.skeleton.frame = info.render.frame;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( ! object.frustumCulled || _frustum.intersectsObject( object ) ) {\n\n\t\t\t\t\tif ( sortObjects ) {\n\n\t\t\t\t\t\t_vector3.setFromMatrixPosition( object.matrixWorld )\n\t\t\t\t\t\t\t.applyMatrix4( _projScreenMatrix );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst geometry = objects.update( object );\n\t\t\t\t\tconst material = object.material;\n\n\t\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\t\tconst groups = geometry.groups;\n\n\t\t\t\t\t\tfor ( let i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\t\t\t\t\tconst group = groups[ i ];\n\t\t\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\t\t\tif ( groupMaterial && groupMaterial.visible ) {\n\n\t\t\t\t\t\t\t\tcurrentRenderList.push( object, geometry, groupMaterial, groupOrder, _vector3.z, group );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else if ( material.visible ) {\n\n\t\t\t\t\t\tcurrentRenderList.push( object, geometry, material, groupOrder, _vector3.z, null );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst children = object.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tprojectObject( children[ i ], camera, groupOrder, sortObjects );\n\n\t\t}\n\n\t}\n\n\tfunction renderObjects( renderList, scene, camera ) {\n\n\t\tconst overrideMaterial = scene.isScene === true ? scene.overrideMaterial : null;\n\n\t\tfor ( let i = 0, l = renderList.length; i < l; i ++ ) {\n\n\t\t\tconst renderItem = renderList[ i ];\n\n\t\t\tconst object = renderItem.object;\n\t\t\tconst geometry = renderItem.geometry;\n\t\t\tconst material = overrideMaterial === null ? renderItem.material : overrideMaterial;\n\t\t\tconst group = renderItem.group;\n\n\t\t\tif ( camera.isArrayCamera ) {\n\n\t\t\t\t_currentArrayCamera = camera;\n\n\t\t\t\tconst cameras = camera.cameras;\n\n\t\t\t\tfor ( let j = 0, jl = cameras.length; j < jl; j ++ ) {\n\n\t\t\t\t\tconst camera2 = cameras[ j ];\n\n\t\t\t\t\tif ( object.layers.test( camera2.layers ) ) {\n\n\t\t\t\t\t\tstate.viewport( _currentViewport.copy( camera2.viewport ) );\n\n\t\t\t\t\t\tcurrentRenderState.setupLights( camera2 );\n\n\t\t\t\t\t\trenderObject( object, scene, camera2, geometry, material, group );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t_currentArrayCamera = null;\n\n\t\t\t\trenderObject( object, scene, camera, geometry, material, group );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction renderObject( object, scene, camera, geometry, material, group ) {\n\n\t\tobject.onBeforeRender( _this, scene, camera, geometry, material, group );\n\t\tcurrentRenderState = renderStates.get( scene, _currentArrayCamera || camera );\n\n\t\tobject.modelViewMatrix.multiplyMatrices( camera.matrixWorldInverse, object.matrixWorld );\n\t\tobject.normalMatrix.getNormalMatrix( object.modelViewMatrix );\n\n\t\tif ( object.isImmediateRenderObject ) {\n\n\t\t\tconst program = setProgram( camera, scene, material, object );\n\n\t\t\tstate.setMaterial( material );\n\n\t\t\tbindingStates.reset();\n\n\t\t\trenderObjectImmediate( object, program );\n\n\t\t} else {\n\n\t\t\t_this.renderBufferDirect( camera, scene, geometry, material, object, group );\n\n\t\t}\n\n\t\tobject.onAfterRender( _this, scene, camera, geometry, material, group );\n\t\tcurrentRenderState = renderStates.get( scene, _currentArrayCamera || camera );\n\n\t}\n\n\tfunction initMaterial( material, scene, object ) {\n\n\t\tif ( scene.isScene !== true ) scene = _emptyScene; // scene could be a Mesh, Line, Points, ...\n\n\t\tconst materialProperties = properties.get( material );\n\n\t\tconst lights = currentRenderState.state.lights;\n\t\tconst shadowsArray = currentRenderState.state.shadowsArray;\n\n\t\tconst lightsStateVersion = lights.state.version;\n\n\t\tconst parameters = programCache.getParameters( material, lights.state, shadowsArray, scene, object );\n\t\tconst programCacheKey = programCache.getProgramCacheKey( parameters );\n\n\t\tlet program = materialProperties.program;\n\t\tlet programChange = true;\n\n\t\tif ( program === undefined ) {\n\n\t\t\t// new material\n\t\t\tmaterial.addEventListener( 'dispose', onMaterialDispose );\n\n\t\t} else if ( program.cacheKey !== programCacheKey ) {\n\n\t\t\t// changed glsl or parameters\n\t\t\treleaseMaterialProgramReference( material );\n\n\t\t} else if ( materialProperties.lightsStateVersion !== lightsStateVersion ) {\n\n\t\t\tprogramChange = false;\n\n\t\t} else if ( parameters.shaderID !== undefined ) {\n\n\t\t\t// same glsl and uniform list, envMap still needs the update here to avoid a frame-late effect\n\n\t\t\tconst environment = material.isMeshStandardMaterial ? scene.environment : null;\n\t\t\tmaterialProperties.envMap = cubemaps.get( material.envMap || environment );\n\n\t\t\treturn;\n\n\t\t} else {\n\n\t\t\t// only rebuild uniform list\n\t\t\tprogramChange = false;\n\n\t\t}\n\n\t\tif ( programChange ) {\n\n\t\t\tparameters.uniforms = programCache.getUniforms( material );\n\n\t\t\tmaterial.onBeforeCompile( parameters, _this );\n\n\t\t\tprogram = programCache.acquireProgram( parameters, programCacheKey );\n\n\t\t\tmaterialProperties.program = program;\n\t\t\tmaterialProperties.uniforms = parameters.uniforms;\n\t\t\tmaterialProperties.outputEncoding = parameters.outputEncoding;\n\n\t\t}\n\n\t\tconst uniforms = materialProperties.uniforms;\n\n\t\tif ( ! material.isShaderMaterial &&\n\t\t\t! material.isRawShaderMaterial ||\n\t\t\tmaterial.clipping === true ) {\n\n\t\t\tmaterialProperties.numClippingPlanes = clipping.numPlanes;\n\t\t\tmaterialProperties.numIntersection = clipping.numIntersection;\n\t\t\tuniforms.clippingPlanes = clipping.uniform;\n\n\t\t}\n\n\t\tmaterialProperties.environment = material.isMeshStandardMaterial ? scene.environment : null;\n\t\tmaterialProperties.fog = scene.fog;\n\t\tmaterialProperties.envMap = cubemaps.get( material.envMap || materialProperties.environment );\n\n\t\t// store the light setup it was created for\n\n\t\tmaterialProperties.needsLights = materialNeedsLights( material );\n\t\tmaterialProperties.lightsStateVersion = lightsStateVersion;\n\n\t\tif ( materialProperties.needsLights ) {\n\n\t\t\t// wire up the material to this renderer's lighting state\n\n\t\t\tuniforms.ambientLightColor.value = lights.state.ambient;\n\t\t\tuniforms.lightProbe.value = lights.state.probe;\n\t\t\tuniforms.directionalLights.value = lights.state.directional;\n\t\t\tuniforms.directionalLightShadows.value = lights.state.directionalShadow;\n\t\t\tuniforms.spotLights.value = lights.state.spot;\n\t\t\tuniforms.spotLightShadows.value = lights.state.spotShadow;\n\t\t\tuniforms.rectAreaLights.value = lights.state.rectArea;\n\t\t\tuniforms.ltc_1.value = lights.state.rectAreaLTC1;\n\t\t\tuniforms.ltc_2.value = lights.state.rectAreaLTC2;\n\t\t\tuniforms.pointLights.value = lights.state.point;\n\t\t\tuniforms.pointLightShadows.value = lights.state.pointShadow;\n\t\t\tuniforms.hemisphereLights.value = lights.state.hemi;\n\n\t\t\tuniforms.directionalShadowMap.value = lights.state.directionalShadowMap;\n\t\t\tuniforms.directionalShadowMatrix.value = lights.state.directionalShadowMatrix;\n\t\t\tuniforms.spotShadowMap.value = lights.state.spotShadowMap;\n\t\t\tuniforms.spotShadowMatrix.value = lights.state.spotShadowMatrix;\n\t\t\tuniforms.pointShadowMap.value = lights.state.pointShadowMap;\n\t\t\tuniforms.pointShadowMatrix.value = lights.state.pointShadowMatrix;\n\t\t\t// TODO (abelnation): add area lights shadow info to uniforms\n\n\t\t}\n\n\t\tconst progUniforms = materialProperties.program.getUniforms();\n\t\tconst uniformsList = WebGLUniforms.seqWithValue( progUniforms.seq, uniforms );\n\n\t\tmaterialProperties.uniformsList = uniformsList;\n\n\t}\n\n\tfunction setProgram( camera, scene, material, object ) {\n\n\t\tif ( scene.isScene !== true ) scene = _emptyScene; // scene could be a Mesh, Line, Points, ...\n\n\t\ttextures.resetTextureUnits();\n\n\t\tconst fog = scene.fog;\n\t\tconst environment = material.isMeshStandardMaterial ? scene.environment : null;\n\t\tconst encoding = ( _currentRenderTarget === null ) ? _this.outputEncoding : _currentRenderTarget.texture.encoding;\n\t\tconst envMap = cubemaps.get( material.envMap || environment );\n\n\t\tconst materialProperties = properties.get( material );\n\t\tconst lights = currentRenderState.state.lights;\n\n\t\tif ( _clippingEnabled === true ) {\n\n\t\t\tif ( _localClippingEnabled === true || camera !== _currentCamera ) {\n\n\t\t\t\tconst useCache =\n\t\t\t\t\tcamera === _currentCamera &&\n\t\t\t\t\tmaterial.id === _currentMaterialId;\n\n\t\t\t\t// we might want to call this function with some ClippingGroup\n\t\t\t\t// object instead of the material, once it becomes feasible\n\t\t\t\t// (#8465, #8379)\n\t\t\t\tclipping.setState( material, camera, useCache );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.version === materialProperties.__version ) {\n\n\t\t\tif ( material.fog && materialProperties.fog !== fog ) {\n\n\t\t\t\tinitMaterial( material, scene, object );\n\n\t\t\t} else if ( materialProperties.environment !== environment ) {\n\n\t\t\t\tinitMaterial( material, scene, object );\n\n\t\t\t} else if ( materialProperties.needsLights && ( materialProperties.lightsStateVersion !== lights.state.version ) ) {\n\n\t\t\t\tinitMaterial( material, scene, object );\n\n\t\t\t} else if ( materialProperties.numClippingPlanes !== undefined &&\n\t\t\t\t( materialProperties.numClippingPlanes !== clipping.numPlanes ||\n\t\t\t\tmaterialProperties.numIntersection !== clipping.numIntersection ) ) {\n\n\t\t\t\tinitMaterial( material, scene, object );\n\n\t\t\t} else if ( materialProperties.outputEncoding !== encoding ) {\n\n\t\t\t\tinitMaterial( material, scene, object );\n\n\t\t\t} else if ( materialProperties.envMap !== envMap ) {\n\n\t\t\t\tinitMaterial( material, scene, object );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tinitMaterial( material, scene, object );\n\t\t\tmaterialProperties.__version = material.version;\n\n\t\t}\n\n\t\tlet refreshProgram = false;\n\t\tlet refreshMaterial = false;\n\t\tlet refreshLights = false;\n\n\t\tconst program = materialProperties.program,\n\t\t\tp_uniforms = program.getUniforms(),\n\t\t\tm_uniforms = materialProperties.uniforms;\n\n\t\tif ( state.useProgram( program.program ) ) {\n\n\t\t\trefreshProgram = true;\n\t\t\trefreshMaterial = true;\n\t\t\trefreshLights = true;\n\n\t\t}\n\n\t\tif ( material.id !== _currentMaterialId ) {\n\n\t\t\t_currentMaterialId = material.id;\n\n\t\t\trefreshMaterial = true;\n\n\t\t}\n\n\t\tif ( refreshProgram || _currentCamera !== camera ) {\n\n\t\t\tp_uniforms.setValue( _gl, 'projectionMatrix', camera.projectionMatrix );\n\n\t\t\tif ( capabilities.logarithmicDepthBuffer ) {\n\n\t\t\t\tp_uniforms.setValue( _gl, 'logDepthBufFC',\n\t\t\t\t\t2.0 / ( Math.log( camera.far + 1.0 ) / Math.LN2 ) );\n\n\t\t\t}\n\n\t\t\tif ( _currentCamera !== camera ) {\n\n\t\t\t\t_currentCamera = camera;\n\n\t\t\t\t// lighting uniforms depend on the camera so enforce an update\n\t\t\t\t// now, in case this material supports lights - or later, when\n\t\t\t\t// the next material that does gets activated:\n\n\t\t\t\trefreshMaterial = true;\t\t// set to true on material change\n\t\t\t\trefreshLights = true;\t\t// remains set until update done\n\n\t\t\t}\n\n\t\t\t// load material specific uniforms\n\t\t\t// (shader material also gets them for the sake of genericity)\n\n\t\t\tif ( material.isShaderMaterial ||\n\t\t\t\tmaterial.isMeshPhongMaterial ||\n\t\t\t\tmaterial.isMeshToonMaterial ||\n\t\t\t\tmaterial.isMeshStandardMaterial ||\n\t\t\t\tmaterial.envMap ) {\n\n\t\t\t\tconst uCamPos = p_uniforms.map.cameraPosition;\n\n\t\t\t\tif ( uCamPos !== undefined ) {\n\n\t\t\t\t\tuCamPos.setValue( _gl,\n\t\t\t\t\t\t_vector3.setFromMatrixPosition( camera.matrixWorld ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( material.isMeshPhongMaterial ||\n\t\t\t\tmaterial.isMeshToonMaterial ||\n\t\t\t\tmaterial.isMeshLambertMaterial ||\n\t\t\t\tmaterial.isMeshBasicMaterial ||\n\t\t\t\tmaterial.isMeshStandardMaterial ||\n\t\t\t\tmaterial.isShaderMaterial ) {\n\n\t\t\t\tp_uniforms.setValue( _gl, 'isOrthographic', camera.isOrthographicCamera === true );\n\n\t\t\t}\n\n\t\t\tif ( material.isMeshPhongMaterial ||\n\t\t\t\tmaterial.isMeshToonMaterial ||\n\t\t\t\tmaterial.isMeshLambertMaterial ||\n\t\t\t\tmaterial.isMeshBasicMaterial ||\n\t\t\t\tmaterial.isMeshStandardMaterial ||\n\t\t\t\tmaterial.isShaderMaterial ||\n\t\t\t\tmaterial.isShadowMaterial ||\n\t\t\t\tmaterial.skinning ) {\n\n\t\t\t\tp_uniforms.setValue( _gl, 'viewMatrix', camera.matrixWorldInverse );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// skinning uniforms must be set even if material didn't change\n\t\t// auto-setting of texture unit for bone texture must go before other textures\n\t\t// otherwise textures used for skinning can take over texture units reserved for other material textures\n\n\t\tif ( material.skinning ) {\n\n\t\t\tp_uniforms.setOptional( _gl, object, 'bindMatrix' );\n\t\t\tp_uniforms.setOptional( _gl, object, 'bindMatrixInverse' );\n\n\t\t\tconst skeleton = object.skeleton;\n\n\t\t\tif ( skeleton ) {\n\n\t\t\t\tconst bones = skeleton.bones;\n\n\t\t\t\tif ( capabilities.floatVertexTextures ) {\n\n\t\t\t\t\tif ( skeleton.boneTexture === undefined ) {\n\n\t\t\t\t\t\t// layout (1 matrix = 4 pixels)\n\t\t\t\t\t\t//      RGBA RGBA RGBA RGBA (=> column1, column2, column3, column4)\n\t\t\t\t\t\t//  with  8x8  pixel texture max   16 bones * 4 pixels =  (8 * 8)\n\t\t\t\t\t\t//       16x16 pixel texture max   64 bones * 4 pixels = (16 * 16)\n\t\t\t\t\t\t//       32x32 pixel texture max  256 bones * 4 pixels = (32 * 32)\n\t\t\t\t\t\t//       64x64 pixel texture max 1024 bones * 4 pixels = (64 * 64)\n\n\n\t\t\t\t\t\tlet size = Math.sqrt( bones.length * 4 ); // 4 pixels needed for 1 matrix\n\t\t\t\t\t\tsize = MathUtils.ceilPowerOfTwo( size );\n\t\t\t\t\t\tsize = Math.max( size, 4 );\n\n\t\t\t\t\t\tconst boneMatrices = new Float32Array( size * size * 4 ); // 4 floats per RGBA pixel\n\t\t\t\t\t\tboneMatrices.set( skeleton.boneMatrices ); // copy current values\n\n\t\t\t\t\t\tconst boneTexture = new DataTexture( boneMatrices, size, size, RGBAFormat, FloatType );\n\n\t\t\t\t\t\tskeleton.boneMatrices = boneMatrices;\n\t\t\t\t\t\tskeleton.boneTexture = boneTexture;\n\t\t\t\t\t\tskeleton.boneTextureSize = size;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tp_uniforms.setValue( _gl, 'boneTexture', skeleton.boneTexture, textures );\n\t\t\t\t\tp_uniforms.setValue( _gl, 'boneTextureSize', skeleton.boneTextureSize );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tp_uniforms.setOptional( _gl, skeleton, 'boneMatrices' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( refreshMaterial || materialProperties.receiveShadow !== object.receiveShadow ) {\n\n\t\t\tmaterialProperties.receiveShadow = object.receiveShadow;\n\t\t\tp_uniforms.setValue( _gl, 'receiveShadow', object.receiveShadow );\n\n\t\t}\n\n\t\tif ( refreshMaterial ) {\n\n\t\t\tp_uniforms.setValue( _gl, 'toneMappingExposure', _this.toneMappingExposure );\n\n\t\t\tif ( materialProperties.needsLights ) {\n\n\t\t\t\t// the current material requires lighting info\n\n\t\t\t\t// note: all lighting uniforms are always set correctly\n\t\t\t\t// they simply reference the renderer's state for their\n\t\t\t\t// values\n\t\t\t\t//\n\t\t\t\t// use the current material's .needsUpdate flags to set\n\t\t\t\t// the GL state when required\n\n\t\t\t\tmarkUniformsLightsNeedsUpdate( m_uniforms, refreshLights );\n\n\t\t\t}\n\n\t\t\t// refresh uniforms common to several materials\n\n\t\t\tif ( fog && material.fog ) {\n\n\t\t\t\tmaterials.refreshFogUniforms( m_uniforms, fog );\n\n\t\t\t}\n\n\t\t\tmaterials.refreshMaterialUniforms( m_uniforms, material, _pixelRatio, _height );\n\n\t\t\tWebGLUniforms.upload( _gl, materialProperties.uniformsList, m_uniforms, textures );\n\n\t\t}\n\n\t\tif ( material.isShaderMaterial && material.uniformsNeedUpdate === true ) {\n\n\t\t\tWebGLUniforms.upload( _gl, materialProperties.uniformsList, m_uniforms, textures );\n\t\t\tmaterial.uniformsNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( material.isSpriteMaterial ) {\n\n\t\t\tp_uniforms.setValue( _gl, 'center', object.center );\n\n\t\t}\n\n\t\t// common matrices\n\n\t\tp_uniforms.setValue( _gl, 'modelViewMatrix', object.modelViewMatrix );\n\t\tp_uniforms.setValue( _gl, 'normalMatrix', object.normalMatrix );\n\t\tp_uniforms.setValue( _gl, 'modelMatrix', object.matrixWorld );\n\n\t\treturn program;\n\n\t}\n\n\t// If uniforms are marked as clean, they don't need to be loaded to the GPU.\n\n\tfunction markUniformsLightsNeedsUpdate( uniforms, value ) {\n\n\t\tuniforms.ambientLightColor.needsUpdate = value;\n\t\tuniforms.lightProbe.needsUpdate = value;\n\n\t\tuniforms.directionalLights.needsUpdate = value;\n\t\tuniforms.directionalLightShadows.needsUpdate = value;\n\t\tuniforms.pointLights.needsUpdate = value;\n\t\tuniforms.pointLightShadows.needsUpdate = value;\n\t\tuniforms.spotLights.needsUpdate = value;\n\t\tuniforms.spotLightShadows.needsUpdate = value;\n\t\tuniforms.rectAreaLights.needsUpdate = value;\n\t\tuniforms.hemisphereLights.needsUpdate = value;\n\n\t}\n\n\tfunction materialNeedsLights( material ) {\n\n\t\treturn material.isMeshLambertMaterial || material.isMeshToonMaterial || material.isMeshPhongMaterial ||\n\t\t\tmaterial.isMeshStandardMaterial || material.isShadowMaterial ||\n\t\t\t( material.isShaderMaterial && material.lights === true );\n\n\t}\n\n\t//\n\tthis.setFramebuffer = function ( value ) {\n\n\t\tif ( _framebuffer !== value && _currentRenderTarget === null ) _gl.bindFramebuffer( 36160, value );\n\n\t\t_framebuffer = value;\n\n\t};\n\n\tthis.getActiveCubeFace = function () {\n\n\t\treturn _currentActiveCubeFace;\n\n\t};\n\n\tthis.getActiveMipmapLevel = function () {\n\n\t\treturn _currentActiveMipmapLevel;\n\n\t};\n\n\tthis.getRenderList = function () {\n\n\t\treturn currentRenderList;\n\n\t};\n\n\tthis.setRenderList = function ( renderList ) {\n\n\t\tcurrentRenderList = renderList;\n\n\t};\n\n\tthis.getRenderState = function () {\n\n\t\treturn currentRenderState;\n\n\t};\n\n\tthis.setRenderState = function ( renderState ) {\n\n\t\tcurrentRenderState = renderState;\n\n\t};\n\n\tthis.getRenderTarget = function () {\n\n\t\treturn _currentRenderTarget;\n\n\t};\n\n\tthis.setRenderTarget = function ( renderTarget, activeCubeFace = 0, activeMipmapLevel = 0 ) {\n\n\t\t_currentRenderTarget = renderTarget;\n\t\t_currentActiveCubeFace = activeCubeFace;\n\t\t_currentActiveMipmapLevel = activeMipmapLevel;\n\n\t\tif ( renderTarget && properties.get( renderTarget ).__webglFramebuffer === undefined ) {\n\n\t\t\ttextures.setupRenderTarget( renderTarget );\n\n\t\t}\n\n\t\tlet framebuffer = _framebuffer;\n\t\tlet isCube = false;\n\n\t\tif ( renderTarget ) {\n\n\t\t\tconst __webglFramebuffer = properties.get( renderTarget ).__webglFramebuffer;\n\n\t\t\tif ( renderTarget.isWebGLCubeRenderTarget ) {\n\n\t\t\t\tframebuffer = __webglFramebuffer[ activeCubeFace ];\n\t\t\t\tisCube = true;\n\n\t\t\t} else if ( renderTarget.isWebGLMultisampleRenderTarget ) {\n\n\t\t\t\tframebuffer = properties.get( renderTarget ).__webglMultisampledFramebuffer;\n\n\t\t\t} else {\n\n\t\t\t\tframebuffer = __webglFramebuffer;\n\n\t\t\t}\n\n\t\t\t_currentViewport.copy( renderTarget.viewport );\n\t\t\t_currentScissor.copy( renderTarget.scissor );\n\t\t\t_currentScissorTest = renderTarget.scissorTest;\n\n\t\t} else {\n\n\t\t\t_currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ).floor();\n\t\t\t_currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ).floor();\n\t\t\t_currentScissorTest = _scissorTest;\n\n\t\t}\n\n\t\tif ( _currentFramebuffer !== framebuffer ) {\n\n\t\t\t_gl.bindFramebuffer( 36160, framebuffer );\n\t\t\t_currentFramebuffer = framebuffer;\n\n\t\t}\n\n\t\tstate.viewport( _currentViewport );\n\t\tstate.scissor( _currentScissor );\n\t\tstate.setScissorTest( _currentScissorTest );\n\n\t\tif ( isCube ) {\n\n\t\t\tconst textureProperties = properties.get( renderTarget.texture );\n\t\t\t_gl.framebufferTexture2D( 36160, 36064, 34069 + activeCubeFace, textureProperties.__webglTexture, activeMipmapLevel );\n\n\t\t}\n\n\t};\n\n\tthis.readRenderTargetPixels = function ( renderTarget, x, y, width, height, buffer, activeCubeFaceIndex ) {\n\n\t\tif ( ! ( renderTarget && renderTarget.isWebGLRenderTarget ) ) {\n\n\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tlet framebuffer = properties.get( renderTarget ).__webglFramebuffer;\n\n\t\tif ( renderTarget.isWebGLCubeRenderTarget && activeCubeFaceIndex !== undefined ) {\n\n\t\t\tframebuffer = framebuffer[ activeCubeFaceIndex ];\n\n\t\t}\n\n\t\tif ( framebuffer ) {\n\n\t\t\tlet restore = false;\n\n\t\t\tif ( framebuffer !== _currentFramebuffer ) {\n\n\t\t\t\t_gl.bindFramebuffer( 36160, framebuffer );\n\n\t\t\t\trestore = true;\n\n\t\t\t}\n\n\t\t\ttry {\n\n\t\t\t\tconst texture = renderTarget.texture;\n\t\t\t\tconst textureFormat = texture.format;\n\t\t\t\tconst textureType = texture.type;\n\n\t\t\t\tif ( textureFormat !== RGBAFormat && utils.convert( textureFormat ) !== _gl.getParameter( 35739 ) ) {\n\n\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.' );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tif ( textureType !== UnsignedByteType && utils.convert( textureType ) !== _gl.getParameter( 35738 ) && // IE11, Edge and Chrome Mac < 52 (#9513)\n\t\t\t\t\t! ( textureType === FloatType && ( capabilities.isWebGL2 || extensions.get( 'OES_texture_float' ) || extensions.get( 'WEBGL_color_buffer_float' ) ) ) && // Chrome Mac >= 52 and Firefox\n\t\t\t\t\t! ( textureType === HalfFloatType && ( capabilities.isWebGL2 ? extensions.get( 'EXT_color_buffer_float' ) : extensions.get( 'EXT_color_buffer_half_float' ) ) ) ) {\n\n\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.' );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tif ( _gl.checkFramebufferStatus( 36160 ) === 36053 ) {\n\n\t\t\t\t\t// the following if statement ensures valid read requests (no out-of-bounds pixels, see #8604)\n\n\t\t\t\t\tif ( ( x >= 0 && x <= ( renderTarget.width - width ) ) && ( y >= 0 && y <= ( renderTarget.height - height ) ) ) {\n\n\t\t\t\t\t\t_gl.readPixels( x, y, width, height, utils.convert( textureFormat ), utils.convert( textureType ), buffer );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: readPixels from renderTarget failed. Framebuffer not complete.' );\n\n\t\t\t\t}\n\n\t\t\t} finally {\n\n\t\t\t\tif ( restore ) {\n\n\t\t\t\t\t_gl.bindFramebuffer( 36160, _currentFramebuffer );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t};\n\n\tthis.copyFramebufferToTexture = function ( position, texture, level ) {\n\n\t\tif ( level === undefined ) level = 0;\n\n\t\tconst levelScale = Math.pow( 2, - level );\n\t\tconst width = Math.floor( texture.image.width * levelScale );\n\t\tconst height = Math.floor( texture.image.height * levelScale );\n\t\tconst glFormat = utils.convert( texture.format );\n\n\t\ttextures.setTexture2D( texture, 0 );\n\n\t\t_gl.copyTexImage2D( 3553, level, glFormat, position.x, position.y, width, height, 0 );\n\n\t\tstate.unbindTexture();\n\n\t};\n\n\tthis.copyTextureToTexture = function ( position, srcTexture, dstTexture, level ) {\n\n\t\tif ( level === undefined ) level = 0;\n\n\t\tconst width = srcTexture.image.width;\n\t\tconst height = srcTexture.image.height;\n\t\tconst glFormat = utils.convert( dstTexture.format );\n\t\tconst glType = utils.convert( dstTexture.type );\n\n\t\ttextures.setTexture2D( dstTexture, 0 );\n\n\t\t// As another texture upload may have changed pixelStorei\n\t\t// parameters, make sure they are correct for the dstTexture\n\t\t_gl.pixelStorei( 37440, dstTexture.flipY );\n\t\t_gl.pixelStorei( 37441, dstTexture.premultiplyAlpha );\n\t\t_gl.pixelStorei( 3317, dstTexture.unpackAlignment );\n\n\t\tif ( srcTexture.isDataTexture ) {\n\n\t\t\t_gl.texSubImage2D( 3553, level, position.x, position.y, width, height, glFormat, glType, srcTexture.image.data );\n\n\t\t} else {\n\n\t\t\tif ( srcTexture.isCompressedTexture ) {\n\n\t\t\t\t_gl.compressedTexSubImage2D( 3553, level, position.x, position.y, srcTexture.mipmaps[ 0 ].width, srcTexture.mipmaps[ 0 ].height, glFormat, srcTexture.mipmaps[ 0 ].data );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.texSubImage2D( 3553, level, position.x, position.y, glFormat, glType, srcTexture.image );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Generate mipmaps only when copying level 0\n\t\tif ( level === 0 && dstTexture.generateMipmaps ) _gl.generateMipmap( 3553 );\n\n\t\tstate.unbindTexture();\n\n\t};\n\n\tthis.initTexture = function ( texture ) {\n\n\t\ttextures.setTexture2D( texture, 0 );\n\n\t\tstate.unbindTexture();\n\n\t};\n\n\tif ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) {\n\n\t\t__THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'observe', { detail: this } ) ); // eslint-disable-line no-undef\n\n\t}\n\n}\n\nfunction WebGL1Renderer( parameters ) {\n\n\tWebGLRenderer.call( this, parameters );\n\n}\n\nWebGL1Renderer.prototype = Object.assign( Object.create( WebGLRenderer.prototype ), {\n\n\tconstructor: WebGL1Renderer,\n\n\tisWebGL1Renderer: true\n\n} );\n\nclass FogExp2 {\n\n\tconstructor( color, density ) {\n\n\t\tObject.defineProperty( this, 'isFogExp2', { value: true } );\n\n\t\tthis.name = '';\n\n\t\tthis.color = new Color( color );\n\t\tthis.density = ( density !== undefined ) ? density : 0.00025;\n\n\t}\n\n\tclone() {\n\n\t\treturn new FogExp2( this.color, this.density );\n\n\t}\n\n\ttoJSON( /* meta */ ) {\n\n\t\treturn {\n\t\t\ttype: 'FogExp2',\n\t\t\tcolor: this.color.getHex(),\n\t\t\tdensity: this.density\n\t\t};\n\n\t}\n\n}\n\nclass Fog {\n\n\tconstructor( color, near, far ) {\n\n\t\tObject.defineProperty( this, 'isFog', { value: true } );\n\n\t\tthis.name = '';\n\n\t\tthis.color = new Color( color );\n\n\t\tthis.near = ( near !== undefined ) ? near : 1;\n\t\tthis.far = ( far !== undefined ) ? far : 1000;\n\n\t}\n\n\tclone() {\n\n\t\treturn new Fog( this.color, this.near, this.far );\n\n\t}\n\n\ttoJSON( /* meta */ ) {\n\n\t\treturn {\n\t\t\ttype: 'Fog',\n\t\t\tcolor: this.color.getHex(),\n\t\t\tnear: this.near,\n\t\t\tfar: this.far\n\t\t};\n\n\t}\n\n}\n\nclass Scene extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tObject.defineProperty( this, 'isScene', { value: true } );\n\n\t\tthis.type = 'Scene';\n\n\t\tthis.background = null;\n\t\tthis.environment = null;\n\t\tthis.fog = null;\n\n\t\tthis.overrideMaterial = null;\n\n\t\tthis.autoUpdate = true; // checked by the renderer\n\n\t\tif ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) {\n\n\t\t\t__THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'observe', { detail: this } ) ); // eslint-disable-line no-undef\n\n\t\t}\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tif ( source.background !== null ) this.background = source.background.clone();\n\t\tif ( source.environment !== null ) this.environment = source.environment.clone();\n\t\tif ( source.fog !== null ) this.fog = source.fog.clone();\n\n\t\tif ( source.overrideMaterial !== null ) this.overrideMaterial = source.overrideMaterial.clone();\n\n\t\tthis.autoUpdate = source.autoUpdate;\n\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tif ( this.background !== null ) data.object.background = this.background.toJSON( meta );\n\t\tif ( this.environment !== null ) data.object.environment = this.environment.toJSON( meta );\n\t\tif ( this.fog !== null ) data.object.fog = this.fog.toJSON();\n\n\t\treturn data;\n\n\t}\n\n}\n\nfunction InterleavedBuffer( array, stride ) {\n\n\tthis.array = array;\n\tthis.stride = stride;\n\tthis.count = array !== undefined ? array.length / stride : 0;\n\n\tthis.usage = StaticDrawUsage;\n\tthis.updateRange = { offset: 0, count: - 1 };\n\n\tthis.version = 0;\n\n\tthis.uuid = MathUtils.generateUUID();\n\n}\n\nObject.defineProperty( InterleavedBuffer.prototype, 'needsUpdate', {\n\n\tset: function ( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n} );\n\nObject.assign( InterleavedBuffer.prototype, {\n\n\tisInterleavedBuffer: true,\n\n\tonUploadCallback: function () {},\n\n\tsetUsage: function ( value ) {\n\n\t\tthis.usage = value;\n\n\t\treturn this;\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.array = new source.array.constructor( source.array );\n\t\tthis.count = source.count;\n\t\tthis.stride = source.stride;\n\t\tthis.usage = source.usage;\n\n\t\treturn this;\n\n\t},\n\n\tcopyAt: function ( index1, attribute, index2 ) {\n\n\t\tindex1 *= this.stride;\n\t\tindex2 *= attribute.stride;\n\n\t\tfor ( let i = 0, l = this.stride; i < l; i ++ ) {\n\n\t\t\tthis.array[ index1 + i ] = attribute.array[ index2 + i ];\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tset: function ( value, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.array.set( value, offset );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function ( data ) {\n\n\t\tif ( data.arrayBuffers === undefined ) {\n\n\t\t\tdata.arrayBuffers = {};\n\n\t\t}\n\n\t\tif ( this.array.buffer._uuid === undefined ) {\n\n\t\t\tthis.array.buffer._uuid = MathUtils.generateUUID();\n\n\t\t}\n\n\t\tif ( data.arrayBuffers[ this.array.buffer._uuid ] === undefined ) {\n\n\t\t\tdata.arrayBuffers[ this.array.buffer._uuid ] = this.array.slice( 0 ).buffer;\n\n\t\t}\n\n\t\tconst array = new this.array.constructor( data.arrayBuffers[ this.array.buffer._uuid ] );\n\n\t\tconst ib = new InterleavedBuffer( array, this.stride );\n\t\tib.setUsage( this.usage );\n\n\t\treturn ib;\n\n\t},\n\n\tonUpload: function ( callback ) {\n\n\t\tthis.onUploadCallback = callback;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( data ) {\n\n\t\tif ( data.arrayBuffers === undefined ) {\n\n\t\t\tdata.arrayBuffers = {};\n\n\t\t}\n\n\t\t// generate UUID for array buffer if necessary\n\n\t\tif ( this.array.buffer._uuid === undefined ) {\n\n\t\t\tthis.array.buffer._uuid = MathUtils.generateUUID();\n\n\t\t}\n\n\t\tif ( data.arrayBuffers[ this.array.buffer._uuid ] === undefined ) {\n\n\t\t\tdata.arrayBuffers[ this.array.buffer._uuid ] = Array.prototype.slice.call( new Uint32Array( this.array.buffer ) );\n\n\t\t}\n\n\t\t//\n\n\t\treturn {\n\t\t\tuuid: this.uuid,\n\t\t\tbuffer: this.array.buffer._uuid,\n\t\t\ttype: this.array.constructor.name,\n\t\t\tstride: this.stride\n\t\t};\n\n\t}\n\n} );\n\nconst _vector$6 = new Vector3();\n\nfunction InterleavedBufferAttribute( interleavedBuffer, itemSize, offset, normalized ) {\n\n\tthis.name = '';\n\n\tthis.data = interleavedBuffer;\n\tthis.itemSize = itemSize;\n\tthis.offset = offset;\n\n\tthis.normalized = normalized === true;\n\n}\n\nObject.defineProperties( InterleavedBufferAttribute.prototype, {\n\n\tcount: {\n\n\t\tget: function () {\n\n\t\t\treturn this.data.count;\n\n\t\t}\n\n\t},\n\n\tarray: {\n\n\t\tget: function () {\n\n\t\t\treturn this.data.array;\n\n\t\t}\n\n\t},\n\n\tneedsUpdate: {\n\n\t\tset: function ( value ) {\n\n\t\t\tthis.data.needsUpdate = value;\n\n\t\t}\n\n\t}\n\n} );\n\nObject.assign( InterleavedBufferAttribute.prototype, {\n\n\tisInterleavedBufferAttribute: true,\n\n\tapplyMatrix4: function ( m ) {\n\n\t\tfor ( let i = 0, l = this.data.count; i < l; i ++ ) {\n\n\t\t\t_vector$6.x = this.getX( i );\n\t\t\t_vector$6.y = this.getY( i );\n\t\t\t_vector$6.z = this.getZ( i );\n\n\t\t\t_vector$6.applyMatrix4( m );\n\n\t\t\tthis.setXYZ( i, _vector$6.x, _vector$6.y, _vector$6.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetX: function ( index, x ) {\n\n\t\tthis.data.array[ index * this.data.stride + this.offset ] = x;\n\n\t\treturn this;\n\n\t},\n\n\tsetY: function ( index, y ) {\n\n\t\tthis.data.array[ index * this.data.stride + this.offset + 1 ] = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetZ: function ( index, z ) {\n\n\t\tthis.data.array[ index * this.data.stride + this.offset + 2 ] = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetW: function ( index, w ) {\n\n\t\tthis.data.array[ index * this.data.stride + this.offset + 3 ] = w;\n\n\t\treturn this;\n\n\t},\n\n\tgetX: function ( index ) {\n\n\t\treturn this.data.array[ index * this.data.stride + this.offset ];\n\n\t},\n\n\tgetY: function ( index ) {\n\n\t\treturn this.data.array[ index * this.data.stride + this.offset + 1 ];\n\n\t},\n\n\tgetZ: function ( index ) {\n\n\t\treturn this.data.array[ index * this.data.stride + this.offset + 2 ];\n\n\t},\n\n\tgetW: function ( index ) {\n\n\t\treturn this.data.array[ index * this.data.stride + this.offset + 3 ];\n\n\t},\n\n\tsetXY: function ( index, x, y ) {\n\n\t\tindex = index * this.data.stride + this.offset;\n\n\t\tthis.data.array[ index + 0 ] = x;\n\t\tthis.data.array[ index + 1 ] = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetXYZ: function ( index, x, y, z ) {\n\n\t\tindex = index * this.data.stride + this.offset;\n\n\t\tthis.data.array[ index + 0 ] = x;\n\t\tthis.data.array[ index + 1 ] = y;\n\t\tthis.data.array[ index + 2 ] = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetXYZW: function ( index, x, y, z, w ) {\n\n\t\tindex = index * this.data.stride + this.offset;\n\n\t\tthis.data.array[ index + 0 ] = x;\n\t\tthis.data.array[ index + 1 ] = y;\n\t\tthis.data.array[ index + 2 ] = z;\n\t\tthis.data.array[ index + 3 ] = w;\n\n\t\treturn this;\n\n\t},\n\n\tclone: function ( data ) {\n\n\t\tif ( data === undefined ) {\n\n\t\t\tconsole.log( 'THREE.InterleavedBufferAttribute.clone(): Cloning an interlaved buffer attribute will deinterleave buffer data.' );\n\n\t\t\tconst array = [];\n\n\t\t\tfor ( let i = 0; i < this.count; i ++ ) {\n\n\t\t\t\tconst index = i * this.data.stride + this.offset;\n\n\t\t\t\tfor ( let j = 0; j < this.itemSize; j ++ ) {\n\n\t\t\t\t\tarray.push( this.data.array[ index + j ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn new BufferAttribute( new this.array.constructor( array ), this.itemSize, this.normalized );\n\n\t\t} else {\n\n\t\t\tif ( data.interleavedBuffers === undefined ) {\n\n\t\t\t\tdata.interleavedBuffers = {};\n\n\t\t\t}\n\n\t\t\tif ( data.interleavedBuffers[ this.data.uuid ] === undefined ) {\n\n\t\t\t\tdata.interleavedBuffers[ this.data.uuid ] = this.data.clone( data );\n\n\t\t\t}\n\n\t\t\treturn new InterleavedBufferAttribute( data.interleavedBuffers[ this.data.uuid ], this.itemSize, this.offset, this.normalized );\n\n\t\t}\n\n\t},\n\n\ttoJSON: function ( data ) {\n\n\t\tif ( data === undefined ) {\n\n\t\t\tconsole.log( 'THREE.InterleavedBufferAttribute.toJSON(): Serializing an interlaved buffer attribute will deinterleave buffer data.' );\n\n\t\t\tconst array = [];\n\n\t\t\tfor ( let i = 0; i < this.count; i ++ ) {\n\n\t\t\t\tconst index = i * this.data.stride + this.offset;\n\n\t\t\t\tfor ( let j = 0; j < this.itemSize; j ++ ) {\n\n\t\t\t\t\tarray.push( this.data.array[ index + j ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// deinterleave data and save it as an ordinary buffer attribute for now\n\n\t\t\treturn {\n\t\t\t\titemSize: this.itemSize,\n\t\t\t\ttype: this.array.constructor.name,\n\t\t\t\tarray: array,\n\t\t\t\tnormalized: this.normalized\n\t\t\t};\n\n\t\t} else {\n\n\t\t\t// save as true interlaved attribtue\n\n\t\t\tif ( data.interleavedBuffers === undefined ) {\n\n\t\t\t\tdata.interleavedBuffers = {};\n\n\t\t\t}\n\n\t\t\tif ( data.interleavedBuffers[ this.data.uuid ] === undefined ) {\n\n\t\t\t\tdata.interleavedBuffers[ this.data.uuid ] = this.data.toJSON( data );\n\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tisInterleavedBufferAttribute: true,\n\t\t\t\titemSize: this.itemSize,\n\t\t\t\tdata: this.data.uuid,\n\t\t\t\toffset: this.offset,\n\t\t\t\tnormalized: this.normalized\n\t\t\t};\n\n\t\t}\n\n\t}\n\n} );\n\n/**\n * parameters = {\n *  color: <hex>,\n *  map: new THREE.Texture( <Image> ),\n *  alphaMap: new THREE.Texture( <Image> ),\n *  rotation: <float>,\n *  sizeAttenuation: <bool>\n * }\n */\n\nfunction SpriteMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'SpriteMaterial';\n\n\tthis.color = new Color( 0xffffff );\n\n\tthis.map = null;\n\n\tthis.alphaMap = null;\n\n\tthis.rotation = 0;\n\n\tthis.sizeAttenuation = true;\n\n\tthis.transparent = true;\n\n\tthis.setValues( parameters );\n\n}\n\nSpriteMaterial.prototype = Object.create( Material.prototype );\nSpriteMaterial.prototype.constructor = SpriteMaterial;\nSpriteMaterial.prototype.isSpriteMaterial = true;\n\nSpriteMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\tthis.map = source.map;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.rotation = source.rotation;\n\n\tthis.sizeAttenuation = source.sizeAttenuation;\n\n\treturn this;\n\n};\n\nlet _geometry;\n\nconst _intersectPoint = new Vector3();\nconst _worldScale = new Vector3();\nconst _mvPosition = new Vector3();\n\nconst _alignedPosition = new Vector2();\nconst _rotatedPosition = new Vector2();\nconst _viewWorldMatrix = new Matrix4();\n\nconst _vA$1 = new Vector3();\nconst _vB$1 = new Vector3();\nconst _vC$1 = new Vector3();\n\nconst _uvA$1 = new Vector2();\nconst _uvB$1 = new Vector2();\nconst _uvC$1 = new Vector2();\n\nfunction Sprite( material ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Sprite';\n\n\tif ( _geometry === undefined ) {\n\n\t\t_geometry = new BufferGeometry();\n\n\t\tconst float32Array = new Float32Array( [\n\t\t\t- 0.5, - 0.5, 0, 0, 0,\n\t\t\t0.5, - 0.5, 0, 1, 0,\n\t\t\t0.5, 0.5, 0, 1, 1,\n\t\t\t- 0.5, 0.5, 0, 0, 1\n\t\t] );\n\n\t\tconst interleavedBuffer = new InterleavedBuffer( float32Array, 5 );\n\n\t\t_geometry.setIndex( [ 0, 1, 2,\t0, 2, 3 ] );\n\t\t_geometry.setAttribute( 'position', new InterleavedBufferAttribute( interleavedBuffer, 3, 0, false ) );\n\t\t_geometry.setAttribute( 'uv', new InterleavedBufferAttribute( interleavedBuffer, 2, 3, false ) );\n\n\t}\n\n\tthis.geometry = _geometry;\n\tthis.material = ( material !== undefined ) ? material : new SpriteMaterial();\n\n\tthis.center = new Vector2( 0.5, 0.5 );\n\n}\n\nSprite.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Sprite,\n\n\tisSprite: true,\n\n\traycast: function ( raycaster, intersects ) {\n\n\t\tif ( raycaster.camera === null ) {\n\n\t\t\tconsole.error( 'THREE.Sprite: \"Raycaster.camera\" needs to be set in order to raycast against sprites.' );\n\n\t\t}\n\n\t\t_worldScale.setFromMatrixScale( this.matrixWorld );\n\n\t\t_viewWorldMatrix.copy( raycaster.camera.matrixWorld );\n\t\tthis.modelViewMatrix.multiplyMatrices( raycaster.camera.matrixWorldInverse, this.matrixWorld );\n\n\t\t_mvPosition.setFromMatrixPosition( this.modelViewMatrix );\n\n\t\tif ( raycaster.camera.isPerspectiveCamera && this.material.sizeAttenuation === false ) {\n\n\t\t\t_worldScale.multiplyScalar( - _mvPosition.z );\n\n\t\t}\n\n\t\tconst rotation = this.material.rotation;\n\t\tlet sin, cos;\n\n\t\tif ( rotation !== 0 ) {\n\n\t\t\tcos = Math.cos( rotation );\n\t\t\tsin = Math.sin( rotation );\n\n\t\t}\n\n\t\tconst center = this.center;\n\n\t\ttransformVertex( _vA$1.set( - 0.5, - 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\t\ttransformVertex( _vB$1.set( 0.5, - 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\t\ttransformVertex( _vC$1.set( 0.5, 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\n\t\t_uvA$1.set( 0, 0 );\n\t\t_uvB$1.set( 1, 0 );\n\t\t_uvC$1.set( 1, 1 );\n\n\t\t// check first triangle\n\t\tlet intersect = raycaster.ray.intersectTriangle( _vA$1, _vB$1, _vC$1, false, _intersectPoint );\n\n\t\tif ( intersect === null ) {\n\n\t\t\t// check second triangle\n\t\t\ttransformVertex( _vB$1.set( - 0.5, 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\t\t\t_uvB$1.set( 0, 1 );\n\n\t\t\tintersect = raycaster.ray.intersectTriangle( _vA$1, _vC$1, _vB$1, false, _intersectPoint );\n\t\t\tif ( intersect === null ) {\n\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst distance = raycaster.ray.origin.distanceTo( _intersectPoint );\n\n\t\tif ( distance < raycaster.near || distance > raycaster.far ) return;\n\n\t\tintersects.push( {\n\n\t\t\tdistance: distance,\n\t\t\tpoint: _intersectPoint.clone(),\n\t\t\tuv: Triangle.getUV( _intersectPoint, _vA$1, _vB$1, _vC$1, _uvA$1, _uvB$1, _uvC$1, new Vector2() ),\n\t\t\tface: null,\n\t\t\tobject: this\n\n\t\t} );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tObject3D.prototype.copy.call( this, source );\n\n\t\tif ( source.center !== undefined ) this.center.copy( source.center );\n\n\t\tthis.material = source.material;\n\n\t\treturn this;\n\n\t}\n\n} );\n\nfunction transformVertex( vertexPosition, mvPosition, center, scale, sin, cos ) {\n\n\t// compute position in camera space\n\t_alignedPosition.subVectors( vertexPosition, center ).addScalar( 0.5 ).multiply( scale );\n\n\t// to check if rotation is not zero\n\tif ( sin !== undefined ) {\n\n\t\t_rotatedPosition.x = ( cos * _alignedPosition.x ) - ( sin * _alignedPosition.y );\n\t\t_rotatedPosition.y = ( sin * _alignedPosition.x ) + ( cos * _alignedPosition.y );\n\n\t} else {\n\n\t\t_rotatedPosition.copy( _alignedPosition );\n\n\t}\n\n\n\tvertexPosition.copy( mvPosition );\n\tvertexPosition.x += _rotatedPosition.x;\n\tvertexPosition.y += _rotatedPosition.y;\n\n\t// transform to world space\n\tvertexPosition.applyMatrix4( _viewWorldMatrix );\n\n}\n\nconst _v1$4 = new Vector3();\nconst _v2$2 = new Vector3();\n\nfunction LOD() {\n\n\tObject3D.call( this );\n\n\tthis._currentLevel = 0;\n\n\tthis.type = 'LOD';\n\n\tObject.defineProperties( this, {\n\t\tlevels: {\n\t\t\tenumerable: true,\n\t\t\tvalue: []\n\t\t}\n\t} );\n\n\tthis.autoUpdate = true;\n\n}\n\nLOD.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: LOD,\n\n\tisLOD: true,\n\n\tcopy: function ( source ) {\n\n\t\tObject3D.prototype.copy.call( this, source, false );\n\n\t\tconst levels = source.levels;\n\n\t\tfor ( let i = 0, l = levels.length; i < l; i ++ ) {\n\n\t\t\tconst level = levels[ i ];\n\n\t\t\tthis.addLevel( level.object.clone(), level.distance );\n\n\t\t}\n\n\t\tthis.autoUpdate = source.autoUpdate;\n\n\t\treturn this;\n\n\t},\n\n\taddLevel: function ( object, distance ) {\n\n\t\tif ( distance === undefined ) distance = 0;\n\n\t\tdistance = Math.abs( distance );\n\n\t\tconst levels = this.levels;\n\n\t\tlet l;\n\n\t\tfor ( l = 0; l < levels.length; l ++ ) {\n\n\t\t\tif ( distance < levels[ l ].distance ) {\n\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tlevels.splice( l, 0, { distance: distance, object: object } );\n\n\t\tthis.add( object );\n\n\t\treturn this;\n\n\t},\n\n\tgetCurrentLevel: function () {\n\n\t\treturn this._currentLevel;\n\n\t},\n\n\tgetObjectForDistance: function ( distance ) {\n\n\t\tconst levels = this.levels;\n\n\t\tif ( levels.length > 0 ) {\n\n\t\t\tlet i, l;\n\n\t\t\tfor ( i = 1, l = levels.length; i < l; i ++ ) {\n\n\t\t\t\tif ( distance < levels[ i ].distance ) {\n\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn levels[ i - 1 ].object;\n\n\t\t}\n\n\t\treturn null;\n\n\t},\n\n\traycast: function ( raycaster, intersects ) {\n\n\t\tconst levels = this.levels;\n\n\t\tif ( levels.length > 0 ) {\n\n\t\t\t_v1$4.setFromMatrixPosition( this.matrixWorld );\n\n\t\t\tconst distance = raycaster.ray.origin.distanceTo( _v1$4 );\n\n\t\t\tthis.getObjectForDistance( distance ).raycast( raycaster, intersects );\n\n\t\t}\n\n\t},\n\n\tupdate: function ( camera ) {\n\n\t\tconst levels = this.levels;\n\n\t\tif ( levels.length > 1 ) {\n\n\t\t\t_v1$4.setFromMatrixPosition( camera.matrixWorld );\n\t\t\t_v2$2.setFromMatrixPosition( this.matrixWorld );\n\n\t\t\tconst distance = _v1$4.distanceTo( _v2$2 ) / camera.zoom;\n\n\t\t\tlevels[ 0 ].object.visible = true;\n\n\t\t\tlet i, l;\n\n\t\t\tfor ( i = 1, l = levels.length; i < l; i ++ ) {\n\n\t\t\t\tif ( distance >= levels[ i ].distance ) {\n\n\t\t\t\t\tlevels[ i - 1 ].object.visible = false;\n\t\t\t\t\tlevels[ i ].object.visible = true;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis._currentLevel = i - 1;\n\n\t\t\tfor ( ; i < l; i ++ ) {\n\n\t\t\t\tlevels[ i ].object.visible = false;\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tconst data = Object3D.prototype.toJSON.call( this, meta );\n\n\t\tif ( this.autoUpdate === false ) data.object.autoUpdate = false;\n\n\t\tdata.object.levels = [];\n\n\t\tconst levels = this.levels;\n\n\t\tfor ( let i = 0, l = levels.length; i < l; i ++ ) {\n\n\t\t\tconst level = levels[ i ];\n\n\t\t\tdata.object.levels.push( {\n\t\t\t\tobject: level.object.uuid,\n\t\t\t\tdistance: level.distance\n\t\t\t} );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n} );\n\nfunction SkinnedMesh( geometry, material ) {\n\n\tif ( geometry && geometry.isGeometry ) {\n\n\t\tconsole.error( 'THREE.SkinnedMesh no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.' );\n\n\t}\n\n\tMesh.call( this, geometry, material );\n\n\tthis.type = 'SkinnedMesh';\n\n\tthis.bindMode = 'attached';\n\tthis.bindMatrix = new Matrix4();\n\tthis.bindMatrixInverse = new Matrix4();\n\n}\n\nSkinnedMesh.prototype = Object.assign( Object.create( Mesh.prototype ), {\n\n\tconstructor: SkinnedMesh,\n\n\tisSkinnedMesh: true,\n\n\tcopy: function ( source ) {\n\n\t\tMesh.prototype.copy.call( this, source );\n\n\t\tthis.bindMode = source.bindMode;\n\t\tthis.bindMatrix.copy( source.bindMatrix );\n\t\tthis.bindMatrixInverse.copy( source.bindMatrixInverse );\n\n\t\tthis.skeleton = source.skeleton;\n\n\t\treturn this;\n\n\t},\n\n\tbind: function ( skeleton, bindMatrix ) {\n\n\t\tthis.skeleton = skeleton;\n\n\t\tif ( bindMatrix === undefined ) {\n\n\t\t\tthis.updateMatrixWorld( true );\n\n\t\t\tthis.skeleton.calculateInverses();\n\n\t\t\tbindMatrix = this.matrixWorld;\n\n\t\t}\n\n\t\tthis.bindMatrix.copy( bindMatrix );\n\t\tthis.bindMatrixInverse.getInverse( bindMatrix );\n\n\t},\n\n\tpose: function () {\n\n\t\tthis.skeleton.pose();\n\n\t},\n\n\tnormalizeSkinWeights: function () {\n\n\t\tconst vector = new Vector4();\n\n\t\tconst skinWeight = this.geometry.attributes.skinWeight;\n\n\t\tfor ( let i = 0, l = skinWeight.count; i < l; i ++ ) {\n\n\t\t\tvector.x = skinWeight.getX( i );\n\t\t\tvector.y = skinWeight.getY( i );\n\t\t\tvector.z = skinWeight.getZ( i );\n\t\t\tvector.w = skinWeight.getW( i );\n\n\t\t\tconst scale = 1.0 / vector.manhattanLength();\n\n\t\t\tif ( scale !== Infinity ) {\n\n\t\t\t\tvector.multiplyScalar( scale );\n\n\t\t\t} else {\n\n\t\t\t\tvector.set( 1, 0, 0, 0 ); // do something reasonable\n\n\t\t\t}\n\n\t\t\tskinWeight.setXYZW( i, vector.x, vector.y, vector.z, vector.w );\n\n\t\t}\n\n\t},\n\n\tupdateMatrixWorld: function ( force ) {\n\n\t\tMesh.prototype.updateMatrixWorld.call( this, force );\n\n\t\tif ( this.bindMode === 'attached' ) {\n\n\t\t\tthis.bindMatrixInverse.getInverse( this.matrixWorld );\n\n\t\t} else if ( this.bindMode === 'detached' ) {\n\n\t\t\tthis.bindMatrixInverse.getInverse( this.bindMatrix );\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.SkinnedMesh: Unrecognized bindMode: ' + this.bindMode );\n\n\t\t}\n\n\t},\n\n\tboneTransform: ( function () {\n\n\t\tconst basePosition = new Vector3();\n\n\t\tconst skinIndex = new Vector4();\n\t\tconst skinWeight = new Vector4();\n\n\t\tconst vector = new Vector3();\n\t\tconst matrix = new Matrix4();\n\n\t\treturn function ( index, target ) {\n\n\t\t\tconst skeleton = this.skeleton;\n\t\t\tconst geometry = this.geometry;\n\n\t\t\tskinIndex.fromBufferAttribute( geometry.attributes.skinIndex, index );\n\t\t\tskinWeight.fromBufferAttribute( geometry.attributes.skinWeight, index );\n\n\t\t\tbasePosition.fromBufferAttribute( geometry.attributes.position, index ).applyMatrix4( this.bindMatrix );\n\n\t\t\ttarget.set( 0, 0, 0 );\n\n\t\t\tfor ( let i = 0; i < 4; i ++ ) {\n\n\t\t\t\tconst weight = skinWeight.getComponent( i );\n\n\t\t\t\tif ( weight !== 0 ) {\n\n\t\t\t\t\tconst boneIndex = skinIndex.getComponent( i );\n\n\t\t\t\t\tmatrix.multiplyMatrices( skeleton.bones[ boneIndex ].matrixWorld, skeleton.boneInverses[ boneIndex ] );\n\n\t\t\t\t\ttarget.addScaledVector( vector.copy( basePosition ).applyMatrix4( matrix ), weight );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn target.applyMatrix4( this.bindMatrixInverse );\n\n\t\t};\n\n\t}() )\n\n} );\n\nconst _offsetMatrix = new Matrix4();\nconst _identityMatrix = new Matrix4();\n\nfunction Skeleton( bones, boneInverses ) {\n\n\t// copy the bone array\n\n\tbones = bones || [];\n\n\tthis.bones = bones.slice( 0 );\n\tthis.boneMatrices = new Float32Array( this.bones.length * 16 );\n\n\tthis.frame = - 1;\n\n\t// use the supplied bone inverses or calculate the inverses\n\n\tif ( boneInverses === undefined ) {\n\n\t\tthis.calculateInverses();\n\n\t} else {\n\n\t\tif ( this.bones.length === boneInverses.length ) {\n\n\t\t\tthis.boneInverses = boneInverses.slice( 0 );\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.Skeleton boneInverses is the wrong length.' );\n\n\t\t\tthis.boneInverses = [];\n\n\t\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\t\tthis.boneInverses.push( new Matrix4() );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nObject.assign( Skeleton.prototype, {\n\n\tcalculateInverses: function () {\n\n\t\tthis.boneInverses = [];\n\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tconst inverse = new Matrix4();\n\n\t\t\tif ( this.bones[ i ] ) {\n\n\t\t\t\tinverse.getInverse( this.bones[ i ].matrixWorld );\n\n\t\t\t}\n\n\t\t\tthis.boneInverses.push( inverse );\n\n\t\t}\n\n\t},\n\n\tpose: function () {\n\n\t\t// recover the bind-time world matrices\n\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tconst bone = this.bones[ i ];\n\n\t\t\tif ( bone ) {\n\n\t\t\t\tbone.matrixWorld.getInverse( this.boneInverses[ i ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// compute the local matrices, positions, rotations and scales\n\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tconst bone = this.bones[ i ];\n\n\t\t\tif ( bone ) {\n\n\t\t\t\tif ( bone.parent && bone.parent.isBone ) {\n\n\t\t\t\t\tbone.matrix.getInverse( bone.parent.matrixWorld );\n\t\t\t\t\tbone.matrix.multiply( bone.matrixWorld );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tbone.matrix.copy( bone.matrixWorld );\n\n\t\t\t\t}\n\n\t\t\t\tbone.matrix.decompose( bone.position, bone.quaternion, bone.scale );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\tupdate: function () {\n\n\t\tconst bones = this.bones;\n\t\tconst boneInverses = this.boneInverses;\n\t\tconst boneMatrices = this.boneMatrices;\n\t\tconst boneTexture = this.boneTexture;\n\n\t\t// flatten bone matrices to array\n\n\t\tfor ( let i = 0, il = bones.length; i < il; i ++ ) {\n\n\t\t\t// compute the offset between the current and the original transform\n\n\t\t\tconst matrix = bones[ i ] ? bones[ i ].matrixWorld : _identityMatrix;\n\n\t\t\t_offsetMatrix.multiplyMatrices( matrix, boneInverses[ i ] );\n\t\t\t_offsetMatrix.toArray( boneMatrices, i * 16 );\n\n\t\t}\n\n\t\tif ( boneTexture !== undefined ) {\n\n\t\t\tboneTexture.needsUpdate = true;\n\n\t\t}\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new Skeleton( this.bones, this.boneInverses );\n\n\t},\n\n\tgetBoneByName: function ( name ) {\n\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tconst bone = this.bones[ i ];\n\n\t\t\tif ( bone.name === name ) {\n\n\t\t\t\treturn bone;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn undefined;\n\n\t},\n\n\tdispose: function ( ) {\n\n\t\tif ( this.boneTexture ) {\n\n\t\t\tthis.boneTexture.dispose();\n\n\t\t\tthis.boneTexture = undefined;\n\n\t\t}\n\n\t}\n\n} );\n\nfunction Bone() {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Bone';\n\n}\n\nBone.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Bone,\n\n\tisBone: true\n\n} );\n\nconst _instanceLocalMatrix = new Matrix4();\nconst _instanceWorldMatrix = new Matrix4();\n\nconst _instanceIntersects = [];\n\nconst _mesh = new Mesh();\n\nfunction InstancedMesh( geometry, material, count ) {\n\n\tMesh.call( this, geometry, material );\n\n\tthis.instanceMatrix = new BufferAttribute( new Float32Array( count * 16 ), 16 );\n\tthis.instanceColor = null;\n\n\tthis.count = count;\n\n\tthis.frustumCulled = false;\n\n}\n\nInstancedMesh.prototype = Object.assign( Object.create( Mesh.prototype ), {\n\n\tconstructor: InstancedMesh,\n\n\tisInstancedMesh: true,\n\n\tcopy: function ( source ) {\n\n\t\tMesh.prototype.copy.call( this, source );\n\n\t\tthis.instanceMatrix.copy( source.instanceMatrix );\n\t\tthis.count = source.count;\n\n\t\treturn this;\n\n\t},\n\n\tsetColorAt: function ( index, color ) {\n\n\t\tif ( this.instanceColor === null ) {\n\n\t\t\tthis.instanceColor = new BufferAttribute( new Float32Array( this.count * 3 ), 3 );\n\n\t\t}\n\n\t\tcolor.toArray( this.instanceColor.array, index * 3 );\n\n\t},\n\n\tgetMatrixAt: function ( index, matrix ) {\n\n\t\tmatrix.fromArray( this.instanceMatrix.array, index * 16 );\n\n\t},\n\n\traycast: function ( raycaster, intersects ) {\n\n\t\tconst matrixWorld = this.matrixWorld;\n\t\tconst raycastTimes = this.count;\n\n\t\t_mesh.geometry = this.geometry;\n\t\t_mesh.material = this.material;\n\n\t\tif ( _mesh.material === undefined ) return;\n\n\t\tfor ( let instanceId = 0; instanceId < raycastTimes; instanceId ++ ) {\n\n\t\t\t// calculate the world matrix for each instance\n\n\t\t\tthis.getMatrixAt( instanceId, _instanceLocalMatrix );\n\n\t\t\t_instanceWorldMatrix.multiplyMatrices( matrixWorld, _instanceLocalMatrix );\n\n\t\t\t// the mesh represents this single instance\n\n\t\t\t_mesh.matrixWorld = _instanceWorldMatrix;\n\n\t\t\t_mesh.raycast( raycaster, _instanceIntersects );\n\n\t\t\t// process the result of raycast\n\n\t\t\tfor ( let i = 0, l = _instanceIntersects.length; i < l; i ++ ) {\n\n\t\t\t\tconst intersect = _instanceIntersects[ i ];\n\t\t\t\tintersect.instanceId = instanceId;\n\t\t\t\tintersect.object = this;\n\t\t\t\tintersects.push( intersect );\n\n\t\t\t}\n\n\t\t\t_instanceIntersects.length = 0;\n\n\t\t}\n\n\t},\n\n\tsetMatrixAt: function ( index, matrix ) {\n\n\t\tmatrix.toArray( this.instanceMatrix.array, index * 16 );\n\n\t},\n\n\tupdateMorphTargets: function () {\n\n\t}\n\n} );\n\n/**\n * parameters = {\n *  color: <hex>,\n *  opacity: <float>,\n *\n *  linewidth: <float>,\n *  linecap: \"round\",\n *  linejoin: \"round\"\n * }\n */\n\nfunction LineBasicMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'LineBasicMaterial';\n\n\tthis.color = new Color( 0xffffff );\n\n\tthis.linewidth = 1;\n\tthis.linecap = 'round';\n\tthis.linejoin = 'round';\n\n\tthis.morphTargets = false;\n\n\tthis.setValues( parameters );\n\n}\n\nLineBasicMaterial.prototype = Object.create( Material.prototype );\nLineBasicMaterial.prototype.constructor = LineBasicMaterial;\n\nLineBasicMaterial.prototype.isLineBasicMaterial = true;\n\nLineBasicMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\tthis.linewidth = source.linewidth;\n\tthis.linecap = source.linecap;\n\tthis.linejoin = source.linejoin;\n\n\tthis.morphTargets = source.morphTargets;\n\n\treturn this;\n\n};\n\nconst _start = new Vector3();\nconst _end = new Vector3();\nconst _inverseMatrix$1 = new Matrix4();\nconst _ray$1 = new Ray();\nconst _sphere$2 = new Sphere();\n\nfunction Line( geometry, material, mode ) {\n\n\tif ( mode === 1 ) {\n\n\t\tconsole.error( 'THREE.Line: parameter THREE.LinePieces no longer supported. Use THREE.LineSegments instead.' );\n\n\t}\n\n\tObject3D.call( this );\n\n\tthis.type = 'Line';\n\n\tthis.geometry = geometry !== undefined ? geometry : new BufferGeometry();\n\tthis.material = material !== undefined ? material : new LineBasicMaterial();\n\n\tthis.updateMorphTargets();\n\n}\n\nLine.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Line,\n\n\tisLine: true,\n\n\tcopy: function ( source ) {\n\n\t\tObject3D.prototype.copy.call( this, source );\n\n\t\tthis.material = source.material;\n\t\tthis.geometry = source.geometry;\n\n\t\treturn this;\n\n\t},\n\n\tcomputeLineDistances: function () {\n\n\t\tconst geometry = this.geometry;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\t// we assume non-indexed geometry\n\n\t\t\tif ( geometry.index === null ) {\n\n\t\t\t\tconst positionAttribute = geometry.attributes.position;\n\t\t\t\tconst lineDistances = [ 0 ];\n\n\t\t\t\tfor ( let i = 1, l = positionAttribute.count; i < l; i ++ ) {\n\n\t\t\t\t\t_start.fromBufferAttribute( positionAttribute, i - 1 );\n\t\t\t\t\t_end.fromBufferAttribute( positionAttribute, i );\n\n\t\t\t\t\tlineDistances[ i ] = lineDistances[ i - 1 ];\n\t\t\t\t\tlineDistances[ i ] += _start.distanceTo( _end );\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.setAttribute( 'lineDistance', new Float32BufferAttribute( lineDistances, 1 ) );\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'THREE.Line.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.' );\n\n\t\t\t}\n\n\t\t} else if ( geometry.isGeometry ) {\n\n\t\t\tconst vertices = geometry.vertices;\n\t\t\tconst lineDistances = geometry.lineDistances;\n\n\t\t\tlineDistances[ 0 ] = 0;\n\n\t\t\tfor ( let i = 1, l = vertices.length; i < l; i ++ ) {\n\n\t\t\t\tlineDistances[ i ] = lineDistances[ i - 1 ];\n\t\t\t\tlineDistances[ i ] += vertices[ i - 1 ].distanceTo( vertices[ i ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\traycast: function ( raycaster, intersects ) {\n\n\t\tconst geometry = this.geometry;\n\t\tconst matrixWorld = this.matrixWorld;\n\t\tconst threshold = raycaster.params.Line.threshold;\n\n\t\t// Checking boundingSphere distance to ray\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere$2.copy( geometry.boundingSphere );\n\t\t_sphere$2.applyMatrix4( matrixWorld );\n\t\t_sphere$2.radius += threshold;\n\n\t\tif ( raycaster.ray.intersectsSphere( _sphere$2 ) === false ) return;\n\n\t\t//\n\n\t\t_inverseMatrix$1.getInverse( matrixWorld );\n\t\t_ray$1.copy( raycaster.ray ).applyMatrix4( _inverseMatrix$1 );\n\n\t\tconst localThreshold = threshold / ( ( this.scale.x + this.scale.y + this.scale.z ) / 3 );\n\t\tconst localThresholdSq = localThreshold * localThreshold;\n\n\t\tconst vStart = new Vector3();\n\t\tconst vEnd = new Vector3();\n\t\tconst interSegment = new Vector3();\n\t\tconst interRay = new Vector3();\n\t\tconst step = ( this && this.isLineSegments ) ? 2 : 1;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tconst index = geometry.index;\n\t\t\tconst attributes = geometry.attributes;\n\t\t\tconst positions = attributes.position.array;\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\tconst indices = index.array;\n\n\t\t\t\tfor ( let i = 0, l = indices.length - 1; i < l; i += step ) {\n\n\t\t\t\t\tconst a = indices[ i ];\n\t\t\t\t\tconst b = indices[ i + 1 ];\n\n\t\t\t\t\tvStart.fromArray( positions, a * 3 );\n\t\t\t\t\tvEnd.fromArray( positions, b * 3 );\n\n\t\t\t\t\tconst distSq = _ray$1.distanceSqToSegment( vStart, vEnd, interRay, interSegment );\n\n\t\t\t\t\tif ( distSq > localThresholdSq ) continue;\n\n\t\t\t\t\tinterRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation\n\n\t\t\t\t\tconst distance = raycaster.ray.origin.distanceTo( interRay );\n\n\t\t\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) continue;\n\n\t\t\t\t\tintersects.push( {\n\n\t\t\t\t\t\tdistance: distance,\n\t\t\t\t\t\t// What do we want? intersection point on the ray or on the segment??\n\t\t\t\t\t\t// point: raycaster.ray.at( distance ),\n\t\t\t\t\t\tpoint: interSegment.clone().applyMatrix4( this.matrixWorld ),\n\t\t\t\t\t\tindex: i,\n\t\t\t\t\t\tface: null,\n\t\t\t\t\t\tfaceIndex: null,\n\t\t\t\t\t\tobject: this\n\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tfor ( let i = 0, l = positions.length / 3 - 1; i < l; i += step ) {\n\n\t\t\t\t\tvStart.fromArray( positions, 3 * i );\n\t\t\t\t\tvEnd.fromArray( positions, 3 * i + 3 );\n\n\t\t\t\t\tconst distSq = _ray$1.distanceSqToSegment( vStart, vEnd, interRay, interSegment );\n\n\t\t\t\t\tif ( distSq > localThresholdSq ) continue;\n\n\t\t\t\t\tinterRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation\n\n\t\t\t\t\tconst distance = raycaster.ray.origin.distanceTo( interRay );\n\n\t\t\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) continue;\n\n\t\t\t\t\tintersects.push( {\n\n\t\t\t\t\t\tdistance: distance,\n\t\t\t\t\t\t// What do we want? intersection point on the ray or on the segment??\n\t\t\t\t\t\t// point: raycaster.ray.at( distance ),\n\t\t\t\t\t\tpoint: interSegment.clone().applyMatrix4( this.matrixWorld ),\n\t\t\t\t\t\tindex: i,\n\t\t\t\t\t\tface: null,\n\t\t\t\t\t\tfaceIndex: null,\n\t\t\t\t\t\tobject: this\n\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else if ( geometry.isGeometry ) {\n\n\t\t\tconst vertices = geometry.vertices;\n\t\t\tconst nbVertices = vertices.length;\n\n\t\t\tfor ( let i = 0; i < nbVertices - 1; i += step ) {\n\n\t\t\t\tconst distSq = _ray$1.distanceSqToSegment( vertices[ i ], vertices[ i + 1 ], interRay, interSegment );\n\n\t\t\t\tif ( distSq > localThresholdSq ) continue;\n\n\t\t\t\tinterRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation\n\n\t\t\t\tconst distance = raycaster.ray.origin.distanceTo( interRay );\n\n\t\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) continue;\n\n\t\t\t\tintersects.push( {\n\n\t\t\t\t\tdistance: distance,\n\t\t\t\t\t// What do we want? intersection point on the ray or on the segment??\n\t\t\t\t\t// point: raycaster.ray.at( distance ),\n\t\t\t\t\tpoint: interSegment.clone().applyMatrix4( this.matrixWorld ),\n\t\t\t\t\tindex: i,\n\t\t\t\t\tface: null,\n\t\t\t\t\tfaceIndex: null,\n\t\t\t\t\tobject: this\n\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\tupdateMorphTargets: function () {\n\n\t\tconst geometry = this.geometry;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tconst morphAttributes = geometry.morphAttributes;\n\t\t\tconst keys = Object.keys( morphAttributes );\n\n\t\t\tif ( keys.length > 0 ) {\n\n\t\t\t\tconst morphAttribute = morphAttributes[ keys[ 0 ] ];\n\n\t\t\t\tif ( morphAttribute !== undefined ) {\n\n\t\t\t\t\tthis.morphTargetInfluences = [];\n\t\t\t\t\tthis.morphTargetDictionary = {};\n\n\t\t\t\t\tfor ( let m = 0, ml = morphAttribute.length; m < ml; m ++ ) {\n\n\t\t\t\t\t\tconst name = morphAttribute[ m ].name || String( m );\n\n\t\t\t\t\t\tthis.morphTargetInfluences.push( 0 );\n\t\t\t\t\t\tthis.morphTargetDictionary[ name ] = m;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst morphTargets = geometry.morphTargets;\n\n\t\t\tif ( morphTargets !== undefined && morphTargets.length > 0 ) {\n\n\t\t\t\tconsole.error( 'THREE.Line.updateMorphTargets() does not support THREE.Geometry. Use THREE.BufferGeometry instead.' );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n} );\n\nconst _start$1 = new Vector3();\nconst _end$1 = new Vector3();\n\nfunction LineSegments( geometry, material ) {\n\n\tLine.call( this, geometry, material );\n\n\tthis.type = 'LineSegments';\n\n}\n\nLineSegments.prototype = Object.assign( Object.create( Line.prototype ), {\n\n\tconstructor: LineSegments,\n\n\tisLineSegments: true,\n\n\tcomputeLineDistances: function () {\n\n\t\tconst geometry = this.geometry;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\t// we assume non-indexed geometry\n\n\t\t\tif ( geometry.index === null ) {\n\n\t\t\t\tconst positionAttribute = geometry.attributes.position;\n\t\t\t\tconst lineDistances = [];\n\n\t\t\t\tfor ( let i = 0, l = positionAttribute.count; i < l; i += 2 ) {\n\n\t\t\t\t\t_start$1.fromBufferAttribute( positionAttribute, i );\n\t\t\t\t\t_end$1.fromBufferAttribute( positionAttribute, i + 1 );\n\n\t\t\t\t\tlineDistances[ i ] = ( i === 0 ) ? 0 : lineDistances[ i - 1 ];\n\t\t\t\t\tlineDistances[ i + 1 ] = lineDistances[ i ] + _start$1.distanceTo( _end$1 );\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.setAttribute( 'lineDistance', new Float32BufferAttribute( lineDistances, 1 ) );\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'THREE.LineSegments.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.' );\n\n\t\t\t}\n\n\t\t} else if ( geometry.isGeometry ) {\n\n\t\t\tconst vertices = geometry.vertices;\n\t\t\tconst lineDistances = geometry.lineDistances;\n\n\t\t\tfor ( let i = 0, l = vertices.length; i < l; i += 2 ) {\n\n\t\t\t\t_start$1.copy( vertices[ i ] );\n\t\t\t\t_end$1.copy( vertices[ i + 1 ] );\n\n\t\t\t\tlineDistances[ i ] = ( i === 0 ) ? 0 : lineDistances[ i - 1 ];\n\t\t\t\tlineDistances[ i + 1 ] = lineDistances[ i ] + _start$1.distanceTo( _end$1 );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\nfunction LineLoop( geometry, material ) {\n\n\tLine.call( this, geometry, material );\n\n\tthis.type = 'LineLoop';\n\n}\n\nLineLoop.prototype = Object.assign( Object.create( Line.prototype ), {\n\n\tconstructor: LineLoop,\n\n\tisLineLoop: true,\n\n} );\n\n/**\n * parameters = {\n *  color: <hex>,\n *  opacity: <float>,\n *  map: new THREE.Texture( <Image> ),\n *  alphaMap: new THREE.Texture( <Image> ),\n *\n *  size: <float>,\n *  sizeAttenuation: <bool>\n *\n *  morphTargets: <bool>\n * }\n */\n\nfunction PointsMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'PointsMaterial';\n\n\tthis.color = new Color( 0xffffff );\n\n\tthis.map = null;\n\n\tthis.alphaMap = null;\n\n\tthis.size = 1;\n\tthis.sizeAttenuation = true;\n\n\tthis.morphTargets = false;\n\n\tthis.setValues( parameters );\n\n}\n\nPointsMaterial.prototype = Object.create( Material.prototype );\nPointsMaterial.prototype.constructor = PointsMaterial;\n\nPointsMaterial.prototype.isPointsMaterial = true;\n\nPointsMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\tthis.map = source.map;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.size = source.size;\n\tthis.sizeAttenuation = source.sizeAttenuation;\n\n\tthis.morphTargets = source.morphTargets;\n\n\treturn this;\n\n};\n\nconst _inverseMatrix$2 = new Matrix4();\nconst _ray$2 = new Ray();\nconst _sphere$3 = new Sphere();\nconst _position$1 = new Vector3();\n\nfunction Points( geometry, material ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Points';\n\n\tthis.geometry = geometry !== undefined ? geometry : new BufferGeometry();\n\tthis.material = material !== undefined ? material : new PointsMaterial();\n\n\tthis.updateMorphTargets();\n\n}\n\nPoints.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Points,\n\n\tisPoints: true,\n\n\tcopy: function ( source ) {\n\n\t\tObject3D.prototype.copy.call( this, source );\n\n\t\tthis.material = source.material;\n\t\tthis.geometry = source.geometry;\n\n\t\treturn this;\n\n\t},\n\n\traycast: function ( raycaster, intersects ) {\n\n\t\tconst geometry = this.geometry;\n\t\tconst matrixWorld = this.matrixWorld;\n\t\tconst threshold = raycaster.params.Points.threshold;\n\n\t\t// Checking boundingSphere distance to ray\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere$3.copy( geometry.boundingSphere );\n\t\t_sphere$3.applyMatrix4( matrixWorld );\n\t\t_sphere$3.radius += threshold;\n\n\t\tif ( raycaster.ray.intersectsSphere( _sphere$3 ) === false ) return;\n\n\t\t//\n\n\t\t_inverseMatrix$2.getInverse( matrixWorld );\n\t\t_ray$2.copy( raycaster.ray ).applyMatrix4( _inverseMatrix$2 );\n\n\t\tconst localThreshold = threshold / ( ( this.scale.x + this.scale.y + this.scale.z ) / 3 );\n\t\tconst localThresholdSq = localThreshold * localThreshold;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tconst index = geometry.index;\n\t\t\tconst attributes = geometry.attributes;\n\t\t\tconst positions = attributes.position.array;\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\tconst indices = index.array;\n\n\t\t\t\tfor ( let i = 0, il = indices.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst a = indices[ i ];\n\n\t\t\t\t\t_position$1.fromArray( positions, a * 3 );\n\n\t\t\t\t\ttestPoint( _position$1, a, localThresholdSq, matrixWorld, raycaster, intersects, this );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tfor ( let i = 0, l = positions.length / 3; i < l; i ++ ) {\n\n\t\t\t\t\t_position$1.fromArray( positions, i * 3 );\n\n\t\t\t\t\ttestPoint( _position$1, i, localThresholdSq, matrixWorld, raycaster, intersects, this );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst vertices = geometry.vertices;\n\n\t\t\tfor ( let i = 0, l = vertices.length; i < l; i ++ ) {\n\n\t\t\t\ttestPoint( vertices[ i ], i, localThresholdSq, matrixWorld, raycaster, intersects, this );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\tupdateMorphTargets: function () {\n\n\t\tconst geometry = this.geometry;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tconst morphAttributes = geometry.morphAttributes;\n\t\t\tconst keys = Object.keys( morphAttributes );\n\n\t\t\tif ( keys.length > 0 ) {\n\n\t\t\t\tconst morphAttribute = morphAttributes[ keys[ 0 ] ];\n\n\t\t\t\tif ( morphAttribute !== undefined ) {\n\n\t\t\t\t\tthis.morphTargetInfluences = [];\n\t\t\t\t\tthis.morphTargetDictionary = {};\n\n\t\t\t\t\tfor ( let m = 0, ml = morphAttribute.length; m < ml; m ++ ) {\n\n\t\t\t\t\t\tconst name = morphAttribute[ m ].name || String( m );\n\n\t\t\t\t\t\tthis.morphTargetInfluences.push( 0 );\n\t\t\t\t\t\tthis.morphTargetDictionary[ name ] = m;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst morphTargets = geometry.morphTargets;\n\n\t\t\tif ( morphTargets !== undefined && morphTargets.length > 0 ) {\n\n\t\t\t\tconsole.error( 'THREE.Points.updateMorphTargets() does not support THREE.Geometry. Use THREE.BufferGeometry instead.' );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n} );\n\nfunction testPoint( point, index, localThresholdSq, matrixWorld, raycaster, intersects, object ) {\n\n\tconst rayPointDistanceSq = _ray$2.distanceSqToPoint( point );\n\n\tif ( rayPointDistanceSq < localThresholdSq ) {\n\n\t\tconst intersectPoint = new Vector3();\n\n\t\t_ray$2.closestPointToPoint( point, intersectPoint );\n\t\tintersectPoint.applyMatrix4( matrixWorld );\n\n\t\tconst distance = raycaster.ray.origin.distanceTo( intersectPoint );\n\n\t\tif ( distance < raycaster.near || distance > raycaster.far ) return;\n\n\t\tintersects.push( {\n\n\t\t\tdistance: distance,\n\t\t\tdistanceToRay: Math.sqrt( rayPointDistanceSq ),\n\t\t\tpoint: intersectPoint,\n\t\t\tindex: index,\n\t\t\tface: null,\n\t\t\tobject: object\n\n\t\t} );\n\n\t}\n\n}\n\nfunction VideoTexture( video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) {\n\n\tTexture.call( this, video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\tthis.format = format !== undefined ? format : RGBFormat;\n\n\tthis.minFilter = minFilter !== undefined ? minFilter : LinearFilter;\n\tthis.magFilter = magFilter !== undefined ? magFilter : LinearFilter;\n\n\tthis.generateMipmaps = false;\n\n\tconst scope = this;\n\n\tfunction updateVideo() {\n\n\t\tscope.needsUpdate = true;\n\t\tvideo.requestVideoFrameCallback( updateVideo );\n\n\t}\n\n\tif ( 'requestVideoFrameCallback' in video ) {\n\n\t\tvideo.requestVideoFrameCallback( updateVideo );\n\n\t}\n\n}\n\nVideoTexture.prototype = Object.assign( Object.create( Texture.prototype ), {\n\n\tconstructor: VideoTexture,\n\n\tisVideoTexture: true,\n\n\tupdate: function () {\n\n\t\tconst video = this.image;\n\t\tconst hasVideoFrameCallback = 'requestVideoFrameCallback' in video;\n\n\t\tif ( hasVideoFrameCallback === false && video.readyState >= video.HAVE_CURRENT_DATA ) {\n\n\t\t\tthis.needsUpdate = true;\n\n\t\t}\n\n\t}\n\n} );\n\nfunction CompressedTexture( mipmaps, width, height, format, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, encoding ) {\n\n\tTexture.call( this, null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding );\n\n\tthis.image = { width: width, height: height };\n\tthis.mipmaps = mipmaps;\n\n\t// no flipping for cube textures\n\t// (also flipping doesn't work for compressed textures )\n\n\tthis.flipY = false;\n\n\t// can't generate mipmaps for compressed textures\n\t// mips must be embedded in DDS files\n\n\tthis.generateMipmaps = false;\n\n}\n\nCompressedTexture.prototype = Object.create( Texture.prototype );\nCompressedTexture.prototype.constructor = CompressedTexture;\n\nCompressedTexture.prototype.isCompressedTexture = true;\n\nfunction CanvasTexture( canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) {\n\n\tTexture.call( this, canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\tthis.needsUpdate = true;\n\n}\n\nCanvasTexture.prototype = Object.create( Texture.prototype );\nCanvasTexture.prototype.constructor = CanvasTexture;\nCanvasTexture.prototype.isCanvasTexture = true;\n\nfunction DepthTexture( width, height, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, format ) {\n\n\tformat = format !== undefined ? format : DepthFormat;\n\n\tif ( format !== DepthFormat && format !== DepthStencilFormat ) {\n\n\t\tthrow new Error( 'DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat' );\n\n\t}\n\n\tif ( type === undefined && format === DepthFormat ) type = UnsignedShortType;\n\tif ( type === undefined && format === DepthStencilFormat ) type = UnsignedInt248Type;\n\n\tTexture.call( this, null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\tthis.image = { width: width, height: height };\n\n\tthis.magFilter = magFilter !== undefined ? magFilter : NearestFilter;\n\tthis.minFilter = minFilter !== undefined ? minFilter : NearestFilter;\n\n\tthis.flipY = false;\n\tthis.generateMipmaps\t= false;\n\n}\n\nDepthTexture.prototype = Object.create( Texture.prototype );\nDepthTexture.prototype.constructor = DepthTexture;\nDepthTexture.prototype.isDepthTexture = true;\n\nclass WireframeGeometry extends BufferGeometry {\n\n\tconstructor( geometry ) {\n\n\t\tsuper();\n\t\tthis.type = 'WireframeGeometry';\n\n\t\t// buffer\n\n\t\tconst vertices = [];\n\n\t\t// helper variables\n\n\t\tconst edge = [ 0, 0 ], edges = {};\n\t\tconst keys = [ 'a', 'b', 'c' ];\n\n\t\t// different logic for Geometry and BufferGeometry\n\n\t\tif ( geometry && geometry.isGeometry ) {\n\n\t\t\t// create a data structure that contains all edges without duplicates\n\n\t\t\tconst faces = geometry.faces;\n\n\t\t\tfor ( let i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\t\t\tconst face = faces[ i ];\n\n\t\t\t\tfor ( let j = 0; j < 3; j ++ ) {\n\n\t\t\t\t\tconst edge1 = face[ keys[ j ] ];\n\t\t\t\t\tconst edge2 = face[ keys[ ( j + 1 ) % 3 ] ];\n\t\t\t\t\tedge[ 0 ] = Math.min( edge1, edge2 ); // sorting prevents duplicates\n\t\t\t\t\tedge[ 1 ] = Math.max( edge1, edge2 );\n\n\t\t\t\t\tconst key = edge[ 0 ] + ',' + edge[ 1 ];\n\n\t\t\t\t\tif ( edges[ key ] === undefined ) {\n\n\t\t\t\t\t\tedges[ key ] = { index1: edge[ 0 ], index2: edge[ 1 ] };\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// generate vertices\n\n\t\t\tfor ( const key in edges ) {\n\n\t\t\t\tconst e = edges[ key ];\n\n\t\t\t\tlet vertex = geometry.vertices[ e.index1 ];\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\tvertex = geometry.vertices[ e.index2 ];\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t}\n\n\t\t} else if ( geometry && geometry.isBufferGeometry ) {\n\n\t\t\tconst vertex = new Vector3();\n\n\t\t\tif ( geometry.index !== null ) {\n\n\t\t\t\t// indexed BufferGeometry\n\n\t\t\t\tconst position = geometry.attributes.position;\n\t\t\t\tconst indices = geometry.index;\n\t\t\t\tlet groups = geometry.groups;\n\n\t\t\t\tif ( groups.length === 0 ) {\n\n\t\t\t\t\tgroups = [ { start: 0, count: indices.count, materialIndex: 0 } ];\n\n\t\t\t\t}\n\n\t\t\t\t// create a data structure that contains all eges without duplicates\n\n\t\t\t\tfor ( let o = 0, ol = groups.length; o < ol; ++ o ) {\n\n\t\t\t\t\tconst group = groups[ o ];\n\n\t\t\t\t\tconst start = group.start;\n\t\t\t\t\tconst count = group.count;\n\n\t\t\t\t\tfor ( let i = start, l = ( start + count ); i < l; i += 3 ) {\n\n\t\t\t\t\t\tfor ( let j = 0; j < 3; j ++ ) {\n\n\t\t\t\t\t\t\tconst edge1 = indices.getX( i + j );\n\t\t\t\t\t\t\tconst edge2 = indices.getX( i + ( j + 1 ) % 3 );\n\t\t\t\t\t\t\tedge[ 0 ] = Math.min( edge1, edge2 ); // sorting prevents duplicates\n\t\t\t\t\t\t\tedge[ 1 ] = Math.max( edge1, edge2 );\n\n\t\t\t\t\t\t\tconst key = edge[ 0 ] + ',' + edge[ 1 ];\n\n\t\t\t\t\t\t\tif ( edges[ key ] === undefined ) {\n\n\t\t\t\t\t\t\t\tedges[ key ] = { index1: edge[ 0 ], index2: edge[ 1 ] };\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t// generate vertices\n\n\t\t\t\tfor ( const key in edges ) {\n\n\t\t\t\t\tconst e = edges[ key ];\n\n\t\t\t\t\tvertex.fromBufferAttribute( position, e.index1 );\n\t\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t\tvertex.fromBufferAttribute( position, e.index2 );\n\t\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// non-indexed BufferGeometry\n\n\t\t\t\tconst position = geometry.attributes.position;\n\n\t\t\t\tfor ( let i = 0, l = ( position.count / 3 ); i < l; i ++ ) {\n\n\t\t\t\t\tfor ( let j = 0; j < 3; j ++ ) {\n\n\t\t\t\t\t\t// three edges per triangle, an edge is represented as (index1, index2)\n\t\t\t\t\t\t// e.g. the first triangle has the following edges: (0,1),(1,2),(2,0)\n\n\t\t\t\t\t\tconst index1 = 3 * i + j;\n\t\t\t\t\t\tvertex.fromBufferAttribute( position, index1 );\n\t\t\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t\t\tconst index2 = 3 * i + ( ( j + 1 ) % 3 );\n\t\t\t\t\t\tvertex.fromBufferAttribute( position, index2 );\n\t\t\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\n\t}\n\n}\n\n/**\n * Parametric Surfaces Geometry\n * based on the brilliant article by @prideout https://prideout.net/blog/old/blog/index.html@p=44.html\n */\n\n// ParametricGeometry\n\nfunction ParametricGeometry( func, slices, stacks ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'ParametricGeometry';\n\n\tthis.parameters = {\n\t\tfunc: func,\n\t\tslices: slices,\n\t\tstacks: stacks\n\t};\n\n\tthis.fromBufferGeometry( new ParametricBufferGeometry( func, slices, stacks ) );\n\tthis.mergeVertices();\n\n}\n\nParametricGeometry.prototype = Object.create( Geometry.prototype );\nParametricGeometry.prototype.constructor = ParametricGeometry;\n\n// ParametricBufferGeometry\n\nfunction ParametricBufferGeometry( func, slices, stacks ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'ParametricBufferGeometry';\n\n\tthis.parameters = {\n\t\tfunc: func,\n\t\tslices: slices,\n\t\tstacks: stacks\n\t};\n\n\t// buffers\n\n\tconst indices = [];\n\tconst vertices = [];\n\tconst normals = [];\n\tconst uvs = [];\n\n\tconst EPS = 0.00001;\n\n\tconst normal = new Vector3();\n\n\tconst p0 = new Vector3(), p1 = new Vector3();\n\tconst pu = new Vector3(), pv = new Vector3();\n\n\tif ( func.length < 3 ) {\n\n\t\tconsole.error( 'THREE.ParametricGeometry: Function must now modify a Vector3 as third parameter.' );\n\n\t}\n\n\t// generate vertices, normals and uvs\n\n\tconst sliceCount = slices + 1;\n\n\tfor ( let i = 0; i <= stacks; i ++ ) {\n\n\t\tconst v = i / stacks;\n\n\t\tfor ( let j = 0; j <= slices; j ++ ) {\n\n\t\t\tconst u = j / slices;\n\n\t\t\t// vertex\n\n\t\t\tfunc( u, v, p0 );\n\t\t\tvertices.push( p0.x, p0.y, p0.z );\n\n\t\t\t// normal\n\n\t\t\t// approximate tangent vectors via finite differences\n\n\t\t\tif ( u - EPS >= 0 ) {\n\n\t\t\t\tfunc( u - EPS, v, p1 );\n\t\t\t\tpu.subVectors( p0, p1 );\n\n\t\t\t} else {\n\n\t\t\t\tfunc( u + EPS, v, p1 );\n\t\t\t\tpu.subVectors( p1, p0 );\n\n\t\t\t}\n\n\t\t\tif ( v - EPS >= 0 ) {\n\n\t\t\t\tfunc( u, v - EPS, p1 );\n\t\t\t\tpv.subVectors( p0, p1 );\n\n\t\t\t} else {\n\n\t\t\t\tfunc( u, v + EPS, p1 );\n\t\t\t\tpv.subVectors( p1, p0 );\n\n\t\t\t}\n\n\t\t\t// cross product of tangent vectors returns surface normal\n\n\t\t\tnormal.crossVectors( pu, pv ).normalize();\n\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t// uv\n\n\t\t\tuvs.push( u, v );\n\n\t\t}\n\n\t}\n\n\t// generate indices\n\n\tfor ( let i = 0; i < stacks; i ++ ) {\n\n\t\tfor ( let j = 0; j < slices; j ++ ) {\n\n\t\t\tconst a = i * sliceCount + j;\n\t\t\tconst b = i * sliceCount + j + 1;\n\t\t\tconst c = ( i + 1 ) * sliceCount + j + 1;\n\t\t\tconst d = ( i + 1 ) * sliceCount + j;\n\n\t\t\t// faces one and two\n\n\t\t\tindices.push( a, b, d );\n\t\t\tindices.push( b, c, d );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n}\n\nParametricBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nParametricBufferGeometry.prototype.constructor = ParametricBufferGeometry;\n\n// PolyhedronGeometry\n\nclass PolyhedronGeometry extends Geometry {\n\n\tconstructor( vertices, indices, radius, detail ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'PolyhedronGeometry';\n\n\t\tthis.parameters = {\n\t\t\tvertices: vertices,\n\t\t\tindices: indices,\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t\tthis.fromBufferGeometry( new PolyhedronBufferGeometry( vertices, indices, radius, detail ) );\n\t\tthis.mergeVertices();\n\n\t}\n\n}\n\n// PolyhedronBufferGeometry\n\nclass PolyhedronBufferGeometry extends BufferGeometry {\n\n\tconstructor( vertices, indices, radius, detail ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'PolyhedronBufferGeometry';\n\n\t\tthis.parameters = {\n\t\t\tvertices: vertices,\n\t\t\tindices: indices,\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t\tradius = radius || 1;\n\t\tdetail = detail || 0;\n\n\t\t// default buffer data\n\n\t\tconst vertexBuffer = [];\n\t\tconst uvBuffer = [];\n\n\t\t// the subdivision creates the vertex buffer data\n\n\t\tsubdivide( detail );\n\n\t\t// all vertices should lie on a conceptual sphere with a given radius\n\n\t\tapplyRadius( radius );\n\n\t\t// finally, create the uv data\n\n\t\tgenerateUVs();\n\n\t\t// build non-indexed geometry\n\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertexBuffer, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( vertexBuffer.slice(), 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvBuffer, 2 ) );\n\n\t\tif ( detail === 0 ) {\n\n\t\t\tthis.computeVertexNormals(); // flat normals\n\n\t\t} else {\n\n\t\t\tthis.normalizeNormals(); // smooth normals\n\n\t\t}\n\n\t\t// helper functions\n\n\t\tfunction subdivide( detail ) {\n\n\t\t\tconst a = new Vector3();\n\t\t\tconst b = new Vector3();\n\t\t\tconst c = new Vector3();\n\n\t\t\t// iterate over all faces and apply a subdivison with the given detail value\n\n\t\t\tfor ( let i = 0; i < indices.length; i += 3 ) {\n\n\t\t\t\t// get the vertices of the face\n\n\t\t\t\tgetVertexByIndex( indices[ i + 0 ], a );\n\t\t\t\tgetVertexByIndex( indices[ i + 1 ], b );\n\t\t\t\tgetVertexByIndex( indices[ i + 2 ], c );\n\n\t\t\t\t// perform subdivision\n\n\t\t\t\tsubdivideFace( a, b, c, detail );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction subdivideFace( a, b, c, detail ) {\n\n\t\t\tconst cols = Math.pow( 2, detail );\n\n\t\t\t// we use this multidimensional array as a data structure for creating the subdivision\n\n\t\t\tconst v = [];\n\n\t\t\t// construct all of the vertices for this subdivision\n\n\t\t\tfor ( let i = 0; i <= cols; i ++ ) {\n\n\t\t\t\tv[ i ] = [];\n\n\t\t\t\tconst aj = a.clone().lerp( c, i / cols );\n\t\t\t\tconst bj = b.clone().lerp( c, i / cols );\n\n\t\t\t\tconst rows = cols - i;\n\n\t\t\t\tfor ( let j = 0; j <= rows; j ++ ) {\n\n\t\t\t\t\tif ( j === 0 && i === cols ) {\n\n\t\t\t\t\t\tv[ i ][ j ] = aj;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tv[ i ][ j ] = aj.clone().lerp( bj, j / rows );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// construct all of the faces\n\n\t\t\tfor ( let i = 0; i < cols; i ++ ) {\n\n\t\t\t\tfor ( let j = 0; j < 2 * ( cols - i ) - 1; j ++ ) {\n\n\t\t\t\t\tconst k = Math.floor( j / 2 );\n\n\t\t\t\t\tif ( j % 2 === 0 ) {\n\n\t\t\t\t\t\tpushVertex( v[ i ][ k + 1 ] );\n\t\t\t\t\t\tpushVertex( v[ i + 1 ][ k ] );\n\t\t\t\t\t\tpushVertex( v[ i ][ k ] );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tpushVertex( v[ i ][ k + 1 ] );\n\t\t\t\t\t\tpushVertex( v[ i + 1 ][ k + 1 ] );\n\t\t\t\t\t\tpushVertex( v[ i + 1 ][ k ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction applyRadius( radius ) {\n\n\t\t\tconst vertex = new Vector3();\n\n\t\t\t// iterate over the entire buffer and apply the radius to each vertex\n\n\t\t\tfor ( let i = 0; i < vertexBuffer.length; i += 3 ) {\n\n\t\t\t\tvertex.x = vertexBuffer[ i + 0 ];\n\t\t\t\tvertex.y = vertexBuffer[ i + 1 ];\n\t\t\t\tvertex.z = vertexBuffer[ i + 2 ];\n\n\t\t\t\tvertex.normalize().multiplyScalar( radius );\n\n\t\t\t\tvertexBuffer[ i + 0 ] = vertex.x;\n\t\t\t\tvertexBuffer[ i + 1 ] = vertex.y;\n\t\t\t\tvertexBuffer[ i + 2 ] = vertex.z;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction generateUVs() {\n\n\t\t\tconst vertex = new Vector3();\n\n\t\t\tfor ( let i = 0; i < vertexBuffer.length; i += 3 ) {\n\n\t\t\t\tvertex.x = vertexBuffer[ i + 0 ];\n\t\t\t\tvertex.y = vertexBuffer[ i + 1 ];\n\t\t\t\tvertex.z = vertexBuffer[ i + 2 ];\n\n\t\t\t\tconst u = azimuth( vertex ) / 2 / Math.PI + 0.5;\n\t\t\t\tconst v = inclination( vertex ) / Math.PI + 0.5;\n\t\t\t\tuvBuffer.push( u, 1 - v );\n\n\t\t\t}\n\n\t\t\tcorrectUVs();\n\n\t\t\tcorrectSeam();\n\n\t\t}\n\n\t\tfunction correctSeam() {\n\n\t\t\t// handle case when face straddles the seam, see #3269\n\n\t\t\tfor ( let i = 0; i < uvBuffer.length; i += 6 ) {\n\n\t\t\t\t// uv data of a single face\n\n\t\t\t\tconst x0 = uvBuffer[ i + 0 ];\n\t\t\t\tconst x1 = uvBuffer[ i + 2 ];\n\t\t\t\tconst x2 = uvBuffer[ i + 4 ];\n\n\t\t\t\tconst max = Math.max( x0, x1, x2 );\n\t\t\t\tconst min = Math.min( x0, x1, x2 );\n\n\t\t\t\t// 0.9 is somewhat arbitrary\n\n\t\t\t\tif ( max > 0.9 && min < 0.1 ) {\n\n\t\t\t\t\tif ( x0 < 0.2 ) uvBuffer[ i + 0 ] += 1;\n\t\t\t\t\tif ( x1 < 0.2 ) uvBuffer[ i + 2 ] += 1;\n\t\t\t\t\tif ( x2 < 0.2 ) uvBuffer[ i + 4 ] += 1;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction pushVertex( vertex ) {\n\n\t\t\tvertexBuffer.push( vertex.x, vertex.y, vertex.z );\n\n\t\t}\n\n\t\tfunction getVertexByIndex( index, vertex ) {\n\n\t\t\tconst stride = index * 3;\n\n\t\t\tvertex.x = vertices[ stride + 0 ];\n\t\t\tvertex.y = vertices[ stride + 1 ];\n\t\t\tvertex.z = vertices[ stride + 2 ];\n\n\t\t}\n\n\t\tfunction correctUVs() {\n\n\t\t\tconst a = new Vector3();\n\t\t\tconst b = new Vector3();\n\t\t\tconst c = new Vector3();\n\n\t\t\tconst centroid = new Vector3();\n\n\t\t\tconst uvA = new Vector2();\n\t\t\tconst uvB = new Vector2();\n\t\t\tconst uvC = new Vector2();\n\n\t\t\tfor ( let i = 0, j = 0; i < vertexBuffer.length; i += 9, j += 6 ) {\n\n\t\t\t\ta.set( vertexBuffer[ i + 0 ], vertexBuffer[ i + 1 ], vertexBuffer[ i + 2 ] );\n\t\t\t\tb.set( vertexBuffer[ i + 3 ], vertexBuffer[ i + 4 ], vertexBuffer[ i + 5 ] );\n\t\t\t\tc.set( vertexBuffer[ i + 6 ], vertexBuffer[ i + 7 ], vertexBuffer[ i + 8 ] );\n\n\t\t\t\tuvA.set( uvBuffer[ j + 0 ], uvBuffer[ j + 1 ] );\n\t\t\t\tuvB.set( uvBuffer[ j + 2 ], uvBuffer[ j + 3 ] );\n\t\t\t\tuvC.set( uvBuffer[ j + 4 ], uvBuffer[ j + 5 ] );\n\n\t\t\t\tcentroid.copy( a ).add( b ).add( c ).divideScalar( 3 );\n\n\t\t\t\tconst azi = azimuth( centroid );\n\n\t\t\t\tcorrectUV( uvA, j + 0, a, azi );\n\t\t\t\tcorrectUV( uvB, j + 2, b, azi );\n\t\t\t\tcorrectUV( uvC, j + 4, c, azi );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction correctUV( uv, stride, vector, azimuth ) {\n\n\t\t\tif ( ( azimuth < 0 ) && ( uv.x === 1 ) ) {\n\n\t\t\t\tuvBuffer[ stride ] = uv.x - 1;\n\n\t\t\t}\n\n\t\t\tif ( ( vector.x === 0 ) && ( vector.z === 0 ) ) {\n\n\t\t\t\tuvBuffer[ stride ] = azimuth / 2 / Math.PI + 0.5;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Angle around the Y axis, counter-clockwise when looking from above.\n\n\t\tfunction azimuth( vector ) {\n\n\t\t\treturn Math.atan2( vector.z, - vector.x );\n\n\t\t}\n\n\n\t\t// Angle above the XZ plane.\n\n\t\tfunction inclination( vector ) {\n\n\t\t\treturn Math.atan2( - vector.y, Math.sqrt( ( vector.x * vector.x ) + ( vector.z * vector.z ) ) );\n\n\t\t}\n\n\t}\n\n}\n\n// TetrahedronGeometry\n\nclass TetrahedronGeometry extends Geometry {\n\n\tconstructor( radius, detail ) {\n\n\t\tsuper();\n\t\tthis.type = 'TetrahedronGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t\tthis.fromBufferGeometry( new TetrahedronBufferGeometry( radius, detail ) );\n\t\tthis.mergeVertices();\n\n\t}\n\n}\n\n\n// TetrahedronBufferGeometry\n\nclass TetrahedronBufferGeometry extends PolyhedronBufferGeometry {\n\n\tconstructor( radius, detail ) {\n\n\t\tconst vertices = [\n\t\t\t1, 1, 1, \t- 1, - 1, 1, \t- 1, 1, - 1, \t1, - 1, - 1\n\t\t];\n\n\t\tconst indices = [\n\t\t\t2, 1, 0, \t0, 3, 2,\t1, 3, 0,\t2, 3, 1\n\t\t];\n\n\t\tsuper( vertices, indices, radius, detail );\n\n\t\tthis.type = 'TetrahedronBufferGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t}\n\n}\n\n// OctahedronGeometry\n\nclass OctahedronGeometry extends Geometry {\n\n\tconstructor( radius, detail ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'OctahedronGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t\tthis.fromBufferGeometry( new OctahedronBufferGeometry( radius, detail ) );\n\t\tthis.mergeVertices();\n\n\t}\n\n}\n\n// OctahedronBufferGeometry\n\nclass OctahedronBufferGeometry extends PolyhedronBufferGeometry {\n\n\tconstructor( radius, detail ) {\n\n\t\tconst vertices = [\n\t\t\t1, 0, 0, \t- 1, 0, 0,\t0, 1, 0,\n\t\t\t0, - 1, 0, \t0, 0, 1,\t0, 0, - 1\n\t\t];\n\n\t\tconst indices = [\n\t\t\t0, 2, 4,\t0, 4, 3,\t0, 3, 5,\n\t\t\t0, 5, 2,\t1, 2, 5,\t1, 5, 3,\n\t\t\t1, 3, 4,\t1, 4, 2\n\t\t];\n\n\t\tsuper( vertices, indices, radius, detail );\n\n\t\tthis.type = 'OctahedronBufferGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t}\n\n}\n\n// IcosahedronGeometry\n\nclass IcosahedronGeometry extends Geometry {\n\n\tconstructor( radius, detail ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'IcosahedronGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t\tthis.fromBufferGeometry( new IcosahedronBufferGeometry( radius, detail ) );\n\t\tthis.mergeVertices();\n\n\t}\n\n}\n\n// IcosahedronBufferGeometry\n\nclass IcosahedronBufferGeometry extends PolyhedronBufferGeometry {\n\n\tconstructor( radius, detail ) {\n\n\t\tconst t = ( 1 + Math.sqrt( 5 ) ) / 2;\n\n\t\tconst vertices = [\n\t\t\t- 1, t, 0, \t1, t, 0, \t- 1, - t, 0, \t1, - t, 0,\n\t\t\t0, - 1, t, \t0, 1, t,\t0, - 1, - t, \t0, 1, - t,\n\t\t\tt, 0, - 1, \tt, 0, 1, \t- t, 0, - 1, \t- t, 0, 1\n\t\t];\n\n\t\tconst indices = [\n\t\t\t0, 11, 5, \t0, 5, 1, \t0, 1, 7, \t0, 7, 10, \t0, 10, 11,\n\t\t\t1, 5, 9, \t5, 11, 4,\t11, 10, 2,\t10, 7, 6,\t7, 1, 8,\n\t\t\t3, 9, 4, \t3, 4, 2,\t3, 2, 6,\t3, 6, 8,\t3, 8, 9,\n\t\t\t4, 9, 5, \t2, 4, 11,\t6, 2, 10,\t8, 6, 7,\t9, 8, 1\n\t\t];\n\n\t\tsuper( vertices, indices, radius, detail );\n\n\t\tthis.type = 'IcosahedronBufferGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t}\n\n}\n\n// DodecahedronGeometry\n\nclass DodecahedronGeometry extends Geometry {\n\n\tconstructor( radius, detail ) {\n\n\t\tsuper();\n\t\tthis.type = 'DodecahedronGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t\tthis.fromBufferGeometry( new DodecahedronBufferGeometry( radius, detail ) );\n\t\tthis.mergeVertices();\n\n\t}\n\n}\n\n// DodecahedronBufferGeometry\n\nclass DodecahedronBufferGeometry extends PolyhedronBufferGeometry {\n\n\tconstructor( radius, detail ) {\n\n\t\tconst t = ( 1 + Math.sqrt( 5 ) ) / 2;\n\t\tconst r = 1 / t;\n\n\t\tconst vertices = [\n\n\t\t\t// (±1, ±1, ±1)\n\t\t\t- 1, - 1, - 1,\t- 1, - 1, 1,\n\t\t\t- 1, 1, - 1, - 1, 1, 1,\n\t\t\t1, - 1, - 1, 1, - 1, 1,\n\t\t\t1, 1, - 1, 1, 1, 1,\n\n\t\t\t// (0, ±1/φ, ±φ)\n\t\t\t0, - r, - t, 0, - r, t,\n\t\t\t0, r, - t, 0, r, t,\n\n\t\t\t// (±1/φ, ±φ, 0)\n\t\t\t- r, - t, 0, - r, t, 0,\n\t\t\tr, - t, 0, r, t, 0,\n\n\t\t\t// (±φ, 0, ±1/φ)\n\t\t\t- t, 0, - r, t, 0, - r,\n\t\t\t- t, 0, r, t, 0, r\n\t\t];\n\n\t\tconst indices = [\n\t\t\t3, 11, 7, \t3, 7, 15, \t3, 15, 13,\n\t\t\t7, 19, 17, \t7, 17, 6, \t7, 6, 15,\n\t\t\t17, 4, 8, \t17, 8, 10, \t17, 10, 6,\n\t\t\t8, 0, 16, \t8, 16, 2, \t8, 2, 10,\n\t\t\t0, 12, 1, \t0, 1, 18, \t0, 18, 16,\n\t\t\t6, 10, 2, \t6, 2, 13, \t6, 13, 15,\n\t\t\t2, 16, 18, \t2, 18, 3, \t2, 3, 13,\n\t\t\t18, 1, 9, \t18, 9, 11, \t18, 11, 3,\n\t\t\t4, 14, 12, \t4, 12, 0, \t4, 0, 8,\n\t\t\t11, 9, 5, \t11, 5, 19, \t11, 19, 7,\n\t\t\t19, 5, 14, \t19, 14, 4, \t19, 4, 17,\n\t\t\t1, 12, 14, \t1, 14, 5, \t1, 5, 9\n\t\t];\n\n\t\tsuper( vertices, indices, radius, detail );\n\n\t\tthis.type = 'DodecahedronBufferGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t}\n\n}\n\n// TubeGeometry\n\nclass TubeGeometry extends Geometry {\n\n\tconstructor( path, tubularSegments, radius, radialSegments, closed, taper ) {\n\n\t\tsuper();\n\t\tthis.type = 'TubeGeometry';\n\n\t\tthis.parameters = {\n\t\t\tpath: path,\n\t\t\ttubularSegments: tubularSegments,\n\t\t\tradius: radius,\n\t\t\tradialSegments: radialSegments,\n\t\t\tclosed: closed\n\t\t};\n\n\t\tif ( taper !== undefined ) console.warn( 'THREE.TubeGeometry: taper has been removed.' );\n\n\t\tconst bufferGeometry = new TubeBufferGeometry( path, tubularSegments, radius, radialSegments, closed );\n\n\t\t// expose internals\n\n\t\tthis.tangents = bufferGeometry.tangents;\n\t\tthis.normals = bufferGeometry.normals;\n\t\tthis.binormals = bufferGeometry.binormals;\n\n\t\t// create geometry\n\n\t\tthis.fromBufferGeometry( bufferGeometry );\n\t\tthis.mergeVertices();\n\n\t}\n\n}\n\n\n// TubeBufferGeometry\n\nclass TubeBufferGeometry extends BufferGeometry {\n\n\tconstructor( path, tubularSegments, radius, radialSegments, closed ) {\n\n\t\tsuper();\n\t\tthis.type = 'TubeBufferGeometry';\n\n\t\tthis.parameters = {\n\t\t\tpath: path,\n\t\t\ttubularSegments: tubularSegments,\n\t\t\tradius: radius,\n\t\t\tradialSegments: radialSegments,\n\t\t\tclosed: closed\n\t\t};\n\n\t\ttubularSegments = tubularSegments || 64;\n\t\tradius = radius || 1;\n\t\tradialSegments = radialSegments || 8;\n\t\tclosed = closed || false;\n\n\t\tconst frames = path.computeFrenetFrames( tubularSegments, closed );\n\n\t\t// expose internals\n\n\t\tthis.tangents = frames.tangents;\n\t\tthis.normals = frames.normals;\n\t\tthis.binormals = frames.binormals;\n\n\t\t// helper variables\n\n\t\tconst vertex = new Vector3();\n\t\tconst normal = new Vector3();\n\t\tconst uv = new Vector2();\n\t\tlet P = new Vector3();\n\n\t\t// buffer\n\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\t\tconst indices = [];\n\n\t\t// create buffer data\n\n\t\tgenerateBufferData();\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t\t// functions\n\n\t\tfunction generateBufferData() {\n\n\t\t\tfor ( let i = 0; i < tubularSegments; i ++ ) {\n\n\t\t\t\tgenerateSegment( i );\n\n\t\t\t}\n\n\t\t\t// if the geometry is not closed, generate the last row of vertices and normals\n\t\t\t// at the regular position on the given path\n\t\t\t//\n\t\t\t// if the geometry is closed, duplicate the first row of vertices and normals (uvs will differ)\n\n\t\t\tgenerateSegment( ( closed === false ) ? tubularSegments : 0 );\n\n\t\t\t// uvs are generated in a separate function.\n\t\t\t// this makes it easy compute correct values for closed geometries\n\n\t\t\tgenerateUVs();\n\n\t\t\t// finally create faces\n\n\t\t\tgenerateIndices();\n\n\t\t}\n\n\t\tfunction generateSegment( i ) {\n\n\t\t\t// we use getPointAt to sample evenly distributed points from the given path\n\n\t\t\tP = path.getPointAt( i / tubularSegments, P );\n\n\t\t\t// retrieve corresponding normal and binormal\n\n\t\t\tconst N = frames.normals[ i ];\n\t\t\tconst B = frames.binormals[ i ];\n\n\t\t\t// generate normals and vertices for the current segment\n\n\t\t\tfor ( let j = 0; j <= radialSegments; j ++ ) {\n\n\t\t\t\tconst v = j / radialSegments * Math.PI * 2;\n\n\t\t\t\tconst sin = Math.sin( v );\n\t\t\t\tconst cos = - Math.cos( v );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormal.x = ( cos * N.x + sin * B.x );\n\t\t\t\tnormal.y = ( cos * N.y + sin * B.y );\n\t\t\t\tnormal.z = ( cos * N.z + sin * B.z );\n\t\t\t\tnormal.normalize();\n\n\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = P.x + radius * normal.x;\n\t\t\t\tvertex.y = P.y + radius * normal.y;\n\t\t\t\tvertex.z = P.z + radius * normal.z;\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction generateIndices() {\n\n\t\t\tfor ( let j = 1; j <= tubularSegments; j ++ ) {\n\n\t\t\t\tfor ( let i = 1; i <= radialSegments; i ++ ) {\n\n\t\t\t\t\tconst a = ( radialSegments + 1 ) * ( j - 1 ) + ( i - 1 );\n\t\t\t\t\tconst b = ( radialSegments + 1 ) * j + ( i - 1 );\n\t\t\t\t\tconst c = ( radialSegments + 1 ) * j + i;\n\t\t\t\t\tconst d = ( radialSegments + 1 ) * ( j - 1 ) + i;\n\n\t\t\t\t\t// faces\n\n\t\t\t\t\tindices.push( a, b, d );\n\t\t\t\t\tindices.push( b, c, d );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction generateUVs() {\n\n\t\t\tfor ( let i = 0; i <= tubularSegments; i ++ ) {\n\n\t\t\t\tfor ( let j = 0; j <= radialSegments; j ++ ) {\n\n\t\t\t\t\tuv.x = i / tubularSegments;\n\t\t\t\t\tuv.y = j / radialSegments;\n\n\t\t\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\ttoJSON() {\n\n\t\tconst data = BufferGeometry.prototype.toJSON.call( this );\n\n\t\tdata.path = this.parameters.path.toJSON();\n\n\t\treturn data;\n\n\t}\n\n}\n\n// TorusKnotGeometry\n\nclass TorusKnotGeometry extends Geometry {\n\n\tconstructor( radius, tube, tubularSegments, radialSegments, p, q, heightScale ) {\n\n\t\tsuper();\n\t\tthis.type = 'TorusKnotGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\ttube: tube,\n\t\t\ttubularSegments: tubularSegments,\n\t\t\tradialSegments: radialSegments,\n\t\t\tp: p,\n\t\t\tq: q\n\t\t};\n\n\t\tif ( heightScale !== undefined ) console.warn( 'THREE.TorusKnotGeometry: heightScale has been deprecated. Use .scale( x, y, z ) instead.' );\n\n\t\tthis.fromBufferGeometry( new TorusKnotBufferGeometry( radius, tube, tubularSegments, radialSegments, p, q ) );\n\t\tthis.mergeVertices();\n\n\t}\n\n}\n\n\n// TorusKnotBufferGeometry\n\nclass TorusKnotBufferGeometry extends BufferGeometry {\n\n\tconstructor( radius, tube, tubularSegments, radialSegments, p, q ) {\n\n\t\tsuper();\n\t\tthis.type = 'TorusKnotBufferGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\ttube: tube,\n\t\t\ttubularSegments: tubularSegments,\n\t\t\tradialSegments: radialSegments,\n\t\t\tp: p,\n\t\t\tq: q\n\t\t};\n\n\t\tradius = radius || 1;\n\t\ttube = tube || 0.4;\n\t\ttubularSegments = Math.floor( tubularSegments ) || 64;\n\t\tradialSegments = Math.floor( radialSegments ) || 8;\n\t\tp = p || 2;\n\t\tq = q || 3;\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tconst vertex = new Vector3();\n\t\tconst normal = new Vector3();\n\n\t\tconst P1 = new Vector3();\n\t\tconst P2 = new Vector3();\n\n\t\tconst B = new Vector3();\n\t\tconst T = new Vector3();\n\t\tconst N = new Vector3();\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( let i = 0; i <= tubularSegments; ++ i ) {\n\n\t\t\t// the radian \"u\" is used to calculate the position on the torus curve of the current tubular segement\n\n\t\t\tconst u = i / tubularSegments * p * Math.PI * 2;\n\n\t\t\t// now we calculate two points. P1 is our current position on the curve, P2 is a little farther ahead.\n\t\t\t// these points are used to create a special \"coordinate space\", which is necessary to calculate the correct vertex positions\n\n\t\t\tcalculatePositionOnCurve( u, p, q, radius, P1 );\n\t\t\tcalculatePositionOnCurve( u + 0.01, p, q, radius, P2 );\n\n\t\t\t// calculate orthonormal basis\n\n\t\t\tT.subVectors( P2, P1 );\n\t\t\tN.addVectors( P2, P1 );\n\t\t\tB.crossVectors( T, N );\n\t\t\tN.crossVectors( B, T );\n\n\t\t\t// normalize B, N. T can be ignored, we don't use it\n\n\t\t\tB.normalize();\n\t\t\tN.normalize();\n\n\t\t\tfor ( let j = 0; j <= radialSegments; ++ j ) {\n\n\t\t\t\t// now calculate the vertices. they are nothing more than an extrusion of the torus curve.\n\t\t\t\t// because we extrude a shape in the xy-plane, there is no need to calculate a z-value.\n\n\t\t\t\tconst v = j / radialSegments * Math.PI * 2;\n\t\t\t\tconst cx = - tube * Math.cos( v );\n\t\t\t\tconst cy = tube * Math.sin( v );\n\n\t\t\t\t// now calculate the final vertex position.\n\t\t\t\t// first we orient the extrusion with our basis vectos, then we add it to the current position on the curve\n\n\t\t\t\tvertex.x = P1.x + ( cx * N.x + cy * B.x );\n\t\t\t\tvertex.y = P1.y + ( cx * N.y + cy * B.y );\n\t\t\t\tvertex.z = P1.z + ( cx * N.z + cy * B.z );\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal (P1 is always the center/origin of the extrusion, thus we can use it to calculate the normal)\n\n\t\t\t\tnormal.subVectors( vertex, P1 ).normalize();\n\n\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t// uv\n\n\t\t\t\tuvs.push( i / tubularSegments );\n\t\t\t\tuvs.push( j / radialSegments );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// generate indices\n\n\t\tfor ( let j = 1; j <= tubularSegments; j ++ ) {\n\n\t\t\tfor ( let i = 1; i <= radialSegments; i ++ ) {\n\n\t\t\t\t// indices\n\n\t\t\t\tconst a = ( radialSegments + 1 ) * ( j - 1 ) + ( i - 1 );\n\t\t\t\tconst b = ( radialSegments + 1 ) * j + ( i - 1 );\n\t\t\t\tconst c = ( radialSegments + 1 ) * j + i;\n\t\t\t\tconst d = ( radialSegments + 1 ) * ( j - 1 ) + i;\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t\t// this function calculates the current position on the torus curve\n\n\t\tfunction calculatePositionOnCurve( u, p, q, radius, position ) {\n\n\t\t\tconst cu = Math.cos( u );\n\t\t\tconst su = Math.sin( u );\n\t\t\tconst quOverP = q / p * u;\n\t\t\tconst cs = Math.cos( quOverP );\n\n\t\t\tposition.x = radius * ( 2 + cs ) * 0.5 * cu;\n\t\t\tposition.y = radius * ( 2 + cs ) * su * 0.5;\n\t\t\tposition.z = radius * Math.sin( quOverP ) * 0.5;\n\n\t\t}\n\n\t}\n\n}\n\n// TorusGeometry\n\nclass TorusGeometry extends Geometry {\n\n\tconstructor( radius, tube, radialSegments, tubularSegments, arc ) {\n\n\t\tsuper();\n\t\tthis.type = 'TorusGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\ttube: tube,\n\t\t\tradialSegments: radialSegments,\n\t\t\ttubularSegments: tubularSegments,\n\t\t\tarc: arc\n\t\t};\n\n\t\tthis.fromBufferGeometry( new TorusBufferGeometry( radius, tube, radialSegments, tubularSegments, arc ) );\n\t\tthis.mergeVertices();\n\n\t}\n\n}\n\n\n// TorusBufferGeometry\n\nclass TorusBufferGeometry extends BufferGeometry {\n\n\tconstructor( radius, tube, radialSegments, tubularSegments, arc ) {\n\n\t\tsuper();\n\t\tthis.type = 'TorusBufferGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\ttube: tube,\n\t\t\tradialSegments: radialSegments,\n\t\t\ttubularSegments: tubularSegments,\n\t\t\tarc: arc\n\t\t};\n\n\t\tradius = radius || 1;\n\t\ttube = tube || 0.4;\n\t\tradialSegments = Math.floor( radialSegments ) || 8;\n\t\ttubularSegments = Math.floor( tubularSegments ) || 6;\n\t\tarc = arc || Math.PI * 2;\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tconst center = new Vector3();\n\t\tconst vertex = new Vector3();\n\t\tconst normal = new Vector3();\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( let j = 0; j <= radialSegments; j ++ ) {\n\n\t\t\tfor ( let i = 0; i <= tubularSegments; i ++ ) {\n\n\t\t\t\tconst u = i / tubularSegments * arc;\n\t\t\t\tconst v = j / radialSegments * Math.PI * 2;\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = ( radius + tube * Math.cos( v ) ) * Math.cos( u );\n\t\t\t\tvertex.y = ( radius + tube * Math.cos( v ) ) * Math.sin( u );\n\t\t\t\tvertex.z = tube * Math.sin( v );\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal\n\n\t\t\t\tcenter.x = radius * Math.cos( u );\n\t\t\t\tcenter.y = radius * Math.sin( u );\n\t\t\t\tnormal.subVectors( vertex, center ).normalize();\n\n\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t// uv\n\n\t\t\t\tuvs.push( i / tubularSegments );\n\t\t\t\tuvs.push( j / radialSegments );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// generate indices\n\n\t\tfor ( let j = 1; j <= radialSegments; j ++ ) {\n\n\t\t\tfor ( let i = 1; i <= tubularSegments; i ++ ) {\n\n\t\t\t\t// indices\n\n\t\t\t\tconst a = ( tubularSegments + 1 ) * j + i - 1;\n\t\t\t\tconst b = ( tubularSegments + 1 ) * ( j - 1 ) + i - 1;\n\t\t\t\tconst c = ( tubularSegments + 1 ) * ( j - 1 ) + i;\n\t\t\t\tconst d = ( tubularSegments + 1 ) * j + i;\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t}\n\n}\n\n/**\n * Port from https://github.com/mapbox/earcut (v2.2.2)\n */\n\nconst Earcut = {\n\n\ttriangulate: function ( data, holeIndices, dim ) {\n\n\t\tdim = dim || 2;\n\n\t\tconst hasHoles = holeIndices && holeIndices.length;\n\t\tconst outerLen = hasHoles ? holeIndices[ 0 ] * dim : data.length;\n\t\tlet outerNode = linkedList( data, 0, outerLen, dim, true );\n\t\tconst triangles = [];\n\n\t\tif ( ! outerNode || outerNode.next === outerNode.prev ) return triangles;\n\n\t\tlet minX, minY, maxX, maxY, x, y, invSize;\n\n\t\tif ( hasHoles ) outerNode = eliminateHoles( data, holeIndices, outerNode, dim );\n\n\t\t// if the shape is not too simple, we'll use z-order curve hash later; calculate polygon bbox\n\t\tif ( data.length > 80 * dim ) {\n\n\t\t\tminX = maxX = data[ 0 ];\n\t\t\tminY = maxY = data[ 1 ];\n\n\t\t\tfor ( let i = dim; i < outerLen; i += dim ) {\n\n\t\t\t\tx = data[ i ];\n\t\t\t\ty = data[ i + 1 ];\n\t\t\t\tif ( x < minX ) minX = x;\n\t\t\t\tif ( y < minY ) minY = y;\n\t\t\t\tif ( x > maxX ) maxX = x;\n\t\t\t\tif ( y > maxY ) maxY = y;\n\n\t\t\t}\n\n\t\t\t// minX, minY and invSize are later used to transform coords into integers for z-order calculation\n\t\t\tinvSize = Math.max( maxX - minX, maxY - minY );\n\t\t\tinvSize = invSize !== 0 ? 1 / invSize : 0;\n\n\t\t}\n\n\t\tearcutLinked( outerNode, triangles, dim, minX, minY, invSize );\n\n\t\treturn triangles;\n\n\t}\n\n};\n\n// create a circular doubly linked list from polygon points in the specified winding order\nfunction linkedList( data, start, end, dim, clockwise ) {\n\n\tlet i, last;\n\n\tif ( clockwise === ( signedArea( data, start, end, dim ) > 0 ) ) {\n\n\t\tfor ( i = start; i < end; i += dim ) last = insertNode( i, data[ i ], data[ i + 1 ], last );\n\n\t} else {\n\n\t\tfor ( i = end - dim; i >= start; i -= dim ) last = insertNode( i, data[ i ], data[ i + 1 ], last );\n\n\t}\n\n\tif ( last && equals( last, last.next ) ) {\n\n\t\tremoveNode( last );\n\t\tlast = last.next;\n\n\t}\n\n\treturn last;\n\n}\n\n// eliminate colinear or duplicate points\nfunction filterPoints( start, end ) {\n\n\tif ( ! start ) return start;\n\tif ( ! end ) end = start;\n\n\tlet p = start,\n\t\tagain;\n\tdo {\n\n\t\tagain = false;\n\n\t\tif ( ! p.steiner && ( equals( p, p.next ) || area( p.prev, p, p.next ) === 0 ) ) {\n\n\t\t\tremoveNode( p );\n\t\t\tp = end = p.prev;\n\t\t\tif ( p === p.next ) break;\n\t\t\tagain = true;\n\n\t\t} else {\n\n\t\t\tp = p.next;\n\n\t\t}\n\n\t} while ( again || p !== end );\n\n\treturn end;\n\n}\n\n// main ear slicing loop which triangulates a polygon (given as a linked list)\nfunction earcutLinked( ear, triangles, dim, minX, minY, invSize, pass ) {\n\n\tif ( ! ear ) return;\n\n\t// interlink polygon nodes in z-order\n\tif ( ! pass && invSize ) indexCurve( ear, minX, minY, invSize );\n\n\tlet stop = ear,\n\t\tprev, next;\n\n\t// iterate through ears, slicing them one by one\n\twhile ( ear.prev !== ear.next ) {\n\n\t\tprev = ear.prev;\n\t\tnext = ear.next;\n\n\t\tif ( invSize ? isEarHashed( ear, minX, minY, invSize ) : isEar( ear ) ) {\n\n\t\t\t// cut off the triangle\n\t\t\ttriangles.push( prev.i / dim );\n\t\t\ttriangles.push( ear.i / dim );\n\t\t\ttriangles.push( next.i / dim );\n\n\t\t\tremoveNode( ear );\n\n\t\t\t// skipping the next vertex leads to less sliver triangles\n\t\t\tear = next.next;\n\t\t\tstop = next.next;\n\n\t\t\tcontinue;\n\n\t\t}\n\n\t\tear = next;\n\n\t\t// if we looped through the whole remaining polygon and can't find any more ears\n\t\tif ( ear === stop ) {\n\n\t\t\t// try filtering points and slicing again\n\t\t\tif ( ! pass ) {\n\n\t\t\t\tearcutLinked( filterPoints( ear ), triangles, dim, minX, minY, invSize, 1 );\n\n\t\t\t\t// if this didn't work, try curing all small self-intersections locally\n\n\t\t\t} else if ( pass === 1 ) {\n\n\t\t\t\tear = cureLocalIntersections( filterPoints( ear ), triangles, dim );\n\t\t\t\tearcutLinked( ear, triangles, dim, minX, minY, invSize, 2 );\n\n\t\t\t\t// as a last resort, try splitting the remaining polygon into two\n\n\t\t\t} else if ( pass === 2 ) {\n\n\t\t\t\tsplitEarcut( ear, triangles, dim, minX, minY, invSize );\n\n\t\t\t}\n\n\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n}\n\n// check whether a polygon node forms a valid ear with adjacent nodes\nfunction isEar( ear ) {\n\n\tconst a = ear.prev,\n\t\tb = ear,\n\t\tc = ear.next;\n\n\tif ( area( a, b, c ) >= 0 ) return false; // reflex, can't be an ear\n\n\t// now make sure we don't have other points inside the potential ear\n\tlet p = ear.next.next;\n\n\twhile ( p !== ear.prev ) {\n\n\t\tif ( pointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y ) &&\n\t\t\tarea( p.prev, p, p.next ) >= 0 ) return false;\n\t\tp = p.next;\n\n\t}\n\n\treturn true;\n\n}\n\nfunction isEarHashed( ear, minX, minY, invSize ) {\n\n\tconst a = ear.prev,\n\t\tb = ear,\n\t\tc = ear.next;\n\n\tif ( area( a, b, c ) >= 0 ) return false; // reflex, can't be an ear\n\n\t// triangle bbox; min & max are calculated like this for speed\n\tconst minTX = a.x < b.x ? ( a.x < c.x ? a.x : c.x ) : ( b.x < c.x ? b.x : c.x ),\n\t\tminTY = a.y < b.y ? ( a.y < c.y ? a.y : c.y ) : ( b.y < c.y ? b.y : c.y ),\n\t\tmaxTX = a.x > b.x ? ( a.x > c.x ? a.x : c.x ) : ( b.x > c.x ? b.x : c.x ),\n\t\tmaxTY = a.y > b.y ? ( a.y > c.y ? a.y : c.y ) : ( b.y > c.y ? b.y : c.y );\n\n\t// z-order range for the current triangle bbox;\n\tconst minZ = zOrder( minTX, minTY, minX, minY, invSize ),\n\t\tmaxZ = zOrder( maxTX, maxTY, minX, minY, invSize );\n\n\tlet p = ear.prevZ,\n\t\tn = ear.nextZ;\n\n\t// look for points inside the triangle in both directions\n\twhile ( p && p.z >= minZ && n && n.z <= maxZ ) {\n\n\t\tif ( p !== ear.prev && p !== ear.next &&\n\t\t\tpointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y ) &&\n\t\t\tarea( p.prev, p, p.next ) >= 0 ) return false;\n\t\tp = p.prevZ;\n\n\t\tif ( n !== ear.prev && n !== ear.next &&\n\t\t\tpointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, n.x, n.y ) &&\n\t\t\tarea( n.prev, n, n.next ) >= 0 ) return false;\n\t\tn = n.nextZ;\n\n\t}\n\n\t// look for remaining points in decreasing z-order\n\twhile ( p && p.z >= minZ ) {\n\n\t\tif ( p !== ear.prev && p !== ear.next &&\n\t\t\tpointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y ) &&\n\t\t\tarea( p.prev, p, p.next ) >= 0 ) return false;\n\t\tp = p.prevZ;\n\n\t}\n\n\t// look for remaining points in increasing z-order\n\twhile ( n && n.z <= maxZ ) {\n\n\t\tif ( n !== ear.prev && n !== ear.next &&\n\t\t\tpointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, n.x, n.y ) &&\n\t\t\tarea( n.prev, n, n.next ) >= 0 ) return false;\n\t\tn = n.nextZ;\n\n\t}\n\n\treturn true;\n\n}\n\n// go through all polygon nodes and cure small local self-intersections\nfunction cureLocalIntersections( start, triangles, dim ) {\n\n\tlet p = start;\n\tdo {\n\n\t\tconst a = p.prev,\n\t\t\tb = p.next.next;\n\n\t\tif ( ! equals( a, b ) && intersects( a, p, p.next, b ) && locallyInside( a, b ) && locallyInside( b, a ) ) {\n\n\t\t\ttriangles.push( a.i / dim );\n\t\t\ttriangles.push( p.i / dim );\n\t\t\ttriangles.push( b.i / dim );\n\n\t\t\t// remove two nodes involved\n\t\t\tremoveNode( p );\n\t\t\tremoveNode( p.next );\n\n\t\t\tp = start = b;\n\n\t\t}\n\n\t\tp = p.next;\n\n\t} while ( p !== start );\n\n\treturn filterPoints( p );\n\n}\n\n// try splitting polygon into two and triangulate them independently\nfunction splitEarcut( start, triangles, dim, minX, minY, invSize ) {\n\n\t// look for a valid diagonal that divides the polygon into two\n\tlet a = start;\n\tdo {\n\n\t\tlet b = a.next.next;\n\t\twhile ( b !== a.prev ) {\n\n\t\t\tif ( a.i !== b.i && isValidDiagonal( a, b ) ) {\n\n\t\t\t\t// split the polygon in two by the diagonal\n\t\t\t\tlet c = splitPolygon( a, b );\n\n\t\t\t\t// filter colinear points around the cuts\n\t\t\t\ta = filterPoints( a, a.next );\n\t\t\t\tc = filterPoints( c, c.next );\n\n\t\t\t\t// run earcut on each half\n\t\t\t\tearcutLinked( a, triangles, dim, minX, minY, invSize );\n\t\t\t\tearcutLinked( c, triangles, dim, minX, minY, invSize );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tb = b.next;\n\n\t\t}\n\n\t\ta = a.next;\n\n\t} while ( a !== start );\n\n}\n\n// link every hole into the outer loop, producing a single-ring polygon without holes\nfunction eliminateHoles( data, holeIndices, outerNode, dim ) {\n\n\tconst queue = [];\n\tlet i, len, start, end, list;\n\n\tfor ( i = 0, len = holeIndices.length; i < len; i ++ ) {\n\n\t\tstart = holeIndices[ i ] * dim;\n\t\tend = i < len - 1 ? holeIndices[ i + 1 ] * dim : data.length;\n\t\tlist = linkedList( data, start, end, dim, false );\n\t\tif ( list === list.next ) list.steiner = true;\n\t\tqueue.push( getLeftmost( list ) );\n\n\t}\n\n\tqueue.sort( compareX );\n\n\t// process holes from left to right\n\tfor ( i = 0; i < queue.length; i ++ ) {\n\n\t\teliminateHole( queue[ i ], outerNode );\n\t\touterNode = filterPoints( outerNode, outerNode.next );\n\n\t}\n\n\treturn outerNode;\n\n}\n\nfunction compareX( a, b ) {\n\n\treturn a.x - b.x;\n\n}\n\n// find a bridge between vertices that connects hole with an outer ring and and link it\nfunction eliminateHole( hole, outerNode ) {\n\n\touterNode = findHoleBridge( hole, outerNode );\n\tif ( outerNode ) {\n\n\t\tconst b = splitPolygon( outerNode, hole );\n\n\t\t// filter collinear points around the cuts\n\t\tfilterPoints( outerNode, outerNode.next );\n\t\tfilterPoints( b, b.next );\n\n\t}\n\n}\n\n// David Eberly's algorithm for finding a bridge between hole and outer polygon\nfunction findHoleBridge( hole, outerNode ) {\n\n\tlet p = outerNode;\n\tconst hx = hole.x;\n\tconst hy = hole.y;\n\tlet qx = - Infinity, m;\n\n\t// find a segment intersected by a ray from the hole's leftmost point to the left;\n\t// segment's endpoint with lesser x will be potential connection point\n\tdo {\n\n\t\tif ( hy <= p.y && hy >= p.next.y && p.next.y !== p.y ) {\n\n\t\t\tconst x = p.x + ( hy - p.y ) * ( p.next.x - p.x ) / ( p.next.y - p.y );\n\t\t\tif ( x <= hx && x > qx ) {\n\n\t\t\t\tqx = x;\n\t\t\t\tif ( x === hx ) {\n\n\t\t\t\t\tif ( hy === p.y ) return p;\n\t\t\t\t\tif ( hy === p.next.y ) return p.next;\n\n\t\t\t\t}\n\n\t\t\t\tm = p.x < p.next.x ? p : p.next;\n\n\t\t\t}\n\n\t\t}\n\n\t\tp = p.next;\n\n\t} while ( p !== outerNode );\n\n\tif ( ! m ) return null;\n\n\tif ( hx === qx ) return m; // hole touches outer segment; pick leftmost endpoint\n\n\t// look for points inside the triangle of hole point, segment intersection and endpoint;\n\t// if there are no points found, we have a valid connection;\n\t// otherwise choose the point of the minimum angle with the ray as connection point\n\n\tconst stop = m,\n\t\tmx = m.x,\n\t\tmy = m.y;\n\tlet tanMin = Infinity, tan;\n\n\tp = m;\n\n\tdo {\n\n\t\tif ( hx >= p.x && p.x >= mx && hx !== p.x &&\n\t\t\t\tpointInTriangle( hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y ) ) {\n\n\t\t\ttan = Math.abs( hy - p.y ) / ( hx - p.x ); // tangential\n\n\t\t\tif ( locallyInside( p, hole ) && ( tan < tanMin || ( tan === tanMin && ( p.x > m.x || ( p.x === m.x && sectorContainsSector( m, p ) ) ) ) ) ) {\n\n\t\t\t\tm = p;\n\t\t\t\ttanMin = tan;\n\n\t\t\t}\n\n\t\t}\n\n\t\tp = p.next;\n\n\t} while ( p !== stop );\n\n\treturn m;\n\n}\n\n// whether sector in vertex m contains sector in vertex p in the same coordinates\nfunction sectorContainsSector( m, p ) {\n\n\treturn area( m.prev, m, p.prev ) < 0 && area( p.next, m, m.next ) < 0;\n\n}\n\n// interlink polygon nodes in z-order\nfunction indexCurve( start, minX, minY, invSize ) {\n\n\tlet p = start;\n\tdo {\n\n\t\tif ( p.z === null ) p.z = zOrder( p.x, p.y, minX, minY, invSize );\n\t\tp.prevZ = p.prev;\n\t\tp.nextZ = p.next;\n\t\tp = p.next;\n\n\t} while ( p !== start );\n\n\tp.prevZ.nextZ = null;\n\tp.prevZ = null;\n\n\tsortLinked( p );\n\n}\n\n// Simon Tatham's linked list merge sort algorithm\n// http://www.chiark.greenend.org.uk/~sgtatham/algorithms/listsort.html\nfunction sortLinked( list ) {\n\n\tlet i, p, q, e, tail, numMerges, pSize, qSize,\n\t\tinSize = 1;\n\n\tdo {\n\n\t\tp = list;\n\t\tlist = null;\n\t\ttail = null;\n\t\tnumMerges = 0;\n\n\t\twhile ( p ) {\n\n\t\t\tnumMerges ++;\n\t\t\tq = p;\n\t\t\tpSize = 0;\n\t\t\tfor ( i = 0; i < inSize; i ++ ) {\n\n\t\t\t\tpSize ++;\n\t\t\t\tq = q.nextZ;\n\t\t\t\tif ( ! q ) break;\n\n\t\t\t}\n\n\t\t\tqSize = inSize;\n\n\t\t\twhile ( pSize > 0 || ( qSize > 0 && q ) ) {\n\n\t\t\t\tif ( pSize !== 0 && ( qSize === 0 || ! q || p.z <= q.z ) ) {\n\n\t\t\t\t\te = p;\n\t\t\t\t\tp = p.nextZ;\n\t\t\t\t\tpSize --;\n\n\t\t\t\t} else {\n\n\t\t\t\t\te = q;\n\t\t\t\t\tq = q.nextZ;\n\t\t\t\t\tqSize --;\n\n\t\t\t\t}\n\n\t\t\t\tif ( tail ) tail.nextZ = e;\n\t\t\t\telse list = e;\n\n\t\t\t\te.prevZ = tail;\n\t\t\t\ttail = e;\n\n\t\t\t}\n\n\t\t\tp = q;\n\n\t\t}\n\n\t\ttail.nextZ = null;\n\t\tinSize *= 2;\n\n\t} while ( numMerges > 1 );\n\n\treturn list;\n\n}\n\n// z-order of a point given coords and inverse of the longer side of data bbox\nfunction zOrder( x, y, minX, minY, invSize ) {\n\n\t// coords are transformed into non-negative 15-bit integer range\n\tx = 32767 * ( x - minX ) * invSize;\n\ty = 32767 * ( y - minY ) * invSize;\n\n\tx = ( x | ( x << 8 ) ) & 0x00FF00FF;\n\tx = ( x | ( x << 4 ) ) & 0x0F0F0F0F;\n\tx = ( x | ( x << 2 ) ) & 0x33333333;\n\tx = ( x | ( x << 1 ) ) & 0x55555555;\n\n\ty = ( y | ( y << 8 ) ) & 0x00FF00FF;\n\ty = ( y | ( y << 4 ) ) & 0x0F0F0F0F;\n\ty = ( y | ( y << 2 ) ) & 0x33333333;\n\ty = ( y | ( y << 1 ) ) & 0x55555555;\n\n\treturn x | ( y << 1 );\n\n}\n\n// find the leftmost node of a polygon ring\nfunction getLeftmost( start ) {\n\n\tlet p = start,\n\t\tleftmost = start;\n\tdo {\n\n\t\tif ( p.x < leftmost.x || ( p.x === leftmost.x && p.y < leftmost.y ) ) leftmost = p;\n\t\tp = p.next;\n\n\t} while ( p !== start );\n\n\treturn leftmost;\n\n}\n\n// check if a point lies within a convex triangle\nfunction pointInTriangle( ax, ay, bx, by, cx, cy, px, py ) {\n\n\treturn ( cx - px ) * ( ay - py ) - ( ax - px ) * ( cy - py ) >= 0 &&\n\t\t\t( ax - px ) * ( by - py ) - ( bx - px ) * ( ay - py ) >= 0 &&\n\t\t\t( bx - px ) * ( cy - py ) - ( cx - px ) * ( by - py ) >= 0;\n\n}\n\n// check if a diagonal between two polygon nodes is valid (lies in polygon interior)\nfunction isValidDiagonal( a, b ) {\n\n\treturn a.next.i !== b.i && a.prev.i !== b.i && ! intersectsPolygon( a, b ) && // dones't intersect other edges\n\t\t( locallyInside( a, b ) && locallyInside( b, a ) && middleInside( a, b ) && // locally visible\n\t\t( area( a.prev, a, b.prev ) || area( a, b.prev, b ) ) || // does not create opposite-facing sectors\n\t\tequals( a, b ) && area( a.prev, a, a.next ) > 0 && area( b.prev, b, b.next ) > 0 ); // special zero-length case\n\n}\n\n// signed area of a triangle\nfunction area( p, q, r ) {\n\n\treturn ( q.y - p.y ) * ( r.x - q.x ) - ( q.x - p.x ) * ( r.y - q.y );\n\n}\n\n// check if two points are equal\nfunction equals( p1, p2 ) {\n\n\treturn p1.x === p2.x && p1.y === p2.y;\n\n}\n\n// check if two segments intersect\nfunction intersects( p1, q1, p2, q2 ) {\n\n\tconst o1 = sign( area( p1, q1, p2 ) );\n\tconst o2 = sign( area( p1, q1, q2 ) );\n\tconst o3 = sign( area( p2, q2, p1 ) );\n\tconst o4 = sign( area( p2, q2, q1 ) );\n\n\tif ( o1 !== o2 && o3 !== o4 ) return true; // general case\n\n\tif ( o1 === 0 && onSegment( p1, p2, q1 ) ) return true; // p1, q1 and p2 are collinear and p2 lies on p1q1\n\tif ( o2 === 0 && onSegment( p1, q2, q1 ) ) return true; // p1, q1 and q2 are collinear and q2 lies on p1q1\n\tif ( o3 === 0 && onSegment( p2, p1, q2 ) ) return true; // p2, q2 and p1 are collinear and p1 lies on p2q2\n\tif ( o4 === 0 && onSegment( p2, q1, q2 ) ) return true; // p2, q2 and q1 are collinear and q1 lies on p2q2\n\n\treturn false;\n\n}\n\n// for collinear points p, q, r, check if point q lies on segment pr\nfunction onSegment( p, q, r ) {\n\n\treturn q.x <= Math.max( p.x, r.x ) && q.x >= Math.min( p.x, r.x ) && q.y <= Math.max( p.y, r.y ) && q.y >= Math.min( p.y, r.y );\n\n}\n\nfunction sign( num ) {\n\n\treturn num > 0 ? 1 : num < 0 ? - 1 : 0;\n\n}\n\n// check if a polygon diagonal intersects any polygon segments\nfunction intersectsPolygon( a, b ) {\n\n\tlet p = a;\n\tdo {\n\n\t\tif ( p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i &&\n\t\t\t\tintersects( p, p.next, a, b ) ) return true;\n\t\tp = p.next;\n\n\t} while ( p !== a );\n\n\treturn false;\n\n}\n\n// check if a polygon diagonal is locally inside the polygon\nfunction locallyInside( a, b ) {\n\n\treturn area( a.prev, a, a.next ) < 0 ?\n\t\tarea( a, b, a.next ) >= 0 && area( a, a.prev, b ) >= 0 :\n\t\tarea( a, b, a.prev ) < 0 || area( a, a.next, b ) < 0;\n\n}\n\n// check if the middle point of a polygon diagonal is inside the polygon\nfunction middleInside( a, b ) {\n\n\tlet p = a,\n\t\tinside = false;\n\tconst px = ( a.x + b.x ) / 2,\n\t\tpy = ( a.y + b.y ) / 2;\n\tdo {\n\n\t\tif ( ( ( p.y > py ) !== ( p.next.y > py ) ) && p.next.y !== p.y &&\n\t\t\t\t( px < ( p.next.x - p.x ) * ( py - p.y ) / ( p.next.y - p.y ) + p.x ) )\n\t\t\tinside = ! inside;\n\t\tp = p.next;\n\n\t} while ( p !== a );\n\n\treturn inside;\n\n}\n\n// link two polygon vertices with a bridge; if the vertices belong to the same ring, it splits polygon into two;\n// if one belongs to the outer ring and another to a hole, it merges it into a single ring\nfunction splitPolygon( a, b ) {\n\n\tconst a2 = new Node( a.i, a.x, a.y ),\n\t\tb2 = new Node( b.i, b.x, b.y ),\n\t\tan = a.next,\n\t\tbp = b.prev;\n\n\ta.next = b;\n\tb.prev = a;\n\n\ta2.next = an;\n\tan.prev = a2;\n\n\tb2.next = a2;\n\ta2.prev = b2;\n\n\tbp.next = b2;\n\tb2.prev = bp;\n\n\treturn b2;\n\n}\n\n// create a node and optionally link it with previous one (in a circular doubly linked list)\nfunction insertNode( i, x, y, last ) {\n\n\tconst p = new Node( i, x, y );\n\n\tif ( ! last ) {\n\n\t\tp.prev = p;\n\t\tp.next = p;\n\n\t} else {\n\n\t\tp.next = last.next;\n\t\tp.prev = last;\n\t\tlast.next.prev = p;\n\t\tlast.next = p;\n\n\t}\n\n\treturn p;\n\n}\n\nfunction removeNode( p ) {\n\n\tp.next.prev = p.prev;\n\tp.prev.next = p.next;\n\n\tif ( p.prevZ ) p.prevZ.nextZ = p.nextZ;\n\tif ( p.nextZ ) p.nextZ.prevZ = p.prevZ;\n\n}\n\nfunction Node( i, x, y ) {\n\n\t// vertex index in coordinates array\n\tthis.i = i;\n\n\t// vertex coordinates\n\tthis.x = x;\n\tthis.y = y;\n\n\t// previous and next vertex nodes in a polygon ring\n\tthis.prev = null;\n\tthis.next = null;\n\n\t// z-order curve value\n\tthis.z = null;\n\n\t// previous and next nodes in z-order\n\tthis.prevZ = null;\n\tthis.nextZ = null;\n\n\t// indicates whether this is a steiner point\n\tthis.steiner = false;\n\n}\n\nfunction signedArea( data, start, end, dim ) {\n\n\tlet sum = 0;\n\tfor ( let i = start, j = end - dim; i < end; i += dim ) {\n\n\t\tsum += ( data[ j ] - data[ i ] ) * ( data[ i + 1 ] + data[ j + 1 ] );\n\t\tj = i;\n\n\t}\n\n\treturn sum;\n\n}\n\nconst ShapeUtils = {\n\n\t// calculate area of the contour polygon\n\n\tarea: function ( contour ) {\n\n\t\tconst n = contour.length;\n\t\tlet a = 0.0;\n\n\t\tfor ( let p = n - 1, q = 0; q < n; p = q ++ ) {\n\n\t\t\ta += contour[ p ].x * contour[ q ].y - contour[ q ].x * contour[ p ].y;\n\n\t\t}\n\n\t\treturn a * 0.5;\n\n\t},\n\n\tisClockWise: function ( pts ) {\n\n\t\treturn ShapeUtils.area( pts ) < 0;\n\n\t},\n\n\ttriangulateShape: function ( contour, holes ) {\n\n\t\tconst vertices = []; // flat array of vertices like [ x0,y0, x1,y1, x2,y2, ... ]\n\t\tconst holeIndices = []; // array of hole indices\n\t\tconst faces = []; // final array of vertex indices like [ [ a,b,d ], [ b,c,d ] ]\n\n\t\tremoveDupEndPts( contour );\n\t\taddContour( vertices, contour );\n\n\t\t//\n\n\t\tlet holeIndex = contour.length;\n\n\t\tholes.forEach( removeDupEndPts );\n\n\t\tfor ( let i = 0; i < holes.length; i ++ ) {\n\n\t\t\tholeIndices.push( holeIndex );\n\t\t\tholeIndex += holes[ i ].length;\n\t\t\taddContour( vertices, holes[ i ] );\n\n\t\t}\n\n\t\t//\n\n\t\tconst triangles = Earcut.triangulate( vertices, holeIndices );\n\n\t\t//\n\n\t\tfor ( let i = 0; i < triangles.length; i += 3 ) {\n\n\t\t\tfaces.push( triangles.slice( i, i + 3 ) );\n\n\t\t}\n\n\t\treturn faces;\n\n\t}\n\n};\n\nfunction removeDupEndPts( points ) {\n\n\tconst l = points.length;\n\n\tif ( l > 2 && points[ l - 1 ].equals( points[ 0 ] ) ) {\n\n\t\tpoints.pop();\n\n\t}\n\n}\n\nfunction addContour( vertices, contour ) {\n\n\tfor ( let i = 0; i < contour.length; i ++ ) {\n\n\t\tvertices.push( contour[ i ].x );\n\t\tvertices.push( contour[ i ].y );\n\n\t}\n\n}\n\n/**\n * Creates extruded geometry from a path shape.\n *\n * parameters = {\n *\n *  curveSegments: <int>, // number of points on the curves\n *  steps: <int>, // number of points for z-side extrusions / used for subdividing segments of extrude spline too\n *  depth: <float>, // Depth to extrude the shape\n *\n *  bevelEnabled: <bool>, // turn on bevel\n *  bevelThickness: <float>, // how deep into the original shape bevel goes\n *  bevelSize: <float>, // how far from shape outline (including bevelOffset) is bevel\n *  bevelOffset: <float>, // how far from shape outline does bevel start\n *  bevelSegments: <int>, // number of bevel layers\n *\n *  extrudePath: <THREE.Curve> // curve to extrude shape along\n *\n *  UVGenerator: <Object> // object that provides UV generator functions\n *\n * }\n */\n\n// ExtrudeGeometry\n\nclass ExtrudeGeometry extends Geometry {\n\n\tconstructor( shapes, options ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'ExtrudeGeometry';\n\n\t\tthis.parameters = {\n\t\t\tshapes: shapes,\n\t\t\toptions: options\n\t\t};\n\n\t\tthis.fromBufferGeometry( new ExtrudeBufferGeometry( shapes, options ) );\n\t\tthis.mergeVertices();\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tconst shapes = this.parameters.shapes;\n\t\tconst options = this.parameters.options;\n\n\t\treturn toJSON( shapes, options, data );\n\n\t}\n\n}\n\n\n// ExtrudeBufferGeometry\n\nclass ExtrudeBufferGeometry extends BufferGeometry {\n\n\tconstructor( shapes, options ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'ExtrudeBufferGeometry';\n\n\t\tthis.parameters = {\n\t\t\tshapes: shapes,\n\t\t\toptions: options\n\t\t};\n\n\t\tshapes = Array.isArray( shapes ) ? shapes : [ shapes ];\n\n\t\tconst scope = this;\n\n\t\tconst verticesArray = [];\n\t\tconst uvArray = [];\n\n\t\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\tconst shape = shapes[ i ];\n\t\t\taddShape( shape );\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( verticesArray, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvArray, 2 ) );\n\n\t\tthis.computeVertexNormals();\n\n\t\t// functions\n\n\t\tfunction addShape( shape ) {\n\n\t\t\tconst placeholder = [];\n\n\t\t\t// options\n\n\t\t\tconst curveSegments = options.curveSegments !== undefined ? options.curveSegments : 12;\n\t\t\tconst steps = options.steps !== undefined ? options.steps : 1;\n\t\t\tlet depth = options.depth !== undefined ? options.depth : 100;\n\n\t\t\tlet bevelEnabled = options.bevelEnabled !== undefined ? options.bevelEnabled : true;\n\t\t\tlet bevelThickness = options.bevelThickness !== undefined ? options.bevelThickness : 6;\n\t\t\tlet bevelSize = options.bevelSize !== undefined ? options.bevelSize : bevelThickness - 2;\n\t\t\tlet bevelOffset = options.bevelOffset !== undefined ? options.bevelOffset : 0;\n\t\t\tlet bevelSegments = options.bevelSegments !== undefined ? options.bevelSegments : 3;\n\n\t\t\tconst extrudePath = options.extrudePath;\n\n\t\t\tconst uvgen = options.UVGenerator !== undefined ? options.UVGenerator : WorldUVGenerator;\n\n\t\t\t// deprecated options\n\n\t\t\tif ( options.amount !== undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.ExtrudeBufferGeometry: amount has been renamed to depth.' );\n\t\t\t\tdepth = options.amount;\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tlet extrudePts, extrudeByPath = false;\n\t\t\tlet splineTube, binormal, normal, position2;\n\n\t\t\tif ( extrudePath ) {\n\n\t\t\t\textrudePts = extrudePath.getSpacedPoints( steps );\n\n\t\t\t\textrudeByPath = true;\n\t\t\t\tbevelEnabled = false; // bevels not supported for path extrusion\n\n\t\t\t\t// SETUP TNB variables\n\n\t\t\t\t// TODO1 - have a .isClosed in spline?\n\n\t\t\t\tsplineTube = extrudePath.computeFrenetFrames( steps, false );\n\n\t\t\t\t// console.log(splineTube, 'splineTube', splineTube.normals.length, 'steps', steps, 'extrudePts', extrudePts.length);\n\n\t\t\t\tbinormal = new Vector3();\n\t\t\t\tnormal = new Vector3();\n\t\t\t\tposition2 = new Vector3();\n\n\t\t\t}\n\n\t\t\t// Safeguards if bevels are not enabled\n\n\t\t\tif ( ! bevelEnabled ) {\n\n\t\t\t\tbevelSegments = 0;\n\t\t\t\tbevelThickness = 0;\n\t\t\t\tbevelSize = 0;\n\t\t\t\tbevelOffset = 0;\n\n\t\t\t}\n\n\t\t\t// Variables initialization\n\n\t\t\tconst shapePoints = shape.extractPoints( curveSegments );\n\n\t\t\tlet vertices = shapePoints.shape;\n\t\t\tconst holes = shapePoints.holes;\n\n\t\t\tconst reverse = ! ShapeUtils.isClockWise( vertices );\n\n\t\t\tif ( reverse ) {\n\n\t\t\t\tvertices = vertices.reverse();\n\n\t\t\t\t// Maybe we should also check if holes are in the opposite direction, just to be safe ...\n\n\t\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\t\tconst ahole = holes[ h ];\n\n\t\t\t\t\tif ( ShapeUtils.isClockWise( ahole ) ) {\n\n\t\t\t\t\t\tholes[ h ] = ahole.reverse();\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\n\t\t\tconst faces = ShapeUtils.triangulateShape( vertices, holes );\n\n\t\t\t/* Vertices */\n\n\t\t\tconst contour = vertices; // vertices has all points but contour has only points of circumference\n\n\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\tconst ahole = holes[ h ];\n\n\t\t\t\tvertices = vertices.concat( ahole );\n\n\t\t\t}\n\n\n\t\t\tfunction scalePt2( pt, vec, size ) {\n\n\t\t\t\tif ( ! vec ) console.error( \"THREE.ExtrudeGeometry: vec does not exist\" );\n\n\t\t\t\treturn vec.clone().multiplyScalar( size ).add( pt );\n\n\t\t\t}\n\n\t\t\tconst vlen = vertices.length, flen = faces.length;\n\n\n\t\t\t// Find directions for point movement\n\n\n\t\t\tfunction getBevelVec( inPt, inPrev, inNext ) {\n\n\t\t\t\t// computes for inPt the corresponding point inPt' on a new contour\n\t\t\t\t//   shifted by 1 unit (length of normalized vector) to the left\n\t\t\t\t// if we walk along contour clockwise, this new contour is outside the old one\n\t\t\t\t//\n\t\t\t\t// inPt' is the intersection of the two lines parallel to the two\n\t\t\t\t//  adjacent edges of inPt at a distance of 1 unit on the left side.\n\n\t\t\t\tlet v_trans_x, v_trans_y, shrink_by; // resulting translation vector for inPt\n\n\t\t\t\t// good reading for geometry algorithms (here: line-line intersection)\n\t\t\t\t// http://geomalgorithms.com/a05-_intersect-1.html\n\n\t\t\t\tconst v_prev_x = inPt.x - inPrev.x,\n\t\t\t\t\tv_prev_y = inPt.y - inPrev.y;\n\t\t\t\tconst v_next_x = inNext.x - inPt.x,\n\t\t\t\t\tv_next_y = inNext.y - inPt.y;\n\n\t\t\t\tconst v_prev_lensq = ( v_prev_x * v_prev_x + v_prev_y * v_prev_y );\n\n\t\t\t\t// check for collinear edges\n\t\t\t\tconst collinear0 = ( v_prev_x * v_next_y - v_prev_y * v_next_x );\n\n\t\t\t\tif ( Math.abs( collinear0 ) > Number.EPSILON ) {\n\n\t\t\t\t\t// not collinear\n\n\t\t\t\t\t// length of vectors for normalizing\n\n\t\t\t\t\tconst v_prev_len = Math.sqrt( v_prev_lensq );\n\t\t\t\t\tconst v_next_len = Math.sqrt( v_next_x * v_next_x + v_next_y * v_next_y );\n\n\t\t\t\t\t// shift adjacent points by unit vectors to the left\n\n\t\t\t\t\tconst ptPrevShift_x = ( inPrev.x - v_prev_y / v_prev_len );\n\t\t\t\t\tconst ptPrevShift_y = ( inPrev.y + v_prev_x / v_prev_len );\n\n\t\t\t\t\tconst ptNextShift_x = ( inNext.x - v_next_y / v_next_len );\n\t\t\t\t\tconst ptNextShift_y = ( inNext.y + v_next_x / v_next_len );\n\n\t\t\t\t\t// scaling factor for v_prev to intersection point\n\n\t\t\t\t\tconst sf = ( ( ptNextShift_x - ptPrevShift_x ) * v_next_y -\n\t\t\t\t\t\t\t( ptNextShift_y - ptPrevShift_y ) * v_next_x ) /\n\t\t\t\t\t\t( v_prev_x * v_next_y - v_prev_y * v_next_x );\n\n\t\t\t\t\t// vector from inPt to intersection point\n\n\t\t\t\t\tv_trans_x = ( ptPrevShift_x + v_prev_x * sf - inPt.x );\n\t\t\t\t\tv_trans_y = ( ptPrevShift_y + v_prev_y * sf - inPt.y );\n\n\t\t\t\t\t// Don't normalize!, otherwise sharp corners become ugly\n\t\t\t\t\t//  but prevent crazy spikes\n\t\t\t\t\tconst v_trans_lensq = ( v_trans_x * v_trans_x + v_trans_y * v_trans_y );\n\t\t\t\t\tif ( v_trans_lensq <= 2 ) {\n\n\t\t\t\t\t\treturn new Vector2( v_trans_x, v_trans_y );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tshrink_by = Math.sqrt( v_trans_lensq / 2 );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// handle special case of collinear edges\n\n\t\t\t\t\tlet direction_eq = false; // assumes: opposite\n\n\t\t\t\t\tif ( v_prev_x > Number.EPSILON ) {\n\n\t\t\t\t\t\tif ( v_next_x > Number.EPSILON ) {\n\n\t\t\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( v_prev_x < - Number.EPSILON ) {\n\n\t\t\t\t\t\t\tif ( v_next_x < - Number.EPSILON ) {\n\n\t\t\t\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tif ( Math.sign( v_prev_y ) === Math.sign( v_next_y ) ) {\n\n\t\t\t\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( direction_eq ) {\n\n\t\t\t\t\t\t// console.log(\"Warning: lines are a straight sequence\");\n\t\t\t\t\t\tv_trans_x = - v_prev_y;\n\t\t\t\t\t\tv_trans_y = v_prev_x;\n\t\t\t\t\t\tshrink_by = Math.sqrt( v_prev_lensq );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// console.log(\"Warning: lines are a straight spike\");\n\t\t\t\t\t\tv_trans_x = v_prev_x;\n\t\t\t\t\t\tv_trans_y = v_prev_y;\n\t\t\t\t\t\tshrink_by = Math.sqrt( v_prev_lensq / 2 );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\treturn new Vector2( v_trans_x / shrink_by, v_trans_y / shrink_by );\n\n\t\t\t}\n\n\n\t\t\tconst contourMovements = [];\n\n\t\t\tfor ( let i = 0, il = contour.length, j = il - 1, k = i + 1; i < il; i ++, j ++, k ++ ) {\n\n\t\t\t\tif ( j === il ) j = 0;\n\t\t\t\tif ( k === il ) k = 0;\n\n\t\t\t\t//  (j)---(i)---(k)\n\t\t\t\t// console.log('i,j,k', i, j , k)\n\n\t\t\t\tcontourMovements[ i ] = getBevelVec( contour[ i ], contour[ j ], contour[ k ] );\n\n\t\t\t}\n\n\t\t\tconst holesMovements = [];\n\t\t\tlet oneHoleMovements, verticesMovements = contourMovements.concat();\n\n\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\tconst ahole = holes[ h ];\n\n\t\t\t\toneHoleMovements = [];\n\n\t\t\t\tfor ( let i = 0, il = ahole.length, j = il - 1, k = i + 1; i < il; i ++, j ++, k ++ ) {\n\n\t\t\t\t\tif ( j === il ) j = 0;\n\t\t\t\t\tif ( k === il ) k = 0;\n\n\t\t\t\t\t//  (j)---(i)---(k)\n\t\t\t\t\toneHoleMovements[ i ] = getBevelVec( ahole[ i ], ahole[ j ], ahole[ k ] );\n\n\t\t\t\t}\n\n\t\t\t\tholesMovements.push( oneHoleMovements );\n\t\t\t\tverticesMovements = verticesMovements.concat( oneHoleMovements );\n\n\t\t\t}\n\n\n\t\t\t// Loop bevelSegments, 1 for the front, 1 for the back\n\n\t\t\tfor ( let b = 0; b < bevelSegments; b ++ ) {\n\n\t\t\t\t//for ( b = bevelSegments; b > 0; b -- ) {\n\n\t\t\t\tconst t = b / bevelSegments;\n\t\t\t\tconst z = bevelThickness * Math.cos( t * Math.PI / 2 );\n\t\t\t\tconst bs = bevelSize * Math.sin( t * Math.PI / 2 ) + bevelOffset;\n\n\t\t\t\t// contract shape\n\n\t\t\t\tfor ( let i = 0, il = contour.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst vert = scalePt2( contour[ i ], contourMovements[ i ], bs );\n\n\t\t\t\t\tv( vert.x, vert.y, - z );\n\n\t\t\t\t}\n\n\t\t\t\t// expand holes\n\n\t\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\t\tconst ahole = holes[ h ];\n\t\t\t\t\toneHoleMovements = holesMovements[ h ];\n\n\t\t\t\t\tfor ( let i = 0, il = ahole.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tconst vert = scalePt2( ahole[ i ], oneHoleMovements[ i ], bs );\n\n\t\t\t\t\t\tv( vert.x, vert.y, - z );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst bs = bevelSize + bevelOffset;\n\n\t\t\t// Back facing vertices\n\n\t\t\tfor ( let i = 0; i < vlen; i ++ ) {\n\n\t\t\t\tconst vert = bevelEnabled ? scalePt2( vertices[ i ], verticesMovements[ i ], bs ) : vertices[ i ];\n\n\t\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\t\tv( vert.x, vert.y, 0 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// v( vert.x, vert.y + extrudePts[ 0 ].y, extrudePts[ 0 ].x );\n\n\t\t\t\t\tnormal.copy( splineTube.normals[ 0 ] ).multiplyScalar( vert.x );\n\t\t\t\t\tbinormal.copy( splineTube.binormals[ 0 ] ).multiplyScalar( vert.y );\n\n\t\t\t\t\tposition2.copy( extrudePts[ 0 ] ).add( normal ).add( binormal );\n\n\t\t\t\t\tv( position2.x, position2.y, position2.z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// Add stepped vertices...\n\t\t\t// Including front facing vertices\n\n\t\t\tfor ( let s = 1; s <= steps; s ++ ) {\n\n\t\t\t\tfor ( let i = 0; i < vlen; i ++ ) {\n\n\t\t\t\t\tconst vert = bevelEnabled ? scalePt2( vertices[ i ], verticesMovements[ i ], bs ) : vertices[ i ];\n\n\t\t\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\t\t\tv( vert.x, vert.y, depth / steps * s );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// v( vert.x, vert.y + extrudePts[ s - 1 ].y, extrudePts[ s - 1 ].x );\n\n\t\t\t\t\t\tnormal.copy( splineTube.normals[ s ] ).multiplyScalar( vert.x );\n\t\t\t\t\t\tbinormal.copy( splineTube.binormals[ s ] ).multiplyScalar( vert.y );\n\n\t\t\t\t\t\tposition2.copy( extrudePts[ s ] ).add( normal ).add( binormal );\n\n\t\t\t\t\t\tv( position2.x, position2.y, position2.z );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\n\t\t\t// Add bevel segments planes\n\n\t\t\t//for ( b = 1; b <= bevelSegments; b ++ ) {\n\t\t\tfor ( let b = bevelSegments - 1; b >= 0; b -- ) {\n\n\t\t\t\tconst t = b / bevelSegments;\n\t\t\t\tconst z = bevelThickness * Math.cos( t * Math.PI / 2 );\n\t\t\t\tconst bs = bevelSize * Math.sin( t * Math.PI / 2 ) + bevelOffset;\n\n\t\t\t\t// contract shape\n\n\t\t\t\tfor ( let i = 0, il = contour.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst vert = scalePt2( contour[ i ], contourMovements[ i ], bs );\n\t\t\t\t\tv( vert.x, vert.y, depth + z );\n\n\t\t\t\t}\n\n\t\t\t\t// expand holes\n\n\t\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\t\tconst ahole = holes[ h ];\n\t\t\t\t\toneHoleMovements = holesMovements[ h ];\n\n\t\t\t\t\tfor ( let i = 0, il = ahole.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tconst vert = scalePt2( ahole[ i ], oneHoleMovements[ i ], bs );\n\n\t\t\t\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\t\t\t\tv( vert.x, vert.y, depth + z );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tv( vert.x, vert.y + extrudePts[ steps - 1 ].y, extrudePts[ steps - 1 ].x + z );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t/* Faces */\n\n\t\t\t// Top and bottom faces\n\n\t\t\tbuildLidFaces();\n\n\t\t\t// Sides faces\n\n\t\t\tbuildSideFaces();\n\n\n\t\t\t/////  Internal functions\n\n\t\t\tfunction buildLidFaces() {\n\n\t\t\t\tconst start = verticesArray.length / 3;\n\n\t\t\t\tif ( bevelEnabled ) {\n\n\t\t\t\t\tlet layer = 0; // steps + 1\n\t\t\t\t\tlet offset = vlen * layer;\n\n\t\t\t\t\t// Bottom faces\n\n\t\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\t\tf3( face[ 2 ] + offset, face[ 1 ] + offset, face[ 0 ] + offset );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tlayer = steps + bevelSegments * 2;\n\t\t\t\t\toffset = vlen * layer;\n\n\t\t\t\t\t// Top faces\n\n\t\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\t\tf3( face[ 0 ] + offset, face[ 1 ] + offset, face[ 2 ] + offset );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// Bottom faces\n\n\t\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\t\tf3( face[ 2 ], face[ 1 ], face[ 0 ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// Top faces\n\n\t\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\t\tf3( face[ 0 ] + vlen * steps, face[ 1 ] + vlen * steps, face[ 2 ] + vlen * steps );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tscope.addGroup( start, verticesArray.length / 3 - start, 0 );\n\n\t\t\t}\n\n\t\t\t// Create faces for the z-sides of the shape\n\n\t\t\tfunction buildSideFaces() {\n\n\t\t\t\tconst start = verticesArray.length / 3;\n\t\t\t\tlet layeroffset = 0;\n\t\t\t\tsidewalls( contour, layeroffset );\n\t\t\t\tlayeroffset += contour.length;\n\n\t\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\t\tconst ahole = holes[ h ];\n\t\t\t\t\tsidewalls( ahole, layeroffset );\n\n\t\t\t\t\t//, true\n\t\t\t\t\tlayeroffset += ahole.length;\n\n\t\t\t\t}\n\n\n\t\t\t\tscope.addGroup( start, verticesArray.length / 3 - start, 1 );\n\n\n\t\t\t}\n\n\t\t\tfunction sidewalls( contour, layeroffset ) {\n\n\t\t\t\tlet i = contour.length;\n\n\t\t\t\twhile ( -- i >= 0 ) {\n\n\t\t\t\t\tconst j = i;\n\t\t\t\t\tlet k = i - 1;\n\t\t\t\t\tif ( k < 0 ) k = contour.length - 1;\n\n\t\t\t\t\t//console.log('b', i,j, i-1, k,vertices.length);\n\n\t\t\t\t\tfor ( let s = 0, sl = ( steps + bevelSegments * 2 ); s < sl; s ++ ) {\n\n\t\t\t\t\t\tconst slen1 = vlen * s;\n\t\t\t\t\t\tconst slen2 = vlen * ( s + 1 );\n\n\t\t\t\t\t\tconst a = layeroffset + j + slen1,\n\t\t\t\t\t\t\tb = layeroffset + k + slen1,\n\t\t\t\t\t\t\tc = layeroffset + k + slen2,\n\t\t\t\t\t\t\td = layeroffset + j + slen2;\n\n\t\t\t\t\t\tf4( a, b, c, d );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tfunction v( x, y, z ) {\n\n\t\t\t\tplaceholder.push( x );\n\t\t\t\tplaceholder.push( y );\n\t\t\t\tplaceholder.push( z );\n\n\t\t\t}\n\n\n\t\t\tfunction f3( a, b, c ) {\n\n\t\t\t\taddVertex( a );\n\t\t\t\taddVertex( b );\n\t\t\t\taddVertex( c );\n\n\t\t\t\tconst nextIndex = verticesArray.length / 3;\n\t\t\t\tconst uvs = uvgen.generateTopUV( scope, verticesArray, nextIndex - 3, nextIndex - 2, nextIndex - 1 );\n\n\t\t\t\taddUV( uvs[ 0 ] );\n\t\t\t\taddUV( uvs[ 1 ] );\n\t\t\t\taddUV( uvs[ 2 ] );\n\n\t\t\t}\n\n\t\t\tfunction f4( a, b, c, d ) {\n\n\t\t\t\taddVertex( a );\n\t\t\t\taddVertex( b );\n\t\t\t\taddVertex( d );\n\n\t\t\t\taddVertex( b );\n\t\t\t\taddVertex( c );\n\t\t\t\taddVertex( d );\n\n\n\t\t\t\tconst nextIndex = verticesArray.length / 3;\n\t\t\t\tconst uvs = uvgen.generateSideWallUV( scope, verticesArray, nextIndex - 6, nextIndex - 3, nextIndex - 2, nextIndex - 1 );\n\n\t\t\t\taddUV( uvs[ 0 ] );\n\t\t\t\taddUV( uvs[ 1 ] );\n\t\t\t\taddUV( uvs[ 3 ] );\n\n\t\t\t\taddUV( uvs[ 1 ] );\n\t\t\t\taddUV( uvs[ 2 ] );\n\t\t\t\taddUV( uvs[ 3 ] );\n\n\t\t\t}\n\n\t\t\tfunction addVertex( index ) {\n\n\t\t\t\tverticesArray.push( placeholder[ index * 3 + 0 ] );\n\t\t\t\tverticesArray.push( placeholder[ index * 3 + 1 ] );\n\t\t\t\tverticesArray.push( placeholder[ index * 3 + 2 ] );\n\n\t\t\t}\n\n\n\t\t\tfunction addUV( vector2 ) {\n\n\t\t\t\tuvArray.push( vector2.x );\n\t\t\t\tuvArray.push( vector2.y );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = BufferGeometry.prototype.toJSON.call( this );\n\n\t\tconst shapes = this.parameters.shapes;\n\t\tconst options = this.parameters.options;\n\n\t\treturn toJSON( shapes, options, data );\n\n\t}\n\n}\n\nconst WorldUVGenerator = {\n\n\tgenerateTopUV: function ( geometry, vertices, indexA, indexB, indexC ) {\n\n\t\tconst a_x = vertices[ indexA * 3 ];\n\t\tconst a_y = vertices[ indexA * 3 + 1 ];\n\t\tconst b_x = vertices[ indexB * 3 ];\n\t\tconst b_y = vertices[ indexB * 3 + 1 ];\n\t\tconst c_x = vertices[ indexC * 3 ];\n\t\tconst c_y = vertices[ indexC * 3 + 1 ];\n\n\t\treturn [\n\t\t\tnew Vector2( a_x, a_y ),\n\t\t\tnew Vector2( b_x, b_y ),\n\t\t\tnew Vector2( c_x, c_y )\n\t\t];\n\n\t},\n\n\tgenerateSideWallUV: function ( geometry, vertices, indexA, indexB, indexC, indexD ) {\n\n\t\tconst a_x = vertices[ indexA * 3 ];\n\t\tconst a_y = vertices[ indexA * 3 + 1 ];\n\t\tconst a_z = vertices[ indexA * 3 + 2 ];\n\t\tconst b_x = vertices[ indexB * 3 ];\n\t\tconst b_y = vertices[ indexB * 3 + 1 ];\n\t\tconst b_z = vertices[ indexB * 3 + 2 ];\n\t\tconst c_x = vertices[ indexC * 3 ];\n\t\tconst c_y = vertices[ indexC * 3 + 1 ];\n\t\tconst c_z = vertices[ indexC * 3 + 2 ];\n\t\tconst d_x = vertices[ indexD * 3 ];\n\t\tconst d_y = vertices[ indexD * 3 + 1 ];\n\t\tconst d_z = vertices[ indexD * 3 + 2 ];\n\n\t\tif ( Math.abs( a_y - b_y ) < 0.01 ) {\n\n\t\t\treturn [\n\t\t\t\tnew Vector2( a_x, 1 - a_z ),\n\t\t\t\tnew Vector2( b_x, 1 - b_z ),\n\t\t\t\tnew Vector2( c_x, 1 - c_z ),\n\t\t\t\tnew Vector2( d_x, 1 - d_z )\n\t\t\t];\n\n\t\t} else {\n\n\t\t\treturn [\n\t\t\t\tnew Vector2( a_y, 1 - a_z ),\n\t\t\t\tnew Vector2( b_y, 1 - b_z ),\n\t\t\t\tnew Vector2( c_y, 1 - c_z ),\n\t\t\t\tnew Vector2( d_y, 1 - d_z )\n\t\t\t];\n\n\t\t}\n\n\t}\n};\n\nfunction toJSON( shapes, options, data ) {\n\n\tdata.shapes = [];\n\n\tif ( Array.isArray( shapes ) ) {\n\n\t\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\tconst shape = shapes[ i ];\n\n\t\t\tdata.shapes.push( shape.uuid );\n\n\t\t}\n\n\t} else {\n\n\t\tdata.shapes.push( shapes.uuid );\n\n\t}\n\n\tif ( options.extrudePath !== undefined ) data.options.extrudePath = options.extrudePath.toJSON();\n\n\treturn data;\n\n}\n\n/**\n * Text = 3D Text\n *\n * parameters = {\n *  font: <THREE.Font>, // font\n *\n *  size: <float>, // size of the text\n *  height: <float>, // thickness to extrude text\n *  curveSegments: <int>, // number of points on the curves\n *\n *  bevelEnabled: <bool>, // turn on bevel\n *  bevelThickness: <float>, // how deep into text bevel goes\n *  bevelSize: <float>, // how far from text outline (including bevelOffset) is bevel\n *  bevelOffset: <float> // how far from text outline does bevel start\n * }\n */\n\n// TextGeometry\n\nclass TextGeometry extends Geometry {\n\n\tconstructor( text, parameters ) {\n\n\t\tsuper();\n\t\tthis.type = 'TextGeometry';\n\n\t\tthis.parameters = {\n\t\t\ttext: text,\n\t\t\tparameters: parameters\n\t\t};\n\n\t\tthis.fromBufferGeometry( new TextBufferGeometry( text, parameters ) );\n\t\tthis.mergeVertices();\n\n\t}\n\n}\n\n\n// TextBufferGeometry\n\nclass TextBufferGeometry extends ExtrudeBufferGeometry {\n\n\tconstructor( text, parameters ) {\n\n\t\tparameters = parameters || {};\n\n\t\tconst font = parameters.font;\n\n\t\tif ( ! ( font && font.isFont ) ) {\n\n\t\t\tconsole.error( 'THREE.TextGeometry: font parameter is not an instance of THREE.Font.' );\n\t\t\treturn new Geometry();\n\n\t\t}\n\n\t\tconst shapes = font.generateShapes( text, parameters.size );\n\n\t\t// translate parameters to ExtrudeGeometry API\n\n\t\tparameters.depth = parameters.height !== undefined ? parameters.height : 50;\n\n\t\t// defaults\n\n\t\tif ( parameters.bevelThickness === undefined ) parameters.bevelThickness = 10;\n\t\tif ( parameters.bevelSize === undefined ) parameters.bevelSize = 8;\n\t\tif ( parameters.bevelEnabled === undefined ) parameters.bevelEnabled = false;\n\n\t\tsuper( shapes, parameters );\n\n\t\tthis.type = 'TextBufferGeometry';\n\n\t}\n\n}\n\n// SphereGeometry\n\nclass SphereGeometry extends Geometry {\n\n\tconstructor( radius, widthSegments, heightSegments, phiStart, phiLength, thetaStart, thetaLength ) {\n\n\t\tsuper();\n\t\tthis.type = 'SphereGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\twidthSegments: widthSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\tphiStart: phiStart,\n\t\t\tphiLength: phiLength,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t\tthis.fromBufferGeometry( new SphereBufferGeometry( radius, widthSegments, heightSegments, phiStart, phiLength, thetaStart, thetaLength ) );\n\t\tthis.mergeVertices();\n\n\t}\n\n}\n\n// SphereBufferGeometry\n\nclass SphereBufferGeometry extends BufferGeometry {\n\n\tconstructor( radius, widthSegments, heightSegments, phiStart, phiLength, thetaStart, thetaLength ) {\n\n\t\tsuper();\n\t\tthis.type = 'SphereBufferGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\twidthSegments: widthSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\tphiStart: phiStart,\n\t\t\tphiLength: phiLength,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t\tradius = radius || 1;\n\n\t\twidthSegments = Math.max( 3, Math.floor( widthSegments ) || 8 );\n\t\theightSegments = Math.max( 2, Math.floor( heightSegments ) || 6 );\n\n\t\tphiStart = phiStart !== undefined ? phiStart : 0;\n\t\tphiLength = phiLength !== undefined ? phiLength : Math.PI * 2;\n\n\t\tthetaStart = thetaStart !== undefined ? thetaStart : 0;\n\t\tthetaLength = thetaLength !== undefined ? thetaLength : Math.PI;\n\n\t\tconst thetaEnd = Math.min( thetaStart + thetaLength, Math.PI );\n\n\t\tlet index = 0;\n\t\tconst grid = [];\n\n\t\tconst vertex = new Vector3();\n\t\tconst normal = new Vector3();\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( let iy = 0; iy <= heightSegments; iy ++ ) {\n\n\t\t\tconst verticesRow = [];\n\n\t\t\tconst v = iy / heightSegments;\n\n\t\t\t// special case for the poles\n\n\t\t\tlet uOffset = 0;\n\n\t\t\tif ( iy == 0 && thetaStart == 0 ) {\n\n\t\t\t\tuOffset = 0.5 / widthSegments;\n\n\t\t\t} else if ( iy == heightSegments && thetaEnd == Math.PI ) {\n\n\t\t\t\tuOffset = - 0.5 / widthSegments;\n\n\t\t\t}\n\n\t\t\tfor ( let ix = 0; ix <= widthSegments; ix ++ ) {\n\n\t\t\t\tconst u = ix / widthSegments;\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = - radius * Math.cos( phiStart + u * phiLength ) * Math.sin( thetaStart + v * thetaLength );\n\t\t\t\tvertex.y = radius * Math.cos( thetaStart + v * thetaLength );\n\t\t\t\tvertex.z = radius * Math.sin( phiStart + u * phiLength ) * Math.sin( thetaStart + v * thetaLength );\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormal.copy( vertex ).normalize();\n\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t// uv\n\n\t\t\t\tuvs.push( u + uOffset, 1 - v );\n\n\t\t\t\tverticesRow.push( index ++ );\n\n\t\t\t}\n\n\t\t\tgrid.push( verticesRow );\n\n\t\t}\n\n\t\t// indices\n\n\t\tfor ( let iy = 0; iy < heightSegments; iy ++ ) {\n\n\t\t\tfor ( let ix = 0; ix < widthSegments; ix ++ ) {\n\n\t\t\t\tconst a = grid[ iy ][ ix + 1 ];\n\t\t\t\tconst b = grid[ iy ][ ix ];\n\t\t\t\tconst c = grid[ iy + 1 ][ ix ];\n\t\t\t\tconst d = grid[ iy + 1 ][ ix + 1 ];\n\n\t\t\t\tif ( iy !== 0 || thetaStart > 0 ) indices.push( a, b, d );\n\t\t\t\tif ( iy !== heightSegments - 1 || thetaEnd < Math.PI ) indices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t}\n\n}\n\n// RingGeometry\n\nclass RingGeometry extends Geometry {\n\n\tconstructor( innerRadius, outerRadius, thetaSegments, phiSegments, thetaStart, thetaLength ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'RingGeometry';\n\n\t\tthis.parameters = {\n\t\t\tinnerRadius: innerRadius,\n\t\t\touterRadius: outerRadius,\n\t\t\tthetaSegments: thetaSegments,\n\t\t\tphiSegments: phiSegments,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t\tthis.fromBufferGeometry( new RingBufferGeometry( innerRadius, outerRadius, thetaSegments, phiSegments, thetaStart, thetaLength ) );\n\t\tthis.mergeVertices();\n\n\t}\n\n}\n\n// RingBufferGeometry\n\nclass RingBufferGeometry extends BufferGeometry {\n\n\tconstructor( innerRadius, outerRadius, thetaSegments, phiSegments, thetaStart, thetaLength ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'RingBufferGeometry';\n\n\t\tthis.parameters = {\n\t\t\tinnerRadius: innerRadius,\n\t\t\touterRadius: outerRadius,\n\t\t\tthetaSegments: thetaSegments,\n\t\t\tphiSegments: phiSegments,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t\tinnerRadius = innerRadius || 0.5;\n\t\touterRadius = outerRadius || 1;\n\n\t\tthetaStart = thetaStart !== undefined ? thetaStart : 0;\n\t\tthetaLength = thetaLength !== undefined ? thetaLength : Math.PI * 2;\n\n\t\tthetaSegments = thetaSegments !== undefined ? Math.max( 3, thetaSegments ) : 8;\n\t\tphiSegments = phiSegments !== undefined ? Math.max( 1, phiSegments ) : 1;\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// some helper variables\n\n\t\tlet radius = innerRadius;\n\t\tconst radiusStep = ( ( outerRadius - innerRadius ) / phiSegments );\n\t\tconst vertex = new Vector3();\n\t\tconst uv = new Vector2();\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( let j = 0; j <= phiSegments; j ++ ) {\n\n\t\t\tfor ( let i = 0; i <= thetaSegments; i ++ ) {\n\n\t\t\t\t// values are generate from the inside of the ring to the outside\n\n\t\t\t\tconst segment = thetaStart + i / thetaSegments * thetaLength;\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = radius * Math.cos( segment );\n\t\t\t\tvertex.y = radius * Math.sin( segment );\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormals.push( 0, 0, 1 );\n\n\t\t\t\t// uv\n\n\t\t\t\tuv.x = ( vertex.x / outerRadius + 1 ) / 2;\n\t\t\t\tuv.y = ( vertex.y / outerRadius + 1 ) / 2;\n\n\t\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t}\n\n\t\t\t// increase the radius for next row of vertices\n\n\t\t\tradius += radiusStep;\n\n\t\t}\n\n\t\t// indices\n\n\t\tfor ( let j = 0; j < phiSegments; j ++ ) {\n\n\t\t\tconst thetaSegmentLevel = j * ( thetaSegments + 1 );\n\n\t\t\tfor ( let i = 0; i < thetaSegments; i ++ ) {\n\n\t\t\t\tconst segment = i + thetaSegmentLevel;\n\n\t\t\t\tconst a = segment;\n\t\t\t\tconst b = segment + thetaSegments + 1;\n\t\t\t\tconst c = segment + thetaSegments + 2;\n\t\t\t\tconst d = segment + 1;\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t}\n\n}\n\n// LatheGeometry\n\nclass LatheGeometry extends Geometry {\n\n\tconstructor( points, segments, phiStart, phiLength ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'LatheGeometry';\n\n\t\tthis.parameters = {\n\t\t\tpoints: points,\n\t\t\tsegments: segments,\n\t\t\tphiStart: phiStart,\n\t\t\tphiLength: phiLength\n\t\t};\n\n\t\tthis.fromBufferGeometry( new LatheBufferGeometry( points, segments, phiStart, phiLength ) );\n\t\tthis.mergeVertices();\n\n\t}\n\n}\n\n// LatheBufferGeometry\n\nclass LatheBufferGeometry extends BufferGeometry {\n\n\tconstructor( points, segments, phiStart, phiLength ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'LatheBufferGeometry';\n\n\t\tthis.parameters = {\n\t\t\tpoints: points,\n\t\t\tsegments: segments,\n\t\t\tphiStart: phiStart,\n\t\t\tphiLength: phiLength\n\t\t};\n\n\t\tsegments = Math.floor( segments ) || 12;\n\t\tphiStart = phiStart || 0;\n\t\tphiLength = phiLength || Math.PI * 2;\n\n\t\t// clamp phiLength so it's in range of [ 0, 2PI ]\n\n\t\tphiLength = MathUtils.clamp( phiLength, 0, Math.PI * 2 );\n\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tconst inverseSegments = 1.0 / segments;\n\t\tconst vertex = new Vector3();\n\t\tconst uv = new Vector2();\n\n\t\t// generate vertices and uvs\n\n\t\tfor ( let i = 0; i <= segments; i ++ ) {\n\n\t\t\tconst phi = phiStart + i * inverseSegments * phiLength;\n\n\t\t\tconst sin = Math.sin( phi );\n\t\t\tconst cos = Math.cos( phi );\n\n\t\t\tfor ( let j = 0; j <= ( points.length - 1 ); j ++ ) {\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = points[ j ].x * sin;\n\t\t\t\tvertex.y = points[ j ].y;\n\t\t\t\tvertex.z = points[ j ].x * cos;\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// uv\n\n\t\t\t\tuv.x = i / segments;\n\t\t\t\tuv.y = j / ( points.length - 1 );\n\n\t\t\t\tuvs.push( uv.x, uv.y );\n\n\n\t\t\t}\n\n\t\t}\n\n\t\t// indices\n\n\t\tfor ( let i = 0; i < segments; i ++ ) {\n\n\t\t\tfor ( let j = 0; j < ( points.length - 1 ); j ++ ) {\n\n\t\t\t\tconst base = j + i * points.length;\n\n\t\t\t\tconst a = base;\n\t\t\t\tconst b = base + points.length;\n\t\t\t\tconst c = base + points.length + 1;\n\t\t\t\tconst d = base + 1;\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t\t// generate normals\n\n\t\tthis.computeVertexNormals();\n\n\t\t// if the geometry is closed, we need to average the normals along the seam.\n\t\t// because the corresponding vertices are identical (but still have different UVs).\n\n\t\tif ( phiLength === Math.PI * 2 ) {\n\n\t\t\tconst normals = this.attributes.normal.array;\n\t\t\tconst n1 = new Vector3();\n\t\t\tconst n2 = new Vector3();\n\t\t\tconst n = new Vector3();\n\n\t\t\t// this is the buffer offset for the last line of vertices\n\n\t\t\tconst base = segments * points.length * 3;\n\n\t\t\tfor ( let i = 0, j = 0; i < points.length; i ++, j += 3 ) {\n\n\t\t\t\t// select the normal of the vertex in the first line\n\n\t\t\t\tn1.x = normals[ j + 0 ];\n\t\t\t\tn1.y = normals[ j + 1 ];\n\t\t\t\tn1.z = normals[ j + 2 ];\n\n\t\t\t\t// select the normal of the vertex in the last line\n\n\t\t\t\tn2.x = normals[ base + j + 0 ];\n\t\t\t\tn2.y = normals[ base + j + 1 ];\n\t\t\t\tn2.z = normals[ base + j + 2 ];\n\n\t\t\t\t// average normals\n\n\t\t\t\tn.addVectors( n1, n2 ).normalize();\n\n\t\t\t\t// assign the new values to both normals\n\n\t\t\t\tnormals[ j + 0 ] = normals[ base + j + 0 ] = n.x;\n\t\t\t\tnormals[ j + 1 ] = normals[ base + j + 1 ] = n.y;\n\t\t\t\tnormals[ j + 2 ] = normals[ base + j + 2 ] = n.z;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\n// ShapeGeometry\n\nclass ShapeGeometry extends Geometry {\n\n\tconstructor( shapes, curveSegments ) {\n\n\t\tsuper();\n\t\tthis.type = 'ShapeGeometry';\n\n\t\tif ( typeof curveSegments === 'object' ) {\n\n\t\t\tconsole.warn( 'THREE.ShapeGeometry: Options parameter has been removed.' );\n\n\t\t\tcurveSegments = curveSegments.curveSegments;\n\n\t\t}\n\n\t\tthis.parameters = {\n\t\t\tshapes: shapes,\n\t\t\tcurveSegments: curveSegments\n\t\t};\n\n\t\tthis.fromBufferGeometry( new ShapeBufferGeometry( shapes, curveSegments ) );\n\t\tthis.mergeVertices();\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = Geometry.prototype.toJSON.call( this );\n\n\t\tconst shapes = this.parameters.shapes;\n\n\t\treturn toJSON$1( shapes, data );\n\n\t}\n\n}\n\n// ShapeBufferGeometry\n\nclass ShapeBufferGeometry extends BufferGeometry {\n\n\tconstructor( shapes, curveSegments ) {\n\n\t\tsuper();\n\t\tthis.type = 'ShapeBufferGeometry';\n\n\t\tthis.parameters = {\n\t\t\tshapes: shapes,\n\t\t\tcurveSegments: curveSegments\n\t\t};\n\n\t\tcurveSegments = curveSegments || 12;\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tlet groupStart = 0;\n\t\tlet groupCount = 0;\n\n\t\t// allow single and array values for \"shapes\" parameter\n\n\t\tif ( Array.isArray( shapes ) === false ) {\n\n\t\t\taddShape( shapes );\n\n\t\t} else {\n\n\t\t\tfor ( let i = 0; i < shapes.length; i ++ ) {\n\n\t\t\t\taddShape( shapes[ i ] );\n\n\t\t\t\tthis.addGroup( groupStart, groupCount, i ); // enables MultiMaterial support\n\n\t\t\t\tgroupStart += groupCount;\n\t\t\t\tgroupCount = 0;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\n\t\t// helper functions\n\n\t\tfunction addShape( shape ) {\n\n\t\t\tconst indexOffset = vertices.length / 3;\n\t\t\tconst points = shape.extractPoints( curveSegments );\n\n\t\t\tlet shapeVertices = points.shape;\n\t\t\tconst shapeHoles = points.holes;\n\n\t\t\t// check direction of vertices\n\n\t\t\tif ( ShapeUtils.isClockWise( shapeVertices ) === false ) {\n\n\t\t\t\tshapeVertices = shapeVertices.reverse();\n\n\t\t\t}\n\n\t\t\tfor ( let i = 0, l = shapeHoles.length; i < l; i ++ ) {\n\n\t\t\t\tconst shapeHole = shapeHoles[ i ];\n\n\t\t\t\tif ( ShapeUtils.isClockWise( shapeHole ) === true ) {\n\n\t\t\t\t\tshapeHoles[ i ] = shapeHole.reverse();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst faces = ShapeUtils.triangulateShape( shapeVertices, shapeHoles );\n\n\t\t\t// join vertices of inner and outer paths to a single array\n\n\t\t\tfor ( let i = 0, l = shapeHoles.length; i < l; i ++ ) {\n\n\t\t\t\tconst shapeHole = shapeHoles[ i ];\n\t\t\t\tshapeVertices = shapeVertices.concat( shapeHole );\n\n\t\t\t}\n\n\t\t\t// vertices, normals, uvs\n\n\t\t\tfor ( let i = 0, l = shapeVertices.length; i < l; i ++ ) {\n\n\t\t\t\tconst vertex = shapeVertices[ i ];\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, 0 );\n\t\t\t\tnormals.push( 0, 0, 1 );\n\t\t\t\tuvs.push( vertex.x, vertex.y ); // world uvs\n\n\t\t\t}\n\n\t\t\t// incides\n\n\t\t\tfor ( let i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\t\t\tconst face = faces[ i ];\n\n\t\t\t\tconst a = face[ 0 ] + indexOffset;\n\t\t\t\tconst b = face[ 1 ] + indexOffset;\n\t\t\t\tconst c = face[ 2 ] + indexOffset;\n\n\t\t\t\tindices.push( a, b, c );\n\t\t\t\tgroupCount += 3;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = BufferGeometry.prototype.toJSON.call( this );\n\n\t\tconst shapes = this.parameters.shapes;\n\n\t\treturn toJSON$1( shapes, data );\n\n\t}\n\n}\n\n//\n\nfunction toJSON$1( shapes, data ) {\n\n\tdata.shapes = [];\n\n\tif ( Array.isArray( shapes ) ) {\n\n\t\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\tconst shape = shapes[ i ];\n\n\t\t\tdata.shapes.push( shape.uuid );\n\n\t\t}\n\n\t} else {\n\n\t\tdata.shapes.push( shapes.uuid );\n\n\t}\n\n\treturn data;\n\n}\n\nclass EdgesGeometry extends BufferGeometry {\n\n\tconstructor( geometry, thresholdAngle ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'EdgesGeometry';\n\n\t\tthis.parameters = {\n\t\t\tthresholdAngle: thresholdAngle\n\t\t};\n\n\t\tthresholdAngle = ( thresholdAngle !== undefined ) ? thresholdAngle : 1;\n\n\t\t// buffer\n\n\t\tconst vertices = [];\n\n\t\t// helper variables\n\n\t\tconst thresholdDot = Math.cos( MathUtils.DEG2RAD * thresholdAngle );\n\t\tconst edge = [ 0, 0 ], edges = {};\n\t\tlet edge1, edge2, key;\n\t\tconst keys = [ 'a', 'b', 'c' ];\n\n\t\t// prepare source geometry\n\n\t\tlet geometry2;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tgeometry2 = new Geometry();\n\t\t\tgeometry2.fromBufferGeometry( geometry );\n\n\t\t} else {\n\n\t\t\tgeometry2 = geometry.clone();\n\n\t\t}\n\n\t\tgeometry2.mergeVertices();\n\t\tgeometry2.computeFaceNormals();\n\n\t\tconst sourceVertices = geometry2.vertices;\n\t\tconst faces = geometry2.faces;\n\n\t\t// now create a data structure where each entry represents an edge with its adjoining faces\n\n\t\tfor ( let i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\t\tconst face = faces[ i ];\n\n\t\t\tfor ( let j = 0; j < 3; j ++ ) {\n\n\t\t\t\tedge1 = face[ keys[ j ] ];\n\t\t\t\tedge2 = face[ keys[ ( j + 1 ) % 3 ] ];\n\t\t\t\tedge[ 0 ] = Math.min( edge1, edge2 );\n\t\t\t\tedge[ 1 ] = Math.max( edge1, edge2 );\n\n\t\t\t\tkey = edge[ 0 ] + ',' + edge[ 1 ];\n\n\t\t\t\tif ( edges[ key ] === undefined ) {\n\n\t\t\t\t\tedges[ key ] = { index1: edge[ 0 ], index2: edge[ 1 ], face1: i, face2: undefined };\n\n\t\t\t\t} else {\n\n\t\t\t\t\tedges[ key ].face2 = i;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// generate vertices\n\n\t\tfor ( key in edges ) {\n\n\t\t\tconst e = edges[ key ];\n\n\t\t\t// an edge is only rendered if the angle (in degrees) between the face normals of the adjoining faces exceeds this value. default = 1 degree.\n\n\t\t\tif ( e.face2 === undefined || faces[ e.face1 ].normal.dot( faces[ e.face2 ].normal ) <= thresholdDot ) {\n\n\t\t\t\tlet vertex = sourceVertices[ e.index1 ];\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\tvertex = sourceVertices[ e.index2 ];\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\n\t}\n\n}\n\n// CylinderGeometry\n\nclass CylinderGeometry extends Geometry {\n\n\tconstructor( radiusTop, radiusBottom, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) {\n\n\t\tsuper();\n\t\tthis.type = 'CylinderGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradiusTop: radiusTop,\n\t\t\tradiusBottom: radiusBottom,\n\t\t\theight: height,\n\t\t\tradialSegments: radialSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\topenEnded: openEnded,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t\tthis.fromBufferGeometry( new CylinderBufferGeometry( radiusTop, radiusBottom, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) );\n\t\tthis.mergeVertices();\n\n\t}\n\n}\n\n// CylinderBufferGeometry\n\nclass CylinderBufferGeometry extends BufferGeometry {\n\n\tconstructor( radiusTop, radiusBottom, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) {\n\n\t\tsuper();\n\t\tthis.type = 'CylinderBufferGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradiusTop: radiusTop,\n\t\t\tradiusBottom: radiusBottom,\n\t\t\theight: height,\n\t\t\tradialSegments: radialSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\topenEnded: openEnded,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t\tconst scope = this;\n\n\t\tradiusTop = radiusTop !== undefined ? radiusTop : 1;\n\t\tradiusBottom = radiusBottom !== undefined ? radiusBottom : 1;\n\t\theight = height || 1;\n\n\t\tradialSegments = Math.floor( radialSegments ) || 8;\n\t\theightSegments = Math.floor( heightSegments ) || 1;\n\n\t\topenEnded = openEnded !== undefined ? openEnded : false;\n\t\tthetaStart = thetaStart !== undefined ? thetaStart : 0.0;\n\t\tthetaLength = thetaLength !== undefined ? thetaLength : Math.PI * 2;\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tlet index = 0;\n\t\tconst indexArray = [];\n\t\tconst halfHeight = height / 2;\n\t\tlet groupStart = 0;\n\n\t\t// generate geometry\n\n\t\tgenerateTorso();\n\n\t\tif ( openEnded === false ) {\n\n\t\t\tif ( radiusTop > 0 ) generateCap( true );\n\t\t\tif ( radiusBottom > 0 ) generateCap( false );\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t\tfunction generateTorso() {\n\n\t\t\tconst normal = new Vector3();\n\t\t\tconst vertex = new Vector3();\n\n\t\t\tlet groupCount = 0;\n\n\t\t\t// this will be used to calculate the normal\n\t\t\tconst slope = ( radiusBottom - radiusTop ) / height;\n\n\t\t\t// generate vertices, normals and uvs\n\n\t\t\tfor ( let y = 0; y <= heightSegments; y ++ ) {\n\n\t\t\t\tconst indexRow = [];\n\n\t\t\t\tconst v = y / heightSegments;\n\n\t\t\t\t// calculate the radius of the current row\n\n\t\t\t\tconst radius = v * ( radiusBottom - radiusTop ) + radiusTop;\n\n\t\t\t\tfor ( let x = 0; x <= radialSegments; x ++ ) {\n\n\t\t\t\t\tconst u = x / radialSegments;\n\n\t\t\t\t\tconst theta = u * thetaLength + thetaStart;\n\n\t\t\t\t\tconst sinTheta = Math.sin( theta );\n\t\t\t\t\tconst cosTheta = Math.cos( theta );\n\n\t\t\t\t\t// vertex\n\n\t\t\t\t\tvertex.x = radius * sinTheta;\n\t\t\t\t\tvertex.y = - v * height + halfHeight;\n\t\t\t\t\tvertex.z = radius * cosTheta;\n\t\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t\t// normal\n\n\t\t\t\t\tnormal.set( sinTheta, slope, cosTheta ).normalize();\n\t\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t\t// uv\n\n\t\t\t\t\tuvs.push( u, 1 - v );\n\n\t\t\t\t\t// save index of vertex in respective row\n\n\t\t\t\t\tindexRow.push( index ++ );\n\n\t\t\t\t}\n\n\t\t\t\t// now save vertices of the row in our index array\n\n\t\t\t\tindexArray.push( indexRow );\n\n\t\t\t}\n\n\t\t\t// generate indices\n\n\t\t\tfor ( let x = 0; x < radialSegments; x ++ ) {\n\n\t\t\t\tfor ( let y = 0; y < heightSegments; y ++ ) {\n\n\t\t\t\t\t// we use the index array to access the correct indices\n\n\t\t\t\t\tconst a = indexArray[ y ][ x ];\n\t\t\t\t\tconst b = indexArray[ y + 1 ][ x ];\n\t\t\t\t\tconst c = indexArray[ y + 1 ][ x + 1 ];\n\t\t\t\t\tconst d = indexArray[ y ][ x + 1 ];\n\n\t\t\t\t\t// faces\n\n\t\t\t\t\tindices.push( a, b, d );\n\t\t\t\t\tindices.push( b, c, d );\n\n\t\t\t\t\t// update group counter\n\n\t\t\t\t\tgroupCount += 6;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// add a group to the geometry. this will ensure multi material support\n\n\t\t\tscope.addGroup( groupStart, groupCount, 0 );\n\n\t\t\t// calculate new start value for groups\n\n\t\t\tgroupStart += groupCount;\n\n\t\t}\n\n\t\tfunction generateCap( top ) {\n\n\t\t\t// save the index of the first center vertex\n\t\t\tconst centerIndexStart = index;\n\n\t\t\tconst uv = new Vector2();\n\t\t\tconst vertex = new Vector3();\n\n\t\t\tlet groupCount = 0;\n\n\t\t\tconst radius = ( top === true ) ? radiusTop : radiusBottom;\n\t\t\tconst sign = ( top === true ) ? 1 : - 1;\n\n\t\t\t// first we generate the center vertex data of the cap.\n\t\t\t// because the geometry needs one set of uvs per face,\n\t\t\t// we must generate a center vertex per face/segment\n\n\t\t\tfor ( let x = 1; x <= radialSegments; x ++ ) {\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertices.push( 0, halfHeight * sign, 0 );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormals.push( 0, sign, 0 );\n\n\t\t\t\t// uv\n\n\t\t\t\tuvs.push( 0.5, 0.5 );\n\n\t\t\t\t// increase index\n\n\t\t\t\tindex ++;\n\n\t\t\t}\n\n\t\t\t// save the index of the last center vertex\n\t\t\tconst centerIndexEnd = index;\n\n\t\t\t// now we generate the surrounding vertices, normals and uvs\n\n\t\t\tfor ( let x = 0; x <= radialSegments; x ++ ) {\n\n\t\t\t\tconst u = x / radialSegments;\n\t\t\t\tconst theta = u * thetaLength + thetaStart;\n\n\t\t\t\tconst cosTheta = Math.cos( theta );\n\t\t\t\tconst sinTheta = Math.sin( theta );\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = radius * sinTheta;\n\t\t\t\tvertex.y = halfHeight * sign;\n\t\t\t\tvertex.z = radius * cosTheta;\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormals.push( 0, sign, 0 );\n\n\t\t\t\t// uv\n\n\t\t\t\tuv.x = ( cosTheta * 0.5 ) + 0.5;\n\t\t\t\tuv.y = ( sinTheta * 0.5 * sign ) + 0.5;\n\t\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t\t// increase index\n\n\t\t\t\tindex ++;\n\n\t\t\t}\n\n\t\t\t// generate indices\n\n\t\t\tfor ( let x = 0; x < radialSegments; x ++ ) {\n\n\t\t\t\tconst c = centerIndexStart + x;\n\t\t\t\tconst i = centerIndexEnd + x;\n\n\t\t\t\tif ( top === true ) {\n\n\t\t\t\t\t// face top\n\n\t\t\t\t\tindices.push( i, i + 1, c );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// face bottom\n\n\t\t\t\t\tindices.push( i + 1, i, c );\n\n\t\t\t\t}\n\n\t\t\t\tgroupCount += 3;\n\n\t\t\t}\n\n\t\t\t// add a group to the geometry. this will ensure multi material support\n\n\t\t\tscope.addGroup( groupStart, groupCount, top === true ? 1 : 2 );\n\n\t\t\t// calculate new start value for groups\n\n\t\t\tgroupStart += groupCount;\n\n\t\t}\n\n\t}\n\n}\n\n// ConeGeometry\n\nclass ConeGeometry extends CylinderGeometry {\n\n\tconstructor( radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) {\n\n\t\tsuper( 0, radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength );\n\t\tthis.type = 'ConeGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\theight: height,\n\t\t\tradialSegments: radialSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\topenEnded: openEnded,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t}\n\n}\n\n// ConeBufferGeometry\n\nclass ConeBufferGeometry extends CylinderBufferGeometry {\n\n\tconstructor( radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) {\n\n\t\tsuper( 0, radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength );\n\t\tthis.type = 'ConeBufferGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\theight: height,\n\t\t\tradialSegments: radialSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\topenEnded: openEnded,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t}\n\n}\n\n// CircleGeometry\n\nclass CircleGeometry extends Geometry {\n\n\tconstructor( radius, segments, thetaStart, thetaLength ) {\n\n\t\tsuper();\n\t\tthis.type = 'CircleGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tsegments: segments,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t\tthis.fromBufferGeometry( new CircleBufferGeometry( radius, segments, thetaStart, thetaLength ) );\n\t\tthis.mergeVertices();\n\n\t}\n\n}\n\n// CircleBufferGeometry\n\nclass CircleBufferGeometry extends BufferGeometry {\n\n\tconstructor( radius, segments, thetaStart, thetaLength ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'CircleBufferGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tsegments: segments,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t\tradius = radius || 1;\n\t\tsegments = segments !== undefined ? Math.max( 3, segments ) : 8;\n\n\t\tthetaStart = thetaStart !== undefined ? thetaStart : 0;\n\t\tthetaLength = thetaLength !== undefined ? thetaLength : Math.PI * 2;\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tconst vertex = new Vector3();\n\t\tconst uv = new Vector2();\n\n\t\t// center point\n\n\t\tvertices.push( 0, 0, 0 );\n\t\tnormals.push( 0, 0, 1 );\n\t\tuvs.push( 0.5, 0.5 );\n\n\t\tfor ( let s = 0, i = 3; s <= segments; s ++, i += 3 ) {\n\n\t\t\tconst segment = thetaStart + s / segments * thetaLength;\n\n\t\t\t// vertex\n\n\t\t\tvertex.x = radius * Math.cos( segment );\n\t\t\tvertex.y = radius * Math.sin( segment );\n\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t// normal\n\n\t\t\tnormals.push( 0, 0, 1 );\n\n\t\t\t// uvs\n\n\t\t\tuv.x = ( vertices[ i ] / radius + 1 ) / 2;\n\t\t\tuv.y = ( vertices[ i + 1 ] / radius + 1 ) / 2;\n\n\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t}\n\n\t\t// indices\n\n\t\tfor ( let i = 1; i <= segments; i ++ ) {\n\n\t\t\tindices.push( i, i + 1, 0 );\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t}\n\n}\n\nvar Geometries = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tWireframeGeometry: WireframeGeometry,\n\tParametricGeometry: ParametricGeometry,\n\tParametricBufferGeometry: ParametricBufferGeometry,\n\tTetrahedronGeometry: TetrahedronGeometry,\n\tTetrahedronBufferGeometry: TetrahedronBufferGeometry,\n\tOctahedronGeometry: OctahedronGeometry,\n\tOctahedronBufferGeometry: OctahedronBufferGeometry,\n\tIcosahedronGeometry: IcosahedronGeometry,\n\tIcosahedronBufferGeometry: IcosahedronBufferGeometry,\n\tDodecahedronGeometry: DodecahedronGeometry,\n\tDodecahedronBufferGeometry: DodecahedronBufferGeometry,\n\tPolyhedronGeometry: PolyhedronGeometry,\n\tPolyhedronBufferGeometry: PolyhedronBufferGeometry,\n\tTubeGeometry: TubeGeometry,\n\tTubeBufferGeometry: TubeBufferGeometry,\n\tTorusKnotGeometry: TorusKnotGeometry,\n\tTorusKnotBufferGeometry: TorusKnotBufferGeometry,\n\tTorusGeometry: TorusGeometry,\n\tTorusBufferGeometry: TorusBufferGeometry,\n\tTextGeometry: TextGeometry,\n\tTextBufferGeometry: TextBufferGeometry,\n\tSphereGeometry: SphereGeometry,\n\tSphereBufferGeometry: SphereBufferGeometry,\n\tRingGeometry: RingGeometry,\n\tRingBufferGeometry: RingBufferGeometry,\n\tPlaneGeometry: PlaneGeometry,\n\tPlaneBufferGeometry: PlaneBufferGeometry,\n\tLatheGeometry: LatheGeometry,\n\tLatheBufferGeometry: LatheBufferGeometry,\n\tShapeGeometry: ShapeGeometry,\n\tShapeBufferGeometry: ShapeBufferGeometry,\n\tExtrudeGeometry: ExtrudeGeometry,\n\tExtrudeBufferGeometry: ExtrudeBufferGeometry,\n\tEdgesGeometry: EdgesGeometry,\n\tConeGeometry: ConeGeometry,\n\tConeBufferGeometry: ConeBufferGeometry,\n\tCylinderGeometry: CylinderGeometry,\n\tCylinderBufferGeometry: CylinderBufferGeometry,\n\tCircleGeometry: CircleGeometry,\n\tCircleBufferGeometry: CircleBufferGeometry,\n\tBoxGeometry: BoxGeometry,\n\tBoxBufferGeometry: BoxBufferGeometry\n});\n\n/**\n * parameters = {\n *  color: <THREE.Color>\n * }\n */\n\nfunction ShadowMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'ShadowMaterial';\n\n\tthis.color = new Color( 0x000000 );\n\tthis.transparent = true;\n\n\tthis.setValues( parameters );\n\n}\n\nShadowMaterial.prototype = Object.create( Material.prototype );\nShadowMaterial.prototype.constructor = ShadowMaterial;\n\nShadowMaterial.prototype.isShadowMaterial = true;\n\nShadowMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\treturn this;\n\n};\n\nfunction RawShaderMaterial( parameters ) {\n\n\tShaderMaterial.call( this, parameters );\n\n\tthis.type = 'RawShaderMaterial';\n\n}\n\nRawShaderMaterial.prototype = Object.create( ShaderMaterial.prototype );\nRawShaderMaterial.prototype.constructor = RawShaderMaterial;\n\nRawShaderMaterial.prototype.isRawShaderMaterial = true;\n\n/**\n * parameters = {\n *  color: <hex>,\n *  roughness: <float>,\n *  metalness: <float>,\n *  opacity: <float>,\n *\n *  map: new THREE.Texture( <Image> ),\n *\n *  lightMap: new THREE.Texture( <Image> ),\n *  lightMapIntensity: <float>\n *\n *  aoMap: new THREE.Texture( <Image> ),\n *  aoMapIntensity: <float>\n *\n *  emissive: <hex>,\n *  emissiveIntensity: <float>\n *  emissiveMap: new THREE.Texture( <Image> ),\n *\n *  bumpMap: new THREE.Texture( <Image> ),\n *  bumpScale: <float>,\n *\n *  normalMap: new THREE.Texture( <Image> ),\n *  normalMapType: THREE.TangentSpaceNormalMap,\n *  normalScale: <Vector2>,\n *\n *  displacementMap: new THREE.Texture( <Image> ),\n *  displacementScale: <float>,\n *  displacementBias: <float>,\n *\n *  roughnessMap: new THREE.Texture( <Image> ),\n *\n *  metalnessMap: new THREE.Texture( <Image> ),\n *\n *  alphaMap: new THREE.Texture( <Image> ),\n *\n *  envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ),\n *  envMapIntensity: <float>\n *\n *  refractionRatio: <float>,\n *\n *  wireframe: <boolean>,\n *  wireframeLinewidth: <float>,\n *\n *  skinning: <bool>,\n *  morphTargets: <bool>,\n *  morphNormals: <bool>\n * }\n */\n\nfunction MeshStandardMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.defines = { 'STANDARD': '' };\n\n\tthis.type = 'MeshStandardMaterial';\n\n\tthis.color = new Color( 0xffffff ); // diffuse\n\tthis.roughness = 1.0;\n\tthis.metalness = 0.0;\n\n\tthis.map = null;\n\n\tthis.lightMap = null;\n\tthis.lightMapIntensity = 1.0;\n\n\tthis.aoMap = null;\n\tthis.aoMapIntensity = 1.0;\n\n\tthis.emissive = new Color( 0x000000 );\n\tthis.emissiveIntensity = 1.0;\n\tthis.emissiveMap = null;\n\n\tthis.bumpMap = null;\n\tthis.bumpScale = 1;\n\n\tthis.normalMap = null;\n\tthis.normalMapType = TangentSpaceNormalMap;\n\tthis.normalScale = new Vector2( 1, 1 );\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.roughnessMap = null;\n\n\tthis.metalnessMap = null;\n\n\tthis.alphaMap = null;\n\n\tthis.envMap = null;\n\tthis.envMapIntensity = 1.0;\n\n\tthis.refractionRatio = 0.98;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\tthis.wireframeLinecap = 'round';\n\tthis.wireframeLinejoin = 'round';\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\tthis.morphNormals = false;\n\n\tthis.vertexTangents = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshStandardMaterial.prototype = Object.create( Material.prototype );\nMeshStandardMaterial.prototype.constructor = MeshStandardMaterial;\n\nMeshStandardMaterial.prototype.isMeshStandardMaterial = true;\n\nMeshStandardMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.defines = { 'STANDARD': '' };\n\n\tthis.color.copy( source.color );\n\tthis.roughness = source.roughness;\n\tthis.metalness = source.metalness;\n\n\tthis.map = source.map;\n\n\tthis.lightMap = source.lightMap;\n\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\tthis.aoMap = source.aoMap;\n\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\tthis.emissive.copy( source.emissive );\n\tthis.emissiveMap = source.emissiveMap;\n\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\tthis.bumpMap = source.bumpMap;\n\tthis.bumpScale = source.bumpScale;\n\n\tthis.normalMap = source.normalMap;\n\tthis.normalMapType = source.normalMapType;\n\tthis.normalScale.copy( source.normalScale );\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\tthis.roughnessMap = source.roughnessMap;\n\n\tthis.metalnessMap = source.metalnessMap;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.envMap = source.envMap;\n\tthis.envMapIntensity = source.envMapIntensity;\n\n\tthis.refractionRatio = source.refractionRatio;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\tthis.wireframeLinecap = source.wireframeLinecap;\n\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\tthis.vertexTangents = source.vertexTangents;\n\n\treturn this;\n\n};\n\n/**\n * parameters = {\n *  clearcoat: <float>,\n *  clearcoatMap: new THREE.Texture( <Image> ),\n *  clearcoatRoughness: <float>,\n *  clearcoatRoughnessMap: new THREE.Texture( <Image> ),\n *  clearcoatNormalScale: <Vector2>,\n *  clearcoatNormalMap: new THREE.Texture( <Image> ),\n *\n *  reflectivity: <float>,\n *\n *  sheen: <Color>,\n *\n *  transmission: <float>,\n *  transmissionMap: new THREE.Texture( <Image> )\n * }\n */\n\nfunction MeshPhysicalMaterial( parameters ) {\n\n\tMeshStandardMaterial.call( this );\n\n\tthis.defines = {\n\n\t\t'STANDARD': '',\n\t\t'PHYSICAL': ''\n\n\t};\n\n\tthis.type = 'MeshPhysicalMaterial';\n\n\tthis.clearcoat = 0.0;\n\tthis.clearcoatMap = null;\n\tthis.clearcoatRoughness = 0.0;\n\tthis.clearcoatRoughnessMap = null;\n\tthis.clearcoatNormalScale = new Vector2( 1, 1 );\n\tthis.clearcoatNormalMap = null;\n\n\tthis.reflectivity = 0.5; // maps to F0 = 0.04\n\n\tthis.sheen = null; // null will disable sheen bsdf\n\n\tthis.transmission = 0.0;\n\tthis.transmissionMap = null;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshPhysicalMaterial.prototype = Object.create( MeshStandardMaterial.prototype );\nMeshPhysicalMaterial.prototype.constructor = MeshPhysicalMaterial;\n\nMeshPhysicalMaterial.prototype.isMeshPhysicalMaterial = true;\n\nMeshPhysicalMaterial.prototype.copy = function ( source ) {\n\n\tMeshStandardMaterial.prototype.copy.call( this, source );\n\n\tthis.defines = {\n\n\t\t'STANDARD': '',\n\t\t'PHYSICAL': ''\n\n\t};\n\n\tthis.clearcoat = source.clearcoat;\n\tthis.clearcoatMap = source.clearcoatMap;\n\tthis.clearcoatRoughness = source.clearcoatRoughness;\n\tthis.clearcoatRoughnessMap = source.clearcoatRoughnessMap;\n\tthis.clearcoatNormalMap = source.clearcoatNormalMap;\n\tthis.clearcoatNormalScale.copy( source.clearcoatNormalScale );\n\n\tthis.reflectivity = source.reflectivity;\n\n\tif ( source.sheen ) {\n\n\t\tthis.sheen = ( this.sheen || new Color() ).copy( source.sheen );\n\n\t} else {\n\n\t\tthis.sheen = null;\n\n\t}\n\n\tthis.transmission = source.transmission;\n\tthis.transmissionMap = source.transmissionMap;\n\n\treturn this;\n\n};\n\n/**\n * parameters = {\n *  color: <hex>,\n *  specular: <hex>,\n *  shininess: <float>,\n *  opacity: <float>,\n *\n *  map: new THREE.Texture( <Image> ),\n *\n *  lightMap: new THREE.Texture( <Image> ),\n *  lightMapIntensity: <float>\n *\n *  aoMap: new THREE.Texture( <Image> ),\n *  aoMapIntensity: <float>\n *\n *  emissive: <hex>,\n *  emissiveIntensity: <float>\n *  emissiveMap: new THREE.Texture( <Image> ),\n *\n *  bumpMap: new THREE.Texture( <Image> ),\n *  bumpScale: <float>,\n *\n *  normalMap: new THREE.Texture( <Image> ),\n *  normalMapType: THREE.TangentSpaceNormalMap,\n *  normalScale: <Vector2>,\n *\n *  displacementMap: new THREE.Texture( <Image> ),\n *  displacementScale: <float>,\n *  displacementBias: <float>,\n *\n *  specularMap: new THREE.Texture( <Image> ),\n *\n *  alphaMap: new THREE.Texture( <Image> ),\n *\n *  envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ),\n *  combine: THREE.MultiplyOperation,\n *  reflectivity: <float>,\n *  refractionRatio: <float>,\n *\n *  wireframe: <boolean>,\n *  wireframeLinewidth: <float>,\n *\n *  skinning: <bool>,\n *  morphTargets: <bool>,\n *  morphNormals: <bool>\n * }\n */\n\nfunction MeshPhongMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshPhongMaterial';\n\n\tthis.color = new Color( 0xffffff ); // diffuse\n\tthis.specular = new Color( 0x111111 );\n\tthis.shininess = 30;\n\n\tthis.map = null;\n\n\tthis.lightMap = null;\n\tthis.lightMapIntensity = 1.0;\n\n\tthis.aoMap = null;\n\tthis.aoMapIntensity = 1.0;\n\n\tthis.emissive = new Color( 0x000000 );\n\tthis.emissiveIntensity = 1.0;\n\tthis.emissiveMap = null;\n\n\tthis.bumpMap = null;\n\tthis.bumpScale = 1;\n\n\tthis.normalMap = null;\n\tthis.normalMapType = TangentSpaceNormalMap;\n\tthis.normalScale = new Vector2( 1, 1 );\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.specularMap = null;\n\n\tthis.alphaMap = null;\n\n\tthis.envMap = null;\n\tthis.combine = MultiplyOperation;\n\tthis.reflectivity = 1;\n\tthis.refractionRatio = 0.98;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\tthis.wireframeLinecap = 'round';\n\tthis.wireframeLinejoin = 'round';\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\tthis.morphNormals = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshPhongMaterial.prototype = Object.create( Material.prototype );\nMeshPhongMaterial.prototype.constructor = MeshPhongMaterial;\n\nMeshPhongMaterial.prototype.isMeshPhongMaterial = true;\n\nMeshPhongMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\tthis.specular.copy( source.specular );\n\tthis.shininess = source.shininess;\n\n\tthis.map = source.map;\n\n\tthis.lightMap = source.lightMap;\n\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\tthis.aoMap = source.aoMap;\n\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\tthis.emissive.copy( source.emissive );\n\tthis.emissiveMap = source.emissiveMap;\n\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\tthis.bumpMap = source.bumpMap;\n\tthis.bumpScale = source.bumpScale;\n\n\tthis.normalMap = source.normalMap;\n\tthis.normalMapType = source.normalMapType;\n\tthis.normalScale.copy( source.normalScale );\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\tthis.specularMap = source.specularMap;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.envMap = source.envMap;\n\tthis.combine = source.combine;\n\tthis.reflectivity = source.reflectivity;\n\tthis.refractionRatio = source.refractionRatio;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\tthis.wireframeLinecap = source.wireframeLinecap;\n\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\treturn this;\n\n};\n\n/**\n * parameters = {\n *  color: <hex>,\n *\n *  map: new THREE.Texture( <Image> ),\n *  gradientMap: new THREE.Texture( <Image> ),\n *\n *  lightMap: new THREE.Texture( <Image> ),\n *  lightMapIntensity: <float>\n *\n *  aoMap: new THREE.Texture( <Image> ),\n *  aoMapIntensity: <float>\n *\n *  emissive: <hex>,\n *  emissiveIntensity: <float>\n *  emissiveMap: new THREE.Texture( <Image> ),\n *\n *  bumpMap: new THREE.Texture( <Image> ),\n *  bumpScale: <float>,\n *\n *  normalMap: new THREE.Texture( <Image> ),\n *  normalMapType: THREE.TangentSpaceNormalMap,\n *  normalScale: <Vector2>,\n *\n *  displacementMap: new THREE.Texture( <Image> ),\n *  displacementScale: <float>,\n *  displacementBias: <float>,\n *\n *  alphaMap: new THREE.Texture( <Image> ),\n *\n *  wireframe: <boolean>,\n *  wireframeLinewidth: <float>,\n *\n *  skinning: <bool>,\n *  morphTargets: <bool>,\n *  morphNormals: <bool>\n * }\n */\n\nfunction MeshToonMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.defines = { 'TOON': '' };\n\n\tthis.type = 'MeshToonMaterial';\n\n\tthis.color = new Color( 0xffffff );\n\n\tthis.map = null;\n\tthis.gradientMap = null;\n\n\tthis.lightMap = null;\n\tthis.lightMapIntensity = 1.0;\n\n\tthis.aoMap = null;\n\tthis.aoMapIntensity = 1.0;\n\n\tthis.emissive = new Color( 0x000000 );\n\tthis.emissiveIntensity = 1.0;\n\tthis.emissiveMap = null;\n\n\tthis.bumpMap = null;\n\tthis.bumpScale = 1;\n\n\tthis.normalMap = null;\n\tthis.normalMapType = TangentSpaceNormalMap;\n\tthis.normalScale = new Vector2( 1, 1 );\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.alphaMap = null;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\tthis.wireframeLinecap = 'round';\n\tthis.wireframeLinejoin = 'round';\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\tthis.morphNormals = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshToonMaterial.prototype = Object.create( Material.prototype );\nMeshToonMaterial.prototype.constructor = MeshToonMaterial;\n\nMeshToonMaterial.prototype.isMeshToonMaterial = true;\n\nMeshToonMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\tthis.map = source.map;\n\tthis.gradientMap = source.gradientMap;\n\n\tthis.lightMap = source.lightMap;\n\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\tthis.aoMap = source.aoMap;\n\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\tthis.emissive.copy( source.emissive );\n\tthis.emissiveMap = source.emissiveMap;\n\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\tthis.bumpMap = source.bumpMap;\n\tthis.bumpScale = source.bumpScale;\n\n\tthis.normalMap = source.normalMap;\n\tthis.normalMapType = source.normalMapType;\n\tthis.normalScale.copy( source.normalScale );\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\tthis.wireframeLinecap = source.wireframeLinecap;\n\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\treturn this;\n\n};\n\n/**\n * parameters = {\n *  opacity: <float>,\n *\n *  bumpMap: new THREE.Texture( <Image> ),\n *  bumpScale: <float>,\n *\n *  normalMap: new THREE.Texture( <Image> ),\n *  normalMapType: THREE.TangentSpaceNormalMap,\n *  normalScale: <Vector2>,\n *\n *  displacementMap: new THREE.Texture( <Image> ),\n *  displacementScale: <float>,\n *  displacementBias: <float>,\n *\n *  wireframe: <boolean>,\n *  wireframeLinewidth: <float>\n *\n *  skinning: <bool>,\n *  morphTargets: <bool>,\n *  morphNormals: <bool>\n * }\n */\n\nfunction MeshNormalMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshNormalMaterial';\n\n\tthis.bumpMap = null;\n\tthis.bumpScale = 1;\n\n\tthis.normalMap = null;\n\tthis.normalMapType = TangentSpaceNormalMap;\n\tthis.normalScale = new Vector2( 1, 1 );\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\n\tthis.fog = false;\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\tthis.morphNormals = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshNormalMaterial.prototype = Object.create( Material.prototype );\nMeshNormalMaterial.prototype.constructor = MeshNormalMaterial;\n\nMeshNormalMaterial.prototype.isMeshNormalMaterial = true;\n\nMeshNormalMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.bumpMap = source.bumpMap;\n\tthis.bumpScale = source.bumpScale;\n\n\tthis.normalMap = source.normalMap;\n\tthis.normalMapType = source.normalMapType;\n\tthis.normalScale.copy( source.normalScale );\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\treturn this;\n\n};\n\n/**\n * parameters = {\n *  color: <hex>,\n *  opacity: <float>,\n *\n *  map: new THREE.Texture( <Image> ),\n *\n *  lightMap: new THREE.Texture( <Image> ),\n *  lightMapIntensity: <float>\n *\n *  aoMap: new THREE.Texture( <Image> ),\n *  aoMapIntensity: <float>\n *\n *  emissive: <hex>,\n *  emissiveIntensity: <float>\n *  emissiveMap: new THREE.Texture( <Image> ),\n *\n *  specularMap: new THREE.Texture( <Image> ),\n *\n *  alphaMap: new THREE.Texture( <Image> ),\n *\n *  envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ),\n *  combine: THREE.Multiply,\n *  reflectivity: <float>,\n *  refractionRatio: <float>,\n *\n *  wireframe: <boolean>,\n *  wireframeLinewidth: <float>,\n *\n *  skinning: <bool>,\n *  morphTargets: <bool>,\n *  morphNormals: <bool>\n * }\n */\n\nfunction MeshLambertMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshLambertMaterial';\n\n\tthis.color = new Color( 0xffffff ); // diffuse\n\n\tthis.map = null;\n\n\tthis.lightMap = null;\n\tthis.lightMapIntensity = 1.0;\n\n\tthis.aoMap = null;\n\tthis.aoMapIntensity = 1.0;\n\n\tthis.emissive = new Color( 0x000000 );\n\tthis.emissiveIntensity = 1.0;\n\tthis.emissiveMap = null;\n\n\tthis.specularMap = null;\n\n\tthis.alphaMap = null;\n\n\tthis.envMap = null;\n\tthis.combine = MultiplyOperation;\n\tthis.reflectivity = 1;\n\tthis.refractionRatio = 0.98;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\tthis.wireframeLinecap = 'round';\n\tthis.wireframeLinejoin = 'round';\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\tthis.morphNormals = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshLambertMaterial.prototype = Object.create( Material.prototype );\nMeshLambertMaterial.prototype.constructor = MeshLambertMaterial;\n\nMeshLambertMaterial.prototype.isMeshLambertMaterial = true;\n\nMeshLambertMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\tthis.map = source.map;\n\n\tthis.lightMap = source.lightMap;\n\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\tthis.aoMap = source.aoMap;\n\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\tthis.emissive.copy( source.emissive );\n\tthis.emissiveMap = source.emissiveMap;\n\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\tthis.specularMap = source.specularMap;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.envMap = source.envMap;\n\tthis.combine = source.combine;\n\tthis.reflectivity = source.reflectivity;\n\tthis.refractionRatio = source.refractionRatio;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\tthis.wireframeLinecap = source.wireframeLinecap;\n\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\treturn this;\n\n};\n\n/**\n * parameters = {\n *  color: <hex>,\n *  opacity: <float>,\n *\n *  matcap: new THREE.Texture( <Image> ),\n *\n *  map: new THREE.Texture( <Image> ),\n *\n *  bumpMap: new THREE.Texture( <Image> ),\n *  bumpScale: <float>,\n *\n *  normalMap: new THREE.Texture( <Image> ),\n *  normalMapType: THREE.TangentSpaceNormalMap,\n *  normalScale: <Vector2>,\n *\n *  displacementMap: new THREE.Texture( <Image> ),\n *  displacementScale: <float>,\n *  displacementBias: <float>,\n *\n *  alphaMap: new THREE.Texture( <Image> ),\n *\n *  skinning: <bool>,\n *  morphTargets: <bool>,\n *  morphNormals: <bool>\n * }\n */\n\nfunction MeshMatcapMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.defines = { 'MATCAP': '' };\n\n\tthis.type = 'MeshMatcapMaterial';\n\n\tthis.color = new Color( 0xffffff ); // diffuse\n\n\tthis.matcap = null;\n\n\tthis.map = null;\n\n\tthis.bumpMap = null;\n\tthis.bumpScale = 1;\n\n\tthis.normalMap = null;\n\tthis.normalMapType = TangentSpaceNormalMap;\n\tthis.normalScale = new Vector2( 1, 1 );\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.alphaMap = null;\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\tthis.morphNormals = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshMatcapMaterial.prototype = Object.create( Material.prototype );\nMeshMatcapMaterial.prototype.constructor = MeshMatcapMaterial;\n\nMeshMatcapMaterial.prototype.isMeshMatcapMaterial = true;\n\nMeshMatcapMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.defines = { 'MATCAP': '' };\n\n\tthis.color.copy( source.color );\n\n\tthis.matcap = source.matcap;\n\n\tthis.map = source.map;\n\n\tthis.bumpMap = source.bumpMap;\n\tthis.bumpScale = source.bumpScale;\n\n\tthis.normalMap = source.normalMap;\n\tthis.normalMapType = source.normalMapType;\n\tthis.normalScale.copy( source.normalScale );\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\treturn this;\n\n};\n\n/**\n * parameters = {\n *  color: <hex>,\n *  opacity: <float>,\n *\n *  linewidth: <float>,\n *\n *  scale: <float>,\n *  dashSize: <float>,\n *  gapSize: <float>\n * }\n */\n\nfunction LineDashedMaterial( parameters ) {\n\n\tLineBasicMaterial.call( this );\n\n\tthis.type = 'LineDashedMaterial';\n\n\tthis.scale = 1;\n\tthis.dashSize = 3;\n\tthis.gapSize = 1;\n\n\tthis.setValues( parameters );\n\n}\n\nLineDashedMaterial.prototype = Object.create( LineBasicMaterial.prototype );\nLineDashedMaterial.prototype.constructor = LineDashedMaterial;\n\nLineDashedMaterial.prototype.isLineDashedMaterial = true;\n\nLineDashedMaterial.prototype.copy = function ( source ) {\n\n\tLineBasicMaterial.prototype.copy.call( this, source );\n\n\tthis.scale = source.scale;\n\tthis.dashSize = source.dashSize;\n\tthis.gapSize = source.gapSize;\n\n\treturn this;\n\n};\n\nvar Materials = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tShadowMaterial: ShadowMaterial,\n\tSpriteMaterial: SpriteMaterial,\n\tRawShaderMaterial: RawShaderMaterial,\n\tShaderMaterial: ShaderMaterial,\n\tPointsMaterial: PointsMaterial,\n\tMeshPhysicalMaterial: MeshPhysicalMaterial,\n\tMeshStandardMaterial: MeshStandardMaterial,\n\tMeshPhongMaterial: MeshPhongMaterial,\n\tMeshToonMaterial: MeshToonMaterial,\n\tMeshNormalMaterial: MeshNormalMaterial,\n\tMeshLambertMaterial: MeshLambertMaterial,\n\tMeshDepthMaterial: MeshDepthMaterial,\n\tMeshDistanceMaterial: MeshDistanceMaterial,\n\tMeshBasicMaterial: MeshBasicMaterial,\n\tMeshMatcapMaterial: MeshMatcapMaterial,\n\tLineDashedMaterial: LineDashedMaterial,\n\tLineBasicMaterial: LineBasicMaterial,\n\tMaterial: Material\n});\n\nconst AnimationUtils = {\n\n\t// same as Array.prototype.slice, but also works on typed arrays\n\tarraySlice: function ( array, from, to ) {\n\n\t\tif ( AnimationUtils.isTypedArray( array ) ) {\n\n\t\t\t// in ios9 array.subarray(from, undefined) will return empty array\n\t\t\t// but array.subarray(from) or array.subarray(from, len) is correct\n\t\t\treturn new array.constructor( array.subarray( from, to !== undefined ? to : array.length ) );\n\n\t\t}\n\n\t\treturn array.slice( from, to );\n\n\t},\n\n\t// converts an array to a specific type\n\tconvertArray: function ( array, type, forceClone ) {\n\n\t\tif ( ! array || // let 'undefined' and 'null' pass\n\t\t\t! forceClone && array.constructor === type ) return array;\n\n\t\tif ( typeof type.BYTES_PER_ELEMENT === 'number' ) {\n\n\t\t\treturn new type( array ); // create typed array\n\n\t\t}\n\n\t\treturn Array.prototype.slice.call( array ); // create Array\n\n\t},\n\n\tisTypedArray: function ( object ) {\n\n\t\treturn ArrayBuffer.isView( object ) &&\n\t\t\t! ( object instanceof DataView );\n\n\t},\n\n\t// returns an array by which times and values can be sorted\n\tgetKeyframeOrder: function ( times ) {\n\n\t\tfunction compareTime( i, j ) {\n\n\t\t\treturn times[ i ] - times[ j ];\n\n\t\t}\n\n\t\tconst n = times.length;\n\t\tconst result = new Array( n );\n\t\tfor ( let i = 0; i !== n; ++ i ) result[ i ] = i;\n\n\t\tresult.sort( compareTime );\n\n\t\treturn result;\n\n\t},\n\n\t// uses the array previously returned by 'getKeyframeOrder' to sort data\n\tsortedArray: function ( values, stride, order ) {\n\n\t\tconst nValues = values.length;\n\t\tconst result = new values.constructor( nValues );\n\n\t\tfor ( let i = 0, dstOffset = 0; dstOffset !== nValues; ++ i ) {\n\n\t\t\tconst srcOffset = order[ i ] * stride;\n\n\t\t\tfor ( let j = 0; j !== stride; ++ j ) {\n\n\t\t\t\tresult[ dstOffset ++ ] = values[ srcOffset + j ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn result;\n\n\t},\n\n\t// function for parsing AOS keyframe formats\n\tflattenJSON: function ( jsonKeys, times, values, valuePropertyName ) {\n\n\t\tlet i = 1, key = jsonKeys[ 0 ];\n\n\t\twhile ( key !== undefined && key[ valuePropertyName ] === undefined ) {\n\n\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t}\n\n\t\tif ( key === undefined ) return; // no data\n\n\t\tlet value = key[ valuePropertyName ];\n\t\tif ( value === undefined ) return; // no data\n\n\t\tif ( Array.isArray( value ) ) {\n\n\t\t\tdo {\n\n\t\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\ttimes.push( key.time );\n\t\t\t\t\tvalues.push.apply( values, value ); // push all elements\n\n\t\t\t\t}\n\n\t\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t\t} while ( key !== undefined );\n\n\t\t} else if ( value.toArray !== undefined ) {\n\n\t\t\t// ...assume THREE.Math-ish\n\n\t\t\tdo {\n\n\t\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\ttimes.push( key.time );\n\t\t\t\t\tvalue.toArray( values, values.length );\n\n\t\t\t\t}\n\n\t\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t\t} while ( key !== undefined );\n\n\t\t} else {\n\n\t\t\t// otherwise push as-is\n\n\t\t\tdo {\n\n\t\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\ttimes.push( key.time );\n\t\t\t\t\tvalues.push( value );\n\n\t\t\t\t}\n\n\t\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t\t} while ( key !== undefined );\n\n\t\t}\n\n\t},\n\n\tsubclip: function ( sourceClip, name, startFrame, endFrame, fps ) {\n\n\t\tfps = fps || 30;\n\n\t\tconst clip = sourceClip.clone();\n\n\t\tclip.name = name;\n\n\t\tconst tracks = [];\n\n\t\tfor ( let i = 0; i < clip.tracks.length; ++ i ) {\n\n\t\t\tconst track = clip.tracks[ i ];\n\t\t\tconst valueSize = track.getValueSize();\n\n\t\t\tconst times = [];\n\t\t\tconst values = [];\n\n\t\t\tfor ( let j = 0; j < track.times.length; ++ j ) {\n\n\t\t\t\tconst frame = track.times[ j ] * fps;\n\n\t\t\t\tif ( frame < startFrame || frame >= endFrame ) continue;\n\n\t\t\t\ttimes.push( track.times[ j ] );\n\n\t\t\t\tfor ( let k = 0; k < valueSize; ++ k ) {\n\n\t\t\t\t\tvalues.push( track.values[ j * valueSize + k ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( times.length === 0 ) continue;\n\n\t\t\ttrack.times = AnimationUtils.convertArray( times, track.times.constructor );\n\t\t\ttrack.values = AnimationUtils.convertArray( values, track.values.constructor );\n\n\t\t\ttracks.push( track );\n\n\t\t}\n\n\t\tclip.tracks = tracks;\n\n\t\t// find minimum .times value across all tracks in the trimmed clip\n\n\t\tlet minStartTime = Infinity;\n\n\t\tfor ( let i = 0; i < clip.tracks.length; ++ i ) {\n\n\t\t\tif ( minStartTime > clip.tracks[ i ].times[ 0 ] ) {\n\n\t\t\t\tminStartTime = clip.tracks[ i ].times[ 0 ];\n\n\t\t\t}\n\n\t\t}\n\n\t\t// shift all tracks such that clip begins at t=0\n\n\t\tfor ( let i = 0; i < clip.tracks.length; ++ i ) {\n\n\t\t\tclip.tracks[ i ].shift( - 1 * minStartTime );\n\n\t\t}\n\n\t\tclip.resetDuration();\n\n\t\treturn clip;\n\n\t},\n\n\tmakeClipAdditive: function ( targetClip, referenceFrame, referenceClip, fps ) {\n\n\t\tif ( referenceFrame === undefined ) referenceFrame = 0;\n\t\tif ( referenceClip === undefined ) referenceClip = targetClip;\n\t\tif ( fps === undefined || fps <= 0 ) fps = 30;\n\n\t\tconst numTracks = targetClip.tracks.length;\n\t\tconst referenceTime = referenceFrame / fps;\n\n\t\t// Make each track's values relative to the values at the reference frame\n\t\tfor ( let i = 0; i < numTracks; ++ i ) {\n\n\t\t\tconst referenceTrack = referenceClip.tracks[ i ];\n\t\t\tconst referenceTrackType = referenceTrack.ValueTypeName;\n\n\t\t\t// Skip this track if it's non-numeric\n\t\t\tif ( referenceTrackType === 'bool' || referenceTrackType === 'string' ) continue;\n\n\t\t\t// Find the track in the target clip whose name and type matches the reference track\n\t\t\tconst targetTrack = targetClip.tracks.find( function ( track ) {\n\n\t\t\t\treturn track.name === referenceTrack.name\n\t\t\t\t\t&& track.ValueTypeName === referenceTrackType;\n\n\t\t\t} );\n\n\t\t\tif ( targetTrack === undefined ) continue;\n\n\t\t\tlet referenceOffset = 0;\n\t\t\tconst referenceValueSize = referenceTrack.getValueSize();\n\n\t\t\tif ( referenceTrack.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline ) {\n\n\t\t\t\treferenceOffset = referenceValueSize / 3;\n\n\t\t\t}\n\n\t\t\tlet targetOffset = 0;\n\t\t\tconst targetValueSize = targetTrack.getValueSize();\n\n\t\t\tif ( targetTrack.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline ) {\n\n\t\t\t\ttargetOffset = targetValueSize / 3;\n\n\t\t\t}\n\n\t\t\tconst lastIndex = referenceTrack.times.length - 1;\n\t\t\tlet referenceValue;\n\n\t\t\t// Find the value to subtract out of the track\n\t\t\tif ( referenceTime <= referenceTrack.times[ 0 ] ) {\n\n\t\t\t\t// Reference frame is earlier than the first keyframe, so just use the first keyframe\n\t\t\t\tconst startIndex = referenceOffset;\n\t\t\t\tconst endIndex = referenceValueSize - referenceOffset;\n\t\t\t\treferenceValue = AnimationUtils.arraySlice( referenceTrack.values, startIndex, endIndex );\n\n\t\t\t} else if ( referenceTime >= referenceTrack.times[ lastIndex ] ) {\n\n\t\t\t\t// Reference frame is after the last keyframe, so just use the last keyframe\n\t\t\t\tconst startIndex = lastIndex * referenceValueSize + referenceOffset;\n\t\t\t\tconst endIndex = startIndex + referenceValueSize - referenceOffset;\n\t\t\t\treferenceValue = AnimationUtils.arraySlice( referenceTrack.values, startIndex, endIndex );\n\n\t\t\t} else {\n\n\t\t\t\t// Interpolate to the reference value\n\t\t\t\tconst interpolant = referenceTrack.createInterpolant();\n\t\t\t\tconst startIndex = referenceOffset;\n\t\t\t\tconst endIndex = referenceValueSize - referenceOffset;\n\t\t\t\tinterpolant.evaluate( referenceTime );\n\t\t\t\treferenceValue = AnimationUtils.arraySlice( interpolant.resultBuffer, startIndex, endIndex );\n\n\t\t\t}\n\n\t\t\t// Conjugate the quaternion\n\t\t\tif ( referenceTrackType === 'quaternion' ) {\n\n\t\t\t\tconst referenceQuat = new Quaternion().fromArray( referenceValue ).normalize().conjugate();\n\t\t\t\treferenceQuat.toArray( referenceValue );\n\n\t\t\t}\n\n\t\t\t// Subtract the reference value from all of the track values\n\n\t\t\tconst numTimes = targetTrack.times.length;\n\t\t\tfor ( let j = 0; j < numTimes; ++ j ) {\n\n\t\t\t\tconst valueStart = j * targetValueSize + targetOffset;\n\n\t\t\t\tif ( referenceTrackType === 'quaternion' ) {\n\n\t\t\t\t\t// Multiply the conjugate for quaternion track types\n\t\t\t\t\tQuaternion.multiplyQuaternionsFlat(\n\t\t\t\t\t\ttargetTrack.values,\n\t\t\t\t\t\tvalueStart,\n\t\t\t\t\t\treferenceValue,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\ttargetTrack.values,\n\t\t\t\t\t\tvalueStart\n\t\t\t\t\t);\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconst valueEnd = targetValueSize - targetOffset * 2;\n\n\t\t\t\t\t// Subtract each value for all other numeric track types\n\t\t\t\t\tfor ( let k = 0; k < valueEnd; ++ k ) {\n\n\t\t\t\t\t\ttargetTrack.values[ valueStart + k ] -= referenceValue[ k ];\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\ttargetClip.blendMode = AdditiveAnimationBlendMode;\n\n\t\treturn targetClip;\n\n\t}\n\n};\n\n/**\n * Abstract base class of interpolants over parametric samples.\n *\n * The parameter domain is one dimensional, typically the time or a path\n * along a curve defined by the data.\n *\n * The sample values can have any dimensionality and derived classes may\n * apply special interpretations to the data.\n *\n * This class provides the interval seek in a Template Method, deferring\n * the actual interpolation to derived classes.\n *\n * Time complexity is O(1) for linear access crossing at most two points\n * and O(log N) for random access, where N is the number of positions.\n *\n * References:\n *\n * \t\thttp://www.oodesign.com/template-method-pattern.html\n *\n */\n\nfunction Interpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\tthis.parameterPositions = parameterPositions;\n\tthis._cachedIndex = 0;\n\n\tthis.resultBuffer = resultBuffer !== undefined ?\n\t\tresultBuffer : new sampleValues.constructor( sampleSize );\n\tthis.sampleValues = sampleValues;\n\tthis.valueSize = sampleSize;\n\n}\n\nObject.assign( Interpolant.prototype, {\n\n\tevaluate: function ( t ) {\n\n\t\tconst pp = this.parameterPositions;\n\t\tlet i1 = this._cachedIndex,\n\t\t\tt1 = pp[ i1 ],\n\t\t\tt0 = pp[ i1 - 1 ];\n\n\t\tvalidate_interval: {\n\n\t\t\tseek: {\n\n\t\t\t\tlet right;\n\n\t\t\t\tlinear_scan: {\n\n\t\t\t\t\t//- See http://jsperf.com/comparison-to-undefined/3\n\t\t\t\t\t//- slower code:\n\t\t\t\t\t//-\n\t\t\t\t\t//- \t\t\t\tif ( t >= t1 || t1 === undefined ) {\n\t\t\t\t\tforward_scan: if ( ! ( t < t1 ) ) {\n\n\t\t\t\t\t\tfor ( let giveUpAt = i1 + 2; ; ) {\n\n\t\t\t\t\t\t\tif ( t1 === undefined ) {\n\n\t\t\t\t\t\t\t\tif ( t < t0 ) break forward_scan;\n\n\t\t\t\t\t\t\t\t// after end\n\n\t\t\t\t\t\t\t\ti1 = pp.length;\n\t\t\t\t\t\t\t\tthis._cachedIndex = i1;\n\t\t\t\t\t\t\t\treturn this.afterEnd_( i1 - 1, t, t0 );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( i1 === giveUpAt ) break; // this loop\n\n\t\t\t\t\t\t\tt0 = t1;\n\t\t\t\t\t\t\tt1 = pp[ ++ i1 ];\n\n\t\t\t\t\t\t\tif ( t < t1 ) {\n\n\t\t\t\t\t\t\t\t// we have arrived at the sought interval\n\t\t\t\t\t\t\t\tbreak seek;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// prepare binary search on the right side of the index\n\t\t\t\t\t\tright = pp.length;\n\t\t\t\t\t\tbreak linear_scan;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t//- slower code:\n\t\t\t\t\t//-\t\t\t\t\tif ( t < t0 || t0 === undefined ) {\n\t\t\t\t\tif ( ! ( t >= t0 ) ) {\n\n\t\t\t\t\t\t// looping?\n\n\t\t\t\t\t\tconst t1global = pp[ 1 ];\n\n\t\t\t\t\t\tif ( t < t1global ) {\n\n\t\t\t\t\t\t\ti1 = 2; // + 1, using the scan for the details\n\t\t\t\t\t\t\tt0 = t1global;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// linear reverse scan\n\n\t\t\t\t\t\tfor ( let giveUpAt = i1 - 2; ; ) {\n\n\t\t\t\t\t\t\tif ( t0 === undefined ) {\n\n\t\t\t\t\t\t\t\t// before start\n\n\t\t\t\t\t\t\t\tthis._cachedIndex = 0;\n\t\t\t\t\t\t\t\treturn this.beforeStart_( 0, t, t1 );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( i1 === giveUpAt ) break; // this loop\n\n\t\t\t\t\t\t\tt1 = t0;\n\t\t\t\t\t\t\tt0 = pp[ -- i1 - 1 ];\n\n\t\t\t\t\t\t\tif ( t >= t0 ) {\n\n\t\t\t\t\t\t\t\t// we have arrived at the sought interval\n\t\t\t\t\t\t\t\tbreak seek;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// prepare binary search on the left side of the index\n\t\t\t\t\t\tright = i1;\n\t\t\t\t\t\ti1 = 0;\n\t\t\t\t\t\tbreak linear_scan;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// the interval is valid\n\n\t\t\t\t\tbreak validate_interval;\n\n\t\t\t\t} // linear scan\n\n\t\t\t\t// binary search\n\n\t\t\t\twhile ( i1 < right ) {\n\n\t\t\t\t\tconst mid = ( i1 + right ) >>> 1;\n\n\t\t\t\t\tif ( t < pp[ mid ] ) {\n\n\t\t\t\t\t\tright = mid;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\ti1 = mid + 1;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tt1 = pp[ i1 ];\n\t\t\t\tt0 = pp[ i1 - 1 ];\n\n\t\t\t\t// check boundary cases, again\n\n\t\t\t\tif ( t0 === undefined ) {\n\n\t\t\t\t\tthis._cachedIndex = 0;\n\t\t\t\t\treturn this.beforeStart_( 0, t, t1 );\n\n\t\t\t\t}\n\n\t\t\t\tif ( t1 === undefined ) {\n\n\t\t\t\t\ti1 = pp.length;\n\t\t\t\t\tthis._cachedIndex = i1;\n\t\t\t\t\treturn this.afterEnd_( i1 - 1, t0, t );\n\n\t\t\t\t}\n\n\t\t\t} // seek\n\n\t\t\tthis._cachedIndex = i1;\n\n\t\t\tthis.intervalChanged_( i1, t0, t1 );\n\n\t\t} // validate_interval\n\n\t\treturn this.interpolate_( i1, t0, t, t1 );\n\n\t},\n\n\tsettings: null, // optional, subclass-specific settings structure\n\t// Note: The indirection allows central control of many interpolants.\n\n\t// --- Protected interface\n\n\tDefaultSettings_: {},\n\n\tgetSettings_: function () {\n\n\t\treturn this.settings || this.DefaultSettings_;\n\n\t},\n\n\tcopySampleValue_: function ( index ) {\n\n\t\t// copies a sample value to the result buffer\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\t\t\toffset = index * stride;\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] = values[ offset + i ];\n\n\t\t}\n\n\t\treturn result;\n\n\t},\n\n\t// Template methods for derived classes:\n\n\tinterpolate_: function ( /* i1, t0, t, t1 */ ) {\n\n\t\tthrow new Error( 'call to abstract method' );\n\t\t// implementations shall return this.resultBuffer\n\n\t},\n\n\tintervalChanged_: function ( /* i1, t0, t1 */ ) {\n\n\t\t// empty\n\n\t}\n\n} );\n\n// DECLARE ALIAS AFTER assign prototype\nObject.assign( Interpolant.prototype, {\n\n\t//( 0, t, t0 ), returns this.resultBuffer\n\tbeforeStart_: Interpolant.prototype.copySampleValue_,\n\n\t//( N-1, tN-1, t ), returns this.resultBuffer\n\tafterEnd_: Interpolant.prototype.copySampleValue_,\n\n} );\n\n/**\n * Fast and simple cubic spline interpolant.\n *\n * It was derived from a Hermitian construction setting the first derivative\n * at each sample position to the linear slope between neighboring positions\n * over their parameter interval.\n */\n\nfunction CubicInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\tInterpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\tthis._weightPrev = - 0;\n\tthis._offsetPrev = - 0;\n\tthis._weightNext = - 0;\n\tthis._offsetNext = - 0;\n\n}\n\nCubicInterpolant.prototype = Object.assign( Object.create( Interpolant.prototype ), {\n\n\tconstructor: CubicInterpolant,\n\n\tDefaultSettings_: {\n\n\t\tendingStart: ZeroCurvatureEnding,\n\t\tendingEnd: ZeroCurvatureEnding\n\n\t},\n\n\tintervalChanged_: function ( i1, t0, t1 ) {\n\n\t\tconst pp = this.parameterPositions;\n\t\tlet iPrev = i1 - 2,\n\t\t\tiNext = i1 + 1,\n\n\t\t\ttPrev = pp[ iPrev ],\n\t\t\ttNext = pp[ iNext ];\n\n\t\tif ( tPrev === undefined ) {\n\n\t\t\tswitch ( this.getSettings_().endingStart ) {\n\n\t\t\t\tcase ZeroSlopeEnding:\n\n\t\t\t\t\t// f'(t0) = 0\n\t\t\t\t\tiPrev = i1;\n\t\t\t\t\ttPrev = 2 * t0 - t1;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase WrapAroundEnding:\n\n\t\t\t\t\t// use the other end of the curve\n\t\t\t\t\tiPrev = pp.length - 2;\n\t\t\t\t\ttPrev = t0 + pp[ iPrev ] - pp[ iPrev + 1 ];\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault: // ZeroCurvatureEnding\n\n\t\t\t\t\t// f''(t0) = 0 a.k.a. Natural Spline\n\t\t\t\t\tiPrev = i1;\n\t\t\t\t\ttPrev = t1;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( tNext === undefined ) {\n\n\t\t\tswitch ( this.getSettings_().endingEnd ) {\n\n\t\t\t\tcase ZeroSlopeEnding:\n\n\t\t\t\t\t// f'(tN) = 0\n\t\t\t\t\tiNext = i1;\n\t\t\t\t\ttNext = 2 * t1 - t0;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase WrapAroundEnding:\n\n\t\t\t\t\t// use the other end of the curve\n\t\t\t\t\tiNext = 1;\n\t\t\t\t\ttNext = t1 + pp[ 1 ] - pp[ 0 ];\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault: // ZeroCurvatureEnding\n\n\t\t\t\t\t// f''(tN) = 0, a.k.a. Natural Spline\n\t\t\t\t\tiNext = i1 - 1;\n\t\t\t\t\ttNext = t0;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst halfDt = ( t1 - t0 ) * 0.5,\n\t\t\tstride = this.valueSize;\n\n\t\tthis._weightPrev = halfDt / ( t0 - tPrev );\n\t\tthis._weightNext = halfDt / ( tNext - t1 );\n\t\tthis._offsetPrev = iPrev * stride;\n\t\tthis._offsetNext = iNext * stride;\n\n\t},\n\n\tinterpolate_: function ( i1, t0, t, t1 ) {\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\n\t\t\to1 = i1 * stride,\t\to0 = o1 - stride,\n\t\t\toP = this._offsetPrev, \toN = this._offsetNext,\n\t\t\twP = this._weightPrev,\twN = this._weightNext,\n\n\t\t\tp = ( t - t0 ) / ( t1 - t0 ),\n\t\t\tpp = p * p,\n\t\t\tppp = pp * p;\n\n\t\t// evaluate polynomials\n\n\t\tconst sP = - wP * ppp + 2 * wP * pp - wP * p;\n\t\tconst s0 = ( 1 + wP ) * ppp + ( - 1.5 - 2 * wP ) * pp + ( - 0.5 + wP ) * p + 1;\n\t\tconst s1 = ( - 1 - wN ) * ppp + ( 1.5 + wN ) * pp + 0.5 * p;\n\t\tconst sN = wN * ppp - wN * pp;\n\n\t\t// combine data linearly\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] =\n\t\t\t\t\tsP * values[ oP + i ] +\n\t\t\t\t\ts0 * values[ o0 + i ] +\n\t\t\t\t\ts1 * values[ o1 + i ] +\n\t\t\t\t\tsN * values[ oN + i ];\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n} );\n\nfunction LinearInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\tInterpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n}\n\nLinearInterpolant.prototype = Object.assign( Object.create( Interpolant.prototype ), {\n\n\tconstructor: LinearInterpolant,\n\n\tinterpolate_: function ( i1, t0, t, t1 ) {\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\n\t\t\toffset1 = i1 * stride,\n\t\t\toffset0 = offset1 - stride,\n\n\t\t\tweight1 = ( t - t0 ) / ( t1 - t0 ),\n\t\t\tweight0 = 1 - weight1;\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] =\n\t\t\t\t\tvalues[ offset0 + i ] * weight0 +\n\t\t\t\t\tvalues[ offset1 + i ] * weight1;\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n} );\n\n/**\n *\n * Interpolant that evaluates to the sample value at the position preceeding\n * the parameter.\n */\n\nfunction DiscreteInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\tInterpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n}\n\nDiscreteInterpolant.prototype = Object.assign( Object.create( Interpolant.prototype ), {\n\n\tconstructor: DiscreteInterpolant,\n\n\tinterpolate_: function ( i1 /*, t0, t, t1 */ ) {\n\n\t\treturn this.copySampleValue_( i1 - 1 );\n\n\t}\n\n} );\n\nfunction KeyframeTrack( name, times, values, interpolation ) {\n\n\tif ( name === undefined ) throw new Error( 'THREE.KeyframeTrack: track name is undefined' );\n\tif ( times === undefined || times.length === 0 ) throw new Error( 'THREE.KeyframeTrack: no keyframes in track named ' + name );\n\n\tthis.name = name;\n\n\tthis.times = AnimationUtils.convertArray( times, this.TimeBufferType );\n\tthis.values = AnimationUtils.convertArray( values, this.ValueBufferType );\n\n\tthis.setInterpolation( interpolation || this.DefaultInterpolation );\n\n}\n\n// Static methods\n\nObject.assign( KeyframeTrack, {\n\n\t// Serialization (in static context, because of constructor invocation\n\t// and automatic invocation of .toJSON):\n\n\ttoJSON: function ( track ) {\n\n\t\tconst trackType = track.constructor;\n\n\t\tlet json;\n\n\t\t// derived classes can define a static toJSON method\n\t\tif ( trackType.toJSON !== undefined ) {\n\n\t\t\tjson = trackType.toJSON( track );\n\n\t\t} else {\n\n\t\t\t// by default, we assume the data can be serialized as-is\n\t\t\tjson = {\n\n\t\t\t\t'name': track.name,\n\t\t\t\t'times': AnimationUtils.convertArray( track.times, Array ),\n\t\t\t\t'values': AnimationUtils.convertArray( track.values, Array )\n\n\t\t\t};\n\n\t\t\tconst interpolation = track.getInterpolation();\n\n\t\t\tif ( interpolation !== track.DefaultInterpolation ) {\n\n\t\t\t\tjson.interpolation = interpolation;\n\n\t\t\t}\n\n\t\t}\n\n\t\tjson.type = track.ValueTypeName; // mandatory\n\n\t\treturn json;\n\n\t}\n\n} );\n\nObject.assign( KeyframeTrack.prototype, {\n\n\tconstructor: KeyframeTrack,\n\n\tTimeBufferType: Float32Array,\n\n\tValueBufferType: Float32Array,\n\n\tDefaultInterpolation: InterpolateLinear,\n\n\tInterpolantFactoryMethodDiscrete: function ( result ) {\n\n\t\treturn new DiscreteInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t},\n\n\tInterpolantFactoryMethodLinear: function ( result ) {\n\n\t\treturn new LinearInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t},\n\n\tInterpolantFactoryMethodSmooth: function ( result ) {\n\n\t\treturn new CubicInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t},\n\n\tsetInterpolation: function ( interpolation ) {\n\n\t\tlet factoryMethod;\n\n\t\tswitch ( interpolation ) {\n\n\t\t\tcase InterpolateDiscrete:\n\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodDiscrete;\n\n\t\t\t\tbreak;\n\n\t\t\tcase InterpolateLinear:\n\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodLinear;\n\n\t\t\t\tbreak;\n\n\t\t\tcase InterpolateSmooth:\n\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodSmooth;\n\n\t\t\t\tbreak;\n\n\t\t}\n\n\t\tif ( factoryMethod === undefined ) {\n\n\t\t\tconst message = \"unsupported interpolation for \" +\n\t\t\t\tthis.ValueTypeName + \" keyframe track named \" + this.name;\n\n\t\t\tif ( this.createInterpolant === undefined ) {\n\n\t\t\t\t// fall back to default, unless the default itself is messed up\n\t\t\t\tif ( interpolation !== this.DefaultInterpolation ) {\n\n\t\t\t\t\tthis.setInterpolation( this.DefaultInterpolation );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthrow new Error( message ); // fatal, in this case\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconsole.warn( 'THREE.KeyframeTrack:', message );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tthis.createInterpolant = factoryMethod;\n\n\t\treturn this;\n\n\t},\n\n\tgetInterpolation: function () {\n\n\t\tswitch ( this.createInterpolant ) {\n\n\t\t\tcase this.InterpolantFactoryMethodDiscrete:\n\n\t\t\t\treturn InterpolateDiscrete;\n\n\t\t\tcase this.InterpolantFactoryMethodLinear:\n\n\t\t\t\treturn InterpolateLinear;\n\n\t\t\tcase this.InterpolantFactoryMethodSmooth:\n\n\t\t\t\treturn InterpolateSmooth;\n\n\t\t}\n\n\t},\n\n\tgetValueSize: function () {\n\n\t\treturn this.values.length / this.times.length;\n\n\t},\n\n\t// move all keyframes either forwards or backwards in time\n\tshift: function ( timeOffset ) {\n\n\t\tif ( timeOffset !== 0.0 ) {\n\n\t\t\tconst times = this.times;\n\n\t\t\tfor ( let i = 0, n = times.length; i !== n; ++ i ) {\n\n\t\t\t\ttimes[ i ] += timeOffset;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// scale all keyframe times by a factor (useful for frame <-> seconds conversions)\n\tscale: function ( timeScale ) {\n\n\t\tif ( timeScale !== 1.0 ) {\n\n\t\t\tconst times = this.times;\n\n\t\t\tfor ( let i = 0, n = times.length; i !== n; ++ i ) {\n\n\t\t\t\ttimes[ i ] *= timeScale;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// removes keyframes before and after animation without changing any values within the range [startTime, endTime].\n\t// IMPORTANT: We do not shift around keys to the start of the track time, because for interpolated keys this will change their values\n\ttrim: function ( startTime, endTime ) {\n\n\t\tconst times = this.times,\n\t\t\tnKeys = times.length;\n\n\t\tlet from = 0,\n\t\t\tto = nKeys - 1;\n\n\t\twhile ( from !== nKeys && times[ from ] < startTime ) {\n\n\t\t\t++ from;\n\n\t\t}\n\n\t\twhile ( to !== - 1 && times[ to ] > endTime ) {\n\n\t\t\t-- to;\n\n\t\t}\n\n\t\t++ to; // inclusive -> exclusive bound\n\n\t\tif ( from !== 0 || to !== nKeys ) {\n\n\t\t\t// empty tracks are forbidden, so keep at least one keyframe\n\t\t\tif ( from >= to ) {\n\n\t\t\t\tto = Math.max( to, 1 );\n\t\t\t\tfrom = to - 1;\n\n\t\t\t}\n\n\t\t\tconst stride = this.getValueSize();\n\t\t\tthis.times = AnimationUtils.arraySlice( times, from, to );\n\t\t\tthis.values = AnimationUtils.arraySlice( this.values, from * stride, to * stride );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// ensure we do not get a GarbageInGarbageOut situation, make sure tracks are at least minimally viable\n\tvalidate: function () {\n\n\t\tlet valid = true;\n\n\t\tconst valueSize = this.getValueSize();\n\t\tif ( valueSize - Math.floor( valueSize ) !== 0 ) {\n\n\t\t\tconsole.error( 'THREE.KeyframeTrack: Invalid value size in track.', this );\n\t\t\tvalid = false;\n\n\t\t}\n\n\t\tconst times = this.times,\n\t\t\tvalues = this.values,\n\n\t\t\tnKeys = times.length;\n\n\t\tif ( nKeys === 0 ) {\n\n\t\t\tconsole.error( 'THREE.KeyframeTrack: Track is empty.', this );\n\t\t\tvalid = false;\n\n\t\t}\n\n\t\tlet prevTime = null;\n\n\t\tfor ( let i = 0; i !== nKeys; i ++ ) {\n\n\t\t\tconst currTime = times[ i ];\n\n\t\t\tif ( typeof currTime === 'number' && isNaN( currTime ) ) {\n\n\t\t\t\tconsole.error( 'THREE.KeyframeTrack: Time is not a valid number.', this, i, currTime );\n\t\t\t\tvalid = false;\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tif ( prevTime !== null && prevTime > currTime ) {\n\n\t\t\t\tconsole.error( 'THREE.KeyframeTrack: Out of order keys.', this, i, currTime, prevTime );\n\t\t\t\tvalid = false;\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tprevTime = currTime;\n\n\t\t}\n\n\t\tif ( values !== undefined ) {\n\n\t\t\tif ( AnimationUtils.isTypedArray( values ) ) {\n\n\t\t\t\tfor ( let i = 0, n = values.length; i !== n; ++ i ) {\n\n\t\t\t\t\tconst value = values[ i ];\n\n\t\t\t\t\tif ( isNaN( value ) ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.KeyframeTrack: Value is not a valid number.', this, i, value );\n\t\t\t\t\t\tvalid = false;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn valid;\n\n\t},\n\n\t// removes equivalent sequential keys as common in morph target sequences\n\t// (0,0,0,0,1,1,1,0,0,0,0,0,0,0) --> (0,0,1,1,0,0)\n\toptimize: function () {\n\n\t\t// times or values may be shared with other tracks, so overwriting is unsafe\n\t\tconst times = AnimationUtils.arraySlice( this.times ),\n\t\t\tvalues = AnimationUtils.arraySlice( this.values ),\n\t\t\tstride = this.getValueSize(),\n\n\t\t\tsmoothInterpolation = this.getInterpolation() === InterpolateSmooth,\n\n\t\t\tlastIndex = times.length - 1;\n\n\t\tlet writeIndex = 1;\n\n\t\tfor ( let i = 1; i < lastIndex; ++ i ) {\n\n\t\t\tlet keep = false;\n\n\t\t\tconst time = times[ i ];\n\t\t\tconst timeNext = times[ i + 1 ];\n\n\t\t\t// remove adjacent keyframes scheduled at the same time\n\n\t\t\tif ( time !== timeNext && ( i !== 1 || time !== time[ 0 ] ) ) {\n\n\t\t\t\tif ( ! smoothInterpolation ) {\n\n\t\t\t\t\t// remove unnecessary keyframes same as their neighbors\n\n\t\t\t\t\tconst offset = i * stride,\n\t\t\t\t\t\toffsetP = offset - stride,\n\t\t\t\t\t\toffsetN = offset + stride;\n\n\t\t\t\t\tfor ( let j = 0; j !== stride; ++ j ) {\n\n\t\t\t\t\t\tconst value = values[ offset + j ];\n\n\t\t\t\t\t\tif ( value !== values[ offsetP + j ] ||\n\t\t\t\t\t\t\tvalue !== values[ offsetN + j ] ) {\n\n\t\t\t\t\t\t\tkeep = true;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tkeep = true;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// in-place compaction\n\n\t\t\tif ( keep ) {\n\n\t\t\t\tif ( i !== writeIndex ) {\n\n\t\t\t\t\ttimes[ writeIndex ] = times[ i ];\n\n\t\t\t\t\tconst readOffset = i * stride,\n\t\t\t\t\t\twriteOffset = writeIndex * stride;\n\n\t\t\t\t\tfor ( let j = 0; j !== stride; ++ j ) {\n\n\t\t\t\t\t\tvalues[ writeOffset + j ] = values[ readOffset + j ];\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t++ writeIndex;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// flush last keyframe (compaction looks ahead)\n\n\t\tif ( lastIndex > 0 ) {\n\n\t\t\ttimes[ writeIndex ] = times[ lastIndex ];\n\n\t\t\tfor ( let readOffset = lastIndex * stride, writeOffset = writeIndex * stride, j = 0; j !== stride; ++ j ) {\n\n\t\t\t\tvalues[ writeOffset + j ] = values[ readOffset + j ];\n\n\t\t\t}\n\n\t\t\t++ writeIndex;\n\n\t\t}\n\n\t\tif ( writeIndex !== times.length ) {\n\n\t\t\tthis.times = AnimationUtils.arraySlice( times, 0, writeIndex );\n\t\t\tthis.values = AnimationUtils.arraySlice( values, 0, writeIndex * stride );\n\n\t\t} else {\n\n\t\t\tthis.times = times;\n\t\t\tthis.values = values;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\tconst times = AnimationUtils.arraySlice( this.times, 0 );\n\t\tconst values = AnimationUtils.arraySlice( this.values, 0 );\n\n\t\tconst TypedKeyframeTrack = this.constructor;\n\t\tconst track = new TypedKeyframeTrack( this.name, times, values );\n\n\t\t// Interpolant argument to constructor is not saved, so copy the factory method directly.\n\t\ttrack.createInterpolant = this.createInterpolant;\n\n\t\treturn track;\n\n\t}\n\n} );\n\n/**\n * A Track of Boolean keyframe values.\n */\n\nfunction BooleanKeyframeTrack( name, times, values ) {\n\n\tKeyframeTrack.call( this, name, times, values );\n\n}\n\nBooleanKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\n\n\tconstructor: BooleanKeyframeTrack,\n\n\tValueTypeName: 'bool',\n\tValueBufferType: Array,\n\n\tDefaultInterpolation: InterpolateDiscrete,\n\n\tInterpolantFactoryMethodLinear: undefined,\n\tInterpolantFactoryMethodSmooth: undefined\n\n\t// Note: Actually this track could have a optimized / compressed\n\t// representation of a single value and a custom interpolant that\n\t// computes \"firstValue ^ isOdd( index )\".\n\n} );\n\n/**\n * A Track of keyframe values that represent color.\n */\n\nfunction ColorKeyframeTrack( name, times, values, interpolation ) {\n\n\tKeyframeTrack.call( this, name, times, values, interpolation );\n\n}\n\nColorKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\n\n\tconstructor: ColorKeyframeTrack,\n\n\tValueTypeName: 'color'\n\n\t// ValueBufferType is inherited\n\n\t// DefaultInterpolation is inherited\n\n\t// Note: Very basic implementation and nothing special yet.\n\t// However, this is the place for color space parameterization.\n\n} );\n\n/**\n * A Track of numeric keyframe values.\n */\n\nfunction NumberKeyframeTrack( name, times, values, interpolation ) {\n\n\tKeyframeTrack.call( this, name, times, values, interpolation );\n\n}\n\nNumberKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\n\n\tconstructor: NumberKeyframeTrack,\n\n\tValueTypeName: 'number'\n\n\t// ValueBufferType is inherited\n\n\t// DefaultInterpolation is inherited\n\n} );\n\n/**\n * Spherical linear unit quaternion interpolant.\n */\n\nfunction QuaternionLinearInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\tInterpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n}\n\nQuaternionLinearInterpolant.prototype = Object.assign( Object.create( Interpolant.prototype ), {\n\n\tconstructor: QuaternionLinearInterpolant,\n\n\tinterpolate_: function ( i1, t0, t, t1 ) {\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\n\t\t\talpha = ( t - t0 ) / ( t1 - t0 );\n\n\t\tlet offset = i1 * stride;\n\n\t\tfor ( let end = offset + stride; offset !== end; offset += 4 ) {\n\n\t\t\tQuaternion.slerpFlat( result, 0, values, offset - stride, values, offset, alpha );\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n} );\n\n/**\n * A Track of quaternion keyframe values.\n */\n\nfunction QuaternionKeyframeTrack( name, times, values, interpolation ) {\n\n\tKeyframeTrack.call( this, name, times, values, interpolation );\n\n}\n\nQuaternionKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\n\n\tconstructor: QuaternionKeyframeTrack,\n\n\tValueTypeName: 'quaternion',\n\n\t// ValueBufferType is inherited\n\n\tDefaultInterpolation: InterpolateLinear,\n\n\tInterpolantFactoryMethodLinear: function ( result ) {\n\n\t\treturn new QuaternionLinearInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t},\n\n\tInterpolantFactoryMethodSmooth: undefined // not yet implemented\n\n} );\n\n/**\n * A Track that interpolates Strings\n */\n\nfunction StringKeyframeTrack( name, times, values, interpolation ) {\n\n\tKeyframeTrack.call( this, name, times, values, interpolation );\n\n}\n\nStringKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\n\n\tconstructor: StringKeyframeTrack,\n\n\tValueTypeName: 'string',\n\tValueBufferType: Array,\n\n\tDefaultInterpolation: InterpolateDiscrete,\n\n\tInterpolantFactoryMethodLinear: undefined,\n\n\tInterpolantFactoryMethodSmooth: undefined\n\n} );\n\n/**\n * A Track of vectored keyframe values.\n */\n\nfunction VectorKeyframeTrack( name, times, values, interpolation ) {\n\n\tKeyframeTrack.call( this, name, times, values, interpolation );\n\n}\n\nVectorKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\n\n\tconstructor: VectorKeyframeTrack,\n\n\tValueTypeName: 'vector'\n\n\t// ValueBufferType is inherited\n\n\t// DefaultInterpolation is inherited\n\n} );\n\nfunction AnimationClip( name, duration, tracks, blendMode ) {\n\n\tthis.name = name;\n\tthis.tracks = tracks;\n\tthis.duration = ( duration !== undefined ) ? duration : - 1;\n\tthis.blendMode = ( blendMode !== undefined ) ? blendMode : NormalAnimationBlendMode;\n\n\tthis.uuid = MathUtils.generateUUID();\n\n\t// this means it should figure out its duration by scanning the tracks\n\tif ( this.duration < 0 ) {\n\n\t\tthis.resetDuration();\n\n\t}\n\n}\n\nfunction getTrackTypeForValueTypeName( typeName ) {\n\n\tswitch ( typeName.toLowerCase() ) {\n\n\t\tcase 'scalar':\n\t\tcase 'double':\n\t\tcase 'float':\n\t\tcase 'number':\n\t\tcase 'integer':\n\n\t\t\treturn NumberKeyframeTrack;\n\n\t\tcase 'vector':\n\t\tcase 'vector2':\n\t\tcase 'vector3':\n\t\tcase 'vector4':\n\n\t\t\treturn VectorKeyframeTrack;\n\n\t\tcase 'color':\n\n\t\t\treturn ColorKeyframeTrack;\n\n\t\tcase 'quaternion':\n\n\t\t\treturn QuaternionKeyframeTrack;\n\n\t\tcase 'bool':\n\t\tcase 'boolean':\n\n\t\t\treturn BooleanKeyframeTrack;\n\n\t\tcase 'string':\n\n\t\t\treturn StringKeyframeTrack;\n\n\t}\n\n\tthrow new Error( 'THREE.KeyframeTrack: Unsupported typeName: ' + typeName );\n\n}\n\nfunction parseKeyframeTrack( json ) {\n\n\tif ( json.type === undefined ) {\n\n\t\tthrow new Error( 'THREE.KeyframeTrack: track type undefined, can not parse' );\n\n\t}\n\n\tconst trackType = getTrackTypeForValueTypeName( json.type );\n\n\tif ( json.times === undefined ) {\n\n\t\tconst times = [], values = [];\n\n\t\tAnimationUtils.flattenJSON( json.keys, times, values, 'value' );\n\n\t\tjson.times = times;\n\t\tjson.values = values;\n\n\t}\n\n\t// derived classes can define a static parse method\n\tif ( trackType.parse !== undefined ) {\n\n\t\treturn trackType.parse( json );\n\n\t} else {\n\n\t\t// by default, we assume a constructor compatible with the base\n\t\treturn new trackType( json.name, json.times, json.values, json.interpolation );\n\n\t}\n\n}\n\nObject.assign( AnimationClip, {\n\n\tparse: function ( json ) {\n\n\t\tconst tracks = [],\n\t\t\tjsonTracks = json.tracks,\n\t\t\tframeTime = 1.0 / ( json.fps || 1.0 );\n\n\t\tfor ( let i = 0, n = jsonTracks.length; i !== n; ++ i ) {\n\n\t\t\ttracks.push( parseKeyframeTrack( jsonTracks[ i ] ).scale( frameTime ) );\n\n\t\t}\n\n\t\treturn new AnimationClip( json.name, json.duration, tracks, json.blendMode );\n\n\t},\n\n\ttoJSON: function ( clip ) {\n\n\t\tconst tracks = [],\n\t\t\tclipTracks = clip.tracks;\n\n\t\tconst json = {\n\n\t\t\t'name': clip.name,\n\t\t\t'duration': clip.duration,\n\t\t\t'tracks': tracks,\n\t\t\t'uuid': clip.uuid,\n\t\t\t'blendMode': clip.blendMode\n\n\t\t};\n\n\t\tfor ( let i = 0, n = clipTracks.length; i !== n; ++ i ) {\n\n\t\t\ttracks.push( KeyframeTrack.toJSON( clipTracks[ i ] ) );\n\n\t\t}\n\n\t\treturn json;\n\n\t},\n\n\tCreateFromMorphTargetSequence: function ( name, morphTargetSequence, fps, noLoop ) {\n\n\t\tconst numMorphTargets = morphTargetSequence.length;\n\t\tconst tracks = [];\n\n\t\tfor ( let i = 0; i < numMorphTargets; i ++ ) {\n\n\t\t\tlet times = [];\n\t\t\tlet values = [];\n\n\t\t\ttimes.push(\n\t\t\t\t( i + numMorphTargets - 1 ) % numMorphTargets,\n\t\t\t\ti,\n\t\t\t\t( i + 1 ) % numMorphTargets );\n\n\t\t\tvalues.push( 0, 1, 0 );\n\n\t\t\tconst order = AnimationUtils.getKeyframeOrder( times );\n\t\t\ttimes = AnimationUtils.sortedArray( times, 1, order );\n\t\t\tvalues = AnimationUtils.sortedArray( values, 1, order );\n\n\t\t\t// if there is a key at the first frame, duplicate it as the\n\t\t\t// last frame as well for perfect loop.\n\t\t\tif ( ! noLoop && times[ 0 ] === 0 ) {\n\n\t\t\t\ttimes.push( numMorphTargets );\n\t\t\t\tvalues.push( values[ 0 ] );\n\n\t\t\t}\n\n\t\t\ttracks.push(\n\t\t\t\tnew NumberKeyframeTrack(\n\t\t\t\t\t'.morphTargetInfluences[' + morphTargetSequence[ i ].name + ']',\n\t\t\t\t\ttimes, values\n\t\t\t\t).scale( 1.0 / fps ) );\n\n\t\t}\n\n\t\treturn new AnimationClip( name, - 1, tracks );\n\n\t},\n\n\tfindByName: function ( objectOrClipArray, name ) {\n\n\t\tlet clipArray = objectOrClipArray;\n\n\t\tif ( ! Array.isArray( objectOrClipArray ) ) {\n\n\t\t\tconst o = objectOrClipArray;\n\t\t\tclipArray = o.geometry && o.geometry.animations || o.animations;\n\n\t\t}\n\n\t\tfor ( let i = 0; i < clipArray.length; i ++ ) {\n\n\t\t\tif ( clipArray[ i ].name === name ) {\n\n\t\t\t\treturn clipArray[ i ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn null;\n\n\t},\n\n\tCreateClipsFromMorphTargetSequences: function ( morphTargets, fps, noLoop ) {\n\n\t\tconst animationToMorphTargets = {};\n\n\t\t// tested with https://regex101.com/ on trick sequences\n\t\t// such flamingo_flyA_003, flamingo_run1_003, crdeath0059\n\t\tconst pattern = /^([\\w-]*?)([\\d]+)$/;\n\n\t\t// sort morph target names into animation groups based\n\t\t// patterns like Walk_001, Walk_002, Run_001, Run_002\n\t\tfor ( let i = 0, il = morphTargets.length; i < il; i ++ ) {\n\n\t\t\tconst morphTarget = morphTargets[ i ];\n\t\t\tconst parts = morphTarget.name.match( pattern );\n\n\t\t\tif ( parts && parts.length > 1 ) {\n\n\t\t\t\tconst name = parts[ 1 ];\n\n\t\t\t\tlet animationMorphTargets = animationToMorphTargets[ name ];\n\n\t\t\t\tif ( ! animationMorphTargets ) {\n\n\t\t\t\t\tanimationToMorphTargets[ name ] = animationMorphTargets = [];\n\n\t\t\t\t}\n\n\t\t\t\tanimationMorphTargets.push( morphTarget );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst clips = [];\n\n\t\tfor ( const name in animationToMorphTargets ) {\n\n\t\t\tclips.push( AnimationClip.CreateFromMorphTargetSequence( name, animationToMorphTargets[ name ], fps, noLoop ) );\n\n\t\t}\n\n\t\treturn clips;\n\n\t},\n\n\t// parse the animation.hierarchy format\n\tparseAnimation: function ( animation, bones ) {\n\n\t\tif ( ! animation ) {\n\n\t\t\tconsole.error( 'THREE.AnimationClip: No animation in JSONLoader data.' );\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst addNonemptyTrack = function ( trackType, trackName, animationKeys, propertyName, destTracks ) {\n\n\t\t\t// only return track if there are actually keys.\n\t\t\tif ( animationKeys.length !== 0 ) {\n\n\t\t\t\tconst times = [];\n\t\t\t\tconst values = [];\n\n\t\t\t\tAnimationUtils.flattenJSON( animationKeys, times, values, propertyName );\n\n\t\t\t\t// empty keys are filtered out, so check again\n\t\t\t\tif ( times.length !== 0 ) {\n\n\t\t\t\t\tdestTracks.push( new trackType( trackName, times, values ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t\tconst tracks = [];\n\n\t\tconst clipName = animation.name || 'default';\n\t\tconst fps = animation.fps || 30;\n\t\tconst blendMode = animation.blendMode;\n\n\t\t// automatic length determination in AnimationClip.\n\t\tlet duration = animation.length || - 1;\n\n\t\tconst hierarchyTracks = animation.hierarchy || [];\n\n\t\tfor ( let h = 0; h < hierarchyTracks.length; h ++ ) {\n\n\t\t\tconst animationKeys = hierarchyTracks[ h ].keys;\n\n\t\t\t// skip empty tracks\n\t\t\tif ( ! animationKeys || animationKeys.length === 0 ) continue;\n\n\t\t\t// process morph targets\n\t\t\tif ( animationKeys[ 0 ].morphTargets ) {\n\n\t\t\t\t// figure out all morph targets used in this track\n\t\t\t\tconst morphTargetNames = {};\n\n\t\t\t\tlet k;\n\n\t\t\t\tfor ( k = 0; k < animationKeys.length; k ++ ) {\n\n\t\t\t\t\tif ( animationKeys[ k ].morphTargets ) {\n\n\t\t\t\t\t\tfor ( let m = 0; m < animationKeys[ k ].morphTargets.length; m ++ ) {\n\n\t\t\t\t\t\t\tmorphTargetNames[ animationKeys[ k ].morphTargets[ m ] ] = - 1;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t// create a track for each morph target with all zero\n\t\t\t\t// morphTargetInfluences except for the keys in which\n\t\t\t\t// the morphTarget is named.\n\t\t\t\tfor ( const morphTargetName in morphTargetNames ) {\n\n\t\t\t\t\tconst times = [];\n\t\t\t\t\tconst values = [];\n\n\t\t\t\t\tfor ( let m = 0; m !== animationKeys[ k ].morphTargets.length; ++ m ) {\n\n\t\t\t\t\t\tconst animationKey = animationKeys[ k ];\n\n\t\t\t\t\t\ttimes.push( animationKey.time );\n\t\t\t\t\t\tvalues.push( ( animationKey.morphTarget === morphTargetName ) ? 1 : 0 );\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttracks.push( new NumberKeyframeTrack( '.morphTargetInfluence[' + morphTargetName + ']', times, values ) );\n\n\t\t\t\t}\n\n\t\t\t\tduration = morphTargetNames.length * ( fps || 1.0 );\n\n\t\t\t} else {\n\n\t\t\t\t// ...assume skeletal animation\n\n\t\t\t\tconst boneName = '.bones[' + bones[ h ].name + ']';\n\n\t\t\t\taddNonemptyTrack(\n\t\t\t\t\tVectorKeyframeTrack, boneName + '.position',\n\t\t\t\t\tanimationKeys, 'pos', tracks );\n\n\t\t\t\taddNonemptyTrack(\n\t\t\t\t\tQuaternionKeyframeTrack, boneName + '.quaternion',\n\t\t\t\t\tanimationKeys, 'rot', tracks );\n\n\t\t\t\taddNonemptyTrack(\n\t\t\t\t\tVectorKeyframeTrack, boneName + '.scale',\n\t\t\t\t\tanimationKeys, 'scl', tracks );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( tracks.length === 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst clip = new AnimationClip( clipName, duration, tracks, blendMode );\n\n\t\treturn clip;\n\n\t}\n\n} );\n\nObject.assign( AnimationClip.prototype, {\n\n\tresetDuration: function () {\n\n\t\tconst tracks = this.tracks;\n\t\tlet duration = 0;\n\n\t\tfor ( let i = 0, n = tracks.length; i !== n; ++ i ) {\n\n\t\t\tconst track = this.tracks[ i ];\n\n\t\t\tduration = Math.max( duration, track.times[ track.times.length - 1 ] );\n\n\t\t}\n\n\t\tthis.duration = duration;\n\n\t\treturn this;\n\n\t},\n\n\ttrim: function () {\n\n\t\tfor ( let i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\tthis.tracks[ i ].trim( 0, this.duration );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tvalidate: function () {\n\n\t\tlet valid = true;\n\n\t\tfor ( let i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\tvalid = valid && this.tracks[ i ].validate();\n\n\t\t}\n\n\t\treturn valid;\n\n\t},\n\n\toptimize: function () {\n\n\t\tfor ( let i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\tthis.tracks[ i ].optimize();\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\tconst tracks = [];\n\n\t\tfor ( let i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\ttracks.push( this.tracks[ i ].clone() );\n\n\t\t}\n\n\t\treturn new AnimationClip( this.name, this.duration, tracks, this.blendMode );\n\n\t}\n\n} );\n\nconst Cache = {\n\n\tenabled: false,\n\n\tfiles: {},\n\n\tadd: function ( key, file ) {\n\n\t\tif ( this.enabled === false ) return;\n\n\t\t// console.log( 'THREE.Cache', 'Adding key:', key );\n\n\t\tthis.files[ key ] = file;\n\n\t},\n\n\tget: function ( key ) {\n\n\t\tif ( this.enabled === false ) return;\n\n\t\t// console.log( 'THREE.Cache', 'Checking key:', key );\n\n\t\treturn this.files[ key ];\n\n\t},\n\n\tremove: function ( key ) {\n\n\t\tdelete this.files[ key ];\n\n\t},\n\n\tclear: function () {\n\n\t\tthis.files = {};\n\n\t}\n\n};\n\nfunction LoadingManager( onLoad, onProgress, onError ) {\n\n\tconst scope = this;\n\n\tlet isLoading = false;\n\tlet itemsLoaded = 0;\n\tlet itemsTotal = 0;\n\tlet urlModifier = undefined;\n\tconst handlers = [];\n\n\t// Refer to #5689 for the reason why we don't set .onStart\n\t// in the constructor\n\n\tthis.onStart = undefined;\n\tthis.onLoad = onLoad;\n\tthis.onProgress = onProgress;\n\tthis.onError = onError;\n\n\tthis.itemStart = function ( url ) {\n\n\t\titemsTotal ++;\n\n\t\tif ( isLoading === false ) {\n\n\t\t\tif ( scope.onStart !== undefined ) {\n\n\t\t\t\tscope.onStart( url, itemsLoaded, itemsTotal );\n\n\t\t\t}\n\n\t\t}\n\n\t\tisLoading = true;\n\n\t};\n\n\tthis.itemEnd = function ( url ) {\n\n\t\titemsLoaded ++;\n\n\t\tif ( scope.onProgress !== undefined ) {\n\n\t\t\tscope.onProgress( url, itemsLoaded, itemsTotal );\n\n\t\t}\n\n\t\tif ( itemsLoaded === itemsTotal ) {\n\n\t\t\tisLoading = false;\n\n\t\t\tif ( scope.onLoad !== undefined ) {\n\n\t\t\t\tscope.onLoad();\n\n\t\t\t}\n\n\t\t}\n\n\t};\n\n\tthis.itemError = function ( url ) {\n\n\t\tif ( scope.onError !== undefined ) {\n\n\t\t\tscope.onError( url );\n\n\t\t}\n\n\t};\n\n\tthis.resolveURL = function ( url ) {\n\n\t\tif ( urlModifier ) {\n\n\t\t\treturn urlModifier( url );\n\n\t\t}\n\n\t\treturn url;\n\n\t};\n\n\tthis.setURLModifier = function ( transform ) {\n\n\t\turlModifier = transform;\n\n\t\treturn this;\n\n\t};\n\n\tthis.addHandler = function ( regex, loader ) {\n\n\t\thandlers.push( regex, loader );\n\n\t\treturn this;\n\n\t};\n\n\tthis.removeHandler = function ( regex ) {\n\n\t\tconst index = handlers.indexOf( regex );\n\n\t\tif ( index !== - 1 ) {\n\n\t\t\thandlers.splice( index, 2 );\n\n\t\t}\n\n\t\treturn this;\n\n\t};\n\n\tthis.getHandler = function ( file ) {\n\n\t\tfor ( let i = 0, l = handlers.length; i < l; i += 2 ) {\n\n\t\t\tconst regex = handlers[ i ];\n\t\t\tconst loader = handlers[ i + 1 ];\n\n\t\t\tif ( regex.global ) regex.lastIndex = 0; // see #17920\n\n\t\t\tif ( regex.test( file ) ) {\n\n\t\t\t\treturn loader;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn null;\n\n\t};\n\n}\n\nconst DefaultLoadingManager = new LoadingManager();\n\nfunction Loader( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n\tthis.crossOrigin = 'anonymous';\n\tthis.path = '';\n\tthis.resourcePath = '';\n\tthis.requestHeader = {};\n\n}\n\nObject.assign( Loader.prototype, {\n\n\tload: function ( /* url, onLoad, onProgress, onError */ ) {},\n\n\tloadAsync: function ( url, onProgress ) {\n\n\t\tconst scope = this;\n\n\t\treturn new Promise( function ( resolve, reject ) {\n\n\t\t\tscope.load( url, resolve, onProgress, reject );\n\n\t\t} );\n\n\t},\n\n\tparse: function ( /* data */ ) {},\n\n\tsetCrossOrigin: function ( crossOrigin ) {\n\n\t\tthis.crossOrigin = crossOrigin;\n\t\treturn this;\n\n\t},\n\n\tsetPath: function ( path ) {\n\n\t\tthis.path = path;\n\t\treturn this;\n\n\t},\n\n\tsetResourcePath: function ( resourcePath ) {\n\n\t\tthis.resourcePath = resourcePath;\n\t\treturn this;\n\n\t},\n\n\tsetRequestHeader: function ( requestHeader ) {\n\n\t\tthis.requestHeader = requestHeader;\n\t\treturn this;\n\n\t}\n\n} );\n\nconst loading = {};\n\nfunction FileLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nFileLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: FileLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tif ( url === undefined ) url = '';\n\n\t\tif ( this.path !== undefined ) url = this.path + url;\n\n\t\turl = this.manager.resolveURL( url );\n\n\t\tconst scope = this;\n\n\t\tconst cached = Cache.get( url );\n\n\t\tif ( cached !== undefined ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\tsetTimeout( function () {\n\n\t\t\t\tif ( onLoad ) onLoad( cached );\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, 0 );\n\n\t\t\treturn cached;\n\n\t\t}\n\n\t\t// Check if request is duplicate\n\n\t\tif ( loading[ url ] !== undefined ) {\n\n\t\t\tloading[ url ].push( {\n\n\t\t\t\tonLoad: onLoad,\n\t\t\t\tonProgress: onProgress,\n\t\t\t\tonError: onError\n\n\t\t\t} );\n\n\t\t\treturn;\n\n\t\t}\n\n\t\t// Check for data: URI\n\t\tconst dataUriRegex = /^data:(.*?)(;base64)?,(.*)$/;\n\t\tconst dataUriRegexResult = url.match( dataUriRegex );\n\t\tlet request;\n\n\t\t// Safari can not handle Data URIs through XMLHttpRequest so process manually\n\t\tif ( dataUriRegexResult ) {\n\n\t\t\tconst mimeType = dataUriRegexResult[ 1 ];\n\t\t\tconst isBase64 = !! dataUriRegexResult[ 2 ];\n\n\t\t\tlet data = dataUriRegexResult[ 3 ];\n\t\t\tdata = decodeURIComponent( data );\n\n\t\t\tif ( isBase64 ) data = atob( data );\n\n\t\t\ttry {\n\n\t\t\t\tlet response;\n\t\t\t\tconst responseType = ( this.responseType || '' ).toLowerCase();\n\n\t\t\t\tswitch ( responseType ) {\n\n\t\t\t\t\tcase 'arraybuffer':\n\t\t\t\t\tcase 'blob':\n\n\t\t\t\t\t\tconst view = new Uint8Array( data.length );\n\n\t\t\t\t\t\tfor ( let i = 0; i < data.length; i ++ ) {\n\n\t\t\t\t\t\t\tview[ i ] = data.charCodeAt( i );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( responseType === 'blob' ) {\n\n\t\t\t\t\t\t\tresponse = new Blob( [ view.buffer ], { type: mimeType } );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tresponse = view.buffer;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'document':\n\n\t\t\t\t\t\tconst parser = new DOMParser();\n\t\t\t\t\t\tresponse = parser.parseFromString( data, mimeType );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'json':\n\n\t\t\t\t\t\tresponse = JSON.parse( data );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault: // 'text' or other\n\n\t\t\t\t\t\tresponse = data;\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t\t// Wait for next browser tick like standard XMLHttpRequest event dispatching does\n\t\t\t\tsetTimeout( function () {\n\n\t\t\t\t\tif ( onLoad ) onLoad( response );\n\n\t\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t\t}, 0 );\n\n\t\t\t} catch ( error ) {\n\n\t\t\t\t// Wait for next browser tick like standard XMLHttpRequest event dispatching does\n\t\t\t\tsetTimeout( function () {\n\n\t\t\t\t\tif ( onError ) onError( error );\n\n\t\t\t\t\tscope.manager.itemError( url );\n\t\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t\t}, 0 );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// Initialise array for duplicate requests\n\n\t\t\tloading[ url ] = [];\n\n\t\t\tloading[ url ].push( {\n\n\t\t\t\tonLoad: onLoad,\n\t\t\t\tonProgress: onProgress,\n\t\t\t\tonError: onError\n\n\t\t\t} );\n\n\t\t\trequest = new XMLHttpRequest();\n\n\t\t\trequest.open( 'GET', url, true );\n\n\t\t\trequest.addEventListener( 'load', function ( event ) {\n\n\t\t\t\tconst response = this.response;\n\n\t\t\t\tconst callbacks = loading[ url ];\n\n\t\t\t\tdelete loading[ url ];\n\n\t\t\t\tif ( this.status === 200 || this.status === 0 ) {\n\n\t\t\t\t\t// Some browsers return HTTP Status 0 when using non-http protocol\n\t\t\t\t\t// e.g. 'file://' or 'data://'. Handle as success.\n\n\t\t\t\t\tif ( this.status === 0 ) console.warn( 'THREE.FileLoader: HTTP Status 0 received.' );\n\n\t\t\t\t\t// Add to cache only on HTTP success, so that we do not cache\n\t\t\t\t\t// error response bodies as proper responses to requests.\n\t\t\t\t\tCache.add( url, response );\n\n\t\t\t\t\tfor ( let i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tconst callback = callbacks[ i ];\n\t\t\t\t\t\tif ( callback.onLoad ) callback.onLoad( response );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tfor ( let i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tconst callback = callbacks[ i ];\n\t\t\t\t\t\tif ( callback.onError ) callback.onError( event );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tscope.manager.itemError( url );\n\t\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t\t}\n\n\t\t\t}, false );\n\n\t\t\trequest.addEventListener( 'progress', function ( event ) {\n\n\t\t\t\tconst callbacks = loading[ url ];\n\n\t\t\t\tfor ( let i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst callback = callbacks[ i ];\n\t\t\t\t\tif ( callback.onProgress ) callback.onProgress( event );\n\n\t\t\t\t}\n\n\t\t\t}, false );\n\n\t\t\trequest.addEventListener( 'error', function ( event ) {\n\n\t\t\t\tconst callbacks = loading[ url ];\n\n\t\t\t\tdelete loading[ url ];\n\n\t\t\t\tfor ( let i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst callback = callbacks[ i ];\n\t\t\t\t\tif ( callback.onError ) callback.onError( event );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, false );\n\n\t\t\trequest.addEventListener( 'abort', function ( event ) {\n\n\t\t\t\tconst callbacks = loading[ url ];\n\n\t\t\t\tdelete loading[ url ];\n\n\t\t\t\tfor ( let i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst callback = callbacks[ i ];\n\t\t\t\t\tif ( callback.onError ) callback.onError( event );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, false );\n\n\t\t\tif ( this.responseType !== undefined ) request.responseType = this.responseType;\n\t\t\tif ( this.withCredentials !== undefined ) request.withCredentials = this.withCredentials;\n\n\t\t\tif ( request.overrideMimeType ) request.overrideMimeType( this.mimeType !== undefined ? this.mimeType : 'text/plain' );\n\n\t\t\tfor ( const header in this.requestHeader ) {\n\n\t\t\t\trequest.setRequestHeader( header, this.requestHeader[ header ] );\n\n\t\t\t}\n\n\t\t\trequest.send( null );\n\n\t\t}\n\n\t\tscope.manager.itemStart( url );\n\n\t\treturn request;\n\n\t},\n\n\tsetResponseType: function ( value ) {\n\n\t\tthis.responseType = value;\n\t\treturn this;\n\n\t},\n\n\tsetWithCredentials: function ( value ) {\n\n\t\tthis.withCredentials = value;\n\t\treturn this;\n\n\t},\n\n\tsetMimeType: function ( value ) {\n\n\t\tthis.mimeType = value;\n\t\treturn this;\n\n\t}\n\n} );\n\nfunction AnimationLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nAnimationLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: AnimationLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( scope.manager );\n\t\tloader.setPath( scope.path );\n\t\tloader.setRequestHeader( scope.requestHeader );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\ttry {\n\n\t\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tparse: function ( json ) {\n\n\t\tconst animations = [];\n\n\t\tfor ( let i = 0; i < json.length; i ++ ) {\n\n\t\t\tconst clip = AnimationClip.parse( json[ i ] );\n\n\t\t\tanimations.push( clip );\n\n\t\t}\n\n\t\treturn animations;\n\n\t}\n\n} );\n\n/**\n * Abstract Base class to block based textures loader (dds, pvr, ...)\n *\n * Sub classes have to implement the parse() method which will be used in load().\n */\n\nfunction CompressedTextureLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nCompressedTextureLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: CompressedTextureLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst images = [];\n\n\t\tconst texture = new CompressedTexture();\n\t\ttexture.image = images;\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setRequestHeader( this.requestHeader );\n\n\t\tlet loaded = 0;\n\n\t\tfunction loadTexture( i ) {\n\n\t\t\tloader.load( url[ i ], function ( buffer ) {\n\n\t\t\t\tconst texDatas = scope.parse( buffer, true );\n\n\t\t\t\timages[ i ] = {\n\t\t\t\t\twidth: texDatas.width,\n\t\t\t\t\theight: texDatas.height,\n\t\t\t\t\tformat: texDatas.format,\n\t\t\t\t\tmipmaps: texDatas.mipmaps\n\t\t\t\t};\n\n\t\t\t\tloaded += 1;\n\n\t\t\t\tif ( loaded === 6 ) {\n\n\t\t\t\t\tif ( texDatas.mipmapCount === 1 )\n\t\t\t\t\t\ttexture.minFilter = LinearFilter;\n\n\t\t\t\t\ttexture.format = texDatas.format;\n\t\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t\t}\n\n\t\t\t}, onProgress, onError );\n\n\t\t}\n\n\t\tif ( Array.isArray( url ) ) {\n\n\t\t\tfor ( let i = 0, il = url.length; i < il; ++ i ) {\n\n\t\t\t\tloadTexture( i );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// compressed cubemap texture stored in a single DDS file\n\n\t\t\tloader.load( url, function ( buffer ) {\n\n\t\t\t\tconst texDatas = scope.parse( buffer, true );\n\n\t\t\t\tif ( texDatas.isCubemap ) {\n\n\t\t\t\t\tconst faces = texDatas.mipmaps.length / texDatas.mipmapCount;\n\n\t\t\t\t\tfor ( let f = 0; f < faces; f ++ ) {\n\n\t\t\t\t\t\timages[ f ] = { mipmaps: [] };\n\n\t\t\t\t\t\tfor ( let i = 0; i < texDatas.mipmapCount; i ++ ) {\n\n\t\t\t\t\t\t\timages[ f ].mipmaps.push( texDatas.mipmaps[ f * texDatas.mipmapCount + i ] );\n\t\t\t\t\t\t\timages[ f ].format = texDatas.format;\n\t\t\t\t\t\t\timages[ f ].width = texDatas.width;\n\t\t\t\t\t\t\timages[ f ].height = texDatas.height;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\ttexture.image.width = texDatas.width;\n\t\t\t\t\ttexture.image.height = texDatas.height;\n\t\t\t\t\ttexture.mipmaps = texDatas.mipmaps;\n\n\t\t\t\t}\n\n\t\t\t\tif ( texDatas.mipmapCount === 1 ) {\n\n\t\t\t\t\ttexture.minFilter = LinearFilter;\n\n\t\t\t\t}\n\n\t\t\t\ttexture.format = texDatas.format;\n\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t}, onProgress, onError );\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n} );\n\nfunction ImageLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nImageLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: ImageLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tif ( this.path !== undefined ) url = this.path + url;\n\n\t\turl = this.manager.resolveURL( url );\n\n\t\tconst scope = this;\n\n\t\tconst cached = Cache.get( url );\n\n\t\tif ( cached !== undefined ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\tsetTimeout( function () {\n\n\t\t\t\tif ( onLoad ) onLoad( cached );\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, 0 );\n\n\t\t\treturn cached;\n\n\t\t}\n\n\t\tconst image = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'img' );\n\n\t\tfunction onImageLoad() {\n\n\t\t\timage.removeEventListener( 'load', onImageLoad, false );\n\t\t\timage.removeEventListener( 'error', onImageError, false );\n\n\t\t\tCache.add( url, this );\n\n\t\t\tif ( onLoad ) onLoad( this );\n\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t}\n\n\t\tfunction onImageError( event ) {\n\n\t\t\timage.removeEventListener( 'load', onImageLoad, false );\n\t\t\timage.removeEventListener( 'error', onImageError, false );\n\n\t\t\tif ( onError ) onError( event );\n\n\t\t\tscope.manager.itemError( url );\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t}\n\n\t\timage.addEventListener( 'load', onImageLoad, false );\n\t\timage.addEventListener( 'error', onImageError, false );\n\n\t\tif ( url.substr( 0, 5 ) !== 'data:' ) {\n\n\t\t\tif ( this.crossOrigin !== undefined ) image.crossOrigin = this.crossOrigin;\n\n\t\t}\n\n\t\tscope.manager.itemStart( url );\n\n\t\timage.src = url;\n\n\t\treturn image;\n\n\t}\n\n} );\n\nfunction CubeTextureLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nCubeTextureLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: CubeTextureLoader,\n\n\tload: function ( urls, onLoad, onProgress, onError ) {\n\n\t\tconst texture = new CubeTexture();\n\n\t\tconst loader = new ImageLoader( this.manager );\n\t\tloader.setCrossOrigin( this.crossOrigin );\n\t\tloader.setPath( this.path );\n\n\t\tlet loaded = 0;\n\n\t\tfunction loadTexture( i ) {\n\n\t\t\tloader.load( urls[ i ], function ( image ) {\n\n\t\t\t\ttexture.images[ i ] = image;\n\n\t\t\t\tloaded ++;\n\n\t\t\t\tif ( loaded === 6 ) {\n\n\t\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t\t}\n\n\t\t\t}, undefined, onError );\n\n\t\t}\n\n\t\tfor ( let i = 0; i < urls.length; ++ i ) {\n\n\t\t\tloadTexture( i );\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n} );\n\n/**\n * Abstract Base class to load generic binary textures formats (rgbe, hdr, ...)\n *\n * Sub classes have to implement the parse() method which will be used in load().\n */\n\nfunction DataTextureLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nDataTextureLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: DataTextureLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst texture = new DataTexture();\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setPath( this.path );\n\t\tloader.load( url, function ( buffer ) {\n\n\t\t\tconst texData = scope.parse( buffer );\n\n\t\t\tif ( ! texData ) return;\n\n\t\t\tif ( texData.image !== undefined ) {\n\n\t\t\t\ttexture.image = texData.image;\n\n\t\t\t} else if ( texData.data !== undefined ) {\n\n\t\t\t\ttexture.image.width = texData.width;\n\t\t\t\ttexture.image.height = texData.height;\n\t\t\t\ttexture.image.data = texData.data;\n\n\t\t\t}\n\n\t\t\ttexture.wrapS = texData.wrapS !== undefined ? texData.wrapS : ClampToEdgeWrapping;\n\t\t\ttexture.wrapT = texData.wrapT !== undefined ? texData.wrapT : ClampToEdgeWrapping;\n\n\t\t\ttexture.magFilter = texData.magFilter !== undefined ? texData.magFilter : LinearFilter;\n\t\t\ttexture.minFilter = texData.minFilter !== undefined ? texData.minFilter : LinearFilter;\n\n\t\t\ttexture.anisotropy = texData.anisotropy !== undefined ? texData.anisotropy : 1;\n\n\t\t\tif ( texData.format !== undefined ) {\n\n\t\t\t\ttexture.format = texData.format;\n\n\t\t\t}\n\n\t\t\tif ( texData.type !== undefined ) {\n\n\t\t\t\ttexture.type = texData.type;\n\n\t\t\t}\n\n\t\t\tif ( texData.mipmaps !== undefined ) {\n\n\t\t\t\ttexture.mipmaps = texData.mipmaps;\n\t\t\t\ttexture.minFilter = LinearMipmapLinearFilter; // presumably...\n\n\t\t\t}\n\n\t\t\tif ( texData.mipmapCount === 1 ) {\n\n\t\t\t\ttexture.minFilter = LinearFilter;\n\n\t\t\t}\n\n\t\t\ttexture.needsUpdate = true;\n\n\t\t\tif ( onLoad ) onLoad( texture, texData );\n\n\t\t}, onProgress, onError );\n\n\n\t\treturn texture;\n\n\t}\n\n} );\n\nfunction TextureLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nTextureLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: TextureLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tconst texture = new Texture();\n\n\t\tconst loader = new ImageLoader( this.manager );\n\t\tloader.setCrossOrigin( this.crossOrigin );\n\t\tloader.setPath( this.path );\n\n\t\tloader.load( url, function ( image ) {\n\n\t\t\ttexture.image = image;\n\n\t\t\t// JPEGs can't have an alpha channel, so memory can be saved by storing them as RGB.\n\t\t\tconst isJPEG = url.search( /\\.jpe?g($|\\?)/i ) > 0 || url.search( /^data\\:image\\/jpeg/ ) === 0;\n\n\t\t\ttexture.format = isJPEG ? RGBFormat : RGBAFormat;\n\t\t\ttexture.needsUpdate = true;\n\n\t\t\tif ( onLoad !== undefined ) {\n\n\t\t\t\tonLoad( texture );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t\treturn texture;\n\n\t}\n\n} );\n\n/**\n * Extensible curve object.\n *\n * Some common of curve methods:\n * .getPoint( t, optionalTarget ), .getTangent( t, optionalTarget )\n * .getPointAt( u, optionalTarget ), .getTangentAt( u, optionalTarget )\n * .getPoints(), .getSpacedPoints()\n * .getLength()\n * .updateArcLengths()\n *\n * This following curves inherit from THREE.Curve:\n *\n * -- 2D curves --\n * THREE.ArcCurve\n * THREE.CubicBezierCurve\n * THREE.EllipseCurve\n * THREE.LineCurve\n * THREE.QuadraticBezierCurve\n * THREE.SplineCurve\n *\n * -- 3D curves --\n * THREE.CatmullRomCurve3\n * THREE.CubicBezierCurve3\n * THREE.LineCurve3\n * THREE.QuadraticBezierCurve3\n *\n * A series of curves can be represented as a THREE.CurvePath.\n *\n **/\n\nfunction Curve() {\n\n\tthis.type = 'Curve';\n\n\tthis.arcLengthDivisions = 200;\n\n}\n\nObject.assign( Curve.prototype, {\n\n\t// Virtual base class method to overwrite and implement in subclasses\n\t//\t- t [0 .. 1]\n\n\tgetPoint: function ( /* t, optionalTarget */ ) {\n\n\t\tconsole.warn( 'THREE.Curve: .getPoint() not implemented.' );\n\t\treturn null;\n\n\t},\n\n\t// Get point at relative position in curve according to arc length\n\t// - u [0 .. 1]\n\n\tgetPointAt: function ( u, optionalTarget ) {\n\n\t\tconst t = this.getUtoTmapping( u );\n\t\treturn this.getPoint( t, optionalTarget );\n\n\t},\n\n\t// Get sequence of points using getPoint( t )\n\n\tgetPoints: function ( divisions ) {\n\n\t\tif ( divisions === undefined ) divisions = 5;\n\n\t\tconst points = [];\n\n\t\tfor ( let d = 0; d <= divisions; d ++ ) {\n\n\t\t\tpoints.push( this.getPoint( d / divisions ) );\n\n\t\t}\n\n\t\treturn points;\n\n\t},\n\n\t// Get sequence of points using getPointAt( u )\n\n\tgetSpacedPoints: function ( divisions ) {\n\n\t\tif ( divisions === undefined ) divisions = 5;\n\n\t\tconst points = [];\n\n\t\tfor ( let d = 0; d <= divisions; d ++ ) {\n\n\t\t\tpoints.push( this.getPointAt( d / divisions ) );\n\n\t\t}\n\n\t\treturn points;\n\n\t},\n\n\t// Get total curve arc length\n\n\tgetLength: function () {\n\n\t\tconst lengths = this.getLengths();\n\t\treturn lengths[ lengths.length - 1 ];\n\n\t},\n\n\t// Get list of cumulative segment lengths\n\n\tgetLengths: function ( divisions ) {\n\n\t\tif ( divisions === undefined ) divisions = this.arcLengthDivisions;\n\n\t\tif ( this.cacheArcLengths &&\n\t\t\t( this.cacheArcLengths.length === divisions + 1 ) &&\n\t\t\t! this.needsUpdate ) {\n\n\t\t\treturn this.cacheArcLengths;\n\n\t\t}\n\n\t\tthis.needsUpdate = false;\n\n\t\tconst cache = [];\n\t\tlet current, last = this.getPoint( 0 );\n\t\tlet sum = 0;\n\n\t\tcache.push( 0 );\n\n\t\tfor ( let p = 1; p <= divisions; p ++ ) {\n\n\t\t\tcurrent = this.getPoint( p / divisions );\n\t\t\tsum += current.distanceTo( last );\n\t\t\tcache.push( sum );\n\t\t\tlast = current;\n\n\t\t}\n\n\t\tthis.cacheArcLengths = cache;\n\n\t\treturn cache; // { sums: cache, sum: sum }; Sum is in the last element.\n\n\t},\n\n\tupdateArcLengths: function () {\n\n\t\tthis.needsUpdate = true;\n\t\tthis.getLengths();\n\n\t},\n\n\t// Given u ( 0 .. 1 ), get a t to find p. This gives you points which are equidistant\n\n\tgetUtoTmapping: function ( u, distance ) {\n\n\t\tconst arcLengths = this.getLengths();\n\n\t\tlet i = 0;\n\t\tconst il = arcLengths.length;\n\n\t\tlet targetArcLength; // The targeted u distance value to get\n\n\t\tif ( distance ) {\n\n\t\t\ttargetArcLength = distance;\n\n\t\t} else {\n\n\t\t\ttargetArcLength = u * arcLengths[ il - 1 ];\n\n\t\t}\n\n\t\t// binary search for the index with largest value smaller than target u distance\n\n\t\tlet low = 0, high = il - 1, comparison;\n\n\t\twhile ( low <= high ) {\n\n\t\t\ti = Math.floor( low + ( high - low ) / 2 ); // less likely to overflow, though probably not issue here, JS doesn't really have integers, all numbers are floats\n\n\t\t\tcomparison = arcLengths[ i ] - targetArcLength;\n\n\t\t\tif ( comparison < 0 ) {\n\n\t\t\t\tlow = i + 1;\n\n\t\t\t} else if ( comparison > 0 ) {\n\n\t\t\t\thigh = i - 1;\n\n\t\t\t} else {\n\n\t\t\t\thigh = i;\n\t\t\t\tbreak;\n\n\t\t\t\t// DONE\n\n\t\t\t}\n\n\t\t}\n\n\t\ti = high;\n\n\t\tif ( arcLengths[ i ] === targetArcLength ) {\n\n\t\t\treturn i / ( il - 1 );\n\n\t\t}\n\n\t\t// we could get finer grain at lengths, or use simple interpolation between two points\n\n\t\tconst lengthBefore = arcLengths[ i ];\n\t\tconst lengthAfter = arcLengths[ i + 1 ];\n\n\t\tconst segmentLength = lengthAfter - lengthBefore;\n\n\t\t// determine where we are between the 'before' and 'after' points\n\n\t\tconst segmentFraction = ( targetArcLength - lengthBefore ) / segmentLength;\n\n\t\t// add that fractional amount to t\n\n\t\tconst t = ( i + segmentFraction ) / ( il - 1 );\n\n\t\treturn t;\n\n\t},\n\n\t// Returns a unit vector tangent at t\n\t// In case any sub curve does not implement its tangent derivation,\n\t// 2 points a small delta apart will be used to find its gradient\n\t// which seems to give a reasonable approximation\n\n\tgetTangent: function ( t, optionalTarget ) {\n\n\t\tconst delta = 0.0001;\n\t\tlet t1 = t - delta;\n\t\tlet t2 = t + delta;\n\n\t\t// Capping in case of danger\n\n\t\tif ( t1 < 0 ) t1 = 0;\n\t\tif ( t2 > 1 ) t2 = 1;\n\n\t\tconst pt1 = this.getPoint( t1 );\n\t\tconst pt2 = this.getPoint( t2 );\n\n\t\tconst tangent = optionalTarget || ( ( pt1.isVector2 ) ? new Vector2() : new Vector3() );\n\n\t\ttangent.copy( pt2 ).sub( pt1 ).normalize();\n\n\t\treturn tangent;\n\n\t},\n\n\tgetTangentAt: function ( u, optionalTarget ) {\n\n\t\tconst t = this.getUtoTmapping( u );\n\t\treturn this.getTangent( t, optionalTarget );\n\n\t},\n\n\tcomputeFrenetFrames: function ( segments, closed ) {\n\n\t\t// see http://www.cs.indiana.edu/pub/techreports/TR425.pdf\n\n\t\tconst normal = new Vector3();\n\n\t\tconst tangents = [];\n\t\tconst normals = [];\n\t\tconst binormals = [];\n\n\t\tconst vec = new Vector3();\n\t\tconst mat = new Matrix4();\n\n\t\t// compute the tangent vectors for each segment on the curve\n\n\t\tfor ( let i = 0; i <= segments; i ++ ) {\n\n\t\t\tconst u = i / segments;\n\n\t\t\ttangents[ i ] = this.getTangentAt( u, new Vector3() );\n\t\t\ttangents[ i ].normalize();\n\n\t\t}\n\n\t\t// select an initial normal vector perpendicular to the first tangent vector,\n\t\t// and in the direction of the minimum tangent xyz component\n\n\t\tnormals[ 0 ] = new Vector3();\n\t\tbinormals[ 0 ] = new Vector3();\n\t\tlet min = Number.MAX_VALUE;\n\t\tconst tx = Math.abs( tangents[ 0 ].x );\n\t\tconst ty = Math.abs( tangents[ 0 ].y );\n\t\tconst tz = Math.abs( tangents[ 0 ].z );\n\n\t\tif ( tx <= min ) {\n\n\t\t\tmin = tx;\n\t\t\tnormal.set( 1, 0, 0 );\n\n\t\t}\n\n\t\tif ( ty <= min ) {\n\n\t\t\tmin = ty;\n\t\t\tnormal.set( 0, 1, 0 );\n\n\t\t}\n\n\t\tif ( tz <= min ) {\n\n\t\t\tnormal.set( 0, 0, 1 );\n\n\t\t}\n\n\t\tvec.crossVectors( tangents[ 0 ], normal ).normalize();\n\n\t\tnormals[ 0 ].crossVectors( tangents[ 0 ], vec );\n\t\tbinormals[ 0 ].crossVectors( tangents[ 0 ], normals[ 0 ] );\n\n\n\t\t// compute the slowly-varying normal and binormal vectors for each segment on the curve\n\n\t\tfor ( let i = 1; i <= segments; i ++ ) {\n\n\t\t\tnormals[ i ] = normals[ i - 1 ].clone();\n\n\t\t\tbinormals[ i ] = binormals[ i - 1 ].clone();\n\n\t\t\tvec.crossVectors( tangents[ i - 1 ], tangents[ i ] );\n\n\t\t\tif ( vec.length() > Number.EPSILON ) {\n\n\t\t\t\tvec.normalize();\n\n\t\t\t\tconst theta = Math.acos( MathUtils.clamp( tangents[ i - 1 ].dot( tangents[ i ] ), - 1, 1 ) ); // clamp for floating pt errors\n\n\t\t\t\tnormals[ i ].applyMatrix4( mat.makeRotationAxis( vec, theta ) );\n\n\t\t\t}\n\n\t\t\tbinormals[ i ].crossVectors( tangents[ i ], normals[ i ] );\n\n\t\t}\n\n\t\t// if the curve is closed, postprocess the vectors so the first and last normal vectors are the same\n\n\t\tif ( closed === true ) {\n\n\t\t\tlet theta = Math.acos( MathUtils.clamp( normals[ 0 ].dot( normals[ segments ] ), - 1, 1 ) );\n\t\t\ttheta /= segments;\n\n\t\t\tif ( tangents[ 0 ].dot( vec.crossVectors( normals[ 0 ], normals[ segments ] ) ) > 0 ) {\n\n\t\t\t\ttheta = - theta;\n\n\t\t\t}\n\n\t\t\tfor ( let i = 1; i <= segments; i ++ ) {\n\n\t\t\t\t// twist a little...\n\t\t\t\tnormals[ i ].applyMatrix4( mat.makeRotationAxis( tangents[ i ], theta * i ) );\n\t\t\t\tbinormals[ i ].crossVectors( tangents[ i ], normals[ i ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn {\n\t\t\ttangents: tangents,\n\t\t\tnormals: normals,\n\t\t\tbinormals: binormals\n\t\t};\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.arcLengthDivisions = source.arcLengthDivisions;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Curve',\n\t\t\t\tgenerator: 'Curve.toJSON'\n\t\t\t}\n\t\t};\n\n\t\tdata.arcLengthDivisions = this.arcLengthDivisions;\n\t\tdata.type = this.type;\n\n\t\treturn data;\n\n\t},\n\n\tfromJSON: function ( json ) {\n\n\t\tthis.arcLengthDivisions = json.arcLengthDivisions;\n\n\t\treturn this;\n\n\t}\n\n} );\n\nfunction EllipseCurve( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'EllipseCurve';\n\n\tthis.aX = aX || 0;\n\tthis.aY = aY || 0;\n\n\tthis.xRadius = xRadius || 1;\n\tthis.yRadius = yRadius || 1;\n\n\tthis.aStartAngle = aStartAngle || 0;\n\tthis.aEndAngle = aEndAngle || 2 * Math.PI;\n\n\tthis.aClockwise = aClockwise || false;\n\n\tthis.aRotation = aRotation || 0;\n\n}\n\nEllipseCurve.prototype = Object.create( Curve.prototype );\nEllipseCurve.prototype.constructor = EllipseCurve;\n\nEllipseCurve.prototype.isEllipseCurve = true;\n\nEllipseCurve.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tconst point = optionalTarget || new Vector2();\n\n\tconst twoPi = Math.PI * 2;\n\tlet deltaAngle = this.aEndAngle - this.aStartAngle;\n\tconst samePoints = Math.abs( deltaAngle ) < Number.EPSILON;\n\n\t// ensures that deltaAngle is 0 .. 2 PI\n\twhile ( deltaAngle < 0 ) deltaAngle += twoPi;\n\twhile ( deltaAngle > twoPi ) deltaAngle -= twoPi;\n\n\tif ( deltaAngle < Number.EPSILON ) {\n\n\t\tif ( samePoints ) {\n\n\t\t\tdeltaAngle = 0;\n\n\t\t} else {\n\n\t\t\tdeltaAngle = twoPi;\n\n\t\t}\n\n\t}\n\n\tif ( this.aClockwise === true && ! samePoints ) {\n\n\t\tif ( deltaAngle === twoPi ) {\n\n\t\t\tdeltaAngle = - twoPi;\n\n\t\t} else {\n\n\t\t\tdeltaAngle = deltaAngle - twoPi;\n\n\t\t}\n\n\t}\n\n\tconst angle = this.aStartAngle + t * deltaAngle;\n\tlet x = this.aX + this.xRadius * Math.cos( angle );\n\tlet y = this.aY + this.yRadius * Math.sin( angle );\n\n\tif ( this.aRotation !== 0 ) {\n\n\t\tconst cos = Math.cos( this.aRotation );\n\t\tconst sin = Math.sin( this.aRotation );\n\n\t\tconst tx = x - this.aX;\n\t\tconst ty = y - this.aY;\n\n\t\t// Rotate the point about the center of the ellipse.\n\t\tx = tx * cos - ty * sin + this.aX;\n\t\ty = tx * sin + ty * cos + this.aY;\n\n\t}\n\n\treturn point.set( x, y );\n\n};\n\nEllipseCurve.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.aX = source.aX;\n\tthis.aY = source.aY;\n\n\tthis.xRadius = source.xRadius;\n\tthis.yRadius = source.yRadius;\n\n\tthis.aStartAngle = source.aStartAngle;\n\tthis.aEndAngle = source.aEndAngle;\n\n\tthis.aClockwise = source.aClockwise;\n\n\tthis.aRotation = source.aRotation;\n\n\treturn this;\n\n};\n\n\nEllipseCurve.prototype.toJSON = function () {\n\n\tconst data = Curve.prototype.toJSON.call( this );\n\n\tdata.aX = this.aX;\n\tdata.aY = this.aY;\n\n\tdata.xRadius = this.xRadius;\n\tdata.yRadius = this.yRadius;\n\n\tdata.aStartAngle = this.aStartAngle;\n\tdata.aEndAngle = this.aEndAngle;\n\n\tdata.aClockwise = this.aClockwise;\n\n\tdata.aRotation = this.aRotation;\n\n\treturn data;\n\n};\n\nEllipseCurve.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.aX = json.aX;\n\tthis.aY = json.aY;\n\n\tthis.xRadius = json.xRadius;\n\tthis.yRadius = json.yRadius;\n\n\tthis.aStartAngle = json.aStartAngle;\n\tthis.aEndAngle = json.aEndAngle;\n\n\tthis.aClockwise = json.aClockwise;\n\n\tthis.aRotation = json.aRotation;\n\n\treturn this;\n\n};\n\nfunction ArcCurve( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\tEllipseCurve.call( this, aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise );\n\n\tthis.type = 'ArcCurve';\n\n}\n\nArcCurve.prototype = Object.create( EllipseCurve.prototype );\nArcCurve.prototype.constructor = ArcCurve;\n\nArcCurve.prototype.isArcCurve = true;\n\n/**\n * Centripetal CatmullRom Curve - which is useful for avoiding\n * cusps and self-intersections in non-uniform catmull rom curves.\n * http://www.cemyuksel.com/research/catmullrom_param/catmullrom.pdf\n *\n * curve.type accepts centripetal(default), chordal and catmullrom\n * curve.tension is used for catmullrom which defaults to 0.5\n */\n\n\n/*\nBased on an optimized c++ solution in\n - http://stackoverflow.com/questions/9489736/catmull-rom-curve-with-no-cusps-and-no-self-intersections/\n - http://ideone.com/NoEbVM\n\nThis CubicPoly class could be used for reusing some variables and calculations,\nbut for three.js curve use, it could be possible inlined and flatten into a single function call\nwhich can be placed in CurveUtils.\n*/\n\nfunction CubicPoly() {\n\n\tlet c0 = 0, c1 = 0, c2 = 0, c3 = 0;\n\n\t/*\n\t * Compute coefficients for a cubic polynomial\n\t *   p(s) = c0 + c1*s + c2*s^2 + c3*s^3\n\t * such that\n\t *   p(0) = x0, p(1) = x1\n\t *  and\n\t *   p'(0) = t0, p'(1) = t1.\n\t */\n\tfunction init( x0, x1, t0, t1 ) {\n\n\t\tc0 = x0;\n\t\tc1 = t0;\n\t\tc2 = - 3 * x0 + 3 * x1 - 2 * t0 - t1;\n\t\tc3 = 2 * x0 - 2 * x1 + t0 + t1;\n\n\t}\n\n\treturn {\n\n\t\tinitCatmullRom: function ( x0, x1, x2, x3, tension ) {\n\n\t\t\tinit( x1, x2, tension * ( x2 - x0 ), tension * ( x3 - x1 ) );\n\n\t\t},\n\n\t\tinitNonuniformCatmullRom: function ( x0, x1, x2, x3, dt0, dt1, dt2 ) {\n\n\t\t\t// compute tangents when parameterized in [t1,t2]\n\t\t\tlet t1 = ( x1 - x0 ) / dt0 - ( x2 - x0 ) / ( dt0 + dt1 ) + ( x2 - x1 ) / dt1;\n\t\t\tlet t2 = ( x2 - x1 ) / dt1 - ( x3 - x1 ) / ( dt1 + dt2 ) + ( x3 - x2 ) / dt2;\n\n\t\t\t// rescale tangents for parametrization in [0,1]\n\t\t\tt1 *= dt1;\n\t\t\tt2 *= dt1;\n\n\t\t\tinit( x1, x2, t1, t2 );\n\n\t\t},\n\n\t\tcalc: function ( t ) {\n\n\t\t\tconst t2 = t * t;\n\t\t\tconst t3 = t2 * t;\n\t\t\treturn c0 + c1 * t + c2 * t2 + c3 * t3;\n\n\t\t}\n\n\t};\n\n}\n\n//\n\nconst tmp = new Vector3();\nconst px = new CubicPoly(), py = new CubicPoly(), pz = new CubicPoly();\n\nfunction CatmullRomCurve3( points, closed, curveType, tension ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'CatmullRomCurve3';\n\n\tthis.points = points || [];\n\tthis.closed = closed || false;\n\tthis.curveType = curveType || 'centripetal';\n\tthis.tension = ( tension !== undefined ) ? tension : 0.5;\n\n}\n\nCatmullRomCurve3.prototype = Object.create( Curve.prototype );\nCatmullRomCurve3.prototype.constructor = CatmullRomCurve3;\n\nCatmullRomCurve3.prototype.isCatmullRomCurve3 = true;\n\nCatmullRomCurve3.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tconst point = optionalTarget || new Vector3();\n\n\tconst points = this.points;\n\tconst l = points.length;\n\n\tconst p = ( l - ( this.closed ? 0 : 1 ) ) * t;\n\tlet intPoint = Math.floor( p );\n\tlet weight = p - intPoint;\n\n\tif ( this.closed ) {\n\n\t\tintPoint += intPoint > 0 ? 0 : ( Math.floor( Math.abs( intPoint ) / l ) + 1 ) * l;\n\n\t} else if ( weight === 0 && intPoint === l - 1 ) {\n\n\t\tintPoint = l - 2;\n\t\tweight = 1;\n\n\t}\n\n\tlet p0, p3; // 4 points (p1 & p2 defined below)\n\n\tif ( this.closed || intPoint > 0 ) {\n\n\t\tp0 = points[ ( intPoint - 1 ) % l ];\n\n\t} else {\n\n\t\t// extrapolate first point\n\t\ttmp.subVectors( points[ 0 ], points[ 1 ] ).add( points[ 0 ] );\n\t\tp0 = tmp;\n\n\t}\n\n\tconst p1 = points[ intPoint % l ];\n\tconst p2 = points[ ( intPoint + 1 ) % l ];\n\n\tif ( this.closed || intPoint + 2 < l ) {\n\n\t\tp3 = points[ ( intPoint + 2 ) % l ];\n\n\t} else {\n\n\t\t// extrapolate last point\n\t\ttmp.subVectors( points[ l - 1 ], points[ l - 2 ] ).add( points[ l - 1 ] );\n\t\tp3 = tmp;\n\n\t}\n\n\tif ( this.curveType === 'centripetal' || this.curveType === 'chordal' ) {\n\n\t\t// init Centripetal / Chordal Catmull-Rom\n\t\tconst pow = this.curveType === 'chordal' ? 0.5 : 0.25;\n\t\tlet dt0 = Math.pow( p0.distanceToSquared( p1 ), pow );\n\t\tlet dt1 = Math.pow( p1.distanceToSquared( p2 ), pow );\n\t\tlet dt2 = Math.pow( p2.distanceToSquared( p3 ), pow );\n\n\t\t// safety check for repeated points\n\t\tif ( dt1 < 1e-4 ) dt1 = 1.0;\n\t\tif ( dt0 < 1e-4 ) dt0 = dt1;\n\t\tif ( dt2 < 1e-4 ) dt2 = dt1;\n\n\t\tpx.initNonuniformCatmullRom( p0.x, p1.x, p2.x, p3.x, dt0, dt1, dt2 );\n\t\tpy.initNonuniformCatmullRom( p0.y, p1.y, p2.y, p3.y, dt0, dt1, dt2 );\n\t\tpz.initNonuniformCatmullRom( p0.z, p1.z, p2.z, p3.z, dt0, dt1, dt2 );\n\n\t} else if ( this.curveType === 'catmullrom' ) {\n\n\t\tpx.initCatmullRom( p0.x, p1.x, p2.x, p3.x, this.tension );\n\t\tpy.initCatmullRom( p0.y, p1.y, p2.y, p3.y, this.tension );\n\t\tpz.initCatmullRom( p0.z, p1.z, p2.z, p3.z, this.tension );\n\n\t}\n\n\tpoint.set(\n\t\tpx.calc( weight ),\n\t\tpy.calc( weight ),\n\t\tpz.calc( weight )\n\t);\n\n\treturn point;\n\n};\n\nCatmullRomCurve3.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.points = [];\n\n\tfor ( let i = 0, l = source.points.length; i < l; i ++ ) {\n\n\t\tconst point = source.points[ i ];\n\n\t\tthis.points.push( point.clone() );\n\n\t}\n\n\tthis.closed = source.closed;\n\tthis.curveType = source.curveType;\n\tthis.tension = source.tension;\n\n\treturn this;\n\n};\n\nCatmullRomCurve3.prototype.toJSON = function () {\n\n\tconst data = Curve.prototype.toJSON.call( this );\n\n\tdata.points = [];\n\n\tfor ( let i = 0, l = this.points.length; i < l; i ++ ) {\n\n\t\tconst point = this.points[ i ];\n\t\tdata.points.push( point.toArray() );\n\n\t}\n\n\tdata.closed = this.closed;\n\tdata.curveType = this.curveType;\n\tdata.tension = this.tension;\n\n\treturn data;\n\n};\n\nCatmullRomCurve3.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.points = [];\n\n\tfor ( let i = 0, l = json.points.length; i < l; i ++ ) {\n\n\t\tconst point = json.points[ i ];\n\t\tthis.points.push( new Vector3().fromArray( point ) );\n\n\t}\n\n\tthis.closed = json.closed;\n\tthis.curveType = json.curveType;\n\tthis.tension = json.tension;\n\n\treturn this;\n\n};\n\n/**\n * Bezier Curves formulas obtained from\n * http://en.wikipedia.org/wiki/Bézier_curve\n */\n\nfunction CatmullRom( t, p0, p1, p2, p3 ) {\n\n\tconst v0 = ( p2 - p0 ) * 0.5;\n\tconst v1 = ( p3 - p1 ) * 0.5;\n\tconst t2 = t * t;\n\tconst t3 = t * t2;\n\treturn ( 2 * p1 - 2 * p2 + v0 + v1 ) * t3 + ( - 3 * p1 + 3 * p2 - 2 * v0 - v1 ) * t2 + v0 * t + p1;\n\n}\n\n//\n\nfunction QuadraticBezierP0( t, p ) {\n\n\tconst k = 1 - t;\n\treturn k * k * p;\n\n}\n\nfunction QuadraticBezierP1( t, p ) {\n\n\treturn 2 * ( 1 - t ) * t * p;\n\n}\n\nfunction QuadraticBezierP2( t, p ) {\n\n\treturn t * t * p;\n\n}\n\nfunction QuadraticBezier( t, p0, p1, p2 ) {\n\n\treturn QuadraticBezierP0( t, p0 ) + QuadraticBezierP1( t, p1 ) +\n\t\tQuadraticBezierP2( t, p2 );\n\n}\n\n//\n\nfunction CubicBezierP0( t, p ) {\n\n\tconst k = 1 - t;\n\treturn k * k * k * p;\n\n}\n\nfunction CubicBezierP1( t, p ) {\n\n\tconst k = 1 - t;\n\treturn 3 * k * k * t * p;\n\n}\n\nfunction CubicBezierP2( t, p ) {\n\n\treturn 3 * ( 1 - t ) * t * t * p;\n\n}\n\nfunction CubicBezierP3( t, p ) {\n\n\treturn t * t * t * p;\n\n}\n\nfunction CubicBezier( t, p0, p1, p2, p3 ) {\n\n\treturn CubicBezierP0( t, p0 ) + CubicBezierP1( t, p1 ) + CubicBezierP2( t, p2 ) +\n\t\tCubicBezierP3( t, p3 );\n\n}\n\nfunction CubicBezierCurve( v0, v1, v2, v3 ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'CubicBezierCurve';\n\n\tthis.v0 = v0 || new Vector2();\n\tthis.v1 = v1 || new Vector2();\n\tthis.v2 = v2 || new Vector2();\n\tthis.v3 = v3 || new Vector2();\n\n}\n\nCubicBezierCurve.prototype = Object.create( Curve.prototype );\nCubicBezierCurve.prototype.constructor = CubicBezierCurve;\n\nCubicBezierCurve.prototype.isCubicBezierCurve = true;\n\nCubicBezierCurve.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tconst point = optionalTarget || new Vector2();\n\n\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2, v3 = this.v3;\n\n\tpoint.set(\n\t\tCubicBezier( t, v0.x, v1.x, v2.x, v3.x ),\n\t\tCubicBezier( t, v0.y, v1.y, v2.y, v3.y )\n\t);\n\n\treturn point;\n\n};\n\nCubicBezierCurve.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.v0.copy( source.v0 );\n\tthis.v1.copy( source.v1 );\n\tthis.v2.copy( source.v2 );\n\tthis.v3.copy( source.v3 );\n\n\treturn this;\n\n};\n\nCubicBezierCurve.prototype.toJSON = function () {\n\n\tconst data = Curve.prototype.toJSON.call( this );\n\n\tdata.v0 = this.v0.toArray();\n\tdata.v1 = this.v1.toArray();\n\tdata.v2 = this.v2.toArray();\n\tdata.v3 = this.v3.toArray();\n\n\treturn data;\n\n};\n\nCubicBezierCurve.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.v0.fromArray( json.v0 );\n\tthis.v1.fromArray( json.v1 );\n\tthis.v2.fromArray( json.v2 );\n\tthis.v3.fromArray( json.v3 );\n\n\treturn this;\n\n};\n\nfunction CubicBezierCurve3( v0, v1, v2, v3 ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'CubicBezierCurve3';\n\n\tthis.v0 = v0 || new Vector3();\n\tthis.v1 = v1 || new Vector3();\n\tthis.v2 = v2 || new Vector3();\n\tthis.v3 = v3 || new Vector3();\n\n}\n\nCubicBezierCurve3.prototype = Object.create( Curve.prototype );\nCubicBezierCurve3.prototype.constructor = CubicBezierCurve3;\n\nCubicBezierCurve3.prototype.isCubicBezierCurve3 = true;\n\nCubicBezierCurve3.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tconst point = optionalTarget || new Vector3();\n\n\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2, v3 = this.v3;\n\n\tpoint.set(\n\t\tCubicBezier( t, v0.x, v1.x, v2.x, v3.x ),\n\t\tCubicBezier( t, v0.y, v1.y, v2.y, v3.y ),\n\t\tCubicBezier( t, v0.z, v1.z, v2.z, v3.z )\n\t);\n\n\treturn point;\n\n};\n\nCubicBezierCurve3.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.v0.copy( source.v0 );\n\tthis.v1.copy( source.v1 );\n\tthis.v2.copy( source.v2 );\n\tthis.v3.copy( source.v3 );\n\n\treturn this;\n\n};\n\nCubicBezierCurve3.prototype.toJSON = function () {\n\n\tconst data = Curve.prototype.toJSON.call( this );\n\n\tdata.v0 = this.v0.toArray();\n\tdata.v1 = this.v1.toArray();\n\tdata.v2 = this.v2.toArray();\n\tdata.v3 = this.v3.toArray();\n\n\treturn data;\n\n};\n\nCubicBezierCurve3.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.v0.fromArray( json.v0 );\n\tthis.v1.fromArray( json.v1 );\n\tthis.v2.fromArray( json.v2 );\n\tthis.v3.fromArray( json.v3 );\n\n\treturn this;\n\n};\n\nfunction LineCurve( v1, v2 ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'LineCurve';\n\n\tthis.v1 = v1 || new Vector2();\n\tthis.v2 = v2 || new Vector2();\n\n}\n\nLineCurve.prototype = Object.create( Curve.prototype );\nLineCurve.prototype.constructor = LineCurve;\n\nLineCurve.prototype.isLineCurve = true;\n\nLineCurve.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tconst point = optionalTarget || new Vector2();\n\n\tif ( t === 1 ) {\n\n\t\tpoint.copy( this.v2 );\n\n\t} else {\n\n\t\tpoint.copy( this.v2 ).sub( this.v1 );\n\t\tpoint.multiplyScalar( t ).add( this.v1 );\n\n\t}\n\n\treturn point;\n\n};\n\n// Line curve is linear, so we can overwrite default getPointAt\n\nLineCurve.prototype.getPointAt = function ( u, optionalTarget ) {\n\n\treturn this.getPoint( u, optionalTarget );\n\n};\n\nLineCurve.prototype.getTangent = function ( t, optionalTarget ) {\n\n\tconst tangent = optionalTarget || new Vector2();\n\n\ttangent.copy( this.v2 ).sub( this.v1 ).normalize();\n\n\treturn tangent;\n\n};\n\nLineCurve.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.v1.copy( source.v1 );\n\tthis.v2.copy( source.v2 );\n\n\treturn this;\n\n};\n\nLineCurve.prototype.toJSON = function () {\n\n\tconst data = Curve.prototype.toJSON.call( this );\n\n\tdata.v1 = this.v1.toArray();\n\tdata.v2 = this.v2.toArray();\n\n\treturn data;\n\n};\n\nLineCurve.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.v1.fromArray( json.v1 );\n\tthis.v2.fromArray( json.v2 );\n\n\treturn this;\n\n};\n\nfunction LineCurve3( v1, v2 ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'LineCurve3';\n\n\tthis.v1 = v1 || new Vector3();\n\tthis.v2 = v2 || new Vector3();\n\n}\n\nLineCurve3.prototype = Object.create( Curve.prototype );\nLineCurve3.prototype.constructor = LineCurve3;\n\nLineCurve3.prototype.isLineCurve3 = true;\n\nLineCurve3.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tconst point = optionalTarget || new Vector3();\n\n\tif ( t === 1 ) {\n\n\t\tpoint.copy( this.v2 );\n\n\t} else {\n\n\t\tpoint.copy( this.v2 ).sub( this.v1 );\n\t\tpoint.multiplyScalar( t ).add( this.v1 );\n\n\t}\n\n\treturn point;\n\n};\n\n// Line curve is linear, so we can overwrite default getPointAt\n\nLineCurve3.prototype.getPointAt = function ( u, optionalTarget ) {\n\n\treturn this.getPoint( u, optionalTarget );\n\n};\n\nLineCurve3.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.v1.copy( source.v1 );\n\tthis.v2.copy( source.v2 );\n\n\treturn this;\n\n};\n\nLineCurve3.prototype.toJSON = function () {\n\n\tconst data = Curve.prototype.toJSON.call( this );\n\n\tdata.v1 = this.v1.toArray();\n\tdata.v2 = this.v2.toArray();\n\n\treturn data;\n\n};\n\nLineCurve3.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.v1.fromArray( json.v1 );\n\tthis.v2.fromArray( json.v2 );\n\n\treturn this;\n\n};\n\nfunction QuadraticBezierCurve( v0, v1, v2 ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'QuadraticBezierCurve';\n\n\tthis.v0 = v0 || new Vector2();\n\tthis.v1 = v1 || new Vector2();\n\tthis.v2 = v2 || new Vector2();\n\n}\n\nQuadraticBezierCurve.prototype = Object.create( Curve.prototype );\nQuadraticBezierCurve.prototype.constructor = QuadraticBezierCurve;\n\nQuadraticBezierCurve.prototype.isQuadraticBezierCurve = true;\n\nQuadraticBezierCurve.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tconst point = optionalTarget || new Vector2();\n\n\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2;\n\n\tpoint.set(\n\t\tQuadraticBezier( t, v0.x, v1.x, v2.x ),\n\t\tQuadraticBezier( t, v0.y, v1.y, v2.y )\n\t);\n\n\treturn point;\n\n};\n\nQuadraticBezierCurve.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.v0.copy( source.v0 );\n\tthis.v1.copy( source.v1 );\n\tthis.v2.copy( source.v2 );\n\n\treturn this;\n\n};\n\nQuadraticBezierCurve.prototype.toJSON = function () {\n\n\tconst data = Curve.prototype.toJSON.call( this );\n\n\tdata.v0 = this.v0.toArray();\n\tdata.v1 = this.v1.toArray();\n\tdata.v2 = this.v2.toArray();\n\n\treturn data;\n\n};\n\nQuadraticBezierCurve.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.v0.fromArray( json.v0 );\n\tthis.v1.fromArray( json.v1 );\n\tthis.v2.fromArray( json.v2 );\n\n\treturn this;\n\n};\n\nfunction QuadraticBezierCurve3( v0, v1, v2 ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'QuadraticBezierCurve3';\n\n\tthis.v0 = v0 || new Vector3();\n\tthis.v1 = v1 || new Vector3();\n\tthis.v2 = v2 || new Vector3();\n\n}\n\nQuadraticBezierCurve3.prototype = Object.create( Curve.prototype );\nQuadraticBezierCurve3.prototype.constructor = QuadraticBezierCurve3;\n\nQuadraticBezierCurve3.prototype.isQuadraticBezierCurve3 = true;\n\nQuadraticBezierCurve3.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tconst point = optionalTarget || new Vector3();\n\n\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2;\n\n\tpoint.set(\n\t\tQuadraticBezier( t, v0.x, v1.x, v2.x ),\n\t\tQuadraticBezier( t, v0.y, v1.y, v2.y ),\n\t\tQuadraticBezier( t, v0.z, v1.z, v2.z )\n\t);\n\n\treturn point;\n\n};\n\nQuadraticBezierCurve3.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.v0.copy( source.v0 );\n\tthis.v1.copy( source.v1 );\n\tthis.v2.copy( source.v2 );\n\n\treturn this;\n\n};\n\nQuadraticBezierCurve3.prototype.toJSON = function () {\n\n\tconst data = Curve.prototype.toJSON.call( this );\n\n\tdata.v0 = this.v0.toArray();\n\tdata.v1 = this.v1.toArray();\n\tdata.v2 = this.v2.toArray();\n\n\treturn data;\n\n};\n\nQuadraticBezierCurve3.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.v0.fromArray( json.v0 );\n\tthis.v1.fromArray( json.v1 );\n\tthis.v2.fromArray( json.v2 );\n\n\treturn this;\n\n};\n\nfunction SplineCurve( points ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'SplineCurve';\n\n\tthis.points = points || [];\n\n}\n\nSplineCurve.prototype = Object.create( Curve.prototype );\nSplineCurve.prototype.constructor = SplineCurve;\n\nSplineCurve.prototype.isSplineCurve = true;\n\nSplineCurve.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tconst point = optionalTarget || new Vector2();\n\n\tconst points = this.points;\n\tconst p = ( points.length - 1 ) * t;\n\n\tconst intPoint = Math.floor( p );\n\tconst weight = p - intPoint;\n\n\tconst p0 = points[ intPoint === 0 ? intPoint : intPoint - 1 ];\n\tconst p1 = points[ intPoint ];\n\tconst p2 = points[ intPoint > points.length - 2 ? points.length - 1 : intPoint + 1 ];\n\tconst p3 = points[ intPoint > points.length - 3 ? points.length - 1 : intPoint + 2 ];\n\n\tpoint.set(\n\t\tCatmullRom( weight, p0.x, p1.x, p2.x, p3.x ),\n\t\tCatmullRom( weight, p0.y, p1.y, p2.y, p3.y )\n\t);\n\n\treturn point;\n\n};\n\nSplineCurve.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.points = [];\n\n\tfor ( let i = 0, l = source.points.length; i < l; i ++ ) {\n\n\t\tconst point = source.points[ i ];\n\n\t\tthis.points.push( point.clone() );\n\n\t}\n\n\treturn this;\n\n};\n\nSplineCurve.prototype.toJSON = function () {\n\n\tconst data = Curve.prototype.toJSON.call( this );\n\n\tdata.points = [];\n\n\tfor ( let i = 0, l = this.points.length; i < l; i ++ ) {\n\n\t\tconst point = this.points[ i ];\n\t\tdata.points.push( point.toArray() );\n\n\t}\n\n\treturn data;\n\n};\n\nSplineCurve.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.points = [];\n\n\tfor ( let i = 0, l = json.points.length; i < l; i ++ ) {\n\n\t\tconst point = json.points[ i ];\n\t\tthis.points.push( new Vector2().fromArray( point ) );\n\n\t}\n\n\treturn this;\n\n};\n\nvar Curves = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tArcCurve: ArcCurve,\n\tCatmullRomCurve3: CatmullRomCurve3,\n\tCubicBezierCurve: CubicBezierCurve,\n\tCubicBezierCurve3: CubicBezierCurve3,\n\tEllipseCurve: EllipseCurve,\n\tLineCurve: LineCurve,\n\tLineCurve3: LineCurve3,\n\tQuadraticBezierCurve: QuadraticBezierCurve,\n\tQuadraticBezierCurve3: QuadraticBezierCurve3,\n\tSplineCurve: SplineCurve\n});\n\n/**************************************************************\n *\tCurved Path - a curve path is simply a array of connected\n *  curves, but retains the api of a curve\n **************************************************************/\n\nfunction CurvePath() {\n\n\tCurve.call( this );\n\n\tthis.type = 'CurvePath';\n\n\tthis.curves = [];\n\tthis.autoClose = false; // Automatically closes the path\n\n}\n\nCurvePath.prototype = Object.assign( Object.create( Curve.prototype ), {\n\n\tconstructor: CurvePath,\n\n\tadd: function ( curve ) {\n\n\t\tthis.curves.push( curve );\n\n\t},\n\n\tclosePath: function () {\n\n\t\t// Add a line curve if start and end of lines are not connected\n\t\tconst startPoint = this.curves[ 0 ].getPoint( 0 );\n\t\tconst endPoint = this.curves[ this.curves.length - 1 ].getPoint( 1 );\n\n\t\tif ( ! startPoint.equals( endPoint ) ) {\n\n\t\t\tthis.curves.push( new LineCurve( endPoint, startPoint ) );\n\n\t\t}\n\n\t},\n\n\t// To get accurate point with reference to\n\t// entire path distance at time t,\n\t// following has to be done:\n\n\t// 1. Length of each sub path have to be known\n\t// 2. Locate and identify type of curve\n\t// 3. Get t for the curve\n\t// 4. Return curve.getPointAt(t')\n\n\tgetPoint: function ( t ) {\n\n\t\tconst d = t * this.getLength();\n\t\tconst curveLengths = this.getCurveLengths();\n\t\tlet i = 0;\n\n\t\t// To think about boundaries points.\n\n\t\twhile ( i < curveLengths.length ) {\n\n\t\t\tif ( curveLengths[ i ] >= d ) {\n\n\t\t\t\tconst diff = curveLengths[ i ] - d;\n\t\t\t\tconst curve = this.curves[ i ];\n\n\t\t\t\tconst segmentLength = curve.getLength();\n\t\t\t\tconst u = segmentLength === 0 ? 0 : 1 - diff / segmentLength;\n\n\t\t\t\treturn curve.getPointAt( u );\n\n\t\t\t}\n\n\t\t\ti ++;\n\n\t\t}\n\n\t\treturn null;\n\n\t\t// loop where sum != 0, sum > d , sum+1 <d\n\n\t},\n\n\t// We cannot use the default THREE.Curve getPoint() with getLength() because in\n\t// THREE.Curve, getLength() depends on getPoint() but in THREE.CurvePath\n\t// getPoint() depends on getLength\n\n\tgetLength: function () {\n\n\t\tconst lens = this.getCurveLengths();\n\t\treturn lens[ lens.length - 1 ];\n\n\t},\n\n\t// cacheLengths must be recalculated.\n\tupdateArcLengths: function () {\n\n\t\tthis.needsUpdate = true;\n\t\tthis.cacheLengths = null;\n\t\tthis.getCurveLengths();\n\n\t},\n\n\t// Compute lengths and cache them\n\t// We cannot overwrite getLengths() because UtoT mapping uses it.\n\n\tgetCurveLengths: function () {\n\n\t\t// We use cache values if curves and cache array are same length\n\n\t\tif ( this.cacheLengths && this.cacheLengths.length === this.curves.length ) {\n\n\t\t\treturn this.cacheLengths;\n\n\t\t}\n\n\t\t// Get length of sub-curve\n\t\t// Push sums into cached array\n\n\t\tconst lengths = [];\n\t\tlet sums = 0;\n\n\t\tfor ( let i = 0, l = this.curves.length; i < l; i ++ ) {\n\n\t\t\tsums += this.curves[ i ].getLength();\n\t\t\tlengths.push( sums );\n\n\t\t}\n\n\t\tthis.cacheLengths = lengths;\n\n\t\treturn lengths;\n\n\t},\n\n\tgetSpacedPoints: function ( divisions ) {\n\n\t\tif ( divisions === undefined ) divisions = 40;\n\n\t\tconst points = [];\n\n\t\tfor ( let i = 0; i <= divisions; i ++ ) {\n\n\t\t\tpoints.push( this.getPoint( i / divisions ) );\n\n\t\t}\n\n\t\tif ( this.autoClose ) {\n\n\t\t\tpoints.push( points[ 0 ] );\n\n\t\t}\n\n\t\treturn points;\n\n\t},\n\n\tgetPoints: function ( divisions ) {\n\n\t\tdivisions = divisions || 12;\n\n\t\tconst points = [];\n\t\tlet last;\n\n\t\tfor ( let i = 0, curves = this.curves; i < curves.length; i ++ ) {\n\n\t\t\tconst curve = curves[ i ];\n\t\t\tconst resolution = ( curve && curve.isEllipseCurve ) ? divisions * 2\n\t\t\t\t: ( curve && ( curve.isLineCurve || curve.isLineCurve3 ) ) ? 1\n\t\t\t\t\t: ( curve && curve.isSplineCurve ) ? divisions * curve.points.length\n\t\t\t\t\t\t: divisions;\n\n\t\t\tconst pts = curve.getPoints( resolution );\n\n\t\t\tfor ( let j = 0; j < pts.length; j ++ ) {\n\n\t\t\t\tconst point = pts[ j ];\n\n\t\t\t\tif ( last && last.equals( point ) ) continue; // ensures no consecutive points are duplicates\n\n\t\t\t\tpoints.push( point );\n\t\t\t\tlast = point;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.autoClose && points.length > 1 && ! points[ points.length - 1 ].equals( points[ 0 ] ) ) {\n\n\t\t\tpoints.push( points[ 0 ] );\n\n\t\t}\n\n\t\treturn points;\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tCurve.prototype.copy.call( this, source );\n\n\t\tthis.curves = [];\n\n\t\tfor ( let i = 0, l = source.curves.length; i < l; i ++ ) {\n\n\t\t\tconst curve = source.curves[ i ];\n\n\t\t\tthis.curves.push( curve.clone() );\n\n\t\t}\n\n\t\tthis.autoClose = source.autoClose;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tconst data = Curve.prototype.toJSON.call( this );\n\n\t\tdata.autoClose = this.autoClose;\n\t\tdata.curves = [];\n\n\t\tfor ( let i = 0, l = this.curves.length; i < l; i ++ ) {\n\n\t\t\tconst curve = this.curves[ i ];\n\t\t\tdata.curves.push( curve.toJSON() );\n\n\t\t}\n\n\t\treturn data;\n\n\t},\n\n\tfromJSON: function ( json ) {\n\n\t\tCurve.prototype.fromJSON.call( this, json );\n\n\t\tthis.autoClose = json.autoClose;\n\t\tthis.curves = [];\n\n\t\tfor ( let i = 0, l = json.curves.length; i < l; i ++ ) {\n\n\t\t\tconst curve = json.curves[ i ];\n\t\t\tthis.curves.push( new Curves[ curve.type ]().fromJSON( curve ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\nfunction Path( points ) {\n\n\tCurvePath.call( this );\n\n\tthis.type = 'Path';\n\n\tthis.currentPoint = new Vector2();\n\n\tif ( points ) {\n\n\t\tthis.setFromPoints( points );\n\n\t}\n\n}\n\nPath.prototype = Object.assign( Object.create( CurvePath.prototype ), {\n\n\tconstructor: Path,\n\n\tsetFromPoints: function ( points ) {\n\n\t\tthis.moveTo( points[ 0 ].x, points[ 0 ].y );\n\n\t\tfor ( let i = 1, l = points.length; i < l; i ++ ) {\n\n\t\t\tthis.lineTo( points[ i ].x, points[ i ].y );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tmoveTo: function ( x, y ) {\n\n\t\tthis.currentPoint.set( x, y ); // TODO consider referencing vectors instead of copying?\n\n\t\treturn this;\n\n\t},\n\n\tlineTo: function ( x, y ) {\n\n\t\tconst curve = new LineCurve( this.currentPoint.clone(), new Vector2( x, y ) );\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( x, y );\n\n\t\treturn this;\n\n\t},\n\n\tquadraticCurveTo: function ( aCPx, aCPy, aX, aY ) {\n\n\t\tconst curve = new QuadraticBezierCurve(\n\t\t\tthis.currentPoint.clone(),\n\t\t\tnew Vector2( aCPx, aCPy ),\n\t\t\tnew Vector2( aX, aY )\n\t\t);\n\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( aX, aY );\n\n\t\treturn this;\n\n\t},\n\n\tbezierCurveTo: function ( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY ) {\n\n\t\tconst curve = new CubicBezierCurve(\n\t\t\tthis.currentPoint.clone(),\n\t\t\tnew Vector2( aCP1x, aCP1y ),\n\t\t\tnew Vector2( aCP2x, aCP2y ),\n\t\t\tnew Vector2( aX, aY )\n\t\t);\n\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( aX, aY );\n\n\t\treturn this;\n\n\t},\n\n\tsplineThru: function ( pts /*Array of Vector*/ ) {\n\n\t\tconst npts = [ this.currentPoint.clone() ].concat( pts );\n\n\t\tconst curve = new SplineCurve( npts );\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.copy( pts[ pts.length - 1 ] );\n\n\t\treturn this;\n\n\t},\n\n\tarc: function ( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\t\tconst x0 = this.currentPoint.x;\n\t\tconst y0 = this.currentPoint.y;\n\n\t\tthis.absarc( aX + x0, aY + y0, aRadius,\n\t\t\taStartAngle, aEndAngle, aClockwise );\n\n\t\treturn this;\n\n\t},\n\n\tabsarc: function ( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\t\tthis.absellipse( aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise );\n\n\t\treturn this;\n\n\t},\n\n\tellipse: function ( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) {\n\n\t\tconst x0 = this.currentPoint.x;\n\t\tconst y0 = this.currentPoint.y;\n\n\t\tthis.absellipse( aX + x0, aY + y0, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation );\n\n\t\treturn this;\n\n\t},\n\n\tabsellipse: function ( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) {\n\n\t\tconst curve = new EllipseCurve( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation );\n\n\t\tif ( this.curves.length > 0 ) {\n\n\t\t\t// if a previous curve is present, attempt to join\n\t\t\tconst firstPoint = curve.getPoint( 0 );\n\n\t\t\tif ( ! firstPoint.equals( this.currentPoint ) ) {\n\n\t\t\t\tthis.lineTo( firstPoint.x, firstPoint.y );\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.curves.push( curve );\n\n\t\tconst lastPoint = curve.getPoint( 1 );\n\t\tthis.currentPoint.copy( lastPoint );\n\n\t\treturn this;\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tCurvePath.prototype.copy.call( this, source );\n\n\t\tthis.currentPoint.copy( source.currentPoint );\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tconst data = CurvePath.prototype.toJSON.call( this );\n\n\t\tdata.currentPoint = this.currentPoint.toArray();\n\n\t\treturn data;\n\n\t},\n\n\tfromJSON: function ( json ) {\n\n\t\tCurvePath.prototype.fromJSON.call( this, json );\n\n\t\tthis.currentPoint.fromArray( json.currentPoint );\n\n\t\treturn this;\n\n\t}\n\n} );\n\nfunction Shape( points ) {\n\n\tPath.call( this, points );\n\n\tthis.uuid = MathUtils.generateUUID();\n\n\tthis.type = 'Shape';\n\n\tthis.holes = [];\n\n}\n\nShape.prototype = Object.assign( Object.create( Path.prototype ), {\n\n\tconstructor: Shape,\n\n\tgetPointsHoles: function ( divisions ) {\n\n\t\tconst holesPts = [];\n\n\t\tfor ( let i = 0, l = this.holes.length; i < l; i ++ ) {\n\n\t\t\tholesPts[ i ] = this.holes[ i ].getPoints( divisions );\n\n\t\t}\n\n\t\treturn holesPts;\n\n\t},\n\n\t// get points of shape and holes (keypoints based on segments parameter)\n\n\textractPoints: function ( divisions ) {\n\n\t\treturn {\n\n\t\t\tshape: this.getPoints( divisions ),\n\t\t\tholes: this.getPointsHoles( divisions )\n\n\t\t};\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tPath.prototype.copy.call( this, source );\n\n\t\tthis.holes = [];\n\n\t\tfor ( let i = 0, l = source.holes.length; i < l; i ++ ) {\n\n\t\t\tconst hole = source.holes[ i ];\n\n\t\t\tthis.holes.push( hole.clone() );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tconst data = Path.prototype.toJSON.call( this );\n\n\t\tdata.uuid = this.uuid;\n\t\tdata.holes = [];\n\n\t\tfor ( let i = 0, l = this.holes.length; i < l; i ++ ) {\n\n\t\t\tconst hole = this.holes[ i ];\n\t\t\tdata.holes.push( hole.toJSON() );\n\n\t\t}\n\n\t\treturn data;\n\n\t},\n\n\tfromJSON: function ( json ) {\n\n\t\tPath.prototype.fromJSON.call( this, json );\n\n\t\tthis.uuid = json.uuid;\n\t\tthis.holes = [];\n\n\t\tfor ( let i = 0, l = json.holes.length; i < l; i ++ ) {\n\n\t\t\tconst hole = json.holes[ i ];\n\t\t\tthis.holes.push( new Path().fromJSON( hole ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\nfunction Light( color, intensity ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Light';\n\n\tthis.color = new Color( color );\n\tthis.intensity = intensity !== undefined ? intensity : 1;\n\n\tthis.receiveShadow = undefined;\n\n}\n\nLight.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Light,\n\n\tisLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tObject3D.prototype.copy.call( this, source );\n\n\t\tthis.color.copy( source.color );\n\t\tthis.intensity = source.intensity;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tconst data = Object3D.prototype.toJSON.call( this, meta );\n\n\t\tdata.object.color = this.color.getHex();\n\t\tdata.object.intensity = this.intensity;\n\n\t\tif ( this.groundColor !== undefined ) data.object.groundColor = this.groundColor.getHex();\n\n\t\tif ( this.distance !== undefined ) data.object.distance = this.distance;\n\t\tif ( this.angle !== undefined ) data.object.angle = this.angle;\n\t\tif ( this.decay !== undefined ) data.object.decay = this.decay;\n\t\tif ( this.penumbra !== undefined ) data.object.penumbra = this.penumbra;\n\n\t\tif ( this.shadow !== undefined ) data.object.shadow = this.shadow.toJSON();\n\n\t\treturn data;\n\n\t}\n\n} );\n\nfunction HemisphereLight( skyColor, groundColor, intensity ) {\n\n\tLight.call( this, skyColor, intensity );\n\n\tthis.type = 'HemisphereLight';\n\n\tthis.castShadow = undefined;\n\n\tthis.position.copy( Object3D.DefaultUp );\n\tthis.updateMatrix();\n\n\tthis.groundColor = new Color( groundColor );\n\n}\n\nHemisphereLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: HemisphereLight,\n\n\tisHemisphereLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.groundColor.copy( source.groundColor );\n\n\t\treturn this;\n\n\t}\n\n} );\n\nfunction LightShadow( camera ) {\n\n\tthis.camera = camera;\n\n\tthis.bias = 0;\n\tthis.normalBias = 0;\n\tthis.radius = 1;\n\n\tthis.mapSize = new Vector2( 512, 512 );\n\n\tthis.map = null;\n\tthis.mapPass = null;\n\tthis.matrix = new Matrix4();\n\n\tthis.autoUpdate = true;\n\tthis.needsUpdate = false;\n\n\tthis._frustum = new Frustum();\n\tthis._frameExtents = new Vector2( 1, 1 );\n\n\tthis._viewportCount = 1;\n\n\tthis._viewports = [\n\n\t\tnew Vector4( 0, 0, 1, 1 )\n\n\t];\n\n}\n\nObject.assign( LightShadow.prototype, {\n\n\t_projScreenMatrix: new Matrix4(),\n\n\t_lightPositionWorld: new Vector3(),\n\n\t_lookTarget: new Vector3(),\n\n\tgetViewportCount: function () {\n\n\t\treturn this._viewportCount;\n\n\t},\n\n\tgetFrustum: function () {\n\n\t\treturn this._frustum;\n\n\t},\n\n\tupdateMatrices: function ( light ) {\n\n\t\tconst shadowCamera = this.camera,\n\t\t\tshadowMatrix = this.matrix,\n\t\t\tprojScreenMatrix = this._projScreenMatrix,\n\t\t\tlookTarget = this._lookTarget,\n\t\t\tlightPositionWorld = this._lightPositionWorld;\n\n\t\tlightPositionWorld.setFromMatrixPosition( light.matrixWorld );\n\t\tshadowCamera.position.copy( lightPositionWorld );\n\n\t\tlookTarget.setFromMatrixPosition( light.target.matrixWorld );\n\t\tshadowCamera.lookAt( lookTarget );\n\t\tshadowCamera.updateMatrixWorld();\n\n\t\tprojScreenMatrix.multiplyMatrices( shadowCamera.projectionMatrix, shadowCamera.matrixWorldInverse );\n\t\tthis._frustum.setFromProjectionMatrix( projScreenMatrix );\n\n\t\tshadowMatrix.set(\n\t\t\t0.5, 0.0, 0.0, 0.5,\n\t\t\t0.0, 0.5, 0.0, 0.5,\n\t\t\t0.0, 0.0, 0.5, 0.5,\n\t\t\t0.0, 0.0, 0.0, 1.0\n\t\t);\n\n\t\tshadowMatrix.multiply( shadowCamera.projectionMatrix );\n\t\tshadowMatrix.multiply( shadowCamera.matrixWorldInverse );\n\n\t},\n\n\tgetViewport: function ( viewportIndex ) {\n\n\t\treturn this._viewports[ viewportIndex ];\n\n\t},\n\n\tgetFrameExtents: function () {\n\n\t\treturn this._frameExtents;\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.camera = source.camera.clone();\n\n\t\tthis.bias = source.bias;\n\t\tthis.radius = source.radius;\n\n\t\tthis.mapSize.copy( source.mapSize );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tconst object = {};\n\n\t\tif ( this.bias !== 0 ) object.bias = this.bias;\n\t\tif ( this.normalBias !== 0 ) object.normalBias = this.normalBias;\n\t\tif ( this.radius !== 1 ) object.radius = this.radius;\n\t\tif ( this.mapSize.x !== 512 || this.mapSize.y !== 512 ) object.mapSize = this.mapSize.toArray();\n\n\t\tobject.camera = this.camera.toJSON( false ).object;\n\t\tdelete object.camera.matrix;\n\n\t\treturn object;\n\n\t}\n\n} );\n\nfunction SpotLightShadow() {\n\n\tLightShadow.call( this, new PerspectiveCamera( 50, 1, 0.5, 500 ) );\n\n}\n\nSpotLightShadow.prototype = Object.assign( Object.create( LightShadow.prototype ), {\n\n\tconstructor: SpotLightShadow,\n\n\tisSpotLightShadow: true,\n\n\tupdateMatrices: function ( light ) {\n\n\t\tconst camera = this.camera;\n\n\t\tconst fov = MathUtils.RAD2DEG * 2 * light.angle;\n\t\tconst aspect = this.mapSize.width / this.mapSize.height;\n\t\tconst far = light.distance || camera.far;\n\n\t\tif ( fov !== camera.fov || aspect !== camera.aspect || far !== camera.far ) {\n\n\t\t\tcamera.fov = fov;\n\t\t\tcamera.aspect = aspect;\n\t\t\tcamera.far = far;\n\t\t\tcamera.updateProjectionMatrix();\n\n\t\t}\n\n\t\tLightShadow.prototype.updateMatrices.call( this, light );\n\n\t}\n\n} );\n\nfunction SpotLight( color, intensity, distance, angle, penumbra, decay ) {\n\n\tLight.call( this, color, intensity );\n\n\tthis.type = 'SpotLight';\n\n\tthis.position.copy( Object3D.DefaultUp );\n\tthis.updateMatrix();\n\n\tthis.target = new Object3D();\n\n\tObject.defineProperty( this, 'power', {\n\t\tget: function () {\n\n\t\t\t// intensity = power per solid angle.\n\t\t\t// ref: equation (17) from https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf\n\t\t\treturn this.intensity * Math.PI;\n\n\t\t},\n\t\tset: function ( power ) {\n\n\t\t\t// intensity = power per solid angle.\n\t\t\t// ref: equation (17) from https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf\n\t\t\tthis.intensity = power / Math.PI;\n\n\t\t}\n\t} );\n\n\tthis.distance = ( distance !== undefined ) ? distance : 0;\n\tthis.angle = ( angle !== undefined ) ? angle : Math.PI / 3;\n\tthis.penumbra = ( penumbra !== undefined ) ? penumbra : 0;\n\tthis.decay = ( decay !== undefined ) ? decay : 1;\t// for physically correct lights, should be 2.\n\n\tthis.shadow = new SpotLightShadow();\n\n}\n\nSpotLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: SpotLight,\n\n\tisSpotLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.distance = source.distance;\n\t\tthis.angle = source.angle;\n\t\tthis.penumbra = source.penumbra;\n\t\tthis.decay = source.decay;\n\n\t\tthis.target = source.target.clone();\n\n\t\tthis.shadow = source.shadow.clone();\n\n\t\treturn this;\n\n\t}\n\n} );\n\nfunction PointLightShadow() {\n\n\tLightShadow.call( this, new PerspectiveCamera( 90, 1, 0.5, 500 ) );\n\n\tthis._frameExtents = new Vector2( 4, 2 );\n\n\tthis._viewportCount = 6;\n\n\tthis._viewports = [\n\t\t// These viewports map a cube-map onto a 2D texture with the\n\t\t// following orientation:\n\t\t//\n\t\t//  xzXZ\n\t\t//   y Y\n\t\t//\n\t\t// X - Positive x direction\n\t\t// x - Negative x direction\n\t\t// Y - Positive y direction\n\t\t// y - Negative y direction\n\t\t// Z - Positive z direction\n\t\t// z - Negative z direction\n\n\t\t// positive X\n\t\tnew Vector4( 2, 1, 1, 1 ),\n\t\t// negative X\n\t\tnew Vector4( 0, 1, 1, 1 ),\n\t\t// positive Z\n\t\tnew Vector4( 3, 1, 1, 1 ),\n\t\t// negative Z\n\t\tnew Vector4( 1, 1, 1, 1 ),\n\t\t// positive Y\n\t\tnew Vector4( 3, 0, 1, 1 ),\n\t\t// negative Y\n\t\tnew Vector4( 1, 0, 1, 1 )\n\t];\n\n\tthis._cubeDirections = [\n\t\tnew Vector3( 1, 0, 0 ), new Vector3( - 1, 0, 0 ), new Vector3( 0, 0, 1 ),\n\t\tnew Vector3( 0, 0, - 1 ), new Vector3( 0, 1, 0 ), new Vector3( 0, - 1, 0 )\n\t];\n\n\tthis._cubeUps = [\n\t\tnew Vector3( 0, 1, 0 ), new Vector3( 0, 1, 0 ), new Vector3( 0, 1, 0 ),\n\t\tnew Vector3( 0, 1, 0 ), new Vector3( 0, 0, 1 ),\tnew Vector3( 0, 0, - 1 )\n\t];\n\n}\n\nPointLightShadow.prototype = Object.assign( Object.create( LightShadow.prototype ), {\n\n\tconstructor: PointLightShadow,\n\n\tisPointLightShadow: true,\n\n\tupdateMatrices: function ( light, viewportIndex ) {\n\n\t\tif ( viewportIndex === undefined ) viewportIndex = 0;\n\n\t\tconst camera = this.camera,\n\t\t\tshadowMatrix = this.matrix,\n\t\t\tlightPositionWorld = this._lightPositionWorld,\n\t\t\tlookTarget = this._lookTarget,\n\t\t\tprojScreenMatrix = this._projScreenMatrix;\n\n\t\tlightPositionWorld.setFromMatrixPosition( light.matrixWorld );\n\t\tcamera.position.copy( lightPositionWorld );\n\n\t\tlookTarget.copy( camera.position );\n\t\tlookTarget.add( this._cubeDirections[ viewportIndex ] );\n\t\tcamera.up.copy( this._cubeUps[ viewportIndex ] );\n\t\tcamera.lookAt( lookTarget );\n\t\tcamera.updateMatrixWorld();\n\n\t\tshadowMatrix.makeTranslation( - lightPositionWorld.x, - lightPositionWorld.y, - lightPositionWorld.z );\n\n\t\tprojScreenMatrix.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse );\n\t\tthis._frustum.setFromProjectionMatrix( projScreenMatrix );\n\n\t}\n\n} );\n\nfunction PointLight( color, intensity, distance, decay ) {\n\n\tLight.call( this, color, intensity );\n\n\tthis.type = 'PointLight';\n\n\tObject.defineProperty( this, 'power', {\n\t\tget: function () {\n\n\t\t\t// intensity = power per solid angle.\n\t\t\t// ref: equation (15) from https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf\n\t\t\treturn this.intensity * 4 * Math.PI;\n\n\t\t},\n\t\tset: function ( power ) {\n\n\t\t\t// intensity = power per solid angle.\n\t\t\t// ref: equation (15) from https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf\n\t\t\tthis.intensity = power / ( 4 * Math.PI );\n\n\t\t}\n\t} );\n\n\tthis.distance = ( distance !== undefined ) ? distance : 0;\n\tthis.decay = ( decay !== undefined ) ? decay : 1;\t// for physically correct lights, should be 2.\n\n\tthis.shadow = new PointLightShadow();\n\n}\n\nPointLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: PointLight,\n\n\tisPointLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.distance = source.distance;\n\t\tthis.decay = source.decay;\n\n\t\tthis.shadow = source.shadow.clone();\n\n\t\treturn this;\n\n\t}\n\n} );\n\nfunction OrthographicCamera( left, right, top, bottom, near, far ) {\n\n\tCamera.call( this );\n\n\tthis.type = 'OrthographicCamera';\n\n\tthis.zoom = 1;\n\tthis.view = null;\n\n\tthis.left = ( left !== undefined ) ? left : - 1;\n\tthis.right = ( right !== undefined ) ? right : 1;\n\tthis.top = ( top !== undefined ) ? top : 1;\n\tthis.bottom = ( bottom !== undefined ) ? bottom : - 1;\n\n\tthis.near = ( near !== undefined ) ? near : 0.1;\n\tthis.far = ( far !== undefined ) ? far : 2000;\n\n\tthis.updateProjectionMatrix();\n\n}\n\nOrthographicCamera.prototype = Object.assign( Object.create( Camera.prototype ), {\n\n\tconstructor: OrthographicCamera,\n\n\tisOrthographicCamera: true,\n\n\tcopy: function ( source, recursive ) {\n\n\t\tCamera.prototype.copy.call( this, source, recursive );\n\n\t\tthis.left = source.left;\n\t\tthis.right = source.right;\n\t\tthis.top = source.top;\n\t\tthis.bottom = source.bottom;\n\t\tthis.near = source.near;\n\t\tthis.far = source.far;\n\n\t\tthis.zoom = source.zoom;\n\t\tthis.view = source.view === null ? null : Object.assign( {}, source.view );\n\n\t\treturn this;\n\n\t},\n\n\tsetViewOffset: function ( fullWidth, fullHeight, x, y, width, height ) {\n\n\t\tif ( this.view === null ) {\n\n\t\t\tthis.view = {\n\t\t\t\tenabled: true,\n\t\t\t\tfullWidth: 1,\n\t\t\t\tfullHeight: 1,\n\t\t\t\toffsetX: 0,\n\t\t\t\toffsetY: 0,\n\t\t\t\twidth: 1,\n\t\t\t\theight: 1\n\t\t\t};\n\n\t\t}\n\n\t\tthis.view.enabled = true;\n\t\tthis.view.fullWidth = fullWidth;\n\t\tthis.view.fullHeight = fullHeight;\n\t\tthis.view.offsetX = x;\n\t\tthis.view.offsetY = y;\n\t\tthis.view.width = width;\n\t\tthis.view.height = height;\n\n\t\tthis.updateProjectionMatrix();\n\n\t},\n\n\tclearViewOffset: function () {\n\n\t\tif ( this.view !== null ) {\n\n\t\t\tthis.view.enabled = false;\n\n\t\t}\n\n\t\tthis.updateProjectionMatrix();\n\n\t},\n\n\tupdateProjectionMatrix: function () {\n\n\t\tconst dx = ( this.right - this.left ) / ( 2 * this.zoom );\n\t\tconst dy = ( this.top - this.bottom ) / ( 2 * this.zoom );\n\t\tconst cx = ( this.right + this.left ) / 2;\n\t\tconst cy = ( this.top + this.bottom ) / 2;\n\n\t\tlet left = cx - dx;\n\t\tlet right = cx + dx;\n\t\tlet top = cy + dy;\n\t\tlet bottom = cy - dy;\n\n\t\tif ( this.view !== null && this.view.enabled ) {\n\n\t\t\tconst scaleW = ( this.right - this.left ) / this.view.fullWidth / this.zoom;\n\t\t\tconst scaleH = ( this.top - this.bottom ) / this.view.fullHeight / this.zoom;\n\n\t\t\tleft += scaleW * this.view.offsetX;\n\t\t\tright = left + scaleW * this.view.width;\n\t\t\ttop -= scaleH * this.view.offsetY;\n\t\t\tbottom = top - scaleH * this.view.height;\n\n\t\t}\n\n\t\tthis.projectionMatrix.makeOrthographic( left, right, top, bottom, this.near, this.far );\n\n\t\tthis.projectionMatrixInverse.getInverse( this.projectionMatrix );\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tconst data = Object3D.prototype.toJSON.call( this, meta );\n\n\t\tdata.object.zoom = this.zoom;\n\t\tdata.object.left = this.left;\n\t\tdata.object.right = this.right;\n\t\tdata.object.top = this.top;\n\t\tdata.object.bottom = this.bottom;\n\t\tdata.object.near = this.near;\n\t\tdata.object.far = this.far;\n\n\t\tif ( this.view !== null ) data.object.view = Object.assign( {}, this.view );\n\n\t\treturn data;\n\n\t}\n\n} );\n\nfunction DirectionalLightShadow() {\n\n\tLightShadow.call( this, new OrthographicCamera( - 5, 5, 5, - 5, 0.5, 500 ) );\n\n}\n\nDirectionalLightShadow.prototype = Object.assign( Object.create( LightShadow.prototype ), {\n\n\tconstructor: DirectionalLightShadow,\n\n\tisDirectionalLightShadow: true,\n\n\tupdateMatrices: function ( light ) {\n\n\t\tLightShadow.prototype.updateMatrices.call( this, light );\n\n\t}\n\n} );\n\nfunction DirectionalLight( color, intensity ) {\n\n\tLight.call( this, color, intensity );\n\n\tthis.type = 'DirectionalLight';\n\n\tthis.position.copy( Object3D.DefaultUp );\n\tthis.updateMatrix();\n\n\tthis.target = new Object3D();\n\n\tthis.shadow = new DirectionalLightShadow();\n\n}\n\nDirectionalLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: DirectionalLight,\n\n\tisDirectionalLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.target = source.target.clone();\n\n\t\tthis.shadow = source.shadow.clone();\n\n\t\treturn this;\n\n\t}\n\n} );\n\nfunction AmbientLight( color, intensity ) {\n\n\tLight.call( this, color, intensity );\n\n\tthis.type = 'AmbientLight';\n\n\tthis.castShadow = undefined;\n\n}\n\nAmbientLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: AmbientLight,\n\n\tisAmbientLight: true\n\n} );\n\nfunction RectAreaLight( color, intensity, width, height ) {\n\n\tLight.call( this, color, intensity );\n\n\tthis.type = 'RectAreaLight';\n\n\tthis.width = ( width !== undefined ) ? width : 10;\n\tthis.height = ( height !== undefined ) ? height : 10;\n\n}\n\nRectAreaLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: RectAreaLight,\n\n\tisRectAreaLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.width = source.width;\n\t\tthis.height = source.height;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tconst data = Light.prototype.toJSON.call( this, meta );\n\n\t\tdata.object.width = this.width;\n\t\tdata.object.height = this.height;\n\n\t\treturn data;\n\n\t}\n\n} );\n\n/**\n * Primary reference:\n *   https://graphics.stanford.edu/papers/envmap/envmap.pdf\n *\n * Secondary reference:\n *   https://www.ppsloan.org/publications/StupidSH36.pdf\n */\n\n// 3-band SH defined by 9 coefficients\n\nclass SphericalHarmonics3 {\n\n\tconstructor() {\n\n\t\tObject.defineProperty( this, 'isSphericalHarmonics3', { value: true } );\n\n\t\tthis.coefficients = [];\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients.push( new Vector3() );\n\n\t\t}\n\n\t}\n\n\tset( coefficients ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].copy( coefficients[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tzero() {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].set( 0, 0, 0 );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// get the radiance in the direction of the normal\n\t// target is a Vector3\n\tgetAt( normal, target ) {\n\n\t\t// normal is assumed to be unit length\n\n\t\tconst x = normal.x, y = normal.y, z = normal.z;\n\n\t\tconst coeff = this.coefficients;\n\n\t\t// band 0\n\t\ttarget.copy( coeff[ 0 ] ).multiplyScalar( 0.282095 );\n\n\t\t// band 1\n\t\ttarget.addScaledVector( coeff[ 1 ], 0.488603 * y );\n\t\ttarget.addScaledVector( coeff[ 2 ], 0.488603 * z );\n\t\ttarget.addScaledVector( coeff[ 3 ], 0.488603 * x );\n\n\t\t// band 2\n\t\ttarget.addScaledVector( coeff[ 4 ], 1.092548 * ( x * y ) );\n\t\ttarget.addScaledVector( coeff[ 5 ], 1.092548 * ( y * z ) );\n\t\ttarget.addScaledVector( coeff[ 6 ], 0.315392 * ( 3.0 * z * z - 1.0 ) );\n\t\ttarget.addScaledVector( coeff[ 7 ], 1.092548 * ( x * z ) );\n\t\ttarget.addScaledVector( coeff[ 8 ], 0.546274 * ( x * x - y * y ) );\n\n\t\treturn target;\n\n\t}\n\n\t// get the irradiance (radiance convolved with cosine lobe) in the direction of the normal\n\t// target is a Vector3\n\t// https://graphics.stanford.edu/papers/envmap/envmap.pdf\n\tgetIrradianceAt( normal, target ) {\n\n\t\t// normal is assumed to be unit length\n\n\t\tconst x = normal.x, y = normal.y, z = normal.z;\n\n\t\tconst coeff = this.coefficients;\n\n\t\t// band 0\n\t\ttarget.copy( coeff[ 0 ] ).multiplyScalar( 0.886227 ); // π * 0.282095\n\n\t\t// band 1\n\t\ttarget.addScaledVector( coeff[ 1 ], 2.0 * 0.511664 * y ); // ( 2 * π / 3 ) * 0.488603\n\t\ttarget.addScaledVector( coeff[ 2 ], 2.0 * 0.511664 * z );\n\t\ttarget.addScaledVector( coeff[ 3 ], 2.0 * 0.511664 * x );\n\n\t\t// band 2\n\t\ttarget.addScaledVector( coeff[ 4 ], 2.0 * 0.429043 * x * y ); // ( π / 4 ) * 1.092548\n\t\ttarget.addScaledVector( coeff[ 5 ], 2.0 * 0.429043 * y * z );\n\t\ttarget.addScaledVector( coeff[ 6 ], 0.743125 * z * z - 0.247708 ); // ( π / 4 ) * 0.315392 * 3\n\t\ttarget.addScaledVector( coeff[ 7 ], 2.0 * 0.429043 * x * z );\n\t\ttarget.addScaledVector( coeff[ 8 ], 0.429043 * ( x * x - y * y ) ); // ( π / 4 ) * 0.546274\n\n\t\treturn target;\n\n\t}\n\n\tadd( sh ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].add( sh.coefficients[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\taddScaledSH( sh, s ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].addScaledVector( sh.coefficients[ i ], s );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tscale( s ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].multiplyScalar( s );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tlerp( sh, alpha ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].lerp( sh.coefficients[ i ], alpha );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tequals( sh ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tif ( ! this.coefficients[ i ].equals( sh.coefficients[ i ] ) ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tcopy( sh ) {\n\n\t\treturn this.set( sh.coefficients );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tfromArray( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tconst coefficients = this.coefficients;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tcoefficients[ i ].fromArray( array, offset + ( i * 3 ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tconst coefficients = this.coefficients;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tcoefficients[ i ].toArray( array, offset + ( i * 3 ) );\n\n\t\t}\n\n\t\treturn array;\n\n\t}\n\n\t// evaluate the basis functions\n\t// shBasis is an Array[ 9 ]\n\tstatic getBasisAt( normal, shBasis ) {\n\n\t\t// normal is assumed to be unit length\n\n\t\tconst x = normal.x, y = normal.y, z = normal.z;\n\n\t\t// band 0\n\t\tshBasis[ 0 ] = 0.282095;\n\n\t\t// band 1\n\t\tshBasis[ 1 ] = 0.488603 * y;\n\t\tshBasis[ 2 ] = 0.488603 * z;\n\t\tshBasis[ 3 ] = 0.488603 * x;\n\n\t\t// band 2\n\t\tshBasis[ 4 ] = 1.092548 * x * y;\n\t\tshBasis[ 5 ] = 1.092548 * y * z;\n\t\tshBasis[ 6 ] = 0.315392 * ( 3 * z * z - 1 );\n\t\tshBasis[ 7 ] = 1.092548 * x * z;\n\t\tshBasis[ 8 ] = 0.546274 * ( x * x - y * y );\n\n\t}\n\n}\n\nfunction LightProbe( sh, intensity ) {\n\n\tLight.call( this, undefined, intensity );\n\n\tthis.type = 'LightProbe';\n\n\tthis.sh = ( sh !== undefined ) ? sh : new SphericalHarmonics3();\n\n}\n\nLightProbe.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: LightProbe,\n\n\tisLightProbe: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.sh.copy( source.sh );\n\n\t\treturn this;\n\n\t},\n\n\tfromJSON: function ( json ) {\n\n\t\tthis.intensity = json.intensity; // TODO: Move this bit to Light.fromJSON();\n\t\tthis.sh.fromArray( json.sh );\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tconst data = Light.prototype.toJSON.call( this, meta );\n\n\t\tdata.object.sh = this.sh.toArray();\n\n\t\treturn data;\n\n\t}\n\n} );\n\nfunction MaterialLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n\tthis.textures = {};\n\n}\n\nMaterialLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: MaterialLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( scope.manager );\n\t\tloader.setPath( scope.path );\n\t\tloader.setRequestHeader( scope.requestHeader );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\ttry {\n\n\t\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tparse: function ( json ) {\n\n\t\tconst textures = this.textures;\n\n\t\tfunction getTexture( name ) {\n\n\t\t\tif ( textures[ name ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.MaterialLoader: Undefined texture', name );\n\n\t\t\t}\n\n\t\t\treturn textures[ name ];\n\n\t\t}\n\n\t\tconst material = new Materials[ json.type ]();\n\n\t\tif ( json.uuid !== undefined ) material.uuid = json.uuid;\n\t\tif ( json.name !== undefined ) material.name = json.name;\n\t\tif ( json.color !== undefined ) material.color.setHex( json.color );\n\t\tif ( json.roughness !== undefined ) material.roughness = json.roughness;\n\t\tif ( json.metalness !== undefined ) material.metalness = json.metalness;\n\t\tif ( json.sheen !== undefined ) material.sheen = new Color().setHex( json.sheen );\n\t\tif ( json.emissive !== undefined ) material.emissive.setHex( json.emissive );\n\t\tif ( json.specular !== undefined ) material.specular.setHex( json.specular );\n\t\tif ( json.shininess !== undefined ) material.shininess = json.shininess;\n\t\tif ( json.clearcoat !== undefined ) material.clearcoat = json.clearcoat;\n\t\tif ( json.clearcoatRoughness !== undefined ) material.clearcoatRoughness = json.clearcoatRoughness;\n\t\tif ( json.fog !== undefined ) material.fog = json.fog;\n\t\tif ( json.flatShading !== undefined ) material.flatShading = json.flatShading;\n\t\tif ( json.blending !== undefined ) material.blending = json.blending;\n\t\tif ( json.combine !== undefined ) material.combine = json.combine;\n\t\tif ( json.side !== undefined ) material.side = json.side;\n\t\tif ( json.opacity !== undefined ) material.opacity = json.opacity;\n\t\tif ( json.transparent !== undefined ) material.transparent = json.transparent;\n\t\tif ( json.alphaTest !== undefined ) material.alphaTest = json.alphaTest;\n\t\tif ( json.depthTest !== undefined ) material.depthTest = json.depthTest;\n\t\tif ( json.depthWrite !== undefined ) material.depthWrite = json.depthWrite;\n\t\tif ( json.colorWrite !== undefined ) material.colorWrite = json.colorWrite;\n\n\t\tif ( json.stencilWrite !== undefined ) material.stencilWrite = json.stencilWrite;\n\t\tif ( json.stencilWriteMask !== undefined ) material.stencilWriteMask = json.stencilWriteMask;\n\t\tif ( json.stencilFunc !== undefined ) material.stencilFunc = json.stencilFunc;\n\t\tif ( json.stencilRef !== undefined ) material.stencilRef = json.stencilRef;\n\t\tif ( json.stencilFuncMask !== undefined ) material.stencilFuncMask = json.stencilFuncMask;\n\t\tif ( json.stencilFail !== undefined ) material.stencilFail = json.stencilFail;\n\t\tif ( json.stencilZFail !== undefined ) material.stencilZFail = json.stencilZFail;\n\t\tif ( json.stencilZPass !== undefined ) material.stencilZPass = json.stencilZPass;\n\n\t\tif ( json.wireframe !== undefined ) material.wireframe = json.wireframe;\n\t\tif ( json.wireframeLinewidth !== undefined ) material.wireframeLinewidth = json.wireframeLinewidth;\n\t\tif ( json.wireframeLinecap !== undefined ) material.wireframeLinecap = json.wireframeLinecap;\n\t\tif ( json.wireframeLinejoin !== undefined ) material.wireframeLinejoin = json.wireframeLinejoin;\n\n\t\tif ( json.rotation !== undefined ) material.rotation = json.rotation;\n\n\t\tif ( json.linewidth !== 1 ) material.linewidth = json.linewidth;\n\t\tif ( json.dashSize !== undefined ) material.dashSize = json.dashSize;\n\t\tif ( json.gapSize !== undefined ) material.gapSize = json.gapSize;\n\t\tif ( json.scale !== undefined ) material.scale = json.scale;\n\n\t\tif ( json.polygonOffset !== undefined ) material.polygonOffset = json.polygonOffset;\n\t\tif ( json.polygonOffsetFactor !== undefined ) material.polygonOffsetFactor = json.polygonOffsetFactor;\n\t\tif ( json.polygonOffsetUnits !== undefined ) material.polygonOffsetUnits = json.polygonOffsetUnits;\n\n\t\tif ( json.skinning !== undefined ) material.skinning = json.skinning;\n\t\tif ( json.morphTargets !== undefined ) material.morphTargets = json.morphTargets;\n\t\tif ( json.morphNormals !== undefined ) material.morphNormals = json.morphNormals;\n\t\tif ( json.dithering !== undefined ) material.dithering = json.dithering;\n\n\t\tif ( json.vertexTangents !== undefined ) material.vertexTangents = json.vertexTangents;\n\n\t\tif ( json.visible !== undefined ) material.visible = json.visible;\n\n\t\tif ( json.toneMapped !== undefined ) material.toneMapped = json.toneMapped;\n\n\t\tif ( json.userData !== undefined ) material.userData = json.userData;\n\n\t\tif ( json.vertexColors !== undefined ) {\n\n\t\t\tif ( typeof json.vertexColors === 'number' ) {\n\n\t\t\t\tmaterial.vertexColors = ( json.vertexColors > 0 ) ? true : false;\n\n\t\t\t} else {\n\n\t\t\t\tmaterial.vertexColors = json.vertexColors;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Shader Material\n\n\t\tif ( json.uniforms !== undefined ) {\n\n\t\t\tfor ( const name in json.uniforms ) {\n\n\t\t\t\tconst uniform = json.uniforms[ name ];\n\n\t\t\t\tmaterial.uniforms[ name ] = {};\n\n\t\t\t\tswitch ( uniform.type ) {\n\n\t\t\t\t\tcase 't':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = getTexture( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'c':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Color().setHex( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'v2':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Vector2().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'v3':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Vector3().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'v4':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Vector4().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'm3':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Matrix3().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'm4':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Matrix4().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = uniform.value;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( json.defines !== undefined ) material.defines = json.defines;\n\t\tif ( json.vertexShader !== undefined ) material.vertexShader = json.vertexShader;\n\t\tif ( json.fragmentShader !== undefined ) material.fragmentShader = json.fragmentShader;\n\n\t\tif ( json.extensions !== undefined ) {\n\n\t\t\tfor ( const key in json.extensions ) {\n\n\t\t\t\tmaterial.extensions[ key ] = json.extensions[ key ];\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Deprecated\n\n\t\tif ( json.shading !== undefined ) material.flatShading = json.shading === 1; // THREE.FlatShading\n\n\t\t// for PointsMaterial\n\n\t\tif ( json.size !== undefined ) material.size = json.size;\n\t\tif ( json.sizeAttenuation !== undefined ) material.sizeAttenuation = json.sizeAttenuation;\n\n\t\t// maps\n\n\t\tif ( json.map !== undefined ) material.map = getTexture( json.map );\n\t\tif ( json.matcap !== undefined ) material.matcap = getTexture( json.matcap );\n\n\t\tif ( json.alphaMap !== undefined ) material.alphaMap = getTexture( json.alphaMap );\n\n\t\tif ( json.bumpMap !== undefined ) material.bumpMap = getTexture( json.bumpMap );\n\t\tif ( json.bumpScale !== undefined ) material.bumpScale = json.bumpScale;\n\n\t\tif ( json.normalMap !== undefined ) material.normalMap = getTexture( json.normalMap );\n\t\tif ( json.normalMapType !== undefined ) material.normalMapType = json.normalMapType;\n\t\tif ( json.normalScale !== undefined ) {\n\n\t\t\tlet normalScale = json.normalScale;\n\n\t\t\tif ( Array.isArray( normalScale ) === false ) {\n\n\t\t\t\t// Blender exporter used to export a scalar. See #7459\n\n\t\t\t\tnormalScale = [ normalScale, normalScale ];\n\n\t\t\t}\n\n\t\t\tmaterial.normalScale = new Vector2().fromArray( normalScale );\n\n\t\t}\n\n\t\tif ( json.displacementMap !== undefined ) material.displacementMap = getTexture( json.displacementMap );\n\t\tif ( json.displacementScale !== undefined ) material.displacementScale = json.displacementScale;\n\t\tif ( json.displacementBias !== undefined ) material.displacementBias = json.displacementBias;\n\n\t\tif ( json.roughnessMap !== undefined ) material.roughnessMap = getTexture( json.roughnessMap );\n\t\tif ( json.metalnessMap !== undefined ) material.metalnessMap = getTexture( json.metalnessMap );\n\n\t\tif ( json.emissiveMap !== undefined ) material.emissiveMap = getTexture( json.emissiveMap );\n\t\tif ( json.emissiveIntensity !== undefined ) material.emissiveIntensity = json.emissiveIntensity;\n\n\t\tif ( json.specularMap !== undefined ) material.specularMap = getTexture( json.specularMap );\n\n\t\tif ( json.envMap !== undefined ) material.envMap = getTexture( json.envMap );\n\t\tif ( json.envMapIntensity !== undefined ) material.envMapIntensity = json.envMapIntensity;\n\n\t\tif ( json.reflectivity !== undefined ) material.reflectivity = json.reflectivity;\n\t\tif ( json.refractionRatio !== undefined ) material.refractionRatio = json.refractionRatio;\n\n\t\tif ( json.lightMap !== undefined ) material.lightMap = getTexture( json.lightMap );\n\t\tif ( json.lightMapIntensity !== undefined ) material.lightMapIntensity = json.lightMapIntensity;\n\n\t\tif ( json.aoMap !== undefined ) material.aoMap = getTexture( json.aoMap );\n\t\tif ( json.aoMapIntensity !== undefined ) material.aoMapIntensity = json.aoMapIntensity;\n\n\t\tif ( json.gradientMap !== undefined ) material.gradientMap = getTexture( json.gradientMap );\n\n\t\tif ( json.clearcoatMap !== undefined ) material.clearcoatMap = getTexture( json.clearcoatMap );\n\t\tif ( json.clearcoatRoughnessMap !== undefined ) material.clearcoatRoughnessMap = getTexture( json.clearcoatRoughnessMap );\n\t\tif ( json.clearcoatNormalMap !== undefined ) material.clearcoatNormalMap = getTexture( json.clearcoatNormalMap );\n\t\tif ( json.clearcoatNormalScale !== undefined ) material.clearcoatNormalScale = new Vector2().fromArray( json.clearcoatNormalScale );\n\n\t\tif ( json.transmission !== undefined ) material.transmission = json.transmission;\n\t\tif ( json.transmissionMap !== undefined ) material.transmissionMap = getTexture( json.transmissionMap );\n\n\t\treturn material;\n\n\t},\n\n\tsetTextures: function ( value ) {\n\n\t\tthis.textures = value;\n\t\treturn this;\n\n\t}\n\n} );\n\nconst LoaderUtils = {\n\n\tdecodeText: function ( array ) {\n\n\t\tif ( typeof TextDecoder !== 'undefined' ) {\n\n\t\t\treturn new TextDecoder().decode( array );\n\n\t\t}\n\n\t\t// Avoid the String.fromCharCode.apply(null, array) shortcut, which\n\t\t// throws a \"maximum call stack size exceeded\" error for large arrays.\n\n\t\tlet s = '';\n\n\t\tfor ( let i = 0, il = array.length; i < il; i ++ ) {\n\n\t\t\t// Implicitly assumes little-endian.\n\t\t\ts += String.fromCharCode( array[ i ] );\n\n\t\t}\n\n\t\ttry {\n\n\t\t\t// merges multi-byte utf-8 characters.\n\n\t\t\treturn decodeURIComponent( escape( s ) );\n\n\t\t} catch ( e ) { // see #16358\n\n\t\t\treturn s;\n\n\t\t}\n\n\t},\n\n\textractUrlBase: function ( url ) {\n\n\t\tconst index = url.lastIndexOf( '/' );\n\n\t\tif ( index === - 1 ) return './';\n\n\t\treturn url.substr( 0, index + 1 );\n\n\t}\n\n};\n\nfunction InstancedBufferGeometry() {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'InstancedBufferGeometry';\n\tthis.instanceCount = Infinity;\n\n}\n\nInstancedBufferGeometry.prototype = Object.assign( Object.create( BufferGeometry.prototype ), {\n\n\tconstructor: InstancedBufferGeometry,\n\n\tisInstancedBufferGeometry: true,\n\n\tcopy: function ( source ) {\n\n\t\tBufferGeometry.prototype.copy.call( this, source );\n\n\t\tthis.instanceCount = source.instanceCount;\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tconst data = BufferGeometry.prototype.toJSON.call( this );\n\n\t\tdata.instanceCount = this.instanceCount;\n\n\t\tdata.isInstancedBufferGeometry = true;\n\n\t\treturn data;\n\n\t}\n\n} );\n\nfunction InstancedBufferAttribute( array, itemSize, normalized, meshPerAttribute ) {\n\n\tif ( typeof ( normalized ) === 'number' ) {\n\n\t\tmeshPerAttribute = normalized;\n\n\t\tnormalized = false;\n\n\t\tconsole.error( 'THREE.InstancedBufferAttribute: The constructor now expects normalized as the third argument.' );\n\n\t}\n\n\tBufferAttribute.call( this, array, itemSize, normalized );\n\n\tthis.meshPerAttribute = meshPerAttribute || 1;\n\n}\n\nInstancedBufferAttribute.prototype = Object.assign( Object.create( BufferAttribute.prototype ), {\n\n\tconstructor: InstancedBufferAttribute,\n\n\tisInstancedBufferAttribute: true,\n\n\tcopy: function ( source ) {\n\n\t\tBufferAttribute.prototype.copy.call( this, source );\n\n\t\tthis.meshPerAttribute = source.meshPerAttribute;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ()\t{\n\n\t\tconst data = BufferAttribute.prototype.toJSON.call( this );\n\n\t\tdata.meshPerAttribute = this.meshPerAttribute;\n\n\t\tdata.isInstancedBufferAttribute = true;\n\n\t\treturn data;\n\n\t}\n\n} );\n\nfunction BufferGeometryLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nBufferGeometryLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: BufferGeometryLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( scope.manager );\n\t\tloader.setPath( scope.path );\n\t\tloader.setRequestHeader( scope.requestHeader );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\ttry {\n\n\t\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tparse: function ( json ) {\n\n\t\tconst interleavedBufferMap = {};\n\t\tconst arrayBufferMap = {};\n\n\t\tfunction getInterleavedBuffer( json, uuid ) {\n\n\t\t\tif ( interleavedBufferMap[ uuid ] !== undefined ) return interleavedBufferMap[ uuid ];\n\n\t\t\tconst interleavedBuffers = json.interleavedBuffers;\n\t\t\tconst interleavedBuffer = interleavedBuffers[ uuid ];\n\n\t\t\tconst buffer = getArrayBuffer( json, interleavedBuffer.buffer );\n\n\t\t\tconst array = new TYPED_ARRAYS[ interleavedBuffer.type ]( buffer );\n\t\t\tconst ib = new InterleavedBuffer( array, interleavedBuffer.stride );\n\t\t\tib.uuid = interleavedBuffer.uuid;\n\n\t\t\tinterleavedBufferMap[ uuid ] = ib;\n\n\t\t\treturn ib;\n\n\t\t}\n\n\t\tfunction getArrayBuffer( json, uuid ) {\n\n\t\t\tif ( arrayBufferMap[ uuid ] !== undefined ) return arrayBufferMap[ uuid ];\n\n\t\t\tconst arrayBuffers = json.arrayBuffers;\n\t\t\tconst arrayBuffer = arrayBuffers[ uuid ];\n\n\t\t\tconst ab = new Uint32Array( arrayBuffer ).buffer;\n\n\t\t\tarrayBufferMap[ uuid ] = ab;\n\n\t\t\treturn ab;\n\n\t\t}\n\n\t\tconst geometry = json.isInstancedBufferGeometry ? new InstancedBufferGeometry() : new BufferGeometry();\n\n\t\tconst index = json.data.index;\n\n\t\tif ( index !== undefined ) {\n\n\t\t\tconst typedArray = new TYPED_ARRAYS[ index.type ]( index.array );\n\t\t\tgeometry.setIndex( new BufferAttribute( typedArray, 1 ) );\n\n\t\t}\n\n\t\tconst attributes = json.data.attributes;\n\n\t\tfor ( const key in attributes ) {\n\n\t\t\tconst attribute = attributes[ key ];\n\t\t\tlet bufferAttribute;\n\n\t\t\tif ( attribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\tconst interleavedBuffer = getInterleavedBuffer( json.data, attribute.data );\n\t\t\t\tbufferAttribute = new InterleavedBufferAttribute( interleavedBuffer, attribute.itemSize, attribute.offset, attribute.normalized );\n\n\t\t\t} else {\n\n\t\t\t\tconst typedArray = new TYPED_ARRAYS[ attribute.type ]( attribute.array );\n\t\t\t\tconst bufferAttributeConstr = attribute.isInstancedBufferAttribute ? InstancedBufferAttribute : BufferAttribute;\n\t\t\t\tbufferAttribute = new bufferAttributeConstr( typedArray, attribute.itemSize, attribute.normalized );\n\n\t\t\t}\n\n\t\t\tif ( attribute.name !== undefined ) bufferAttribute.name = attribute.name;\n\t\t\tgeometry.setAttribute( key, bufferAttribute );\n\n\t\t}\n\n\t\tconst morphAttributes = json.data.morphAttributes;\n\n\t\tif ( morphAttributes ) {\n\n\t\t\tfor ( const key in morphAttributes ) {\n\n\t\t\t\tconst attributeArray = morphAttributes[ key ];\n\n\t\t\t\tconst array = [];\n\n\t\t\t\tfor ( let i = 0, il = attributeArray.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst attribute = attributeArray[ i ];\n\t\t\t\t\tlet bufferAttribute;\n\n\t\t\t\t\tif ( attribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\t\t\tconst interleavedBuffer = getInterleavedBuffer( json.data, attribute.data );\n\t\t\t\t\t\tbufferAttribute = new InterleavedBufferAttribute( interleavedBuffer, attribute.itemSize, attribute.offset, attribute.normalized );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconst typedArray = new TYPED_ARRAYS[ attribute.type ]( attribute.array );\n\t\t\t\t\t\tbufferAttribute = new BufferAttribute( typedArray, attribute.itemSize, attribute.normalized );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( attribute.name !== undefined ) bufferAttribute.name = attribute.name;\n\t\t\t\t\tarray.push( bufferAttribute );\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.morphAttributes[ key ] = array;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst morphTargetsRelative = json.data.morphTargetsRelative;\n\n\t\tif ( morphTargetsRelative ) {\n\n\t\t\tgeometry.morphTargetsRelative = true;\n\n\t\t}\n\n\t\tconst groups = json.data.groups || json.data.drawcalls || json.data.offsets;\n\n\t\tif ( groups !== undefined ) {\n\n\t\t\tfor ( let i = 0, n = groups.length; i !== n; ++ i ) {\n\n\t\t\t\tconst group = groups[ i ];\n\n\t\t\t\tgeometry.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst boundingSphere = json.data.boundingSphere;\n\n\t\tif ( boundingSphere !== undefined ) {\n\n\t\t\tconst center = new Vector3();\n\n\t\t\tif ( boundingSphere.center !== undefined ) {\n\n\t\t\t\tcenter.fromArray( boundingSphere.center );\n\n\t\t\t}\n\n\t\t\tgeometry.boundingSphere = new Sphere( center, boundingSphere.radius );\n\n\t\t}\n\n\t\tif ( json.name ) geometry.name = json.name;\n\t\tif ( json.userData ) geometry.userData = json.userData;\n\n\t\treturn geometry;\n\n\t}\n\n} );\n\nconst TYPED_ARRAYS = {\n\tInt8Array: Int8Array,\n\tUint8Array: Uint8Array,\n\t// Workaround for IE11 pre KB2929437. See #11440\n\tUint8ClampedArray: typeof Uint8ClampedArray !== 'undefined' ? Uint8ClampedArray : Uint8Array,\n\tInt16Array: Int16Array,\n\tUint16Array: Uint16Array,\n\tInt32Array: Int32Array,\n\tUint32Array: Uint32Array,\n\tFloat32Array: Float32Array,\n\tFloat64Array: Float64Array\n};\n\nfunction ObjectLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nObjectLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: ObjectLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst path = ( this.path === '' ) ? LoaderUtils.extractUrlBase( url ) : this.path;\n\t\tthis.resourcePath = this.resourcePath || path;\n\n\t\tconst loader = new FileLoader( scope.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\tlet json = null;\n\n\t\t\ttry {\n\n\t\t\t\tjson = JSON.parse( text );\n\n\t\t\t} catch ( error ) {\n\n\t\t\t\tif ( onError !== undefined ) onError( error );\n\n\t\t\t\tconsole.error( 'THREE:ObjectLoader: Can\\'t parse ' + url + '.', error.message );\n\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tconst metadata = json.metadata;\n\n\t\t\tif ( metadata === undefined || metadata.type === undefined || metadata.type.toLowerCase() === 'geometry' ) {\n\n\t\t\t\tconsole.error( 'THREE.ObjectLoader: Can\\'t load ' + url );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tscope.parse( json, onLoad );\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tparse: function ( json, onLoad ) {\n\n\t\tconst shapes = this.parseShape( json.shapes );\n\t\tconst geometries = this.parseGeometries( json.geometries, shapes );\n\n\t\tconst images = this.parseImages( json.images, function () {\n\n\t\t\tif ( onLoad !== undefined ) onLoad( object );\n\n\t\t} );\n\n\t\tconst textures = this.parseTextures( json.textures, images );\n\t\tconst materials = this.parseMaterials( json.materials, textures );\n\n\t\tconst object = this.parseObject( json.object, geometries, materials );\n\n\t\tif ( json.animations ) {\n\n\t\t\tobject.animations = this.parseAnimations( json.animations );\n\n\t\t}\n\n\t\tif ( json.images === undefined || json.images.length === 0 ) {\n\n\t\t\tif ( onLoad !== undefined ) onLoad( object );\n\n\t\t}\n\n\t\treturn object;\n\n\t},\n\n\tparseShape: function ( json ) {\n\n\t\tconst shapes = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tconst shape = new Shape().fromJSON( json[ i ] );\n\n\t\t\t\tshapes[ shape.uuid ] = shape;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn shapes;\n\n\t},\n\n\tparseGeometries: function ( json, shapes ) {\n\n\t\tconst geometries = {};\n\t\tlet geometryShapes;\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tconst bufferGeometryLoader = new BufferGeometryLoader();\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tlet geometry;\n\t\t\t\tconst data = json[ i ];\n\n\t\t\t\tswitch ( data.type ) {\n\n\t\t\t\t\tcase 'PlaneGeometry':\n\t\t\t\t\tcase 'PlaneBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.width,\n\t\t\t\t\t\t\tdata.height,\n\t\t\t\t\t\t\tdata.widthSegments,\n\t\t\t\t\t\t\tdata.heightSegments\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'BoxGeometry':\n\t\t\t\t\tcase 'BoxBufferGeometry':\n\t\t\t\t\tcase 'CubeGeometry': // backwards compatible\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.width,\n\t\t\t\t\t\t\tdata.height,\n\t\t\t\t\t\t\tdata.depth,\n\t\t\t\t\t\t\tdata.widthSegments,\n\t\t\t\t\t\t\tdata.heightSegments,\n\t\t\t\t\t\t\tdata.depthSegments\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'CircleGeometry':\n\t\t\t\t\tcase 'CircleBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.segments,\n\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'CylinderGeometry':\n\t\t\t\t\tcase 'CylinderBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radiusTop,\n\t\t\t\t\t\t\tdata.radiusBottom,\n\t\t\t\t\t\t\tdata.height,\n\t\t\t\t\t\t\tdata.radialSegments,\n\t\t\t\t\t\t\tdata.heightSegments,\n\t\t\t\t\t\t\tdata.openEnded,\n\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'ConeGeometry':\n\t\t\t\t\tcase 'ConeBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.height,\n\t\t\t\t\t\t\tdata.radialSegments,\n\t\t\t\t\t\t\tdata.heightSegments,\n\t\t\t\t\t\t\tdata.openEnded,\n\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'SphereGeometry':\n\t\t\t\t\tcase 'SphereBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.widthSegments,\n\t\t\t\t\t\t\tdata.heightSegments,\n\t\t\t\t\t\t\tdata.phiStart,\n\t\t\t\t\t\t\tdata.phiLength,\n\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'DodecahedronGeometry':\n\t\t\t\t\tcase 'DodecahedronBufferGeometry':\n\t\t\t\t\tcase 'IcosahedronGeometry':\n\t\t\t\t\tcase 'IcosahedronBufferGeometry':\n\t\t\t\t\tcase 'OctahedronGeometry':\n\t\t\t\t\tcase 'OctahedronBufferGeometry':\n\t\t\t\t\tcase 'TetrahedronGeometry':\n\t\t\t\t\tcase 'TetrahedronBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.detail\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'RingGeometry':\n\t\t\t\t\tcase 'RingBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.innerRadius,\n\t\t\t\t\t\t\tdata.outerRadius,\n\t\t\t\t\t\t\tdata.thetaSegments,\n\t\t\t\t\t\t\tdata.phiSegments,\n\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'TorusGeometry':\n\t\t\t\t\tcase 'TorusBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.tube,\n\t\t\t\t\t\t\tdata.radialSegments,\n\t\t\t\t\t\t\tdata.tubularSegments,\n\t\t\t\t\t\t\tdata.arc\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'TorusKnotGeometry':\n\t\t\t\t\tcase 'TorusKnotBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.tube,\n\t\t\t\t\t\t\tdata.tubularSegments,\n\t\t\t\t\t\t\tdata.radialSegments,\n\t\t\t\t\t\t\tdata.p,\n\t\t\t\t\t\t\tdata.q\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'TubeGeometry':\n\t\t\t\t\tcase 'TubeBufferGeometry':\n\n\t\t\t\t\t\t// This only works for built-in curves (e.g. CatmullRomCurve3).\n\t\t\t\t\t\t// User defined curves or instances of CurvePath will not be deserialized.\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tnew Curves[ data.path.type ]().fromJSON( data.path ),\n\t\t\t\t\t\t\tdata.tubularSegments,\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.radialSegments,\n\t\t\t\t\t\t\tdata.closed\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'LatheGeometry':\n\t\t\t\t\tcase 'LatheBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.points,\n\t\t\t\t\t\t\tdata.segments,\n\t\t\t\t\t\t\tdata.phiStart,\n\t\t\t\t\t\t\tdata.phiLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'PolyhedronGeometry':\n\t\t\t\t\tcase 'PolyhedronBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.vertices,\n\t\t\t\t\t\t\tdata.indices,\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.details\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'ShapeGeometry':\n\t\t\t\t\tcase 'ShapeBufferGeometry':\n\n\t\t\t\t\t\tgeometryShapes = [];\n\n\t\t\t\t\t\tfor ( let j = 0, jl = data.shapes.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\t\tconst shape = shapes[ data.shapes[ j ] ];\n\n\t\t\t\t\t\t\tgeometryShapes.push( shape );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tgeometryShapes,\n\t\t\t\t\t\t\tdata.curveSegments\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\n\t\t\t\t\tcase 'ExtrudeGeometry':\n\t\t\t\t\tcase 'ExtrudeBufferGeometry':\n\n\t\t\t\t\t\tgeometryShapes = [];\n\n\t\t\t\t\t\tfor ( let j = 0, jl = data.shapes.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\t\tconst shape = shapes[ data.shapes[ j ] ];\n\n\t\t\t\t\t\t\tgeometryShapes.push( shape );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst extrudePath = data.options.extrudePath;\n\n\t\t\t\t\t\tif ( extrudePath !== undefined ) {\n\n\t\t\t\t\t\t\tdata.options.extrudePath = new Curves[ extrudePath.type ]().fromJSON( extrudePath );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tgeometryShapes,\n\t\t\t\t\t\t\tdata.options\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'BufferGeometry':\n\t\t\t\t\tcase 'InstancedBufferGeometry':\n\n\t\t\t\t\t\tgeometry = bufferGeometryLoader.parse( data );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'Geometry':\n\n\t\t\t\t\t\tconsole.error( 'THREE.ObjectLoader: Loading \"Geometry\" is not supported anymore.' );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\n\t\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Unsupported geometry type \"' + data.type + '\"' );\n\n\t\t\t\t\t\tcontinue;\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.uuid = data.uuid;\n\n\t\t\t\tif ( data.name !== undefined ) geometry.name = data.name;\n\t\t\t\tif ( geometry.isBufferGeometry === true && data.userData !== undefined ) geometry.userData = data.userData;\n\n\t\t\t\tgeometries[ data.uuid ] = geometry;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn geometries;\n\n\t},\n\n\tparseMaterials: function ( json, textures ) {\n\n\t\tconst cache = {}; // MultiMaterial\n\t\tconst materials = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tconst loader = new MaterialLoader();\n\t\t\tloader.setTextures( textures );\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tconst data = json[ i ];\n\n\t\t\t\tif ( data.type === 'MultiMaterial' ) {\n\n\t\t\t\t\t// Deprecated\n\n\t\t\t\t\tconst array = [];\n\n\t\t\t\t\tfor ( let j = 0; j < data.materials.length; j ++ ) {\n\n\t\t\t\t\t\tconst material = data.materials[ j ];\n\n\t\t\t\t\t\tif ( cache[ material.uuid ] === undefined ) {\n\n\t\t\t\t\t\t\tcache[ material.uuid ] = loader.parse( material );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tarray.push( cache[ material.uuid ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tmaterials[ data.uuid ] = array;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( cache[ data.uuid ] === undefined ) {\n\n\t\t\t\t\t\tcache[ data.uuid ] = loader.parse( data );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tmaterials[ data.uuid ] = cache[ data.uuid ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn materials;\n\n\t},\n\n\tparseAnimations: function ( json ) {\n\n\t\tconst animations = [];\n\n\t\tfor ( let i = 0; i < json.length; i ++ ) {\n\n\t\t\tconst data = json[ i ];\n\n\t\t\tconst clip = AnimationClip.parse( data );\n\n\t\t\tif ( data.uuid !== undefined ) clip.uuid = data.uuid;\n\n\t\t\tanimations.push( clip );\n\n\t\t}\n\n\t\treturn animations;\n\n\t},\n\n\tparseImages: function ( json, onLoad ) {\n\n\t\tconst scope = this;\n\t\tconst images = {};\n\n\t\tlet loader;\n\n\t\tfunction loadImage( url ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\treturn loader.load( url, function () {\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, undefined, function () {\n\n\t\t\t\tscope.manager.itemError( url );\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t} );\n\n\t\t}\n\n\t\tif ( json !== undefined && json.length > 0 ) {\n\n\t\t\tconst manager = new LoadingManager( onLoad );\n\n\t\t\tloader = new ImageLoader( manager );\n\t\t\tloader.setCrossOrigin( this.crossOrigin );\n\n\t\t\tfor ( let i = 0, il = json.length; i < il; i ++ ) {\n\n\t\t\t\tconst image = json[ i ];\n\t\t\t\tconst url = image.url;\n\n\t\t\t\tif ( Array.isArray( url ) ) {\n\n\t\t\t\t\t// load array of images e.g CubeTexture\n\n\t\t\t\t\timages[ image.uuid ] = [];\n\n\t\t\t\t\tfor ( let j = 0, jl = url.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\tconst currentUrl = url[ j ];\n\n\t\t\t\t\t\tconst path = /^(\\/\\/)|([a-z]+:(\\/\\/)?)/i.test( currentUrl ) ? currentUrl : scope.resourcePath + currentUrl;\n\n\t\t\t\t\t\timages[ image.uuid ].push( loadImage( path ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// load single image\n\n\t\t\t\t\tconst path = /^(\\/\\/)|([a-z]+:(\\/\\/)?)/i.test( image.url ) ? image.url : scope.resourcePath + image.url;\n\n\t\t\t\t\timages[ image.uuid ] = loadImage( path );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn images;\n\n\t},\n\n\tparseTextures: function ( json, images ) {\n\n\t\tfunction parseConstant( value, type ) {\n\n\t\t\tif ( typeof value === 'number' ) return value;\n\n\t\t\tconsole.warn( 'THREE.ObjectLoader.parseTexture: Constant should be in numeric form.', value );\n\n\t\t\treturn type[ value ];\n\n\t\t}\n\n\t\tconst textures = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tconst data = json[ i ];\n\n\t\t\t\tif ( data.image === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: No \"image\" specified for', data.uuid );\n\n\t\t\t\t}\n\n\t\t\t\tif ( images[ data.image ] === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined image', data.image );\n\n\t\t\t\t}\n\n\t\t\t\tlet texture;\n\n\t\t\t\tif ( Array.isArray( images[ data.image ] ) ) {\n\n\t\t\t\t\ttexture = new CubeTexture( images[ data.image ] );\n\n\t\t\t\t} else {\n\n\t\t\t\t\ttexture = new Texture( images[ data.image ] );\n\n\t\t\t\t}\n\n\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\ttexture.uuid = data.uuid;\n\n\t\t\t\tif ( data.name !== undefined ) texture.name = data.name;\n\n\t\t\t\tif ( data.mapping !== undefined ) texture.mapping = parseConstant( data.mapping, TEXTURE_MAPPING );\n\n\t\t\t\tif ( data.offset !== undefined ) texture.offset.fromArray( data.offset );\n\t\t\t\tif ( data.repeat !== undefined ) texture.repeat.fromArray( data.repeat );\n\t\t\t\tif ( data.center !== undefined ) texture.center.fromArray( data.center );\n\t\t\t\tif ( data.rotation !== undefined ) texture.rotation = data.rotation;\n\n\t\t\t\tif ( data.wrap !== undefined ) {\n\n\t\t\t\t\ttexture.wrapS = parseConstant( data.wrap[ 0 ], TEXTURE_WRAPPING );\n\t\t\t\t\ttexture.wrapT = parseConstant( data.wrap[ 1 ], TEXTURE_WRAPPING );\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.format !== undefined ) texture.format = data.format;\n\t\t\t\tif ( data.type !== undefined ) texture.type = data.type;\n\t\t\t\tif ( data.encoding !== undefined ) texture.encoding = data.encoding;\n\n\t\t\t\tif ( data.minFilter !== undefined ) texture.minFilter = parseConstant( data.minFilter, TEXTURE_FILTER );\n\t\t\t\tif ( data.magFilter !== undefined ) texture.magFilter = parseConstant( data.magFilter, TEXTURE_FILTER );\n\t\t\t\tif ( data.anisotropy !== undefined ) texture.anisotropy = data.anisotropy;\n\n\t\t\t\tif ( data.flipY !== undefined ) texture.flipY = data.flipY;\n\n\t\t\t\tif ( data.premultiplyAlpha !== undefined ) texture.premultiplyAlpha = data.premultiplyAlpha;\n\t\t\t\tif ( data.unpackAlignment !== undefined ) texture.unpackAlignment = data.unpackAlignment;\n\n\t\t\t\ttextures[ data.uuid ] = texture;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn textures;\n\n\t},\n\n\tparseObject: function ( data, geometries, materials ) {\n\n\t\tlet object;\n\n\t\tfunction getGeometry( name ) {\n\n\t\t\tif ( geometries[ name ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined geometry', name );\n\n\t\t\t}\n\n\t\t\treturn geometries[ name ];\n\n\t\t}\n\n\t\tfunction getMaterial( name ) {\n\n\t\t\tif ( name === undefined ) return undefined;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\n\t\t\t\tconst array = [];\n\n\t\t\t\tfor ( let i = 0, l = name.length; i < l; i ++ ) {\n\n\t\t\t\t\tconst uuid = name[ i ];\n\n\t\t\t\t\tif ( materials[ uuid ] === undefined ) {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined material', uuid );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tarray.push( materials[ uuid ] );\n\n\t\t\t\t}\n\n\t\t\t\treturn array;\n\n\t\t\t}\n\n\t\t\tif ( materials[ name ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined material', name );\n\n\t\t\t}\n\n\t\t\treturn materials[ name ];\n\n\t\t}\n\n\t\tlet geometry, material;\n\n\t\tswitch ( data.type ) {\n\n\t\t\tcase 'Scene':\n\n\t\t\t\tobject = new Scene();\n\n\t\t\t\tif ( data.background !== undefined ) {\n\n\t\t\t\t\tif ( Number.isInteger( data.background ) ) {\n\n\t\t\t\t\t\tobject.background = new Color( data.background );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.fog !== undefined ) {\n\n\t\t\t\t\tif ( data.fog.type === 'Fog' ) {\n\n\t\t\t\t\t\tobject.fog = new Fog( data.fog.color, data.fog.near, data.fog.far );\n\n\t\t\t\t\t} else if ( data.fog.type === 'FogExp2' ) {\n\n\t\t\t\t\t\tobject.fog = new FogExp2( data.fog.color, data.fog.density );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'PerspectiveCamera':\n\n\t\t\t\tobject = new PerspectiveCamera( data.fov, data.aspect, data.near, data.far );\n\n\t\t\t\tif ( data.focus !== undefined ) object.focus = data.focus;\n\t\t\t\tif ( data.zoom !== undefined ) object.zoom = data.zoom;\n\t\t\t\tif ( data.filmGauge !== undefined ) object.filmGauge = data.filmGauge;\n\t\t\t\tif ( data.filmOffset !== undefined ) object.filmOffset = data.filmOffset;\n\t\t\t\tif ( data.view !== undefined ) object.view = Object.assign( {}, data.view );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'OrthographicCamera':\n\n\t\t\t\tobject = new OrthographicCamera( data.left, data.right, data.top, data.bottom, data.near, data.far );\n\n\t\t\t\tif ( data.zoom !== undefined ) object.zoom = data.zoom;\n\t\t\t\tif ( data.view !== undefined ) object.view = Object.assign( {}, data.view );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'AmbientLight':\n\n\t\t\t\tobject = new AmbientLight( data.color, data.intensity );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'DirectionalLight':\n\n\t\t\t\tobject = new DirectionalLight( data.color, data.intensity );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'PointLight':\n\n\t\t\t\tobject = new PointLight( data.color, data.intensity, data.distance, data.decay );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'RectAreaLight':\n\n\t\t\t\tobject = new RectAreaLight( data.color, data.intensity, data.width, data.height );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'SpotLight':\n\n\t\t\t\tobject = new SpotLight( data.color, data.intensity, data.distance, data.angle, data.penumbra, data.decay );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'HemisphereLight':\n\n\t\t\t\tobject = new HemisphereLight( data.color, data.groundColor, data.intensity );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LightProbe':\n\n\t\t\t\tobject = new LightProbe().fromJSON( data );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'SkinnedMesh':\n\n\t\t\t\tconsole.warn( 'THREE.ObjectLoader.parseObject() does not support SkinnedMesh yet.' );\n\n\t\t\tcase 'Mesh':\n\n\t\t\t\tgeometry = getGeometry( data.geometry );\n\t\t\t\tmaterial = getMaterial( data.material );\n\n\t\t\t\tobject = new Mesh( geometry, material );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'InstancedMesh':\n\n\t\t\t\tgeometry = getGeometry( data.geometry );\n\t\t\t\tmaterial = getMaterial( data.material );\n\t\t\t\tconst count = data.count;\n\t\t\t\tconst instanceMatrix = data.instanceMatrix;\n\n\t\t\t\tobject = new InstancedMesh( geometry, material, count );\n\t\t\t\tobject.instanceMatrix = new BufferAttribute( new Float32Array( instanceMatrix.array ), 16 );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LOD':\n\n\t\t\t\tobject = new LOD();\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Line':\n\n\t\t\t\tobject = new Line( getGeometry( data.geometry ), getMaterial( data.material ), data.mode );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LineLoop':\n\n\t\t\t\tobject = new LineLoop( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LineSegments':\n\n\t\t\t\tobject = new LineSegments( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'PointCloud':\n\t\t\tcase 'Points':\n\n\t\t\t\tobject = new Points( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Sprite':\n\n\t\t\t\tobject = new Sprite( getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Group':\n\n\t\t\t\tobject = new Group();\n\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\n\t\t\t\tobject = new Object3D();\n\n\t\t}\n\n\t\tobject.uuid = data.uuid;\n\n\t\tif ( data.name !== undefined ) object.name = data.name;\n\n\t\tif ( data.matrix !== undefined ) {\n\n\t\t\tobject.matrix.fromArray( data.matrix );\n\n\t\t\tif ( data.matrixAutoUpdate !== undefined ) object.matrixAutoUpdate = data.matrixAutoUpdate;\n\t\t\tif ( object.matrixAutoUpdate ) object.matrix.decompose( object.position, object.quaternion, object.scale );\n\n\t\t} else {\n\n\t\t\tif ( data.position !== undefined ) object.position.fromArray( data.position );\n\t\t\tif ( data.rotation !== undefined ) object.rotation.fromArray( data.rotation );\n\t\t\tif ( data.quaternion !== undefined ) object.quaternion.fromArray( data.quaternion );\n\t\t\tif ( data.scale !== undefined ) object.scale.fromArray( data.scale );\n\n\t\t}\n\n\t\tif ( data.castShadow !== undefined ) object.castShadow = data.castShadow;\n\t\tif ( data.receiveShadow !== undefined ) object.receiveShadow = data.receiveShadow;\n\n\t\tif ( data.shadow ) {\n\n\t\t\tif ( data.shadow.bias !== undefined ) object.shadow.bias = data.shadow.bias;\n\t\t\tif ( data.shadow.normalBias !== undefined ) object.shadow.normalBias = data.shadow.normalBias;\n\t\t\tif ( data.shadow.radius !== undefined ) object.shadow.radius = data.shadow.radius;\n\t\t\tif ( data.shadow.mapSize !== undefined ) object.shadow.mapSize.fromArray( data.shadow.mapSize );\n\t\t\tif ( data.shadow.camera !== undefined ) object.shadow.camera = this.parseObject( data.shadow.camera );\n\n\t\t}\n\n\t\tif ( data.visible !== undefined ) object.visible = data.visible;\n\t\tif ( data.frustumCulled !== undefined ) object.frustumCulled = data.frustumCulled;\n\t\tif ( data.renderOrder !== undefined ) object.renderOrder = data.renderOrder;\n\t\tif ( data.userData !== undefined ) object.userData = data.userData;\n\t\tif ( data.layers !== undefined ) object.layers.mask = data.layers;\n\n\t\tif ( data.children !== undefined ) {\n\n\t\t\tconst children = data.children;\n\n\t\t\tfor ( let i = 0; i < children.length; i ++ ) {\n\n\t\t\t\tobject.add( this.parseObject( children[ i ], geometries, materials ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( data.type === 'LOD' ) {\n\n\t\t\tif ( data.autoUpdate !== undefined ) object.autoUpdate = data.autoUpdate;\n\n\t\t\tconst levels = data.levels;\n\n\t\t\tfor ( let l = 0; l < levels.length; l ++ ) {\n\n\t\t\t\tconst level = levels[ l ];\n\t\t\t\tconst child = object.getObjectByProperty( 'uuid', level.object );\n\n\t\t\t\tif ( child !== undefined ) {\n\n\t\t\t\t\tobject.addLevel( child, level.distance );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn object;\n\n\t}\n\n} );\n\nconst TEXTURE_MAPPING = {\n\tUVMapping: UVMapping,\n\tCubeReflectionMapping: CubeReflectionMapping,\n\tCubeRefractionMapping: CubeRefractionMapping,\n\tEquirectangularReflectionMapping: EquirectangularReflectionMapping,\n\tEquirectangularRefractionMapping: EquirectangularRefractionMapping,\n\tCubeUVReflectionMapping: CubeUVReflectionMapping,\n\tCubeUVRefractionMapping: CubeUVRefractionMapping\n};\n\nconst TEXTURE_WRAPPING = {\n\tRepeatWrapping: RepeatWrapping,\n\tClampToEdgeWrapping: ClampToEdgeWrapping,\n\tMirroredRepeatWrapping: MirroredRepeatWrapping\n};\n\nconst TEXTURE_FILTER = {\n\tNearestFilter: NearestFilter,\n\tNearestMipmapNearestFilter: NearestMipmapNearestFilter,\n\tNearestMipmapLinearFilter: NearestMipmapLinearFilter,\n\tLinearFilter: LinearFilter,\n\tLinearMipmapNearestFilter: LinearMipmapNearestFilter,\n\tLinearMipmapLinearFilter: LinearMipmapLinearFilter\n};\n\nfunction ImageBitmapLoader( manager ) {\n\n\tif ( typeof createImageBitmap === 'undefined' ) {\n\n\t\tconsole.warn( 'THREE.ImageBitmapLoader: createImageBitmap() not supported.' );\n\n\t}\n\n\tif ( typeof fetch === 'undefined' ) {\n\n\t\tconsole.warn( 'THREE.ImageBitmapLoader: fetch() not supported.' );\n\n\t}\n\n\tLoader.call( this, manager );\n\n\tthis.options = { premultiplyAlpha: 'none' };\n\n}\n\nImageBitmapLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: ImageBitmapLoader,\n\n\tisImageBitmapLoader: true,\n\n\tsetOptions: function setOptions( options ) {\n\n\t\tthis.options = options;\n\n\t\treturn this;\n\n\t},\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tif ( url === undefined ) url = '';\n\n\t\tif ( this.path !== undefined ) url = this.path + url;\n\n\t\turl = this.manager.resolveURL( url );\n\n\t\tconst scope = this;\n\n\t\tconst cached = Cache.get( url );\n\n\t\tif ( cached !== undefined ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\tsetTimeout( function () {\n\n\t\t\t\tif ( onLoad ) onLoad( cached );\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, 0 );\n\n\t\t\treturn cached;\n\n\t\t}\n\n\t\tfetch( url ).then( function ( res ) {\n\n\t\t\treturn res.blob();\n\n\t\t} ).then( function ( blob ) {\n\n\t\t\treturn createImageBitmap( blob, scope.options );\n\n\t\t} ).then( function ( imageBitmap ) {\n\n\t\t\tCache.add( url, imageBitmap );\n\n\t\t\tif ( onLoad ) onLoad( imageBitmap );\n\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t} ).catch( function ( e ) {\n\n\t\t\tif ( onError ) onError( e );\n\n\t\t\tscope.manager.itemError( url );\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t} );\n\n\t\tscope.manager.itemStart( url );\n\n\t}\n\n} );\n\nfunction ShapePath() {\n\n\tthis.type = 'ShapePath';\n\n\tthis.color = new Color();\n\n\tthis.subPaths = [];\n\tthis.currentPath = null;\n\n}\n\nObject.assign( ShapePath.prototype, {\n\n\tmoveTo: function ( x, y ) {\n\n\t\tthis.currentPath = new Path();\n\t\tthis.subPaths.push( this.currentPath );\n\t\tthis.currentPath.moveTo( x, y );\n\n\t\treturn this;\n\n\t},\n\n\tlineTo: function ( x, y ) {\n\n\t\tthis.currentPath.lineTo( x, y );\n\n\t\treturn this;\n\n\t},\n\n\tquadraticCurveTo: function ( aCPx, aCPy, aX, aY ) {\n\n\t\tthis.currentPath.quadraticCurveTo( aCPx, aCPy, aX, aY );\n\n\t\treturn this;\n\n\t},\n\n\tbezierCurveTo: function ( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY ) {\n\n\t\tthis.currentPath.bezierCurveTo( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY );\n\n\t\treturn this;\n\n\t},\n\n\tsplineThru: function ( pts ) {\n\n\t\tthis.currentPath.splineThru( pts );\n\n\t\treturn this;\n\n\t},\n\n\ttoShapes: function ( isCCW, noHoles ) {\n\n\t\tfunction toShapesNoHoles( inSubpaths ) {\n\n\t\t\tconst shapes = [];\n\n\t\t\tfor ( let i = 0, l = inSubpaths.length; i < l; i ++ ) {\n\n\t\t\t\tconst tmpPath = inSubpaths[ i ];\n\n\t\t\t\tconst tmpShape = new Shape();\n\t\t\t\ttmpShape.curves = tmpPath.curves;\n\n\t\t\t\tshapes.push( tmpShape );\n\n\t\t\t}\n\n\t\t\treturn shapes;\n\n\t\t}\n\n\t\tfunction isPointInsidePolygon( inPt, inPolygon ) {\n\n\t\t\tconst polyLen = inPolygon.length;\n\n\t\t\t// inPt on polygon contour => immediate success    or\n\t\t\t// toggling of inside/outside at every single! intersection point of an edge\n\t\t\t//  with the horizontal line through inPt, left of inPt\n\t\t\t//  not counting lowerY endpoints of edges and whole edges on that line\n\t\t\tlet inside = false;\n\t\t\tfor ( let p = polyLen - 1, q = 0; q < polyLen; p = q ++ ) {\n\n\t\t\t\tlet edgeLowPt = inPolygon[ p ];\n\t\t\t\tlet edgeHighPt = inPolygon[ q ];\n\n\t\t\t\tlet edgeDx = edgeHighPt.x - edgeLowPt.x;\n\t\t\t\tlet edgeDy = edgeHighPt.y - edgeLowPt.y;\n\n\t\t\t\tif ( Math.abs( edgeDy ) > Number.EPSILON ) {\n\n\t\t\t\t\t// not parallel\n\t\t\t\t\tif ( edgeDy < 0 ) {\n\n\t\t\t\t\t\tedgeLowPt = inPolygon[ q ]; edgeDx = - edgeDx;\n\t\t\t\t\t\tedgeHighPt = inPolygon[ p ]; edgeDy = - edgeDy;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ( inPt.y < edgeLowPt.y ) || ( inPt.y > edgeHighPt.y ) ) \t\tcontinue;\n\n\t\t\t\t\tif ( inPt.y === edgeLowPt.y ) {\n\n\t\t\t\t\t\tif ( inPt.x === edgeLowPt.x )\t\treturn\ttrue;\t\t// inPt is on contour ?\n\t\t\t\t\t\t// continue;\t\t\t\t// no intersection or edgeLowPt => doesn't count !!!\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconst perpEdge = edgeDy * ( inPt.x - edgeLowPt.x ) - edgeDx * ( inPt.y - edgeLowPt.y );\n\t\t\t\t\t\tif ( perpEdge === 0 )\t\t\t\treturn\ttrue;\t\t// inPt is on contour ?\n\t\t\t\t\t\tif ( perpEdge < 0 ) \t\t\t\tcontinue;\n\t\t\t\t\t\tinside = ! inside;\t\t// true intersection left of inPt\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// parallel or collinear\n\t\t\t\t\tif ( inPt.y !== edgeLowPt.y ) \t\tcontinue;\t\t\t// parallel\n\t\t\t\t\t// edge lies on the same horizontal line as inPt\n\t\t\t\t\tif ( ( ( edgeHighPt.x <= inPt.x ) && ( inPt.x <= edgeLowPt.x ) ) ||\n\t\t\t\t\t\t ( ( edgeLowPt.x <= inPt.x ) && ( inPt.x <= edgeHighPt.x ) ) )\t\treturn\ttrue;\t// inPt: Point on contour !\n\t\t\t\t\t// continue;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn\tinside;\n\n\t\t}\n\n\t\tconst isClockWise = ShapeUtils.isClockWise;\n\n\t\tconst subPaths = this.subPaths;\n\t\tif ( subPaths.length === 0 ) return [];\n\n\t\tif ( noHoles === true )\treturn\ttoShapesNoHoles( subPaths );\n\n\n\t\tlet solid, tmpPath, tmpShape;\n\t\tconst shapes = [];\n\n\t\tif ( subPaths.length === 1 ) {\n\n\t\t\ttmpPath = subPaths[ 0 ];\n\t\t\ttmpShape = new Shape();\n\t\t\ttmpShape.curves = tmpPath.curves;\n\t\t\tshapes.push( tmpShape );\n\t\t\treturn shapes;\n\n\t\t}\n\n\t\tlet holesFirst = ! isClockWise( subPaths[ 0 ].getPoints() );\n\t\tholesFirst = isCCW ? ! holesFirst : holesFirst;\n\n\t\t// console.log(\"Holes first\", holesFirst);\n\n\t\tconst betterShapeHoles = [];\n\t\tconst newShapes = [];\n\t\tlet newShapeHoles = [];\n\t\tlet mainIdx = 0;\n\t\tlet tmpPoints;\n\n\t\tnewShapes[ mainIdx ] = undefined;\n\t\tnewShapeHoles[ mainIdx ] = [];\n\n\t\tfor ( let i = 0, l = subPaths.length; i < l; i ++ ) {\n\n\t\t\ttmpPath = subPaths[ i ];\n\t\t\ttmpPoints = tmpPath.getPoints();\n\t\t\tsolid = isClockWise( tmpPoints );\n\t\t\tsolid = isCCW ? ! solid : solid;\n\n\t\t\tif ( solid ) {\n\n\t\t\t\tif ( ( ! holesFirst ) && ( newShapes[ mainIdx ] ) )\tmainIdx ++;\n\n\t\t\t\tnewShapes[ mainIdx ] = { s: new Shape(), p: tmpPoints };\n\t\t\t\tnewShapes[ mainIdx ].s.curves = tmpPath.curves;\n\n\t\t\t\tif ( holesFirst )\tmainIdx ++;\n\t\t\t\tnewShapeHoles[ mainIdx ] = [];\n\n\t\t\t\t//console.log('cw', i);\n\n\t\t\t} else {\n\n\t\t\t\tnewShapeHoles[ mainIdx ].push( { h: tmpPath, p: tmpPoints[ 0 ] } );\n\n\t\t\t\t//console.log('ccw', i);\n\n\t\t\t}\n\n\t\t}\n\n\t\t// only Holes? -> probably all Shapes with wrong orientation\n\t\tif ( ! newShapes[ 0 ] )\treturn\ttoShapesNoHoles( subPaths );\n\n\n\t\tif ( newShapes.length > 1 ) {\n\n\t\t\tlet ambiguous = false;\n\t\t\tconst toChange = [];\n\n\t\t\tfor ( let sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx ++ ) {\n\n\t\t\t\tbetterShapeHoles[ sIdx ] = [];\n\n\t\t\t}\n\n\t\t\tfor ( let sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx ++ ) {\n\n\t\t\t\tconst sho = newShapeHoles[ sIdx ];\n\n\t\t\t\tfor ( let hIdx = 0; hIdx < sho.length; hIdx ++ ) {\n\n\t\t\t\t\tconst ho = sho[ hIdx ];\n\t\t\t\t\tlet hole_unassigned = true;\n\n\t\t\t\t\tfor ( let s2Idx = 0; s2Idx < newShapes.length; s2Idx ++ ) {\n\n\t\t\t\t\t\tif ( isPointInsidePolygon( ho.p, newShapes[ s2Idx ].p ) ) {\n\n\t\t\t\t\t\t\tif ( sIdx !== s2Idx )\ttoChange.push( { froms: sIdx, tos: s2Idx, hole: hIdx } );\n\t\t\t\t\t\t\tif ( hole_unassigned ) {\n\n\t\t\t\t\t\t\t\thole_unassigned = false;\n\t\t\t\t\t\t\t\tbetterShapeHoles[ s2Idx ].push( ho );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tambiguous = true;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( hole_unassigned ) {\n\n\t\t\t\t\t\tbetterShapeHoles[ sIdx ].push( ho );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\t\t\t// console.log(\"ambiguous: \", ambiguous);\n\n\t\t\tif ( toChange.length > 0 ) {\n\n\t\t\t\t// console.log(\"to change: \", toChange);\n\t\t\t\tif ( ! ambiguous )\tnewShapeHoles = betterShapeHoles;\n\n\t\t\t}\n\n\t\t}\n\n\t\tlet tmpHoles;\n\n\t\tfor ( let i = 0, il = newShapes.length; i < il; i ++ ) {\n\n\t\t\ttmpShape = newShapes[ i ].s;\n\t\t\tshapes.push( tmpShape );\n\t\t\ttmpHoles = newShapeHoles[ i ];\n\n\t\t\tfor ( let j = 0, jl = tmpHoles.length; j < jl; j ++ ) {\n\n\t\t\t\ttmpShape.holes.push( tmpHoles[ j ].h );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//console.log(\"shape\", shapes);\n\n\t\treturn shapes;\n\n\t}\n\n} );\n\nfunction Font( data ) {\n\n\tthis.type = 'Font';\n\n\tthis.data = data;\n\n}\n\nObject.assign( Font.prototype, {\n\n\tisFont: true,\n\n\tgenerateShapes: function ( text, size ) {\n\n\t\tif ( size === undefined ) size = 100;\n\n\t\tconst shapes = [];\n\t\tconst paths = createPaths( text, size, this.data );\n\n\t\tfor ( let p = 0, pl = paths.length; p < pl; p ++ ) {\n\n\t\t\tArray.prototype.push.apply( shapes, paths[ p ].toShapes() );\n\n\t\t}\n\n\t\treturn shapes;\n\n\t}\n\n} );\n\nfunction createPaths( text, size, data ) {\n\n\tconst chars = Array.from ? Array.from( text ) : String( text ).split( '' ); // workaround for IE11, see #13988\n\tconst scale = size / data.resolution;\n\tconst line_height = ( data.boundingBox.yMax - data.boundingBox.yMin + data.underlineThickness ) * scale;\n\n\tconst paths = [];\n\n\tlet offsetX = 0, offsetY = 0;\n\n\tfor ( let i = 0; i < chars.length; i ++ ) {\n\n\t\tconst char = chars[ i ];\n\n\t\tif ( char === '\\n' ) {\n\n\t\t\toffsetX = 0;\n\t\t\toffsetY -= line_height;\n\n\t\t} else {\n\n\t\t\tconst ret = createPath( char, scale, offsetX, offsetY, data );\n\t\t\toffsetX += ret.offsetX;\n\t\t\tpaths.push( ret.path );\n\n\t\t}\n\n\t}\n\n\treturn paths;\n\n}\n\nfunction createPath( char, scale, offsetX, offsetY, data ) {\n\n\tconst glyph = data.glyphs[ char ] || data.glyphs[ '?' ];\n\n\tif ( ! glyph ) {\n\n\t\tconsole.error( 'THREE.Font: character \"' + char + '\" does not exists in font family ' + data.familyName + '.' );\n\n\t\treturn;\n\n\t}\n\n\tconst path = new ShapePath();\n\n\tlet x, y, cpx, cpy, cpx1, cpy1, cpx2, cpy2;\n\n\tif ( glyph.o ) {\n\n\t\tconst outline = glyph._cachedOutline || ( glyph._cachedOutline = glyph.o.split( ' ' ) );\n\n\t\tfor ( let i = 0, l = outline.length; i < l; ) {\n\n\t\t\tconst action = outline[ i ++ ];\n\n\t\t\tswitch ( action ) {\n\n\t\t\t\tcase 'm': // moveTo\n\n\t\t\t\t\tx = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\ty = outline[ i ++ ] * scale + offsetY;\n\n\t\t\t\t\tpath.moveTo( x, y );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'l': // lineTo\n\n\t\t\t\t\tx = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\ty = outline[ i ++ ] * scale + offsetY;\n\n\t\t\t\t\tpath.lineTo( x, y );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'q': // quadraticCurveTo\n\n\t\t\t\t\tcpx = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\tcpy = outline[ i ++ ] * scale + offsetY;\n\t\t\t\t\tcpx1 = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\tcpy1 = outline[ i ++ ] * scale + offsetY;\n\n\t\t\t\t\tpath.quadraticCurveTo( cpx1, cpy1, cpx, cpy );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'b': // bezierCurveTo\n\n\t\t\t\t\tcpx = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\tcpy = outline[ i ++ ] * scale + offsetY;\n\t\t\t\t\tcpx1 = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\tcpy1 = outline[ i ++ ] * scale + offsetY;\n\t\t\t\t\tcpx2 = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\tcpy2 = outline[ i ++ ] * scale + offsetY;\n\n\t\t\t\t\tpath.bezierCurveTo( cpx1, cpy1, cpx2, cpy2, cpx, cpy );\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\treturn { offsetX: glyph.ha * scale, path: path };\n\n}\n\nfunction FontLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nFontLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: FontLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\tlet json;\n\n\t\t\ttry {\n\n\t\t\t\tjson = JSON.parse( text );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tconsole.warn( 'THREE.FontLoader: typeface.js support is being deprecated. Use typeface.json instead.' );\n\t\t\t\tjson = JSON.parse( text.substring( 65, text.length - 2 ) );\n\n\t\t\t}\n\n\t\t\tconst font = scope.parse( json );\n\n\t\t\tif ( onLoad ) onLoad( font );\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tparse: function ( json ) {\n\n\t\treturn new Font( json );\n\n\t}\n\n} );\n\nlet _context;\n\nconst AudioContext = {\n\n\tgetContext: function () {\n\n\t\tif ( _context === undefined ) {\n\n\t\t\t_context = new ( window.AudioContext || window.webkitAudioContext )();\n\n\t\t}\n\n\t\treturn _context;\n\n\t},\n\n\tsetContext: function ( value ) {\n\n\t\t_context = value;\n\n\t}\n\n};\n\nfunction AudioLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nAudioLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: AudioLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( scope.manager );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setPath( scope.path );\n\t\tloader.setRequestHeader( scope.requestHeader );\n\t\tloader.load( url, function ( buffer ) {\n\n\t\t\ttry {\n\n\t\t\t\t// Create a copy of the buffer. The `decodeAudioData` method\n\t\t\t\t// detaches the buffer when complete, preventing reuse.\n\t\t\t\tconst bufferCopy = buffer.slice( 0 );\n\n\t\t\t\tconst context = AudioContext.getContext();\n\t\t\t\tcontext.decodeAudioData( bufferCopy, function ( audioBuffer ) {\n\n\t\t\t\t\tonLoad( audioBuffer );\n\n\t\t\t\t} );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t}\n\n} );\n\nfunction HemisphereLightProbe( skyColor, groundColor, intensity ) {\n\n\tLightProbe.call( this, undefined, intensity );\n\n\tconst color1 = new Color().set( skyColor );\n\tconst color2 = new Color().set( groundColor );\n\n\tconst sky = new Vector3( color1.r, color1.g, color1.b );\n\tconst ground = new Vector3( color2.r, color2.g, color2.b );\n\n\t// without extra factor of PI in the shader, should = 1 / Math.sqrt( Math.PI );\n\tconst c0 = Math.sqrt( Math.PI );\n\tconst c1 = c0 * Math.sqrt( 0.75 );\n\n\tthis.sh.coefficients[ 0 ].copy( sky ).add( ground ).multiplyScalar( c0 );\n\tthis.sh.coefficients[ 1 ].copy( sky ).sub( ground ).multiplyScalar( c1 );\n\n}\n\nHemisphereLightProbe.prototype = Object.assign( Object.create( LightProbe.prototype ), {\n\n\tconstructor: HemisphereLightProbe,\n\n\tisHemisphereLightProbe: true,\n\n\tcopy: function ( source ) { // modifying colors not currently supported\n\n\t\tLightProbe.prototype.copy.call( this, source );\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tconst data = LightProbe.prototype.toJSON.call( this, meta );\n\n\t\t// data.sh = this.sh.toArray(); // todo\n\n\t\treturn data;\n\n\t}\n\n} );\n\nfunction AmbientLightProbe( color, intensity ) {\n\n\tLightProbe.call( this, undefined, intensity );\n\n\tconst color1 = new Color().set( color );\n\n\t// without extra factor of PI in the shader, would be 2 / Math.sqrt( Math.PI );\n\tthis.sh.coefficients[ 0 ].set( color1.r, color1.g, color1.b ).multiplyScalar( 2 * Math.sqrt( Math.PI ) );\n\n}\n\nAmbientLightProbe.prototype = Object.assign( Object.create( LightProbe.prototype ), {\n\n\tconstructor: AmbientLightProbe,\n\n\tisAmbientLightProbe: true,\n\n\tcopy: function ( source ) { // modifying color not currently supported\n\n\t\tLightProbe.prototype.copy.call( this, source );\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tconst data = LightProbe.prototype.toJSON.call( this, meta );\n\n\t\t// data.sh = this.sh.toArray(); // todo\n\n\t\treturn data;\n\n\t}\n\n} );\n\nconst _eyeRight = new Matrix4();\nconst _eyeLeft = new Matrix4();\n\nfunction StereoCamera() {\n\n\tthis.type = 'StereoCamera';\n\n\tthis.aspect = 1;\n\n\tthis.eyeSep = 0.064;\n\n\tthis.cameraL = new PerspectiveCamera();\n\tthis.cameraL.layers.enable( 1 );\n\tthis.cameraL.matrixAutoUpdate = false;\n\n\tthis.cameraR = new PerspectiveCamera();\n\tthis.cameraR.layers.enable( 2 );\n\tthis.cameraR.matrixAutoUpdate = false;\n\n\tthis._cache = {\n\t\tfocus: null,\n\t\tfov: null,\n\t\taspect: null,\n\t\tnear: null,\n\t\tfar: null,\n\t\tzoom: null,\n\t\teyeSep: null\n\t};\n\n}\n\nObject.assign( StereoCamera.prototype, {\n\n\tupdate: function ( camera ) {\n\n\t\tconst cache = this._cache;\n\n\t\tconst needsUpdate = cache.focus !== camera.focus || cache.fov !== camera.fov ||\n\t\t\tcache.aspect !== camera.aspect * this.aspect || cache.near !== camera.near ||\n\t\t\tcache.far !== camera.far || cache.zoom !== camera.zoom || cache.eyeSep !== this.eyeSep;\n\n\t\tif ( needsUpdate ) {\n\n\t\t\tcache.focus = camera.focus;\n\t\t\tcache.fov = camera.fov;\n\t\t\tcache.aspect = camera.aspect * this.aspect;\n\t\t\tcache.near = camera.near;\n\t\t\tcache.far = camera.far;\n\t\t\tcache.zoom = camera.zoom;\n\t\t\tcache.eyeSep = this.eyeSep;\n\n\t\t\t// Off-axis stereoscopic effect based on\n\t\t\t// http://paulbourke.net/stereographics/stereorender/\n\n\t\t\tconst projectionMatrix = camera.projectionMatrix.clone();\n\t\t\tconst eyeSepHalf = cache.eyeSep / 2;\n\t\t\tconst eyeSepOnProjection = eyeSepHalf * cache.near / cache.focus;\n\t\t\tconst ymax = ( cache.near * Math.tan( MathUtils.DEG2RAD * cache.fov * 0.5 ) ) / cache.zoom;\n\t\t\tlet xmin, xmax;\n\n\t\t\t// translate xOffset\n\n\t\t\t_eyeLeft.elements[ 12 ] = - eyeSepHalf;\n\t\t\t_eyeRight.elements[ 12 ] = eyeSepHalf;\n\n\t\t\t// for left eye\n\n\t\t\txmin = - ymax * cache.aspect + eyeSepOnProjection;\n\t\t\txmax = ymax * cache.aspect + eyeSepOnProjection;\n\n\t\t\tprojectionMatrix.elements[ 0 ] = 2 * cache.near / ( xmax - xmin );\n\t\t\tprojectionMatrix.elements[ 8 ] = ( xmax + xmin ) / ( xmax - xmin );\n\n\t\t\tthis.cameraL.projectionMatrix.copy( projectionMatrix );\n\n\t\t\t// for right eye\n\n\t\t\txmin = - ymax * cache.aspect - eyeSepOnProjection;\n\t\t\txmax = ymax * cache.aspect - eyeSepOnProjection;\n\n\t\t\tprojectionMatrix.elements[ 0 ] = 2 * cache.near / ( xmax - xmin );\n\t\t\tprojectionMatrix.elements[ 8 ] = ( xmax + xmin ) / ( xmax - xmin );\n\n\t\t\tthis.cameraR.projectionMatrix.copy( projectionMatrix );\n\n\t\t}\n\n\t\tthis.cameraL.matrixWorld.copy( camera.matrixWorld ).multiply( _eyeLeft );\n\t\tthis.cameraR.matrixWorld.copy( camera.matrixWorld ).multiply( _eyeRight );\n\n\t}\n\n} );\n\nclass Clock {\n\n\tconstructor( autoStart ) {\n\n\t\tthis.autoStart = ( autoStart !== undefined ) ? autoStart : true;\n\n\t\tthis.startTime = 0;\n\t\tthis.oldTime = 0;\n\t\tthis.elapsedTime = 0;\n\n\t\tthis.running = false;\n\n\t}\n\n\tstart() {\n\n\t\tthis.startTime = ( typeof performance === 'undefined' ? Date : performance ).now(); // see #10732\n\n\t\tthis.oldTime = this.startTime;\n\t\tthis.elapsedTime = 0;\n\t\tthis.running = true;\n\n\t}\n\n\tstop() {\n\n\t\tthis.getElapsedTime();\n\t\tthis.running = false;\n\t\tthis.autoStart = false;\n\n\t}\n\n\tgetElapsedTime() {\n\n\t\tthis.getDelta();\n\t\treturn this.elapsedTime;\n\n\t}\n\n\tgetDelta() {\n\n\t\tlet diff = 0;\n\n\t\tif ( this.autoStart && ! this.running ) {\n\n\t\t\tthis.start();\n\t\t\treturn 0;\n\n\t\t}\n\n\t\tif ( this.running ) {\n\n\t\t\tconst newTime = ( typeof performance === 'undefined' ? Date : performance ).now();\n\n\t\t\tdiff = ( newTime - this.oldTime ) / 1000;\n\t\t\tthis.oldTime = newTime;\n\n\t\t\tthis.elapsedTime += diff;\n\n\t\t}\n\n\t\treturn diff;\n\n\t}\n\n}\n\nconst _position$2 = new Vector3();\nconst _quaternion$3 = new Quaternion();\nconst _scale$1 = new Vector3();\nconst _orientation = new Vector3();\n\nclass AudioListener extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.type = 'AudioListener';\n\n\t\tthis.context = AudioContext.getContext();\n\n\t\tthis.gain = this.context.createGain();\n\t\tthis.gain.connect( this.context.destination );\n\n\t\tthis.filter = null;\n\n\t\tthis.timeDelta = 0;\n\n\t\t// private\n\n\t\tthis._clock = new Clock();\n\n\t}\n\n\tgetInput() {\n\n\t\treturn this.gain;\n\n\t}\n\n\tremoveFilter() {\n\n\t\tif ( this.filter !== null ) {\n\n\t\t\tthis.gain.disconnect( this.filter );\n\t\t\tthis.filter.disconnect( this.context.destination );\n\t\t\tthis.gain.connect( this.context.destination );\n\t\t\tthis.filter = null;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetFilter() {\n\n\t\treturn this.filter;\n\n\t}\n\n\tsetFilter( value ) {\n\n\t\tif ( this.filter !== null ) {\n\n\t\t\tthis.gain.disconnect( this.filter );\n\t\t\tthis.filter.disconnect( this.context.destination );\n\n\t\t} else {\n\n\t\t\tthis.gain.disconnect( this.context.destination );\n\n\t\t}\n\n\t\tthis.filter = value;\n\t\tthis.gain.connect( this.filter );\n\t\tthis.filter.connect( this.context.destination );\n\n\t\treturn this;\n\n\t}\n\n\tgetMasterVolume() {\n\n\t\treturn this.gain.gain.value;\n\n\t}\n\n\tsetMasterVolume( value ) {\n\n\t\tthis.gain.gain.setTargetAtTime( value, this.context.currentTime, 0.01 );\n\n\t\treturn this;\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t\tconst listener = this.context.listener;\n\t\tconst up = this.up;\n\n\t\tthis.timeDelta = this._clock.getDelta();\n\n\t\tthis.matrixWorld.decompose( _position$2, _quaternion$3, _scale$1 );\n\n\t\t_orientation.set( 0, 0, - 1 ).applyQuaternion( _quaternion$3 );\n\n\t\tif ( listener.positionX ) {\n\n\t\t\t// code path for Chrome (see #14393)\n\n\t\t\tconst endTime = this.context.currentTime + this.timeDelta;\n\n\t\t\tlistener.positionX.linearRampToValueAtTime( _position$2.x, endTime );\n\t\t\tlistener.positionY.linearRampToValueAtTime( _position$2.y, endTime );\n\t\t\tlistener.positionZ.linearRampToValueAtTime( _position$2.z, endTime );\n\t\t\tlistener.forwardX.linearRampToValueAtTime( _orientation.x, endTime );\n\t\t\tlistener.forwardY.linearRampToValueAtTime( _orientation.y, endTime );\n\t\t\tlistener.forwardZ.linearRampToValueAtTime( _orientation.z, endTime );\n\t\t\tlistener.upX.linearRampToValueAtTime( up.x, endTime );\n\t\t\tlistener.upY.linearRampToValueAtTime( up.y, endTime );\n\t\t\tlistener.upZ.linearRampToValueAtTime( up.z, endTime );\n\n\t\t} else {\n\n\t\t\tlistener.setPosition( _position$2.x, _position$2.y, _position$2.z );\n\t\t\tlistener.setOrientation( _orientation.x, _orientation.y, _orientation.z, up.x, up.y, up.z );\n\n\t\t}\n\n\t}\n\n}\n\nclass Audio extends Object3D {\n\n\tconstructor( listener ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'Audio';\n\n\t\tthis.listener = listener;\n\t\tthis.context = listener.context;\n\n\t\tthis.gain = this.context.createGain();\n\t\tthis.gain.connect( listener.getInput() );\n\n\t\tthis.autoplay = false;\n\n\t\tthis.buffer = null;\n\t\tthis.detune = 0;\n\t\tthis.loop = false;\n\t\tthis.loopStart = 0;\n\t\tthis.loopEnd = 0;\n\t\tthis.offset = 0;\n\t\tthis.duration = undefined;\n\t\tthis.playbackRate = 1;\n\t\tthis.isPlaying = false;\n\t\tthis.hasPlaybackControl = true;\n\t\tthis.source = null;\n\t\tthis.sourceType = 'empty';\n\n\t\tthis._startedAt = 0;\n\t\tthis._progress = 0;\n\t\tthis._connected = false;\n\n\t\tthis.filters = [];\n\n\t}\n\n\tgetOutput() {\n\n\t\treturn this.gain;\n\n\t}\n\n\tsetNodeSource( audioNode ) {\n\n\t\tthis.hasPlaybackControl = false;\n\t\tthis.sourceType = 'audioNode';\n\t\tthis.source = audioNode;\n\t\tthis.connect();\n\n\t\treturn this;\n\n\t}\n\n\tsetMediaElementSource( mediaElement ) {\n\n\t\tthis.hasPlaybackControl = false;\n\t\tthis.sourceType = 'mediaNode';\n\t\tthis.source = this.context.createMediaElementSource( mediaElement );\n\t\tthis.connect();\n\n\t\treturn this;\n\n\t}\n\n\tsetMediaStreamSource( mediaStream ) {\n\n\t\tthis.hasPlaybackControl = false;\n\t\tthis.sourceType = 'mediaStreamNode';\n\t\tthis.source = this.context.createMediaStreamSource( mediaStream );\n\t\tthis.connect();\n\n\t\treturn this;\n\n\t}\n\n\tsetBuffer( audioBuffer ) {\n\n\t\tthis.buffer = audioBuffer;\n\t\tthis.sourceType = 'buffer';\n\n\t\tif ( this.autoplay ) this.play();\n\n\t\treturn this;\n\n\t}\n\n\tplay( delay ) {\n\n\t\tif ( delay === undefined ) delay = 0;\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: Audio is already playing.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis._startedAt = this.context.currentTime + delay;\n\n\t\tconst source = this.context.createBufferSource();\n\t\tsource.buffer = this.buffer;\n\t\tsource.loop = this.loop;\n\t\tsource.loopStart = this.loopStart;\n\t\tsource.loopEnd = this.loopEnd;\n\t\tsource.onended = this.onEnded.bind( this );\n\t\tsource.start( this._startedAt, this._progress + this.offset, this.duration );\n\n\t\tthis.isPlaying = true;\n\n\t\tthis.source = source;\n\n\t\tthis.setDetune( this.detune );\n\t\tthis.setPlaybackRate( this.playbackRate );\n\n\t\treturn this.connect();\n\n\t}\n\n\tpause() {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\t// update current progress\n\n\t\t\tthis._progress += Math.max( this.context.currentTime - this._startedAt, 0 ) * this.playbackRate;\n\n\t\t\tif ( this.loop === true ) {\n\n\t\t\t\t// ensure _progress does not exceed duration with looped audios\n\n\t\t\t\tthis._progress = this._progress % ( this.duration || this.buffer.duration );\n\n\t\t\t}\n\n\t\t\tthis.source.stop();\n\t\t\tthis.source.onended = null;\n\n\t\t\tthis.isPlaying = false;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tstop() {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis._progress = 0;\n\n\t\tthis.source.stop();\n\t\tthis.source.onended = null;\n\t\tthis.isPlaying = false;\n\n\t\treturn this;\n\n\t}\n\n\tconnect() {\n\n\t\tif ( this.filters.length > 0 ) {\n\n\t\t\tthis.source.connect( this.filters[ 0 ] );\n\n\t\t\tfor ( let i = 1, l = this.filters.length; i < l; i ++ ) {\n\n\t\t\t\tthis.filters[ i - 1 ].connect( this.filters[ i ] );\n\n\t\t\t}\n\n\t\t\tthis.filters[ this.filters.length - 1 ].connect( this.getOutput() );\n\n\t\t} else {\n\n\t\t\tthis.source.connect( this.getOutput() );\n\n\t\t}\n\n\t\tthis._connected = true;\n\n\t\treturn this;\n\n\t}\n\n\tdisconnect() {\n\n\t\tif ( this.filters.length > 0 ) {\n\n\t\t\tthis.source.disconnect( this.filters[ 0 ] );\n\n\t\t\tfor ( let i = 1, l = this.filters.length; i < l; i ++ ) {\n\n\t\t\t\tthis.filters[ i - 1 ].disconnect( this.filters[ i ] );\n\n\t\t\t}\n\n\t\t\tthis.filters[ this.filters.length - 1 ].disconnect( this.getOutput() );\n\n\t\t} else {\n\n\t\t\tthis.source.disconnect( this.getOutput() );\n\n\t\t}\n\n\t\tthis._connected = false;\n\n\t\treturn this;\n\n\t}\n\n\tgetFilters() {\n\n\t\treturn this.filters;\n\n\t}\n\n\tsetFilters( value ) {\n\n\t\tif ( ! value ) value = [];\n\n\t\tif ( this._connected === true ) {\n\n\t\t\tthis.disconnect();\n\t\t\tthis.filters = value;\n\t\t\tthis.connect();\n\n\t\t} else {\n\n\t\t\tthis.filters = value;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetDetune( value ) {\n\n\t\tthis.detune = value;\n\n\t\tif ( this.source.detune === undefined ) return; // only set detune when available\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.source.detune.setTargetAtTime( this.detune, this.context.currentTime, 0.01 );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetDetune() {\n\n\t\treturn this.detune;\n\n\t}\n\n\tgetFilter() {\n\n\t\treturn this.getFilters()[ 0 ];\n\n\t}\n\n\tsetFilter( filter ) {\n\n\t\treturn this.setFilters( filter ? [ filter ] : [] );\n\n\t}\n\n\tsetPlaybackRate( value ) {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis.playbackRate = value;\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.source.playbackRate.setTargetAtTime( this.playbackRate, this.context.currentTime, 0.01 );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetPlaybackRate() {\n\n\t\treturn this.playbackRate;\n\n\t}\n\n\tonEnded() {\n\n\t\tthis.isPlaying = false;\n\n\t}\n\n\tgetLoop() {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn false;\n\n\t\t}\n\n\t\treturn this.loop;\n\n\t}\n\n\tsetLoop( value ) {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis.loop = value;\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.source.loop = this.loop;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetLoopStart( value ) {\n\n\t\tthis.loopStart = value;\n\n\t\treturn this;\n\n\t}\n\n\tsetLoopEnd( value ) {\n\n\t\tthis.loopEnd = value;\n\n\t\treturn this;\n\n\t}\n\n\tgetVolume() {\n\n\t\treturn this.gain.gain.value;\n\n\t}\n\n\tsetVolume( value ) {\n\n\t\tthis.gain.gain.setTargetAtTime( value, this.context.currentTime, 0.01 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst _position$3 = new Vector3();\nconst _quaternion$4 = new Quaternion();\nconst _scale$2 = new Vector3();\nconst _orientation$1 = new Vector3();\n\nclass PositionalAudio extends Audio {\n\n\tconstructor( listener ) {\n\n\t\tsuper( listener );\n\n\t\tthis.panner = this.context.createPanner();\n\t\tthis.panner.panningModel = 'HRTF';\n\t\tthis.panner.connect( this.gain );\n\n\t}\n\n\tgetOutput() {\n\n\t\treturn this.panner;\n\n\t}\n\n\tgetRefDistance() {\n\n\t\treturn this.panner.refDistance;\n\n\t}\n\n\tsetRefDistance( value ) {\n\n\t\tthis.panner.refDistance = value;\n\n\t\treturn this;\n\n\t}\n\n\tgetRolloffFactor() {\n\n\t\treturn this.panner.rolloffFactor;\n\n\t}\n\n\tsetRolloffFactor( value ) {\n\n\t\tthis.panner.rolloffFactor = value;\n\n\t\treturn this;\n\n\t}\n\n\tgetDistanceModel() {\n\n\t\treturn this.panner.distanceModel;\n\n\t}\n\n\tsetDistanceModel( value ) {\n\n\t\tthis.panner.distanceModel = value;\n\n\t\treturn this;\n\n\t}\n\n\tgetMaxDistance() {\n\n\t\treturn this.panner.maxDistance;\n\n\t}\n\n\tsetMaxDistance( value ) {\n\n\t\tthis.panner.maxDistance = value;\n\n\t\treturn this;\n\n\t}\n\n\tsetDirectionalCone( coneInnerAngle, coneOuterAngle, coneOuterGain ) {\n\n\t\tthis.panner.coneInnerAngle = coneInnerAngle;\n\t\tthis.panner.coneOuterAngle = coneOuterAngle;\n\t\tthis.panner.coneOuterGain = coneOuterGain;\n\n\t\treturn this;\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t\tif ( this.hasPlaybackControl === true && this.isPlaying === false ) return;\n\n\t\tthis.matrixWorld.decompose( _position$3, _quaternion$4, _scale$2 );\n\n\t\t_orientation$1.set( 0, 0, 1 ).applyQuaternion( _quaternion$4 );\n\n\t\tconst panner = this.panner;\n\n\t\tif ( panner.positionX ) {\n\n\t\t\t// code path for Chrome and Firefox (see #14393)\n\n\t\t\tconst endTime = this.context.currentTime + this.listener.timeDelta;\n\n\t\t\tpanner.positionX.linearRampToValueAtTime( _position$3.x, endTime );\n\t\t\tpanner.positionY.linearRampToValueAtTime( _position$3.y, endTime );\n\t\t\tpanner.positionZ.linearRampToValueAtTime( _position$3.z, endTime );\n\t\t\tpanner.orientationX.linearRampToValueAtTime( _orientation$1.x, endTime );\n\t\t\tpanner.orientationY.linearRampToValueAtTime( _orientation$1.y, endTime );\n\t\t\tpanner.orientationZ.linearRampToValueAtTime( _orientation$1.z, endTime );\n\n\t\t} else {\n\n\t\t\tpanner.setPosition( _position$3.x, _position$3.y, _position$3.z );\n\t\t\tpanner.setOrientation( _orientation$1.x, _orientation$1.y, _orientation$1.z );\n\n\t\t}\n\n\t}\n\n}\n\nclass AudioAnalyser {\n\n\tconstructor( audio, fftSize ) {\n\n\t\tthis.analyser = audio.context.createAnalyser();\n\t\tthis.analyser.fftSize = fftSize !== undefined ? fftSize : 2048;\n\n\t\tthis.data = new Uint8Array( this.analyser.frequencyBinCount );\n\n\t\taudio.getOutput().connect( this.analyser );\n\n\t}\n\n\n\tgetFrequencyData() {\n\n\t\tthis.analyser.getByteFrequencyData( this.data );\n\n\t\treturn this.data;\n\n\t}\n\n\tgetAverageFrequency() {\n\n\t\tlet value = 0;\n\t\tconst data = this.getFrequencyData();\n\n\t\tfor ( let i = 0; i < data.length; i ++ ) {\n\n\t\t\tvalue += data[ i ];\n\n\t\t}\n\n\t\treturn value / data.length;\n\n\t}\n\n}\n\nfunction PropertyMixer( binding, typeName, valueSize ) {\n\n\tthis.binding = binding;\n\tthis.valueSize = valueSize;\n\n\tlet mixFunction,\n\t\tmixFunctionAdditive,\n\t\tsetIdentity;\n\n\t// buffer layout: [ incoming | accu0 | accu1 | orig | addAccu | (optional work) ]\n\t//\n\t// interpolators can use .buffer as their .result\n\t// the data then goes to 'incoming'\n\t//\n\t// 'accu0' and 'accu1' are used frame-interleaved for\n\t// the cumulative result and are compared to detect\n\t// changes\n\t//\n\t// 'orig' stores the original state of the property\n\t//\n\t// 'add' is used for additive cumulative results\n\t//\n\t// 'work' is optional and is only present for quaternion types. It is used\n\t// to store intermediate quaternion multiplication results\n\n\tswitch ( typeName ) {\n\n\t\tcase 'quaternion':\n\t\t\tmixFunction = this._slerp;\n\t\t\tmixFunctionAdditive = this._slerpAdditive;\n\t\t\tsetIdentity = this._setAdditiveIdentityQuaternion;\n\n\t\t\tthis.buffer = new Float64Array( valueSize * 6 );\n\t\t\tthis._workIndex = 5;\n\t\t\tbreak;\n\n\t\tcase 'string':\n\t\tcase 'bool':\n\t\t\tmixFunction = this._select;\n\n\t\t\t// Use the regular mix function and for additive on these types,\n\t\t\t// additive is not relevant for non-numeric types\n\t\t\tmixFunctionAdditive = this._select;\n\n\t\t\tsetIdentity = this._setAdditiveIdentityOther;\n\n\t\t\tthis.buffer = new Array( valueSize * 5 );\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tmixFunction = this._lerp;\n\t\t\tmixFunctionAdditive = this._lerpAdditive;\n\t\t\tsetIdentity = this._setAdditiveIdentityNumeric;\n\n\t\t\tthis.buffer = new Float64Array( valueSize * 5 );\n\n\t}\n\n\tthis._mixBufferRegion = mixFunction;\n\tthis._mixBufferRegionAdditive = mixFunctionAdditive;\n\tthis._setIdentity = setIdentity;\n\tthis._origIndex = 3;\n\tthis._addIndex = 4;\n\n\tthis.cumulativeWeight = 0;\n\tthis.cumulativeWeightAdditive = 0;\n\n\tthis.useCount = 0;\n\tthis.referenceCount = 0;\n\n}\n\nObject.assign( PropertyMixer.prototype, {\n\n\t// accumulate data in the 'incoming' region into 'accu<i>'\n\taccumulate: function ( accuIndex, weight ) {\n\n\t\t// note: happily accumulating nothing when weight = 0, the caller knows\n\t\t// the weight and shouldn't have made the call in the first place\n\n\t\tconst buffer = this.buffer,\n\t\t\tstride = this.valueSize,\n\t\t\toffset = accuIndex * stride + stride;\n\n\t\tlet currentWeight = this.cumulativeWeight;\n\n\t\tif ( currentWeight === 0 ) {\n\n\t\t\t// accuN := incoming * weight\n\n\t\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\t\tbuffer[ offset + i ] = buffer[ i ];\n\n\t\t\t}\n\n\t\t\tcurrentWeight = weight;\n\n\t\t} else {\n\n\t\t\t// accuN := accuN + incoming * weight\n\n\t\t\tcurrentWeight += weight;\n\t\t\tconst mix = weight / currentWeight;\n\t\t\tthis._mixBufferRegion( buffer, offset, 0, mix, stride );\n\n\t\t}\n\n\t\tthis.cumulativeWeight = currentWeight;\n\n\t},\n\n\t// accumulate data in the 'incoming' region into 'add'\n\taccumulateAdditive: function ( weight ) {\n\n\t\tconst buffer = this.buffer,\n\t\t\tstride = this.valueSize,\n\t\t\toffset = stride * this._addIndex;\n\n\t\tif ( this.cumulativeWeightAdditive === 0 ) {\n\n\t\t\t// add = identity\n\n\t\t\tthis._setIdentity();\n\n\t\t}\n\n\t\t// add := add + incoming * weight\n\n\t\tthis._mixBufferRegionAdditive( buffer, offset, 0, weight, stride );\n\t\tthis.cumulativeWeightAdditive += weight;\n\n\t},\n\n\t// apply the state of 'accu<i>' to the binding when accus differ\n\tapply: function ( accuIndex ) {\n\n\t\tconst stride = this.valueSize,\n\t\t\tbuffer = this.buffer,\n\t\t\toffset = accuIndex * stride + stride,\n\n\t\t\tweight = this.cumulativeWeight,\n\t\t\tweightAdditive = this.cumulativeWeightAdditive,\n\n\t\t\tbinding = this.binding;\n\n\t\tthis.cumulativeWeight = 0;\n\t\tthis.cumulativeWeightAdditive = 0;\n\n\t\tif ( weight < 1 ) {\n\n\t\t\t// accuN := accuN + original * ( 1 - cumulativeWeight )\n\n\t\t\tconst originalValueOffset = stride * this._origIndex;\n\n\t\t\tthis._mixBufferRegion(\n\t\t\t\tbuffer, offset, originalValueOffset, 1 - weight, stride );\n\n\t\t}\n\n\t\tif ( weightAdditive > 0 ) {\n\n\t\t\t// accuN := accuN + additive accuN\n\n\t\t\tthis._mixBufferRegionAdditive( buffer, offset, this._addIndex * stride, 1, stride );\n\n\t\t}\n\n\t\tfor ( let i = stride, e = stride + stride; i !== e; ++ i ) {\n\n\t\t\tif ( buffer[ i ] !== buffer[ i + stride ] ) {\n\n\t\t\t\t// value has changed -> update scene graph\n\n\t\t\t\tbinding.setValue( buffer, offset );\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t// remember the state of the bound property and copy it to both accus\n\tsaveOriginalState: function () {\n\n\t\tconst binding = this.binding;\n\n\t\tconst buffer = this.buffer,\n\t\t\tstride = this.valueSize,\n\n\t\t\toriginalValueOffset = stride * this._origIndex;\n\n\t\tbinding.getValue( buffer, originalValueOffset );\n\n\t\t// accu[0..1] := orig -- initially detect changes against the original\n\t\tfor ( let i = stride, e = originalValueOffset; i !== e; ++ i ) {\n\n\t\t\tbuffer[ i ] = buffer[ originalValueOffset + ( i % stride ) ];\n\n\t\t}\n\n\t\t// Add to identity for additive\n\t\tthis._setIdentity();\n\n\t\tthis.cumulativeWeight = 0;\n\t\tthis.cumulativeWeightAdditive = 0;\n\n\t},\n\n\t// apply the state previously taken via 'saveOriginalState' to the binding\n\trestoreOriginalState: function () {\n\n\t\tconst originalValueOffset = this.valueSize * 3;\n\t\tthis.binding.setValue( this.buffer, originalValueOffset );\n\n\t},\n\n\t_setAdditiveIdentityNumeric: function () {\n\n\t\tconst startIndex = this._addIndex * this.valueSize;\n\t\tconst endIndex = startIndex + this.valueSize;\n\n\t\tfor ( let i = startIndex; i < endIndex; i ++ ) {\n\n\t\t\tthis.buffer[ i ] = 0;\n\n\t\t}\n\n\t},\n\n\t_setAdditiveIdentityQuaternion: function () {\n\n\t\tthis._setAdditiveIdentityNumeric();\n\t\tthis.buffer[ this._addIndex * this.valueSize + 3 ] = 1;\n\n\t},\n\n\t_setAdditiveIdentityOther: function () {\n\n\t\tconst startIndex = this._origIndex * this.valueSize;\n\t\tconst targetIndex = this._addIndex * this.valueSize;\n\n\t\tfor ( let i = 0; i < this.valueSize; i ++ ) {\n\n\t\t\tthis.buffer[ targetIndex + i ] = this.buffer[ startIndex + i ];\n\n\t\t}\n\n\t},\n\n\n\t// mix functions\n\n\t_select: function ( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tif ( t >= 0.5 ) {\n\n\t\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\t\tbuffer[ dstOffset + i ] = buffer[ srcOffset + i ];\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t_slerp: function ( buffer, dstOffset, srcOffset, t ) {\n\n\t\tQuaternion.slerpFlat( buffer, dstOffset, buffer, dstOffset, buffer, srcOffset, t );\n\n\t},\n\n\t_slerpAdditive: function ( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tconst workOffset = this._workIndex * stride;\n\n\t\t// Store result in intermediate buffer offset\n\t\tQuaternion.multiplyQuaternionsFlat( buffer, workOffset, buffer, dstOffset, buffer, srcOffset );\n\n\t\t// Slerp to the intermediate result\n\t\tQuaternion.slerpFlat( buffer, dstOffset, buffer, dstOffset, buffer, workOffset, t );\n\n\t},\n\n\t_lerp: function ( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tconst s = 1 - t;\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tconst j = dstOffset + i;\n\n\t\t\tbuffer[ j ] = buffer[ j ] * s + buffer[ srcOffset + i ] * t;\n\n\t\t}\n\n\t},\n\n\t_lerpAdditive: function ( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tconst j = dstOffset + i;\n\n\t\t\tbuffer[ j ] = buffer[ j ] + buffer[ srcOffset + i ] * t;\n\n\t\t}\n\n\t}\n\n} );\n\n// Characters [].:/ are reserved for track binding syntax.\nconst _RESERVED_CHARS_RE = '\\\\[\\\\]\\\\.:\\\\/';\nconst _reservedRe = new RegExp( '[' + _RESERVED_CHARS_RE + ']', 'g' );\n\n// Attempts to allow node names from any language. ES5's `\\w` regexp matches\n// only latin characters, and the unicode \\p{L} is not yet supported. So\n// instead, we exclude reserved characters and match everything else.\nconst _wordChar = '[^' + _RESERVED_CHARS_RE + ']';\nconst _wordCharOrDot = '[^' + _RESERVED_CHARS_RE.replace( '\\\\.', '' ) + ']';\n\n// Parent directories, delimited by '/' or ':'. Currently unused, but must\n// be matched to parse the rest of the track name.\nconst _directoryRe = /((?:WC+[\\/:])*)/.source.replace( 'WC', _wordChar );\n\n// Target node. May contain word characters (a-zA-Z0-9_) and '.' or '-'.\nconst _nodeRe = /(WCOD+)?/.source.replace( 'WCOD', _wordCharOrDot );\n\n// Object on target node, and accessor. May not contain reserved\n// characters. Accessor may contain any character except closing bracket.\nconst _objectRe = /(?:\\.(WC+)(?:\\[(.+)\\])?)?/.source.replace( 'WC', _wordChar );\n\n// Property and accessor. May not contain reserved characters. Accessor may\n// contain any non-bracket characters.\nconst _propertyRe = /\\.(WC+)(?:\\[(.+)\\])?/.source.replace( 'WC', _wordChar );\n\nconst _trackRe = new RegExp( ''\n\t+ '^'\n\t+ _directoryRe\n\t+ _nodeRe\n\t+ _objectRe\n\t+ _propertyRe\n\t+ '$'\n);\n\nconst _supportedObjectNames = [ 'material', 'materials', 'bones' ];\n\nfunction Composite( targetGroup, path, optionalParsedPath ) {\n\n\tconst parsedPath = optionalParsedPath || PropertyBinding.parseTrackName( path );\n\n\tthis._targetGroup = targetGroup;\n\tthis._bindings = targetGroup.subscribe_( path, parsedPath );\n\n}\n\nObject.assign( Composite.prototype, {\n\n\tgetValue: function ( array, offset ) {\n\n\t\tthis.bind(); // bind all binding\n\n\t\tconst firstValidIndex = this._targetGroup.nCachedObjects_,\n\t\t\tbinding = this._bindings[ firstValidIndex ];\n\n\t\t// and only call .getValue on the first\n\t\tif ( binding !== undefined ) binding.getValue( array, offset );\n\n\t},\n\n\tsetValue: function ( array, offset ) {\n\n\t\tconst bindings = this._bindings;\n\n\t\tfor ( let i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tbindings[ i ].setValue( array, offset );\n\n\t\t}\n\n\t},\n\n\tbind: function () {\n\n\t\tconst bindings = this._bindings;\n\n\t\tfor ( let i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tbindings[ i ].bind();\n\n\t\t}\n\n\t},\n\n\tunbind: function () {\n\n\t\tconst bindings = this._bindings;\n\n\t\tfor ( let i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tbindings[ i ].unbind();\n\n\t\t}\n\n\t}\n\n} );\n\n\nfunction PropertyBinding( rootNode, path, parsedPath ) {\n\n\tthis.path = path;\n\tthis.parsedPath = parsedPath || PropertyBinding.parseTrackName( path );\n\n\tthis.node = PropertyBinding.findNode( rootNode, this.parsedPath.nodeName ) || rootNode;\n\n\tthis.rootNode = rootNode;\n\n}\n\nObject.assign( PropertyBinding, {\n\n\tComposite: Composite,\n\n\tcreate: function ( root, path, parsedPath ) {\n\n\t\tif ( ! ( root && root.isAnimationObjectGroup ) ) {\n\n\t\t\treturn new PropertyBinding( root, path, parsedPath );\n\n\t\t} else {\n\n\t\t\treturn new PropertyBinding.Composite( root, path, parsedPath );\n\n\t\t}\n\n\t},\n\n\t/**\n\t * Replaces spaces with underscores and removes unsupported characters from\n\t * node names, to ensure compatibility with parseTrackName().\n\t *\n\t * @param {string} name Node name to be sanitized.\n\t * @return {string}\n\t */\n\tsanitizeNodeName: function ( name ) {\n\n\t\treturn name.replace( /\\s/g, '_' ).replace( _reservedRe, '' );\n\n\t},\n\n\tparseTrackName: function ( trackName ) {\n\n\t\tconst matches = _trackRe.exec( trackName );\n\n\t\tif ( ! matches ) {\n\n\t\t\tthrow new Error( 'PropertyBinding: Cannot parse trackName: ' + trackName );\n\n\t\t}\n\n\t\tconst results = {\n\t\t\t// directoryName: matches[ 1 ], // (tschw) currently unused\n\t\t\tnodeName: matches[ 2 ],\n\t\t\tobjectName: matches[ 3 ],\n\t\t\tobjectIndex: matches[ 4 ],\n\t\t\tpropertyName: matches[ 5 ], // required\n\t\t\tpropertyIndex: matches[ 6 ]\n\t\t};\n\n\t\tconst lastDot = results.nodeName && results.nodeName.lastIndexOf( '.' );\n\n\t\tif ( lastDot !== undefined && lastDot !== - 1 ) {\n\n\t\t\tconst objectName = results.nodeName.substring( lastDot + 1 );\n\n\t\t\t// Object names must be checked against an allowlist. Otherwise, there\n\t\t\t// is no way to parse 'foo.bar.baz': 'baz' must be a property, but\n\t\t\t// 'bar' could be the objectName, or part of a nodeName (which can\n\t\t\t// include '.' characters).\n\t\t\tif ( _supportedObjectNames.indexOf( objectName ) !== - 1 ) {\n\n\t\t\t\tresults.nodeName = results.nodeName.substring( 0, lastDot );\n\t\t\t\tresults.objectName = objectName;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( results.propertyName === null || results.propertyName.length === 0 ) {\n\n\t\t\tthrow new Error( 'PropertyBinding: can not parse propertyName from trackName: ' + trackName );\n\n\t\t}\n\n\t\treturn results;\n\n\t},\n\n\tfindNode: function ( root, nodeName ) {\n\n\t\tif ( ! nodeName || nodeName === \"\" || nodeName === \".\" || nodeName === - 1 || nodeName === root.name || nodeName === root.uuid ) {\n\n\t\t\treturn root;\n\n\t\t}\n\n\t\t// search into skeleton bones.\n\t\tif ( root.skeleton ) {\n\n\t\t\tconst bone = root.skeleton.getBoneByName( nodeName );\n\n\t\t\tif ( bone !== undefined ) {\n\n\t\t\t\treturn bone;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// search into node subtree.\n\t\tif ( root.children ) {\n\n\t\t\tconst searchNodeSubtree = function ( children ) {\n\n\t\t\t\tfor ( let i = 0; i < children.length; i ++ ) {\n\n\t\t\t\t\tconst childNode = children[ i ];\n\n\t\t\t\t\tif ( childNode.name === nodeName || childNode.uuid === nodeName ) {\n\n\t\t\t\t\t\treturn childNode;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst result = searchNodeSubtree( childNode.children );\n\n\t\t\t\t\tif ( result ) return result;\n\n\t\t\t\t}\n\n\t\t\t\treturn null;\n\n\t\t\t};\n\n\t\t\tconst subTreeNode = searchNodeSubtree( root.children );\n\n\t\t\tif ( subTreeNode ) {\n\n\t\t\t\treturn subTreeNode;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n} );\n\nObject.assign( PropertyBinding.prototype, { // prototype, continued\n\n\t// these are used to \"bind\" a nonexistent property\n\t_getValue_unavailable: function () {},\n\t_setValue_unavailable: function () {},\n\n\tBindingType: {\n\t\tDirect: 0,\n\t\tEntireArray: 1,\n\t\tArrayElement: 2,\n\t\tHasFromToArray: 3\n\t},\n\n\tVersioning: {\n\t\tNone: 0,\n\t\tNeedsUpdate: 1,\n\t\tMatrixWorldNeedsUpdate: 2\n\t},\n\n\tGetterByBindingType: [\n\n\t\tfunction getValue_direct( buffer, offset ) {\n\n\t\t\tbuffer[ offset ] = this.node[ this.propertyName ];\n\n\t\t},\n\n\t\tfunction getValue_array( buffer, offset ) {\n\n\t\t\tconst source = this.resolvedProperty;\n\n\t\t\tfor ( let i = 0, n = source.length; i !== n; ++ i ) {\n\n\t\t\t\tbuffer[ offset ++ ] = source[ i ];\n\n\t\t\t}\n\n\t\t},\n\n\t\tfunction getValue_arrayElement( buffer, offset ) {\n\n\t\t\tbuffer[ offset ] = this.resolvedProperty[ this.propertyIndex ];\n\n\t\t},\n\n\t\tfunction getValue_toArray( buffer, offset ) {\n\n\t\t\tthis.resolvedProperty.toArray( buffer, offset );\n\n\t\t}\n\n\t],\n\n\tSetterByBindingTypeAndVersioning: [\n\n\t\t[\n\t\t\t// Direct\n\n\t\t\tfunction setValue_direct( buffer, offset ) {\n\n\t\t\t\tthis.targetObject[ this.propertyName ] = buffer[ offset ];\n\n\t\t\t},\n\n\t\t\tfunction setValue_direct_setNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.targetObject[ this.propertyName ] = buffer[ offset ];\n\t\t\t\tthis.targetObject.needsUpdate = true;\n\n\t\t\t},\n\n\t\t\tfunction setValue_direct_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.targetObject[ this.propertyName ] = buffer[ offset ];\n\t\t\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t\t\t}\n\n\t\t], [\n\n\t\t\t// EntireArray\n\n\t\t\tfunction setValue_array( buffer, offset ) {\n\n\t\t\t\tconst dest = this.resolvedProperty;\n\n\t\t\t\tfor ( let i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tfunction setValue_array_setNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tconst dest = this.resolvedProperty;\n\n\t\t\t\tfor ( let i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t\t\t}\n\n\t\t\t\tthis.targetObject.needsUpdate = true;\n\n\t\t\t},\n\n\t\t\tfunction setValue_array_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tconst dest = this.resolvedProperty;\n\n\t\t\t\tfor ( let i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t\t\t}\n\n\t\t\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t\t\t}\n\n\t\t], [\n\n\t\t\t// ArrayElement\n\n\t\t\tfunction setValue_arrayElement( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\n\t\t\t},\n\n\t\t\tfunction setValue_arrayElement_setNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\t\t\t\tthis.targetObject.needsUpdate = true;\n\n\t\t\t},\n\n\t\t\tfunction setValue_arrayElement_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\t\t\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t\t\t}\n\n\t\t], [\n\n\t\t\t// HasToFromArray\n\n\t\t\tfunction setValue_fromArray( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\n\t\t\t},\n\n\t\t\tfunction setValue_fromArray_setNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\t\t\t\tthis.targetObject.needsUpdate = true;\n\n\t\t\t},\n\n\t\t\tfunction setValue_fromArray_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\t\t\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t\t\t}\n\n\t\t]\n\n\t],\n\n\tgetValue: function getValue_unbound( targetArray, offset ) {\n\n\t\tthis.bind();\n\t\tthis.getValue( targetArray, offset );\n\n\t\t// Note: This class uses a State pattern on a per-method basis:\n\t\t// 'bind' sets 'this.getValue' / 'setValue' and shadows the\n\t\t// prototype version of these methods with one that represents\n\t\t// the bound state. When the property is not found, the methods\n\t\t// become no-ops.\n\n\t},\n\n\tsetValue: function getValue_unbound( sourceArray, offset ) {\n\n\t\tthis.bind();\n\t\tthis.setValue( sourceArray, offset );\n\n\t},\n\n\t// create getter / setter pair for a property in the scene graph\n\tbind: function () {\n\n\t\tlet targetObject = this.node;\n\t\tconst parsedPath = this.parsedPath;\n\n\t\tconst objectName = parsedPath.objectName;\n\t\tconst propertyName = parsedPath.propertyName;\n\t\tlet propertyIndex = parsedPath.propertyIndex;\n\n\t\tif ( ! targetObject ) {\n\n\t\t\ttargetObject = PropertyBinding.findNode( this.rootNode, parsedPath.nodeName ) || this.rootNode;\n\n\t\t\tthis.node = targetObject;\n\n\t\t}\n\n\t\t// set fail state so we can just 'return' on error\n\t\tthis.getValue = this._getValue_unavailable;\n\t\tthis.setValue = this._setValue_unavailable;\n\n\t\t// ensure there is a value node\n\t\tif ( ! targetObject ) {\n\n\t\t\tconsole.error( 'THREE.PropertyBinding: Trying to update node for track: ' + this.path + ' but it wasn\\'t found.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( objectName ) {\n\n\t\t\tlet objectIndex = parsedPath.objectIndex;\n\n\t\t\t// special cases were we need to reach deeper into the hierarchy to get the face materials....\n\t\t\tswitch ( objectName ) {\n\n\t\t\t\tcase 'materials':\n\n\t\t\t\t\tif ( ! targetObject.material ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to material as node does not have a material.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ! targetObject.material.materials ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to material.materials as node.material does not have a materials array.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttargetObject = targetObject.material.materials;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'bones':\n\n\t\t\t\t\tif ( ! targetObject.skeleton ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to bones as node does not have a skeleton.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// potential future optimization: skip this if propertyIndex is already an integer\n\t\t\t\t\t// and convert the integer string to a true integer.\n\n\t\t\t\t\ttargetObject = targetObject.skeleton.bones;\n\n\t\t\t\t\t// support resolving morphTarget names into indices.\n\t\t\t\t\tfor ( let i = 0; i < targetObject.length; i ++ ) {\n\n\t\t\t\t\t\tif ( targetObject[ i ].name === objectIndex ) {\n\n\t\t\t\t\t\t\tobjectIndex = i;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\n\t\t\t\t\tif ( targetObject[ objectName ] === undefined ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to objectName of node undefined.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttargetObject = targetObject[ objectName ];\n\n\t\t\t}\n\n\n\t\t\tif ( objectIndex !== undefined ) {\n\n\t\t\t\tif ( targetObject[ objectIndex ] === undefined ) {\n\n\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Trying to bind to objectIndex of objectName, but is undefined.', this, targetObject );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\ttargetObject = targetObject[ objectIndex ];\n\n\t\t\t}\n\n\t\t}\n\n\t\t// resolve property\n\t\tconst nodeProperty = targetObject[ propertyName ];\n\n\t\tif ( nodeProperty === undefined ) {\n\n\t\t\tconst nodeName = parsedPath.nodeName;\n\n\t\t\tconsole.error( 'THREE.PropertyBinding: Trying to update property for track: ' + nodeName +\n\t\t\t\t'.' + propertyName + ' but it wasn\\'t found.', targetObject );\n\t\t\treturn;\n\n\t\t}\n\n\t\t// determine versioning scheme\n\t\tlet versioning = this.Versioning.None;\n\n\t\tthis.targetObject = targetObject;\n\n\t\tif ( targetObject.needsUpdate !== undefined ) { // material\n\n\t\t\tversioning = this.Versioning.NeedsUpdate;\n\n\t\t} else if ( targetObject.matrixWorldNeedsUpdate !== undefined ) { // node transform\n\n\t\t\tversioning = this.Versioning.MatrixWorldNeedsUpdate;\n\n\t\t}\n\n\t\t// determine how the property gets bound\n\t\tlet bindingType = this.BindingType.Direct;\n\n\t\tif ( propertyIndex !== undefined ) {\n\n\t\t\t// access a sub element of the property array (only primitives are supported right now)\n\n\t\t\tif ( propertyName === \"morphTargetInfluences\" ) {\n\n\t\t\t\t// potential optimization, skip this if propertyIndex is already an integer, and convert the integer string to a true integer.\n\n\t\t\t\t// support resolving morphTarget names into indices.\n\t\t\t\tif ( ! targetObject.geometry ) {\n\n\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.', this );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tif ( targetObject.geometry.isBufferGeometry ) {\n\n\t\t\t\t\tif ( ! targetObject.geometry.morphAttributes ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphAttributes.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( targetObject.morphTargetDictionary[ propertyIndex ] !== undefined ) {\n\n\t\t\t\t\t\tpropertyIndex = targetObject.morphTargetDictionary[ propertyIndex ];\n\n\t\t\t\t\t}\n\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences on THREE.Geometry. Use THREE.BufferGeometry instead.', this );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tbindingType = this.BindingType.ArrayElement;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\t\t\tthis.propertyIndex = propertyIndex;\n\n\t\t} else if ( nodeProperty.fromArray !== undefined && nodeProperty.toArray !== undefined ) {\n\n\t\t\t// must use copy for Object3D.Euler/Quaternion\n\n\t\t\tbindingType = this.BindingType.HasFromToArray;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\n\t\t} else if ( Array.isArray( nodeProperty ) ) {\n\n\t\t\tbindingType = this.BindingType.EntireArray;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\n\t\t} else {\n\n\t\t\tthis.propertyName = propertyName;\n\n\t\t}\n\n\t\t// select getter / setter\n\t\tthis.getValue = this.GetterByBindingType[ bindingType ];\n\t\tthis.setValue = this.SetterByBindingTypeAndVersioning[ bindingType ][ versioning ];\n\n\t},\n\n\tunbind: function () {\n\n\t\tthis.node = null;\n\n\t\t// back to the prototype version of getValue / setValue\n\t\t// note: avoiding to mutate the shape of 'this' via 'delete'\n\t\tthis.getValue = this._getValue_unbound;\n\t\tthis.setValue = this._setValue_unbound;\n\n\t}\n\n} );\n\n// DECLARE ALIAS AFTER assign prototype\nObject.assign( PropertyBinding.prototype, {\n\n\t// initial state of these methods that calls 'bind'\n\t_getValue_unbound: PropertyBinding.prototype.getValue,\n\t_setValue_unbound: PropertyBinding.prototype.setValue,\n\n} );\n\n/**\n *\n * A group of objects that receives a shared animation state.\n *\n * Usage:\n *\n *  - Add objects you would otherwise pass as 'root' to the\n *    constructor or the .clipAction method of AnimationMixer.\n *\n *  - Instead pass this object as 'root'.\n *\n *  - You can also add and remove objects later when the mixer\n *    is running.\n *\n * Note:\n *\n *    Objects of this class appear as one object to the mixer,\n *    so cache control of the individual objects must be done\n *    on the group.\n *\n * Limitation:\n *\n *  - The animated properties must be compatible among the\n *    all objects in the group.\n *\n *  - A single property can either be controlled through a\n *    target group or directly, but not both.\n */\n\nfunction AnimationObjectGroup() {\n\n\tthis.uuid = MathUtils.generateUUID();\n\n\t// cached objects followed by the active ones\n\tthis._objects = Array.prototype.slice.call( arguments );\n\n\tthis.nCachedObjects_ = 0; // threshold\n\t// note: read by PropertyBinding.Composite\n\n\tconst indices = {};\n\tthis._indicesByUUID = indices; // for bookkeeping\n\n\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\tindices[ arguments[ i ].uuid ] = i;\n\n\t}\n\n\tthis._paths = []; // inside: string\n\tthis._parsedPaths = []; // inside: { we don't care, here }\n\tthis._bindings = []; // inside: Array< PropertyBinding >\n\tthis._bindingsIndicesByPath = {}; // inside: indices in these arrays\n\n\tconst scope = this;\n\n\tthis.stats = {\n\n\t\tobjects: {\n\t\t\tget total() {\n\n\t\t\t\treturn scope._objects.length;\n\n\t\t\t},\n\t\t\tget inUse() {\n\n\t\t\t\treturn this.total - scope.nCachedObjects_;\n\n\t\t\t}\n\t\t},\n\t\tget bindingsPerObject() {\n\n\t\t\treturn scope._bindings.length;\n\n\t\t}\n\n\t};\n\n}\n\nObject.assign( AnimationObjectGroup.prototype, {\n\n\tisAnimationObjectGroup: true,\n\n\tadd: function () {\n\n\t\tconst objects = this._objects,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tpaths = this._paths,\n\t\t\tparsedPaths = this._parsedPaths,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length;\n\n\t\tlet knownObject = undefined,\n\t\t\tnObjects = objects.length,\n\t\t\tnCachedObjects = this.nCachedObjects_;\n\n\t\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tconst object = arguments[ i ],\n\t\t\t\tuuid = object.uuid;\n\t\t\tlet index = indicesByUUID[ uuid ];\n\n\t\t\tif ( index === undefined ) {\n\n\t\t\t\t// unknown object -> add it to the ACTIVE region\n\n\t\t\t\tindex = nObjects ++;\n\t\t\t\tindicesByUUID[ uuid ] = index;\n\t\t\t\tobjects.push( object );\n\n\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tbindings[ j ].push( new PropertyBinding( object, paths[ j ], parsedPaths[ j ] ) );\n\n\t\t\t\t}\n\n\t\t\t} else if ( index < nCachedObjects ) {\n\n\t\t\t\tknownObject = objects[ index ];\n\n\t\t\t\t// move existing object to the ACTIVE region\n\n\t\t\t\tconst firstActiveIndex = -- nCachedObjects,\n\t\t\t\t\tlastCachedObject = objects[ firstActiveIndex ];\n\n\t\t\t\tindicesByUUID[ lastCachedObject.uuid ] = index;\n\t\t\t\tobjects[ index ] = lastCachedObject;\n\n\t\t\t\tindicesByUUID[ uuid ] = firstActiveIndex;\n\t\t\t\tobjects[ firstActiveIndex ] = object;\n\n\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tconst bindingsForPath = bindings[ j ],\n\t\t\t\t\t\tlastCached = bindingsForPath[ firstActiveIndex ];\n\n\t\t\t\t\tlet binding = bindingsForPath[ index ];\n\n\t\t\t\t\tbindingsForPath[ index ] = lastCached;\n\n\t\t\t\t\tif ( binding === undefined ) {\n\n\t\t\t\t\t\t// since we do not bother to create new bindings\n\t\t\t\t\t\t// for objects that are cached, the binding may\n\t\t\t\t\t\t// or may not exist\n\n\t\t\t\t\t\tbinding = new PropertyBinding( object, paths[ j ], parsedPaths[ j ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbindingsForPath[ firstActiveIndex ] = binding;\n\n\t\t\t\t}\n\n\t\t\t} else if ( objects[ index ] !== knownObject ) {\n\n\t\t\t\tconsole.error( 'THREE.AnimationObjectGroup: Different objects with the same UUID ' +\n\t\t\t\t\t'detected. Clean the caches or recreate your infrastructure when reloading scenes.' );\n\n\t\t\t} // else the object is already where we want it to be\n\n\t\t} // for arguments\n\n\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t},\n\n\tremove: function () {\n\n\t\tconst objects = this._objects,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length;\n\n\t\tlet nCachedObjects = this.nCachedObjects_;\n\n\t\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tconst object = arguments[ i ],\n\t\t\t\tuuid = object.uuid,\n\t\t\t\tindex = indicesByUUID[ uuid ];\n\n\t\t\tif ( index !== undefined && index >= nCachedObjects ) {\n\n\t\t\t\t// move existing object into the CACHED region\n\n\t\t\t\tconst lastCachedIndex = nCachedObjects ++,\n\t\t\t\t\tfirstActiveObject = objects[ lastCachedIndex ];\n\n\t\t\t\tindicesByUUID[ firstActiveObject.uuid ] = index;\n\t\t\t\tobjects[ index ] = firstActiveObject;\n\n\t\t\t\tindicesByUUID[ uuid ] = lastCachedIndex;\n\t\t\t\tobjects[ lastCachedIndex ] = object;\n\n\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tconst bindingsForPath = bindings[ j ],\n\t\t\t\t\t\tfirstActive = bindingsForPath[ lastCachedIndex ],\n\t\t\t\t\t\tbinding = bindingsForPath[ index ];\n\n\t\t\t\t\tbindingsForPath[ index ] = firstActive;\n\t\t\t\t\tbindingsForPath[ lastCachedIndex ] = binding;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} // for arguments\n\n\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t},\n\n\t// remove & forget\n\tuncache: function () {\n\n\t\tconst objects = this._objects,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length;\n\n\t\tlet nCachedObjects = this.nCachedObjects_,\n\t\t\tnObjects = objects.length;\n\n\t\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tconst object = arguments[ i ],\n\t\t\t\tuuid = object.uuid,\n\t\t\t\tindex = indicesByUUID[ uuid ];\n\n\t\t\tif ( index !== undefined ) {\n\n\t\t\t\tdelete indicesByUUID[ uuid ];\n\n\t\t\t\tif ( index < nCachedObjects ) {\n\n\t\t\t\t\t// object is cached, shrink the CACHED region\n\n\t\t\t\t\tconst firstActiveIndex = -- nCachedObjects,\n\t\t\t\t\t\tlastCachedObject = objects[ firstActiveIndex ],\n\t\t\t\t\t\tlastIndex = -- nObjects,\n\t\t\t\t\t\tlastObject = objects[ lastIndex ];\n\n\t\t\t\t\t// last cached object takes this object's place\n\t\t\t\t\tindicesByUUID[ lastCachedObject.uuid ] = index;\n\t\t\t\t\tobjects[ index ] = lastCachedObject;\n\n\t\t\t\t\t// last object goes to the activated slot and pop\n\t\t\t\t\tindicesByUUID[ lastObject.uuid ] = firstActiveIndex;\n\t\t\t\t\tobjects[ firstActiveIndex ] = lastObject;\n\t\t\t\t\tobjects.pop();\n\n\t\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\t\tconst bindingsForPath = bindings[ j ],\n\t\t\t\t\t\t\tlastCached = bindingsForPath[ firstActiveIndex ],\n\t\t\t\t\t\t\tlast = bindingsForPath[ lastIndex ];\n\n\t\t\t\t\t\tbindingsForPath[ index ] = lastCached;\n\t\t\t\t\t\tbindingsForPath[ firstActiveIndex ] = last;\n\t\t\t\t\t\tbindingsForPath.pop();\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// object is active, just swap with the last and pop\n\n\t\t\t\t\tconst lastIndex = -- nObjects,\n\t\t\t\t\t\tlastObject = objects[ lastIndex ];\n\n\t\t\t\t\tindicesByUUID[ lastObject.uuid ] = index;\n\t\t\t\t\tobjects[ index ] = lastObject;\n\t\t\t\t\tobjects.pop();\n\n\t\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\t\tconst bindingsForPath = bindings[ j ];\n\n\t\t\t\t\t\tbindingsForPath[ index ] = bindingsForPath[ lastIndex ];\n\t\t\t\t\t\tbindingsForPath.pop();\n\n\t\t\t\t\t}\n\n\t\t\t\t} // cached or active\n\n\t\t\t} // if object is known\n\n\t\t} // for arguments\n\n\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t},\n\n\t// Internal interface used by befriended PropertyBinding.Composite:\n\n\tsubscribe_: function ( path, parsedPath ) {\n\n\t\t// returns an array of bindings for the given path that is changed\n\t\t// according to the contained objects in the group\n\n\t\tconst indicesByPath = this._bindingsIndicesByPath;\n\t\tlet index = indicesByPath[ path ];\n\t\tconst bindings = this._bindings;\n\n\t\tif ( index !== undefined ) return bindings[ index ];\n\n\t\tconst paths = this._paths,\n\t\t\tparsedPaths = this._parsedPaths,\n\t\t\tobjects = this._objects,\n\t\t\tnObjects = objects.length,\n\t\t\tnCachedObjects = this.nCachedObjects_,\n\t\t\tbindingsForPath = new Array( nObjects );\n\n\t\tindex = bindings.length;\n\n\t\tindicesByPath[ path ] = index;\n\n\t\tpaths.push( path );\n\t\tparsedPaths.push( parsedPath );\n\t\tbindings.push( bindingsForPath );\n\n\t\tfor ( let i = nCachedObjects, n = objects.length; i !== n; ++ i ) {\n\n\t\t\tconst object = objects[ i ];\n\t\t\tbindingsForPath[ i ] = new PropertyBinding( object, path, parsedPath );\n\n\t\t}\n\n\t\treturn bindingsForPath;\n\n\t},\n\n\tunsubscribe_: function ( path ) {\n\n\t\t// tells the group to forget about a property path and no longer\n\t\t// update the array previously obtained with 'subscribe_'\n\n\t\tconst indicesByPath = this._bindingsIndicesByPath,\n\t\t\tindex = indicesByPath[ path ];\n\n\t\tif ( index !== undefined ) {\n\n\t\t\tconst paths = this._paths,\n\t\t\t\tparsedPaths = this._parsedPaths,\n\t\t\t\tbindings = this._bindings,\n\t\t\t\tlastBindingsIndex = bindings.length - 1,\n\t\t\t\tlastBindings = bindings[ lastBindingsIndex ],\n\t\t\t\tlastBindingsPath = path[ lastBindingsIndex ];\n\n\t\t\tindicesByPath[ lastBindingsPath ] = index;\n\n\t\t\tbindings[ index ] = lastBindings;\n\t\t\tbindings.pop();\n\n\t\t\tparsedPaths[ index ] = parsedPaths[ lastBindingsIndex ];\n\t\t\tparsedPaths.pop();\n\n\t\t\tpaths[ index ] = paths[ lastBindingsIndex ];\n\t\t\tpaths.pop();\n\n\t\t}\n\n\t}\n\n} );\n\nclass AnimationAction {\n\n\tconstructor( mixer, clip, localRoot, blendMode ) {\n\n\t\tthis._mixer = mixer;\n\t\tthis._clip = clip;\n\t\tthis._localRoot = localRoot || null;\n\t\tthis.blendMode = blendMode || clip.blendMode;\n\n\t\tconst tracks = clip.tracks,\n\t\t\tnTracks = tracks.length,\n\t\t\tinterpolants = new Array( nTracks );\n\n\t\tconst interpolantSettings = {\n\t\t\tendingStart: ZeroCurvatureEnding,\n\t\t\tendingEnd: ZeroCurvatureEnding\n\t\t};\n\n\t\tfor ( let i = 0; i !== nTracks; ++ i ) {\n\n\t\t\tconst interpolant = tracks[ i ].createInterpolant( null );\n\t\t\tinterpolants[ i ] = interpolant;\n\t\t\tinterpolant.settings = interpolantSettings;\n\n\t\t}\n\n\t\tthis._interpolantSettings = interpolantSettings;\n\n\t\tthis._interpolants = interpolants; // bound by the mixer\n\n\t\t// inside: PropertyMixer (managed by the mixer)\n\t\tthis._propertyBindings = new Array( nTracks );\n\n\t\tthis._cacheIndex = null; // for the memory manager\n\t\tthis._byClipCacheIndex = null; // for the memory manager\n\n\t\tthis._timeScaleInterpolant = null;\n\t\tthis._weightInterpolant = null;\n\n\t\tthis.loop = LoopRepeat;\n\t\tthis._loopCount = - 1;\n\n\t\t// global mixer time when the action is to be started\n\t\t// it's set back to 'null' upon start of the action\n\t\tthis._startTime = null;\n\n\t\t// scaled local time of the action\n\t\t// gets clamped or wrapped to 0..clip.duration according to loop\n\t\tthis.time = 0;\n\n\t\tthis.timeScale = 1;\n\t\tthis._effectiveTimeScale = 1;\n\n\t\tthis.weight = 1;\n\t\tthis._effectiveWeight = 1;\n\n\t\tthis.repetitions = Infinity; // no. of repetitions when looping\n\n\t\tthis.paused = false; // true -> zero effective time scale\n\t\tthis.enabled = true; // false -> zero effective weight\n\n\t\tthis.clampWhenFinished = false;// keep feeding the last frame?\n\n\t\tthis.zeroSlopeAtStart = true;// for smooth interpolation w/o separate\n\t\tthis.zeroSlopeAtEnd = true;// clips for start, loop and end\n\n\t}\n\n\t// State & Scheduling\n\n\tplay() {\n\n\t\tthis._mixer._activateAction( this );\n\n\t\treturn this;\n\n\t}\n\n\tstop() {\n\n\t\tthis._mixer._deactivateAction( this );\n\n\t\treturn this.reset();\n\n\t}\n\n\treset() {\n\n\t\tthis.paused = false;\n\t\tthis.enabled = true;\n\n\t\tthis.time = 0; // restart clip\n\t\tthis._loopCount = - 1;// forget previous loops\n\t\tthis._startTime = null;// forget scheduling\n\n\t\treturn this.stopFading().stopWarping();\n\n\t}\n\n\tisRunning() {\n\n\t\treturn this.enabled && ! this.paused && this.timeScale !== 0 &&\n\t\t\tthis._startTime === null && this._mixer._isActiveAction( this );\n\n\t}\n\n\t// return true when play has been called\n\tisScheduled() {\n\n\t\treturn this._mixer._isActiveAction( this );\n\n\t}\n\n\tstartAt( time ) {\n\n\t\tthis._startTime = time;\n\n\t\treturn this;\n\n\t}\n\n\tsetLoop( mode, repetitions ) {\n\n\t\tthis.loop = mode;\n\t\tthis.repetitions = repetitions;\n\n\t\treturn this;\n\n\t}\n\n\t// Weight\n\n\t// set the weight stopping any scheduled fading\n\t// although .enabled = false yields an effective weight of zero, this\n\t// method does *not* change .enabled, because it would be confusing\n\tsetEffectiveWeight( weight ) {\n\n\t\tthis.weight = weight;\n\n\t\t// note: same logic as when updated at runtime\n\t\tthis._effectiveWeight = this.enabled ? weight : 0;\n\n\t\treturn this.stopFading();\n\n\t}\n\n\t// return the weight considering fading and .enabled\n\tgetEffectiveWeight() {\n\n\t\treturn this._effectiveWeight;\n\n\t}\n\n\tfadeIn( duration ) {\n\n\t\treturn this._scheduleFading( duration, 0, 1 );\n\n\t}\n\n\tfadeOut( duration ) {\n\n\t\treturn this._scheduleFading( duration, 1, 0 );\n\n\t}\n\n\tcrossFadeFrom( fadeOutAction, duration, warp ) {\n\n\t\tfadeOutAction.fadeOut( duration );\n\t\tthis.fadeIn( duration );\n\n\t\tif ( warp ) {\n\n\t\t\tconst fadeInDuration = this._clip.duration,\n\t\t\t\tfadeOutDuration = fadeOutAction._clip.duration,\n\n\t\t\t\tstartEndRatio = fadeOutDuration / fadeInDuration,\n\t\t\t\tendStartRatio = fadeInDuration / fadeOutDuration;\n\n\t\t\tfadeOutAction.warp( 1.0, startEndRatio, duration );\n\t\t\tthis.warp( endStartRatio, 1.0, duration );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tcrossFadeTo( fadeInAction, duration, warp ) {\n\n\t\treturn fadeInAction.crossFadeFrom( this, duration, warp );\n\n\t}\n\n\tstopFading() {\n\n\t\tconst weightInterpolant = this._weightInterpolant;\n\n\t\tif ( weightInterpolant !== null ) {\n\n\t\t\tthis._weightInterpolant = null;\n\t\t\tthis._mixer._takeBackControlInterpolant( weightInterpolant );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// Time Scale Control\n\n\t// set the time scale stopping any scheduled warping\n\t// although .paused = true yields an effective time scale of zero, this\n\t// method does *not* change .paused, because it would be confusing\n\tsetEffectiveTimeScale( timeScale ) {\n\n\t\tthis.timeScale = timeScale;\n\t\tthis._effectiveTimeScale = this.paused ? 0 : timeScale;\n\n\t\treturn this.stopWarping();\n\n\t}\n\n\t// return the time scale considering warping and .paused\n\tgetEffectiveTimeScale() {\n\n\t\treturn this._effectiveTimeScale;\n\n\t}\n\n\tsetDuration( duration ) {\n\n\t\tthis.timeScale = this._clip.duration / duration;\n\n\t\treturn this.stopWarping();\n\n\t}\n\n\tsyncWith( action ) {\n\n\t\tthis.time = action.time;\n\t\tthis.timeScale = action.timeScale;\n\n\t\treturn this.stopWarping();\n\n\t}\n\n\thalt( duration ) {\n\n\t\treturn this.warp( this._effectiveTimeScale, 0, duration );\n\n\t}\n\n\twarp( startTimeScale, endTimeScale, duration ) {\n\n\t\tconst mixer = this._mixer,\n\t\t\tnow = mixer.time,\n\t\t\ttimeScale = this.timeScale;\n\n\t\tlet interpolant = this._timeScaleInterpolant;\n\n\t\tif ( interpolant === null ) {\n\n\t\t\tinterpolant = mixer._lendControlInterpolant();\n\t\t\tthis._timeScaleInterpolant = interpolant;\n\n\t\t}\n\n\t\tconst times = interpolant.parameterPositions,\n\t\t\tvalues = interpolant.sampleValues;\n\n\t\ttimes[ 0 ] = now;\n\t\ttimes[ 1 ] = now + duration;\n\n\t\tvalues[ 0 ] = startTimeScale / timeScale;\n\t\tvalues[ 1 ] = endTimeScale / timeScale;\n\n\t\treturn this;\n\n\t}\n\n\tstopWarping() {\n\n\t\tconst timeScaleInterpolant = this._timeScaleInterpolant;\n\n\t\tif ( timeScaleInterpolant !== null ) {\n\n\t\t\tthis._timeScaleInterpolant = null;\n\t\t\tthis._mixer._takeBackControlInterpolant( timeScaleInterpolant );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// Object Accessors\n\n\tgetMixer() {\n\n\t\treturn this._mixer;\n\n\t}\n\n\tgetClip() {\n\n\t\treturn this._clip;\n\n\t}\n\n\tgetRoot() {\n\n\t\treturn this._localRoot || this._mixer._root;\n\n\t}\n\n\t// Interna\n\n\t_update( time, deltaTime, timeDirection, accuIndex ) {\n\n\t\t// called by the mixer\n\n\t\tif ( ! this.enabled ) {\n\n\t\t\t// call ._updateWeight() to update ._effectiveWeight\n\n\t\t\tthis._updateWeight( time );\n\t\t\treturn;\n\n\t\t}\n\n\t\tconst startTime = this._startTime;\n\n\t\tif ( startTime !== null ) {\n\n\t\t\t// check for scheduled start of action\n\n\t\t\tconst timeRunning = ( time - startTime ) * timeDirection;\n\t\t\tif ( timeRunning < 0 || timeDirection === 0 ) {\n\n\t\t\t\treturn; // yet to come / don't decide when delta = 0\n\n\t\t\t}\n\n\t\t\t// start\n\n\t\t\tthis._startTime = null; // unschedule\n\t\t\tdeltaTime = timeDirection * timeRunning;\n\n\t\t}\n\n\t\t// apply time scale and advance time\n\n\t\tdeltaTime *= this._updateTimeScale( time );\n\t\tconst clipTime = this._updateTime( deltaTime );\n\n\t\t// note: _updateTime may disable the action resulting in\n\t\t// an effective weight of 0\n\n\t\tconst weight = this._updateWeight( time );\n\n\t\tif ( weight > 0 ) {\n\n\t\t\tconst interpolants = this._interpolants;\n\t\t\tconst propertyMixers = this._propertyBindings;\n\n\t\t\tswitch ( this.blendMode ) {\n\n\t\t\t\tcase AdditiveAnimationBlendMode:\n\n\t\t\t\t\tfor ( let j = 0, m = interpolants.length; j !== m; ++ j ) {\n\n\t\t\t\t\t\tinterpolants[ j ].evaluate( clipTime );\n\t\t\t\t\t\tpropertyMixers[ j ].accumulateAdditive( weight );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase NormalAnimationBlendMode:\n\t\t\t\tdefault:\n\n\t\t\t\t\tfor ( let j = 0, m = interpolants.length; j !== m; ++ j ) {\n\n\t\t\t\t\t\tinterpolants[ j ].evaluate( clipTime );\n\t\t\t\t\t\tpropertyMixers[ j ].accumulate( accuIndex, weight );\n\n\t\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t_updateWeight( time ) {\n\n\t\tlet weight = 0;\n\n\t\tif ( this.enabled ) {\n\n\t\t\tweight = this.weight;\n\t\t\tconst interpolant = this._weightInterpolant;\n\n\t\t\tif ( interpolant !== null ) {\n\n\t\t\t\tconst interpolantValue = interpolant.evaluate( time )[ 0 ];\n\n\t\t\t\tweight *= interpolantValue;\n\n\t\t\t\tif ( time > interpolant.parameterPositions[ 1 ] ) {\n\n\t\t\t\t\tthis.stopFading();\n\n\t\t\t\t\tif ( interpolantValue === 0 ) {\n\n\t\t\t\t\t\t// faded out, disable\n\t\t\t\t\t\tthis.enabled = false;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis._effectiveWeight = weight;\n\t\treturn weight;\n\n\t}\n\n\t_updateTimeScale( time ) {\n\n\t\tlet timeScale = 0;\n\n\t\tif ( ! this.paused ) {\n\n\t\t\ttimeScale = this.timeScale;\n\n\t\t\tconst interpolant = this._timeScaleInterpolant;\n\n\t\t\tif ( interpolant !== null ) {\n\n\t\t\t\tconst interpolantValue = interpolant.evaluate( time )[ 0 ];\n\n\t\t\t\ttimeScale *= interpolantValue;\n\n\t\t\t\tif ( time > interpolant.parameterPositions[ 1 ] ) {\n\n\t\t\t\t\tthis.stopWarping();\n\n\t\t\t\t\tif ( timeScale === 0 ) {\n\n\t\t\t\t\t\t// motion has halted, pause\n\t\t\t\t\t\tthis.paused = true;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// warp done - apply final time scale\n\t\t\t\t\t\tthis.timeScale = timeScale;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis._effectiveTimeScale = timeScale;\n\t\treturn timeScale;\n\n\t}\n\n\t_updateTime( deltaTime ) {\n\n\t\tconst duration = this._clip.duration;\n\t\tconst loop = this.loop;\n\n\t\tlet time = this.time + deltaTime;\n\t\tlet loopCount = this._loopCount;\n\n\t\tconst pingPong = ( loop === LoopPingPong );\n\n\t\tif ( deltaTime === 0 ) {\n\n\t\t\tif ( loopCount === - 1 ) return time;\n\n\t\t\treturn ( pingPong && ( loopCount & 1 ) === 1 ) ? duration - time : time;\n\n\t\t}\n\n\t\tif ( loop === LoopOnce ) {\n\n\t\t\tif ( loopCount === - 1 ) {\n\n\t\t\t\t// just started\n\n\t\t\t\tthis._loopCount = 0;\n\t\t\t\tthis._setEndings( true, true, false );\n\n\t\t\t}\n\n\t\t\thandle_stop: {\n\n\t\t\t\tif ( time >= duration ) {\n\n\t\t\t\t\ttime = duration;\n\n\t\t\t\t} else if ( time < 0 ) {\n\n\t\t\t\t\ttime = 0;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis.time = time;\n\n\t\t\t\t\tbreak handle_stop;\n\n\t\t\t\t}\n\n\t\t\t\tif ( this.clampWhenFinished ) this.paused = true;\n\t\t\t\telse this.enabled = false;\n\n\t\t\t\tthis.time = time;\n\n\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\ttype: 'finished', action: this,\n\t\t\t\t\tdirection: deltaTime < 0 ? - 1 : 1\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t} else { // repetitive Repeat or PingPong\n\n\t\t\tif ( loopCount === - 1 ) {\n\n\t\t\t\t// just started\n\n\t\t\t\tif ( deltaTime >= 0 ) {\n\n\t\t\t\t\tloopCount = 0;\n\n\t\t\t\t\tthis._setEndings( true, this.repetitions === 0, pingPong );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// when looping in reverse direction, the initial\n\t\t\t\t\t// transition through zero counts as a repetition,\n\t\t\t\t\t// so leave loopCount at -1\n\n\t\t\t\t\tthis._setEndings( this.repetitions === 0, true, pingPong );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( time >= duration || time < 0 ) {\n\n\t\t\t\t// wrap around\n\n\t\t\t\tconst loopDelta = Math.floor( time / duration ); // signed\n\t\t\t\ttime -= duration * loopDelta;\n\n\t\t\t\tloopCount += Math.abs( loopDelta );\n\n\t\t\t\tconst pending = this.repetitions - loopCount;\n\n\t\t\t\tif ( pending <= 0 ) {\n\n\t\t\t\t\t// have to stop (switch state, clamp time, fire event)\n\n\t\t\t\t\tif ( this.clampWhenFinished ) this.paused = true;\n\t\t\t\t\telse this.enabled = false;\n\n\t\t\t\t\ttime = deltaTime > 0 ? duration : 0;\n\n\t\t\t\t\tthis.time = time;\n\n\t\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\t\ttype: 'finished', action: this,\n\t\t\t\t\t\tdirection: deltaTime > 0 ? 1 : - 1\n\t\t\t\t\t} );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// keep running\n\n\t\t\t\t\tif ( pending === 1 ) {\n\n\t\t\t\t\t\t// entering the last round\n\n\t\t\t\t\t\tconst atStart = deltaTime < 0;\n\t\t\t\t\t\tthis._setEndings( atStart, ! atStart, pingPong );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tthis._setEndings( false, false, pingPong );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tthis._loopCount = loopCount;\n\n\t\t\t\t\tthis.time = time;\n\n\t\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\t\ttype: 'loop', action: this, loopDelta: loopDelta\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tthis.time = time;\n\n\t\t\t}\n\n\t\t\tif ( pingPong && ( loopCount & 1 ) === 1 ) {\n\n\t\t\t\t// invert time for the \"pong round\"\n\n\t\t\t\treturn duration - time;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn time;\n\n\t}\n\n\t_setEndings( atStart, atEnd, pingPong ) {\n\n\t\tconst settings = this._interpolantSettings;\n\n\t\tif ( pingPong ) {\n\n\t\t\tsettings.endingStart = ZeroSlopeEnding;\n\t\t\tsettings.endingEnd = ZeroSlopeEnding;\n\n\t\t} else {\n\n\t\t\t// assuming for LoopOnce atStart == atEnd == true\n\n\t\t\tif ( atStart ) {\n\n\t\t\t\tsettings.endingStart = this.zeroSlopeAtStart ? ZeroSlopeEnding : ZeroCurvatureEnding;\n\n\t\t\t} else {\n\n\t\t\t\tsettings.endingStart = WrapAroundEnding;\n\n\t\t\t}\n\n\t\t\tif ( atEnd ) {\n\n\t\t\t\tsettings.endingEnd = this.zeroSlopeAtEnd ? ZeroSlopeEnding : ZeroCurvatureEnding;\n\n\t\t\t} else {\n\n\t\t\t\tsettings.endingEnd \t = WrapAroundEnding;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t_scheduleFading( duration, weightNow, weightThen ) {\n\n\t\tconst mixer = this._mixer, now = mixer.time;\n\t\tlet interpolant = this._weightInterpolant;\n\n\t\tif ( interpolant === null ) {\n\n\t\t\tinterpolant = mixer._lendControlInterpolant();\n\t\t\tthis._weightInterpolant = interpolant;\n\n\t\t}\n\n\t\tconst times = interpolant.parameterPositions,\n\t\t\tvalues = interpolant.sampleValues;\n\n\t\ttimes[ 0 ] = now;\n\t\tvalues[ 0 ] = weightNow;\n\t\ttimes[ 1 ] = now + duration;\n\t\tvalues[ 1 ] = weightThen;\n\n\t\treturn this;\n\n\t}\n\n}\n\nfunction AnimationMixer( root ) {\n\n\tthis._root = root;\n\tthis._initMemoryManager();\n\tthis._accuIndex = 0;\n\n\tthis.time = 0;\n\n\tthis.timeScale = 1.0;\n\n}\n\nAnimationMixer.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: AnimationMixer,\n\n\t_bindAction: function ( action, prototypeAction ) {\n\n\t\tconst root = action._localRoot || this._root,\n\t\t\ttracks = action._clip.tracks,\n\t\t\tnTracks = tracks.length,\n\t\t\tbindings = action._propertyBindings,\n\t\t\tinterpolants = action._interpolants,\n\t\t\trootUuid = root.uuid,\n\t\t\tbindingsByRoot = this._bindingsByRootAndName;\n\n\t\tlet bindingsByName = bindingsByRoot[ rootUuid ];\n\n\t\tif ( bindingsByName === undefined ) {\n\n\t\t\tbindingsByName = {};\n\t\t\tbindingsByRoot[ rootUuid ] = bindingsByName;\n\n\t\t}\n\n\t\tfor ( let i = 0; i !== nTracks; ++ i ) {\n\n\t\t\tconst track = tracks[ i ],\n\t\t\t\ttrackName = track.name;\n\n\t\t\tlet binding = bindingsByName[ trackName ];\n\n\t\t\tif ( binding !== undefined ) {\n\n\t\t\t\tbindings[ i ] = binding;\n\n\t\t\t} else {\n\n\t\t\t\tbinding = bindings[ i ];\n\n\t\t\t\tif ( binding !== undefined ) {\n\n\t\t\t\t\t// existing binding, make sure the cache knows\n\n\t\t\t\t\tif ( binding._cacheIndex === null ) {\n\n\t\t\t\t\t\t++ binding.referenceCount;\n\t\t\t\t\t\tthis._addInactiveBinding( binding, rootUuid, trackName );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tcontinue;\n\n\t\t\t\t}\n\n\t\t\t\tconst path = prototypeAction && prototypeAction.\n\t\t\t\t\t_propertyBindings[ i ].binding.parsedPath;\n\n\t\t\t\tbinding = new PropertyMixer(\n\t\t\t\t\tPropertyBinding.create( root, trackName, path ),\n\t\t\t\t\ttrack.ValueTypeName, track.getValueSize() );\n\n\t\t\t\t++ binding.referenceCount;\n\t\t\t\tthis._addInactiveBinding( binding, rootUuid, trackName );\n\n\t\t\t\tbindings[ i ] = binding;\n\n\t\t\t}\n\n\t\t\tinterpolants[ i ].resultBuffer = binding.buffer;\n\n\t\t}\n\n\t},\n\n\t_activateAction: function ( action ) {\n\n\t\tif ( ! this._isActiveAction( action ) ) {\n\n\t\t\tif ( action._cacheIndex === null ) {\n\n\t\t\t\t// this action has been forgotten by the cache, but the user\n\t\t\t\t// appears to be still using it -> rebind\n\n\t\t\t\tconst rootUuid = ( action._localRoot || this._root ).uuid,\n\t\t\t\t\tclipUuid = action._clip.uuid,\n\t\t\t\t\tactionsForClip = this._actionsByClip[ clipUuid ];\n\n\t\t\t\tthis._bindAction( action,\n\t\t\t\t\tactionsForClip && actionsForClip.knownActions[ 0 ] );\n\n\t\t\t\tthis._addInactiveAction( action, clipUuid, rootUuid );\n\n\t\t\t}\n\n\t\t\tconst bindings = action._propertyBindings;\n\n\t\t\t// increment reference counts / sort out state\n\t\t\tfor ( let i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\t\tconst binding = bindings[ i ];\n\n\t\t\t\tif ( binding.useCount ++ === 0 ) {\n\n\t\t\t\t\tthis._lendBinding( binding );\n\t\t\t\t\tbinding.saveOriginalState();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis._lendAction( action );\n\n\t\t}\n\n\t},\n\n\t_deactivateAction: function ( action ) {\n\n\t\tif ( this._isActiveAction( action ) ) {\n\n\t\t\tconst bindings = action._propertyBindings;\n\n\t\t\t// decrement reference counts / sort out state\n\t\t\tfor ( let i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\t\tconst binding = bindings[ i ];\n\n\t\t\t\tif ( -- binding.useCount === 0 ) {\n\n\t\t\t\t\tbinding.restoreOriginalState();\n\t\t\t\t\tthis._takeBackBinding( binding );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis._takeBackAction( action );\n\n\t\t}\n\n\t},\n\n\t// Memory manager\n\n\t_initMemoryManager: function () {\n\n\t\tthis._actions = []; // 'nActiveActions' followed by inactive ones\n\t\tthis._nActiveActions = 0;\n\n\t\tthis._actionsByClip = {};\n\t\t// inside:\n\t\t// {\n\t\t// \tknownActions: Array< AnimationAction > - used as prototypes\n\t\t// \tactionByRoot: AnimationAction - lookup\n\t\t// }\n\n\n\t\tthis._bindings = []; // 'nActiveBindings' followed by inactive ones\n\t\tthis._nActiveBindings = 0;\n\n\t\tthis._bindingsByRootAndName = {}; // inside: Map< name, PropertyMixer >\n\n\n\t\tthis._controlInterpolants = []; // same game as above\n\t\tthis._nActiveControlInterpolants = 0;\n\n\t\tconst scope = this;\n\n\t\tthis.stats = {\n\n\t\t\tactions: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._actions.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn scope._nActiveActions;\n\n\t\t\t\t}\n\t\t\t},\n\t\t\tbindings: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._bindings.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn scope._nActiveBindings;\n\n\t\t\t\t}\n\t\t\t},\n\t\t\tcontrolInterpolants: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._controlInterpolants.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn scope._nActiveControlInterpolants;\n\n\t\t\t\t}\n\t\t\t}\n\n\t\t};\n\n\t},\n\n\t// Memory management for AnimationAction objects\n\n\t_isActiveAction: function ( action ) {\n\n\t\tconst index = action._cacheIndex;\n\t\treturn index !== null && index < this._nActiveActions;\n\n\t},\n\n\t_addInactiveAction: function ( action, clipUuid, rootUuid ) {\n\n\t\tconst actions = this._actions,\n\t\t\tactionsByClip = this._actionsByClip;\n\n\t\tlet actionsForClip = actionsByClip[ clipUuid ];\n\n\t\tif ( actionsForClip === undefined ) {\n\n\t\t\tactionsForClip = {\n\n\t\t\t\tknownActions: [ action ],\n\t\t\t\tactionByRoot: {}\n\n\t\t\t};\n\n\t\t\taction._byClipCacheIndex = 0;\n\n\t\t\tactionsByClip[ clipUuid ] = actionsForClip;\n\n\t\t} else {\n\n\t\t\tconst knownActions = actionsForClip.knownActions;\n\n\t\t\taction._byClipCacheIndex = knownActions.length;\n\t\t\tknownActions.push( action );\n\n\t\t}\n\n\t\taction._cacheIndex = actions.length;\n\t\tactions.push( action );\n\n\t\tactionsForClip.actionByRoot[ rootUuid ] = action;\n\n\t},\n\n\t_removeInactiveAction: function ( action ) {\n\n\t\tconst actions = this._actions,\n\t\t\tlastInactiveAction = actions[ actions.length - 1 ],\n\t\t\tcacheIndex = action._cacheIndex;\n\n\t\tlastInactiveAction._cacheIndex = cacheIndex;\n\t\tactions[ cacheIndex ] = lastInactiveAction;\n\t\tactions.pop();\n\n\t\taction._cacheIndex = null;\n\n\n\t\tconst clipUuid = action._clip.uuid,\n\t\t\tactionsByClip = this._actionsByClip,\n\t\t\tactionsForClip = actionsByClip[ clipUuid ],\n\t\t\tknownActionsForClip = actionsForClip.knownActions,\n\n\t\t\tlastKnownAction =\n\t\t\t\tknownActionsForClip[ knownActionsForClip.length - 1 ],\n\n\t\t\tbyClipCacheIndex = action._byClipCacheIndex;\n\n\t\tlastKnownAction._byClipCacheIndex = byClipCacheIndex;\n\t\tknownActionsForClip[ byClipCacheIndex ] = lastKnownAction;\n\t\tknownActionsForClip.pop();\n\n\t\taction._byClipCacheIndex = null;\n\n\n\t\tconst actionByRoot = actionsForClip.actionByRoot,\n\t\t\trootUuid = ( action._localRoot || this._root ).uuid;\n\n\t\tdelete actionByRoot[ rootUuid ];\n\n\t\tif ( knownActionsForClip.length === 0 ) {\n\n\t\t\tdelete actionsByClip[ clipUuid ];\n\n\t\t}\n\n\t\tthis._removeInactiveBindingsForAction( action );\n\n\t},\n\n\t_removeInactiveBindingsForAction: function ( action ) {\n\n\t\tconst bindings = action._propertyBindings;\n\n\t\tfor ( let i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tconst binding = bindings[ i ];\n\n\t\t\tif ( -- binding.referenceCount === 0 ) {\n\n\t\t\t\tthis._removeInactiveBinding( binding );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t_lendAction: function ( action ) {\n\n\t\t// [ active actions |  inactive actions  ]\n\t\t// [  active actions >| inactive actions ]\n\t\t//                 s        a\n\t\t//                  <-swap->\n\t\t//                 a        s\n\n\t\tconst actions = this._actions,\n\t\t\tprevIndex = action._cacheIndex,\n\n\t\t\tlastActiveIndex = this._nActiveActions ++,\n\n\t\t\tfirstInactiveAction = actions[ lastActiveIndex ];\n\n\t\taction._cacheIndex = lastActiveIndex;\n\t\tactions[ lastActiveIndex ] = action;\n\n\t\tfirstInactiveAction._cacheIndex = prevIndex;\n\t\tactions[ prevIndex ] = firstInactiveAction;\n\n\t},\n\n\t_takeBackAction: function ( action ) {\n\n\t\t// [  active actions  | inactive actions ]\n\t\t// [ active actions |< inactive actions  ]\n\t\t//        a        s\n\t\t//         <-swap->\n\t\t//        s        a\n\n\t\tconst actions = this._actions,\n\t\t\tprevIndex = action._cacheIndex,\n\n\t\t\tfirstInactiveIndex = -- this._nActiveActions,\n\n\t\t\tlastActiveAction = actions[ firstInactiveIndex ];\n\n\t\taction._cacheIndex = firstInactiveIndex;\n\t\tactions[ firstInactiveIndex ] = action;\n\n\t\tlastActiveAction._cacheIndex = prevIndex;\n\t\tactions[ prevIndex ] = lastActiveAction;\n\n\t},\n\n\t// Memory management for PropertyMixer objects\n\n\t_addInactiveBinding: function ( binding, rootUuid, trackName ) {\n\n\t\tconst bindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindings = this._bindings;\n\n\t\tlet bindingByName = bindingsByRoot[ rootUuid ];\n\n\t\tif ( bindingByName === undefined ) {\n\n\t\t\tbindingByName = {};\n\t\t\tbindingsByRoot[ rootUuid ] = bindingByName;\n\n\t\t}\n\n\t\tbindingByName[ trackName ] = binding;\n\n\t\tbinding._cacheIndex = bindings.length;\n\t\tbindings.push( binding );\n\n\t},\n\n\t_removeInactiveBinding: function ( binding ) {\n\n\t\tconst bindings = this._bindings,\n\t\t\tpropBinding = binding.binding,\n\t\t\trootUuid = propBinding.rootNode.uuid,\n\t\t\ttrackName = propBinding.path,\n\t\t\tbindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindingByName = bindingsByRoot[ rootUuid ],\n\n\t\t\tlastInactiveBinding = bindings[ bindings.length - 1 ],\n\t\t\tcacheIndex = binding._cacheIndex;\n\n\t\tlastInactiveBinding._cacheIndex = cacheIndex;\n\t\tbindings[ cacheIndex ] = lastInactiveBinding;\n\t\tbindings.pop();\n\n\t\tdelete bindingByName[ trackName ];\n\n\t\tif ( Object.keys( bindingByName ).length === 0 ) {\n\n\t\t\tdelete bindingsByRoot[ rootUuid ];\n\n\t\t}\n\n\t},\n\n\t_lendBinding: function ( binding ) {\n\n\t\tconst bindings = this._bindings,\n\t\t\tprevIndex = binding._cacheIndex,\n\n\t\t\tlastActiveIndex = this._nActiveBindings ++,\n\n\t\t\tfirstInactiveBinding = bindings[ lastActiveIndex ];\n\n\t\tbinding._cacheIndex = lastActiveIndex;\n\t\tbindings[ lastActiveIndex ] = binding;\n\n\t\tfirstInactiveBinding._cacheIndex = prevIndex;\n\t\tbindings[ prevIndex ] = firstInactiveBinding;\n\n\t},\n\n\t_takeBackBinding: function ( binding ) {\n\n\t\tconst bindings = this._bindings,\n\t\t\tprevIndex = binding._cacheIndex,\n\n\t\t\tfirstInactiveIndex = -- this._nActiveBindings,\n\n\t\t\tlastActiveBinding = bindings[ firstInactiveIndex ];\n\n\t\tbinding._cacheIndex = firstInactiveIndex;\n\t\tbindings[ firstInactiveIndex ] = binding;\n\n\t\tlastActiveBinding._cacheIndex = prevIndex;\n\t\tbindings[ prevIndex ] = lastActiveBinding;\n\n\t},\n\n\n\t// Memory management of Interpolants for weight and time scale\n\n\t_lendControlInterpolant: function () {\n\n\t\tconst interpolants = this._controlInterpolants,\n\t\t\tlastActiveIndex = this._nActiveControlInterpolants ++;\n\n\t\tlet interpolant = interpolants[ lastActiveIndex ];\n\n\t\tif ( interpolant === undefined ) {\n\n\t\t\tinterpolant = new LinearInterpolant(\n\t\t\t\tnew Float32Array( 2 ), new Float32Array( 2 ),\n\t\t\t\t1, this._controlInterpolantsResultBuffer );\n\n\t\t\tinterpolant.__cacheIndex = lastActiveIndex;\n\t\t\tinterpolants[ lastActiveIndex ] = interpolant;\n\n\t\t}\n\n\t\treturn interpolant;\n\n\t},\n\n\t_takeBackControlInterpolant: function ( interpolant ) {\n\n\t\tconst interpolants = this._controlInterpolants,\n\t\t\tprevIndex = interpolant.__cacheIndex,\n\n\t\t\tfirstInactiveIndex = -- this._nActiveControlInterpolants,\n\n\t\t\tlastActiveInterpolant = interpolants[ firstInactiveIndex ];\n\n\t\tinterpolant.__cacheIndex = firstInactiveIndex;\n\t\tinterpolants[ firstInactiveIndex ] = interpolant;\n\n\t\tlastActiveInterpolant.__cacheIndex = prevIndex;\n\t\tinterpolants[ prevIndex ] = lastActiveInterpolant;\n\n\t},\n\n\t_controlInterpolantsResultBuffer: new Float32Array( 1 ),\n\n\t// return an action for a clip optionally using a custom root target\n\t// object (this method allocates a lot of dynamic memory in case a\n\t// previously unknown clip/root combination is specified)\n\tclipAction: function ( clip, optionalRoot, blendMode ) {\n\n\t\tconst root = optionalRoot || this._root,\n\t\t\trootUuid = root.uuid;\n\n\t\tlet clipObject = typeof clip === 'string' ? AnimationClip.findByName( root, clip ) : clip;\n\n\t\tconst clipUuid = clipObject !== null ? clipObject.uuid : clip;\n\n\t\tconst actionsForClip = this._actionsByClip[ clipUuid ];\n\t\tlet prototypeAction = null;\n\n\t\tif ( blendMode === undefined ) {\n\n\t\t\tif ( clipObject !== null ) {\n\n\t\t\t\tblendMode = clipObject.blendMode;\n\n\t\t\t} else {\n\n\t\t\t\tblendMode = NormalAnimationBlendMode;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\tconst existingAction = actionsForClip.actionByRoot[ rootUuid ];\n\n\t\t\tif ( existingAction !== undefined && existingAction.blendMode === blendMode ) {\n\n\t\t\t\treturn existingAction;\n\n\t\t\t}\n\n\t\t\t// we know the clip, so we don't have to parse all\n\t\t\t// the bindings again but can just copy\n\t\t\tprototypeAction = actionsForClip.knownActions[ 0 ];\n\n\t\t\t// also, take the clip from the prototype action\n\t\t\tif ( clipObject === null )\n\t\t\t\tclipObject = prototypeAction._clip;\n\n\t\t}\n\n\t\t// clip must be known when specified via string\n\t\tif ( clipObject === null ) return null;\n\n\t\t// allocate all resources required to run it\n\t\tconst newAction = new AnimationAction( this, clipObject, optionalRoot, blendMode );\n\n\t\tthis._bindAction( newAction, prototypeAction );\n\n\t\t// and make the action known to the memory manager\n\t\tthis._addInactiveAction( newAction, clipUuid, rootUuid );\n\n\t\treturn newAction;\n\n\t},\n\n\t// get an existing action\n\texistingAction: function ( clip, optionalRoot ) {\n\n\t\tconst root = optionalRoot || this._root,\n\t\t\trootUuid = root.uuid,\n\n\t\t\tclipObject = typeof clip === 'string' ?\n\t\t\t\tAnimationClip.findByName( root, clip ) : clip,\n\n\t\t\tclipUuid = clipObject ? clipObject.uuid : clip,\n\n\t\t\tactionsForClip = this._actionsByClip[ clipUuid ];\n\n\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\treturn actionsForClip.actionByRoot[ rootUuid ] || null;\n\n\t\t}\n\n\t\treturn null;\n\n\t},\n\n\t// deactivates all previously scheduled actions\n\tstopAllAction: function () {\n\n\t\tconst actions = this._actions,\n\t\t\tnActions = this._nActiveActions;\n\n\t\tfor ( let i = nActions - 1; i >= 0; -- i ) {\n\n\t\t\tactions[ i ].stop();\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// advance the time and update apply the animation\n\tupdate: function ( deltaTime ) {\n\n\t\tdeltaTime *= this.timeScale;\n\n\t\tconst actions = this._actions,\n\t\t\tnActions = this._nActiveActions,\n\n\t\t\ttime = this.time += deltaTime,\n\t\t\ttimeDirection = Math.sign( deltaTime ),\n\n\t\t\taccuIndex = this._accuIndex ^= 1;\n\n\t\t// run active actions\n\n\t\tfor ( let i = 0; i !== nActions; ++ i ) {\n\n\t\t\tconst action = actions[ i ];\n\n\t\t\taction._update( time, deltaTime, timeDirection, accuIndex );\n\n\t\t}\n\n\t\t// update scene graph\n\n\t\tconst bindings = this._bindings,\n\t\t\tnBindings = this._nActiveBindings;\n\n\t\tfor ( let i = 0; i !== nBindings; ++ i ) {\n\n\t\t\tbindings[ i ].apply( accuIndex );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// Allows you to seek to a specific time in an animation.\n\tsetTime: function ( timeInSeconds ) {\n\n\t\tthis.time = 0; // Zero out time attribute for AnimationMixer object;\n\t\tfor ( let i = 0; i < this._actions.length; i ++ ) {\n\n\t\t\tthis._actions[ i ].time = 0; // Zero out time attribute for all associated AnimationAction objects.\n\n\t\t}\n\n\t\treturn this.update( timeInSeconds ); // Update used to set exact time. Returns \"this\" AnimationMixer object.\n\n\t},\n\n\t// return this mixer's root target object\n\tgetRoot: function () {\n\n\t\treturn this._root;\n\n\t},\n\n\t// free all resources specific to a particular clip\n\tuncacheClip: function ( clip ) {\n\n\t\tconst actions = this._actions,\n\t\t\tclipUuid = clip.uuid,\n\t\t\tactionsByClip = this._actionsByClip,\n\t\t\tactionsForClip = actionsByClip[ clipUuid ];\n\n\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\t// note: just calling _removeInactiveAction would mess up the\n\t\t\t// iteration state and also require updating the state we can\n\t\t\t// just throw away\n\n\t\t\tconst actionsToRemove = actionsForClip.knownActions;\n\n\t\t\tfor ( let i = 0, n = actionsToRemove.length; i !== n; ++ i ) {\n\n\t\t\t\tconst action = actionsToRemove[ i ];\n\n\t\t\t\tthis._deactivateAction( action );\n\n\t\t\t\tconst cacheIndex = action._cacheIndex,\n\t\t\t\t\tlastInactiveAction = actions[ actions.length - 1 ];\n\n\t\t\t\taction._cacheIndex = null;\n\t\t\t\taction._byClipCacheIndex = null;\n\n\t\t\t\tlastInactiveAction._cacheIndex = cacheIndex;\n\t\t\t\tactions[ cacheIndex ] = lastInactiveAction;\n\t\t\t\tactions.pop();\n\n\t\t\t\tthis._removeInactiveBindingsForAction( action );\n\n\t\t\t}\n\n\t\t\tdelete actionsByClip[ clipUuid ];\n\n\t\t}\n\n\t},\n\n\t// free all resources specific to a particular root target object\n\tuncacheRoot: function ( root ) {\n\n\t\tconst rootUuid = root.uuid,\n\t\t\tactionsByClip = this._actionsByClip;\n\n\t\tfor ( const clipUuid in actionsByClip ) {\n\n\t\t\tconst actionByRoot = actionsByClip[ clipUuid ].actionByRoot,\n\t\t\t\taction = actionByRoot[ rootUuid ];\n\n\t\t\tif ( action !== undefined ) {\n\n\t\t\t\tthis._deactivateAction( action );\n\t\t\t\tthis._removeInactiveAction( action );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst bindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindingByName = bindingsByRoot[ rootUuid ];\n\n\t\tif ( bindingByName !== undefined ) {\n\n\t\t\tfor ( const trackName in bindingByName ) {\n\n\t\t\t\tconst binding = bindingByName[ trackName ];\n\t\t\t\tbinding.restoreOriginalState();\n\t\t\t\tthis._removeInactiveBinding( binding );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t// remove a targeted clip from the cache\n\tuncacheAction: function ( clip, optionalRoot ) {\n\n\t\tconst action = this.existingAction( clip, optionalRoot );\n\n\t\tif ( action !== null ) {\n\n\t\t\tthis._deactivateAction( action );\n\t\t\tthis._removeInactiveAction( action );\n\n\t\t}\n\n\t}\n\n} );\n\nclass Uniform {\n\n\tconstructor( value ) {\n\n\t\tif ( typeof value === 'string' ) {\n\n\t\t\tconsole.warn( 'THREE.Uniform: Type parameter is no longer needed.' );\n\t\t\tvalue = arguments[ 1 ];\n\n\t\t}\n\n\t\tthis.value = value;\n\n\t}\n\n\tclone() {\n\n\t\treturn new Uniform( this.value.clone === undefined ? this.value : this.value.clone() );\n\n\t}\n\n}\n\nfunction InstancedInterleavedBuffer( array, stride, meshPerAttribute ) {\n\n\tInterleavedBuffer.call( this, array, stride );\n\n\tthis.meshPerAttribute = meshPerAttribute || 1;\n\n}\n\nInstancedInterleavedBuffer.prototype = Object.assign( Object.create( InterleavedBuffer.prototype ), {\n\n\tconstructor: InstancedInterleavedBuffer,\n\n\tisInstancedInterleavedBuffer: true,\n\n\tcopy: function ( source ) {\n\n\t\tInterleavedBuffer.prototype.copy.call( this, source );\n\n\t\tthis.meshPerAttribute = source.meshPerAttribute;\n\n\t\treturn this;\n\n\t},\n\n\tclone: function ( data ) {\n\n\t\tconst ib = InterleavedBuffer.prototype.clone.call( this, data );\n\n\t\tib.meshPerAttribute = this.meshPerAttribute;\n\n\t\treturn ib;\n\n\t},\n\n\ttoJSON: function ( data ) {\n\n\t\tconst json = InterleavedBuffer.prototype.toJSON.call( this, data );\n\n\t\tjson.isInstancedInterleavedBuffer = true;\n\t\tjson.meshPerAttribute = this.meshPerAttribute;\n\n\t\treturn json;\n\n\t}\n\n} );\n\n/**\n * @author raub / https://github.com/raub\n */\n\n/**\n * Element size is one of:\n * 5126: 4\n * 5123: 2\n * 5122: 2\n * 5125: 4\n * 5124: 4\n * 5120: 1\n * 5121: 1\n */\nfunction GLBufferAttribute( buffer, type, itemSize, elementSize, count ) {\n\n\tthis.buffer = buffer;\n\tthis.type = type;\n\tthis.itemSize = itemSize;\n\tthis.elementSize = elementSize;\n\tthis.count = count;\n\n\tthis.version = 0;\n\n}\n\nObject.defineProperty( GLBufferAttribute.prototype, 'needsUpdate', {\n\n\tset: function ( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n} );\n\nObject.assign( GLBufferAttribute.prototype, {\n\n\tisGLBufferAttribute: true,\n\n\tsetBuffer: function ( buffer ) {\n\n\t\tthis.buffer = buffer;\n\n\t\treturn this;\n\n\t},\n\n\tsetType: function ( type, elementSize ) {\n\n\t\tthis.type = type;\n\t\tthis.elementSize = elementSize;\n\n\t\treturn this;\n\n\t},\n\n\tsetItemSize: function ( itemSize ) {\n\n\t\tthis.itemSize = itemSize;\n\n\t\treturn this;\n\n\t},\n\n\tsetCount: function ( count ) {\n\n\t\tthis.count = count;\n\n\t\treturn this;\n\n\t},\n\n} );\n\nfunction Raycaster( origin, direction, near, far ) {\n\n\tthis.ray = new Ray( origin, direction );\n\t// direction is assumed to be normalized (for accurate distance calculations)\n\n\tthis.near = near || 0;\n\tthis.far = far || Infinity;\n\tthis.camera = null;\n\tthis.layers = new Layers();\n\n\tthis.params = {\n\t\tMesh: {},\n\t\tLine: { threshold: 1 },\n\t\tLOD: {},\n\t\tPoints: { threshold: 1 },\n\t\tSprite: {}\n\t};\n\n\tObject.defineProperties( this.params, {\n\t\tPointCloud: {\n\t\t\tget: function () {\n\n\t\t\t\tconsole.warn( 'THREE.Raycaster: params.PointCloud has been renamed to params.Points.' );\n\t\t\t\treturn this.Points;\n\n\t\t\t}\n\t\t}\n\t} );\n\n}\n\nfunction ascSort( a, b ) {\n\n\treturn a.distance - b.distance;\n\n}\n\nfunction intersectObject( object, raycaster, intersects, recursive ) {\n\n\tif ( object.layers.test( raycaster.layers ) ) {\n\n\t\tobject.raycast( raycaster, intersects );\n\n\t}\n\n\tif ( recursive === true ) {\n\n\t\tconst children = object.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tintersectObject( children[ i ], raycaster, intersects, true );\n\n\t\t}\n\n\t}\n\n}\n\nObject.assign( Raycaster.prototype, {\n\n\tset: function ( origin, direction ) {\n\n\t\t// direction is assumed to be normalized (for accurate distance calculations)\n\n\t\tthis.ray.set( origin, direction );\n\n\t},\n\n\tsetFromCamera: function ( coords, camera ) {\n\n\t\tif ( ( camera && camera.isPerspectiveCamera ) ) {\n\n\t\t\tthis.ray.origin.setFromMatrixPosition( camera.matrixWorld );\n\t\t\tthis.ray.direction.set( coords.x, coords.y, 0.5 ).unproject( camera ).sub( this.ray.origin ).normalize();\n\t\t\tthis.camera = camera;\n\n\t\t} else if ( ( camera && camera.isOrthographicCamera ) ) {\n\n\t\t\tthis.ray.origin.set( coords.x, coords.y, ( camera.near + camera.far ) / ( camera.near - camera.far ) ).unproject( camera ); // set origin in plane of camera\n\t\t\tthis.ray.direction.set( 0, 0, - 1 ).transformDirection( camera.matrixWorld );\n\t\t\tthis.camera = camera;\n\n\t\t} else {\n\n\t\t\tconsole.error( 'THREE.Raycaster: Unsupported camera type.' );\n\n\t\t}\n\n\t},\n\n\tintersectObject: function ( object, recursive, optionalTarget ) {\n\n\t\tconst intersects = optionalTarget || [];\n\n\t\tintersectObject( object, this, intersects, recursive );\n\n\t\tintersects.sort( ascSort );\n\n\t\treturn intersects;\n\n\t},\n\n\tintersectObjects: function ( objects, recursive, optionalTarget ) {\n\n\t\tconst intersects = optionalTarget || [];\n\n\t\tif ( Array.isArray( objects ) === false ) {\n\n\t\t\tconsole.warn( 'THREE.Raycaster.intersectObjects: objects is not an Array.' );\n\t\t\treturn intersects;\n\n\t\t}\n\n\t\tfor ( let i = 0, l = objects.length; i < l; i ++ ) {\n\n\t\t\tintersectObject( objects[ i ], this, intersects, recursive );\n\n\t\t}\n\n\t\tintersects.sort( ascSort );\n\n\t\treturn intersects;\n\n\t}\n\n} );\n\n/**\n * Ref: https://en.wikipedia.org/wiki/Spherical_coordinate_system\n *\n * The polar angle (phi) is measured from the positive y-axis. The positive y-axis is up.\n * The azimuthal angle (theta) is measured from the positive z-axis.\n */\n\nclass Spherical {\n\n\tconstructor( radius = 1, phi = 0, theta = 0 ) {\n\n\t\tthis.radius = radius;\n\t\tthis.phi = phi; // polar angle\n\t\tthis.theta = theta; // azimuthal angle\n\n\t\treturn this;\n\n\t}\n\n\tset( radius, phi, theta ) {\n\n\t\tthis.radius = radius;\n\t\tthis.phi = phi;\n\t\tthis.theta = theta;\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( other ) {\n\n\t\tthis.radius = other.radius;\n\t\tthis.phi = other.phi;\n\t\tthis.theta = other.theta;\n\n\t\treturn this;\n\n\t}\n\n\t// restrict phi to be betwee EPS and PI-EPS\n\tmakeSafe() {\n\n\t\tconst EPS = 0.000001;\n\t\tthis.phi = Math.max( EPS, Math.min( Math.PI - EPS, this.phi ) );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromVector3( v ) {\n\n\t\treturn this.setFromCartesianCoords( v.x, v.y, v.z );\n\n\t}\n\n\tsetFromCartesianCoords( x, y, z ) {\n\n\t\tthis.radius = Math.sqrt( x * x + y * y + z * z );\n\n\t\tif ( this.radius === 0 ) {\n\n\t\t\tthis.theta = 0;\n\t\t\tthis.phi = 0;\n\n\t\t} else {\n\n\t\t\tthis.theta = Math.atan2( x, z );\n\t\t\tthis.phi = Math.acos( MathUtils.clamp( y / this.radius, - 1, 1 ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\n/**\n * Ref: https://en.wikipedia.org/wiki/Cylindrical_coordinate_system\n */\n\nclass Cylindrical {\n\n\tconstructor( radius, theta, y ) {\n\n\t\tthis.radius = ( radius !== undefined ) ? radius : 1.0; // distance from the origin to a point in the x-z plane\n\t\tthis.theta = ( theta !== undefined ) ? theta : 0; // counterclockwise angle in the x-z plane measured in radians from the positive z-axis\n\t\tthis.y = ( y !== undefined ) ? y : 0; // height above the x-z plane\n\n\t\treturn this;\n\n\t}\n\n\tset( radius, theta, y ) {\n\n\t\tthis.radius = radius;\n\t\tthis.theta = theta;\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( other ) {\n\n\t\tthis.radius = other.radius;\n\t\tthis.theta = other.theta;\n\t\tthis.y = other.y;\n\n\t\treturn this;\n\n\t}\n\n\tsetFromVector3( v ) {\n\n\t\treturn this.setFromCartesianCoords( v.x, v.y, v.z );\n\n\t}\n\n\tsetFromCartesianCoords( x, y, z ) {\n\n\t\tthis.radius = Math.sqrt( x * x + z * z );\n\t\tthis.theta = Math.atan2( x, z );\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst _vector$7 = new Vector2();\n\nclass Box2 {\n\n\tconstructor( min, max ) {\n\n\t\tObject.defineProperty( this, 'isBox2', { value: true } );\n\n\t\tthis.min = ( min !== undefined ) ? min : new Vector2( + Infinity, + Infinity );\n\t\tthis.max = ( max !== undefined ) ? max : new Vector2( - Infinity, - Infinity );\n\n\t}\n\n\tset( min, max ) {\n\n\t\tthis.min.copy( min );\n\t\tthis.max.copy( max );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromPoints( points ) {\n\n\t\tthis.makeEmpty();\n\n\t\tfor ( let i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\tthis.expandByPoint( points[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetFromCenterAndSize( center, size ) {\n\n\t\tconst halfSize = _vector$7.copy( size ).multiplyScalar( 0.5 );\n\t\tthis.min.copy( center ).sub( halfSize );\n\t\tthis.max.copy( center ).add( halfSize );\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( box ) {\n\n\t\tthis.min.copy( box.min );\n\t\tthis.max.copy( box.max );\n\n\t\treturn this;\n\n\t}\n\n\tmakeEmpty() {\n\n\t\tthis.min.x = this.min.y = + Infinity;\n\t\tthis.max.x = this.max.y = - Infinity;\n\n\t\treturn this;\n\n\t}\n\n\tisEmpty() {\n\n\t\t// this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes\n\n\t\treturn ( this.max.x < this.min.x ) || ( this.max.y < this.min.y );\n\n\t}\n\n\tgetCenter( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box2: .getCenter() target is now required' );\n\t\t\ttarget = new Vector2();\n\n\t\t}\n\n\t\treturn this.isEmpty() ? target.set( 0, 0 ) : target.addVectors( this.min, this.max ).multiplyScalar( 0.5 );\n\n\t}\n\n\tgetSize( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box2: .getSize() target is now required' );\n\t\t\ttarget = new Vector2();\n\n\t\t}\n\n\t\treturn this.isEmpty() ? target.set( 0, 0 ) : target.subVectors( this.max, this.min );\n\n\t}\n\n\texpandByPoint( point ) {\n\n\t\tthis.min.min( point );\n\t\tthis.max.max( point );\n\n\t\treturn this;\n\n\t}\n\n\texpandByVector( vector ) {\n\n\t\tthis.min.sub( vector );\n\t\tthis.max.add( vector );\n\n\t\treturn this;\n\n\t}\n\n\texpandByScalar( scalar ) {\n\n\t\tthis.min.addScalar( - scalar );\n\t\tthis.max.addScalar( scalar );\n\n\t\treturn this;\n\n\t}\n\n\tcontainsPoint( point ) {\n\n\t\treturn point.x < this.min.x || point.x > this.max.x ||\n\t\t\tpoint.y < this.min.y || point.y > this.max.y ? false : true;\n\n\t}\n\n\tcontainsBox( box ) {\n\n\t\treturn this.min.x <= box.min.x && box.max.x <= this.max.x &&\n\t\t\tthis.min.y <= box.min.y && box.max.y <= this.max.y;\n\n\t}\n\n\tgetParameter( point, target ) {\n\n\t\t// This can potentially have a divide by zero if the box\n\t\t// has a size dimension of 0.\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box2: .getParameter() target is now required' );\n\t\t\ttarget = new Vector2();\n\n\t\t}\n\n\t\treturn target.set(\n\t\t\t( point.x - this.min.x ) / ( this.max.x - this.min.x ),\n\t\t\t( point.y - this.min.y ) / ( this.max.y - this.min.y )\n\t\t);\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\t// using 4 splitting planes to rule out intersections\n\n\t\treturn box.max.x < this.min.x || box.min.x > this.max.x ||\n\t\t\tbox.max.y < this.min.y || box.min.y > this.max.y ? false : true;\n\n\t}\n\n\tclampPoint( point, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box2: .clampPoint() target is now required' );\n\t\t\ttarget = new Vector2();\n\n\t\t}\n\n\t\treturn target.copy( point ).clamp( this.min, this.max );\n\n\t}\n\n\tdistanceToPoint( point ) {\n\n\t\tconst clampedPoint = _vector$7.copy( point ).clamp( this.min, this.max );\n\t\treturn clampedPoint.sub( point ).length();\n\n\t}\n\n\tintersect( box ) {\n\n\t\tthis.min.max( box.min );\n\t\tthis.max.min( box.max );\n\n\t\treturn this;\n\n\t}\n\n\tunion( box ) {\n\n\t\tthis.min.min( box.min );\n\t\tthis.max.max( box.max );\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( offset ) {\n\n\t\tthis.min.add( offset );\n\t\tthis.max.add( offset );\n\n\t\treturn this;\n\n\t}\n\n\tequals( box ) {\n\n\t\treturn box.min.equals( this.min ) && box.max.equals( this.max );\n\n\t}\n\n}\n\nconst _startP = new Vector3();\nconst _startEnd = new Vector3();\n\nclass Line3 {\n\n\tconstructor( start, end ) {\n\n\t\tthis.start = ( start !== undefined ) ? start : new Vector3();\n\t\tthis.end = ( end !== undefined ) ? end : new Vector3();\n\n\t}\n\n\tset( start, end ) {\n\n\t\tthis.start.copy( start );\n\t\tthis.end.copy( end );\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( line ) {\n\n\t\tthis.start.copy( line.start );\n\t\tthis.end.copy( line.end );\n\n\t\treturn this;\n\n\t}\n\n\tgetCenter( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Line3: .getCenter() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.addVectors( this.start, this.end ).multiplyScalar( 0.5 );\n\n\t}\n\n\tdelta( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Line3: .delta() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.subVectors( this.end, this.start );\n\n\t}\n\n\tdistanceSq() {\n\n\t\treturn this.start.distanceToSquared( this.end );\n\n\t}\n\n\tdistance() {\n\n\t\treturn this.start.distanceTo( this.end );\n\n\t}\n\n\tat( t, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Line3: .at() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn this.delta( target ).multiplyScalar( t ).add( this.start );\n\n\t}\n\n\tclosestPointToPointParameter( point, clampToLine ) {\n\n\t\t_startP.subVectors( point, this.start );\n\t\t_startEnd.subVectors( this.end, this.start );\n\n\t\tconst startEnd2 = _startEnd.dot( _startEnd );\n\t\tconst startEnd_startP = _startEnd.dot( _startP );\n\n\t\tlet t = startEnd_startP / startEnd2;\n\n\t\tif ( clampToLine ) {\n\n\t\t\tt = MathUtils.clamp( t, 0, 1 );\n\n\t\t}\n\n\t\treturn t;\n\n\t}\n\n\tclosestPointToPoint( point, clampToLine, target ) {\n\n\t\tconst t = this.closestPointToPointParameter( point, clampToLine );\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Line3: .closestPointToPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn this.delta( target ).multiplyScalar( t ).add( this.start );\n\n\t}\n\n\tapplyMatrix4( matrix ) {\n\n\t\tthis.start.applyMatrix4( matrix );\n\t\tthis.end.applyMatrix4( matrix );\n\n\t\treturn this;\n\n\t}\n\n\tequals( line ) {\n\n\t\treturn line.start.equals( this.start ) && line.end.equals( this.end );\n\n\t}\n\n}\n\nfunction ImmediateRenderObject( material ) {\n\n\tObject3D.call( this );\n\n\tthis.material = material;\n\tthis.render = function ( /* renderCallback */ ) {};\n\n\tthis.hasPositions = false;\n\tthis.hasNormals = false;\n\tthis.hasColors = false;\n\tthis.hasUvs = false;\n\n\tthis.positionArray = null;\n\tthis.normalArray = null;\n\tthis.colorArray = null;\n\tthis.uvArray = null;\n\n\tthis.count = 0;\n\n}\n\nImmediateRenderObject.prototype = Object.create( Object3D.prototype );\nImmediateRenderObject.prototype.constructor = ImmediateRenderObject;\n\nImmediateRenderObject.prototype.isImmediateRenderObject = true;\n\nconst _vector$8 = new Vector3();\n\nclass SpotLightHelper extends Object3D {\n\n\tconstructor( light, color ) {\n\n\t\tsuper();\n\t\tthis.light = light;\n\t\tthis.light.updateMatrixWorld();\n\n\t\tthis.matrix = light.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.color = color;\n\n\t\tconst geometry = new BufferGeometry();\n\n\t\tconst positions = [\n\t\t\t0, 0, 0, \t0, 0, 1,\n\t\t\t0, 0, 0, \t1, 0, 1,\n\t\t\t0, 0, 0,\t- 1, 0, 1,\n\t\t\t0, 0, 0, \t0, 1, 1,\n\t\t\t0, 0, 0, \t0, - 1, 1\n\t\t];\n\n\t\tfor ( let i = 0, j = 1, l = 32; i < l; i ++, j ++ ) {\n\n\t\t\tconst p1 = ( i / l ) * Math.PI * 2;\n\t\t\tconst p2 = ( j / l ) * Math.PI * 2;\n\n\t\t\tpositions.push(\n\t\t\t\tMath.cos( p1 ), Math.sin( p1 ), 1,\n\t\t\t\tMath.cos( p2 ), Math.sin( p2 ), 1\n\t\t\t);\n\n\t\t}\n\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { fog: false, toneMapped: false } );\n\n\t\tthis.cone = new LineSegments( geometry, material );\n\t\tthis.add( this.cone );\n\n\t\tthis.update();\n\n\t}\n\n\tdispose() {\n\n\t\tthis.cone.geometry.dispose();\n\t\tthis.cone.material.dispose();\n\n\t}\n\n\tupdate() {\n\n\t\tthis.light.updateMatrixWorld();\n\n\t\tconst coneLength = this.light.distance ? this.light.distance : 1000;\n\t\tconst coneWidth = coneLength * Math.tan( this.light.angle );\n\n\t\tthis.cone.scale.set( coneWidth, coneWidth, coneLength );\n\n\t\t_vector$8.setFromMatrixPosition( this.light.target.matrixWorld );\n\n\t\tthis.cone.lookAt( _vector$8 );\n\n\t\tif ( this.color !== undefined ) {\n\n\t\t\tthis.cone.material.color.set( this.color );\n\n\t\t} else {\n\n\t\t\tthis.cone.material.color.copy( this.light.color );\n\n\t\t}\n\n\t}\n\n}\n\nconst _vector$9 = new Vector3();\nconst _boneMatrix = new Matrix4();\nconst _matrixWorldInv = new Matrix4();\n\n\nclass SkeletonHelper extends LineSegments {\n\n\tconstructor( object ) {\n\n\t\tconst bones = getBoneList( object );\n\n\t\tconst geometry = new BufferGeometry();\n\n\t\tconst vertices = [];\n\t\tconst colors = [];\n\n\t\tconst color1 = new Color( 0, 0, 1 );\n\t\tconst color2 = new Color( 0, 1, 0 );\n\n\t\tfor ( let i = 0; i < bones.length; i ++ ) {\n\n\t\t\tconst bone = bones[ i ];\n\n\t\t\tif ( bone.parent && bone.parent.isBone ) {\n\n\t\t\t\tvertices.push( 0, 0, 0 );\n\t\t\t\tvertices.push( 0, 0, 0 );\n\t\t\t\tcolors.push( color1.r, color1.g, color1.b );\n\t\t\t\tcolors.push( color2.r, color2.g, color2.b );\n\n\t\t\t}\n\n\t\t}\n\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { vertexColors: true, depthTest: false, depthWrite: false, toneMapped: false, transparent: true } );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'SkeletonHelper';\n\t\tthis.isSkeletonHelper = true;\n\n\t\tthis.root = object;\n\t\tthis.bones = bones;\n\n\t\tthis.matrix = object.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tconst bones = this.bones;\n\n\t\tconst geometry = this.geometry;\n\t\tconst position = geometry.getAttribute( 'position' );\n\n\t\t_matrixWorldInv.getInverse( this.root.matrixWorld );\n\n\t\tfor ( let i = 0, j = 0; i < bones.length; i ++ ) {\n\n\t\t\tconst bone = bones[ i ];\n\n\t\t\tif ( bone.parent && bone.parent.isBone ) {\n\n\t\t\t\t_boneMatrix.multiplyMatrices( _matrixWorldInv, bone.matrixWorld );\n\t\t\t\t_vector$9.setFromMatrixPosition( _boneMatrix );\n\t\t\t\tposition.setXYZ( j, _vector$9.x, _vector$9.y, _vector$9.z );\n\n\t\t\t\t_boneMatrix.multiplyMatrices( _matrixWorldInv, bone.parent.matrixWorld );\n\t\t\t\t_vector$9.setFromMatrixPosition( _boneMatrix );\n\t\t\t\tposition.setXYZ( j + 1, _vector$9.x, _vector$9.y, _vector$9.z );\n\n\t\t\t\tj += 2;\n\n\t\t\t}\n\n\t\t}\n\n\t\tgeometry.getAttribute( 'position' ).needsUpdate = true;\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t}\n\n}\n\n\nfunction getBoneList( object ) {\n\n\tconst boneList = [];\n\n\tif ( object && object.isBone ) {\n\n\t\tboneList.push( object );\n\n\t}\n\n\tfor ( let i = 0; i < object.children.length; i ++ ) {\n\n\t\tboneList.push.apply( boneList, getBoneList( object.children[ i ] ) );\n\n\t}\n\n\treturn boneList;\n\n}\n\nclass PointLightHelper extends Mesh {\n\n\tconstructor( light, sphereSize, color ) {\n\n\t\tconst geometry = new SphereBufferGeometry( sphereSize, 4, 2 );\n\t\tconst material = new MeshBasicMaterial( { wireframe: true, fog: false, toneMapped: false } );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.light = light;\n\t\tthis.light.updateMatrixWorld();\n\n\t\tthis.color = color;\n\n\t\tthis.type = 'PointLightHelper';\n\n\t\tthis.matrix = this.light.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.update();\n\n\n\t\t/*\n\t// TODO: delete this comment?\n\tconst distanceGeometry = new THREE.IcosahedronBufferGeometry( 1, 2 );\n\tconst distanceMaterial = new THREE.MeshBasicMaterial( { color: hexColor, fog: false, wireframe: true, opacity: 0.1, transparent: true } );\n\n\tthis.lightSphere = new THREE.Mesh( bulbGeometry, bulbMaterial );\n\tthis.lightDistance = new THREE.Mesh( distanceGeometry, distanceMaterial );\n\n\tconst d = light.distance;\n\n\tif ( d === 0.0 ) {\n\n\t\tthis.lightDistance.visible = false;\n\n\t} else {\n\n\t\tthis.lightDistance.scale.set( d, d, d );\n\n\t}\n\n\tthis.add( this.lightDistance );\n\t*/\n\n\t}\n\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n\tupdate() {\n\n\t\tif ( this.color !== undefined ) {\n\n\t\t\tthis.material.color.set( this.color );\n\n\t\t} else {\n\n\t\t\tthis.material.color.copy( this.light.color );\n\n\t\t}\n\n\t\t/*\n\t\tconst d = this.light.distance;\n\n\t\tif ( d === 0.0 ) {\n\n\t\t\tthis.lightDistance.visible = false;\n\n\t\t} else {\n\n\t\t\tthis.lightDistance.visible = true;\n\t\t\tthis.lightDistance.scale.set( d, d, d );\n\n\t\t}\n\t\t*/\n\n\t}\n\n}\n\nconst _vector$a = new Vector3();\nconst _color1 = new Color();\nconst _color2 = new Color();\n\nclass HemisphereLightHelper extends Object3D {\n\n\tconstructor( light, size, color ) {\n\n\t\tsuper();\n\t\tthis.light = light;\n\t\tthis.light.updateMatrixWorld();\n\n\t\tthis.matrix = light.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.color = color;\n\n\t\tconst geometry = new OctahedronBufferGeometry( size );\n\t\tgeometry.rotateY( Math.PI * 0.5 );\n\n\t\tthis.material = new MeshBasicMaterial( { wireframe: true, fog: false, toneMapped: false } );\n\t\tif ( this.color === undefined ) this.material.vertexColors = true;\n\n\t\tconst position = geometry.getAttribute( 'position' );\n\t\tconst colors = new Float32Array( position.count * 3 );\n\n\t\tgeometry.setAttribute( 'color', new BufferAttribute( colors, 3 ) );\n\n\t\tthis.add( new Mesh( geometry, this.material ) );\n\n\t\tthis.update();\n\n\t}\n\n\tdispose() {\n\n\t\tthis.children[ 0 ].geometry.dispose();\n\t\tthis.children[ 0 ].material.dispose();\n\n\t}\n\n\tupdate() {\n\n\t\tconst mesh = this.children[ 0 ];\n\n\t\tif ( this.color !== undefined ) {\n\n\t\t\tthis.material.color.set( this.color );\n\n\t\t} else {\n\n\t\t\tconst colors = mesh.geometry.getAttribute( 'color' );\n\n\t\t\t_color1.copy( this.light.color );\n\t\t\t_color2.copy( this.light.groundColor );\n\n\t\t\tfor ( let i = 0, l = colors.count; i < l; i ++ ) {\n\n\t\t\t\tconst color = ( i < ( l / 2 ) ) ? _color1 : _color2;\n\n\t\t\t\tcolors.setXYZ( i, color.r, color.g, color.b );\n\n\t\t\t}\n\n\t\t\tcolors.needsUpdate = true;\n\n\t\t}\n\n\t\tmesh.lookAt( _vector$a.setFromMatrixPosition( this.light.matrixWorld ).negate() );\n\n\t}\n\n}\n\nclass GridHelper extends LineSegments {\n\n\tconstructor( size, divisions, color1, color2 ) {\n\n\t\tsize = size || 10;\n\t\tdivisions = divisions || 10;\n\t\tcolor1 = new Color( color1 !== undefined ? color1 : 0x444444 );\n\t\tcolor2 = new Color( color2 !== undefined ? color2 : 0x888888 );\n\n\t\tconst center = divisions / 2;\n\t\tconst step = size / divisions;\n\t\tconst halfSize = size / 2;\n\n\t\tconst vertices = [], colors = [];\n\n\t\tfor ( let i = 0, j = 0, k = - halfSize; i <= divisions; i ++, k += step ) {\n\n\t\t\tvertices.push( - halfSize, 0, k, halfSize, 0, k );\n\t\t\tvertices.push( k, 0, - halfSize, k, 0, halfSize );\n\n\t\t\tconst color = i === center ? color1 : color2;\n\n\t\t\tcolor.toArray( colors, j ); j += 3;\n\t\t\tcolor.toArray( colors, j ); j += 3;\n\t\t\tcolor.toArray( colors, j ); j += 3;\n\t\t\tcolor.toArray( colors, j ); j += 3;\n\n\t\t}\n\n\t\tconst geometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { vertexColors: true, toneMapped: false } );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'GridHelper';\n\n\t}\n\n}\n\nclass PolarGridHelper extends LineSegments {\n\n\tconstructor( radius, radials, circles, divisions, color1, color2 ) {\n\n\t\tradius = radius || 10;\n\t\tradials = radials || 16;\n\t\tcircles = circles || 8;\n\t\tdivisions = divisions || 64;\n\t\tcolor1 = new Color( color1 !== undefined ? color1 : 0x444444 );\n\t\tcolor2 = new Color( color2 !== undefined ? color2 : 0x888888 );\n\n\t\tconst vertices = [];\n\t\tconst colors = [];\n\n\t\t// create the radials\n\n\t\tfor ( let i = 0; i <= radials; i ++ ) {\n\n\t\t\tconst v = ( i / radials ) * ( Math.PI * 2 );\n\n\t\t\tconst x = Math.sin( v ) * radius;\n\t\t\tconst z = Math.cos( v ) * radius;\n\n\t\t\tvertices.push( 0, 0, 0 );\n\t\t\tvertices.push( x, 0, z );\n\n\t\t\tconst color = ( i & 1 ) ? color1 : color2;\n\n\t\t\tcolors.push( color.r, color.g, color.b );\n\t\t\tcolors.push( color.r, color.g, color.b );\n\n\t\t}\n\n\t\t// create the circles\n\n\t\tfor ( let i = 0; i <= circles; i ++ ) {\n\n\t\t\tconst color = ( i & 1 ) ? color1 : color2;\n\n\t\t\tconst r = radius - ( radius / circles * i );\n\n\t\t\tfor ( let j = 0; j < divisions; j ++ ) {\n\n\t\t\t\t// first vertex\n\n\t\t\t\tlet v = ( j / divisions ) * ( Math.PI * 2 );\n\n\t\t\t\tlet x = Math.sin( v ) * r;\n\t\t\t\tlet z = Math.cos( v ) * r;\n\n\t\t\t\tvertices.push( x, 0, z );\n\t\t\t\tcolors.push( color.r, color.g, color.b );\n\n\t\t\t\t// second vertex\n\n\t\t\t\tv = ( ( j + 1 ) / divisions ) * ( Math.PI * 2 );\n\n\t\t\t\tx = Math.sin( v ) * r;\n\t\t\t\tz = Math.cos( v ) * r;\n\n\t\t\t\tvertices.push( x, 0, z );\n\t\t\t\tcolors.push( color.r, color.g, color.b );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst geometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { vertexColors: true, toneMapped: false } );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'PolarGridHelper';\n\n\t}\n\n}\n\nconst _v1$5 = new Vector3();\nconst _v2$3 = new Vector3();\nconst _v3$1 = new Vector3();\n\nclass DirectionalLightHelper extends Object3D {\n\n\tconstructor( light, size, color ) {\n\n\t\tsuper();\n\t\tthis.light = light;\n\t\tthis.light.updateMatrixWorld();\n\n\t\tthis.matrix = light.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.color = color;\n\n\t\tif ( size === undefined ) size = 1;\n\n\t\tlet geometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( [\n\t\t\t- size, size, 0,\n\t\t\tsize, size, 0,\n\t\t\tsize, - size, 0,\n\t\t\t- size, - size, 0,\n\t\t\t- size, size, 0\n\t\t], 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { fog: false, toneMapped: false } );\n\n\t\tthis.lightPlane = new Line( geometry, material );\n\t\tthis.add( this.lightPlane );\n\n\t\tgeometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( [ 0, 0, 0, 0, 0, 1 ], 3 ) );\n\n\t\tthis.targetLine = new Line( geometry, material );\n\t\tthis.add( this.targetLine );\n\n\t\tthis.update();\n\n\t}\n\n\tdispose() {\n\n\t\tthis.lightPlane.geometry.dispose();\n\t\tthis.lightPlane.material.dispose();\n\t\tthis.targetLine.geometry.dispose();\n\t\tthis.targetLine.material.dispose();\n\n\t}\n\n\tupdate() {\n\n\t\t_v1$5.setFromMatrixPosition( this.light.matrixWorld );\n\t\t_v2$3.setFromMatrixPosition( this.light.target.matrixWorld );\n\t\t_v3$1.subVectors( _v2$3, _v1$5 );\n\n\t\tthis.lightPlane.lookAt( _v2$3 );\n\n\t\tif ( this.color !== undefined ) {\n\n\t\t\tthis.lightPlane.material.color.set( this.color );\n\t\t\tthis.targetLine.material.color.set( this.color );\n\n\t\t} else {\n\n\t\t\tthis.lightPlane.material.color.copy( this.light.color );\n\t\t\tthis.targetLine.material.color.copy( this.light.color );\n\n\t\t}\n\n\t\tthis.targetLine.lookAt( _v2$3 );\n\t\tthis.targetLine.scale.z = _v3$1.length();\n\n\t}\n\n}\n\nconst _vector$b = new Vector3();\nconst _camera = new Camera();\n\n/**\n *\t- shows frustum, line of sight and up of the camera\n *\t- suitable for fast updates\n * \t- based on frustum visualization in lightgl.js shadowmap example\n *\t\thttp://evanw.github.com/lightgl.js/tests/shadowmap.html\n */\n\nclass CameraHelper extends LineSegments {\n\n\tconstructor( camera ) {\n\n\t\tconst geometry = new BufferGeometry();\n\t\tconst material = new LineBasicMaterial( { color: 0xffffff, vertexColors: true, toneMapped: false } );\n\n\t\tconst vertices = [];\n\t\tconst colors = [];\n\n\t\tconst pointMap = {};\n\n\t\t// colors\n\n\t\tconst colorFrustum = new Color( 0xffaa00 );\n\t\tconst colorCone = new Color( 0xff0000 );\n\t\tconst colorUp = new Color( 0x00aaff );\n\t\tconst colorTarget = new Color( 0xffffff );\n\t\tconst colorCross = new Color( 0x333333 );\n\n\t\t// near\n\n\t\taddLine( 'n1', 'n2', colorFrustum );\n\t\taddLine( 'n2', 'n4', colorFrustum );\n\t\taddLine( 'n4', 'n3', colorFrustum );\n\t\taddLine( 'n3', 'n1', colorFrustum );\n\n\t\t// far\n\n\t\taddLine( 'f1', 'f2', colorFrustum );\n\t\taddLine( 'f2', 'f4', colorFrustum );\n\t\taddLine( 'f4', 'f3', colorFrustum );\n\t\taddLine( 'f3', 'f1', colorFrustum );\n\n\t\t// sides\n\n\t\taddLine( 'n1', 'f1', colorFrustum );\n\t\taddLine( 'n2', 'f2', colorFrustum );\n\t\taddLine( 'n3', 'f3', colorFrustum );\n\t\taddLine( 'n4', 'f4', colorFrustum );\n\n\t\t// cone\n\n\t\taddLine( 'p', 'n1', colorCone );\n\t\taddLine( 'p', 'n2', colorCone );\n\t\taddLine( 'p', 'n3', colorCone );\n\t\taddLine( 'p', 'n4', colorCone );\n\n\t\t// up\n\n\t\taddLine( 'u1', 'u2', colorUp );\n\t\taddLine( 'u2', 'u3', colorUp );\n\t\taddLine( 'u3', 'u1', colorUp );\n\n\t\t// target\n\n\t\taddLine( 'c', 't', colorTarget );\n\t\taddLine( 'p', 'c', colorCross );\n\n\t\t// cross\n\n\t\taddLine( 'cn1', 'cn2', colorCross );\n\t\taddLine( 'cn3', 'cn4', colorCross );\n\n\t\taddLine( 'cf1', 'cf2', colorCross );\n\t\taddLine( 'cf3', 'cf4', colorCross );\n\n\t\tfunction addLine( a, b, color ) {\n\n\t\t\taddPoint( a, color );\n\t\t\taddPoint( b, color );\n\n\t\t}\n\n\t\tfunction addPoint( id, color ) {\n\n\t\t\tvertices.push( 0, 0, 0 );\n\t\t\tcolors.push( color.r, color.g, color.b );\n\n\t\t\tif ( pointMap[ id ] === undefined ) {\n\n\t\t\t\tpointMap[ id ] = [];\n\n\t\t\t}\n\n\t\t\tpointMap[ id ].push( ( vertices.length / 3 ) - 1 );\n\n\t\t}\n\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'CameraHelper';\n\n\t\tthis.camera = camera;\n\t\tif ( this.camera.updateProjectionMatrix ) this.camera.updateProjectionMatrix();\n\n\t\tthis.matrix = camera.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.pointMap = pointMap;\n\n\t\tthis.update();\n\n\t}\n\n\tupdate() {\n\n\t\tconst geometry = this.geometry;\n\t\tconst pointMap = this.pointMap;\n\n\t\tconst w = 1, h = 1;\n\n\t\t// we need just camera projection matrix inverse\n\t\t// world matrix must be identity\n\n\t\t_camera.projectionMatrixInverse.copy( this.camera.projectionMatrixInverse );\n\n\t\t// center / target\n\n\t\tsetPoint( 'c', pointMap, geometry, _camera, 0, 0, - 1 );\n\t\tsetPoint( 't', pointMap, geometry, _camera, 0, 0, 1 );\n\n\t\t// near\n\n\t\tsetPoint( 'n1', pointMap, geometry, _camera, - w, - h, - 1 );\n\t\tsetPoint( 'n2', pointMap, geometry, _camera, w, - h, - 1 );\n\t\tsetPoint( 'n3', pointMap, geometry, _camera, - w, h, - 1 );\n\t\tsetPoint( 'n4', pointMap, geometry, _camera, w, h, - 1 );\n\n\t\t// far\n\n\t\tsetPoint( 'f1', pointMap, geometry, _camera, - w, - h, 1 );\n\t\tsetPoint( 'f2', pointMap, geometry, _camera, w, - h, 1 );\n\t\tsetPoint( 'f3', pointMap, geometry, _camera, - w, h, 1 );\n\t\tsetPoint( 'f4', pointMap, geometry, _camera, w, h, 1 );\n\n\t\t// up\n\n\t\tsetPoint( 'u1', pointMap, geometry, _camera, w * 0.7, h * 1.1, - 1 );\n\t\tsetPoint( 'u2', pointMap, geometry, _camera, - w * 0.7, h * 1.1, - 1 );\n\t\tsetPoint( 'u3', pointMap, geometry, _camera, 0, h * 2, - 1 );\n\n\t\t// cross\n\n\t\tsetPoint( 'cf1', pointMap, geometry, _camera, - w, 0, 1 );\n\t\tsetPoint( 'cf2', pointMap, geometry, _camera, w, 0, 1 );\n\t\tsetPoint( 'cf3', pointMap, geometry, _camera, 0, - h, 1 );\n\t\tsetPoint( 'cf4', pointMap, geometry, _camera, 0, h, 1 );\n\n\t\tsetPoint( 'cn1', pointMap, geometry, _camera, - w, 0, - 1 );\n\t\tsetPoint( 'cn2', pointMap, geometry, _camera, w, 0, - 1 );\n\t\tsetPoint( 'cn3', pointMap, geometry, _camera, 0, - h, - 1 );\n\t\tsetPoint( 'cn4', pointMap, geometry, _camera, 0, h, - 1 );\n\n\t\tgeometry.getAttribute( 'position' ).needsUpdate = true;\n\n\t}\n\n}\n\n\nfunction setPoint( point, pointMap, geometry, camera, x, y, z ) {\n\n\t_vector$b.set( x, y, z ).unproject( camera );\n\n\tconst points = pointMap[ point ];\n\n\tif ( points !== undefined ) {\n\n\t\tconst position = geometry.getAttribute( 'position' );\n\n\t\tfor ( let i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\tposition.setXYZ( points[ i ], _vector$b.x, _vector$b.y, _vector$b.z );\n\n\t\t}\n\n\t}\n\n}\n\nconst _box$3 = new Box3();\n\nclass BoxHelper extends LineSegments {\n\n\tconstructor( object, color = 0xffff00 ) {\n\n\t\tconst indices = new Uint16Array( [ 0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 0, 4, 1, 5, 2, 6, 3, 7 ] );\n\t\tconst positions = new Float32Array( 8 * 3 );\n\n\t\tconst geometry = new BufferGeometry();\n\t\tgeometry.setIndex( new BufferAttribute( indices, 1 ) );\n\t\tgeometry.setAttribute( 'position', new BufferAttribute( positions, 3 ) );\n\n\t\tsuper( geometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\n\t\tthis.object = object;\n\t\tthis.type = 'BoxHelper';\n\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.update();\n\n\t}\n\n\tupdate( object ) {\n\n\t\tif ( object !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.BoxHelper: .update() has no longer arguments.' );\n\n\t\t}\n\n\t\tif ( this.object !== undefined ) {\n\n\t\t\t_box$3.setFromObject( this.object );\n\n\t\t}\n\n\t\tif ( _box$3.isEmpty() ) return;\n\n\t\tconst min = _box$3.min;\n\t\tconst max = _box$3.max;\n\n\t\t/*\n\t\t\t5____4\n\t\t1/___0/|\n\t\t| 6__|_7\n\t\t2/___3/\n\n\t\t0: max.x, max.y, max.z\n\t\t1: min.x, max.y, max.z\n\t\t2: min.x, min.y, max.z\n\t\t3: max.x, min.y, max.z\n\t\t4: max.x, max.y, min.z\n\t\t5: min.x, max.y, min.z\n\t\t6: min.x, min.y, min.z\n\t\t7: max.x, min.y, min.z\n\t\t*/\n\n\t\tconst position = this.geometry.attributes.position;\n\t\tconst array = position.array;\n\n\t\tarray[ 0 ] = max.x; array[ 1 ] = max.y; array[ 2 ] = max.z;\n\t\tarray[ 3 ] = min.x; array[ 4 ] = max.y; array[ 5 ] = max.z;\n\t\tarray[ 6 ] = min.x; array[ 7 ] = min.y; array[ 8 ] = max.z;\n\t\tarray[ 9 ] = max.x; array[ 10 ] = min.y; array[ 11 ] = max.z;\n\t\tarray[ 12 ] = max.x; array[ 13 ] = max.y; array[ 14 ] = min.z;\n\t\tarray[ 15 ] = min.x; array[ 16 ] = max.y; array[ 17 ] = min.z;\n\t\tarray[ 18 ] = min.x; array[ 19 ] = min.y; array[ 20 ] = min.z;\n\t\tarray[ 21 ] = max.x; array[ 22 ] = min.y; array[ 23 ] = min.z;\n\n\t\tposition.needsUpdate = true;\n\n\t\tthis.geometry.computeBoundingSphere();\n\n\n\t}\n\n\tsetFromObject( object ) {\n\n\t\tthis.object = object;\n\t\tthis.update();\n\n\t\treturn this;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tLineSegments.prototype.copy.call( this, source );\n\n\t\tthis.object = source.object;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass Box3Helper extends LineSegments {\n\n\tconstructor( box, color = 0xffff00 ) {\n\n\t\tconst indices = new Uint16Array( [ 0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 0, 4, 1, 5, 2, 6, 3, 7 ] );\n\n\t\tconst positions = [ 1, 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, - 1, 1, 1, 1, - 1, - 1, 1, - 1, - 1, - 1, - 1, 1, - 1, - 1 ];\n\n\t\tconst geometry = new BufferGeometry();\n\n\t\tgeometry.setIndex( new BufferAttribute( indices, 1 ) );\n\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\n\t\tsuper( geometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\n\t\tthis.box = box;\n\n\t\tthis.type = 'Box3Helper';\n\n\t\tthis.geometry.computeBoundingSphere();\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tconst box = this.box;\n\n\t\tif ( box.isEmpty() ) return;\n\n\t\tbox.getCenter( this.position );\n\n\t\tbox.getSize( this.scale );\n\n\t\tthis.scale.multiplyScalar( 0.5 );\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t}\n\n}\n\nclass PlaneHelper extends Line {\n\n\tconstructor( plane, size, hex ) {\n\n\t\tconst color = ( hex !== undefined ) ? hex : 0xffff00;\n\n\t\tconst positions = [ 1, - 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, - 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0 ];\n\n\t\tconst geometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\t\tgeometry.computeBoundingSphere();\n\n\t\tsuper( geometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\n\t\tthis.type = 'PlaneHelper';\n\n\t\tthis.plane = plane;\n\n\t\tthis.size = ( size === undefined ) ? 1 : size;\n\n\t\tconst positions2 = [ 1, 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, 1, 1, - 1, - 1, 1, 1, - 1, 1 ];\n\n\t\tconst geometry2 = new BufferGeometry();\n\t\tgeometry2.setAttribute( 'position', new Float32BufferAttribute( positions2, 3 ) );\n\t\tgeometry2.computeBoundingSphere();\n\n\t\tthis.add( new Mesh( geometry2, new MeshBasicMaterial( { color: color, opacity: 0.2, transparent: true, depthWrite: false, toneMapped: false } ) ) );\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tlet scale = - this.plane.constant;\n\n\t\tif ( Math.abs( scale ) < 1e-8 ) scale = 1e-8; // sign does not matter\n\n\t\tthis.scale.set( 0.5 * this.size, 0.5 * this.size, scale );\n\n\t\tthis.children[ 0 ].material.side = ( scale < 0 ) ? BackSide : FrontSide; // renderer flips side when determinant < 0; flipping not wanted here\n\n\t\tthis.lookAt( this.plane.normal );\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t}\n\n}\n\nconst _axis = new Vector3();\nlet _lineGeometry, _coneGeometry;\n\nclass ArrowHelper extends Object3D {\n\n\tconstructor( dir, origin, length, color, headLength, headWidth ) {\n\n\t\tsuper();\n\t\t// dir is assumed to be normalized\n\n\t\tthis.type = 'ArrowHelper';\n\n\t\tif ( dir === undefined ) dir = new Vector3( 0, 0, 1 );\n\t\tif ( origin === undefined ) origin = new Vector3( 0, 0, 0 );\n\t\tif ( length === undefined ) length = 1;\n\t\tif ( color === undefined ) color = 0xffff00;\n\t\tif ( headLength === undefined ) headLength = 0.2 * length;\n\t\tif ( headWidth === undefined ) headWidth = 0.2 * headLength;\n\n\t\tif ( _lineGeometry === undefined ) {\n\n\t\t\t_lineGeometry = new BufferGeometry();\n\t\t\t_lineGeometry.setAttribute( 'position', new Float32BufferAttribute( [ 0, 0, 0, 0, 1, 0 ], 3 ) );\n\n\t\t\t_coneGeometry = new CylinderBufferGeometry( 0, 0.5, 1, 5, 1 );\n\t\t\t_coneGeometry.translate( 0, - 0.5, 0 );\n\n\t\t}\n\n\t\tthis.position.copy( origin );\n\n\t\tthis.line = new Line( _lineGeometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\t\tthis.line.matrixAutoUpdate = false;\n\t\tthis.add( this.line );\n\n\t\tthis.cone = new Mesh( _coneGeometry, new MeshBasicMaterial( { color: color, toneMapped: false } ) );\n\t\tthis.cone.matrixAutoUpdate = false;\n\t\tthis.add( this.cone );\n\n\t\tthis.setDirection( dir );\n\t\tthis.setLength( length, headLength, headWidth );\n\n\t}\n\n\tsetDirection( dir ) {\n\n\t\t// dir is assumed to be normalized\n\n\t\tif ( dir.y > 0.99999 ) {\n\n\t\t\tthis.quaternion.set( 0, 0, 0, 1 );\n\n\t\t} else if ( dir.y < - 0.99999 ) {\n\n\t\t\tthis.quaternion.set( 1, 0, 0, 0 );\n\n\t\t} else {\n\n\t\t\t_axis.set( dir.z, 0, - dir.x ).normalize();\n\n\t\t\tconst radians = Math.acos( dir.y );\n\n\t\t\tthis.quaternion.setFromAxisAngle( _axis, radians );\n\n\t\t}\n\n\t}\n\n\tsetLength( length, headLength, headWidth ) {\n\n\t\tif ( headLength === undefined ) headLength = 0.2 * length;\n\t\tif ( headWidth === undefined ) headWidth = 0.2 * headLength;\n\n\t\tthis.line.scale.set( 1, Math.max( 0.0001, length - headLength ), 1 ); // see #17458\n\t\tthis.line.updateMatrix();\n\n\t\tthis.cone.scale.set( headWidth, headLength, headWidth );\n\t\tthis.cone.position.y = length;\n\t\tthis.cone.updateMatrix();\n\n\t}\n\n\tsetColor( color ) {\n\n\t\tthis.line.material.color.set( color );\n\t\tthis.cone.material.color.set( color );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source, false );\n\n\t\tthis.line.copy( source.line );\n\t\tthis.cone.copy( source.cone );\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass AxesHelper extends LineSegments {\n\n\tconstructor( size = 1 ) {\n\n\t\tconst vertices = [\n\t\t\t0, 0, 0,\tsize, 0, 0,\n\t\t\t0, 0, 0,\t0, size, 0,\n\t\t\t0, 0, 0,\t0, 0, size\n\t\t];\n\n\t\tconst colors = [\n\t\t\t1, 0, 0,\t1, 0.6, 0,\n\t\t\t0, 1, 0,\t0.6, 1, 0,\n\t\t\t0, 0, 1,\t0, 0.6, 1\n\t\t];\n\n\t\tconst geometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { vertexColors: true, toneMapped: false } );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'AxesHelper';\n\n\t}\n\n}\n\nconst LOD_MIN = 4;\nconst LOD_MAX = 8;\nconst SIZE_MAX = Math.pow( 2, LOD_MAX );\n\n// The standard deviations (radians) associated with the extra mips. These are\n// chosen to approximate a Trowbridge-Reitz distribution function times the\n// geometric shadowing function. These sigma values squared must match the\n// variance #defines in cube_uv_reflection_fragment.glsl.js.\nconst EXTRA_LOD_SIGMA = [ 0.125, 0.215, 0.35, 0.446, 0.526, 0.582 ];\n\nconst TOTAL_LODS = LOD_MAX - LOD_MIN + 1 + EXTRA_LOD_SIGMA.length;\n\n// The maximum length of the blur for loop. Smaller sigmas will use fewer\n// samples and exit early, but not recompile the shader.\nconst MAX_SAMPLES = 20;\n\nconst ENCODINGS = {\n\t[ LinearEncoding ]: 0,\n\t[ sRGBEncoding ]: 1,\n\t[ RGBEEncoding ]: 2,\n\t[ RGBM7Encoding ]: 3,\n\t[ RGBM16Encoding ]: 4,\n\t[ RGBDEncoding ]: 5,\n\t[ GammaEncoding ]: 6\n};\n\nconst _flatCamera = new OrthographicCamera();\nconst { _lodPlanes, _sizeLods, _sigmas } = _createPlanes();\nlet _oldTarget = null;\n\n// Golden Ratio\nconst PHI = ( 1 + Math.sqrt( 5 ) ) / 2;\nconst INV_PHI = 1 / PHI;\n\n// Vertices of a dodecahedron (except the opposites, which represent the\n// same axis), used as axis directions evenly spread on a sphere.\nconst _axisDirections = [\n\tnew Vector3( 1, 1, 1 ),\n\tnew Vector3( - 1, 1, 1 ),\n\tnew Vector3( 1, 1, - 1 ),\n\tnew Vector3( - 1, 1, - 1 ),\n\tnew Vector3( 0, PHI, INV_PHI ),\n\tnew Vector3( 0, PHI, - INV_PHI ),\n\tnew Vector3( INV_PHI, 0, PHI ),\n\tnew Vector3( - INV_PHI, 0, PHI ),\n\tnew Vector3( PHI, INV_PHI, 0 ),\n\tnew Vector3( - PHI, INV_PHI, 0 ) ];\n\n/**\n * This class generates a Prefiltered, Mipmapped Radiance Environment Map\n * (PMREM) from a cubeMap environment texture. This allows different levels of\n * blur to be quickly accessed based on material roughness. It is packed into a\n * special CubeUV format that allows us to perform custom interpolation so that\n * we can support nonlinear formats such as RGBE. Unlike a traditional mipmap\n * chain, it only goes down to the LOD_MIN level (above), and then creates extra\n * even more filtered 'mips' at the same LOD_MIN resolution, associated with\n * higher roughness levels. In this way we maintain resolution to smoothly\n * interpolate diffuse lighting while limiting sampling computation.\n */\n\nclass PMREMGenerator {\n\n\tconstructor( renderer ) {\n\n\t\tthis._renderer = renderer;\n\t\tthis._pingPongRenderTarget = null;\n\n\t\tthis._blurMaterial = _getBlurShader( MAX_SAMPLES );\n\t\tthis._equirectShader = null;\n\t\tthis._cubemapShader = null;\n\n\t\tthis._compileMaterial( this._blurMaterial );\n\n\t}\n\n\t/**\n\t * Generates a PMREM from a supplied Scene, which can be faster than using an\n\t * image if networking bandwidth is low. Optional sigma specifies a blur radius\n\t * in radians to be applied to the scene before PMREM generation. Optional near\n\t * and far planes ensure the scene is rendered in its entirety (the cubeCamera\n\t * is placed at the origin).\n\t */\n\tfromScene( scene, sigma = 0, near = 0.1, far = 100 ) {\n\n\t\t_oldTarget = this._renderer.getRenderTarget();\n\t\tconst cubeUVRenderTarget = this._allocateTargets();\n\n\t\tthis._sceneToCubeUV( scene, near, far, cubeUVRenderTarget );\n\t\tif ( sigma > 0 ) {\n\n\t\t\tthis._blur( cubeUVRenderTarget, 0, 0, sigma );\n\n\t\t}\n\n\t\tthis._applyPMREM( cubeUVRenderTarget );\n\t\tthis._cleanup( cubeUVRenderTarget );\n\n\t\treturn cubeUVRenderTarget;\n\n\t}\n\n\t/**\n\t * Generates a PMREM from an equirectangular texture, which can be either LDR\n\t * (RGBFormat) or HDR (RGBEFormat). The ideal input image size is 1k (1024 x 512),\n\t * as this matches best with the 256 x 256 cubemap output.\n\t */\n\tfromEquirectangular( equirectangular ) {\n\n\t\treturn this._fromTexture( equirectangular );\n\n\t}\n\n\t/**\n\t * Generates a PMREM from an cubemap texture, which can be either LDR\n\t * (RGBFormat) or HDR (RGBEFormat). The ideal input cube size is 256 x 256,\n\t * as this matches best with the 256 x 256 cubemap output.\n\t */\n\tfromCubemap( cubemap ) {\n\n\t\treturn this._fromTexture( cubemap );\n\n\t}\n\n\t/**\n\t * Pre-compiles the cubemap shader. You can get faster start-up by invoking this method during\n\t * your texture's network fetch for increased concurrency.\n\t */\n\tcompileCubemapShader() {\n\n\t\tif ( this._cubemapShader === null ) {\n\n\t\t\tthis._cubemapShader = _getCubemapShader();\n\t\t\tthis._compileMaterial( this._cubemapShader );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Pre-compiles the equirectangular shader. You can get faster start-up by invoking this method during\n\t * your texture's network fetch for increased concurrency.\n\t */\n\tcompileEquirectangularShader() {\n\n\t\tif ( this._equirectShader === null ) {\n\n\t\t\tthis._equirectShader = _getEquirectShader();\n\t\t\tthis._compileMaterial( this._equirectShader );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Disposes of the PMREMGenerator's internal memory. Note that PMREMGenerator is a static class,\n\t * so you should not need more than one PMREMGenerator object. If you do, calling dispose() on\n\t * one of them will cause any others to also become unusable.\n\t */\n\tdispose() {\n\n\t\tthis._blurMaterial.dispose();\n\n\t\tif ( this._cubemapShader !== null ) this._cubemapShader.dispose();\n\t\tif ( this._equirectShader !== null ) this._equirectShader.dispose();\n\n\t\tfor ( let i = 0; i < _lodPlanes.length; i ++ ) {\n\n\t\t\t_lodPlanes[ i ].dispose();\n\n\t\t}\n\n\t}\n\n\t// private interface\n\n\t_cleanup( outputTarget ) {\n\n\t\tthis._pingPongRenderTarget.dispose();\n\t\tthis._renderer.setRenderTarget( _oldTarget );\n\t\toutputTarget.scissorTest = false;\n\t\t_setViewport( outputTarget, 0, 0, outputTarget.width, outputTarget.height );\n\n\t}\n\n\t_fromTexture( texture ) {\n\n\t\t_oldTarget = this._renderer.getRenderTarget();\n\t\tconst cubeUVRenderTarget = this._allocateTargets( texture );\n\t\tthis._textureToCubeUV( texture, cubeUVRenderTarget );\n\t\tthis._applyPMREM( cubeUVRenderTarget );\n\t\tthis._cleanup( cubeUVRenderTarget );\n\n\t\treturn cubeUVRenderTarget;\n\n\t}\n\n\t_allocateTargets( texture ) { // warning: null texture is valid\n\n\t\tconst params = {\n\t\t\tmagFilter: NearestFilter,\n\t\t\tminFilter: NearestFilter,\n\t\t\tgenerateMipmaps: false,\n\t\t\ttype: UnsignedByteType,\n\t\t\tformat: RGBEFormat,\n\t\t\tencoding: _isLDR( texture ) ? texture.encoding : RGBEEncoding,\n\t\t\tdepthBuffer: false\n\t\t};\n\n\t\tconst cubeUVRenderTarget = _createRenderTarget( params );\n\t\tcubeUVRenderTarget.depthBuffer = texture ? false : true;\n\t\tthis._pingPongRenderTarget = _createRenderTarget( params );\n\t\treturn cubeUVRenderTarget;\n\n\t}\n\n\t_compileMaterial( material ) {\n\n\t\tconst tmpMesh = new Mesh( _lodPlanes[ 0 ], material );\n\t\tthis._renderer.compile( tmpMesh, _flatCamera );\n\n\t}\n\n\t_sceneToCubeUV( scene, near, far, cubeUVRenderTarget ) {\n\n\t\tconst fov = 90;\n\t\tconst aspect = 1;\n\t\tconst cubeCamera = new PerspectiveCamera( fov, aspect, near, far );\n\t\tconst upSign = [ 1, - 1, 1, 1, 1, 1 ];\n\t\tconst forwardSign = [ 1, 1, 1, - 1, - 1, - 1 ];\n\t\tconst renderer = this._renderer;\n\n\t\tconst outputEncoding = renderer.outputEncoding;\n\t\tconst toneMapping = renderer.toneMapping;\n\t\tconst clearColor = renderer.getClearColor();\n\t\tconst clearAlpha = renderer.getClearAlpha();\n\n\t\trenderer.toneMapping = NoToneMapping;\n\t\trenderer.outputEncoding = LinearEncoding;\n\n\t\tlet background = scene.background;\n\t\tif ( background && background.isColor ) {\n\n\t\t\tbackground.convertSRGBToLinear();\n\t\t\t// Convert linear to RGBE\n\t\t\tconst maxComponent = Math.max( background.r, background.g, background.b );\n\t\t\tconst fExp = Math.min( Math.max( Math.ceil( Math.log2( maxComponent ) ), - 128.0 ), 127.0 );\n\t\t\tbackground = background.multiplyScalar( Math.pow( 2.0, - fExp ) );\n\t\t\tconst alpha = ( fExp + 128.0 ) / 255.0;\n\t\t\trenderer.setClearColor( background, alpha );\n\t\t\tscene.background = null;\n\n\t\t}\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tconst col = i % 3;\n\t\t\tif ( col == 0 ) {\n\n\t\t\t\tcubeCamera.up.set( 0, upSign[ i ], 0 );\n\t\t\t\tcubeCamera.lookAt( forwardSign[ i ], 0, 0 );\n\n\t\t\t} else if ( col == 1 ) {\n\n\t\t\t\tcubeCamera.up.set( 0, 0, upSign[ i ] );\n\t\t\t\tcubeCamera.lookAt( 0, forwardSign[ i ], 0 );\n\n\t\t\t} else {\n\n\t\t\t\tcubeCamera.up.set( 0, upSign[ i ], 0 );\n\t\t\t\tcubeCamera.lookAt( 0, 0, forwardSign[ i ] );\n\n\t\t\t}\n\n\t\t\t_setViewport( cubeUVRenderTarget,\n\t\t\t\tcol * SIZE_MAX, i > 2 ? SIZE_MAX : 0, SIZE_MAX, SIZE_MAX );\n\t\t\trenderer.setRenderTarget( cubeUVRenderTarget );\n\t\t\trenderer.render( scene, cubeCamera );\n\n\t\t}\n\n\t\trenderer.toneMapping = toneMapping;\n\t\trenderer.outputEncoding = outputEncoding;\n\t\trenderer.setClearColor( clearColor, clearAlpha );\n\n\t}\n\n\t_textureToCubeUV( texture, cubeUVRenderTarget ) {\n\n\t\tconst renderer = this._renderer;\n\n\t\tif ( texture.isCubeTexture ) {\n\n\t\t\tif ( this._cubemapShader == null ) {\n\n\t\t\t\tthis._cubemapShader = _getCubemapShader();\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tif ( this._equirectShader == null ) {\n\n\t\t\t\tthis._equirectShader = _getEquirectShader();\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst material = texture.isCubeTexture ? this._cubemapShader : this._equirectShader;\n\t\tconst mesh = new Mesh( _lodPlanes[ 0 ], material );\n\n\t\tconst uniforms = material.uniforms;\n\n\t\tuniforms[ 'envMap' ].value = texture;\n\n\t\tif ( ! texture.isCubeTexture ) {\n\n\t\t\tuniforms[ 'texelSize' ].value.set( 1.0 / texture.image.width, 1.0 / texture.image.height );\n\n\t\t}\n\n\t\tuniforms[ 'inputEncoding' ].value = ENCODINGS[ texture.encoding ];\n\t\tuniforms[ 'outputEncoding' ].value = ENCODINGS[ cubeUVRenderTarget.texture.encoding ];\n\n\t\t_setViewport( cubeUVRenderTarget, 0, 0, 3 * SIZE_MAX, 2 * SIZE_MAX );\n\n\t\trenderer.setRenderTarget( cubeUVRenderTarget );\n\t\trenderer.render( mesh, _flatCamera );\n\n\t}\n\n\t_applyPMREM( cubeUVRenderTarget ) {\n\n\t\tconst renderer = this._renderer;\n\t\tconst autoClear = renderer.autoClear;\n\t\trenderer.autoClear = false;\n\n\t\tfor ( let i = 1; i < TOTAL_LODS; i ++ ) {\n\n\t\t\tconst sigma = Math.sqrt( _sigmas[ i ] * _sigmas[ i ] - _sigmas[ i - 1 ] * _sigmas[ i - 1 ] );\n\n\t\t\tconst poleAxis = _axisDirections[ ( i - 1 ) % _axisDirections.length ];\n\n\t\t\tthis._blur( cubeUVRenderTarget, i - 1, i, sigma, poleAxis );\n\n\t\t}\n\n\t\trenderer.autoClear = autoClear;\n\n\t}\n\n\t/**\n\t * This is a two-pass Gaussian blur for a cubemap. Normally this is done\n\t * vertically and horizontally, but this breaks down on a cube. Here we apply\n\t * the blur latitudinally (around the poles), and then longitudinally (towards\n\t * the poles) to approximate the orthogonally-separable blur. It is least\n\t * accurate at the poles, but still does a decent job.\n\t */\n\t_blur( cubeUVRenderTarget, lodIn, lodOut, sigma, poleAxis ) {\n\n\t\tconst pingPongRenderTarget = this._pingPongRenderTarget;\n\n\t\tthis._halfBlur(\n\t\t\tcubeUVRenderTarget,\n\t\t\tpingPongRenderTarget,\n\t\t\tlodIn,\n\t\t\tlodOut,\n\t\t\tsigma,\n\t\t\t'latitudinal',\n\t\t\tpoleAxis );\n\n\t\tthis._halfBlur(\n\t\t\tpingPongRenderTarget,\n\t\t\tcubeUVRenderTarget,\n\t\t\tlodOut,\n\t\t\tlodOut,\n\t\t\tsigma,\n\t\t\t'longitudinal',\n\t\t\tpoleAxis );\n\n\t}\n\n\t_halfBlur( targetIn, targetOut, lodIn, lodOut, sigmaRadians, direction, poleAxis ) {\n\n\t\tconst renderer = this._renderer;\n\t\tconst blurMaterial = this._blurMaterial;\n\n\t\tif ( direction !== 'latitudinal' && direction !== 'longitudinal' ) {\n\n\t\t\tconsole.error(\n\t\t\t\t'blur direction must be either latitudinal or longitudinal!' );\n\n\t\t}\n\n\t\t// Number of standard deviations at which to cut off the discrete approximation.\n\t\tconst STANDARD_DEVIATIONS = 3;\n\n\t\tconst blurMesh = new Mesh( _lodPlanes[ lodOut ], blurMaterial );\n\t\tconst blurUniforms = blurMaterial.uniforms;\n\n\t\tconst pixels = _sizeLods[ lodIn ] - 1;\n\t\tconst radiansPerPixel = isFinite( sigmaRadians ) ? Math.PI / ( 2 * pixels ) : 2 * Math.PI / ( 2 * MAX_SAMPLES - 1 );\n\t\tconst sigmaPixels = sigmaRadians / radiansPerPixel;\n\t\tconst samples = isFinite( sigmaRadians ) ? 1 + Math.floor( STANDARD_DEVIATIONS * sigmaPixels ) : MAX_SAMPLES;\n\n\t\tif ( samples > MAX_SAMPLES ) {\n\n\t\t\tconsole.warn( `sigmaRadians, ${\n\t\t\t\tsigmaRadians}, is too large and will clip, as it requested ${\n\t\t\t\tsamples} samples when the maximum is set to ${MAX_SAMPLES}` );\n\n\t\t}\n\n\t\tconst weights = [];\n\t\tlet sum = 0;\n\n\t\tfor ( let i = 0; i < MAX_SAMPLES; ++ i ) {\n\n\t\t\tconst x = i / sigmaPixels;\n\t\t\tconst weight = Math.exp( - x * x / 2 );\n\t\t\tweights.push( weight );\n\n\t\t\tif ( i == 0 ) {\n\n\t\t\t\tsum += weight;\n\n\t\t\t} else if ( i < samples ) {\n\n\t\t\t\tsum += 2 * weight;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfor ( let i = 0; i < weights.length; i ++ ) {\n\n\t\t\tweights[ i ] = weights[ i ] / sum;\n\n\t\t}\n\n\t\tblurUniforms[ 'envMap' ].value = targetIn.texture;\n\t\tblurUniforms[ 'samples' ].value = samples;\n\t\tblurUniforms[ 'weights' ].value = weights;\n\t\tblurUniforms[ 'latitudinal' ].value = direction === 'latitudinal';\n\n\t\tif ( poleAxis ) {\n\n\t\t\tblurUniforms[ 'poleAxis' ].value = poleAxis;\n\n\t\t}\n\n\t\tblurUniforms[ 'dTheta' ].value = radiansPerPixel;\n\t\tblurUniforms[ 'mipInt' ].value = LOD_MAX - lodIn;\n\t\tblurUniforms[ 'inputEncoding' ].value = ENCODINGS[ targetIn.texture.encoding ];\n\t\tblurUniforms[ 'outputEncoding' ].value = ENCODINGS[ targetIn.texture.encoding ];\n\n\t\tconst outputSize = _sizeLods[ lodOut ];\n\t\tconst x = 3 * Math.max( 0, SIZE_MAX - 2 * outputSize );\n\t\tconst y = ( lodOut === 0 ? 0 : 2 * SIZE_MAX ) + 2 * outputSize * ( lodOut > LOD_MAX - LOD_MIN ? lodOut - LOD_MAX + LOD_MIN : 0 );\n\n\t\t_setViewport( targetOut, x, y, 3 * outputSize, 2 * outputSize );\n\t\trenderer.setRenderTarget( targetOut );\n\t\trenderer.render( blurMesh, _flatCamera );\n\n\t}\n\n}\n\nfunction _isLDR( texture ) {\n\n\tif ( texture === undefined || texture.type !== UnsignedByteType ) return false;\n\n\treturn texture.encoding === LinearEncoding || texture.encoding === sRGBEncoding || texture.encoding === GammaEncoding;\n\n}\n\nfunction _createPlanes() {\n\n\tconst _lodPlanes = [];\n\tconst _sizeLods = [];\n\tconst _sigmas = [];\n\n\tlet lod = LOD_MAX;\n\n\tfor ( let i = 0; i < TOTAL_LODS; i ++ ) {\n\n\t\tconst sizeLod = Math.pow( 2, lod );\n\t\t_sizeLods.push( sizeLod );\n\t\tlet sigma = 1.0 / sizeLod;\n\n\t\tif ( i > LOD_MAX - LOD_MIN ) {\n\n\t\t\tsigma = EXTRA_LOD_SIGMA[ i - LOD_MAX + LOD_MIN - 1 ];\n\n\t\t} else if ( i == 0 ) {\n\n\t\t\tsigma = 0;\n\n\t\t}\n\n\t\t_sigmas.push( sigma );\n\n\t\tconst texelSize = 1.0 / ( sizeLod - 1 );\n\t\tconst min = - texelSize / 2;\n\t\tconst max = 1 + texelSize / 2;\n\t\tconst uv1 = [ min, min, max, min, max, max, min, min, max, max, min, max ];\n\n\t\tconst cubeFaces = 6;\n\t\tconst vertices = 6;\n\t\tconst positionSize = 3;\n\t\tconst uvSize = 2;\n\t\tconst faceIndexSize = 1;\n\n\t\tconst position = new Float32Array( positionSize * vertices * cubeFaces );\n\t\tconst uv = new Float32Array( uvSize * vertices * cubeFaces );\n\t\tconst faceIndex = new Float32Array( faceIndexSize * vertices * cubeFaces );\n\n\t\tfor ( let face = 0; face < cubeFaces; face ++ ) {\n\n\t\t\tconst x = ( face % 3 ) * 2 / 3 - 1;\n\t\t\tconst y = face > 2 ? 0 : - 1;\n\t\t\tconst coordinates = [\n\t\t\t\tx, y, 0,\n\t\t\t\tx + 2 / 3, y, 0,\n\t\t\t\tx + 2 / 3, y + 1, 0,\n\t\t\t\tx, y, 0,\n\t\t\t\tx + 2 / 3, y + 1, 0,\n\t\t\t\tx, y + 1, 0\n\t\t\t];\n\t\t\tposition.set( coordinates, positionSize * vertices * face );\n\t\t\tuv.set( uv1, uvSize * vertices * face );\n\t\t\tconst fill = [ face, face, face, face, face, face ];\n\t\t\tfaceIndex.set( fill, faceIndexSize * vertices * face );\n\n\t\t}\n\n\t\tconst planes = new BufferGeometry();\n\t\tplanes.setAttribute( 'position', new BufferAttribute( position, positionSize ) );\n\t\tplanes.setAttribute( 'uv', new BufferAttribute( uv, uvSize ) );\n\t\tplanes.setAttribute( 'faceIndex', new BufferAttribute( faceIndex, faceIndexSize ) );\n\t\t_lodPlanes.push( planes );\n\n\t\tif ( lod > LOD_MIN ) {\n\n\t\t\tlod --;\n\n\t\t}\n\n\t}\n\n\treturn { _lodPlanes, _sizeLods, _sigmas };\n\n}\n\nfunction _createRenderTarget( params ) {\n\n\tconst cubeUVRenderTarget = new WebGLRenderTarget( 3 * SIZE_MAX, 3 * SIZE_MAX, params );\n\tcubeUVRenderTarget.texture.mapping = CubeUVReflectionMapping;\n\tcubeUVRenderTarget.texture.name = 'PMREM.cubeUv';\n\tcubeUVRenderTarget.scissorTest = true;\n\treturn cubeUVRenderTarget;\n\n}\n\nfunction _setViewport( target, x, y, width, height ) {\n\n\ttarget.viewport.set( x, y, width, height );\n\ttarget.scissor.set( x, y, width, height );\n\n}\n\nfunction _getBlurShader( maxSamples ) {\n\n\tconst weights = new Float32Array( maxSamples );\n\tconst poleAxis = new Vector3( 0, 1, 0 );\n\tconst shaderMaterial = new RawShaderMaterial( {\n\n\t\tname: 'SphericalGaussianBlur',\n\n\t\tdefines: { 'n': maxSamples },\n\n\t\tuniforms: {\n\t\t\t'envMap': { value: null },\n\t\t\t'samples': { value: 1 },\n\t\t\t'weights': { value: weights },\n\t\t\t'latitudinal': { value: false },\n\t\t\t'dTheta': { value: 0 },\n\t\t\t'mipInt': { value: 0 },\n\t\t\t'poleAxis': { value: poleAxis },\n\t\t\t'inputEncoding': { value: ENCODINGS[ LinearEncoding ] },\n\t\t\t'outputEncoding': { value: ENCODINGS[ LinearEncoding ] }\n\t\t},\n\n\t\tvertexShader: _getCommonVertexShader(),\n\n\t\tfragmentShader: /* glsl */`\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform sampler2D envMap;\n\t\t\tuniform int samples;\n\t\t\tuniform float weights[ n ];\n\t\t\tuniform bool latitudinal;\n\t\t\tuniform float dTheta;\n\t\t\tuniform float mipInt;\n\t\t\tuniform vec3 poleAxis;\n\n\t\t\t${ _getEncodings() }\n\n\t\t\t#define ENVMAP_TYPE_CUBE_UV\n\t\t\t#include <cube_uv_reflection_fragment>\n\n\t\t\tvec3 getSample( float theta, vec3 axis ) {\n\n\t\t\t\tfloat cosTheta = cos( theta );\n\t\t\t\t// Rodrigues' axis-angle rotation\n\t\t\t\tvec3 sampleDirection = vOutputDirection * cosTheta\n\t\t\t\t\t+ cross( axis, vOutputDirection ) * sin( theta )\n\t\t\t\t\t+ axis * dot( axis, vOutputDirection ) * ( 1.0 - cosTheta );\n\n\t\t\t\treturn bilinearCubeUV( envMap, sampleDirection, mipInt );\n\n\t\t\t}\n\n\t\t\tvoid main() {\n\n\t\t\t\tvec3 axis = latitudinal ? poleAxis : cross( poleAxis, vOutputDirection );\n\n\t\t\t\tif ( all( equal( axis, vec3( 0.0 ) ) ) ) {\n\n\t\t\t\t\taxis = vec3( vOutputDirection.z, 0.0, - vOutputDirection.x );\n\n\t\t\t\t}\n\n\t\t\t\taxis = normalize( axis );\n\n\t\t\t\tgl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n\t\t\t\tgl_FragColor.rgb += weights[ 0 ] * getSample( 0.0, axis );\n\n\t\t\t\tfor ( int i = 1; i < n; i++ ) {\n\n\t\t\t\t\tif ( i >= samples ) {\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfloat theta = dTheta * float( i );\n\t\t\t\t\tgl_FragColor.rgb += weights[ i ] * getSample( -1.0 * theta, axis );\n\t\t\t\t\tgl_FragColor.rgb += weights[ i ] * getSample( theta, axis );\n\n\t\t\t\t}\n\n\t\t\t\tgl_FragColor = linearToOutputTexel( gl_FragColor );\n\n\t\t\t}\n\t\t`,\n\n\t\tblending: NoBlending,\n\t\tdepthTest: false,\n\t\tdepthWrite: false\n\n\t} );\n\n\treturn shaderMaterial;\n\n}\n\nfunction _getEquirectShader() {\n\n\tconst texelSize = new Vector2( 1, 1 );\n\tconst shaderMaterial = new RawShaderMaterial( {\n\n\t\tname: 'EquirectangularToCubeUV',\n\n\t\tuniforms: {\n\t\t\t'envMap': { value: null },\n\t\t\t'texelSize': { value: texelSize },\n\t\t\t'inputEncoding': { value: ENCODINGS[ LinearEncoding ] },\n\t\t\t'outputEncoding': { value: ENCODINGS[ LinearEncoding ] }\n\t\t},\n\n\t\tvertexShader: _getCommonVertexShader(),\n\n\t\tfragmentShader: /* glsl */`\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform sampler2D envMap;\n\t\t\tuniform vec2 texelSize;\n\n\t\t\t${ _getEncodings() }\n\n\t\t\t#include <common>\n\n\t\t\tvoid main() {\n\n\t\t\t\tgl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n\n\t\t\t\tvec3 outputDirection = normalize( vOutputDirection );\n\t\t\t\tvec2 uv = equirectUv( outputDirection );\n\n\t\t\t\tvec2 f = fract( uv / texelSize - 0.5 );\n\t\t\t\tuv -= f * texelSize;\n\t\t\t\tvec3 tl = envMapTexelToLinear( texture2D ( envMap, uv ) ).rgb;\n\t\t\t\tuv.x += texelSize.x;\n\t\t\t\tvec3 tr = envMapTexelToLinear( texture2D ( envMap, uv ) ).rgb;\n\t\t\t\tuv.y += texelSize.y;\n\t\t\t\tvec3 br = envMapTexelToLinear( texture2D ( envMap, uv ) ).rgb;\n\t\t\t\tuv.x -= texelSize.x;\n\t\t\t\tvec3 bl = envMapTexelToLinear( texture2D ( envMap, uv ) ).rgb;\n\n\t\t\t\tvec3 tm = mix( tl, tr, f.x );\n\t\t\t\tvec3 bm = mix( bl, br, f.x );\n\t\t\t\tgl_FragColor.rgb = mix( tm, bm, f.y );\n\n\t\t\t\tgl_FragColor = linearToOutputTexel( gl_FragColor );\n\n\t\t\t}\n\t\t`,\n\n\t\tblending: NoBlending,\n\t\tdepthTest: false,\n\t\tdepthWrite: false\n\n\t} );\n\n\treturn shaderMaterial;\n\n}\n\nfunction _getCubemapShader() {\n\n\tconst shaderMaterial = new RawShaderMaterial( {\n\n\t\tname: 'CubemapToCubeUV',\n\n\t\tuniforms: {\n\t\t\t'envMap': { value: null },\n\t\t\t'inputEncoding': { value: ENCODINGS[ LinearEncoding ] },\n\t\t\t'outputEncoding': { value: ENCODINGS[ LinearEncoding ] }\n\t\t},\n\n\t\tvertexShader: _getCommonVertexShader(),\n\n\t\tfragmentShader: /* glsl */`\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform samplerCube envMap;\n\n\t\t\t${ _getEncodings() }\n\n\t\t\tvoid main() {\n\n\t\t\t\tgl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n\t\t\t\tgl_FragColor.rgb = envMapTexelToLinear( textureCube( envMap, vec3( - vOutputDirection.x, vOutputDirection.yz ) ) ).rgb;\n\t\t\t\tgl_FragColor = linearToOutputTexel( gl_FragColor );\n\n\t\t\t}\n\t\t`,\n\n\t\tblending: NoBlending,\n\t\tdepthTest: false,\n\t\tdepthWrite: false\n\n\t} );\n\n\treturn shaderMaterial;\n\n}\n\nfunction _getCommonVertexShader() {\n\n\treturn /* glsl */`\n\n\t\tprecision mediump float;\n\t\tprecision mediump int;\n\n\t\tattribute vec3 position;\n\t\tattribute vec2 uv;\n\t\tattribute float faceIndex;\n\n\t\tvarying vec3 vOutputDirection;\n\n\t\t// RH coordinate system; PMREM face-indexing convention\n\t\tvec3 getDirection( vec2 uv, float face ) {\n\n\t\t\tuv = 2.0 * uv - 1.0;\n\n\t\t\tvec3 direction = vec3( uv, 1.0 );\n\n\t\t\tif ( face == 0.0 ) {\n\n\t\t\t\tdirection = direction.zyx; // ( 1, v, u ) pos x\n\n\t\t\t} else if ( face == 1.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xz *= -1.0; // ( -u, 1, -v ) pos y\n\n\t\t\t} else if ( face == 2.0 ) {\n\n\t\t\t\tdirection.x *= -1.0; // ( -u, v, 1 ) pos z\n\n\t\t\t} else if ( face == 3.0 ) {\n\n\t\t\t\tdirection = direction.zyx;\n\t\t\t\tdirection.xz *= -1.0; // ( -1, v, -u ) neg x\n\n\t\t\t} else if ( face == 4.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xy *= -1.0; // ( -u, -1, v ) neg y\n\n\t\t\t} else if ( face == 5.0 ) {\n\n\t\t\t\tdirection.z *= -1.0; // ( u, v, -1 ) neg z\n\n\t\t\t}\n\n\t\t\treturn direction;\n\n\t\t}\n\n\t\tvoid main() {\n\n\t\t\tvOutputDirection = getDirection( uv, faceIndex );\n\t\t\tgl_Position = vec4( position, 1.0 );\n\n\t\t}\n\t`;\n\n}\n\nfunction _getEncodings() {\n\n\treturn /* glsl */`\n\n\t\tuniform int inputEncoding;\n\t\tuniform int outputEncoding;\n\n\t\t#include <encodings_pars_fragment>\n\n\t\tvec4 inputTexelToLinear( vec4 value ) {\n\n\t\t\tif ( inputEncoding == 0 ) {\n\n\t\t\t\treturn value;\n\n\t\t\t} else if ( inputEncoding == 1 ) {\n\n\t\t\t\treturn sRGBToLinear( value );\n\n\t\t\t} else if ( inputEncoding == 2 ) {\n\n\t\t\t\treturn RGBEToLinear( value );\n\n\t\t\t} else if ( inputEncoding == 3 ) {\n\n\t\t\t\treturn RGBMToLinear( value, 7.0 );\n\n\t\t\t} else if ( inputEncoding == 4 ) {\n\n\t\t\t\treturn RGBMToLinear( value, 16.0 );\n\n\t\t\t} else if ( inputEncoding == 5 ) {\n\n\t\t\t\treturn RGBDToLinear( value, 256.0 );\n\n\t\t\t} else {\n\n\t\t\t\treturn GammaToLinear( value, 2.2 );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvec4 linearToOutputTexel( vec4 value ) {\n\n\t\t\tif ( outputEncoding == 0 ) {\n\n\t\t\t\treturn value;\n\n\t\t\t} else if ( outputEncoding == 1 ) {\n\n\t\t\t\treturn LinearTosRGB( value );\n\n\t\t\t} else if ( outputEncoding == 2 ) {\n\n\t\t\t\treturn LinearToRGBE( value );\n\n\t\t\t} else if ( outputEncoding == 3 ) {\n\n\t\t\t\treturn LinearToRGBM( value, 7.0 );\n\n\t\t\t} else if ( outputEncoding == 4 ) {\n\n\t\t\t\treturn LinearToRGBM( value, 16.0 );\n\n\t\t\t} else if ( outputEncoding == 5 ) {\n\n\t\t\t\treturn LinearToRGBD( value, 256.0 );\n\n\t\t\t} else {\n\n\t\t\t\treturn LinearToGamma( value, 2.2 );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvec4 envMapTexelToLinear( vec4 color ) {\n\n\t\t\treturn inputTexelToLinear( color );\n\n\t\t}\n\t`;\n\n}\n\nfunction Face4( a, b, c, d, normal, color, materialIndex ) {\n\n\tconsole.warn( 'THREE.Face4 has been removed. A THREE.Face3 will be created instead.' );\n\treturn new Face3( a, b, c, normal, color, materialIndex );\n\n}\n\nconst LineStrip = 0;\nconst LinePieces = 1;\nconst NoColors = 0;\nconst FaceColors = 1;\nconst VertexColors = 2;\n\nfunction MeshFaceMaterial( materials ) {\n\n\tconsole.warn( 'THREE.MeshFaceMaterial has been removed. Use an Array instead.' );\n\treturn materials;\n\n}\n\nfunction MultiMaterial( materials ) {\n\n\tif ( materials === undefined ) materials = [];\n\n\tconsole.warn( 'THREE.MultiMaterial has been removed. Use an Array instead.' );\n\tmaterials.isMultiMaterial = true;\n\tmaterials.materials = materials;\n\tmaterials.clone = function () {\n\n\t\treturn materials.slice();\n\n\t};\n\n\treturn materials;\n\n}\n\nfunction PointCloud( geometry, material ) {\n\n\tconsole.warn( 'THREE.PointCloud has been renamed to THREE.Points.' );\n\treturn new Points( geometry, material );\n\n}\n\nfunction Particle( material ) {\n\n\tconsole.warn( 'THREE.Particle has been renamed to THREE.Sprite.' );\n\treturn new Sprite( material );\n\n}\n\nfunction ParticleSystem( geometry, material ) {\n\n\tconsole.warn( 'THREE.ParticleSystem has been renamed to THREE.Points.' );\n\treturn new Points( geometry, material );\n\n}\n\nfunction PointCloudMaterial( parameters ) {\n\n\tconsole.warn( 'THREE.PointCloudMaterial has been renamed to THREE.PointsMaterial.' );\n\treturn new PointsMaterial( parameters );\n\n}\n\nfunction ParticleBasicMaterial( parameters ) {\n\n\tconsole.warn( 'THREE.ParticleBasicMaterial has been renamed to THREE.PointsMaterial.' );\n\treturn new PointsMaterial( parameters );\n\n}\n\nfunction ParticleSystemMaterial( parameters ) {\n\n\tconsole.warn( 'THREE.ParticleSystemMaterial has been renamed to THREE.PointsMaterial.' );\n\treturn new PointsMaterial( parameters );\n\n}\n\nfunction Vertex( x, y, z ) {\n\n\tconsole.warn( 'THREE.Vertex has been removed. Use THREE.Vector3 instead.' );\n\treturn new Vector3( x, y, z );\n\n}\n\n//\n\nfunction DynamicBufferAttribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.DynamicBufferAttribute has been removed. Use new THREE.BufferAttribute().setUsage( THREE.DynamicDrawUsage ) instead.' );\n\treturn new BufferAttribute( array, itemSize ).setUsage( DynamicDrawUsage );\n\n}\n\nfunction Int8Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Int8Attribute has been removed. Use new THREE.Int8BufferAttribute() instead.' );\n\treturn new Int8BufferAttribute( array, itemSize );\n\n}\n\nfunction Uint8Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Uint8Attribute has been removed. Use new THREE.Uint8BufferAttribute() instead.' );\n\treturn new Uint8BufferAttribute( array, itemSize );\n\n}\n\nfunction Uint8ClampedAttribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Uint8ClampedAttribute has been removed. Use new THREE.Uint8ClampedBufferAttribute() instead.' );\n\treturn new Uint8ClampedBufferAttribute( array, itemSize );\n\n}\n\nfunction Int16Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Int16Attribute has been removed. Use new THREE.Int16BufferAttribute() instead.' );\n\treturn new Int16BufferAttribute( array, itemSize );\n\n}\n\nfunction Uint16Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Uint16Attribute has been removed. Use new THREE.Uint16BufferAttribute() instead.' );\n\treturn new Uint16BufferAttribute( array, itemSize );\n\n}\n\nfunction Int32Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Int32Attribute has been removed. Use new THREE.Int32BufferAttribute() instead.' );\n\treturn new Int32BufferAttribute( array, itemSize );\n\n}\n\nfunction Uint32Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Uint32Attribute has been removed. Use new THREE.Uint32BufferAttribute() instead.' );\n\treturn new Uint32BufferAttribute( array, itemSize );\n\n}\n\nfunction Float32Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Float32Attribute has been removed. Use new THREE.Float32BufferAttribute() instead.' );\n\treturn new Float32BufferAttribute( array, itemSize );\n\n}\n\nfunction Float64Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Float64Attribute has been removed. Use new THREE.Float64BufferAttribute() instead.' );\n\treturn new Float64BufferAttribute( array, itemSize );\n\n}\n\n//\n\nCurve.create = function ( construct, getPoint ) {\n\n\tconsole.log( 'THREE.Curve.create() has been deprecated' );\n\n\tconstruct.prototype = Object.create( Curve.prototype );\n\tconstruct.prototype.constructor = construct;\n\tconstruct.prototype.getPoint = getPoint;\n\n\treturn construct;\n\n};\n\n//\n\nObject.assign( CurvePath.prototype, {\n\n\tcreatePointsGeometry: function ( divisions ) {\n\n\t\tconsole.warn( 'THREE.CurvePath: .createPointsGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.' );\n\n\t\t// generate geometry from path points (for Line or Points objects)\n\n\t\tconst pts = this.getPoints( divisions );\n\t\treturn this.createGeometry( pts );\n\n\t},\n\n\tcreateSpacedPointsGeometry: function ( divisions ) {\n\n\t\tconsole.warn( 'THREE.CurvePath: .createSpacedPointsGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.' );\n\n\t\t// generate geometry from equidistant sampling along the path\n\n\t\tconst pts = this.getSpacedPoints( divisions );\n\t\treturn this.createGeometry( pts );\n\n\t},\n\n\tcreateGeometry: function ( points ) {\n\n\t\tconsole.warn( 'THREE.CurvePath: .createGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.' );\n\n\t\tconst geometry = new Geometry();\n\n\t\tfor ( let i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\tconst point = points[ i ];\n\t\t\tgeometry.vertices.push( new Vector3( point.x, point.y, point.z || 0 ) );\n\n\t\t}\n\n\t\treturn geometry;\n\n\t}\n\n} );\n\n//\n\nObject.assign( Path.prototype, {\n\n\tfromPoints: function ( points ) {\n\n\t\tconsole.warn( 'THREE.Path: .fromPoints() has been renamed to .setFromPoints().' );\n\t\treturn this.setFromPoints( points );\n\n\t}\n\n} );\n\n//\n\nfunction ClosedSplineCurve3( points ) {\n\n\tconsole.warn( 'THREE.ClosedSplineCurve3 has been deprecated. Use THREE.CatmullRomCurve3 instead.' );\n\n\tCatmullRomCurve3.call( this, points );\n\tthis.type = 'catmullrom';\n\tthis.closed = true;\n\n}\n\nClosedSplineCurve3.prototype = Object.create( CatmullRomCurve3.prototype );\n\n//\n\nfunction SplineCurve3( points ) {\n\n\tconsole.warn( 'THREE.SplineCurve3 has been deprecated. Use THREE.CatmullRomCurve3 instead.' );\n\n\tCatmullRomCurve3.call( this, points );\n\tthis.type = 'catmullrom';\n\n}\n\nSplineCurve3.prototype = Object.create( CatmullRomCurve3.prototype );\n\n//\n\nfunction Spline( points ) {\n\n\tconsole.warn( 'THREE.Spline has been removed. Use THREE.CatmullRomCurve3 instead.' );\n\n\tCatmullRomCurve3.call( this, points );\n\tthis.type = 'catmullrom';\n\n}\n\nSpline.prototype = Object.create( CatmullRomCurve3.prototype );\n\nObject.assign( Spline.prototype, {\n\n\tinitFromArray: function ( /* a */ ) {\n\n\t\tconsole.error( 'THREE.Spline: .initFromArray() has been removed.' );\n\n\t},\n\tgetControlPointsArray: function ( /* optionalTarget */ ) {\n\n\t\tconsole.error( 'THREE.Spline: .getControlPointsArray() has been removed.' );\n\n\t},\n\treparametrizeByArcLength: function ( /* samplingCoef */ ) {\n\n\t\tconsole.error( 'THREE.Spline: .reparametrizeByArcLength() has been removed.' );\n\n\t}\n\n} );\n\n//\n\nfunction AxisHelper( size ) {\n\n\tconsole.warn( 'THREE.AxisHelper has been renamed to THREE.AxesHelper.' );\n\treturn new AxesHelper( size );\n\n}\n\nfunction BoundingBoxHelper( object, color ) {\n\n\tconsole.warn( 'THREE.BoundingBoxHelper has been deprecated. Creating a THREE.BoxHelper instead.' );\n\treturn new BoxHelper( object, color );\n\n}\n\nfunction EdgesHelper( object, hex ) {\n\n\tconsole.warn( 'THREE.EdgesHelper has been removed. Use THREE.EdgesGeometry instead.' );\n\treturn new LineSegments( new EdgesGeometry( object.geometry ), new LineBasicMaterial( { color: hex !== undefined ? hex : 0xffffff } ) );\n\n}\n\nGridHelper.prototype.setColors = function () {\n\n\tconsole.error( 'THREE.GridHelper: setColors() has been deprecated, pass them in the constructor instead.' );\n\n};\n\nSkeletonHelper.prototype.update = function () {\n\n\tconsole.error( 'THREE.SkeletonHelper: update() no longer needs to be called.' );\n\n};\n\nfunction WireframeHelper( object, hex ) {\n\n\tconsole.warn( 'THREE.WireframeHelper has been removed. Use THREE.WireframeGeometry instead.' );\n\treturn new LineSegments( new WireframeGeometry( object.geometry ), new LineBasicMaterial( { color: hex !== undefined ? hex : 0xffffff } ) );\n\n}\n\n//\n\nObject.assign( Loader.prototype, {\n\n\textractUrlBase: function ( url ) {\n\n\t\tconsole.warn( 'THREE.Loader: .extractUrlBase() has been deprecated. Use THREE.LoaderUtils.extractUrlBase() instead.' );\n\t\treturn LoaderUtils.extractUrlBase( url );\n\n\t}\n\n} );\n\nLoader.Handlers = {\n\n\tadd: function ( /* regex, loader */ ) {\n\n\t\tconsole.error( 'THREE.Loader: Handlers.add() has been removed. Use LoadingManager.addHandler() instead.' );\n\n\t},\n\n\tget: function ( /* file */ ) {\n\n\t\tconsole.error( 'THREE.Loader: Handlers.get() has been removed. Use LoadingManager.getHandler() instead.' );\n\n\t}\n\n};\n\nfunction XHRLoader( manager ) {\n\n\tconsole.warn( 'THREE.XHRLoader has been renamed to THREE.FileLoader.' );\n\treturn new FileLoader( manager );\n\n}\n\nfunction BinaryTextureLoader( manager ) {\n\n\tconsole.warn( 'THREE.BinaryTextureLoader has been renamed to THREE.DataTextureLoader.' );\n\treturn new DataTextureLoader( manager );\n\n}\n\nObject.assign( ObjectLoader.prototype, {\n\n\tsetTexturePath: function ( value ) {\n\n\t\tconsole.warn( 'THREE.ObjectLoader: .setTexturePath() has been renamed to .setResourcePath().' );\n\t\treturn this.setResourcePath( value );\n\n\t}\n\n} );\n\n//\n\nObject.assign( Box2.prototype, {\n\n\tcenter: function ( optionalTarget ) {\n\n\t\tconsole.warn( 'THREE.Box2: .center() has been renamed to .getCenter().' );\n\t\treturn this.getCenter( optionalTarget );\n\n\t},\n\tempty: function () {\n\n\t\tconsole.warn( 'THREE.Box2: .empty() has been renamed to .isEmpty().' );\n\t\treturn this.isEmpty();\n\n\t},\n\tisIntersectionBox: function ( box ) {\n\n\t\tconsole.warn( 'THREE.Box2: .isIntersectionBox() has been renamed to .intersectsBox().' );\n\t\treturn this.intersectsBox( box );\n\n\t},\n\tsize: function ( optionalTarget ) {\n\n\t\tconsole.warn( 'THREE.Box2: .size() has been renamed to .getSize().' );\n\t\treturn this.getSize( optionalTarget );\n\n\t}\n} );\n\nObject.assign( Box3.prototype, {\n\n\tcenter: function ( optionalTarget ) {\n\n\t\tconsole.warn( 'THREE.Box3: .center() has been renamed to .getCenter().' );\n\t\treturn this.getCenter( optionalTarget );\n\n\t},\n\tempty: function () {\n\n\t\tconsole.warn( 'THREE.Box3: .empty() has been renamed to .isEmpty().' );\n\t\treturn this.isEmpty();\n\n\t},\n\tisIntersectionBox: function ( box ) {\n\n\t\tconsole.warn( 'THREE.Box3: .isIntersectionBox() has been renamed to .intersectsBox().' );\n\t\treturn this.intersectsBox( box );\n\n\t},\n\tisIntersectionSphere: function ( sphere ) {\n\n\t\tconsole.warn( 'THREE.Box3: .isIntersectionSphere() has been renamed to .intersectsSphere().' );\n\t\treturn this.intersectsSphere( sphere );\n\n\t},\n\tsize: function ( optionalTarget ) {\n\n\t\tconsole.warn( 'THREE.Box3: .size() has been renamed to .getSize().' );\n\t\treturn this.getSize( optionalTarget );\n\n\t}\n} );\n\nObject.assign( Sphere.prototype, {\n\n\tempty: function () {\n\n\t\tconsole.warn( 'THREE.Sphere: .empty() has been renamed to .isEmpty().' );\n\t\treturn this.isEmpty();\n\n\t},\n\n} );\n\nFrustum.prototype.setFromMatrix = function ( m ) {\n\n\tconsole.warn( 'THREE.Frustum: .setFromMatrix() has been renamed to .setFromProjectionMatrix().' );\n\treturn this.setFromProjectionMatrix( m );\n\n};\n\nLine3.prototype.center = function ( optionalTarget ) {\n\n\tconsole.warn( 'THREE.Line3: .center() has been renamed to .getCenter().' );\n\treturn this.getCenter( optionalTarget );\n\n};\n\nObject.assign( MathUtils, {\n\n\trandom16: function () {\n\n\t\tconsole.warn( 'THREE.Math: .random16() has been deprecated. Use Math.random() instead.' );\n\t\treturn Math.random();\n\n\t},\n\n\tnearestPowerOfTwo: function ( value ) {\n\n\t\tconsole.warn( 'THREE.Math: .nearestPowerOfTwo() has been renamed to .floorPowerOfTwo().' );\n\t\treturn MathUtils.floorPowerOfTwo( value );\n\n\t},\n\n\tnextPowerOfTwo: function ( value ) {\n\n\t\tconsole.warn( 'THREE.Math: .nextPowerOfTwo() has been renamed to .ceilPowerOfTwo().' );\n\t\treturn MathUtils.ceilPowerOfTwo( value );\n\n\t}\n\n} );\n\nObject.assign( Matrix3.prototype, {\n\n\tflattenToArrayOffset: function ( array, offset ) {\n\n\t\tconsole.warn( \"THREE.Matrix3: .flattenToArrayOffset() has been deprecated. Use .toArray() instead.\" );\n\t\treturn this.toArray( array, offset );\n\n\t},\n\tmultiplyVector3: function ( vector ) {\n\n\t\tconsole.warn( 'THREE.Matrix3: .multiplyVector3() has been removed. Use vector.applyMatrix3( matrix ) instead.' );\n\t\treturn vector.applyMatrix3( this );\n\n\t},\n\tmultiplyVector3Array: function ( /* a */ ) {\n\n\t\tconsole.error( 'THREE.Matrix3: .multiplyVector3Array() has been removed.' );\n\n\t},\n\tapplyToBufferAttribute: function ( attribute ) {\n\n\t\tconsole.warn( 'THREE.Matrix3: .applyToBufferAttribute() has been removed. Use attribute.applyMatrix3( matrix ) instead.' );\n\t\treturn attribute.applyMatrix3( this );\n\n\t},\n\tapplyToVector3Array: function ( /* array, offset, length */ ) {\n\n\t\tconsole.error( 'THREE.Matrix3: .applyToVector3Array() has been removed.' );\n\n\t}\n\n} );\n\nObject.assign( Matrix4.prototype, {\n\n\textractPosition: function ( m ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .extractPosition() has been renamed to .copyPosition().' );\n\t\treturn this.copyPosition( m );\n\n\t},\n\tflattenToArrayOffset: function ( array, offset ) {\n\n\t\tconsole.warn( \"THREE.Matrix4: .flattenToArrayOffset() has been deprecated. Use .toArray() instead.\" );\n\t\treturn this.toArray( array, offset );\n\n\t},\n\tgetPosition: function () {\n\n\t\tconsole.warn( 'THREE.Matrix4: .getPosition() has been removed. Use Vector3.setFromMatrixPosition( matrix ) instead.' );\n\t\treturn new Vector3().setFromMatrixColumn( this, 3 );\n\n\t},\n\tsetRotationFromQuaternion: function ( q ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .setRotationFromQuaternion() has been renamed to .makeRotationFromQuaternion().' );\n\t\treturn this.makeRotationFromQuaternion( q );\n\n\t},\n\tmultiplyToArray: function () {\n\n\t\tconsole.warn( 'THREE.Matrix4: .multiplyToArray() has been removed.' );\n\n\t},\n\tmultiplyVector3: function ( vector ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .multiplyVector3() has been removed. Use vector.applyMatrix4( matrix ) instead.' );\n\t\treturn vector.applyMatrix4( this );\n\n\t},\n\tmultiplyVector4: function ( vector ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .multiplyVector4() has been removed. Use vector.applyMatrix4( matrix ) instead.' );\n\t\treturn vector.applyMatrix4( this );\n\n\t},\n\tmultiplyVector3Array: function ( /* a */ ) {\n\n\t\tconsole.error( 'THREE.Matrix4: .multiplyVector3Array() has been removed.' );\n\n\t},\n\trotateAxis: function ( v ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .rotateAxis() has been removed. Use Vector3.transformDirection( matrix ) instead.' );\n\t\tv.transformDirection( this );\n\n\t},\n\tcrossVector: function ( vector ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .crossVector() has been removed. Use vector.applyMatrix4( matrix ) instead.' );\n\t\treturn vector.applyMatrix4( this );\n\n\t},\n\ttranslate: function () {\n\n\t\tconsole.error( 'THREE.Matrix4: .translate() has been removed.' );\n\n\t},\n\trotateX: function () {\n\n\t\tconsole.error( 'THREE.Matrix4: .rotateX() has been removed.' );\n\n\t},\n\trotateY: function () {\n\n\t\tconsole.error( 'THREE.Matrix4: .rotateY() has been removed.' );\n\n\t},\n\trotateZ: function () {\n\n\t\tconsole.error( 'THREE.Matrix4: .rotateZ() has been removed.' );\n\n\t},\n\trotateByAxis: function () {\n\n\t\tconsole.error( 'THREE.Matrix4: .rotateByAxis() has been removed.' );\n\n\t},\n\tapplyToBufferAttribute: function ( attribute ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .applyToBufferAttribute() has been removed. Use attribute.applyMatrix4( matrix ) instead.' );\n\t\treturn attribute.applyMatrix4( this );\n\n\t},\n\tapplyToVector3Array: function ( /* array, offset, length */ ) {\n\n\t\tconsole.error( 'THREE.Matrix4: .applyToVector3Array() has been removed.' );\n\n\t},\n\tmakeFrustum: function ( left, right, bottom, top, near, far ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .makeFrustum() has been removed. Use .makePerspective( left, right, top, bottom, near, far ) instead.' );\n\t\treturn this.makePerspective( left, right, top, bottom, near, far );\n\n\t}\n\n} );\n\nPlane.prototype.isIntersectionLine = function ( line ) {\n\n\tconsole.warn( 'THREE.Plane: .isIntersectionLine() has been renamed to .intersectsLine().' );\n\treturn this.intersectsLine( line );\n\n};\n\nQuaternion.prototype.multiplyVector3 = function ( vector ) {\n\n\tconsole.warn( 'THREE.Quaternion: .multiplyVector3() has been removed. Use is now vector.applyQuaternion( quaternion ) instead.' );\n\treturn vector.applyQuaternion( this );\n\n};\n\nObject.assign( Ray.prototype, {\n\n\tisIntersectionBox: function ( box ) {\n\n\t\tconsole.warn( 'THREE.Ray: .isIntersectionBox() has been renamed to .intersectsBox().' );\n\t\treturn this.intersectsBox( box );\n\n\t},\n\tisIntersectionPlane: function ( plane ) {\n\n\t\tconsole.warn( 'THREE.Ray: .isIntersectionPlane() has been renamed to .intersectsPlane().' );\n\t\treturn this.intersectsPlane( plane );\n\n\t},\n\tisIntersectionSphere: function ( sphere ) {\n\n\t\tconsole.warn( 'THREE.Ray: .isIntersectionSphere() has been renamed to .intersectsSphere().' );\n\t\treturn this.intersectsSphere( sphere );\n\n\t}\n\n} );\n\nObject.assign( Triangle.prototype, {\n\n\tarea: function () {\n\n\t\tconsole.warn( 'THREE.Triangle: .area() has been renamed to .getArea().' );\n\t\treturn this.getArea();\n\n\t},\n\tbarycoordFromPoint: function ( point, target ) {\n\n\t\tconsole.warn( 'THREE.Triangle: .barycoordFromPoint() has been renamed to .getBarycoord().' );\n\t\treturn this.getBarycoord( point, target );\n\n\t},\n\tmidpoint: function ( target ) {\n\n\t\tconsole.warn( 'THREE.Triangle: .midpoint() has been renamed to .getMidpoint().' );\n\t\treturn this.getMidpoint( target );\n\n\t},\n\tnormal: function ( target ) {\n\n\t\tconsole.warn( 'THREE.Triangle: .normal() has been renamed to .getNormal().' );\n\t\treturn this.getNormal( target );\n\n\t},\n\tplane: function ( target ) {\n\n\t\tconsole.warn( 'THREE.Triangle: .plane() has been renamed to .getPlane().' );\n\t\treturn this.getPlane( target );\n\n\t}\n\n} );\n\nObject.assign( Triangle, {\n\n\tbarycoordFromPoint: function ( point, a, b, c, target ) {\n\n\t\tconsole.warn( 'THREE.Triangle: .barycoordFromPoint() has been renamed to .getBarycoord().' );\n\t\treturn Triangle.getBarycoord( point, a, b, c, target );\n\n\t},\n\tnormal: function ( a, b, c, target ) {\n\n\t\tconsole.warn( 'THREE.Triangle: .normal() has been renamed to .getNormal().' );\n\t\treturn Triangle.getNormal( a, b, c, target );\n\n\t}\n\n} );\n\nObject.assign( Shape.prototype, {\n\n\textractAllPoints: function ( divisions ) {\n\n\t\tconsole.warn( 'THREE.Shape: .extractAllPoints() has been removed. Use .extractPoints() instead.' );\n\t\treturn this.extractPoints( divisions );\n\n\t},\n\textrude: function ( options ) {\n\n\t\tconsole.warn( 'THREE.Shape: .extrude() has been removed. Use ExtrudeGeometry() instead.' );\n\t\treturn new ExtrudeGeometry( this, options );\n\n\t},\n\tmakeGeometry: function ( options ) {\n\n\t\tconsole.warn( 'THREE.Shape: .makeGeometry() has been removed. Use ShapeGeometry() instead.' );\n\t\treturn new ShapeGeometry( this, options );\n\n\t}\n\n} );\n\nObject.assign( Vector2.prototype, {\n\n\tfromAttribute: function ( attribute, index, offset ) {\n\n\t\tconsole.warn( 'THREE.Vector2: .fromAttribute() has been renamed to .fromBufferAttribute().' );\n\t\treturn this.fromBufferAttribute( attribute, index, offset );\n\n\t},\n\tdistanceToManhattan: function ( v ) {\n\n\t\tconsole.warn( 'THREE.Vector2: .distanceToManhattan() has been renamed to .manhattanDistanceTo().' );\n\t\treturn this.manhattanDistanceTo( v );\n\n\t},\n\tlengthManhattan: function () {\n\n\t\tconsole.warn( 'THREE.Vector2: .lengthManhattan() has been renamed to .manhattanLength().' );\n\t\treturn this.manhattanLength();\n\n\t}\n\n} );\n\nObject.assign( Vector3.prototype, {\n\n\tsetEulerFromRotationMatrix: function () {\n\n\t\tconsole.error( 'THREE.Vector3: .setEulerFromRotationMatrix() has been removed. Use Euler.setFromRotationMatrix() instead.' );\n\n\t},\n\tsetEulerFromQuaternion: function () {\n\n\t\tconsole.error( 'THREE.Vector3: .setEulerFromQuaternion() has been removed. Use Euler.setFromQuaternion() instead.' );\n\n\t},\n\tgetPositionFromMatrix: function ( m ) {\n\n\t\tconsole.warn( 'THREE.Vector3: .getPositionFromMatrix() has been renamed to .setFromMatrixPosition().' );\n\t\treturn this.setFromMatrixPosition( m );\n\n\t},\n\tgetScaleFromMatrix: function ( m ) {\n\n\t\tconsole.warn( 'THREE.Vector3: .getScaleFromMatrix() has been renamed to .setFromMatrixScale().' );\n\t\treturn this.setFromMatrixScale( m );\n\n\t},\n\tgetColumnFromMatrix: function ( index, matrix ) {\n\n\t\tconsole.warn( 'THREE.Vector3: .getColumnFromMatrix() has been renamed to .setFromMatrixColumn().' );\n\t\treturn this.setFromMatrixColumn( matrix, index );\n\n\t},\n\tapplyProjection: function ( m ) {\n\n\t\tconsole.warn( 'THREE.Vector3: .applyProjection() has been removed. Use .applyMatrix4( m ) instead.' );\n\t\treturn this.applyMatrix4( m );\n\n\t},\n\tfromAttribute: function ( attribute, index, offset ) {\n\n\t\tconsole.warn( 'THREE.Vector3: .fromAttribute() has been renamed to .fromBufferAttribute().' );\n\t\treturn this.fromBufferAttribute( attribute, index, offset );\n\n\t},\n\tdistanceToManhattan: function ( v ) {\n\n\t\tconsole.warn( 'THREE.Vector3: .distanceToManhattan() has been renamed to .manhattanDistanceTo().' );\n\t\treturn this.manhattanDistanceTo( v );\n\n\t},\n\tlengthManhattan: function () {\n\n\t\tconsole.warn( 'THREE.Vector3: .lengthManhattan() has been renamed to .manhattanLength().' );\n\t\treturn this.manhattanLength();\n\n\t}\n\n} );\n\nObject.assign( Vector4.prototype, {\n\n\tfromAttribute: function ( attribute, index, offset ) {\n\n\t\tconsole.warn( 'THREE.Vector4: .fromAttribute() has been renamed to .fromBufferAttribute().' );\n\t\treturn this.fromBufferAttribute( attribute, index, offset );\n\n\t},\n\tlengthManhattan: function () {\n\n\t\tconsole.warn( 'THREE.Vector4: .lengthManhattan() has been renamed to .manhattanLength().' );\n\t\treturn this.manhattanLength();\n\n\t}\n\n} );\n\n//\n\nObject.assign( Geometry.prototype, {\n\n\tcomputeTangents: function () {\n\n\t\tconsole.error( 'THREE.Geometry: .computeTangents() has been removed.' );\n\n\t},\n\tcomputeLineDistances: function () {\n\n\t\tconsole.error( 'THREE.Geometry: .computeLineDistances() has been removed. Use THREE.Line.computeLineDistances() instead.' );\n\n\t},\n\tapplyMatrix: function ( matrix ) {\n\n\t\tconsole.warn( 'THREE.Geometry: .applyMatrix() has been renamed to .applyMatrix4().' );\n\t\treturn this.applyMatrix4( matrix );\n\n\t}\n\n} );\n\nObject.assign( Object3D.prototype, {\n\n\tgetChildByName: function ( name ) {\n\n\t\tconsole.warn( 'THREE.Object3D: .getChildByName() has been renamed to .getObjectByName().' );\n\t\treturn this.getObjectByName( name );\n\n\t},\n\trenderDepth: function () {\n\n\t\tconsole.warn( 'THREE.Object3D: .renderDepth has been removed. Use .renderOrder, instead.' );\n\n\t},\n\ttranslate: function ( distance, axis ) {\n\n\t\tconsole.warn( 'THREE.Object3D: .translate() has been removed. Use .translateOnAxis( axis, distance ) instead.' );\n\t\treturn this.translateOnAxis( axis, distance );\n\n\t},\n\tgetWorldRotation: function () {\n\n\t\tconsole.error( 'THREE.Object3D: .getWorldRotation() has been removed. Use THREE.Object3D.getWorldQuaternion( target ) instead.' );\n\n\t},\n\tapplyMatrix: function ( matrix ) {\n\n\t\tconsole.warn( 'THREE.Object3D: .applyMatrix() has been renamed to .applyMatrix4().' );\n\t\treturn this.applyMatrix4( matrix );\n\n\t}\n\n} );\n\nObject.defineProperties( Object3D.prototype, {\n\n\teulerOrder: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .eulerOrder is now .rotation.order.' );\n\t\t\treturn this.rotation.order;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .eulerOrder is now .rotation.order.' );\n\t\t\tthis.rotation.order = value;\n\n\t\t}\n\t},\n\tuseQuaternion: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.' );\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.' );\n\n\t\t}\n\t}\n\n} );\n\nObject.assign( Mesh.prototype, {\n\n\tsetDrawMode: function () {\n\n\t\tconsole.error( 'THREE.Mesh: .setDrawMode() has been removed. The renderer now always assumes THREE.TrianglesDrawMode. Transform your geometry via BufferGeometryUtils.toTrianglesDrawMode() if necessary.' );\n\n\t},\n\n} );\n\nObject.defineProperties( Mesh.prototype, {\n\n\tdrawMode: {\n\t\tget: function () {\n\n\t\t\tconsole.error( 'THREE.Mesh: .drawMode has been removed. The renderer now always assumes THREE.TrianglesDrawMode.' );\n\t\t\treturn TrianglesDrawMode;\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.error( 'THREE.Mesh: .drawMode has been removed. The renderer now always assumes THREE.TrianglesDrawMode. Transform your geometry via BufferGeometryUtils.toTrianglesDrawMode() if necessary.' );\n\n\t\t}\n\t}\n\n} );\n\nObject.defineProperties( LOD.prototype, {\n\n\tobjects: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.LOD: .objects has been renamed to .levels.' );\n\t\t\treturn this.levels;\n\n\t\t}\n\t}\n\n} );\n\nObject.defineProperty( Skeleton.prototype, 'useVertexTexture', {\n\n\tget: function () {\n\n\t\tconsole.warn( 'THREE.Skeleton: useVertexTexture has been removed.' );\n\n\t},\n\tset: function () {\n\n\t\tconsole.warn( 'THREE.Skeleton: useVertexTexture has been removed.' );\n\n\t}\n\n} );\n\nSkinnedMesh.prototype.initBones = function () {\n\n\tconsole.error( 'THREE.SkinnedMesh: initBones() has been removed.' );\n\n};\n\nObject.defineProperty( Curve.prototype, '__arcLengthDivisions', {\n\n\tget: function () {\n\n\t\tconsole.warn( 'THREE.Curve: .__arcLengthDivisions is now .arcLengthDivisions.' );\n\t\treturn this.arcLengthDivisions;\n\n\t},\n\tset: function ( value ) {\n\n\t\tconsole.warn( 'THREE.Curve: .__arcLengthDivisions is now .arcLengthDivisions.' );\n\t\tthis.arcLengthDivisions = value;\n\n\t}\n\n} );\n\n//\n\nPerspectiveCamera.prototype.setLens = function ( focalLength, filmGauge ) {\n\n\tconsole.warn( \"THREE.PerspectiveCamera.setLens is deprecated. \" +\n\t\t\t\"Use .setFocalLength and .filmGauge for a photographic setup.\" );\n\n\tif ( filmGauge !== undefined ) this.filmGauge = filmGauge;\n\tthis.setFocalLength( focalLength );\n\n};\n\n//\n\nObject.defineProperties( Light.prototype, {\n\tonlyShadow: {\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Light: .onlyShadow has been removed.' );\n\n\t\t}\n\t},\n\tshadowCameraFov: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraFov is now .shadow.camera.fov.' );\n\t\t\tthis.shadow.camera.fov = value;\n\n\t\t}\n\t},\n\tshadowCameraLeft: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraLeft is now .shadow.camera.left.' );\n\t\t\tthis.shadow.camera.left = value;\n\n\t\t}\n\t},\n\tshadowCameraRight: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraRight is now .shadow.camera.right.' );\n\t\t\tthis.shadow.camera.right = value;\n\n\t\t}\n\t},\n\tshadowCameraTop: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraTop is now .shadow.camera.top.' );\n\t\t\tthis.shadow.camera.top = value;\n\n\t\t}\n\t},\n\tshadowCameraBottom: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraBottom is now .shadow.camera.bottom.' );\n\t\t\tthis.shadow.camera.bottom = value;\n\n\t\t}\n\t},\n\tshadowCameraNear: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraNear is now .shadow.camera.near.' );\n\t\t\tthis.shadow.camera.near = value;\n\n\t\t}\n\t},\n\tshadowCameraFar: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraFar is now .shadow.camera.far.' );\n\t\t\tthis.shadow.camera.far = value;\n\n\t\t}\n\t},\n\tshadowCameraVisible: {\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraVisible has been removed. Use new THREE.CameraHelper( light.shadow.camera ) instead.' );\n\n\t\t}\n\t},\n\tshadowBias: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowBias is now .shadow.bias.' );\n\t\t\tthis.shadow.bias = value;\n\n\t\t}\n\t},\n\tshadowDarkness: {\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowDarkness has been removed.' );\n\n\t\t}\n\t},\n\tshadowMapWidth: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowMapWidth is now .shadow.mapSize.width.' );\n\t\t\tthis.shadow.mapSize.width = value;\n\n\t\t}\n\t},\n\tshadowMapHeight: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowMapHeight is now .shadow.mapSize.height.' );\n\t\t\tthis.shadow.mapSize.height = value;\n\n\t\t}\n\t}\n} );\n\n//\n\nObject.defineProperties( BufferAttribute.prototype, {\n\n\tlength: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.BufferAttribute: .length has been deprecated. Use .count instead.' );\n\t\t\treturn this.array.length;\n\n\t\t}\n\t},\n\tdynamic: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.BufferAttribute: .dynamic has been deprecated. Use .usage instead.' );\n\t\t\treturn this.usage === DynamicDrawUsage;\n\n\t\t},\n\t\tset: function ( /* value */ ) {\n\n\t\t\tconsole.warn( 'THREE.BufferAttribute: .dynamic has been deprecated. Use .usage instead.' );\n\t\t\tthis.setUsage( DynamicDrawUsage );\n\n\t\t}\n\t}\n\n} );\n\nObject.assign( BufferAttribute.prototype, {\n\tsetDynamic: function ( value ) {\n\n\t\tconsole.warn( 'THREE.BufferAttribute: .setDynamic() has been deprecated. Use .setUsage() instead.' );\n\t\tthis.setUsage( value === true ? DynamicDrawUsage : StaticDrawUsage );\n\t\treturn this;\n\n\t},\n\tcopyIndicesArray: function ( /* indices */ ) {\n\n\t\tconsole.error( 'THREE.BufferAttribute: .copyIndicesArray() has been removed.' );\n\n\t},\n\tsetArray: function ( /* array */ ) {\n\n\t\tconsole.error( 'THREE.BufferAttribute: .setArray has been removed. Use BufferGeometry .setAttribute to replace/resize attribute buffers' );\n\n\t}\n} );\n\nObject.assign( BufferGeometry.prototype, {\n\n\taddIndex: function ( index ) {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .addIndex() has been renamed to .setIndex().' );\n\t\tthis.setIndex( index );\n\n\t},\n\taddAttribute: function ( name, attribute ) {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .addAttribute() has been renamed to .setAttribute().' );\n\n\t\tif ( ! ( attribute && attribute.isBufferAttribute ) && ! ( attribute && attribute.isInterleavedBufferAttribute ) ) {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry: .addAttribute() now expects ( name, attribute ).' );\n\n\t\t\treturn this.setAttribute( name, new BufferAttribute( arguments[ 1 ], arguments[ 2 ] ) );\n\n\t\t}\n\n\t\tif ( name === 'index' ) {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry.addAttribute: Use .setIndex() for index attribute.' );\n\t\t\tthis.setIndex( attribute );\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\treturn this.setAttribute( name, attribute );\n\n\t},\n\taddDrawCall: function ( start, count, indexOffset ) {\n\n\t\tif ( indexOffset !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry: .addDrawCall() no longer supports indexOffset.' );\n\n\t\t}\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .addDrawCall() is now .addGroup().' );\n\t\tthis.addGroup( start, count );\n\n\t},\n\tclearDrawCalls: function () {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .clearDrawCalls() is now .clearGroups().' );\n\t\tthis.clearGroups();\n\n\t},\n\tcomputeTangents: function () {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .computeTangents() has been removed.' );\n\n\t},\n\tcomputeOffsets: function () {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .computeOffsets() has been removed.' );\n\n\t},\n\tremoveAttribute: function ( name ) {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .removeAttribute() has been renamed to .deleteAttribute().' );\n\n\t\treturn this.deleteAttribute( name );\n\n\t},\n\tapplyMatrix: function ( matrix ) {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .applyMatrix() has been renamed to .applyMatrix4().' );\n\t\treturn this.applyMatrix4( matrix );\n\n\t}\n\n} );\n\nObject.defineProperties( BufferGeometry.prototype, {\n\n\tdrawcalls: {\n\t\tget: function () {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry: .drawcalls has been renamed to .groups.' );\n\t\t\treturn this.groups;\n\n\t\t}\n\t},\n\toffsets: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry: .offsets has been renamed to .groups.' );\n\t\t\treturn this.groups;\n\n\t\t}\n\t}\n\n} );\n\nObject.defineProperties( InstancedBufferGeometry.prototype, {\n\n\tmaxInstancedCount: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.InstancedBufferGeometry: .maxInstancedCount has been renamed to .instanceCount.' );\n\t\t\treturn this.instanceCount;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.InstancedBufferGeometry: .maxInstancedCount has been renamed to .instanceCount.' );\n\t\t\tthis.instanceCount = value;\n\n\t\t}\n\t}\n\n} );\n\nObject.defineProperties( Raycaster.prototype, {\n\n\tlinePrecision: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Raycaster: .linePrecision has been deprecated. Use .params.Line.threshold instead.' );\n\t\t\treturn this.params.Line.threshold;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Raycaster: .linePrecision has been deprecated. Use .params.Line.threshold instead.' );\n\t\t\tthis.params.Line.threshold = value;\n\n\t\t}\n\t}\n\n} );\n\nObject.defineProperties( InterleavedBuffer.prototype, {\n\n\tdynamic: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.InterleavedBuffer: .length has been deprecated. Use .usage instead.' );\n\t\t\treturn this.usage === DynamicDrawUsage;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.InterleavedBuffer: .length has been deprecated. Use .usage instead.' );\n\t\t\tthis.setUsage( value );\n\n\t\t}\n\t}\n\n} );\n\nObject.assign( InterleavedBuffer.prototype, {\n\tsetDynamic: function ( value ) {\n\n\t\tconsole.warn( 'THREE.InterleavedBuffer: .setDynamic() has been deprecated. Use .setUsage() instead.' );\n\t\tthis.setUsage( value === true ? DynamicDrawUsage : StaticDrawUsage );\n\t\treturn this;\n\n\t},\n\tsetArray: function ( /* array */ ) {\n\n\t\tconsole.error( 'THREE.InterleavedBuffer: .setArray has been removed. Use BufferGeometry .setAttribute to replace/resize attribute buffers' );\n\n\t}\n} );\n\n//\n\nObject.assign( ExtrudeBufferGeometry.prototype, {\n\n\tgetArrays: function () {\n\n\t\tconsole.error( 'THREE.ExtrudeBufferGeometry: .getArrays() has been removed.' );\n\n\t},\n\n\taddShapeList: function () {\n\n\t\tconsole.error( 'THREE.ExtrudeBufferGeometry: .addShapeList() has been removed.' );\n\n\t},\n\n\taddShape: function () {\n\n\t\tconsole.error( 'THREE.ExtrudeBufferGeometry: .addShape() has been removed.' );\n\n\t}\n\n} );\n\n//\n\nObject.assign( Scene.prototype, {\n\n\tdispose: function () {\n\n\t\tconsole.error( 'THREE.Scene: .dispose() has been removed.' );\n\n\t}\n\n} );\n\n//\n\nObject.defineProperties( Uniform.prototype, {\n\n\tdynamic: {\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Uniform: .dynamic has been removed. Use object.onBeforeRender() instead.' );\n\n\t\t}\n\t},\n\tonUpdate: {\n\t\tvalue: function () {\n\n\t\t\tconsole.warn( 'THREE.Uniform: .onUpdate() has been removed. Use object.onBeforeRender() instead.' );\n\t\t\treturn this;\n\n\t\t}\n\t}\n\n} );\n\n//\n\nObject.defineProperties( Material.prototype, {\n\n\twrapAround: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Material: .wrapAround has been removed.' );\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Material: .wrapAround has been removed.' );\n\n\t\t}\n\t},\n\n\toverdraw: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Material: .overdraw has been removed.' );\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Material: .overdraw has been removed.' );\n\n\t\t}\n\t},\n\n\twrapRGB: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Material: .wrapRGB has been removed.' );\n\t\t\treturn new Color();\n\n\t\t}\n\t},\n\n\tshading: {\n\t\tget: function () {\n\n\t\t\tconsole.error( 'THREE.' + this.type + ': .shading has been removed. Use the boolean .flatShading instead.' );\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.' + this.type + ': .shading has been removed. Use the boolean .flatShading instead.' );\n\t\t\tthis.flatShading = ( value === FlatShading );\n\n\t\t}\n\t},\n\n\tstencilMask: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.' + this.type + ': .stencilMask has been removed. Use .stencilFuncMask instead.' );\n\t\t\treturn this.stencilFuncMask;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.' + this.type + ': .stencilMask has been removed. Use .stencilFuncMask instead.' );\n\t\t\tthis.stencilFuncMask = value;\n\n\t\t}\n\t}\n\n} );\n\nObject.defineProperties( MeshPhongMaterial.prototype, {\n\n\tmetal: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.MeshPhongMaterial: .metal has been removed. Use THREE.MeshStandardMaterial instead.' );\n\t\t\treturn false;\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.MeshPhongMaterial: .metal has been removed. Use THREE.MeshStandardMaterial instead' );\n\n\t\t}\n\t}\n\n} );\n\nObject.defineProperties( MeshPhysicalMaterial.prototype, {\n\n\ttransparency: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.MeshPhysicalMaterial: .transparency has been renamed to .transmission.' );\n\t\t\treturn this.transmission;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.MeshPhysicalMaterial: .transparency has been renamed to .transmission.' );\n\t\t\tthis.transmission = value;\n\n\t\t}\n\t}\n\n} );\n\nObject.defineProperties( ShaderMaterial.prototype, {\n\n\tderivatives: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.ShaderMaterial: .derivatives has been moved to .extensions.derivatives.' );\n\t\t\treturn this.extensions.derivatives;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE. ShaderMaterial: .derivatives has been moved to .extensions.derivatives.' );\n\t\t\tthis.extensions.derivatives = value;\n\n\t\t}\n\t}\n\n} );\n\n//\n\nObject.assign( WebGLRenderer.prototype, {\n\n\tclearTarget: function ( renderTarget, color, depth, stencil ) {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .clearTarget() has been deprecated. Use .setRenderTarget() and .clear() instead.' );\n\t\tthis.setRenderTarget( renderTarget );\n\t\tthis.clear( color, depth, stencil );\n\n\t},\n\tanimate: function ( callback ) {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .animate() is now .setAnimationLoop().' );\n\t\tthis.setAnimationLoop( callback );\n\n\t},\n\tgetCurrentRenderTarget: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .getCurrentRenderTarget() is now .getRenderTarget().' );\n\t\treturn this.getRenderTarget();\n\n\t},\n\tgetMaxAnisotropy: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .getMaxAnisotropy() is now .capabilities.getMaxAnisotropy().' );\n\t\treturn this.capabilities.getMaxAnisotropy();\n\n\t},\n\tgetPrecision: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .getPrecision() is now .capabilities.precision.' );\n\t\treturn this.capabilities.precision;\n\n\t},\n\tresetGLState: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .resetGLState() is now .state.reset().' );\n\t\treturn this.state.reset();\n\n\t},\n\tsupportsFloatTextures: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsFloatTextures() is now .extensions.get( \\'OES_texture_float\\' ).' );\n\t\treturn this.extensions.get( 'OES_texture_float' );\n\n\t},\n\tsupportsHalfFloatTextures: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsHalfFloatTextures() is now .extensions.get( \\'OES_texture_half_float\\' ).' );\n\t\treturn this.extensions.get( 'OES_texture_half_float' );\n\n\t},\n\tsupportsStandardDerivatives: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsStandardDerivatives() is now .extensions.get( \\'OES_standard_derivatives\\' ).' );\n\t\treturn this.extensions.get( 'OES_standard_derivatives' );\n\n\t},\n\tsupportsCompressedTextureS3TC: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsCompressedTextureS3TC() is now .extensions.get( \\'WEBGL_compressed_texture_s3tc\\' ).' );\n\t\treturn this.extensions.get( 'WEBGL_compressed_texture_s3tc' );\n\n\t},\n\tsupportsCompressedTexturePVRTC: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsCompressedTexturePVRTC() is now .extensions.get( \\'WEBGL_compressed_texture_pvrtc\\' ).' );\n\t\treturn this.extensions.get( 'WEBGL_compressed_texture_pvrtc' );\n\n\t},\n\tsupportsBlendMinMax: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsBlendMinMax() is now .extensions.get( \\'EXT_blend_minmax\\' ).' );\n\t\treturn this.extensions.get( 'EXT_blend_minmax' );\n\n\t},\n\tsupportsVertexTextures: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsVertexTextures() is now .capabilities.vertexTextures.' );\n\t\treturn this.capabilities.vertexTextures;\n\n\t},\n\tsupportsInstancedArrays: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsInstancedArrays() is now .extensions.get( \\'ANGLE_instanced_arrays\\' ).' );\n\t\treturn this.extensions.get( 'ANGLE_instanced_arrays' );\n\n\t},\n\tenableScissorTest: function ( boolean ) {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .enableScissorTest() is now .setScissorTest().' );\n\t\tthis.setScissorTest( boolean );\n\n\t},\n\tinitMaterial: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .initMaterial() has been removed.' );\n\n\t},\n\taddPrePlugin: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .addPrePlugin() has been removed.' );\n\n\t},\n\taddPostPlugin: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .addPostPlugin() has been removed.' );\n\n\t},\n\tupdateShadowMap: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .updateShadowMap() has been removed.' );\n\n\t},\n\tsetFaceCulling: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .setFaceCulling() has been removed.' );\n\n\t},\n\tallocTextureUnit: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .allocTextureUnit() has been removed.' );\n\n\t},\n\tsetTexture: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .setTexture() has been removed.' );\n\n\t},\n\tsetTexture2D: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .setTexture2D() has been removed.' );\n\n\t},\n\tsetTextureCube: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .setTextureCube() has been removed.' );\n\n\t},\n\tgetActiveMipMapLevel: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .getActiveMipMapLevel() is now .getActiveMipmapLevel().' );\n\t\treturn this.getActiveMipmapLevel();\n\n\t}\n\n} );\n\nObject.defineProperties( WebGLRenderer.prototype, {\n\n\tshadowMapEnabled: {\n\t\tget: function () {\n\n\t\t\treturn this.shadowMap.enabled;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapEnabled is now .shadowMap.enabled.' );\n\t\t\tthis.shadowMap.enabled = value;\n\n\t\t}\n\t},\n\tshadowMapType: {\n\t\tget: function () {\n\n\t\t\treturn this.shadowMap.type;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapType is now .shadowMap.type.' );\n\t\t\tthis.shadowMap.type = value;\n\n\t\t}\n\t},\n\tshadowMapCullFace: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapCullFace has been removed. Set Material.shadowSide instead.' );\n\t\t\treturn undefined;\n\n\t\t},\n\t\tset: function ( /* value */ ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapCullFace has been removed. Set Material.shadowSide instead.' );\n\n\t\t}\n\t},\n\tcontext: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .context has been removed. Use .getContext() instead.' );\n\t\t\treturn this.getContext();\n\n\t\t}\n\t},\n\tvr: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .vr has been renamed to .xr' );\n\t\t\treturn this.xr;\n\n\t\t}\n\t},\n\tgammaInput: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .gammaInput has been removed. Set the encoding for textures via Texture.encoding instead.' );\n\t\t\treturn false;\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .gammaInput has been removed. Set the encoding for textures via Texture.encoding instead.' );\n\n\t\t}\n\t},\n\tgammaOutput: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .gammaOutput has been removed. Set WebGLRenderer.outputEncoding instead.' );\n\t\t\treturn false;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .gammaOutput has been removed. Set WebGLRenderer.outputEncoding instead.' );\n\t\t\tthis.outputEncoding = ( value === true ) ? sRGBEncoding : LinearEncoding;\n\n\t\t}\n\t},\n\ttoneMappingWhitePoint: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .toneMappingWhitePoint has been removed.' );\n\t\t\treturn 1.0;\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .toneMappingWhitePoint has been removed.' );\n\n\t\t}\n\t},\n\n} );\n\nObject.defineProperties( WebGLShadowMap.prototype, {\n\n\tcullFace: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.cullFace has been removed. Set Material.shadowSide instead.' );\n\t\t\treturn undefined;\n\n\t\t},\n\t\tset: function ( /* cullFace */ ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.cullFace has been removed. Set Material.shadowSide instead.' );\n\n\t\t}\n\t},\n\trenderReverseSided: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.renderReverseSided has been removed. Set Material.shadowSide instead.' );\n\t\t\treturn undefined;\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.renderReverseSided has been removed. Set Material.shadowSide instead.' );\n\n\t\t}\n\t},\n\trenderSingleSided: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.renderSingleSided has been removed. Set Material.shadowSide instead.' );\n\t\t\treturn undefined;\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.renderSingleSided has been removed. Set Material.shadowSide instead.' );\n\n\t\t}\n\t}\n\n} );\n\nfunction WebGLRenderTargetCube( width, height, options ) {\n\n\tconsole.warn( 'THREE.WebGLRenderTargetCube( width, height, options ) is now WebGLCubeRenderTarget( size, options ).' );\n\treturn new WebGLCubeRenderTarget( width, options );\n\n}\n\n//\n\nObject.defineProperties( WebGLRenderTarget.prototype, {\n\n\twrapS: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS.' );\n\t\t\treturn this.texture.wrapS;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS.' );\n\t\t\tthis.texture.wrapS = value;\n\n\t\t}\n\t},\n\twrapT: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT.' );\n\t\t\treturn this.texture.wrapT;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT.' );\n\t\t\tthis.texture.wrapT = value;\n\n\t\t}\n\t},\n\tmagFilter: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter.' );\n\t\t\treturn this.texture.magFilter;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter.' );\n\t\t\tthis.texture.magFilter = value;\n\n\t\t}\n\t},\n\tminFilter: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter.' );\n\t\t\treturn this.texture.minFilter;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter.' );\n\t\t\tthis.texture.minFilter = value;\n\n\t\t}\n\t},\n\tanisotropy: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy.' );\n\t\t\treturn this.texture.anisotropy;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy.' );\n\t\t\tthis.texture.anisotropy = value;\n\n\t\t}\n\t},\n\toffset: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .offset is now .texture.offset.' );\n\t\t\treturn this.texture.offset;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .offset is now .texture.offset.' );\n\t\t\tthis.texture.offset = value;\n\n\t\t}\n\t},\n\trepeat: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .repeat is now .texture.repeat.' );\n\t\t\treturn this.texture.repeat;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .repeat is now .texture.repeat.' );\n\t\t\tthis.texture.repeat = value;\n\n\t\t}\n\t},\n\tformat: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .format is now .texture.format.' );\n\t\t\treturn this.texture.format;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .format is now .texture.format.' );\n\t\t\tthis.texture.format = value;\n\n\t\t}\n\t},\n\ttype: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .type is now .texture.type.' );\n\t\t\treturn this.texture.type;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .type is now .texture.type.' );\n\t\t\tthis.texture.type = value;\n\n\t\t}\n\t},\n\tgenerateMipmaps: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps.' );\n\t\t\treturn this.texture.generateMipmaps;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps.' );\n\t\t\tthis.texture.generateMipmaps = value;\n\n\t\t}\n\t}\n\n} );\n\n//\n\nObject.defineProperties( Audio.prototype, {\n\n\tload: {\n\t\tvalue: function ( file ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: .load has been deprecated. Use THREE.AudioLoader instead.' );\n\t\t\tconst scope = this;\n\t\t\tconst audioLoader = new AudioLoader();\n\t\t\taudioLoader.load( file, function ( buffer ) {\n\n\t\t\t\tscope.setBuffer( buffer );\n\n\t\t\t} );\n\t\t\treturn this;\n\n\t\t}\n\t},\n\tstartTime: {\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Audio: .startTime is now .play( delay ).' );\n\n\t\t}\n\t}\n\n} );\n\nAudioAnalyser.prototype.getData = function () {\n\n\tconsole.warn( 'THREE.AudioAnalyser: .getData() is now .getFrequencyData().' );\n\treturn this.getFrequencyData();\n\n};\n\n//\n\nCubeCamera.prototype.updateCubeMap = function ( renderer, scene ) {\n\n\tconsole.warn( 'THREE.CubeCamera: .updateCubeMap() is now .update().' );\n\treturn this.update( renderer, scene );\n\n};\n\n//\n\nconst GeometryUtils = {\n\n\tmerge: function ( geometry1, geometry2, materialIndexOffset ) {\n\n\t\tconsole.warn( 'THREE.GeometryUtils: .merge() has been moved to Geometry. Use geometry.merge( geometry2, matrix, materialIndexOffset ) instead.' );\n\t\tlet matrix;\n\n\t\tif ( geometry2.isMesh ) {\n\n\t\t\tgeometry2.matrixAutoUpdate && geometry2.updateMatrix();\n\n\t\t\tmatrix = geometry2.matrix;\n\t\t\tgeometry2 = geometry2.geometry;\n\n\t\t}\n\n\t\tgeometry1.merge( geometry2, matrix, materialIndexOffset );\n\n\t},\n\n\tcenter: function ( geometry ) {\n\n\t\tconsole.warn( 'THREE.GeometryUtils: .center() has been moved to Geometry. Use geometry.center() instead.' );\n\t\treturn geometry.center();\n\n\t}\n\n};\n\nImageUtils.crossOrigin = undefined;\n\nImageUtils.loadTexture = function ( url, mapping, onLoad, onError ) {\n\n\tconsole.warn( 'THREE.ImageUtils.loadTexture has been deprecated. Use THREE.TextureLoader() instead.' );\n\n\tconst loader = new TextureLoader();\n\tloader.setCrossOrigin( this.crossOrigin );\n\n\tconst texture = loader.load( url, onLoad, undefined, onError );\n\n\tif ( mapping ) texture.mapping = mapping;\n\n\treturn texture;\n\n};\n\nImageUtils.loadTextureCube = function ( urls, mapping, onLoad, onError ) {\n\n\tconsole.warn( 'THREE.ImageUtils.loadTextureCube has been deprecated. Use THREE.CubeTextureLoader() instead.' );\n\n\tconst loader = new CubeTextureLoader();\n\tloader.setCrossOrigin( this.crossOrigin );\n\n\tconst texture = loader.load( urls, onLoad, undefined, onError );\n\n\tif ( mapping ) texture.mapping = mapping;\n\n\treturn texture;\n\n};\n\nImageUtils.loadCompressedTexture = function () {\n\n\tconsole.error( 'THREE.ImageUtils.loadCompressedTexture has been removed. Use THREE.DDSLoader instead.' );\n\n};\n\nImageUtils.loadCompressedTextureCube = function () {\n\n\tconsole.error( 'THREE.ImageUtils.loadCompressedTextureCube has been removed. Use THREE.DDSLoader instead.' );\n\n};\n\n//\n\nfunction CanvasRenderer() {\n\n\tconsole.error( 'THREE.CanvasRenderer has been removed' );\n\n}\n\n//\n\nfunction JSONLoader() {\n\n\tconsole.error( 'THREE.JSONLoader has been removed.' );\n\n}\n\n//\n\nconst SceneUtils = {\n\n\tcreateMultiMaterialObject: function ( /* geometry, materials */ ) {\n\n\t\tconsole.error( 'THREE.SceneUtils has been moved to /examples/jsm/utils/SceneUtils.js' );\n\n\t},\n\n\tdetach: function ( /* child, parent, scene */ ) {\n\n\t\tconsole.error( 'THREE.SceneUtils has been moved to /examples/jsm/utils/SceneUtils.js' );\n\n\t},\n\n\tattach: function ( /* child, scene, parent */ ) {\n\n\t\tconsole.error( 'THREE.SceneUtils has been moved to /examples/jsm/utils/SceneUtils.js' );\n\n\t}\n\n};\n\n//\n\nfunction LensFlare() {\n\n\tconsole.error( 'THREE.LensFlare has been moved to /examples/jsm/objects/Lensflare.js' );\n\n}\n\nif ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) {\n\n\t/* eslint-disable no-undef */\n\t__THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'register', { detail: {\n\t\trevision: REVISION,\n\t} } ) );\n\t/* eslint-enable no-undef */\n\n}\n\nexport { ACESFilmicToneMapping, AddEquation, AddOperation, AdditiveAnimationBlendMode, AdditiveBlending, AlphaFormat, AlwaysDepth, AlwaysStencilFunc, AmbientLight, AmbientLightProbe, AnimationClip, AnimationLoader, AnimationMixer, AnimationObjectGroup, AnimationUtils, ArcCurve, ArrayCamera, ArrowHelper, Audio, AudioAnalyser, AudioContext, AudioListener, AudioLoader, AxesHelper, AxisHelper, BackSide, BasicDepthPacking, BasicShadowMap, BinaryTextureLoader, Bone, BooleanKeyframeTrack, BoundingBoxHelper, Box2, Box3, Box3Helper, BoxBufferGeometry, BoxGeometry, BoxHelper, BufferAttribute, BufferGeometry, BufferGeometryLoader, ByteType, Cache, Camera, CameraHelper, CanvasRenderer, CanvasTexture, CatmullRomCurve3, CineonToneMapping, CircleBufferGeometry, CircleGeometry, ClampToEdgeWrapping, Clock, ClosedSplineCurve3, Color, ColorKeyframeTrack, CompressedTexture, CompressedTextureLoader, ConeBufferGeometry, ConeGeometry, CubeCamera, BoxGeometry as CubeGeometry, CubeReflectionMapping, CubeRefractionMapping, CubeTexture, CubeTextureLoader, CubeUVReflectionMapping, CubeUVRefractionMapping, CubicBezierCurve, CubicBezierCurve3, CubicInterpolant, CullFaceBack, CullFaceFront, CullFaceFrontBack, CullFaceNone, Curve, CurvePath, CustomBlending, CustomToneMapping, CylinderBufferGeometry, CylinderGeometry, Cylindrical, DataTexture, DataTexture2DArray, DataTexture3D, DataTextureLoader, DecrementStencilOp, DecrementWrapStencilOp, DefaultLoadingManager, DepthFormat, DepthStencilFormat, DepthTexture, DirectionalLight, DirectionalLightHelper, DiscreteInterpolant, DodecahedronBufferGeometry, DodecahedronGeometry, DoubleSide, DstAlphaFactor, DstColorFactor, DynamicBufferAttribute, DynamicCopyUsage, DynamicDrawUsage, DynamicReadUsage, EdgesGeometry, EdgesHelper, EllipseCurve, EqualDepth, EqualStencilFunc, EquirectangularReflectionMapping, EquirectangularRefractionMapping, Euler, EventDispatcher, ExtrudeBufferGeometry, ExtrudeGeometry, Face3, Face4, FaceColors, FileLoader, FlatShading, Float32Attribute, Float32BufferAttribute, Float64Attribute, Float64BufferAttribute, FloatType, Fog, FogExp2, Font, FontLoader, FrontSide, Frustum, GLBufferAttribute, GLSL1, GLSL3, GammaEncoding, Geometry, GeometryUtils, GreaterDepth, GreaterEqualDepth, GreaterEqualStencilFunc, GreaterStencilFunc, GridHelper, Group, HalfFloatType, HemisphereLight, HemisphereLightHelper, HemisphereLightProbe, IcosahedronBufferGeometry, IcosahedronGeometry, ImageBitmapLoader, ImageLoader, ImageUtils, ImmediateRenderObject, IncrementStencilOp, IncrementWrapStencilOp, InstancedBufferAttribute, InstancedBufferGeometry, InstancedInterleavedBuffer, InstancedMesh, Int16Attribute, Int16BufferAttribute, Int32Attribute, Int32BufferAttribute, Int8Attribute, Int8BufferAttribute, IntType, InterleavedBuffer, InterleavedBufferAttribute, Interpolant, InterpolateDiscrete, InterpolateLinear, InterpolateSmooth, InvertStencilOp, JSONLoader, KeepStencilOp, KeyframeTrack, LOD, LatheBufferGeometry, LatheGeometry, Layers, LensFlare, LessDepth, LessEqualDepth, LessEqualStencilFunc, LessStencilFunc, Light, LightProbe, LightShadow, Line, Line3, LineBasicMaterial, LineCurve, LineCurve3, LineDashedMaterial, LineLoop, LinePieces, LineSegments, LineStrip, LinearEncoding, LinearFilter, LinearInterpolant, LinearMipMapLinearFilter, LinearMipMapNearestFilter, LinearMipmapLinearFilter, LinearMipmapNearestFilter, LinearToneMapping, Loader, LoaderUtils, LoadingManager, LogLuvEncoding, LoopOnce, LoopPingPong, LoopRepeat, LuminanceAlphaFormat, LuminanceFormat, MOUSE, Material, MaterialLoader, MathUtils as Math, MathUtils, Matrix3, Matrix4, MaxEquation, Mesh, MeshBasicMaterial, MeshDepthMaterial, MeshDistanceMaterial, MeshFaceMaterial, MeshLambertMaterial, MeshMatcapMaterial, MeshNormalMaterial, MeshPhongMaterial, MeshPhysicalMaterial, MeshStandardMaterial, MeshToonMaterial, MinEquation, MirroredRepeatWrapping, MixOperation, MultiMaterial, MultiplyBlending, MultiplyOperation, NearestFilter, NearestMipMapLinearFilter, NearestMipMapNearestFilter, NearestMipmapLinearFilter, NearestMipmapNearestFilter, NeverDepth, NeverStencilFunc, NoBlending, NoColors, NoToneMapping, NormalAnimationBlendMode, NormalBlending, NotEqualDepth, NotEqualStencilFunc, NumberKeyframeTrack, Object3D, ObjectLoader, ObjectSpaceNormalMap, OctahedronBufferGeometry, OctahedronGeometry, OneFactor, OneMinusDstAlphaFactor, OneMinusDstColorFactor, OneMinusSrcAlphaFactor, OneMinusSrcColorFactor, OrthographicCamera, PCFShadowMap, PCFSoftShadowMap, PMREMGenerator, ParametricBufferGeometry, ParametricGeometry, Particle, ParticleBasicMaterial, ParticleSystem, ParticleSystemMaterial, Path, PerspectiveCamera, Plane, PlaneBufferGeometry, PlaneGeometry, PlaneHelper, PointCloud, PointCloudMaterial, PointLight, PointLightHelper, Points, PointsMaterial, PolarGridHelper, PolyhedronBufferGeometry, PolyhedronGeometry, PositionalAudio, PropertyBinding, PropertyMixer, QuadraticBezierCurve, QuadraticBezierCurve3, Quaternion, QuaternionKeyframeTrack, QuaternionLinearInterpolant, REVISION, RGBADepthPacking, RGBAFormat, RGBAIntegerFormat, RGBA_ASTC_10x10_Format, RGBA_ASTC_10x5_Format, RGBA_ASTC_10x6_Format, RGBA_ASTC_10x8_Format, RGBA_ASTC_12x10_Format, RGBA_ASTC_12x12_Format, RGBA_ASTC_4x4_Format, RGBA_ASTC_5x4_Format, RGBA_ASTC_5x5_Format, RGBA_ASTC_6x5_Format, RGBA_ASTC_6x6_Format, RGBA_ASTC_8x5_Format, RGBA_ASTC_8x6_Format, RGBA_ASTC_8x8_Format, RGBA_BPTC_Format, RGBA_ETC2_EAC_Format, RGBA_PVRTC_2BPPV1_Format, RGBA_PVRTC_4BPPV1_Format, RGBA_S3TC_DXT1_Format, RGBA_S3TC_DXT3_Format, RGBA_S3TC_DXT5_Format, RGBDEncoding, RGBEEncoding, RGBEFormat, RGBFormat, RGBIntegerFormat, RGBM16Encoding, RGBM7Encoding, RGB_ETC1_Format, RGB_ETC2_Format, RGB_PVRTC_2BPPV1_Format, RGB_PVRTC_4BPPV1_Format, RGB_S3TC_DXT1_Format, RGFormat, RGIntegerFormat, RawShaderMaterial, Ray, Raycaster, RectAreaLight, RedFormat, RedIntegerFormat, ReinhardToneMapping, RepeatWrapping, ReplaceStencilOp, ReverseSubtractEquation, RingBufferGeometry, RingGeometry, SRGB8_ALPHA8_ASTC_10x10_Format, SRGB8_ALPHA8_ASTC_10x5_Format, SRGB8_ALPHA8_ASTC_10x6_Format, SRGB8_ALPHA8_ASTC_10x8_Format, SRGB8_ALPHA8_ASTC_12x10_Format, SRGB8_ALPHA8_ASTC_12x12_Format, SRGB8_ALPHA8_ASTC_4x4_Format, SRGB8_ALPHA8_ASTC_5x4_Format, SRGB8_ALPHA8_ASTC_5x5_Format, SRGB8_ALPHA8_ASTC_6x5_Format, SRGB8_ALPHA8_ASTC_6x6_Format, SRGB8_ALPHA8_ASTC_8x5_Format, SRGB8_ALPHA8_ASTC_8x6_Format, SRGB8_ALPHA8_ASTC_8x8_Format, Scene, SceneUtils, ShaderChunk, ShaderLib, ShaderMaterial, ShadowMaterial, Shape, ShapeBufferGeometry, ShapeGeometry, ShapePath, ShapeUtils, ShortType, Skeleton, SkeletonHelper, SkinnedMesh, SmoothShading, Sphere, SphereBufferGeometry, SphereGeometry, Spherical, SphericalHarmonics3, Spline, SplineCurve, SplineCurve3, SpotLight, SpotLightHelper, Sprite, SpriteMaterial, SrcAlphaFactor, SrcAlphaSaturateFactor, SrcColorFactor, StaticCopyUsage, StaticDrawUsage, StaticReadUsage, StereoCamera, StreamCopyUsage, StreamDrawUsage, StreamReadUsage, StringKeyframeTrack, SubtractEquation, SubtractiveBlending, TOUCH, TangentSpaceNormalMap, TetrahedronBufferGeometry, TetrahedronGeometry, TextBufferGeometry, TextGeometry, Texture, TextureLoader, TorusBufferGeometry, TorusGeometry, TorusKnotBufferGeometry, TorusKnotGeometry, Triangle, TriangleFanDrawMode, TriangleStripDrawMode, TrianglesDrawMode, TubeBufferGeometry, TubeGeometry, UVMapping, Uint16Attribute, Uint16BufferAttribute, Uint32Attribute, Uint32BufferAttribute, Uint8Attribute, Uint8BufferAttribute, Uint8ClampedAttribute, Uint8ClampedBufferAttribute, Uniform, UniformsLib, UniformsUtils, UnsignedByteType, UnsignedInt248Type, UnsignedIntType, UnsignedShort4444Type, UnsignedShort5551Type, UnsignedShort565Type, UnsignedShortType, VSMShadowMap, Vector2, Vector3, Vector4, VectorKeyframeTrack, Vertex, VertexColors, VideoTexture, WebGL1Renderer, WebGLCubeRenderTarget, WebGLMultisampleRenderTarget, WebGLRenderTarget, WebGLRenderTargetCube, WebGLRenderer, WebGLUtils, WireframeGeometry, WireframeHelper, WrapAroundEnding, XHRLoader, ZeroCurvatureEnding, ZeroFactor, ZeroSlopeEnding, ZeroStencilOp, sRGBEncoding };\n","var copyObject = require('./_copyObject'),\n    keys = require('./keys');\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n  return object && copyObject(source, keys(source), object);\n}\n\nmodule.exports = baseAssign;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.authentication = void 0;\nconst commons_1 = require(\"@feathersjs/commons\");\nconst authentication = () => {\n    return (context) => {\n        const { app, params, path, method, app: { authentication: service } } = context;\n        if (commons_1.stripSlashes(service.options.path) === path && method === 'create') {\n            return context;\n        }\n        return Promise.resolve(app.get('authentication')).then(authResult => {\n            if (authResult) {\n                context.params = Object.assign({}, authResult, params);\n            }\n            return context;\n        });\n    };\n};\nexports.authentication = authentication;\n//# sourceMappingURL=authentication.js.map","var arrayPush = require('./_arrayPush'),\n    isFlattenable = require('./_isFlattenable');\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n  var index = -1,\n      length = array.length;\n\n  predicate || (predicate = isFlattenable);\n  result || (result = []);\n\n  while (++index < length) {\n    var value = array[index];\n    if (depth > 0 && predicate(value)) {\n      if (depth > 1) {\n        // Recursively flatten arrays (susceptible to call stack limits).\n        baseFlatten(value, depth - 1, predicate, isStrict, result);\n      } else {\n        arrayPush(result, value);\n      }\n    } else if (!isStrict) {\n      result[result.length] = value;\n    }\n  }\n  return result;\n}\n\nmodule.exports = baseFlatten;\n","var global = require('./_global');\nvar core = require('./_core');\nvar hide = require('./_hide');\nvar redefine = require('./_redefine');\nvar ctx = require('./_ctx');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n  var IS_FORCED = type & $export.F;\n  var IS_GLOBAL = type & $export.G;\n  var IS_STATIC = type & $export.S;\n  var IS_PROTO = type & $export.P;\n  var IS_BIND = type & $export.B;\n  var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE];\n  var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n  var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});\n  var key, own, out, exp;\n  if (IS_GLOBAL) source = name;\n  for (key in source) {\n    // contains in native\n    own = !IS_FORCED && target && target[key] !== undefined;\n    // export native or passed\n    out = (own ? target : source)[key];\n    // bind timers to global for call from export context\n    exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n    // extend global\n    if (target) redefine(target, key, out, type & $export.U);\n    // export\n    if (exports[key] != out) hide(exports, key, exp);\n    if (IS_PROTO && expProto[key] != out) expProto[key] = out;\n  }\n};\nglobal.core = core;\n// type bitmap\n$export.F = 1;   // forced\n$export.G = 2;   // global\n$export.S = 4;   // static\n$export.P = 8;   // proto\n$export.B = 16;  // bind\n$export.W = 32;  // wrap\n$export.U = 64;  // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n","// Styles\nimport \"../../../src/components/VList/VListItemGroup.sass\"; // Extensions\n\nimport { BaseItemGroup } from '../VItemGroup/VItemGroup'; // Mixins\n\nimport Colorable from '../../mixins/colorable'; // Utilities\n\nimport mixins from '../../util/mixins';\nexport default mixins(BaseItemGroup, Colorable).extend({\n  name: 'v-list-item-group',\n\n  provide() {\n    return {\n      isInGroup: true,\n      listItemGroup: this\n    };\n  },\n\n  computed: {\n    classes() {\n      return { ...BaseItemGroup.options.computed.classes.call(this),\n        'v-list-item-group': true\n      };\n    }\n\n  },\n  methods: {\n    genData() {\n      return this.setTextColor(this.color, { ...BaseItemGroup.options.methods.genData.call(this),\n        attrs: {\n          role: 'listbox'\n        }\n      });\n    }\n\n  }\n});\n//# sourceMappingURL=VListItemGroup.js.map","import { createSimpleFunctional } from '../../util/helpers';\nimport VList from './VList';\nimport VListGroup from './VListGroup';\nimport VListItem from './VListItem';\nimport VListItemGroup from './VListItemGroup';\nimport VListItemAction from './VListItemAction';\nimport VListItemAvatar from './VListItemAvatar';\nimport VListItemIcon from './VListItemIcon';\nexport const VListItemActionText = createSimpleFunctional('v-list-item__action-text', 'span');\nexport const VListItemContent = createSimpleFunctional('v-list-item__content', 'div');\nexport const VListItemTitle = createSimpleFunctional('v-list-item__title', 'div');\nexport const VListItemSubtitle = createSimpleFunctional('v-list-item__subtitle', 'div');\nexport { VList, VListGroup, VListItem, VListItemAction, VListItemAvatar, VListItemIcon, VListItemGroup };\nexport default {\n  $_vuetify_subcomponents: {\n    VList,\n    VListGroup,\n    VListItem,\n    VListItemAction,\n    VListItemActionText,\n    VListItemAvatar,\n    VListItemContent,\n    VListItemGroup,\n    VListItemIcon,\n    VListItemSubtitle,\n    VListItemTitle\n  }\n};\n//# sourceMappingURL=index.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.HEADERS = exports.GraphqlOperationName = exports.GRAPHQL_ENDPOINT = exports.FieldName = void 0;\nvar FieldName;\nexports.FieldName = FieldName;\n\n(function (FieldName) {\n  FieldName[\"FirstName\"] = \"firstName\";\n  FieldName[\"LastName\"] = \"lastName\";\n  FieldName[\"Country\"] = \"country\";\n  FieldName[\"City\"] = \"city\";\n  FieldName[\"PostalCode\"] = \"zip\";\n  FieldName[\"Zone\"] = \"province\";\n  FieldName[\"Address1\"] = \"address1\";\n  FieldName[\"Address2\"] = \"address2\";\n  FieldName[\"Phone\"] = \"phone\";\n  FieldName[\"Company\"] = \"company\";\n})(FieldName || (exports.FieldName = FieldName = {}));\n\nvar GRAPHQL_ENDPOINT = 'https://country-service.shopifycloud.com/graphql';\nexports.GRAPHQL_ENDPOINT = GRAPHQL_ENDPOINT;\nvar GraphqlOperationName;\nexports.GraphqlOperationName = GraphqlOperationName;\n\n(function (GraphqlOperationName) {\n  GraphqlOperationName[\"Countries\"] = \"countries\";\n  GraphqlOperationName[\"Country\"] = \"country\";\n})(GraphqlOperationName || (exports.GraphqlOperationName = GraphqlOperationName = {}));\n\nvar HEADERS = {\n  'Content-Type': 'application/json',\n  'Access-Control-Allow-Origin': '*'\n};\nexports.HEADERS = HEADERS;","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n  var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n  return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\nmodule.exports = cloneDataView;\n","var isObject = require('./_is-object');\nvar setPrototypeOf = require('./_set-proto').set;\nmodule.exports = function (that, target, C) {\n  var S = target.constructor;\n  var P;\n  if (S !== C && typeof S == 'function' && (P = S.prototype) !== C.prototype && isObject(P) && setPrototypeOf) {\n    setPrototypeOf(that, P);\n  } return that;\n};\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","// Styles\nimport \"../../../src/components/VCarousel/VCarousel.sass\"; // Extensions\n\nimport VWindow from '../VWindow/VWindow'; // Components\n\nimport VBtn from '../VBtn';\nimport VIcon from '../VIcon';\nimport VProgressLinear from '../VProgressLinear'; // Mixins\n// TODO: Move this into core components v2.0\n\nimport ButtonGroup from '../../mixins/button-group'; // Utilities\n\nimport { convertToUnit } from '../../util/helpers';\nimport { breaking } from '../../util/console';\nexport default VWindow.extend({\n  name: 'v-carousel',\n  props: {\n    continuous: {\n      type: Boolean,\n      default: true\n    },\n    cycle: Boolean,\n    delimiterIcon: {\n      type: String,\n      default: '$delimiter'\n    },\n    height: {\n      type: [Number, String],\n      default: 500\n    },\n    hideDelimiters: Boolean,\n    hideDelimiterBackground: Boolean,\n    interval: {\n      type: [Number, String],\n      default: 6000,\n      validator: value => value > 0\n    },\n    mandatory: {\n      type: Boolean,\n      default: true\n    },\n    progress: Boolean,\n    progressColor: String,\n    showArrows: {\n      type: Boolean,\n      default: true\n    },\n    verticalDelimiters: {\n      type: String,\n      default: undefined\n    }\n  },\n\n  // pass down the parent's theme\n  provide() {\n    return {\n      parentTheme: this.theme\n    };\n  },\n\n  data() {\n    return {\n      internalHeight: this.height,\n      slideTimeout: undefined\n    };\n  },\n\n  computed: {\n    classes() {\n      return { ...VWindow.options.computed.classes.call(this),\n        'v-carousel': true,\n        'v-carousel--hide-delimiter-background': this.hideDelimiterBackground,\n        'v-carousel--vertical-delimiters': this.isVertical\n      };\n    },\n\n    isDark() {\n      return this.dark || !this.light;\n    },\n\n    isVertical() {\n      return this.verticalDelimiters != null;\n    }\n\n  },\n  watch: {\n    internalValue: 'restartTimeout',\n    interval: 'restartTimeout',\n\n    height(val, oldVal) {\n      if (val === oldVal || !val) return;\n      this.internalHeight = val;\n    },\n\n    cycle(val) {\n      if (val) {\n        this.restartTimeout();\n      } else {\n        clearTimeout(this.slideTimeout);\n        this.slideTimeout = undefined;\n      }\n    }\n\n  },\n\n  created() {\n    /* istanbul ignore next */\n    if (this.$attrs.hasOwnProperty('hide-controls')) {\n      breaking('hide-controls', ':show-arrows=\"false\"', this);\n    }\n  },\n\n  mounted() {\n    this.startTimeout();\n  },\n\n  methods: {\n    genControlIcons() {\n      if (this.isVertical) return null;\n      return VWindow.options.methods.genControlIcons.call(this);\n    },\n\n    genDelimiters() {\n      return this.$createElement('div', {\n        staticClass: 'v-carousel__controls',\n        style: {\n          left: this.verticalDelimiters === 'left' && this.isVertical ? 0 : 'auto',\n          right: this.verticalDelimiters === 'right' ? 0 : 'auto'\n        }\n      }, [this.genItems()]);\n    },\n\n    genItems() {\n      const length = this.items.length;\n      const children = [];\n\n      for (let i = 0; i < length; i++) {\n        const child = this.$createElement(VBtn, {\n          staticClass: 'v-carousel__controls__item',\n          attrs: {\n            'aria-label': this.$vuetify.lang.t('$vuetify.carousel.ariaLabel.delimiter', i + 1, length)\n          },\n          props: {\n            icon: true,\n            small: true,\n            value: this.getValue(this.items[i], i)\n          }\n        }, [this.$createElement(VIcon, {\n          props: {\n            size: 18\n          }\n        }, this.delimiterIcon)]);\n        children.push(child);\n      }\n\n      return this.$createElement(ButtonGroup, {\n        props: {\n          value: this.internalValue,\n          mandatory: this.mandatory\n        },\n        on: {\n          change: val => {\n            this.internalValue = val;\n          }\n        }\n      }, children);\n    },\n\n    genProgress() {\n      return this.$createElement(VProgressLinear, {\n        staticClass: 'v-carousel__progress',\n        props: {\n          color: this.progressColor,\n          value: (this.internalIndex + 1) / this.items.length * 100\n        }\n      });\n    },\n\n    restartTimeout() {\n      this.slideTimeout && clearTimeout(this.slideTimeout);\n      this.slideTimeout = undefined;\n      window.requestAnimationFrame(this.startTimeout);\n    },\n\n    startTimeout() {\n      if (!this.cycle) return;\n      this.slideTimeout = window.setTimeout(this.next, +this.interval > 0 ? +this.interval : 6000);\n    }\n\n  },\n\n  render(h) {\n    const render = VWindow.options.render.call(this, h);\n    render.data.style = `height: ${convertToUnit(this.height)};`;\n    /* istanbul ignore else */\n\n    if (!this.hideDelimiters) {\n      render.children.push(this.genDelimiters());\n    }\n    /* istanbul ignore else */\n\n\n    if (this.progress || this.progressColor) {\n      render.children.push(this.genProgress());\n    }\n\n    return render;\n  }\n\n});\n//# sourceMappingURL=VCarousel.js.map","/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n  var index = -1,\n      length = array == null ? 0 : array.length;\n\n  while (++index < length) {\n    if (comparator(value, array[index])) {\n      return true;\n    }\n  }\n  return false;\n}\n\nmodule.exports = arrayIncludesWith;\n","const { _ } = require('@feathersjs/commons');\n\nconst assignArguments = context => {\n  const { service, method } = context;\n  const parameters = service.methods[method];\n\n  context.arguments.forEach((value, index) => {\n    context[parameters[index]] = value;\n  });\n\n  if (!context.params) {\n    context.params = {};\n  }\n\n  return context;\n};\n\nconst validate = context => {\n  const { service, method, path } = context;\n  const parameters = service.methods[method];\n\n  if (parameters.includes('id') && context.id === undefined) {\n    throw new Error(`An id must be provided to the '${path}.${method}' method`);\n  }\n\n  if (parameters.includes('data') && !_.isObjectOrArray(context.data)) {\n    throw new Error(`A data object must be provided to the '${path}.${method}' method`);\n  }\n\n  return context;\n};\n\nmodule.exports = [ assignArguments, validate ];\n","'use strict';\n\nvar classof = require('./_classof');\nvar builtinExec = RegExp.prototype.exec;\n\n // `RegExpExec` abstract operation\n// https://tc39.github.io/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n  var exec = R.exec;\n  if (typeof exec === 'function') {\n    var result = exec.call(R, S);\n    if (typeof result !== 'object') {\n      throw new TypeError('RegExp exec method returned something other than an Object or null');\n    }\n    return result;\n  }\n  if (classof(R) !== 'RegExp') {\n    throw new TypeError('RegExp#exec called on incompatible receiver');\n  }\n  return builtinExec.call(R, S);\n};\n","import utils, { defaultOptions } from './utils';\nimport VueTelInputVuetify from './vue-tel-input-vuetify.vue';\n\nexport function install(Vue, customOptions = {}) {\n  if (install.installed) return;\n  if (!customOptions || !customOptions.vuetify) {\n    return;\n  }\n  const { vuetify: vuetifyFramework } = customOptions;\n  install.installed = true;\n  install.vuetify = vuetifyFramework;\n  utils.options = {\n    ...defaultOptions,\n    ...customOptions,\n  };\n  Vue.use(vuetifyFramework);\n  Vue.component('vue-tel-input-vuetify', VueTelInputVuetify);\n}\n\nexport { VueTelInputVuetify };\n\nconst plugin = {\n  install,\n};\n\n// Auto-install\nlet GlobalVue = null;\nif (typeof window !== 'undefined') {\n  GlobalVue = window.Vue;\n} else if (typeof global !== 'undefined') {\n  GlobalVue = global.Vue;\n}\nif (GlobalVue) {\n  GlobalVue.use(plugin);\n}\n\nexport default plugin;\n","var isArrayLikeObject = require('./isArrayLikeObject');\n\n/**\n * Casts `value` to an empty array if it's not an array like object.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array|Object} Returns the cast array-like object.\n */\nfunction castArrayLikeObject(value) {\n  return isArrayLikeObject(value) ? value : [];\n}\n\nmodule.exports = castArrayLikeObject;\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","// Styles\nimport \"../../../src/components/VItemGroup/VItemGroup.sass\"; // Mixins\n\nimport Comparable from '../../mixins/comparable';\nimport Proxyable from '../../mixins/proxyable';\nimport Themeable from '../../mixins/themeable'; // Utilities\n\nimport mixins from '../../util/mixins';\nimport { consoleWarn } from '../../util/console';\nexport const BaseItemGroup = mixins(Comparable, Proxyable, Themeable).extend({\n  name: 'base-item-group',\n  props: {\n    activeClass: {\n      type: String,\n      default: 'v-item--active'\n    },\n    mandatory: Boolean,\n    max: {\n      type: [Number, String],\n      default: null\n    },\n    multiple: Boolean,\n    tag: {\n      type: String,\n      default: 'div'\n    }\n  },\n\n  data() {\n    return {\n      // As long as a value is defined, show it\n      // Otherwise, check if multiple\n      // to determine which default to provide\n      internalLazyValue: this.value !== undefined ? this.value : this.multiple ? [] : undefined,\n      items: []\n    };\n  },\n\n  computed: {\n    classes() {\n      return {\n        'v-item-group': true,\n        ...this.themeClasses\n      };\n    },\n\n    selectedIndex() {\n      return this.selectedItem && this.items.indexOf(this.selectedItem) || -1;\n    },\n\n    selectedItem() {\n      if (this.multiple) return undefined;\n      return this.selectedItems[0];\n    },\n\n    selectedItems() {\n      return this.items.filter((item, index) => {\n        return this.toggleMethod(this.getValue(item, index));\n      });\n    },\n\n    selectedValues() {\n      if (this.internalValue == null) return [];\n      return Array.isArray(this.internalValue) ? this.internalValue : [this.internalValue];\n    },\n\n    toggleMethod() {\n      if (!this.multiple) {\n        return v => this.valueComparator(this.internalValue, v);\n      }\n\n      const internalValue = this.internalValue;\n\n      if (Array.isArray(internalValue)) {\n        return v => internalValue.some(intern => this.valueComparator(intern, v));\n      }\n\n      return () => false;\n    }\n\n  },\n  watch: {\n    internalValue: 'updateItemsState',\n    items: 'updateItemsState'\n  },\n\n  created() {\n    if (this.multiple && !Array.isArray(this.internalValue)) {\n      consoleWarn('Model must be bound to an array if the multiple property is true.', this);\n    }\n  },\n\n  methods: {\n    genData() {\n      return {\n        class: this.classes\n      };\n    },\n\n    getValue(item, i) {\n      return item.value === undefined ? i : item.value;\n    },\n\n    onClick(item) {\n      this.updateInternalValue(this.getValue(item, this.items.indexOf(item)));\n    },\n\n    register(item) {\n      const index = this.items.push(item) - 1;\n      item.$on('change', () => this.onClick(item)); // If no value provided and mandatory,\n      // assign first registered item\n\n      if (this.mandatory && !this.selectedValues.length) {\n        this.updateMandatory();\n      }\n\n      this.updateItem(item, index);\n    },\n\n    unregister(item) {\n      if (this._isDestroyed) return;\n      const index = this.items.indexOf(item);\n      const value = this.getValue(item, index);\n      this.items.splice(index, 1);\n      const valueIndex = this.selectedValues.indexOf(value); // Items is not selected, do nothing\n\n      if (valueIndex < 0) return; // If not mandatory, use regular update process\n\n      if (!this.mandatory) {\n        return this.updateInternalValue(value);\n      } // Remove the value\n\n\n      if (this.multiple && Array.isArray(this.internalValue)) {\n        this.internalValue = this.internalValue.filter(v => v !== value);\n      } else {\n        this.internalValue = undefined;\n      } // If mandatory and we have no selection\n      // add the last item as value\n\n      /* istanbul ignore else */\n\n\n      if (!this.selectedItems.length) {\n        this.updateMandatory(true);\n      }\n    },\n\n    updateItem(item, index) {\n      const value = this.getValue(item, index);\n      item.isActive = this.toggleMethod(value);\n    },\n\n    // https://github.com/vuetifyjs/vuetify/issues/5352\n    updateItemsState() {\n      this.$nextTick(() => {\n        if (this.mandatory && !this.selectedItems.length) {\n          return this.updateMandatory();\n        } // TODO: Make this smarter so it\n        // doesn't have to iterate every\n        // child in an update\n\n\n        this.items.forEach(this.updateItem);\n      });\n    },\n\n    updateInternalValue(value) {\n      this.multiple ? this.updateMultiple(value) : this.updateSingle(value);\n    },\n\n    updateMandatory(last) {\n      if (!this.items.length) return;\n      const items = this.items.slice();\n      if (last) items.reverse();\n      const item = items.find(item => !item.disabled); // If no tabs are available\n      // aborts mandatory value\n\n      if (!item) return;\n      const index = this.items.indexOf(item);\n      this.updateInternalValue(this.getValue(item, index));\n    },\n\n    updateMultiple(value) {\n      const defaultValue = Array.isArray(this.internalValue) ? this.internalValue : [];\n      const internalValue = defaultValue.slice();\n      const index = internalValue.findIndex(val => val === value);\n      if (this.mandatory && // Item already exists\n      index > -1 && // value would be reduced below min\n      internalValue.length - 1 < 1) return;\n      if ( // Max is set\n      this.max != null && // Item doesn't exist\n      index < 0 && // value would be increased above max\n      internalValue.length + 1 > this.max) return;\n      index > -1 ? internalValue.splice(index, 1) : internalValue.push(value);\n      this.internalValue = internalValue;\n    },\n\n    updateSingle(value) {\n      const isSame = value === this.internalValue;\n      if (this.mandatory && isSame) return;\n      this.internalValue = isSame ? undefined : value;\n    }\n\n  },\n\n  render(h) {\n    return h(this.tag, this.genData(), this.$slots.default);\n  }\n\n});\nexport default BaseItemGroup.extend({\n  name: 'v-item-group',\n\n  provide() {\n    return {\n      itemGroup: this\n    };\n  }\n\n});\n//# sourceMappingURL=VItemGroup.js.map","var baseGetTag = require('./_baseGetTag'),\n    getPrototype = require('./_getPrototype'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n    objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n  if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n    return false;\n  }\n  var proto = getPrototype(value);\n  if (proto === null) {\n    return true;\n  }\n  var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n  return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n    funcToString.call(Ctor) == objectCtorString;\n}\n\nmodule.exports = isPlainObject;\n","var shared = require('./_shared')('keys');\nvar uid = require('./_uid');\nmodule.exports = function (key) {\n  return shared[key] || (shared[key] = uid(key));\n};\n","// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n  return cof(it) == 'String' ? it.split('') : Object(it);\n};\n","import \"../../../src/components/VGrid/VGrid.sass\";\nimport Vue from 'vue';\nimport mergeData from '../../util/mergeData';\nimport { upperFirst } from '../../util/helpers'; // no xs\n\nconst breakpoints = ['sm', 'md', 'lg', 'xl'];\n\nconst breakpointProps = (() => {\n  return breakpoints.reduce((props, val) => {\n    props[val] = {\n      type: [Boolean, String, Number],\n      default: false\n    };\n    return props;\n  }, {});\n})();\n\nconst offsetProps = (() => {\n  return breakpoints.reduce((props, val) => {\n    props['offset' + upperFirst(val)] = {\n      type: [String, Number],\n      default: null\n    };\n    return props;\n  }, {});\n})();\n\nconst orderProps = (() => {\n  return breakpoints.reduce((props, val) => {\n    props['order' + upperFirst(val)] = {\n      type: [String, Number],\n      default: null\n    };\n    return props;\n  }, {});\n})();\n\nconst propMap = {\n  col: Object.keys(breakpointProps),\n  offset: Object.keys(offsetProps),\n  order: Object.keys(orderProps)\n};\n\nfunction breakpointClass(type, prop, val) {\n  let className = type;\n\n  if (val == null || val === false) {\n    return undefined;\n  }\n\n  if (prop) {\n    const breakpoint = prop.replace(type, '');\n    className += `-${breakpoint}`;\n  } // Handling the boolean style prop when accepting [Boolean, String, Number]\n  // means Vue will not convert <v-col sm></v-col> to sm: true for us.\n  // Since the default is false, an empty string indicates the prop's presence.\n\n\n  if (type === 'col' && (val === '' || val === true)) {\n    // .col-md\n    return className.toLowerCase();\n  } // .order-md-6\n\n\n  className += `-${val}`;\n  return className.toLowerCase();\n}\n\nconst cache = new Map();\nexport default Vue.extend({\n  name: 'v-col',\n  functional: true,\n  props: {\n    cols: {\n      type: [Boolean, String, Number],\n      default: false\n    },\n    ...breakpointProps,\n    offset: {\n      type: [String, Number],\n      default: null\n    },\n    ...offsetProps,\n    order: {\n      type: [String, Number],\n      default: null\n    },\n    ...orderProps,\n    alignSelf: {\n      type: String,\n      default: null,\n      validator: str => ['auto', 'start', 'end', 'center', 'baseline', 'stretch'].includes(str)\n    },\n    tag: {\n      type: String,\n      default: 'div'\n    }\n  },\n\n  render(h, {\n    props,\n    data,\n    children,\n    parent\n  }) {\n    // Super-fast memoization based on props, 5x faster than JSON.stringify\n    let cacheKey = '';\n\n    for (const prop in props) {\n      cacheKey += String(props[prop]);\n    }\n\n    let classList = cache.get(cacheKey);\n\n    if (!classList) {\n      classList = []; // Loop through `col`, `offset`, `order` breakpoint props\n\n      let type;\n\n      for (type in propMap) {\n        propMap[type].forEach(prop => {\n          const value = props[prop];\n          const className = breakpointClass(type, prop, value);\n          if (className) classList.push(className);\n        });\n      }\n\n      const hasColClasses = classList.some(className => className.startsWith('col-'));\n      classList.push({\n        // Default to .col if no other col-{bp}-* classes generated nor `cols` specified.\n        col: !hasColClasses || !props.cols,\n        [`col-${props.cols}`]: props.cols,\n        [`offset-${props.offset}`]: props.offset,\n        [`order-${props.order}`]: props.order,\n        [`align-self-${props.alignSelf}`]: props.alignSelf\n      });\n      cache.set(cacheKey, classList);\n    }\n\n    return h(props.tag, mergeData(data, {\n      class: classList\n    }), children);\n  }\n\n});\n//# sourceMappingURL=VCol.js.map","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","\nmodule.exports = function(a, b){\n  var fn = function(){};\n  fn.prototype = b.prototype;\n  a.prototype = new fn;\n  a.prototype.constructor = a;\n};","var baseIsEqual = require('./_baseIsEqual');\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.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 * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n  return baseIsEqual(value, other);\n}\n\nmodule.exports = isEqual;\n","var baseIsMatch = require('./_baseIsMatch'),\n    getMatchData = require('./_getMatchData'),\n    matchesStrictComparable = require('./_matchesStrictComparable');\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n  var matchData = getMatchData(source);\n  if (matchData.length == 1 && matchData[0][2]) {\n    return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n  }\n  return function(object) {\n    return object === source || baseIsMatch(object, source, matchData);\n  };\n}\n\nmodule.exports = baseMatches;\n","'use strict';\nvar $export = require('./_export');\nvar toObject = require('./_to-object');\nvar toPrimitive = require('./_to-primitive');\nvar getPrototypeOf = require('./_object-gpo');\nvar getOwnPropertyDescriptor = require('./_object-gopd').f;\n\n// B.2.2.5 Object.prototype.__lookupSetter__(P)\nrequire('./_descriptors') && $export($export.P + require('./_object-forced-pam'), 'Object', {\n  __lookupSetter__: function __lookupSetter__(P) {\n    var O = toObject(this);\n    var K = toPrimitive(P, true);\n    var D;\n    do {\n      if (D = getOwnPropertyDescriptor(O, K)) return D.set;\n    } while (O = getPrototypeOf(O));\n  }\n});\n","// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nmodule.exports = function installComponents (component, components) {\n  var options = typeof component.exports === 'function'\n    ? component.exports.extendOptions\n    : component.options\n\n  if (typeof component.exports === 'function') {\n    options.components = component.exports.options.components\n  }\n\n  options.components = options.components || {}\n\n  for (var i in components) {\n    options.components[i] = options.components[i] || components[i]\n  }\n}\n","var castPath = require('./_castPath'),\n    toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n  path = castPath(path, object);\n\n  var index = 0,\n      length = path.length;\n\n  while (object != null && index < length) {\n    object = object[toKey(path[index++])];\n  }\n  return (index && index == length) ? object : undefined;\n}\n\nmodule.exports = baseGet;\n","var baseToString = require('./_baseToString'),\n    baseTrim = require('./_baseTrim'),\n    castSlice = require('./_castSlice'),\n    charsEndIndex = require('./_charsEndIndex'),\n    charsStartIndex = require('./_charsStartIndex'),\n    stringToArray = require('./_stringToArray'),\n    toString = require('./toString');\n\n/**\n * Removes leading and trailing whitespace or specified characters from `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to trim.\n * @param {string} [chars=whitespace] The characters to trim.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the trimmed string.\n * @example\n *\n * _.trim('  abc  ');\n * // => 'abc'\n *\n * _.trim('-_-abc-_-', '_-');\n * // => 'abc'\n *\n * _.map(['  foo  ', '  bar  '], _.trim);\n * // => ['foo', 'bar']\n */\nfunction trim(string, chars, guard) {\n  string = toString(string);\n  if (string && (guard || chars === undefined)) {\n    return baseTrim(string);\n  }\n  if (!string || !(chars = baseToString(chars))) {\n    return string;\n  }\n  var strSymbols = stringToArray(string),\n      chrSymbols = stringToArray(chars),\n      start = charsStartIndex(strSymbols, chrSymbols),\n      end = charsEndIndex(strSymbols, chrSymbols) + 1;\n\n  return castSlice(strSymbols, start, end).join('');\n}\n\nmodule.exports = trim;\n","'use strict';\n// B.2.3.13 String.prototype.sub()\nrequire('./_string-html')('sub', function (createHTML) {\n  return function sub() {\n    return createHTML(this, 'sub', '', '');\n  };\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","var META = require('./_uid')('meta');\nvar isObject = require('./_is-object');\nvar has = require('./_has');\nvar setDesc = require('./_object-dp').f;\nvar id = 0;\nvar isExtensible = Object.isExtensible || function () {\n  return true;\n};\nvar FREEZE = !require('./_fails')(function () {\n  return isExtensible(Object.preventExtensions({}));\n});\nvar setMeta = function (it) {\n  setDesc(it, META, { value: {\n    i: 'O' + ++id, // object ID\n    w: {}          // weak collections IDs\n  } });\n};\nvar fastKey = function (it, create) {\n  // return primitive with prefix\n  if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n  if (!has(it, META)) {\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    setMeta(it);\n  // return object ID\n  } return it[META].i;\n};\nvar getWeak = function (it, create) {\n  if (!has(it, META)) {\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    setMeta(it);\n  // return hash weak collections IDs\n  } return it[META].w;\n};\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n  if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);\n  return it;\n};\nvar meta = module.exports = {\n  KEY: META,\n  NEED: false,\n  fastKey: fastKey,\n  getWeak: getWeak,\n  onFreeze: onFreeze\n};\n","// Styles\nimport \"../../../src/components/VRadioGroup/VRadio.sass\";\nimport VLabel from '../VLabel';\nimport VIcon from '../VIcon';\nimport VInput from '../VInput'; // Mixins\n\nimport BindsAttrs from '../../mixins/binds-attrs';\nimport Colorable from '../../mixins/colorable';\nimport { factory as GroupableFactory } from '../../mixins/groupable';\nimport Rippleable from '../../mixins/rippleable';\nimport Themeable from '../../mixins/themeable';\nimport Selectable, { prevent } from '../../mixins/selectable'; // Utilities\n\nimport { getSlot } from '../../util/helpers';\nimport mixins from '../../util/mixins';\nimport { mergeListeners } from '../../util/mergeData';\nconst baseMixins = mixins(BindsAttrs, Colorable, Rippleable, GroupableFactory('radioGroup'), Themeable);\n/* @vue/component */\n\nexport default baseMixins.extend().extend({\n  name: 'v-radio',\n  inheritAttrs: false,\n  props: {\n    disabled: Boolean,\n    id: String,\n    label: String,\n    name: String,\n    offIcon: {\n      type: String,\n      default: '$radioOff'\n    },\n    onIcon: {\n      type: String,\n      default: '$radioOn'\n    },\n    readonly: Boolean,\n    value: {\n      default: null\n    }\n  },\n  data: () => ({\n    isFocused: false\n  }),\n  computed: {\n    classes() {\n      return {\n        'v-radio--is-disabled': this.isDisabled,\n        'v-radio--is-focused': this.isFocused,\n        ...this.themeClasses,\n        ...this.groupClasses\n      };\n    },\n\n    computedColor() {\n      return Selectable.options.computed.computedColor.call(this);\n    },\n\n    computedIcon() {\n      return this.isActive ? this.onIcon : this.offIcon;\n    },\n\n    computedId() {\n      return VInput.options.computed.computedId.call(this);\n    },\n\n    hasLabel: VInput.options.computed.hasLabel,\n\n    hasState() {\n      return (this.radioGroup || {}).hasState;\n    },\n\n    isDisabled() {\n      return this.disabled || !!this.radioGroup && this.radioGroup.isDisabled;\n    },\n\n    isReadonly() {\n      return this.readonly || !!this.radioGroup && this.radioGroup.isReadonly;\n    },\n\n    computedName() {\n      if (this.name || !this.radioGroup) {\n        return this.name;\n      }\n\n      return this.radioGroup.name || `radio-${this.radioGroup._uid}`;\n    },\n\n    rippleState() {\n      return Selectable.options.computed.rippleState.call(this);\n    },\n\n    validationState() {\n      return (this.radioGroup || {}).validationState || this.computedColor;\n    }\n\n  },\n  methods: {\n    genInput(args) {\n      // We can't actually use the mixin directly because\n      // it's made for standalone components, but its\n      // genInput method is exactly what we need\n      return Selectable.options.methods.genInput.call(this, 'radio', args);\n    },\n\n    genLabel() {\n      if (!this.hasLabel) return null;\n      return this.$createElement(VLabel, {\n        on: {\n          // Label shouldn't cause the input to focus\n          click: prevent\n        },\n        attrs: {\n          for: this.computedId\n        },\n        props: {\n          color: this.validationState,\n          focused: this.hasState\n        }\n      }, getSlot(this, 'label') || this.label);\n    },\n\n    genRadio() {\n      const {\n        title,\n        ...radioAttrs\n      } = this.attrs$;\n      return this.$createElement('div', {\n        staticClass: 'v-input--selection-controls__input'\n      }, [this.$createElement(VIcon, this.setTextColor(this.validationState, {\n        props: {\n          dense: this.radioGroup && this.radioGroup.dense\n        }\n      }), this.computedIcon), this.genInput({\n        name: this.computedName,\n        value: this.value,\n        ...radioAttrs\n      }), this.genRipple(this.setTextColor(this.rippleState))]);\n    },\n\n    onFocus(e) {\n      this.isFocused = true;\n      this.$emit('focus', e);\n    },\n\n    onBlur(e) {\n      this.isFocused = false;\n      this.$emit('blur', e);\n    },\n\n    onChange() {\n      if (this.isDisabled || this.isReadonly || this.isActive) return;\n      this.toggle();\n    },\n\n    onKeydown: () => {}\n  },\n\n  render(h) {\n    const data = {\n      staticClass: 'v-radio',\n      class: this.classes,\n      on: mergeListeners({\n        click: this.onChange\n      }, this.listeners$),\n      attrs: {\n        title: this.attrs$.title\n      }\n    };\n    return h('div', data, [this.genRadio(), this.genLabel()]);\n  }\n\n});\n//# sourceMappingURL=VRadio.js.map","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    ++this.size;\n    data.push([key, value]);\n  } else {\n    data[index][1] = value;\n  }\n  return this;\n}\n\nmodule.exports = listCacheSet;\n","// can-promise has a crash in some versions of react native that dont have\n// standard global objects\n// https://github.com/soldair/node-qrcode/issues/157\n\nmodule.exports = function () {\n  return typeof Promise === 'function' && Promise.prototype && Promise.prototype.then\n}\n","// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject');\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n  return IObject(defined(it));\n};\n","const EXP_TABLE = new Uint8Array(512)\nconst LOG_TABLE = new Uint8Array(256)\n/**\n * Precompute the log and anti-log tables for faster computation later\n *\n * For each possible value in the galois field 2^8, we will pre-compute\n * the logarithm and anti-logarithm (exponential) of this value\n *\n * ref {@link https://en.wikiversity.org/wiki/Reed%E2%80%93Solomon_codes_for_coders#Introduction_to_mathematical_fields}\n */\n;(function initTables () {\n  let x = 1\n  for (let i = 0; i < 255; i++) {\n    EXP_TABLE[i] = x\n    LOG_TABLE[x] = i\n\n    x <<= 1 // multiply by 2\n\n    // The QR code specification says to use byte-wise modulo 100011101 arithmetic.\n    // This means that when a number is 256 or larger, it should be XORed with 0x11D.\n    if (x & 0x100) { // similar to x >= 256, but a lot faster (because 0x100 == 256)\n      x ^= 0x11D\n    }\n  }\n\n  // Optimization: double the size of the anti-log table so that we don't need to mod 255 to\n  // stay inside the bounds (because we will mainly use this table for the multiplication of\n  // two GF numbers, no more).\n  // @see {@link mul}\n  for (let i = 255; i < 512; i++) {\n    EXP_TABLE[i] = EXP_TABLE[i - 255]\n  }\n}())\n\n/**\n * Returns log value of n inside Galois Field\n *\n * @param  {Number} n\n * @return {Number}\n */\nexports.log = function log (n) {\n  if (n < 1) throw new Error('log(' + n + ')')\n  return LOG_TABLE[n]\n}\n\n/**\n * Returns anti-log value of n inside Galois Field\n *\n * @param  {Number} n\n * @return {Number}\n */\nexports.exp = function exp (n) {\n  return EXP_TABLE[n]\n}\n\n/**\n * Multiplies two number inside Galois Field\n *\n * @param  {Number} x\n * @param  {Number} y\n * @return {Number}\n */\nexports.mul = function mul (x, y) {\n  if (x === 0 || y === 0) return 0\n\n  // should be EXP_TABLE[(LOG_TABLE[x] + LOG_TABLE[y]) % 255] if EXP_TABLE wasn't oversized\n  // @see {@link initTables}\n  return EXP_TABLE[LOG_TABLE[x] + LOG_TABLE[y]]\n}\n","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n  return hasOwnProperty.call(it, key);\n};\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    return false;\n  }\n  var lastIndex = data.length - 1;\n  if (index == lastIndex) {\n    data.pop();\n  } else {\n    splice.call(data, index, 1);\n  }\n  --this.size;\n  return true;\n}\n\nmodule.exports = listCacheDelete;\n","/**\n * Module dependencies\n */\n\nvar XMLHttpRequest = require('xmlhttprequest-ssl');\nvar XHR = require('./polling-xhr');\nvar JSONP = require('./polling-jsonp');\nvar websocket = require('./websocket');\n\n/**\n * Export transports.\n */\n\nexports.polling = polling;\nexports.websocket = websocket;\n\n/**\n * Polling transport polymorphic constructor.\n * Decides on xhr vs jsonp based on feature detection.\n *\n * @api private\n */\n\nfunction polling (opts) {\n  var xhr;\n  var xd = false;\n  var xs = false;\n  var jsonp = false !== opts.jsonp;\n\n  if (typeof location !== 'undefined') {\n    var isSSL = 'https:' === location.protocol;\n    var port = location.port;\n\n    // some user agents have empty `location.port`\n    if (!port) {\n      port = isSSL ? 443 : 80;\n    }\n\n    xd = opts.hostname !== location.hostname || port !== opts.port;\n    xs = opts.secure !== isSSL;\n  }\n\n  opts.xdomain = xd;\n  opts.xscheme = xs;\n  xhr = new XMLHttpRequest(opts);\n\n  if ('open' in xhr && !opts.forceJSONP) {\n    return new XHR(opts);\n  } else {\n    if (!jsonp) throw new Error('JSONP disabled');\n    return new JSONP(opts);\n  }\n}\n","var arrayMap = require('./_arrayMap'),\n    baseGet = require('./_baseGet'),\n    baseIteratee = require('./_baseIteratee'),\n    baseMap = require('./_baseMap'),\n    baseSortBy = require('./_baseSortBy'),\n    baseUnary = require('./_baseUnary'),\n    compareMultiple = require('./_compareMultiple'),\n    identity = require('./identity'),\n    isArray = require('./isArray');\n\n/**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\nfunction baseOrderBy(collection, iteratees, orders) {\n  if (iteratees.length) {\n    iteratees = arrayMap(iteratees, function(iteratee) {\n      if (isArray(iteratee)) {\n        return function(value) {\n          return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);\n        }\n      }\n      return iteratee;\n    });\n  } else {\n    iteratees = [identity];\n  }\n\n  var index = -1;\n  iteratees = arrayMap(iteratees, baseUnary(baseIteratee));\n\n  var result = baseMap(collection, function(value, key, collection) {\n    var criteria = arrayMap(iteratees, function(iteratee) {\n      return iteratee(value);\n    });\n    return { 'criteria': criteria, 'index': ++index, 'value': value };\n  });\n\n  return baseSortBy(result, function(object, other) {\n    return compareMultiple(object, other, orders);\n  });\n}\n\nmodule.exports = baseOrderBy;\n","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\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 (it, S) {\n  if (!isObject(it)) return it;\n  var fn, val;\n  if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n  if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n  if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n  throw TypeError(\"Can't convert object to primitive value\");\n};\n","/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n *  the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n  var index = -1,\n      length = array == null ? 0 : array.length;\n\n  if (initAccum && length) {\n    accumulator = array[++index];\n  }\n  while (++index < length) {\n    accumulator = iteratee(accumulator, array[index], index, array);\n  }\n  return accumulator;\n}\n\nmodule.exports = arrayReduce;\n","'use strict';\nrequire('./es6.regexp.flags');\nvar anObject = require('./_an-object');\nvar $flags = require('./_flags');\nvar DESCRIPTORS = require('./_descriptors');\nvar TO_STRING = 'toString';\nvar $toString = /./[TO_STRING];\n\nvar define = function (fn) {\n  require('./_redefine')(RegExp.prototype, TO_STRING, fn, true);\n};\n\n// 21.2.5.14 RegExp.prototype.toString()\nif (require('./_fails')(function () { return $toString.call({ source: 'a', flags: 'b' }) != '/a/b'; })) {\n  define(function toString() {\n    var R = anObject(this);\n    return '/'.concat(R.source, '/',\n      'flags' in R ? R.flags : !DESCRIPTORS && R instanceof RegExp ? $flags.call(R) : undefined);\n  });\n// FF44- RegExp#toString has a wrong name\n} else if ($toString.name != TO_STRING) {\n  define(function toString() {\n    return $toString.call(this);\n  });\n}\n","'use strict';\n// B.2.3.7 String.prototype.fontcolor(color)\nrequire('./_string-html')('fontcolor', function (createHTML) {\n  return function fontcolor(color) {\n    return createHTML(this, 'font', 'color', color);\n  };\n});\n","/* global define */\n/**\n * Uberproto\n *\n * A base object for ECMAScript 5 style prototypal inheritance.\n *\n * @see https://github.com/rauschma/proto-js/\n * @see http://ejohn.org/blog/simple-javascript-inheritance/\n * @see http://uxebu.com/blog/2011/02/23/object-based-inheritance-for-ecmascript-5/\n */\n(function (root, factory) {\n  if (typeof define === 'function' && define.amd) {\n    define([], factory);\n  } else if (typeof exports === 'object') {\n    module.exports = factory();\n  } else {\n    root.Proto = factory();\n  }\n}(this, function () {\n  var HAS_SYMBOLS = typeof Object.getOwnPropertySymbols === 'function';\n\n  function makeSuper (_super, old, name, fn) {\n    var isFunction = typeof old === 'function';\n    var newMethod = function () {\n      var tmp = this._super;\n\n      // Add a new ._super() method that is the same method\n      // but either pointing to the prototype method\n      // or to the overwritten method\n      this._super = isFunction ? old : _super[name];\n\n      // The method only need to be bound temporarily, so we\n      // remove it when we're done executing\n      var ret = fn.apply(this, arguments);\n\n      this._super = tmp;\n\n      return ret;\n    };\n\n    if (isFunction) {\n      Object.keys(old).forEach(function (name) {\n        newMethod[name] = old[name];\n      });\n\n      if (HAS_SYMBOLS) {\n        Object.getOwnPropertySymbols(old).forEach(function (name) {\n          newMethod[name] = old[name];\n        });\n      }\n    }\n\n    return newMethod;\n  }\n\n  return {\n    /**\n     * Create a new object using Object.create. The arguments will be\n     * passed to the new instances init method or to a method name set in\n     * __init.\n     */\n    create: function () {\n      var instance = Object.create(this);\n      var init = typeof instance.__init === 'string' ? instance.__init : 'init';\n\n      if (typeof instance[init] === 'function') {\n        instance[init].apply(instance, arguments);\n      }\n      return instance;\n    },\n    /**\n     * Mixin a given set of properties\n     * @param prop The properties to mix in\n     * @param obj [optional]\n     * The object to add the mixin\n     */\n    mixin: function (prop, obj) {\n      var self = obj || this;\n      var fnTest = /\\b_super\\b/;\n      var _super = Object.getPrototypeOf(self) || self.prototype;\n      var descriptors = {};\n      var proto = prop;\n      var processProperty = function (name) {\n        var descriptor = Object.getOwnPropertyDescriptor(proto, name);\n\n        if (!descriptors[name] && descriptor) {\n          descriptors[name] = descriptor;\n        }\n      };\n\n      // Collect all property descriptors\n      do {\n        Object.getOwnPropertyNames(proto).forEach(processProperty);\n\n        if (HAS_SYMBOLS) {\n          Object.getOwnPropertySymbols(proto).forEach(processProperty);\n        }\n      } while ((proto = Object.getPrototypeOf(proto)) && Object.getPrototypeOf(proto));\n\n      var processDescriptor = function (name) {\n        var descriptor = descriptors[name];\n\n        if (typeof descriptor.value === 'function' && fnTest.test(descriptor.value)) {\n          descriptor.value = makeSuper(_super, self[name], name, descriptor.value);\n        }\n\n        Object.defineProperty(self, name, descriptor);\n      };\n\n      Object.keys(descriptors).forEach(processDescriptor);\n\n      if (HAS_SYMBOLS) {\n        Object.getOwnPropertySymbols(descriptors).forEach(processDescriptor);\n      }\n\n      return self;\n    },\n    /**\n     * Extend the current or a given object with the given property and return the extended object.\n     * @param prop The properties to extend with\n     * @param obj [optional] The object to extend from\n     * @returns The extended object\n     */\n    extend: function (prop, obj) {\n      return this.mixin(prop, Object.create(obj || this));\n    },\n    /**\n     * Return a callback function with this set to the current or a given context object.\n     * @param name Name of the method to proxy\n     * @param args... [optional] Arguments to use for partial application\n     */\n    proxy: function (name) {\n      var fn = this[name];\n      var args = Array.prototype.slice.call(arguments, 1);\n\n      args.unshift(this);\n      return fn.bind.apply(fn, args);\n    }\n  };\n}));\n","/**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction asciiToArray(string) {\n  return string.split('');\n}\n\nmodule.exports = asciiToArray;\n","var baseAssignValue = require('./_baseAssignValue'),\n    createAggregator = require('./_createAggregator');\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 object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The order of grouped values\n * is determined by the order they occur in `collection`. The corresponding\n * value of each key is an array of elements responsible for generating the\n * key. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n *\n * // The `_.property` iteratee shorthand.\n * _.groupBy(['one', 'two', 'three'], 'length');\n * // => { '3': ['one', 'two'], '5': ['three'] }\n */\nvar groupBy = createAggregator(function(result, value, key) {\n  if (hasOwnProperty.call(result, key)) {\n    result[key].push(value);\n  } else {\n    baseAssignValue(result, key, [value]);\n  }\n});\n\nmodule.exports = groupBy;\n","/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n  var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n  result.lastIndex = regexp.lastIndex;\n  return result;\n}\n\nmodule.exports = cloneRegExp;\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","/*global Blob,File*/\n\n/**\n * Module requirements\n */\n\nvar isArray = require('isarray');\nvar isBuf = require('./is-buffer');\nvar toString = Object.prototype.toString;\nvar withNativeBlob = typeof Blob === 'function' || (typeof Blob !== 'undefined' && toString.call(Blob) === '[object BlobConstructor]');\nvar withNativeFile = typeof File === 'function' || (typeof File !== 'undefined' && toString.call(File) === '[object FileConstructor]');\n\n/**\n * Replaces every Buffer | ArrayBuffer in packet with a numbered placeholder.\n * Anything with blobs or files should be fed through removeBlobs before coming\n * here.\n *\n * @param {Object} packet - socket.io event packet\n * @return {Object} with deconstructed packet and list of buffers\n * @api public\n */\n\nexports.deconstructPacket = function(packet) {\n  var buffers = [];\n  var packetData = packet.data;\n  var pack = packet;\n  pack.data = _deconstructPacket(packetData, buffers);\n  pack.attachments = buffers.length; // number of binary 'attachments'\n  return {packet: pack, buffers: buffers};\n};\n\nfunction _deconstructPacket(data, buffers) {\n  if (!data) return data;\n\n  if (isBuf(data)) {\n    var placeholder = { _placeholder: true, num: buffers.length };\n    buffers.push(data);\n    return placeholder;\n  } else if (isArray(data)) {\n    var newData = new Array(data.length);\n    for (var i = 0; i < data.length; i++) {\n      newData[i] = _deconstructPacket(data[i], buffers);\n    }\n    return newData;\n  } else if (typeof data === 'object' && !(data instanceof Date)) {\n    var newData = {};\n    for (var key in data) {\n      newData[key] = _deconstructPacket(data[key], buffers);\n    }\n    return newData;\n  }\n  return data;\n}\n\n/**\n * Reconstructs a binary packet from its placeholder packet and buffers\n *\n * @param {Object} packet - event packet with placeholders\n * @param {Array} buffers - binary buffers to put in placeholder positions\n * @return {Object} reconstructed packet\n * @api public\n */\n\nexports.reconstructPacket = function(packet, buffers) {\n  packet.data = _reconstructPacket(packet.data, buffers);\n  packet.attachments = undefined; // no longer useful\n  return packet;\n};\n\nfunction _reconstructPacket(data, buffers) {\n  if (!data) return data;\n\n  if (data && data._placeholder) {\n    return buffers[data.num]; // appropriate buffer (should be natural order anyway)\n  } else if (isArray(data)) {\n    for (var i = 0; i < data.length; i++) {\n      data[i] = _reconstructPacket(data[i], buffers);\n    }\n  } else if (typeof data === 'object') {\n    for (var key in data) {\n      data[key] = _reconstructPacket(data[key], buffers);\n    }\n  }\n\n  return data;\n}\n\n/**\n * Asynchronously removes Blobs or Files from data via\n * FileReader's readAsArrayBuffer method. Used before encoding\n * data as msgpack. Calls callback with the blobless data.\n *\n * @param {Object} data\n * @param {Function} callback\n * @api private\n */\n\nexports.removeBlobs = function(data, callback) {\n  function _removeBlobs(obj, curKey, containingObject) {\n    if (!obj) return obj;\n\n    // convert any blob\n    if ((withNativeBlob && obj instanceof Blob) ||\n        (withNativeFile && obj instanceof File)) {\n      pendingBlobs++;\n\n      // async filereader\n      var fileReader = new FileReader();\n      fileReader.onload = function() { // this.result == arraybuffer\n        if (containingObject) {\n          containingObject[curKey] = this.result;\n        }\n        else {\n          bloblessData = this.result;\n        }\n\n        // if nothing pending its callback time\n        if(! --pendingBlobs) {\n          callback(bloblessData);\n        }\n      };\n\n      fileReader.readAsArrayBuffer(obj); // blob -> arraybuffer\n    } else if (isArray(obj)) { // handle array\n      for (var i = 0; i < obj.length; i++) {\n        _removeBlobs(obj[i], i, obj);\n      }\n    } else if (typeof obj === 'object' && !isBuf(obj)) { // and object\n      for (var key in obj) {\n        _removeBlobs(obj[key], key, obj);\n      }\n    }\n  }\n\n  var pendingBlobs = 0;\n  var bloblessData = data;\n  _removeBlobs(bloblessData);\n  if (!pendingBlobs) {\n    callback(bloblessData);\n  }\n};\n","import VAvatar from './VAvatar';\nexport { VAvatar };\nexport default VAvatar;\n//# sourceMappingURL=index.js.map","// Mixins\nimport { factory as GroupableFactory } from '../../mixins/groupable';\nimport Routable from '../../mixins/routable';\nimport Themeable from '../../mixins/themeable'; // Utilities\n\nimport { keyCodes } from './../../util/helpers';\nimport mixins from '../../util/mixins';\nconst baseMixins = mixins(Routable, // Must be after routable\n// to overwrite activeClass\nGroupableFactory('tabsBar'), Themeable);\nexport default baseMixins.extend().extend().extend({\n  name: 'v-tab',\n  props: {\n    ripple: {\n      type: [Boolean, Object],\n      default: true\n    }\n  },\n  data: () => ({\n    proxyClass: 'v-tab--active'\n  }),\n  computed: {\n    classes() {\n      return {\n        'v-tab': true,\n        ...Routable.options.computed.classes.call(this),\n        'v-tab--disabled': this.disabled,\n        ...this.groupClasses\n      };\n    },\n\n    value() {\n      let to = this.to || this.href;\n      if (to == null) return to;\n\n      if (this.$router && this.to === Object(this.to)) {\n        const resolve = this.$router.resolve(this.to, this.$route, this.append);\n        to = resolve.href;\n      }\n\n      return to.replace('#', '');\n    }\n\n  },\n  methods: {\n    click(e) {\n      // Prevent keyboard actions\n      // from children elements\n      // within disabled tabs\n      if (this.disabled) {\n        e.preventDefault();\n        return;\n      } // If user provides an\n      // actual link, do not\n      // prevent default\n\n\n      if (this.href && this.href.indexOf('#') > -1) e.preventDefault();\n      if (e.detail) this.$el.blur();\n      this.$emit('click', e);\n      this.to || this.toggle();\n    },\n\n    toggle() {\n      // VItemGroup treats a change event as a click\n      if (!this.isActive || !this.tabsBar.mandatory && !this.to) {\n        this.$emit('change');\n      }\n    }\n\n  },\n\n  render(h) {\n    const {\n      tag,\n      data\n    } = this.generateRouteLink();\n    data.attrs = { ...data.attrs,\n      'aria-selected': String(this.isActive),\n      role: 'tab',\n      tabindex: 0\n    };\n    data.on = { ...data.on,\n      keydown: e => {\n        if (e.keyCode === keyCodes.enter) this.click(e);\n        this.$emit('keydown', e);\n      }\n    };\n    return h(tag, data, this.$slots.default);\n  }\n\n});\n//# sourceMappingURL=VTab.js.map","// Styles\nimport \"../../../src/components/VToolbar/VToolbar.sass\"; // Extensions\n\nimport VSheet from '../VSheet/VSheet'; // Components\n\nimport VImg from '../VImg/VImg'; // Utilities\n\nimport { convertToUnit, getSlot } from '../../util/helpers';\nimport { breaking } from '../../util/console';\n/* @vue/component */\n\nexport default VSheet.extend({\n  name: 'v-toolbar',\n  props: {\n    absolute: Boolean,\n    bottom: Boolean,\n    collapse: Boolean,\n    dense: Boolean,\n    extended: Boolean,\n    extensionHeight: {\n      default: 48,\n      type: [Number, String]\n    },\n    flat: Boolean,\n    floating: Boolean,\n    prominent: Boolean,\n    short: Boolean,\n    src: {\n      type: [String, Object],\n      default: ''\n    },\n    tag: {\n      type: String,\n      default: 'header'\n    }\n  },\n  data: () => ({\n    isExtended: false\n  }),\n  computed: {\n    computedHeight() {\n      const height = this.computedContentHeight;\n      if (!this.isExtended) return height;\n      const extensionHeight = parseInt(this.extensionHeight);\n      return this.isCollapsed ? height : height + (!isNaN(extensionHeight) ? extensionHeight : 0);\n    },\n\n    computedContentHeight() {\n      if (this.height) return parseInt(this.height);\n      if (this.isProminent && this.dense) return 96;\n      if (this.isProminent && this.short) return 112;\n      if (this.isProminent) return 128;\n      if (this.dense) return 48;\n      if (this.short || this.$vuetify.breakpoint.smAndDown) return 56;\n      return 64;\n    },\n\n    classes() {\n      return { ...VSheet.options.computed.classes.call(this),\n        'v-toolbar': true,\n        'v-toolbar--absolute': this.absolute,\n        'v-toolbar--bottom': this.bottom,\n        'v-toolbar--collapse': this.collapse,\n        'v-toolbar--collapsed': this.isCollapsed,\n        'v-toolbar--dense': this.dense,\n        'v-toolbar--extended': this.isExtended,\n        'v-toolbar--flat': this.flat,\n        'v-toolbar--floating': this.floating,\n        'v-toolbar--prominent': this.isProminent\n      };\n    },\n\n    isCollapsed() {\n      return this.collapse;\n    },\n\n    isProminent() {\n      return this.prominent;\n    },\n\n    styles() {\n      return { ...this.measurableStyles,\n        height: convertToUnit(this.computedHeight)\n      };\n    }\n\n  },\n\n  created() {\n    const breakingProps = [['app', '<v-app-bar app>'], ['manual-scroll', '<v-app-bar :value=\"false\">'], ['clipped-left', '<v-app-bar clipped-left>'], ['clipped-right', '<v-app-bar clipped-right>'], ['inverted-scroll', '<v-app-bar inverted-scroll>'], ['scroll-off-screen', '<v-app-bar scroll-off-screen>'], ['scroll-target', '<v-app-bar scroll-target>'], ['scroll-threshold', '<v-app-bar scroll-threshold>'], ['card', '<v-app-bar flat>']];\n    /* istanbul ignore next */\n\n    breakingProps.forEach(([original, replacement]) => {\n      if (this.$attrs.hasOwnProperty(original)) breaking(original, replacement, this);\n    });\n  },\n\n  methods: {\n    genBackground() {\n      const props = {\n        height: convertToUnit(this.computedHeight),\n        src: this.src\n      };\n      const image = this.$scopedSlots.img ? this.$scopedSlots.img({\n        props\n      }) : this.$createElement(VImg, {\n        props\n      });\n      return this.$createElement('div', {\n        staticClass: 'v-toolbar__image'\n      }, [image]);\n    },\n\n    genContent() {\n      return this.$createElement('div', {\n        staticClass: 'v-toolbar__content',\n        style: {\n          height: convertToUnit(this.computedContentHeight)\n        }\n      }, getSlot(this));\n    },\n\n    genExtension() {\n      return this.$createElement('div', {\n        staticClass: 'v-toolbar__extension',\n        style: {\n          height: convertToUnit(this.extensionHeight)\n        }\n      }, getSlot(this, 'extension'));\n    }\n\n  },\n\n  render(h) {\n    this.isExtended = this.extended || !!this.$scopedSlots.extension;\n    const children = [this.genContent()];\n    const data = this.setBackgroundColor(this.color, {\n      class: this.classes,\n      style: this.styles,\n      on: this.$listeners\n    });\n    if (this.isExtended) children.push(this.genExtension());\n    if (this.src || this.$scopedSlots.img) children.unshift(this.genBackground());\n    return h(this.tag, data, children);\n  }\n\n});\n//# sourceMappingURL=VToolbar.js.map","\r\n/**\r\n * Expose `Emitter`.\r\n */\r\n\r\nif (typeof module !== 'undefined') {\r\n  module.exports = Emitter;\r\n}\r\n\r\n/**\r\n * Initialize a new `Emitter`.\r\n *\r\n * @api public\r\n */\r\n\r\nfunction Emitter(obj) {\r\n  if (obj) return mixin(obj);\r\n};\r\n\r\n/**\r\n * Mixin the emitter properties.\r\n *\r\n * @param {Object} obj\r\n * @return {Object}\r\n * @api private\r\n */\r\n\r\nfunction mixin(obj) {\r\n  for (var key in Emitter.prototype) {\r\n    obj[key] = Emitter.prototype[key];\r\n  }\r\n  return obj;\r\n}\r\n\r\n/**\r\n * Listen on the given `event` with `fn`.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.on =\r\nEmitter.prototype.addEventListener = function(event, fn){\r\n  this._callbacks = this._callbacks || {};\r\n  (this._callbacks['$' + event] = this._callbacks['$' + event] || [])\r\n    .push(fn);\r\n  return this;\r\n};\r\n\r\n/**\r\n * Adds an `event` listener that will be invoked a single\r\n * time then automatically removed.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.once = function(event, fn){\r\n  function on() {\r\n    this.off(event, on);\r\n    fn.apply(this, arguments);\r\n  }\r\n\r\n  on.fn = fn;\r\n  this.on(event, on);\r\n  return this;\r\n};\r\n\r\n/**\r\n * Remove the given callback for `event` or all\r\n * registered callbacks.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.off =\r\nEmitter.prototype.removeListener =\r\nEmitter.prototype.removeAllListeners =\r\nEmitter.prototype.removeEventListener = function(event, fn){\r\n  this._callbacks = this._callbacks || {};\r\n\r\n  // all\r\n  if (0 == arguments.length) {\r\n    this._callbacks = {};\r\n    return this;\r\n  }\r\n\r\n  // specific event\r\n  var callbacks = this._callbacks['$' + event];\r\n  if (!callbacks) return this;\r\n\r\n  // remove all handlers\r\n  if (1 == arguments.length) {\r\n    delete this._callbacks['$' + event];\r\n    return this;\r\n  }\r\n\r\n  // remove specific handler\r\n  var cb;\r\n  for (var i = 0; i < callbacks.length; i++) {\r\n    cb = callbacks[i];\r\n    if (cb === fn || cb.fn === fn) {\r\n      callbacks.splice(i, 1);\r\n      break;\r\n    }\r\n  }\r\n\r\n  // Remove event specific arrays for event types that no\r\n  // one is subscribed for to avoid memory leak.\r\n  if (callbacks.length === 0) {\r\n    delete this._callbacks['$' + event];\r\n  }\r\n\r\n  return this;\r\n};\r\n\r\n/**\r\n * Emit `event` with the given args.\r\n *\r\n * @param {String} event\r\n * @param {Mixed} ...\r\n * @return {Emitter}\r\n */\r\n\r\nEmitter.prototype.emit = function(event){\r\n  this._callbacks = this._callbacks || {};\r\n\r\n  var args = new Array(arguments.length - 1)\r\n    , callbacks = this._callbacks['$' + event];\r\n\r\n  for (var i = 1; i < arguments.length; i++) {\r\n    args[i - 1] = arguments[i];\r\n  }\r\n\r\n  if (callbacks) {\r\n    callbacks = callbacks.slice(0);\r\n    for (var i = 0, len = callbacks.length; i < len; ++i) {\r\n      callbacks[i].apply(this, args);\r\n    }\r\n  }\r\n\r\n  return this;\r\n};\r\n\r\n/**\r\n * Return array of callbacks for `event`.\r\n *\r\n * @param {String} event\r\n * @return {Array}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.listeners = function(event){\r\n  this._callbacks = this._callbacks || {};\r\n  return this._callbacks['$' + event] || [];\r\n};\r\n\r\n/**\r\n * Check if this emitter has `event` handlers.\r\n *\r\n * @param {String} event\r\n * @return {Boolean}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.hasListeners = function(event){\r\n  return !! this.listeners(event).length;\r\n};\r\n","var createBaseFor = require('./_createBaseFor');\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nmodule.exports = baseFor;\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:['vue-tel-input-vuetify', _vm.wrapperClasses]},[_c('div',{staticClass:\"country-code\"},[_c('v-select',{ref:\"countryInput\",class:_vm.selectClasses,attrs:{\"append-icon\":_vm.appendIcon,\"label\":_vm.selectLabel,\"items\":_vm.sortedCountries,\"disabled\":_vm.disabled,\"outlined\":_vm.outlined,\"filled\":_vm.filled,\"flat\":_vm.flat,\"light\":_vm.light,\"dark\":_vm.dark,\"readonly\":_vm.readonly,\"shaped\":_vm.shaped,\"rounded\":_vm.rounded,\"background-color\":_vm.backgroundColor,\"color\":_vm.color,\"dense\":_vm.dense,\"menu-props\":_vm.menuProps,\"height\":_vm.inputHeight,\"item-text\":\"name\",\"item-value\":\"iso2\",\"return-object\":\"\"},on:{\"change\":_vm.onChangeCountryCode},scopedSlots:_vm._u([{key:\"selection\",fn:function(){return [_c('div',{staticClass:\"vti__flag\",class:_vm.activeCountry.iso2.toLowerCase()})]},proxy:true},{key:\"item\",fn:function(data){return [_c('span',{staticClass:\"vti__flag\",class:data.item.iso2.toLowerCase()}),_c('span',[_vm._v(_vm._s(data.item.name)+\" \"+_vm._s((\"+\" + (data.item.dialCode))))])]}}]),model:{value:(_vm.countryCode),callback:function ($$v) {_vm.countryCode=$$v},expression:\"countryCode\"}})],1),_c('v-text-field',{ref:\"input\",class:_vm.textFieldClasses,attrs:{\"type\":\"tel\",\"messages\":_vm.messages,\"error-messages\":_vm.errorMessages,\"success-messages\":_vm.successMessages,\"hint\":_vm.hint,\"suffix\":_vm.suffix,\"prefix\":_vm.prefix,\"background-color\":_vm.backgroundColor,\"color\":_vm.color,\"rules\":_vm.rules,\"loader-height\":_vm.loaderHeight,\"loading\":_vm.loading,\"hide-details\":_vm.hideDetails,\"clearable\":_vm.clearable,\"filled\":_vm.filled,\"full-width\":_vm.fullWidth,\"flat\":_vm.flat,\"light\":_vm.light,\"dark\":_vm.dark,\"validate-on-blur\":_vm.validateOnBlur,\"outlined\":_vm.outlined,\"dense\":_vm.dense,\"persistent-hint\":_vm.persistentHint,\"readonly\":_vm.readonly,\"error\":_vm.error,\"success\":_vm.success,\"shaped\":_vm.shaped,\"single-line\":_vm.singleLine,\"rounded\":_vm.rounded,\"value\":_vm.value,\"label\":_vm.label,\"disabled\":_vm.disabled,\"placeholder\":_vm.placeholder,\"persistent-placeholder\":_vm.persistentPlaceholder,\"autofocus\":_vm.autofocus,\"name\":_vm.name,\"required\":_vm.required,\"autocomplete\":_vm.autocomplete,\"id\":_vm.inputId,\"maxlength\":_vm.maxLen,\"tabindex\":_vm.inputOptions && _vm.inputOptions.tabindex ? _vm.inputOptions.tabindex : 0,\"height\":_vm.inputHeight},on:{\"input\":_vm.onInput,\"blur\":_vm.onBlur,\"focus\":_vm.onFocus,\"click\":_vm.onClick,\"change\":_vm.onChange,\"mousedown\":_vm.onMouseDown,\"mouseup\":_vm.onMouseUp,\"keydown\":_vm.onKeyDown,\"keyup\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.onEnter.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"space\",32,$event.key,[\" \",\"Spacebar\"])){ return null; }return _vm.onSpace.apply(null, arguments)}]},scopedSlots:_vm._u([{key:\"append\",fn:function(){return [_vm._t(\"append\")]},proxy:true},{key:\"append-outer\",fn:function(){return [_vm._t(\"append-outer\")]},proxy:true},{key:\"label\",fn:function(){return [_vm._t(\"label\")]},proxy:true},{key:\"message\",fn:function(ref){\nvar key = ref.key;\nvar message = ref.message;\nreturn [_vm._t(\"message\",null,null,{ key: key, message: message })]}},{key:\"prepend\",fn:function(){return [_vm._t(\"prepend\")]},proxy:true},{key:\"prepend-inner\",fn:function(){return [_vm._t(\"prepend-inner\")]},proxy:true},{key:\"progress\",fn:function(){return [_vm._t(\"progress\")]},proxy:true}],null,true),model:{value:(_vm.phone),callback:function ($$v) {_vm.phone=$$v},expression:\"phone\"}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n  <div :class=\"['vue-tel-input-vuetify', wrapperClasses]\">\n    <div class=\"country-code\">\n      <v-select\n        ref=\"countryInput\"\n        v-model=\"countryCode\"\n        :append-icon=\"appendIcon\"\n        :class=\"selectClasses\"\n        :label=\"selectLabel\"\n        @change=\"onChangeCountryCode\"\n        :items=\"sortedCountries\"\n        :disabled=\"disabled\"\n        :outlined=\"outlined\"\n        :filled=\"filled\"\n        :flat=\"flat\"\n        :light=\"light\"\n        :dark=\"dark\"\n        :readonly=\"readonly\"\n        :shaped=\"shaped\"\n        :rounded=\"rounded\"\n        :background-color=\"backgroundColor\"\n        :color=\"color\"\n        :dense=\"dense\"\n        :menu-props=\"menuProps\"\n        :height=\"inputHeight\"\n        item-text=\"name\"\n        item-value=\"iso2\"\n        return-object\n      >\n        <template v-slot:selection>\n          <div :class=\"activeCountry.iso2.toLowerCase()\" class=\"vti__flag\" />\n        </template>\n        <template v-slot:item=\"data\">\n          <span :class=\"data.item.iso2.toLowerCase()\" class=\"vti__flag\" />\n          <span>{{ data.item.name }} {{ `+${data.item.dialCode}` }}</span>\n        </template>\n      </v-select>\n    </div>\n    <v-text-field\n      ref=\"input\"\n      type=\"tel\"\n      :class=\"textFieldClasses\"\n      :messages=\"messages\"\n      :error-messages=\"errorMessages\"\n      :success-messages=\"successMessages\"\n      :hint=\"hint\"\n      :suffix=\"suffix\"\n      :prefix=\"prefix\"\n      :background-color=\"backgroundColor\"\n      :color=\"color\"\n      :rules=\"rules\"\n      :loader-height=\"loaderHeight\"\n      :loading=\"loading\"\n      :hide-details=\"hideDetails\"\n      :clearable=\"clearable\"\n      :filled=\"filled\"\n      :full-width=\"fullWidth\"\n      :flat=\"flat\"\n      :light=\"light\"\n      :dark=\"dark\"\n      :validate-on-blur=\"validateOnBlur\"\n      :outlined=\"outlined\"\n      :dense=\"dense\"\n      :persistent-hint=\"persistentHint\"\n      :readonly=\"readonly\"\n      :error=\"error\"\n      :success=\"success\"\n      :shaped=\"shaped\"\n      :single-line=\"singleLine\"\n      :rounded=\"rounded\"\n      :value=\"value\"\n      :label=\"label\"\n      :disabled=\"disabled\"\n      :placeholder=\"placeholder\"\n      :persistent-placeholder=\"persistentPlaceholder\"\n      v-model=\"phone\"\n      :autofocus=\"autofocus\"\n      :name=\"name\"\n      :required=\"required\"\n      :autocomplete=\"autocomplete\"\n      :id=\"inputId\"\n      :maxlength=\"maxLen\"\n      :tabindex=\"\n        inputOptions && inputOptions.tabindex ? inputOptions.tabindex : 0\n      \"\n      :height=\"inputHeight\"\n      @input=\"onInput\"\n      @blur=\"onBlur\"\n      @focus=\"onFocus\"\n      @click=\"onClick\"\n      @change=\"onChange\"\n      @mousedown=\"onMouseDown\"\n      @mouseup=\"onMouseUp\"\n      @keydown=\"onKeyDown\"\n      @keyup.enter=\"onEnter\"\n      @keyup.space=\"onSpace\"\n    >\n      <template #append>\n        <slot name=\"append\" />\n      </template>\n      <template #append-outer>\n        <slot name=\"append-outer\" />\n      </template>\n      <template #label>\n        <slot name=\"label\" />\n      </template>\n      <template #message=\"{ key, message }\">\n        <slot name=\"message\" v-bind=\"{ key, message }\" />\n      </template>\n      <template #prepend>\n        <slot name=\"prepend\" />\n      </template>\n      <template #prepend-inner>\n        <slot name=\"prepend-inner\" />\n      </template>\n      <template #progress>\n        <slot name=\"progress\" />\n      </template>\n    </v-text-field>\n  </div>\n</template>\n\n<script>\nimport PhoneNumber from 'awesome-phonenumber';\nimport utils, { getCountry, setCaretPosition } from './utils';\n\nfunction getDefault(key) {\n  return utils.options[key];\n}\n\n// Polyfill for Event.path in IE 11: https://stackoverflow.com/a/46093727\nfunction getParents(node, memo) {\n  const parsedMemo = memo || [];\n  const { parentNode } = node;\n  if (!parentNode) {\n    return parsedMemo;\n  }\n  return getParents(parentNode, parsedMemo.concat(parentNode));\n}\n\nexport default {\n  name: 'VueTelInputVuetify',\n  directives: {\n    // Click-outside by BosNaufal: https://github.com/BosNaufal/vue-click-outside\n    'click-outside': {\n      bind(el, binding, vNode) {\n        // Provided expression must evaluate to a function.\n        if (typeof binding.value !== 'function') {\n          const compName = vNode.context.name;\n          let warn = `[Vue-click-outside:] provided expression ${binding.expression} is not a function, but has to be`;\n          if (compName) {\n            warn += `Found in component ${compName}`;\n          }\n          console.warn(warn);\n        }\n        // Define Handler and cache it on the element\n        const { bubble } = binding.modifiers;\n        const handler = (e) => {\n          // Fall back to composedPath if e.path is undefined\n          const path = e.path\n            || (e.composedPath ? e.composedPath() : false)\n            || getParents(e.target);\n          if (\n            bubble\n            || (path.length && !el.contains(path[0]) && el !== path[0])\n          ) {\n            binding.value(e);\n          }\n        };\n        el.__vueClickOutside__ = handler;\n        // add Event Listeners\n        document.addEventListener('click', handler);\n      },\n      unbind(el) {\n        // Remove Event Listeners\n        document.removeEventListener('click', el.__vueClickOutside__);\n        el.__vueClickOutside__ = null;\n      },\n    },\n  },\n  props: {\n    messages: {\n      type: [Array, String],\n    },\n    errorMessages: {\n      type: [Array, String],\n    },\n    successMessages: {\n      type: [Array, String],\n    },\n    hint: {\n      type: String,\n    },\n    suffix: {\n      type: String,\n    },\n    prefix: {\n      type: String,\n    },\n    appendIcon: {\n      type: String,\n      default: '',\n    },\n    backgroundColor: {\n      type: String,\n    },\n    color: {\n      type: String,\n    },\n    rules: {\n      type: Array,\n      default: () => [],\n    },\n    loaderHeight: {\n      type: [Number, String],\n      default: 2,\n    },\n    loading: {\n      type: [Boolean, String],\n      default: false,\n    },\n    hideDetails: {\n      type: [Boolean, String],\n    },\n    clearable: {\n      type: Boolean,\n      default: false,\n    },\n    filled: {\n      type: Boolean,\n      default: false,\n    },\n    fullWidth: {\n      type: Boolean,\n      default: false,\n    },\n    flat: {\n      type: Boolean,\n      default: false,\n    },\n    light: {\n      type: Boolean,\n      default: false,\n    },\n    dark: {\n      type: Boolean,\n      default: false,\n    },\n    validateOnBlur: {\n      type: Boolean,\n      default: false,\n    },\n    outlined: {\n      type: Boolean,\n      default: false,\n    },\n    dense: {\n      type: Boolean,\n      default: false,\n    },\n    persistentHint: {\n      type: Boolean,\n      default: false,\n    },\n    readonly: {\n      type: Boolean,\n      default: false,\n    },\n    error: {\n      type: Boolean,\n      default: false,\n    },\n    success: {\n      type: Boolean,\n      default: false,\n    },\n    shaped: {\n      type: Boolean,\n      default: false,\n    },\n    singleLine: {\n      type: Boolean,\n      default: false,\n    },\n    rounded: {\n      type: Boolean,\n      default: false,\n    },\n    inputHeight: {\n      type: String,\n      default: '',\n    },\n    value: {\n      type: String,\n      default: '',\n    },\n    label: {\n      type: String,\n      default: () => getDefault('label'),\n    },\n    selectLabel: {\n      type: String,\n      default: '',\n    },\n    menuProps: {\n      type: [String, Array, Object],\n      default: () => {},\n    },\n    placeholder: {\n      type: String,\n      default: () => getDefault('placeholder'),\n    },\n    persistentPlaceholder: {\n      type: Boolean,\n      default: false,\n    },\n    disabledFetchingCountry: {\n      type: Boolean,\n      default: () => getDefault('disabledFetchingCountry'),\n    },\n    disabled: {\n      type: Boolean,\n      default: () => getDefault('disabled'),\n    },\n    mode: {\n      type: String,\n      default: () => getDefault('mode'),\n    },\n    invalidMsg: {\n      type: String,\n      default: () => getDefault('invalidMsg'),\n    },\n    required: {\n      type: Boolean,\n      default: () => getDefault('required'),\n    },\n    allCountries: {\n      type: Array,\n      default: () => getDefault('allCountries'),\n    },\n    defaultCountry: {\n      // Default country code, ie: 'AU'\n      // Will override the current country of user\n      type: String,\n      default: () => getDefault('defaultCountry'),\n    },\n    preferredCountries: {\n      type: Array,\n      default: () => getDefault('preferredCountries'),\n    },\n    onlyCountries: {\n      type: Array,\n      default: () => getDefault('onlyCountries'),\n    },\n    ignoredCountries: {\n      type: Array,\n      default: () => getDefault('ignoredCountries'),\n    },\n    autocomplete: {\n      type: String,\n      default: () => getDefault('autocomplete'),\n    },\n    autofocus: {\n      type: Boolean,\n      default: () => getDefault('autofocus'),\n    },\n    name: {\n      type: String,\n      default: () => getDefault('name'),\n    },\n    wrapperClasses: {\n      type: [String, Array, Object],\n      default: () => getDefault('wrapperClasses'),\n    },\n    textFieldClasses: {\n      type: [String, Array, Object],\n      default: () => '',\n    },\n    selectClasses: {\n      type: [String, Array, Object],\n      default: () => '',\n    },\n    inputClasses: {\n      type: [String, Array, Object],\n      default: () => '',\n    },\n    inputId: {\n      type: String,\n      default: () => getDefault('inputId'),\n    },\n    inputOptions: {\n      type: Object,\n      default: () => getDefault('inputOptions'),\n    },\n    maxLen: {\n      type: Number,\n      default: () => getDefault('maxLen'),\n    },\n  },\n  data() {\n    return {\n      phone: '',\n      activeCountry: { iso2: '' },\n      open: false,\n      finishMounted: false,\n      selectedIndex: null,\n      typeToFindInput: '',\n      typeToFindTimer: null,\n      cursorPosition: 0,\n      countryCode: null,\n    };\n  },\n  computed: {\n    parsedMode() {\n      if (this.mode) {\n        if (!['international', 'national'].includes(this.mode)) {\n          console.error('Invalid value of prop \"mode\"');\n        } else {\n          return this.mode;\n        }\n      }\n      if (!this.phone || this.phone[0] !== '+') {\n        return 'national';\n      }\n      return 'international';\n    },\n    filteredCountries() {\n      // List countries after filtered\n      if (this.onlyCountries.length) {\n        return this.getCountries(this.onlyCountries);\n      }\n      if (this.ignoredCountries.length) {\n        return this.allCountries.filter(\n          ({ iso2 }) => !this.ignoredCountries.includes(iso2.toUpperCase())\n            && !this.ignoredCountries.includes(iso2.toLowerCase()),\n        );\n      }\n      return this.allCountries;\n    },\n    sortedCountries() {\n      // Sort the list countries: from preferred countries to all countries\n      const preferredCountries = this.getCountries(this.preferredCountries).map(\n        country => ({\n          ...country,\n          preferred: true,\n        }),\n      );\n      return [...preferredCountries, ...this.filteredCountries];\n    },\n    phoneObject() {\n      const result = PhoneNumber(\n        this.phone || '',\n        this.activeCountry.iso2,\n      ).toJSON();\n      Object.assign(result, {\n        isValid: result.valid,\n        country: this.activeCountry,\n      });\n      if (!this.phone) {\n        return {\n          ...result,\n          number: {\n            input: '',\n          },\n        };\n      }\n      return result;\n    },\n    phoneText() {\n      let key = 'input';\n      if (this.phoneObject.valid) {\n        key = this.parsedMode;\n      }\n      return this.phoneObject.number[key] || '';\n    },\n  },\n  watch: {\n    // eslint-disable-next-line func-names\n    'phoneObject.valid': function (value) {\n      if (value) {\n        this.phone = this.phoneText;\n      }\n      this.$emit('validate', this.phoneObject);\n      this.$emit('onValidate', this.phoneObject); // Deprecated\n    },\n    value() {\n      this.phone = this.value;\n    },\n    open(isDropdownOpened) {\n      // Emit open and close events\n      if (isDropdownOpened) {\n        this.$emit('open');\n      } else {\n        this.$emit('close');\n      }\n    },\n    phone(newValue, oldValue) {\n      if (newValue) {\n        if (newValue[0] === '+') {\n          const code = PhoneNumber(newValue).getRegionCode();\n          if (code) {\n            this.activeCountry = this.findCountry(code) || this.activeCountry;\n          }\n        }\n      }\n      // Reset the cursor to current position if it's not the last character.\n      if (oldValue && this.cursorPosition < oldValue.length) {\n        this.$nextTick(() => {\n          setCaretPosition(this.$refs.input, this.cursorPosition);\n        });\n      }\n\n      this.$emit('input', this.phoneText, this.phoneObject);\n    },\n    activeCountry(value) {\n      if (value && value.iso2) {\n        this.$emit('country-changed', value);\n      }\n    },\n  },\n  mounted() {\n    this.$watch('$refs.countryInput.isResetting', v => v && this.reset());\n    this.reset();\n  },\n  created() {\n    if (this.value) {\n      this.phone = this.value.trim();\n    }\n  },\n  methods: {\n    initializeCountry() {\n      return new Promise((resolve) => {\n        /**\n         * 1. If the phone included prefix (+12), try to get the country and set it\n         */\n        if (this.phone && this.phone[0] === '+') {\n          const activeCountry = PhoneNumber(this.phone).getRegionCode();\n          if (activeCountry) {\n            this.choose(activeCountry);\n            resolve();\n            return;\n          }\n        }\n        /**\n         * 2. Use default country if passed from parent\n         */\n        if (this.defaultCountry) {\n          const defaultCountry = this.findCountry(this.defaultCountry);\n          if (defaultCountry) {\n            this.choose(defaultCountry);\n            resolve();\n            return;\n          }\n        }\n        const fallbackCountry = this.findCountry(this.preferredCountries[0])\n          || this.filteredCountries[0];\n        /**\n         * 3. Check if fetching country based on user's IP is allowed, set it as the default country\n         */\n        if (!this.disabledFetchingCountry) {\n          getCountry()\n            .then((res) => {\n              if (this.phone === '') {\n                this.activeCountry = this.findCountry(res) || this.activeCountry;\n              }\n            })\n            .catch((error) => {\n              console.warn(error);\n              /**\n               * 4. Use the first country from preferred list (if available) or all countries list\n               */\n              this.choose(fallbackCountry);\n            })\n            .finally(() => {\n              resolve();\n            });\n        } else {\n          /**\n           * 4. Use the first country from preferred list (if available) or all countries list\n           */\n          this.choose(fallbackCountry);\n          resolve();\n        }\n      });\n    },\n    /**\n     * Get the list of countries from the list of iso2 code\n     */\n    getCountries(list = []) {\n      return list\n        .map(countryCode => this.findCountry(countryCode))\n        .filter(Boolean);\n    },\n    findCountry(iso = '') {\n      return this.allCountries.find(\n        country => country.iso2 === iso.toUpperCase(),\n      );\n    },\n    getItemClass(index, iso2) {\n      const highlighted = this.selectedIndex === index;\n      const lastPreferred = index === this.preferredCountries.length - 1;\n      const preferred = this.preferredCountries.some(\n        c => c.toUpperCase() === iso2,\n      );\n      return {\n        highlighted,\n        'last-preferred': lastPreferred,\n        preferred,\n      };\n    },\n    choose(country, toEmitInputEvent = false) {\n      this.activeCountry = country || this.activeCountry || {};\n      if (\n        this.phone\n        && this.phone[0] === '+'\n        && this.activeCountry.iso2\n        && this.phoneObject.number.significant\n      ) {\n        // Attach the current phone number with the newly selected country\n        this.phone = PhoneNumber(\n          this.phoneObject.number.significant,\n          this.activeCountry.iso2,\n        ).getNumber('international');\n      } else if (\n        this.inputOptions\n        && this.inputOptions.showDialCode\n        && country\n      ) {\n        // Reset phone if the showDialCode is set\n        this.phone = `+${country.dialCode}`;\n      }\n      if (toEmitInputEvent) {\n        this.$emit('input', this.phoneText, this.phoneObject);\n        this.$emit('onInput', this.phoneObject); // Deprecated\n      }\n    },\n    onInput(e) {\n      // this.$refs.input.setCustomValidity(\n      //   this.phoneObject.valid ? \"\" : this.invalidMsg\n      // );\n      // Returns response.number to assign it to v-model (if being used)\n      // Returns full response for cases @input is used\n      // and parent wants to return the whole response.\n      this.$emit('input', this.phoneText, this.phoneObject);\n      this.$emit('onInput', this.phoneObject); // Deprecated\n      // Keep the current cursor position just in case the input reformatted\n      // and it gets moved to the last character.\n      if (e && e.target) {\n        this.cursorPosition = e.target.selectionStart;\n      }\n    },\n    onBlur() {\n      this.$emit('blur');\n      this.$emit('onBlur'); // Deprecated\n    },\n    onFocus(event) {\n      this.$emit('focus', event);\n    },\n    onClick(event) {\n      this.$emit('click', event);\n    },\n    onChange(value) {\n      this.$emit('change', value);\n    },\n    onMouseUp(event) {\n      this.$emit('mouseup', event);\n    },\n    onMouseDown(event) {\n      this.$emit('mousedown', event);\n    },\n    onKeyDown(event) {\n      this.$emit('keydown', event);\n    },\n    onEnter() {\n      this.$emit('enter');\n      this.$emit('onEnter'); // Deprecated\n    },\n    onSpace() {\n      this.$emit('space');\n      this.$emit('onSpace'); // Deprecated\n    },\n    focus() {\n      this.$refs.input.focus();\n    },\n    toggleDropdown() {\n      if (this.disabled) {\n        return;\n      }\n      this.open = !this.open;\n    },\n    clickedOutside() {\n      this.open = false;\n    },\n    keyboardNav(e) {\n      if (e.keyCode === 40) {\n        // down arrow\n        e.preventDefault();\n        this.open = true;\n        if (this.selectedIndex === null) {\n          this.selectedIndex = 0;\n        } else {\n          this.selectedIndex = Math.min(\n            this.sortedCountries.length - 1,\n            this.selectedIndex + 1,\n          );\n        }\n        const selEle = this.$refs.list.children[this.selectedIndex];\n        if (\n          selEle.offsetTop + selEle.clientHeight\n          > this.$refs.list.scrollTop + this.$refs.list.clientHeight\n        ) {\n          this.$refs.list.scrollTop = selEle.offsetTop\n            - this.$refs.list.clientHeight\n            + selEle.clientHeight;\n        }\n      } else if (e.keyCode === 38) {\n        // up arrow\n        e.preventDefault();\n        this.open = true;\n        if (this.selectedIndex === null) {\n          this.selectedIndex = this.sortedCountries.length - 1;\n        } else {\n          this.selectedIndex = Math.max(0, this.selectedIndex - 1);\n        }\n        const selEle = this.$refs.list.children[this.selectedIndex];\n        if (selEle.offsetTop < this.$refs.list.scrollTop) {\n          this.$refs.list.scrollTop = selEle.offsetTop;\n        }\n      } else if (e.keyCode === 13) {\n        // enter key\n        if (this.selectedIndex !== null) {\n          this.choose(this.sortedCountries[this.selectedIndex]);\n        }\n        this.open = !this.open;\n      } else {\n        // typing a country's name\n        this.typeToFindInput += e.key;\n        clearTimeout(this.typeToFindTimer);\n        this.typeToFindTimer = setTimeout(() => {\n          this.typeToFindInput = '';\n        }, 700);\n        // don't include preferred countries so we jump to the right place in the alphabet\n        const typedCountryI = this.sortedCountries\n          .slice(this.preferredCountries.length)\n          .findIndex(c => c.name.toLowerCase().startsWith(this.typeToFindInput));\n        if (typedCountryI >= 0) {\n          this.selectedIndex = this.preferredCountries.length + typedCountryI;\n          const selEle = this.$refs.list.children[this.selectedIndex];\n          const needToScrollTop = selEle.offsetTop < this.$refs.list.scrollTop;\n          const needToScrollBottom = selEle.offsetTop + selEle.clientHeight\n            > this.$refs.list.scrollTop + this.$refs.list.clientHeight;\n          if (needToScrollTop || needToScrollBottom) {\n            this.$refs.list.scrollTop = selEle.offsetTop - this.$refs.list.clientHeight / 2;\n          }\n        }\n      }\n    },\n    reset() {\n      this.countryCode = this.activeCountry;\n      this.initializeCountry()\n        .then(() => {\n          if (\n            !this.phone\n            && this.inputOptions\n            && this.inputOptions.showDialCode\n            && this.activeCountry.dialCode\n          ) {\n            this.phone = `+${this.activeCountry.dialCode}`;\n          }\n          this.countryCode = this.activeCountry;\n          this.$emit('validate', this.phoneObject);\n          this.$emit('onValidate', this.phoneObject); // Deprecated\n        })\n        .catch(console.error)\n        .finally(() => {\n          this.finishMounted = true;\n        });\n      this.open = false;\n    },\n    onChangeCountryCode() {\n      this.choose(this.countryCode, true);\n    },\n  },\n};\n</script>\n\n<style src=\"./sprite.css\"></style>\n<style lang=\"scss\">\n.vti__flag {\n  margin-right: 8px;\n}\n\n.vue-tel-input-vuetify {\n  display: flex;\n  align-items: center;\n\n  .country-code {\n    width: 75px;\n  }\n\n  li.last-preferred {\n    border-bottom: 1px solid #cacaca;\n  }\n\n  .v-text-field {\n    .v-select__selections {\n      position: relative;\n      .vti__flag {\n        position: absolute;\n        margin-left: 18px;\n      }\n    }\n    &--outlined {\n      .v-select__selections {\n        .vti__flag {\n          margin-left: auto;\n        }\n      }\n    }\n  }\n}\n</style>\n","import mod from \"-!../../cache-loader/dist/cjs.js??ref--13-0!../../thread-loader/dist/cjs.js!../../babel-loader/lib/index.js!../../cache-loader/dist/cjs.js??ref--1-0!../../vue-loader/lib/index.js??vue-loader-options!./vue-tel-input-vuetify.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../cache-loader/dist/cjs.js??ref--13-0!../../thread-loader/dist/cjs.js!../../babel-loader/lib/index.js!../../cache-loader/dist/cjs.js??ref--1-0!../../vue-loader/lib/index.js??vue-loader-options!./vue-tel-input-vuetify.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./vue-tel-input-vuetify.vue?vue&type=template&id=0de1b0ae&\"\nimport script from \"./vue-tel-input-vuetify.vue?vue&type=script&lang=js&\"\nexport * from \"./vue-tel-input-vuetify.vue?vue&type=script&lang=js&\"\nimport style0 from \"./sprite.css?vue&type=style&index=0&lang=css&\"\nimport style1 from \"./vue-tel-input-vuetify.vue?vue&type=style&index=1&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../vuetify-loader/lib/runtime/installComponents.js\"\nimport { VSelect } from 'vuetify/lib/components/VSelect';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\ninstallComponents(component, {VSelect,VTextField})\n","/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n  return function() {\n    return value;\n  };\n}\n\nmodule.exports = constant;\n","/*\n currency.js - v2.0.4\n http://scurker.github.io/currency.js\n\n Copyright (c) 2021 Jason Wilson\n Released under MIT license\n*/\n(function(e,g){\"object\"===typeof exports&&\"undefined\"!==typeof module?module.exports=g():\"function\"===typeof define&&define.amd?define(g):(e=e||self,e.currency=g())})(this,function(){function e(b,a){if(!(this instanceof e))return new e(b,a);a=Object.assign({},m,a);var d=Math.pow(10,a.precision);this.intValue=b=g(b,a);this.value=b/d;a.increment=a.increment||1/d;a.groups=a.useVedic?n:p;this.s=a;this.p=d}function g(b,a){var d=2<arguments.length&&void 0!==arguments[2]?arguments[2]:!0;var c=a.decimal;\nvar h=a.errorOnInvalid,k=a.fromCents,l=Math.pow(10,a.precision),f=b instanceof e;if(f&&k)return b.intValue;if(\"number\"===typeof b||f)c=f?b.value:b;else if(\"string\"===typeof b)h=new RegExp(\"[^-\\\\d\"+c+\"]\",\"g\"),c=new RegExp(\"\\\\\"+c,\"g\"),c=(c=b.replace(/\\((.*)\\)/,\"-$1\").replace(h,\"\").replace(c,\".\"))||0;else{if(h)throw Error(\"Invalid Input\");c=0}k||(c=(c*l).toFixed(4));return d?Math.round(c):c}var m={symbol:\"$\",separator:\",\",decimal:\".\",errorOnInvalid:!1,precision:2,pattern:\"!#\",negativePattern:\"-!#\",format:function(b,\na){var d=a.pattern,c=a.negativePattern,h=a.symbol,k=a.separator,l=a.decimal;a=a.groups;var f=(\"\"+b).replace(/^-/,\"\").split(\".\"),q=f[0];f=f[1];return(0<=b.value?d:c).replace(\"!\",h).replace(\"#\",q.replace(a,\"$1\"+k)+(f?l+f:\"\"))},fromCents:!1},p=/(\\d)(?=(\\d{3})+\\b)/g,n=/(\\d)(?=(\\d\\d)+\\d\\b)/g;e.prototype={add:function(b){var a=this.s,d=this.p;return e((this.intValue+g(b,a))/(a.fromCents?1:d),a)},subtract:function(b){var a=this.s,d=this.p;return e((this.intValue-g(b,a))/(a.fromCents?1:d),a)},multiply:function(b){var a=\nthis.s;return e(this.intValue*b/(a.fromCents?1:Math.pow(10,a.precision)),a)},divide:function(b){var a=this.s;return e(this.intValue/g(b,a,!1),a)},distribute:function(b){var a=this.intValue,d=this.p,c=this.s,h=[],k=Math[0<=a?\"floor\":\"ceil\"](a/b),l=Math.abs(a-k*b);for(d=c.fromCents?1:d;0!==b;b--){var f=e(k/d,c);0<l--&&(f=f[0<=a?\"add\":\"subtract\"](1/d));h.push(f)}return h},dollars:function(){return~~this.value},cents:function(){return~~(this.intValue%this.p)},format:function(b){var a=this.s;return\"function\"===\ntypeof b?b(this,a):a.format(this,Object.assign({},a,b))},toString:function(){var b=this.s,a=b.increment;return(Math.round(this.intValue/this.p/a)*a).toFixed(b.precision)},toJSON:function(){return this.value}};return e});\n","var baseIsTypedArray = require('./_baseIsTypedArray'),\n    baseUnary = require('./_baseUnary'),\n    nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n","var baseGetTag = require('./_baseGetTag'),\n    isLength = require('./isLength'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    arrayTag = '[object Array]',\n    boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    errorTag = '[object Error]',\n    funcTag = '[object Function]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    objectTag = '[object Object]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]',\n    float32Tag = '[object Float32Array]',\n    float64Tag = '[object Float64Array]',\n    int8Tag = '[object Int8Array]',\n    int16Tag = '[object Int16Array]',\n    int32Tag = '[object Int32Array]',\n    uint8Tag = '[object Uint8Array]',\n    uint8ClampedTag = '[object Uint8ClampedArray]',\n    uint16Tag = '[object Uint16Array]',\n    uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n  return isObjectLike(value) &&\n    isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n","// Styles\nimport \"../../../src/components/VApp/VApp.sass\"; // Mixins\n\nimport Themeable from '../../mixins/themeable'; // Utilities\n\nimport mixins from '../../util/mixins';\n/* @vue/component */\n\nexport default mixins(Themeable).extend({\n  name: 'v-app',\n  props: {\n    dark: {\n      type: Boolean,\n      default: undefined\n    },\n    id: {\n      type: String,\n      default: 'app'\n    },\n    light: {\n      type: Boolean,\n      default: undefined\n    }\n  },\n  computed: {\n    isDark() {\n      return this.$vuetify.theme.dark;\n    }\n\n  },\n\n  beforeCreate() {\n    if (!this.$vuetify || this.$vuetify === this.$root) {\n      throw new Error('Vuetify is not properly initialized, see https://vuetifyjs.com/getting-started/quick-start#bootstrapping-the-vuetify-object');\n    }\n  },\n\n  render(h) {\n    const wrapper = h('div', {\n      staticClass: 'v-application--wrap'\n    }, this.$slots.default);\n    return h('div', {\n      staticClass: 'v-application',\n      class: {\n        'v-application--is-rtl': this.$vuetify.rtl,\n        'v-application--is-ltr': !this.$vuetify.rtl,\n        ...this.themeClasses\n      },\n      attrs: {\n        'data-app': true\n      },\n      domProps: {\n        id: this.id\n      }\n    }, [wrapper]);\n  }\n\n});\n//# sourceMappingURL=VApp.js.map","var Set = require('./_Set'),\n    noop = require('./noop'),\n    setToArray = require('./_setToArray');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\nvar createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n  return new Set(values);\n};\n\nmodule.exports = createSet;\n","var isObject = require('./isObject');\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n  function object() {}\n  return function(proto) {\n    if (!isObject(proto)) {\n      return {};\n    }\n    if (objectCreate) {\n      return objectCreate(proto);\n    }\n    object.prototype = proto;\n    var result = new object;\n    object.prototype = undefined;\n    return result;\n  };\n}());\n\nmodule.exports = baseCreate;\n","const { hooks, isPromise } = require('@feathersjs/commons');\nconst baseHooks = require('./base');\n\nconst {\n  createHookObject,\n  getHooks,\n  processHooks,\n  enableHooks,\n  ACTIVATE_HOOKS\n} = hooks;\n\nconst withHooks = function withHooks ({\n  app,\n  service,\n  method,\n  original\n}) {\n  return (_hooks = {}) => {\n    const hooks = app.hookTypes.reduce((result, type) => {\n      const value = _hooks[type] || [];\n\n      result[type] = Array.isArray(value) ? value : [ value ];\n\n      return result;\n    }, {});\n\n    return function (...args) {\n      const returnHook = args[args.length - 1] === true\n        ? args.pop() : false;\n\n      // Create the hook object that gets passed through\n      const hookObject = createHookObject(method, {\n        type: 'before', // initial hook object type\n        arguments: args,\n        service,\n        app\n      });\n\n      return Promise.resolve(hookObject)\n\n        // Run `before` hooks\n        .then(hookObject => {\n          return processHooks.call(service, baseHooks.concat(hooks.before), hookObject);\n        })\n\n        // Run the original method\n        .then(hookObject => {\n          // If `hookObject.result` is set, skip the original method\n          if (typeof hookObject.result !== 'undefined') {\n            return hookObject;\n          }\n\n          // Otherwise, call it with arguments created from the hook object\n          const promise = new Promise(resolve => {\n            const func = original || service[method];\n            const args = service.methods[method].map((value) => hookObject[value]);\n            const result = func.apply(service, args);\n\n            if (!isPromise(result)) {\n              throw new Error(`Service method '${hookObject.method}' for '${hookObject.path}' service must return a promise`);\n            }\n\n            resolve(result);\n          });\n\n          return promise\n            .then(result => {\n              hookObject.result = result;\n              return hookObject;\n            })\n            .catch(error => {\n              error.hook = hookObject;\n              throw error;\n            });\n        })\n\n        // Run `after` hooks\n        .then(hookObject => {\n          const afterHookObject = Object.assign({}, hookObject, {\n            type: 'after'\n          });\n\n          return processHooks.call(service, hooks.after, afterHookObject);\n        })\n\n        // Run `errors` hooks\n        .catch(error => {\n          const errorHookObject = Object.assign({}, error.hook, {\n            type: 'error',\n            original: error.hook,\n            error,\n            result: undefined\n          });\n\n          return processHooks.call(service, hooks.error, errorHookObject)\n            .catch(error => {\n              const errorHookObject = Object.assign({}, error.hook, {\n                error,\n                result: undefined\n              });\n\n              return errorHookObject;\n            });\n        })\n\n        // Run `finally` hooks\n        .then(hookObject => {\n          return processHooks.call(service, hooks.finally, hookObject)\n            .catch(error => {\n              const errorHookObject = Object.assign({}, error.hook, {\n                error,\n                result: undefined\n              });\n\n              return errorHookObject;\n            });\n        })\n\n        // Resolve with a result or reject with an error\n        .then(hookObject => {\n          if (typeof hookObject.error !== 'undefined' && typeof hookObject.result === 'undefined') {\n            return Promise.reject(returnHook ? hookObject : hookObject.error);\n          } else {\n            return returnHook ? hookObject : hookObject.result;\n          }\n        });\n    };\n  };\n};\n\n// A service mixin that adds `service.hooks()` method and functionality\nconst hookMixin = exports.hookMixin = function hookMixin (service) {\n  if (typeof service.hooks === 'function') {\n    return;\n  }\n\n  service.methods = Object.getOwnPropertyNames(service)\n    .filter(key => typeof service[key] === 'function' && service[key][ACTIVATE_HOOKS])\n    .reduce((result, methodName) => {\n      result[methodName] = service[methodName][ACTIVATE_HOOKS];\n      return result;\n    }, service.methods || {});\n\n  Object.assign(service.methods, {\n    find: ['params'],\n    get: ['id', 'params'],\n    create: ['data', 'params'],\n    update: ['id', 'data', 'params'],\n    patch: ['id', 'data', 'params'],\n    remove: ['id', 'params']\n  });\n\n  const app = this;\n  const methodNames = Object.keys(service.methods);\n  // Assemble the mixin object that contains all \"hooked\" service methods\n  const mixin = methodNames.reduce((mixin, method) => {\n    if (typeof service[method] !== 'function') {\n      return mixin;\n    }\n\n    mixin[method] = function () {\n      const service = this;\n      const args = Array.from(arguments);\n      const original = service._super.bind(service);\n\n      return withHooks({\n        app,\n        service,\n        method,\n        original\n      })({\n        before: getHooks(app, service, 'before', method),\n        after: getHooks(app, service, 'after', method, true),\n        error: getHooks(app, service, 'error', method, true),\n        finally: getHooks(app, service, 'finally', method, true)\n      })(...args);\n    };\n\n    return mixin;\n  }, {});\n\n  // Add .hooks method and properties to the service\n  enableHooks(service, methodNames, app.hookTypes);\n\n  service.mixin(mixin);\n};\n\nmodule.exports = function () {\n  return function (app) {\n    // We store a reference of all supported hook types on the app\n    // in case someone needs it\n    Object.assign(app, {\n      hookTypes: ['before', 'after', 'error', 'finally']\n    });\n\n    // Add functionality for hooks to be registered as app.hooks\n    enableHooks(app, app.methods, app.hookTypes);\n\n    app.mixins.push(hookMixin);\n  };\n};\n\nmodule.exports.withHooks = withHooks;\n\nmodule.exports.ACTIVATE_HOOKS = ACTIVATE_HOOKS;\n\nmodule.exports.activateHooks = function activateHooks (args) {\n  return fn => {\n    Object.defineProperty(fn, ACTIVATE_HOOKS, { value: args });\n    return fn;\n  };\n};\n","/** Used to match words composed of alphanumeric characters. */\nvar reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n/**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction asciiWords(string) {\n  return string.match(reAsciiWord) || [];\n}\n\nmodule.exports = asciiWords;\n","import Vue from 'vue';\n/* @vue/component */\n\nconst Themeable = Vue.extend().extend({\n  name: 'themeable',\n\n  provide() {\n    return {\n      theme: this.themeableProvide\n    };\n  },\n\n  inject: {\n    theme: {\n      default: {\n        isDark: false\n      }\n    }\n  },\n  props: {\n    dark: {\n      type: Boolean,\n      default: null\n    },\n    light: {\n      type: Boolean,\n      default: null\n    }\n  },\n\n  data() {\n    return {\n      themeableProvide: {\n        isDark: false\n      }\n    };\n  },\n\n  computed: {\n    appIsDark() {\n      return this.$vuetify.theme.dark || false;\n    },\n\n    isDark() {\n      if (this.dark === true) {\n        // explicitly dark\n        return true;\n      } else if (this.light === true) {\n        // explicitly light\n        return false;\n      } else {\n        // inherit from parent, or default false if there is none\n        return this.theme.isDark;\n      }\n    },\n\n    themeClasses() {\n      return {\n        'theme--dark': this.isDark,\n        'theme--light': !this.isDark\n      };\n    },\n\n    /** Used by menus and dialogs, inherits from v-app instead of the parent */\n    rootIsDark() {\n      if (this.dark === true) {\n        // explicitly dark\n        return true;\n      } else if (this.light === true) {\n        // explicitly light\n        return false;\n      } else {\n        // inherit from v-app\n        return this.appIsDark;\n      }\n    },\n\n    rootThemeClasses() {\n      return {\n        'theme--dark': this.rootIsDark,\n        'theme--light': !this.rootIsDark\n      };\n    }\n\n  },\n  watch: {\n    isDark: {\n      handler(newVal, oldVal) {\n        if (newVal !== oldVal) {\n          this.themeableProvide.isDark = this.isDark;\n        }\n      },\n\n      immediate: true\n    }\n  }\n});\nexport default Themeable;\nexport function functionalThemeClasses(context) {\n  const vm = { ...context.props,\n    ...context.injections\n  };\n  const isDark = Themeable.options.computed.isDark.call(vm);\n  return Themeable.options.computed.themeClasses.call({\n    isDark\n  });\n}\n//# sourceMappingURL=index.js.map","// Mixins\nimport Bootable from '../bootable'; // Utilities\n\nimport { getObjectValueByPath } from '../../util/helpers';\nimport mixins from '../../util/mixins';\nimport { consoleWarn } from '../../util/console';\n\nfunction validateAttachTarget(val) {\n  const type = typeof val;\n  if (type === 'boolean' || type === 'string') return true;\n  return val.nodeType === Node.ELEMENT_NODE;\n}\n\nfunction removeActivator(activator) {\n  activator.forEach(node => {\n    node.elm && node.elm.parentNode && node.elm.parentNode.removeChild(node.elm);\n  });\n}\n/* @vue/component */\n\n\nexport default mixins(Bootable).extend({\n  name: 'detachable',\n  props: {\n    attach: {\n      default: false,\n      validator: validateAttachTarget\n    },\n    contentClass: {\n      type: String,\n      default: ''\n    }\n  },\n  data: () => ({\n    activatorNode: null,\n    hasDetached: false\n  }),\n  watch: {\n    attach() {\n      this.hasDetached = false;\n      this.initDetach();\n    },\n\n    hasContent() {\n      this.$nextTick(this.initDetach);\n    }\n\n  },\n\n  beforeMount() {\n    this.$nextTick(() => {\n      if (this.activatorNode) {\n        const activator = Array.isArray(this.activatorNode) ? this.activatorNode : [this.activatorNode];\n        activator.forEach(node => {\n          if (!node.elm) return;\n          if (!this.$el.parentNode) return;\n          const target = this.$el === this.$el.parentNode.firstChild ? this.$el : this.$el.nextSibling;\n          this.$el.parentNode.insertBefore(node.elm, target);\n        });\n      }\n    });\n  },\n\n  mounted() {\n    this.hasContent && this.initDetach();\n  },\n\n  deactivated() {\n    this.isActive = false;\n  },\n\n  beforeDestroy() {\n    if (this.$refs.content && this.$refs.content.parentNode) {\n      this.$refs.content.parentNode.removeChild(this.$refs.content);\n    }\n  },\n\n  destroyed() {\n    if (this.activatorNode) {\n      const activator = Array.isArray(this.activatorNode) ? this.activatorNode : [this.activatorNode];\n\n      if (this.$el.isConnected) {\n        // Component has been destroyed but the element still exists, we must be in a transition\n        // Wait for the transition to finish before cleaning up the detached activator\n        const observer = new MutationObserver(list => {\n          if (list.some(record => Array.from(record.removedNodes).includes(this.$el))) {\n            observer.disconnect();\n            removeActivator(activator);\n          }\n        });\n        observer.observe(this.$el.parentNode, {\n          subtree: false,\n          childList: true\n        });\n      } else {\n        removeActivator(activator);\n      }\n    }\n  },\n\n  methods: {\n    getScopeIdAttrs() {\n      const scopeId = getObjectValueByPath(this.$vnode, 'context.$options._scopeId');\n      return scopeId && {\n        [scopeId]: ''\n      };\n    },\n\n    initDetach() {\n      if (this._isDestroyed || !this.$refs.content || this.hasDetached || // Leave menu in place if attached\n      // and dev has not changed target\n      this.attach === '' || // If used as a boolean prop (<v-menu attach>)\n      this.attach === true || // If bound to a boolean (<v-menu :attach=\"true\">)\n      this.attach === 'attach' // If bound as boolean prop in pug (v-menu(attach))\n      ) return;\n      let target;\n\n      if (this.attach === false) {\n        // Default, detach to app\n        target = document.querySelector('[data-app]');\n      } else if (typeof this.attach === 'string') {\n        // CSS selector\n        target = document.querySelector(this.attach);\n      } else {\n        // DOM Element\n        target = this.attach;\n      }\n\n      if (!target) {\n        consoleWarn(`Unable to locate target ${this.attach || '[data-app]'}`, this);\n        return;\n      }\n\n      target.appendChild(this.$refs.content);\n      this.hasDetached = true;\n    }\n\n  }\n});\n//# sourceMappingURL=index.js.map","\n/**\n * Gets the keys for an object.\n *\n * @return {Array} keys\n * @api private\n */\n\nmodule.exports = Object.keys || function keys (obj){\n  var arr = [];\n  var has = Object.prototype.hasOwnProperty;\n\n  for (var i in obj) {\n    if (has.call(obj, i)) {\n      arr.push(i);\n    }\n  }\n  return arr;\n};\n","var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n  return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n","// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n  ? window : typeof self != 'undefined' && self.Math == Math ? self\n  // eslint-disable-next-line no-new-func\n  : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n","var toInteger = require('./_to-integer');\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n  index = toInteger(index);\n  return index < 0 ? max(index + length, 0) : min(index, length);\n};\n","\n/**\n * Module dependencies.\n */\n\nvar eio = require('engine.io-client');\nvar Socket = require('./socket');\nvar Emitter = require('component-emitter');\nvar parser = require('socket.io-parser');\nvar on = require('./on');\nvar bind = require('component-bind');\nvar debug = require('debug')('socket.io-client:manager');\nvar indexOf = require('indexof');\nvar Backoff = require('backo2');\n\n/**\n * IE6+ hasOwnProperty\n */\n\nvar has = Object.prototype.hasOwnProperty;\n\n/**\n * Module exports\n */\n\nmodule.exports = Manager;\n\n/**\n * `Manager` constructor.\n *\n * @param {String} engine instance or engine uri/opts\n * @param {Object} options\n * @api public\n */\n\nfunction Manager (uri, opts) {\n  if (!(this instanceof Manager)) return new Manager(uri, opts);\n  if (uri && ('object' === typeof uri)) {\n    opts = uri;\n    uri = undefined;\n  }\n  opts = opts || {};\n\n  opts.path = opts.path || '/socket.io';\n  this.nsps = {};\n  this.subs = [];\n  this.opts = opts;\n  this.reconnection(opts.reconnection !== false);\n  this.reconnectionAttempts(opts.reconnectionAttempts || Infinity);\n  this.reconnectionDelay(opts.reconnectionDelay || 1000);\n  this.reconnectionDelayMax(opts.reconnectionDelayMax || 5000);\n  this.randomizationFactor(opts.randomizationFactor || 0.5);\n  this.backoff = new Backoff({\n    min: this.reconnectionDelay(),\n    max: this.reconnectionDelayMax(),\n    jitter: this.randomizationFactor()\n  });\n  this.timeout(null == opts.timeout ? 20000 : opts.timeout);\n  this.readyState = 'closed';\n  this.uri = uri;\n  this.connecting = [];\n  this.lastPing = null;\n  this.encoding = false;\n  this.packetBuffer = [];\n  var _parser = opts.parser || parser;\n  this.encoder = new _parser.Encoder();\n  this.decoder = new _parser.Decoder();\n  this.autoConnect = opts.autoConnect !== false;\n  if (this.autoConnect) this.open();\n}\n\n/**\n * Propagate given event to sockets and emit on `this`\n *\n * @api private\n */\n\nManager.prototype.emitAll = function () {\n  this.emit.apply(this, arguments);\n  for (var nsp in this.nsps) {\n    if (has.call(this.nsps, nsp)) {\n      this.nsps[nsp].emit.apply(this.nsps[nsp], arguments);\n    }\n  }\n};\n\n/**\n * Update `socket.id` of all sockets\n *\n * @api private\n */\n\nManager.prototype.updateSocketIds = function () {\n  for (var nsp in this.nsps) {\n    if (has.call(this.nsps, nsp)) {\n      this.nsps[nsp].id = this.generateId(nsp);\n    }\n  }\n};\n\n/**\n * generate `socket.id` for the given `nsp`\n *\n * @param {String} nsp\n * @return {String}\n * @api private\n */\n\nManager.prototype.generateId = function (nsp) {\n  return (nsp === '/' ? '' : (nsp + '#')) + this.engine.id;\n};\n\n/**\n * Mix in `Emitter`.\n */\n\nEmitter(Manager.prototype);\n\n/**\n * Sets the `reconnection` config.\n *\n * @param {Boolean} true/false if it should automatically reconnect\n * @return {Manager} self or value\n * @api public\n */\n\nManager.prototype.reconnection = function (v) {\n  if (!arguments.length) return this._reconnection;\n  this._reconnection = !!v;\n  return this;\n};\n\n/**\n * Sets the reconnection attempts config.\n *\n * @param {Number} max reconnection attempts before giving up\n * @return {Manager} self or value\n * @api public\n */\n\nManager.prototype.reconnectionAttempts = function (v) {\n  if (!arguments.length) return this._reconnectionAttempts;\n  this._reconnectionAttempts = v;\n  return this;\n};\n\n/**\n * Sets the delay between reconnections.\n *\n * @param {Number} delay\n * @return {Manager} self or value\n * @api public\n */\n\nManager.prototype.reconnectionDelay = function (v) {\n  if (!arguments.length) return this._reconnectionDelay;\n  this._reconnectionDelay = v;\n  this.backoff && this.backoff.setMin(v);\n  return this;\n};\n\nManager.prototype.randomizationFactor = function (v) {\n  if (!arguments.length) return this._randomizationFactor;\n  this._randomizationFactor = v;\n  this.backoff && this.backoff.setJitter(v);\n  return this;\n};\n\n/**\n * Sets the maximum delay between reconnections.\n *\n * @param {Number} delay\n * @return {Manager} self or value\n * @api public\n */\n\nManager.prototype.reconnectionDelayMax = function (v) {\n  if (!arguments.length) return this._reconnectionDelayMax;\n  this._reconnectionDelayMax = v;\n  this.backoff && this.backoff.setMax(v);\n  return this;\n};\n\n/**\n * Sets the connection timeout. `false` to disable\n *\n * @return {Manager} self or value\n * @api public\n */\n\nManager.prototype.timeout = function (v) {\n  if (!arguments.length) return this._timeout;\n  this._timeout = v;\n  return this;\n};\n\n/**\n * Starts trying to reconnect if reconnection is enabled and we have not\n * started reconnecting yet\n *\n * @api private\n */\n\nManager.prototype.maybeReconnectOnOpen = function () {\n  // Only try to reconnect if it's the first time we're connecting\n  if (!this.reconnecting && this._reconnection && this.backoff.attempts === 0) {\n    // keeps reconnection from firing twice for the same reconnection loop\n    this.reconnect();\n  }\n};\n\n/**\n * Sets the current transport `socket`.\n *\n * @param {Function} optional, callback\n * @return {Manager} self\n * @api public\n */\n\nManager.prototype.open =\nManager.prototype.connect = function (fn, opts) {\n  debug('readyState %s', this.readyState);\n  if (~this.readyState.indexOf('open')) return this;\n\n  debug('opening %s', this.uri);\n  this.engine = eio(this.uri, this.opts);\n  var socket = this.engine;\n  var self = this;\n  this.readyState = 'opening';\n  this.skipReconnect = false;\n\n  // emit `open`\n  var openSub = on(socket, 'open', function () {\n    self.onopen();\n    fn && fn();\n  });\n\n  // emit `connect_error`\n  var errorSub = on(socket, 'error', function (data) {\n    debug('connect_error');\n    self.cleanup();\n    self.readyState = 'closed';\n    self.emitAll('connect_error', data);\n    if (fn) {\n      var err = new Error('Connection error');\n      err.data = data;\n      fn(err);\n    } else {\n      // Only do this if there is no fn to handle the error\n      self.maybeReconnectOnOpen();\n    }\n  });\n\n  // emit `connect_timeout`\n  if (false !== this._timeout) {\n    var timeout = this._timeout;\n    debug('connect attempt will timeout after %d', timeout);\n\n    if (timeout === 0) {\n      openSub.destroy(); // prevents a race condition with the 'open' event\n    }\n\n    // set timer\n    var timer = setTimeout(function () {\n      debug('connect attempt timed out after %d', timeout);\n      openSub.destroy();\n      socket.close();\n      socket.emit('error', 'timeout');\n      self.emitAll('connect_timeout', timeout);\n    }, timeout);\n\n    this.subs.push({\n      destroy: function () {\n        clearTimeout(timer);\n      }\n    });\n  }\n\n  this.subs.push(openSub);\n  this.subs.push(errorSub);\n\n  return this;\n};\n\n/**\n * Called upon transport open.\n *\n * @api private\n */\n\nManager.prototype.onopen = function () {\n  debug('open');\n\n  // clear old subs\n  this.cleanup();\n\n  // mark as open\n  this.readyState = 'open';\n  this.emit('open');\n\n  // add new subs\n  var socket = this.engine;\n  this.subs.push(on(socket, 'data', bind(this, 'ondata')));\n  this.subs.push(on(socket, 'ping', bind(this, 'onping')));\n  this.subs.push(on(socket, 'pong', bind(this, 'onpong')));\n  this.subs.push(on(socket, 'error', bind(this, 'onerror')));\n  this.subs.push(on(socket, 'close', bind(this, 'onclose')));\n  this.subs.push(on(this.decoder, 'decoded', bind(this, 'ondecoded')));\n};\n\n/**\n * Called upon a ping.\n *\n * @api private\n */\n\nManager.prototype.onping = function () {\n  this.lastPing = new Date();\n  this.emitAll('ping');\n};\n\n/**\n * Called upon a packet.\n *\n * @api private\n */\n\nManager.prototype.onpong = function () {\n  this.emitAll('pong', new Date() - this.lastPing);\n};\n\n/**\n * Called with data.\n *\n * @api private\n */\n\nManager.prototype.ondata = function (data) {\n  this.decoder.add(data);\n};\n\n/**\n * Called when parser fully decodes a packet.\n *\n * @api private\n */\n\nManager.prototype.ondecoded = function (packet) {\n  this.emit('packet', packet);\n};\n\n/**\n * Called upon socket error.\n *\n * @api private\n */\n\nManager.prototype.onerror = function (err) {\n  debug('error', err);\n  this.emitAll('error', err);\n};\n\n/**\n * Creates a new socket for the given `nsp`.\n *\n * @return {Socket}\n * @api public\n */\n\nManager.prototype.socket = function (nsp, opts) {\n  var socket = this.nsps[nsp];\n  if (!socket) {\n    socket = new Socket(this, nsp, opts);\n    this.nsps[nsp] = socket;\n    var self = this;\n    socket.on('connecting', onConnecting);\n    socket.on('connect', function () {\n      socket.id = self.generateId(nsp);\n    });\n\n    if (this.autoConnect) {\n      // manually call here since connecting event is fired before listening\n      onConnecting();\n    }\n  }\n\n  function onConnecting () {\n    if (!~indexOf(self.connecting, socket)) {\n      self.connecting.push(socket);\n    }\n  }\n\n  return socket;\n};\n\n/**\n * Called upon a socket close.\n *\n * @param {Socket} socket\n */\n\nManager.prototype.destroy = function (socket) {\n  var index = indexOf(this.connecting, socket);\n  if (~index) this.connecting.splice(index, 1);\n  if (this.connecting.length) return;\n\n  this.close();\n};\n\n/**\n * Writes a packet.\n *\n * @param {Object} packet\n * @api private\n */\n\nManager.prototype.packet = function (packet) {\n  debug('writing packet %j', packet);\n  var self = this;\n  if (packet.query && packet.type === 0) packet.nsp += '?' + packet.query;\n\n  if (!self.encoding) {\n    // encode, then write to engine with result\n    self.encoding = true;\n    this.encoder.encode(packet, function (encodedPackets) {\n      for (var i = 0; i < encodedPackets.length; i++) {\n        self.engine.write(encodedPackets[i], packet.options);\n      }\n      self.encoding = false;\n      self.processPacketQueue();\n    });\n  } else { // add packet to the queue\n    self.packetBuffer.push(packet);\n  }\n};\n\n/**\n * If packet buffer is non-empty, begins encoding the\n * next packet in line.\n *\n * @api private\n */\n\nManager.prototype.processPacketQueue = function () {\n  if (this.packetBuffer.length > 0 && !this.encoding) {\n    var pack = this.packetBuffer.shift();\n    this.packet(pack);\n  }\n};\n\n/**\n * Clean up transport subscriptions and packet buffer.\n *\n * @api private\n */\n\nManager.prototype.cleanup = function () {\n  debug('cleanup');\n\n  var subsLength = this.subs.length;\n  for (var i = 0; i < subsLength; i++) {\n    var sub = this.subs.shift();\n    sub.destroy();\n  }\n\n  this.packetBuffer = [];\n  this.encoding = false;\n  this.lastPing = null;\n\n  this.decoder.destroy();\n};\n\n/**\n * Close the current socket.\n *\n * @api private\n */\n\nManager.prototype.close =\nManager.prototype.disconnect = function () {\n  debug('disconnect');\n  this.skipReconnect = true;\n  this.reconnecting = false;\n  if ('opening' === this.readyState) {\n    // `onclose` will not fire because\n    // an open event never happened\n    this.cleanup();\n  }\n  this.backoff.reset();\n  this.readyState = 'closed';\n  if (this.engine) this.engine.close();\n};\n\n/**\n * Called upon engine close.\n *\n * @api private\n */\n\nManager.prototype.onclose = function (reason) {\n  debug('onclose');\n\n  this.cleanup();\n  this.backoff.reset();\n  this.readyState = 'closed';\n  this.emit('close', reason);\n\n  if (this._reconnection && !this.skipReconnect) {\n    this.reconnect();\n  }\n};\n\n/**\n * Attempt a reconnection.\n *\n * @api private\n */\n\nManager.prototype.reconnect = function () {\n  if (this.reconnecting || this.skipReconnect) return this;\n\n  var self = this;\n\n  if (this.backoff.attempts >= this._reconnectionAttempts) {\n    debug('reconnect failed');\n    this.backoff.reset();\n    this.emitAll('reconnect_failed');\n    this.reconnecting = false;\n  } else {\n    var delay = this.backoff.duration();\n    debug('will wait %dms before reconnect attempt', delay);\n\n    this.reconnecting = true;\n    var timer = setTimeout(function () {\n      if (self.skipReconnect) return;\n\n      debug('attempting reconnect');\n      self.emitAll('reconnect_attempt', self.backoff.attempts);\n      self.emitAll('reconnecting', self.backoff.attempts);\n\n      // check again for the case socket closed in above events\n      if (self.skipReconnect) return;\n\n      self.open(function (err) {\n        if (err) {\n          debug('reconnect attempt error');\n          self.reconnecting = false;\n          self.reconnect();\n          self.emitAll('reconnect_error', err.data);\n        } else {\n          debug('reconnect success');\n          self.onreconnect();\n        }\n      });\n    }, delay);\n\n    this.subs.push({\n      destroy: function () {\n        clearTimeout(timer);\n      }\n    });\n  }\n};\n\n/**\n * Called upon successful reconnect.\n *\n * @api private\n */\n\nManager.prototype.onreconnect = function () {\n  var attempt = this.backoff.attempts;\n  this.reconnecting = false;\n  this.backoff.reset();\n  this.updateSocketIds();\n  this.emitAll('reconnect', attempt);\n};\n","/**\n * Data mask pattern reference\n * @type {Object}\n */\nexports.Patterns = {\n  PATTERN000: 0,\n  PATTERN001: 1,\n  PATTERN010: 2,\n  PATTERN011: 3,\n  PATTERN100: 4,\n  PATTERN101: 5,\n  PATTERN110: 6,\n  PATTERN111: 7\n}\n\n/**\n * Weighted penalty scores for the undesirable features\n * @type {Object}\n */\nconst PenaltyScores = {\n  N1: 3,\n  N2: 3,\n  N3: 40,\n  N4: 10\n}\n\n/**\n * Check if mask pattern value is valid\n *\n * @param  {Number}  mask    Mask pattern\n * @return {Boolean}         true if valid, false otherwise\n */\nexports.isValid = function isValid (mask) {\n  return mask != null && mask !== '' && !isNaN(mask) && mask >= 0 && mask <= 7\n}\n\n/**\n * Returns mask pattern from a value.\n * If value is not valid, returns undefined\n *\n * @param  {Number|String} value        Mask pattern value\n * @return {Number}                     Valid mask pattern or undefined\n */\nexports.from = function from (value) {\n  return exports.isValid(value) ? parseInt(value, 10) : undefined\n}\n\n/**\n* Find adjacent modules in row/column with the same color\n* and assign a penalty value.\n*\n* Points: N1 + i\n* i is the amount by which the number of adjacent modules of the same color exceeds 5\n*/\nexports.getPenaltyN1 = function getPenaltyN1 (data) {\n  const size = data.size\n  let points = 0\n  let sameCountCol = 0\n  let sameCountRow = 0\n  let lastCol = null\n  let lastRow = null\n\n  for (let row = 0; row < size; row++) {\n    sameCountCol = sameCountRow = 0\n    lastCol = lastRow = null\n\n    for (let col = 0; col < size; col++) {\n      let module = data.get(row, col)\n      if (module === lastCol) {\n        sameCountCol++\n      } else {\n        if (sameCountCol >= 5) points += PenaltyScores.N1 + (sameCountCol - 5)\n        lastCol = module\n        sameCountCol = 1\n      }\n\n      module = data.get(col, row)\n      if (module === lastRow) {\n        sameCountRow++\n      } else {\n        if (sameCountRow >= 5) points += PenaltyScores.N1 + (sameCountRow - 5)\n        lastRow = module\n        sameCountRow = 1\n      }\n    }\n\n    if (sameCountCol >= 5) points += PenaltyScores.N1 + (sameCountCol - 5)\n    if (sameCountRow >= 5) points += PenaltyScores.N1 + (sameCountRow - 5)\n  }\n\n  return points\n}\n\n/**\n * Find 2x2 blocks with the same color and assign a penalty value\n *\n * Points: N2 * (m - 1) * (n - 1)\n */\nexports.getPenaltyN2 = function getPenaltyN2 (data) {\n  const size = data.size\n  let points = 0\n\n  for (let row = 0; row < size - 1; row++) {\n    for (let col = 0; col < size - 1; col++) {\n      const last = data.get(row, col) +\n        data.get(row, col + 1) +\n        data.get(row + 1, col) +\n        data.get(row + 1, col + 1)\n\n      if (last === 4 || last === 0) points++\n    }\n  }\n\n  return points * PenaltyScores.N2\n}\n\n/**\n * Find 1:1:3:1:1 ratio (dark:light:dark:light:dark) pattern in row/column,\n * preceded or followed by light area 4 modules wide\n *\n * Points: N3 * number of pattern found\n */\nexports.getPenaltyN3 = function getPenaltyN3 (data) {\n  const size = data.size\n  let points = 0\n  let bitsCol = 0\n  let bitsRow = 0\n\n  for (let row = 0; row < size; row++) {\n    bitsCol = bitsRow = 0\n    for (let col = 0; col < size; col++) {\n      bitsCol = ((bitsCol << 1) & 0x7FF) | data.get(row, col)\n      if (col >= 10 && (bitsCol === 0x5D0 || bitsCol === 0x05D)) points++\n\n      bitsRow = ((bitsRow << 1) & 0x7FF) | data.get(col, row)\n      if (col >= 10 && (bitsRow === 0x5D0 || bitsRow === 0x05D)) points++\n    }\n  }\n\n  return points * PenaltyScores.N3\n}\n\n/**\n * Calculate proportion of dark modules in entire symbol\n *\n * Points: N4 * k\n *\n * k is the rating of the deviation of the proportion of dark modules\n * in the symbol from 50% in steps of 5%\n */\nexports.getPenaltyN4 = function getPenaltyN4 (data) {\n  let darkCount = 0\n  const modulesCount = data.data.length\n\n  for (let i = 0; i < modulesCount; i++) darkCount += data.data[i]\n\n  const k = Math.abs(Math.ceil((darkCount * 100 / modulesCount) / 5) - 10)\n\n  return k * PenaltyScores.N4\n}\n\n/**\n * Return mask value at given position\n *\n * @param  {Number} maskPattern Pattern reference value\n * @param  {Number} i           Row\n * @param  {Number} j           Column\n * @return {Boolean}            Mask value\n */\nfunction getMaskAt (maskPattern, i, j) {\n  switch (maskPattern) {\n    case exports.Patterns.PATTERN000: return (i + j) % 2 === 0\n    case exports.Patterns.PATTERN001: return i % 2 === 0\n    case exports.Patterns.PATTERN010: return j % 3 === 0\n    case exports.Patterns.PATTERN011: return (i + j) % 3 === 0\n    case exports.Patterns.PATTERN100: return (Math.floor(i / 2) + Math.floor(j / 3)) % 2 === 0\n    case exports.Patterns.PATTERN101: return (i * j) % 2 + (i * j) % 3 === 0\n    case exports.Patterns.PATTERN110: return ((i * j) % 2 + (i * j) % 3) % 2 === 0\n    case exports.Patterns.PATTERN111: return ((i * j) % 3 + (i + j) % 2) % 2 === 0\n\n    default: throw new Error('bad maskPattern:' + maskPattern)\n  }\n}\n\n/**\n * Apply a mask pattern to a BitMatrix\n *\n * @param  {Number}    pattern Pattern reference number\n * @param  {BitMatrix} data    BitMatrix data\n */\nexports.applyMask = function applyMask (pattern, data) {\n  const size = data.size\n\n  for (let col = 0; col < size; col++) {\n    for (let row = 0; row < size; row++) {\n      if (data.isReserved(row, col)) continue\n      data.xor(row, col, getMaskAt(pattern, row, col))\n    }\n  }\n}\n\n/**\n * Returns the best mask pattern for data\n *\n * @param  {BitMatrix} data\n * @return {Number} Mask pattern reference number\n */\nexports.getBestMask = function getBestMask (data, setupFormatFunc) {\n  const numPatterns = Object.keys(exports.Patterns).length\n  let bestPattern = 0\n  let lowerPenalty = Infinity\n\n  for (let p = 0; p < numPatterns; p++) {\n    setupFormatFunc(p)\n    exports.applyMask(p, data)\n\n    // Calculate penalty\n    const penalty =\n      exports.getPenaltyN1(data) +\n      exports.getPenaltyN2(data) +\n      exports.getPenaltyN3(data) +\n      exports.getPenaltyN4(data)\n\n    // Undo previously applied mask\n    exports.applyMask(p, data)\n\n    if (penalty < lowerPenalty) {\n      lowerPenalty = penalty\n      bestPattern = p\n    }\n  }\n\n  return bestPattern\n}\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n  var index = -1,\n      length = array == null ? 0 : array.length,\n      result = Array(length);\n\n  while (++index < length) {\n    result[index] = iteratee(array[index], index, array);\n  }\n  return result;\n}\n\nmodule.exports = arrayMap;\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","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, function() {\nreturn /******/ (function() { // webpackBootstrap\n/******/ \tvar __webpack_modules__ = ({\n\n/***/ 3099:\n/***/ (function(module) {\n\nmodule.exports = function (it) {\n  if (typeof it != 'function') {\n    throw TypeError(String(it) + ' is not a function');\n  } return it;\n};\n\n\n/***/ }),\n\n/***/ 6077:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(111);\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\n\n/***/ }),\n\n/***/ 1223:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar wellKnownSymbol = __webpack_require__(5112);\nvar create = __webpack_require__(30);\nvar definePropertyModule = __webpack_require__(3070);\n\nvar UNSCOPABLES = wellKnownSymbol('unscopables');\nvar ArrayPrototype = Array.prototype;\n\n// Array.prototype[@@unscopables]\n// https://tc39.es/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\n\n/***/ }),\n\n/***/ 1530:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar charAt = __webpack_require__(8710).charAt;\n\n// `AdvanceStringIndex` abstract operation\n// https://tc39.es/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n  return index + (unicode ? charAt(S, index).length : 1);\n};\n\n\n/***/ }),\n\n/***/ 5787:\n/***/ (function(module) {\n\nmodule.exports = function (it, Constructor, name) {\n  if (!(it instanceof Constructor)) {\n    throw TypeError('Incorrect ' + (name ? name + ' ' : '') + 'invocation');\n  } return it;\n};\n\n\n/***/ }),\n\n/***/ 9670:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(111);\n\nmodule.exports = function (it) {\n  if (!isObject(it)) {\n    throw TypeError(String(it) + ' is not an object');\n  } return it;\n};\n\n\n/***/ }),\n\n/***/ 4019:\n/***/ (function(module) {\n\nmodule.exports = typeof ArrayBuffer !== 'undefined' && typeof DataView !== 'undefined';\n\n\n/***/ }),\n\n/***/ 260:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar NATIVE_ARRAY_BUFFER = __webpack_require__(4019);\nvar DESCRIPTORS = __webpack_require__(9781);\nvar global = __webpack_require__(7854);\nvar isObject = __webpack_require__(111);\nvar has = __webpack_require__(6656);\nvar classof = __webpack_require__(648);\nvar createNonEnumerableProperty = __webpack_require__(8880);\nvar redefine = __webpack_require__(1320);\nvar defineProperty = __webpack_require__(3070).f;\nvar getPrototypeOf = __webpack_require__(9518);\nvar setPrototypeOf = __webpack_require__(7674);\nvar wellKnownSymbol = __webpack_require__(5112);\nvar uid = __webpack_require__(9711);\n\nvar Int8Array = global.Int8Array;\nvar Int8ArrayPrototype = Int8Array && Int8Array.prototype;\nvar Uint8ClampedArray = global.Uint8ClampedArray;\nvar Uint8ClampedArrayPrototype = Uint8ClampedArray && Uint8ClampedArray.prototype;\nvar TypedArray = Int8Array && getPrototypeOf(Int8Array);\nvar TypedArrayPrototype = Int8ArrayPrototype && getPrototypeOf(Int8ArrayPrototype);\nvar ObjectPrototype = Object.prototype;\nvar isPrototypeOf = ObjectPrototype.isPrototypeOf;\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar TYPED_ARRAY_TAG = uid('TYPED_ARRAY_TAG');\n// Fixing native typed arrays in Opera Presto crashes the browser, see #595\nvar NATIVE_ARRAY_BUFFER_VIEWS = NATIVE_ARRAY_BUFFER && !!setPrototypeOf && classof(global.opera) !== 'Opera';\nvar TYPED_ARRAY_TAG_REQIRED = false;\nvar NAME;\n\nvar TypedArrayConstructorsList = {\n  Int8Array: 1,\n  Uint8Array: 1,\n  Uint8ClampedArray: 1,\n  Int16Array: 2,\n  Uint16Array: 2,\n  Int32Array: 4,\n  Uint32Array: 4,\n  Float32Array: 4,\n  Float64Array: 8\n};\n\nvar BigIntArrayConstructorsList = {\n  BigInt64Array: 8,\n  BigUint64Array: 8\n};\n\nvar isView = function isView(it) {\n  if (!isObject(it)) return false;\n  var klass = classof(it);\n  return klass === 'DataView'\n    || has(TypedArrayConstructorsList, klass)\n    || has(BigIntArrayConstructorsList, klass);\n};\n\nvar isTypedArray = function (it) {\n  if (!isObject(it)) return false;\n  var klass = classof(it);\n  return has(TypedArrayConstructorsList, klass)\n    || has(BigIntArrayConstructorsList, klass);\n};\n\nvar aTypedArray = function (it) {\n  if (isTypedArray(it)) return it;\n  throw TypeError('Target is not a typed array');\n};\n\nvar aTypedArrayConstructor = function (C) {\n  if (setPrototypeOf) {\n    if (isPrototypeOf.call(TypedArray, C)) return C;\n  } else for (var ARRAY in TypedArrayConstructorsList) if (has(TypedArrayConstructorsList, NAME)) {\n    var TypedArrayConstructor = global[ARRAY];\n    if (TypedArrayConstructor && (C === TypedArrayConstructor || isPrototypeOf.call(TypedArrayConstructor, C))) {\n      return C;\n    }\n  } throw TypeError('Target is not a typed array constructor');\n};\n\nvar exportTypedArrayMethod = function (KEY, property, forced) {\n  if (!DESCRIPTORS) return;\n  if (forced) for (var ARRAY in TypedArrayConstructorsList) {\n    var TypedArrayConstructor = global[ARRAY];\n    if (TypedArrayConstructor && has(TypedArrayConstructor.prototype, KEY)) {\n      delete TypedArrayConstructor.prototype[KEY];\n    }\n  }\n  if (!TypedArrayPrototype[KEY] || forced) {\n    redefine(TypedArrayPrototype, KEY, forced ? property\n      : NATIVE_ARRAY_BUFFER_VIEWS && Int8ArrayPrototype[KEY] || property);\n  }\n};\n\nvar exportTypedArrayStaticMethod = function (KEY, property, forced) {\n  var ARRAY, TypedArrayConstructor;\n  if (!DESCRIPTORS) return;\n  if (setPrototypeOf) {\n    if (forced) for (ARRAY in TypedArrayConstructorsList) {\n      TypedArrayConstructor = global[ARRAY];\n      if (TypedArrayConstructor && has(TypedArrayConstructor, KEY)) {\n        delete TypedArrayConstructor[KEY];\n      }\n    }\n    if (!TypedArray[KEY] || forced) {\n      // V8 ~ Chrome 49-50 `%TypedArray%` methods are non-writable non-configurable\n      try {\n        return redefine(TypedArray, KEY, forced ? property : NATIVE_ARRAY_BUFFER_VIEWS && Int8Array[KEY] || property);\n      } catch (error) { /* empty */ }\n    } else return;\n  }\n  for (ARRAY in TypedArrayConstructorsList) {\n    TypedArrayConstructor = global[ARRAY];\n    if (TypedArrayConstructor && (!TypedArrayConstructor[KEY] || forced)) {\n      redefine(TypedArrayConstructor, KEY, property);\n    }\n  }\n};\n\nfor (NAME in TypedArrayConstructorsList) {\n  if (!global[NAME]) NATIVE_ARRAY_BUFFER_VIEWS = false;\n}\n\n// WebKit bug - typed arrays constructors prototype is Object.prototype\nif (!NATIVE_ARRAY_BUFFER_VIEWS || typeof TypedArray != 'function' || TypedArray === Function.prototype) {\n  // eslint-disable-next-line no-shadow -- safe\n  TypedArray = function TypedArray() {\n    throw TypeError('Incorrect invocation');\n  };\n  if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n    if (global[NAME]) setPrototypeOf(global[NAME], TypedArray);\n  }\n}\n\nif (!NATIVE_ARRAY_BUFFER_VIEWS || !TypedArrayPrototype || TypedArrayPrototype === ObjectPrototype) {\n  TypedArrayPrototype = TypedArray.prototype;\n  if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n    if (global[NAME]) setPrototypeOf(global[NAME].prototype, TypedArrayPrototype);\n  }\n}\n\n// WebKit bug - one more object in Uint8ClampedArray prototype chain\nif (NATIVE_ARRAY_BUFFER_VIEWS && getPrototypeOf(Uint8ClampedArrayPrototype) !== TypedArrayPrototype) {\n  setPrototypeOf(Uint8ClampedArrayPrototype, TypedArrayPrototype);\n}\n\nif (DESCRIPTORS && !has(TypedArrayPrototype, TO_STRING_TAG)) {\n  TYPED_ARRAY_TAG_REQIRED = true;\n  defineProperty(TypedArrayPrototype, TO_STRING_TAG, { get: function () {\n    return isObject(this) ? this[TYPED_ARRAY_TAG] : undefined;\n  } });\n  for (NAME in TypedArrayConstructorsList) if (global[NAME]) {\n    createNonEnumerableProperty(global[NAME], TYPED_ARRAY_TAG, NAME);\n  }\n}\n\nmodule.exports = {\n  NATIVE_ARRAY_BUFFER_VIEWS: NATIVE_ARRAY_BUFFER_VIEWS,\n  TYPED_ARRAY_TAG: TYPED_ARRAY_TAG_REQIRED && TYPED_ARRAY_TAG,\n  aTypedArray: aTypedArray,\n  aTypedArrayConstructor: aTypedArrayConstructor,\n  exportTypedArrayMethod: exportTypedArrayMethod,\n  exportTypedArrayStaticMethod: exportTypedArrayStaticMethod,\n  isView: isView,\n  isTypedArray: isTypedArray,\n  TypedArray: TypedArray,\n  TypedArrayPrototype: TypedArrayPrototype\n};\n\n\n/***/ }),\n\n/***/ 3331:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar global = __webpack_require__(7854);\nvar DESCRIPTORS = __webpack_require__(9781);\nvar NATIVE_ARRAY_BUFFER = __webpack_require__(4019);\nvar createNonEnumerableProperty = __webpack_require__(8880);\nvar redefineAll = __webpack_require__(2248);\nvar fails = __webpack_require__(7293);\nvar anInstance = __webpack_require__(5787);\nvar toInteger = __webpack_require__(9958);\nvar toLength = __webpack_require__(7466);\nvar toIndex = __webpack_require__(7067);\nvar IEEE754 = __webpack_require__(1179);\nvar getPrototypeOf = __webpack_require__(9518);\nvar setPrototypeOf = __webpack_require__(7674);\nvar getOwnPropertyNames = __webpack_require__(8006).f;\nvar defineProperty = __webpack_require__(3070).f;\nvar arrayFill = __webpack_require__(1285);\nvar setToStringTag = __webpack_require__(8003);\nvar InternalStateModule = __webpack_require__(9909);\n\nvar getInternalState = InternalStateModule.get;\nvar setInternalState = InternalStateModule.set;\nvar ARRAY_BUFFER = 'ArrayBuffer';\nvar DATA_VIEW = 'DataView';\nvar PROTOTYPE = 'prototype';\nvar WRONG_LENGTH = 'Wrong length';\nvar WRONG_INDEX = 'Wrong index';\nvar NativeArrayBuffer = global[ARRAY_BUFFER];\nvar $ArrayBuffer = NativeArrayBuffer;\nvar $DataView = global[DATA_VIEW];\nvar $DataViewPrototype = $DataView && $DataView[PROTOTYPE];\nvar ObjectPrototype = Object.prototype;\nvar RangeError = global.RangeError;\n\nvar packIEEE754 = IEEE754.pack;\nvar unpackIEEE754 = IEEE754.unpack;\n\nvar packInt8 = function (number) {\n  return [number & 0xFF];\n};\n\nvar packInt16 = function (number) {\n  return [number & 0xFF, number >> 8 & 0xFF];\n};\n\nvar packInt32 = function (number) {\n  return [number & 0xFF, number >> 8 & 0xFF, number >> 16 & 0xFF, number >> 24 & 0xFF];\n};\n\nvar unpackInt32 = function (buffer) {\n  return buffer[3] << 24 | buffer[2] << 16 | buffer[1] << 8 | buffer[0];\n};\n\nvar packFloat32 = function (number) {\n  return packIEEE754(number, 23, 4);\n};\n\nvar packFloat64 = function (number) {\n  return packIEEE754(number, 52, 8);\n};\n\nvar addGetter = function (Constructor, key) {\n  defineProperty(Constructor[PROTOTYPE], key, { get: function () { return getInternalState(this)[key]; } });\n};\n\nvar get = function (view, count, index, isLittleEndian) {\n  var intIndex = toIndex(index);\n  var store = getInternalState(view);\n  if (intIndex + count > store.byteLength) throw RangeError(WRONG_INDEX);\n  var bytes = getInternalState(store.buffer).bytes;\n  var start = intIndex + store.byteOffset;\n  var pack = bytes.slice(start, start + count);\n  return isLittleEndian ? pack : pack.reverse();\n};\n\nvar set = function (view, count, index, conversion, value, isLittleEndian) {\n  var intIndex = toIndex(index);\n  var store = getInternalState(view);\n  if (intIndex + count > store.byteLength) throw RangeError(WRONG_INDEX);\n  var bytes = getInternalState(store.buffer).bytes;\n  var start = intIndex + store.byteOffset;\n  var pack = conversion(+value);\n  for (var i = 0; i < count; i++) bytes[start + i] = pack[isLittleEndian ? i : count - i - 1];\n};\n\nif (!NATIVE_ARRAY_BUFFER) {\n  $ArrayBuffer = function ArrayBuffer(length) {\n    anInstance(this, $ArrayBuffer, ARRAY_BUFFER);\n    var byteLength = toIndex(length);\n    setInternalState(this, {\n      bytes: arrayFill.call(new Array(byteLength), 0),\n      byteLength: byteLength\n    });\n    if (!DESCRIPTORS) this.byteLength = byteLength;\n  };\n\n  $DataView = function DataView(buffer, byteOffset, byteLength) {\n    anInstance(this, $DataView, DATA_VIEW);\n    anInstance(buffer, $ArrayBuffer, DATA_VIEW);\n    var bufferLength = getInternalState(buffer).byteLength;\n    var offset = toInteger(byteOffset);\n    if (offset < 0 || offset > bufferLength) throw RangeError('Wrong offset');\n    byteLength = byteLength === undefined ? bufferLength - offset : toLength(byteLength);\n    if (offset + byteLength > bufferLength) throw RangeError(WRONG_LENGTH);\n    setInternalState(this, {\n      buffer: buffer,\n      byteLength: byteLength,\n      byteOffset: offset\n    });\n    if (!DESCRIPTORS) {\n      this.buffer = buffer;\n      this.byteLength = byteLength;\n      this.byteOffset = offset;\n    }\n  };\n\n  if (DESCRIPTORS) {\n    addGetter($ArrayBuffer, 'byteLength');\n    addGetter($DataView, 'buffer');\n    addGetter($DataView, 'byteLength');\n    addGetter($DataView, 'byteOffset');\n  }\n\n  redefineAll($DataView[PROTOTYPE], {\n    getInt8: function getInt8(byteOffset) {\n      return get(this, 1, byteOffset)[0] << 24 >> 24;\n    },\n    getUint8: function getUint8(byteOffset) {\n      return get(this, 1, byteOffset)[0];\n    },\n    getInt16: function getInt16(byteOffset /* , littleEndian */) {\n      var bytes = get(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : undefined);\n      return (bytes[1] << 8 | bytes[0]) << 16 >> 16;\n    },\n    getUint16: function getUint16(byteOffset /* , littleEndian */) {\n      var bytes = get(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : undefined);\n      return bytes[1] << 8 | bytes[0];\n    },\n    getInt32: function getInt32(byteOffset /* , littleEndian */) {\n      return unpackInt32(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined));\n    },\n    getUint32: function getUint32(byteOffset /* , littleEndian */) {\n      return unpackInt32(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined)) >>> 0;\n    },\n    getFloat32: function getFloat32(byteOffset /* , littleEndian */) {\n      return unpackIEEE754(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined), 23);\n    },\n    getFloat64: function getFloat64(byteOffset /* , littleEndian */) {\n      return unpackIEEE754(get(this, 8, byteOffset, arguments.length > 1 ? arguments[1] : undefined), 52);\n    },\n    setInt8: function setInt8(byteOffset, value) {\n      set(this, 1, byteOffset, packInt8, value);\n    },\n    setUint8: function setUint8(byteOffset, value) {\n      set(this, 1, byteOffset, packInt8, value);\n    },\n    setInt16: function setInt16(byteOffset, value /* , littleEndian */) {\n      set(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : undefined);\n    },\n    setUint16: function setUint16(byteOffset, value /* , littleEndian */) {\n      set(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : undefined);\n    },\n    setInt32: function setInt32(byteOffset, value /* , littleEndian */) {\n      set(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : undefined);\n    },\n    setUint32: function setUint32(byteOffset, value /* , littleEndian */) {\n      set(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : undefined);\n    },\n    setFloat32: function setFloat32(byteOffset, value /* , littleEndian */) {\n      set(this, 4, byteOffset, packFloat32, value, arguments.length > 2 ? arguments[2] : undefined);\n    },\n    setFloat64: function setFloat64(byteOffset, value /* , littleEndian */) {\n      set(this, 8, byteOffset, packFloat64, value, arguments.length > 2 ? arguments[2] : undefined);\n    }\n  });\n} else {\n  /* eslint-disable no-new -- required for testing */\n  if (!fails(function () {\n    NativeArrayBuffer(1);\n  }) || !fails(function () {\n    new NativeArrayBuffer(-1);\n  }) || fails(function () {\n    new NativeArrayBuffer();\n    new NativeArrayBuffer(1.5);\n    new NativeArrayBuffer(NaN);\n    return NativeArrayBuffer.name != ARRAY_BUFFER;\n  })) {\n  /* eslint-enable no-new -- required for testing */\n    $ArrayBuffer = function ArrayBuffer(length) {\n      anInstance(this, $ArrayBuffer);\n      return new NativeArrayBuffer(toIndex(length));\n    };\n    var ArrayBufferPrototype = $ArrayBuffer[PROTOTYPE] = NativeArrayBuffer[PROTOTYPE];\n    for (var keys = getOwnPropertyNames(NativeArrayBuffer), j = 0, key; keys.length > j;) {\n      if (!((key = keys[j++]) in $ArrayBuffer)) {\n        createNonEnumerableProperty($ArrayBuffer, key, NativeArrayBuffer[key]);\n      }\n    }\n    ArrayBufferPrototype.constructor = $ArrayBuffer;\n  }\n\n  // WebKit bug - the same parent prototype for typed arrays and data view\n  if (setPrototypeOf && getPrototypeOf($DataViewPrototype) !== ObjectPrototype) {\n    setPrototypeOf($DataViewPrototype, ObjectPrototype);\n  }\n\n  // iOS Safari 7.x bug\n  var testView = new $DataView(new $ArrayBuffer(2));\n  var nativeSetInt8 = $DataViewPrototype.setInt8;\n  testView.setInt8(0, 2147483648);\n  testView.setInt8(1, 2147483649);\n  if (testView.getInt8(0) || !testView.getInt8(1)) redefineAll($DataViewPrototype, {\n    setInt8: function setInt8(byteOffset, value) {\n      nativeSetInt8.call(this, byteOffset, value << 24 >> 24);\n    },\n    setUint8: function setUint8(byteOffset, value) {\n      nativeSetInt8.call(this, byteOffset, value << 24 >> 24);\n    }\n  }, { unsafe: true });\n}\n\nsetToStringTag($ArrayBuffer, ARRAY_BUFFER);\nsetToStringTag($DataView, DATA_VIEW);\n\nmodule.exports = {\n  ArrayBuffer: $ArrayBuffer,\n  DataView: $DataView\n};\n\n\n/***/ }),\n\n/***/ 1048:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar toObject = __webpack_require__(7908);\nvar toAbsoluteIndex = __webpack_require__(1400);\nvar toLength = __webpack_require__(7466);\n\nvar min = Math.min;\n\n// `Array.prototype.copyWithin` method implementation\n// https://tc39.es/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\n\n/***/ }),\n\n/***/ 1285:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar toObject = __webpack_require__(7908);\nvar toAbsoluteIndex = __webpack_require__(1400);\nvar toLength = __webpack_require__(7466);\n\n// `Array.prototype.fill` method implementation\n// https://tc39.es/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\n\n/***/ }),\n\n/***/ 8533:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $forEach = __webpack_require__(2092).forEach;\nvar arrayMethodIsStrict = __webpack_require__(9341);\n\nvar STRICT_METHOD = arrayMethodIsStrict('forEach');\n\n// `Array.prototype.forEach` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.foreach\nmodule.exports = !STRICT_METHOD ? function forEach(callbackfn /* , thisArg */) {\n  return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n} : [].forEach;\n\n\n/***/ }),\n\n/***/ 8457:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar bind = __webpack_require__(9974);\nvar toObject = __webpack_require__(7908);\nvar callWithSafeIterationClosing = __webpack_require__(3411);\nvar isArrayIteratorMethod = __webpack_require__(7659);\nvar toLength = __webpack_require__(7466);\nvar createProperty = __webpack_require__(6135);\nvar getIteratorMethod = __webpack_require__(1246);\n\n// `Array.from` method implementation\n// https://tc39.es/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\n\n/***/ }),\n\n/***/ 1318:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar toIndexedObject = __webpack_require__(5656);\nvar toLength = __webpack_require__(7466);\nvar toAbsoluteIndex = __webpack_require__(1400);\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 -- NaN check\n    if (IS_INCLUDES && el != el) while (length > index) {\n      value = O[index++];\n      // eslint-disable-next-line no-self-compare -- NaN check\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.es/ecma262/#sec-array.prototype.includes\n  includes: createMethod(true),\n  // `Array.prototype.indexOf` method\n  // https://tc39.es/ecma262/#sec-array.prototype.indexof\n  indexOf: createMethod(false)\n};\n\n\n/***/ }),\n\n/***/ 2092:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar bind = __webpack_require__(9974);\nvar IndexedObject = __webpack_require__(8361);\nvar toObject = __webpack_require__(7908);\nvar toLength = __webpack_require__(7466);\nvar arraySpeciesCreate = __webpack_require__(5417);\n\nvar push = [].push;\n\n// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex, filterOut }` 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 IS_FILTER_OUT = TYPE == 7;\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 || IS_FILTER_OUT ? 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 switch (TYPE) {\n          case 4: return false;             // every\n          case 7: push.call(target, value); // filterOut\n        }\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.es/ecma262/#sec-array.prototype.foreach\n  forEach: createMethod(0),\n  // `Array.prototype.map` method\n  // https://tc39.es/ecma262/#sec-array.prototype.map\n  map: createMethod(1),\n  // `Array.prototype.filter` method\n  // https://tc39.es/ecma262/#sec-array.prototype.filter\n  filter: createMethod(2),\n  // `Array.prototype.some` method\n  // https://tc39.es/ecma262/#sec-array.prototype.some\n  some: createMethod(3),\n  // `Array.prototype.every` method\n  // https://tc39.es/ecma262/#sec-array.prototype.every\n  every: createMethod(4),\n  // `Array.prototype.find` method\n  // https://tc39.es/ecma262/#sec-array.prototype.find\n  find: createMethod(5),\n  // `Array.prototype.findIndex` method\n  // https://tc39.es/ecma262/#sec-array.prototype.findIndex\n  findIndex: createMethod(6),\n  // `Array.prototype.filterOut` method\n  // https://github.com/tc39/proposal-array-filtering\n  filterOut: createMethod(7)\n};\n\n\n/***/ }),\n\n/***/ 6583:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar toIndexedObject = __webpack_require__(5656);\nvar toInteger = __webpack_require__(9958);\nvar toLength = __webpack_require__(7466);\nvar arrayMethodIsStrict = __webpack_require__(9341);\n\nvar min = Math.min;\nvar nativeLastIndexOf = [].lastIndexOf;\nvar NEGATIVE_ZERO = !!nativeLastIndexOf && 1 / [1].lastIndexOf(1, -0) < 0;\nvar STRICT_METHOD = arrayMethodIsStrict('lastIndexOf');\nvar FORCED = NEGATIVE_ZERO || !STRICT_METHOD;\n\n// `Array.prototype.lastIndexOf` method implementation\n// https://tc39.es/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\n\n/***/ }),\n\n/***/ 1194:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar fails = __webpack_require__(7293);\nvar wellKnownSymbol = __webpack_require__(5112);\nvar V8_VERSION = __webpack_require__(7392);\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\n\n/***/ }),\n\n/***/ 9341:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar fails = __webpack_require__(7293);\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 -- required for testing\n    method.call(null, argument || function () { throw 1; }, 1);\n  });\n};\n\n\n/***/ }),\n\n/***/ 3671:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar aFunction = __webpack_require__(3099);\nvar toObject = __webpack_require__(7908);\nvar IndexedObject = __webpack_require__(8361);\nvar toLength = __webpack_require__(7466);\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.es/ecma262/#sec-array.prototype.reduce\n  left: createMethod(false),\n  // `Array.prototype.reduceRight` method\n  // https://tc39.es/ecma262/#sec-array.prototype.reduceright\n  right: createMethod(true)\n};\n\n\n/***/ }),\n\n/***/ 5417:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(111);\nvar isArray = __webpack_require__(3157);\nvar wellKnownSymbol = __webpack_require__(5112);\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `ArraySpeciesCreate` abstract operation\n// https://tc39.es/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\n\n/***/ }),\n\n/***/ 3411:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar anObject = __webpack_require__(9670);\nvar iteratorClose = __webpack_require__(9212);\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    iteratorClose(iterator);\n    throw error;\n  }\n};\n\n\n/***/ }),\n\n/***/ 7072:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar wellKnownSymbol = __webpack_require__(5112);\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 -- required for testing\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\n\n/***/ }),\n\n/***/ 4326:\n/***/ (function(module) {\n\nvar toString = {}.toString;\n\nmodule.exports = function (it) {\n  return toString.call(it).slice(8, -1);\n};\n\n\n/***/ }),\n\n/***/ 648:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar TO_STRING_TAG_SUPPORT = __webpack_require__(1694);\nvar classofRaw = __webpack_require__(4326);\nvar wellKnownSymbol = __webpack_require__(5112);\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\n\n/***/ }),\n\n/***/ 9920:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar has = __webpack_require__(6656);\nvar ownKeys = __webpack_require__(3887);\nvar getOwnPropertyDescriptorModule = __webpack_require__(1236);\nvar definePropertyModule = __webpack_require__(3070);\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\n\n/***/ }),\n\n/***/ 8544:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar fails = __webpack_require__(7293);\n\nmodule.exports = !fails(function () {\n  function F() { /* empty */ }\n  F.prototype.constructor = null;\n  return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n\n\n/***/ }),\n\n/***/ 4994:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar IteratorPrototype = __webpack_require__(3383).IteratorPrototype;\nvar create = __webpack_require__(30);\nvar createPropertyDescriptor = __webpack_require__(9114);\nvar setToStringTag = __webpack_require__(8003);\nvar Iterators = __webpack_require__(7497);\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\n\n/***/ }),\n\n/***/ 8880:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar DESCRIPTORS = __webpack_require__(9781);\nvar definePropertyModule = __webpack_require__(3070);\nvar createPropertyDescriptor = __webpack_require__(9114);\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\n\n/***/ }),\n\n/***/ 9114:\n/***/ (function(module) {\n\nmodule.exports = function (bitmap, value) {\n  return {\n    enumerable: !(bitmap & 1),\n    configurable: !(bitmap & 2),\n    writable: !(bitmap & 4),\n    value: value\n  };\n};\n\n\n/***/ }),\n\n/***/ 6135:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar toPrimitive = __webpack_require__(7593);\nvar definePropertyModule = __webpack_require__(3070);\nvar createPropertyDescriptor = __webpack_require__(9114);\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\n\n/***/ }),\n\n/***/ 654:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(2109);\nvar createIteratorConstructor = __webpack_require__(4994);\nvar getPrototypeOf = __webpack_require__(9518);\nvar setPrototypeOf = __webpack_require__(7674);\nvar setToStringTag = __webpack_require__(8003);\nvar createNonEnumerableProperty = __webpack_require__(8880);\nvar redefine = __webpack_require__(1320);\nvar wellKnownSymbol = __webpack_require__(5112);\nvar IS_PURE = __webpack_require__(1913);\nvar Iterators = __webpack_require__(7497);\nvar IteratorsCore = __webpack_require__(3383);\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\n\n/***/ }),\n\n/***/ 9781:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar fails = __webpack_require__(7293);\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n  return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n});\n\n\n/***/ }),\n\n/***/ 317:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar global = __webpack_require__(7854);\nvar isObject = __webpack_require__(111);\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\n\n/***/ }),\n\n/***/ 8324:\n/***/ (function(module) {\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\n\n/***/ }),\n\n/***/ 8113:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar getBuiltIn = __webpack_require__(5005);\n\nmodule.exports = getBuiltIn('navigator', 'userAgent') || '';\n\n\n/***/ }),\n\n/***/ 7392:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar global = __webpack_require__(7854);\nvar userAgent = __webpack_require__(8113);\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\n\n/***/ }),\n\n/***/ 748:\n/***/ (function(module) {\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\n\n/***/ }),\n\n/***/ 2109:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar global = __webpack_require__(7854);\nvar getOwnPropertyDescriptor = __webpack_require__(1236).f;\nvar createNonEnumerableProperty = __webpack_require__(8880);\nvar redefine = __webpack_require__(1320);\nvar setGlobal = __webpack_require__(3505);\nvar copyConstructorProperties = __webpack_require__(9920);\nvar isForced = __webpack_require__(4705);\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\n\n/***/ }),\n\n/***/ 7293:\n/***/ (function(module) {\n\nmodule.exports = function (exec) {\n  try {\n    return !!exec();\n  } catch (error) {\n    return true;\n  }\n};\n\n\n/***/ }),\n\n/***/ 7007:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\n// TODO: Remove from `core-js@4` since it's moved to entry points\n__webpack_require__(4916);\nvar redefine = __webpack_require__(1320);\nvar fails = __webpack_require__(7293);\nvar wellKnownSymbol = __webpack_require__(5112);\nvar regexpExec = __webpack_require__(2261);\nvar createNonEnumerableProperty = __webpack_require__(8880);\n\nvar SPECIES = wellKnownSymbol('species');\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n  // #replace needs built-in support for named groups.\n  // #match works fine because it just return the exec results, even if it has\n  // a \"grops\" property.\n  var re = /./;\n  re.exec = function () {\n    var result = [];\n    result.groups = { a: '7' };\n    return result;\n  };\n  return ''.replace(re, '$<a>') !== '7';\n});\n\n// IE <= 11 replaces $0 with the whole match, as if it was $&\n// https://stackoverflow.com/questions/6024666/getting-ie-to-replace-a-regex-with-the-literal-string-0\nvar REPLACE_KEEPS_$0 = (function () {\n  return 'a'.replace(/./, '$0') === '$0';\n})();\n\nvar REPLACE = wellKnownSymbol('replace');\n// Safari <= 13.0.3(?) substitutes nth capture where n>m with an empty string\nvar REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = (function () {\n  if (/./[REPLACE]) {\n    return /./[REPLACE]('a', '$0') === '';\n  }\n  return false;\n})();\n\n// Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n// Weex JS has frozen built-in prototypes, so use try / catch wrapper\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails(function () {\n  // eslint-disable-next-line regexp/no-empty-group -- required for testing\n  var re = /(?:)/;\n  var originalExec = re.exec;\n  re.exec = function () { return originalExec.apply(this, arguments); };\n  var result = 'ab'.split(re);\n  return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b';\n});\n\nmodule.exports = function (KEY, length, exec, sham) {\n  var SYMBOL = wellKnownSymbol(KEY);\n\n  var DELEGATES_TO_SYMBOL = !fails(function () {\n    // String methods call symbol-named RegEp methods\n    var O = {};\n    O[SYMBOL] = function () { return 7; };\n    return ''[KEY](O) != 7;\n  });\n\n  var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function () {\n    // Symbol-named RegExp methods call .exec\n    var execCalled = false;\n    var re = /a/;\n\n    if (KEY === 'split') {\n      // We can't use real regex here since it causes deoptimization\n      // and serious performance degradation in V8\n      // https://github.com/zloirock/core-js/issues/306\n      re = {};\n      // RegExp[@@split] doesn't call the regex's exec method, but first creates\n      // a new one. We need to return the patched regex when creating the new one.\n      re.constructor = {};\n      re.constructor[SPECIES] = function () { return re; };\n      re.flags = '';\n      re[SYMBOL] = /./[SYMBOL];\n    }\n\n    re.exec = function () { execCalled = true; return null; };\n\n    re[SYMBOL]('');\n    return !execCalled;\n  });\n\n  if (\n    !DELEGATES_TO_SYMBOL ||\n    !DELEGATES_TO_EXEC ||\n    (KEY === 'replace' && !(\n      REPLACE_SUPPORTS_NAMED_GROUPS &&\n      REPLACE_KEEPS_$0 &&\n      !REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE\n    )) ||\n    (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC)\n  ) {\n    var nativeRegExpMethod = /./[SYMBOL];\n    var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) {\n      if (regexp.exec === regexpExec) {\n        if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n          // The native String method already delegates to @@method (this\n          // polyfilled function), leasing to infinite recursion.\n          // We avoid it by directly calling the native @@method method.\n          return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };\n        }\n        return { done: true, value: nativeMethod.call(str, regexp, arg2) };\n      }\n      return { done: false };\n    }, {\n      REPLACE_KEEPS_$0: REPLACE_KEEPS_$0,\n      REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE: REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE\n    });\n    var stringMethod = methods[0];\n    var regexMethod = methods[1];\n\n    redefine(String.prototype, KEY, stringMethod);\n    redefine(RegExp.prototype, SYMBOL, length == 2\n      // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)\n      // 21.2.5.11 RegExp.prototype[@@split](string, limit)\n      ? function (string, arg) { return regexMethod.call(string, this, arg); }\n      // 21.2.5.6 RegExp.prototype[@@match](string)\n      // 21.2.5.9 RegExp.prototype[@@search](string)\n      : function (string) { return regexMethod.call(string, this); }\n    );\n  }\n\n  if (sham) createNonEnumerableProperty(RegExp.prototype[SYMBOL], 'sham', true);\n};\n\n\n/***/ }),\n\n/***/ 9974:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar aFunction = __webpack_require__(3099);\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\n\n/***/ }),\n\n/***/ 5005:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar path = __webpack_require__(857);\nvar global = __webpack_require__(7854);\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\n\n/***/ }),\n\n/***/ 1246:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar classof = __webpack_require__(648);\nvar Iterators = __webpack_require__(7497);\nvar wellKnownSymbol = __webpack_require__(5112);\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\n\n/***/ }),\n\n/***/ 8554:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar anObject = __webpack_require__(9670);\nvar getIteratorMethod = __webpack_require__(1246);\n\nmodule.exports = function (it) {\n  var iteratorMethod = getIteratorMethod(it);\n  if (typeof iteratorMethod != 'function') {\n    throw TypeError(String(it) + ' is not iterable');\n  } return anObject(iteratorMethod.call(it));\n};\n\n\n/***/ }),\n\n/***/ 647:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar toObject = __webpack_require__(7908);\n\nvar floor = Math.floor;\nvar replace = ''.replace;\nvar SUBSTITUTION_SYMBOLS = /\\$([$&'`]|\\d\\d?|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&'`]|\\d\\d?)/g;\n\n// https://tc39.es/ecma262/#sec-getsubstitution\nmodule.exports = function (matched, str, position, captures, namedCaptures, replacement) {\n  var tailPos = position + matched.length;\n  var m = captures.length;\n  var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n  if (namedCaptures !== undefined) {\n    namedCaptures = toObject(namedCaptures);\n    symbols = SUBSTITUTION_SYMBOLS;\n  }\n  return replace.call(replacement, symbols, function (match, ch) {\n    var capture;\n    switch (ch.charAt(0)) {\n      case '$': return '$';\n      case '&': return matched;\n      case '`': return str.slice(0, position);\n      case \"'\": return str.slice(tailPos);\n      case '<':\n        capture = namedCaptures[ch.slice(1, -1)];\n        break;\n      default: // \\d\\d?\n        var n = +ch;\n        if (n === 0) return match;\n        if (n > m) {\n          var f = floor(n / 10);\n          if (f === 0) return match;\n          if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);\n          return match;\n        }\n        capture = captures[n - 1];\n    }\n    return capture === undefined ? '' : capture;\n  });\n};\n\n\n/***/ }),\n\n/***/ 7854:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar 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  /* global globalThis -- safe */\n  check(typeof globalThis == 'object' && globalThis) ||\n  check(typeof window == 'object' && window) ||\n  check(typeof self == 'object' && self) ||\n  check(typeof __webpack_require__.g == 'object' && __webpack_require__.g) ||\n  // eslint-disable-next-line no-new-func -- fallback\n  (function () { return this; })() || Function('return this')();\n\n\n/***/ }),\n\n/***/ 6656:\n/***/ (function(module) {\n\nvar hasOwnProperty = {}.hasOwnProperty;\n\nmodule.exports = function (it, key) {\n  return hasOwnProperty.call(it, key);\n};\n\n\n/***/ }),\n\n/***/ 3501:\n/***/ (function(module) {\n\nmodule.exports = {};\n\n\n/***/ }),\n\n/***/ 490:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar getBuiltIn = __webpack_require__(5005);\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n\n\n/***/ }),\n\n/***/ 4664:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar DESCRIPTORS = __webpack_require__(9781);\nvar fails = __webpack_require__(7293);\nvar createElement = __webpack_require__(317);\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\n\n/***/ }),\n\n/***/ 1179:\n/***/ (function(module) {\n\n// IEEE754 conversions based on https://github.com/feross/ieee754\nvar abs = Math.abs;\nvar pow = Math.pow;\nvar floor = Math.floor;\nvar log = Math.log;\nvar LN2 = Math.LN2;\n\nvar pack = function (number, mantissaLength, bytes) {\n  var buffer = new Array(bytes);\n  var exponentLength = bytes * 8 - mantissaLength - 1;\n  var eMax = (1 << exponentLength) - 1;\n  var eBias = eMax >> 1;\n  var rt = mantissaLength === 23 ? pow(2, -24) - pow(2, -77) : 0;\n  var sign = number < 0 || number === 0 && 1 / number < 0 ? 1 : 0;\n  var index = 0;\n  var exponent, mantissa, c;\n  number = abs(number);\n  // eslint-disable-next-line no-self-compare -- NaN check\n  if (number != number || number === Infinity) {\n    // eslint-disable-next-line no-self-compare -- NaN check\n    mantissa = number != number ? 1 : 0;\n    exponent = eMax;\n  } else {\n    exponent = floor(log(number) / LN2);\n    if (number * (c = pow(2, -exponent)) < 1) {\n      exponent--;\n      c *= 2;\n    }\n    if (exponent + eBias >= 1) {\n      number += rt / c;\n    } else {\n      number += rt * pow(2, 1 - eBias);\n    }\n    if (number * c >= 2) {\n      exponent++;\n      c /= 2;\n    }\n    if (exponent + eBias >= eMax) {\n      mantissa = 0;\n      exponent = eMax;\n    } else if (exponent + eBias >= 1) {\n      mantissa = (number * c - 1) * pow(2, mantissaLength);\n      exponent = exponent + eBias;\n    } else {\n      mantissa = number * pow(2, eBias - 1) * pow(2, mantissaLength);\n      exponent = 0;\n    }\n  }\n  for (; mantissaLength >= 8; buffer[index++] = mantissa & 255, mantissa /= 256, mantissaLength -= 8);\n  exponent = exponent << mantissaLength | mantissa;\n  exponentLength += mantissaLength;\n  for (; exponentLength > 0; buffer[index++] = exponent & 255, exponent /= 256, exponentLength -= 8);\n  buffer[--index] |= sign * 128;\n  return buffer;\n};\n\nvar unpack = function (buffer, mantissaLength) {\n  var bytes = buffer.length;\n  var exponentLength = bytes * 8 - mantissaLength - 1;\n  var eMax = (1 << exponentLength) - 1;\n  var eBias = eMax >> 1;\n  var nBits = exponentLength - 7;\n  var index = bytes - 1;\n  var sign = buffer[index--];\n  var exponent = sign & 127;\n  var mantissa;\n  sign >>= 7;\n  for (; nBits > 0; exponent = exponent * 256 + buffer[index], index--, nBits -= 8);\n  mantissa = exponent & (1 << -nBits) - 1;\n  exponent >>= -nBits;\n  nBits += mantissaLength;\n  for (; nBits > 0; mantissa = mantissa * 256 + buffer[index], index--, nBits -= 8);\n  if (exponent === 0) {\n    exponent = 1 - eBias;\n  } else if (exponent === eMax) {\n    return mantissa ? NaN : sign ? -Infinity : Infinity;\n  } else {\n    mantissa = mantissa + pow(2, mantissaLength);\n    exponent = exponent - eBias;\n  } return (sign ? -1 : 1) * mantissa * pow(2, exponent - mantissaLength);\n};\n\nmodule.exports = {\n  pack: pack,\n  unpack: unpack\n};\n\n\n/***/ }),\n\n/***/ 8361:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar fails = __webpack_require__(7293);\nvar classof = __webpack_require__(4326);\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 -- safe\n  return !Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n  return classof(it) == 'String' ? split.call(it, '') : Object(it);\n} : Object;\n\n\n/***/ }),\n\n/***/ 9587:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(111);\nvar setPrototypeOf = __webpack_require__(7674);\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\n\n/***/ }),\n\n/***/ 2788:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar store = __webpack_require__(5465);\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\n\n/***/ }),\n\n/***/ 9909:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar NATIVE_WEAK_MAP = __webpack_require__(8536);\nvar global = __webpack_require__(7854);\nvar isObject = __webpack_require__(111);\nvar createNonEnumerableProperty = __webpack_require__(8880);\nvar objectHas = __webpack_require__(6656);\nvar shared = __webpack_require__(5465);\nvar sharedKey = __webpack_require__(6200);\nvar hiddenKeys = __webpack_require__(3501);\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 = shared.state || (shared.state = new WeakMap());\n  var wmget = store.get;\n  var wmhas = store.has;\n  var wmset = store.set;\n  set = function (it, metadata) {\n    metadata.facade = it;\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    metadata.facade = it;\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\n\n/***/ }),\n\n/***/ 7659:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar wellKnownSymbol = __webpack_require__(5112);\nvar Iterators = __webpack_require__(7497);\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\n\n/***/ }),\n\n/***/ 3157:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar classof = __webpack_require__(4326);\n\n// `IsArray` abstract operation\n// https://tc39.es/ecma262/#sec-isarray\nmodule.exports = Array.isArray || function isArray(arg) {\n  return classof(arg) == 'Array';\n};\n\n\n/***/ }),\n\n/***/ 4705:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar fails = __webpack_require__(7293);\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\n\n/***/ }),\n\n/***/ 111:\n/***/ (function(module) {\n\nmodule.exports = function (it) {\n  return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n\n\n/***/ }),\n\n/***/ 1913:\n/***/ (function(module) {\n\nmodule.exports = false;\n\n\n/***/ }),\n\n/***/ 7850:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(111);\nvar classof = __webpack_require__(4326);\nvar wellKnownSymbol = __webpack_require__(5112);\n\nvar MATCH = wellKnownSymbol('match');\n\n// `IsRegExp` abstract operation\n// https://tc39.es/ecma262/#sec-isregexp\nmodule.exports = function (it) {\n  var isRegExp;\n  return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) == 'RegExp');\n};\n\n\n/***/ }),\n\n/***/ 9212:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar anObject = __webpack_require__(9670);\n\nmodule.exports = function (iterator) {\n  var returnMethod = iterator['return'];\n  if (returnMethod !== undefined) {\n    return anObject(returnMethod.call(iterator)).value;\n  }\n};\n\n\n/***/ }),\n\n/***/ 3383:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar fails = __webpack_require__(7293);\nvar getPrototypeOf = __webpack_require__(9518);\nvar createNonEnumerableProperty = __webpack_require__(8880);\nvar has = __webpack_require__(6656);\nvar wellKnownSymbol = __webpack_require__(5112);\nvar IS_PURE = __webpack_require__(1913);\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\nvar returnThis = function () { return this; };\n\n// `%IteratorPrototype%` object\n// https://tc39.es/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\nvar NEW_ITERATOR_PROTOTYPE = IteratorPrototype == undefined || fails(function () {\n  var test = {};\n  // FF44- legacy iterators case\n  return IteratorPrototype[ITERATOR].call(test) !== test;\n});\n\nif (NEW_ITERATOR_PROTOTYPE) IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nif ((!IS_PURE || NEW_ITERATOR_PROTOTYPE) && !has(IteratorPrototype, ITERATOR)) {\n  createNonEnumerableProperty(IteratorPrototype, ITERATOR, returnThis);\n}\n\nmodule.exports = {\n  IteratorPrototype: IteratorPrototype,\n  BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n\n\n/***/ }),\n\n/***/ 7497:\n/***/ (function(module) {\n\nmodule.exports = {};\n\n\n/***/ }),\n\n/***/ 133:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar fails = __webpack_require__(7293);\n\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n  // Chrome 38 Symbol has incorrect toString conversion\n  /* global Symbol -- required for testing */\n  return !String(Symbol());\n});\n\n\n/***/ }),\n\n/***/ 590:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar fails = __webpack_require__(7293);\nvar wellKnownSymbol = __webpack_require__(5112);\nvar IS_PURE = __webpack_require__(1913);\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = !fails(function () {\n  var url = new URL('b?a=1&b=2&c=3', 'http://a');\n  var searchParams = url.searchParams;\n  var result = '';\n  url.pathname = 'c%20d';\n  searchParams.forEach(function (value, key) {\n    searchParams['delete']('b');\n    result += key + value;\n  });\n  return (IS_PURE && !url.toJSON)\n    || !searchParams.sort\n    || url.href !== 'http://a/c%20d?a=1&c=3'\n    || searchParams.get('c') !== '3'\n    || String(new URLSearchParams('?a=1')) !== 'a=1'\n    || !searchParams[ITERATOR]\n    // throws in Edge\n    || new URL('https://a@b').username !== 'a'\n    || new URLSearchParams(new URLSearchParams('a=b')).get('a') !== 'b'\n    // not punycoded in Edge\n    || new URL('http://тест').host !== 'xn--e1aybc'\n    // not escaped in Chrome 62-\n    || new URL('http://a#б').hash !== '#%D0%B1'\n    // fails in Chrome 66-\n    || result !== 'a1c3'\n    // throws in Safari\n    || new URL('http://x', undefined).host !== 'x';\n});\n\n\n/***/ }),\n\n/***/ 8536:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar global = __webpack_require__(7854);\nvar inspectSource = __webpack_require__(2788);\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = typeof WeakMap === 'function' && /native code/.test(inspectSource(WeakMap));\n\n\n/***/ }),\n\n/***/ 1574:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar DESCRIPTORS = __webpack_require__(9781);\nvar fails = __webpack_require__(7293);\nvar objectKeys = __webpack_require__(1956);\nvar getOwnPropertySymbolsModule = __webpack_require__(5181);\nvar propertyIsEnumerableModule = __webpack_require__(5296);\nvar toObject = __webpack_require__(7908);\nvar IndexedObject = __webpack_require__(8361);\n\nvar nativeAssign = Object.assign;\nvar defineProperty = Object.defineProperty;\n\n// `Object.assign` method\n// https://tc39.es/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  /* global Symbol -- required for testing */\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 -- required for `.length`\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\n\n/***/ }),\n\n/***/ 30:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar anObject = __webpack_require__(9670);\nvar defineProperties = __webpack_require__(6048);\nvar enumBugKeys = __webpack_require__(748);\nvar hiddenKeys = __webpack_require__(3501);\nvar html = __webpack_require__(490);\nvar documentCreateElement = __webpack_require__(317);\nvar sharedKey = __webpack_require__(6200);\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 -- old IE */\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.es/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\n/***/ }),\n\n/***/ 6048:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar DESCRIPTORS = __webpack_require__(9781);\nvar definePropertyModule = __webpack_require__(3070);\nvar anObject = __webpack_require__(9670);\nvar objectKeys = __webpack_require__(1956);\n\n// `Object.defineProperties` method\n// https://tc39.es/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\n\n/***/ }),\n\n/***/ 3070:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\nvar DESCRIPTORS = __webpack_require__(9781);\nvar IE8_DOM_DEFINE = __webpack_require__(4664);\nvar anObject = __webpack_require__(9670);\nvar toPrimitive = __webpack_require__(7593);\n\nvar nativeDefineProperty = Object.defineProperty;\n\n// `Object.defineProperty` method\n// https://tc39.es/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\n\n/***/ }),\n\n/***/ 1236:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\nvar DESCRIPTORS = __webpack_require__(9781);\nvar propertyIsEnumerableModule = __webpack_require__(5296);\nvar createPropertyDescriptor = __webpack_require__(9114);\nvar toIndexedObject = __webpack_require__(5656);\nvar toPrimitive = __webpack_require__(7593);\nvar has = __webpack_require__(6656);\nvar IE8_DOM_DEFINE = __webpack_require__(4664);\n\nvar nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/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\n\n/***/ }),\n\n/***/ 8006:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\nvar internalObjectKeys = __webpack_require__(6324);\nvar enumBugKeys = __webpack_require__(748);\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n  return internalObjectKeys(O, hiddenKeys);\n};\n\n\n/***/ }),\n\n/***/ 5181:\n/***/ (function(__unused_webpack_module, exports) {\n\nexports.f = Object.getOwnPropertySymbols;\n\n\n/***/ }),\n\n/***/ 9518:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar has = __webpack_require__(6656);\nvar toObject = __webpack_require__(7908);\nvar sharedKey = __webpack_require__(6200);\nvar CORRECT_PROTOTYPE_GETTER = __webpack_require__(8544);\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar ObjectPrototype = Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/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\n\n/***/ }),\n\n/***/ 6324:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar has = __webpack_require__(6656);\nvar toIndexedObject = __webpack_require__(5656);\nvar indexOf = __webpack_require__(1318).indexOf;\nvar hiddenKeys = __webpack_require__(3501);\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\n\n/***/ }),\n\n/***/ 1956:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar internalObjectKeys = __webpack_require__(6324);\nvar enumBugKeys = __webpack_require__(748);\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\nmodule.exports = Object.keys || function keys(O) {\n  return internalObjectKeys(O, enumBugKeys);\n};\n\n\n/***/ }),\n\n/***/ 5296:\n/***/ (function(__unused_webpack_module, exports) {\n\n\"use strict\";\n\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.es/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\n\n/***/ }),\n\n/***/ 7674:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n/* eslint-disable no-proto -- safe */\nvar anObject = __webpack_require__(9670);\nvar aPossiblePrototype = __webpack_require__(6077);\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\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\n\n/***/ }),\n\n/***/ 288:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar TO_STRING_TAG_SUPPORT = __webpack_require__(1694);\nvar classof = __webpack_require__(648);\n\n// `Object.prototype.toString` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nmodule.exports = TO_STRING_TAG_SUPPORT ? {}.toString : function toString() {\n  return '[object ' + classof(this) + ']';\n};\n\n\n/***/ }),\n\n/***/ 3887:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar getBuiltIn = __webpack_require__(5005);\nvar getOwnPropertyNamesModule = __webpack_require__(8006);\nvar getOwnPropertySymbolsModule = __webpack_require__(5181);\nvar anObject = __webpack_require__(9670);\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\n\n/***/ }),\n\n/***/ 857:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar global = __webpack_require__(7854);\n\nmodule.exports = global;\n\n\n/***/ }),\n\n/***/ 2248:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar redefine = __webpack_require__(1320);\n\nmodule.exports = function (target, src, options) {\n  for (var key in src) redefine(target, key, src[key], options);\n  return target;\n};\n\n\n/***/ }),\n\n/***/ 1320:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar global = __webpack_require__(7854);\nvar createNonEnumerableProperty = __webpack_require__(8880);\nvar has = __webpack_require__(6656);\nvar setGlobal = __webpack_require__(3505);\nvar inspectSource = __webpack_require__(2788);\nvar InternalStateModule = __webpack_require__(9909);\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  var state;\n  if (typeof value == 'function') {\n    if (typeof key == 'string' && !has(value, 'name')) {\n      createNonEnumerableProperty(value, 'name', key);\n    }\n    state = enforceInternalState(value);\n    if (!state.source) {\n      state.source = TEMPLATE.join(typeof key == 'string' ? key : '');\n    }\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\n\n/***/ }),\n\n/***/ 7651:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar classof = __webpack_require__(4326);\nvar regexpExec = __webpack_require__(2261);\n\n// `RegExpExec` abstract operation\n// https://tc39.es/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n  var exec = R.exec;\n  if (typeof exec === 'function') {\n    var result = exec.call(R, S);\n    if (typeof result !== 'object') {\n      throw TypeError('RegExp exec method returned something other than an Object or null');\n    }\n    return result;\n  }\n\n  if (classof(R) !== 'RegExp') {\n    throw TypeError('RegExp#exec called on incompatible receiver');\n  }\n\n  return regexpExec.call(R, S);\n};\n\n\n\n/***/ }),\n\n/***/ 2261:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar regexpFlags = __webpack_require__(7066);\nvar stickyHelpers = __webpack_require__(2999);\n\nvar nativeExec = RegExp.prototype.exec;\n// This always refers to the native implementation, because the\n// String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js,\n// which loads this file before patching the method.\nvar nativeReplace = String.prototype.replace;\n\nvar patchedExec = nativeExec;\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n  var re1 = /a/;\n  var re2 = /b*/g;\n  nativeExec.call(re1, 'a');\n  nativeExec.call(re2, 'a');\n  return re1.lastIndex !== 0 || re2.lastIndex !== 0;\n})();\n\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y || stickyHelpers.BROKEN_CARET;\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\n// eslint-disable-next-line regexp/no-assertion-capturing-group, regexp/no-empty-group -- required for testing\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED || UNSUPPORTED_Y;\n\nif (PATCH) {\n  patchedExec = function exec(str) {\n    var re = this;\n    var lastIndex, reCopy, match, i;\n    var sticky = UNSUPPORTED_Y && re.sticky;\n    var flags = regexpFlags.call(re);\n    var source = re.source;\n    var charsAdded = 0;\n    var strCopy = str;\n\n    if (sticky) {\n      flags = flags.replace('y', '');\n      if (flags.indexOf('g') === -1) {\n        flags += 'g';\n      }\n\n      strCopy = String(str).slice(re.lastIndex);\n      // Support anchored sticky behavior.\n      if (re.lastIndex > 0 && (!re.multiline || re.multiline && str[re.lastIndex - 1] !== '\\n')) {\n        source = '(?: ' + source + ')';\n        strCopy = ' ' + strCopy;\n        charsAdded++;\n      }\n      // ^(? + rx + ) is needed, in combination with some str slicing, to\n      // simulate the 'y' flag.\n      reCopy = new RegExp('^(?:' + source + ')', flags);\n    }\n\n    if (NPCG_INCLUDED) {\n      reCopy = new RegExp('^' + source + '$(?!\\\\s)', flags);\n    }\n    if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex;\n\n    match = nativeExec.call(sticky ? reCopy : re, strCopy);\n\n    if (sticky) {\n      if (match) {\n        match.input = match.input.slice(charsAdded);\n        match[0] = match[0].slice(charsAdded);\n        match.index = re.lastIndex;\n        re.lastIndex += match[0].length;\n      } else re.lastIndex = 0;\n    } else if (UPDATES_LAST_INDEX_WRONG && match) {\n      re.lastIndex = re.global ? match.index + match[0].length : lastIndex;\n    }\n    if (NPCG_INCLUDED && match && match.length > 1) {\n      // Fix browsers whose `exec` methods don't consistently return `undefined`\n      // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/\n      nativeReplace.call(match[0], reCopy, function () {\n        for (i = 1; i < arguments.length - 2; i++) {\n          if (arguments[i] === undefined) match[i] = undefined;\n        }\n      });\n    }\n\n    return match;\n  };\n}\n\nmodule.exports = patchedExec;\n\n\n/***/ }),\n\n/***/ 7066:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar anObject = __webpack_require__(9670);\n\n// `RegExp.prototype.flags` getter implementation\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags\nmodule.exports = function () {\n  var that = anObject(this);\n  var result = '';\n  if (that.global) result += 'g';\n  if (that.ignoreCase) result += 'i';\n  if (that.multiline) result += 'm';\n  if (that.dotAll) result += 's';\n  if (that.unicode) result += 'u';\n  if (that.sticky) result += 'y';\n  return result;\n};\n\n\n/***/ }),\n\n/***/ 2999:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar fails = __webpack_require__(7293);\n\n// babel-minify transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError,\n// so we use an intermediate function.\nfunction RE(s, f) {\n  return RegExp(s, f);\n}\n\nexports.UNSUPPORTED_Y = fails(function () {\n  // babel-minify transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError\n  var re = RE('a', 'y');\n  re.lastIndex = 2;\n  return re.exec('abcd') != null;\n});\n\nexports.BROKEN_CARET = fails(function () {\n  // https://bugzilla.mozilla.org/show_bug.cgi?id=773687\n  var re = RE('^r', 'gy');\n  re.lastIndex = 2;\n  return re.exec('str') != null;\n});\n\n\n/***/ }),\n\n/***/ 4488:\n/***/ (function(module) {\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n  if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n  return it;\n};\n\n\n/***/ }),\n\n/***/ 3505:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar global = __webpack_require__(7854);\nvar createNonEnumerableProperty = __webpack_require__(8880);\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\n\n/***/ }),\n\n/***/ 6340:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar getBuiltIn = __webpack_require__(5005);\nvar definePropertyModule = __webpack_require__(3070);\nvar wellKnownSymbol = __webpack_require__(5112);\nvar DESCRIPTORS = __webpack_require__(9781);\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\n\n/***/ }),\n\n/***/ 8003:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar defineProperty = __webpack_require__(3070).f;\nvar has = __webpack_require__(6656);\nvar wellKnownSymbol = __webpack_require__(5112);\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\n\n/***/ }),\n\n/***/ 6200:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar shared = __webpack_require__(2309);\nvar uid = __webpack_require__(9711);\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n  return keys[key] || (keys[key] = uid(key));\n};\n\n\n/***/ }),\n\n/***/ 5465:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar global = __webpack_require__(7854);\nvar setGlobal = __webpack_require__(3505);\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || setGlobal(SHARED, {});\n\nmodule.exports = store;\n\n\n/***/ }),\n\n/***/ 2309:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar IS_PURE = __webpack_require__(1913);\nvar store = __webpack_require__(5465);\n\n(module.exports = function (key, value) {\n  return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n  version: '3.9.0',\n  mode: IS_PURE ? 'pure' : 'global',\n  copyright: '© 2021 Denis Pushkarev (zloirock.ru)'\n});\n\n\n/***/ }),\n\n/***/ 6707:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar anObject = __webpack_require__(9670);\nvar aFunction = __webpack_require__(3099);\nvar wellKnownSymbol = __webpack_require__(5112);\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `SpeciesConstructor` abstract operation\n// https://tc39.es/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\n\n/***/ }),\n\n/***/ 8710:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar toInteger = __webpack_require__(9958);\nvar requireObjectCoercible = __webpack_require__(4488);\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.es/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\n\n/***/ }),\n\n/***/ 3197:\n/***/ (function(module) {\n\n\"use strict\";\n\n// based on https://github.com/bestiejs/punycode.js/blob/master/punycode.js\nvar maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1\nvar base = 36;\nvar tMin = 1;\nvar tMax = 26;\nvar skew = 38;\nvar damp = 700;\nvar initialBias = 72;\nvar initialN = 128; // 0x80\nvar delimiter = '-'; // '\\x2D'\nvar regexNonASCII = /[^\\0-\\u007E]/; // non-ASCII chars\nvar regexSeparators = /[.\\u3002\\uFF0E\\uFF61]/g; // RFC 3490 separators\nvar OVERFLOW_ERROR = 'Overflow: input needs wider integers to process';\nvar baseMinusTMin = base - tMin;\nvar floor = Math.floor;\nvar stringFromCharCode = String.fromCharCode;\n\n/**\n * Creates an array containing the numeric code points of each Unicode\n * character in the string. While JavaScript uses UCS-2 internally,\n * this function will convert a pair of surrogate halves (each of which\n * UCS-2 exposes as separate characters) into a single code point,\n * matching UTF-16.\n */\nvar ucs2decode = function (string) {\n  var output = [];\n  var counter = 0;\n  var length = string.length;\n  while (counter < length) {\n    var value = string.charCodeAt(counter++);\n    if (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n      // It's a high surrogate, and there is a next character.\n      var extra = string.charCodeAt(counter++);\n      if ((extra & 0xFC00) == 0xDC00) { // Low surrogate.\n        output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n      } else {\n        // It's an unmatched surrogate; only append this code unit, in case the\n        // next code unit is the high surrogate of a surrogate pair.\n        output.push(value);\n        counter--;\n      }\n    } else {\n      output.push(value);\n    }\n  }\n  return output;\n};\n\n/**\n * Converts a digit/integer into a basic code point.\n */\nvar digitToBasic = function (digit) {\n  //  0..25 map to ASCII a..z or A..Z\n  // 26..35 map to ASCII 0..9\n  return digit + 22 + 75 * (digit < 26);\n};\n\n/**\n * Bias adaptation function as per section 3.4 of RFC 3492.\n * https://tools.ietf.org/html/rfc3492#section-3.4\n */\nvar adapt = function (delta, numPoints, firstTime) {\n  var k = 0;\n  delta = firstTime ? floor(delta / damp) : delta >> 1;\n  delta += floor(delta / numPoints);\n  for (; delta > baseMinusTMin * tMax >> 1; k += base) {\n    delta = floor(delta / baseMinusTMin);\n  }\n  return floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n};\n\n/**\n * Converts a string of Unicode symbols (e.g. a domain name label) to a\n * Punycode string of ASCII-only symbols.\n */\n// eslint-disable-next-line max-statements -- TODO\nvar encode = function (input) {\n  var output = [];\n\n  // Convert the input in UCS-2 to an array of Unicode code points.\n  input = ucs2decode(input);\n\n  // Cache the length.\n  var inputLength = input.length;\n\n  // Initialize the state.\n  var n = initialN;\n  var delta = 0;\n  var bias = initialBias;\n  var i, currentValue;\n\n  // Handle the basic code points.\n  for (i = 0; i < input.length; i++) {\n    currentValue = input[i];\n    if (currentValue < 0x80) {\n      output.push(stringFromCharCode(currentValue));\n    }\n  }\n\n  var basicLength = output.length; // number of basic code points.\n  var handledCPCount = basicLength; // number of code points that have been handled;\n\n  // Finish the basic string with a delimiter unless it's empty.\n  if (basicLength) {\n    output.push(delimiter);\n  }\n\n  // Main encoding loop:\n  while (handledCPCount < inputLength) {\n    // All non-basic code points < n have been handled already. Find the next larger one:\n    var m = maxInt;\n    for (i = 0; i < input.length; i++) {\n      currentValue = input[i];\n      if (currentValue >= n && currentValue < m) {\n        m = currentValue;\n      }\n    }\n\n    // Increase `delta` enough to advance the decoder's <n,i> state to <m,0>, but guard against overflow.\n    var handledCPCountPlusOne = handledCPCount + 1;\n    if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n      throw RangeError(OVERFLOW_ERROR);\n    }\n\n    delta += (m - n) * handledCPCountPlusOne;\n    n = m;\n\n    for (i = 0; i < input.length; i++) {\n      currentValue = input[i];\n      if (currentValue < n && ++delta > maxInt) {\n        throw RangeError(OVERFLOW_ERROR);\n      }\n      if (currentValue == n) {\n        // Represent delta as a generalized variable-length integer.\n        var q = delta;\n        for (var k = base; /* no condition */; k += base) {\n          var t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n          if (q < t) break;\n          var qMinusT = q - t;\n          var baseMinusT = base - t;\n          output.push(stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT)));\n          q = floor(qMinusT / baseMinusT);\n        }\n\n        output.push(stringFromCharCode(digitToBasic(q)));\n        bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n        delta = 0;\n        ++handledCPCount;\n      }\n    }\n\n    ++delta;\n    ++n;\n  }\n  return output.join('');\n};\n\nmodule.exports = function (input) {\n  var encoded = [];\n  var labels = input.toLowerCase().replace(regexSeparators, '\\u002E').split('.');\n  var i, label;\n  for (i = 0; i < labels.length; i++) {\n    label = labels[i];\n    encoded.push(regexNonASCII.test(label) ? 'xn--' + encode(label) : label);\n  }\n  return encoded.join('.');\n};\n\n\n/***/ }),\n\n/***/ 6091:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar fails = __webpack_require__(7293);\nvar whitespaces = __webpack_require__(1361);\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\n\n/***/ }),\n\n/***/ 3111:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar requireObjectCoercible = __webpack_require__(4488);\nvar whitespaces = __webpack_require__(1361);\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.es/ecma262/#sec-string.prototype.trimstart\n  start: createMethod(1),\n  // `String.prototype.{ trimRight, trimEnd }` methods\n  // https://tc39.es/ecma262/#sec-string.prototype.trimend\n  end: createMethod(2),\n  // `String.prototype.trim` method\n  // https://tc39.es/ecma262/#sec-string.prototype.trim\n  trim: createMethod(3)\n};\n\n\n/***/ }),\n\n/***/ 1400:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar toInteger = __webpack_require__(9958);\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\n\n/***/ }),\n\n/***/ 7067:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar toInteger = __webpack_require__(9958);\nvar toLength = __webpack_require__(7466);\n\n// `ToIndex` abstract operation\n// https://tc39.es/ecma262/#sec-toindex\nmodule.exports = function (it) {\n  if (it === undefined) return 0;\n  var number = toInteger(it);\n  var length = toLength(number);\n  if (number !== length) throw RangeError('Wrong length or index');\n  return length;\n};\n\n\n/***/ }),\n\n/***/ 5656:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = __webpack_require__(8361);\nvar requireObjectCoercible = __webpack_require__(4488);\n\nmodule.exports = function (it) {\n  return IndexedObject(requireObjectCoercible(it));\n};\n\n\n/***/ }),\n\n/***/ 9958:\n/***/ (function(module) {\n\nvar ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `ToInteger` abstract operation\n// https://tc39.es/ecma262/#sec-tointeger\nmodule.exports = function (argument) {\n  return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument);\n};\n\n\n/***/ }),\n\n/***/ 7466:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar toInteger = __webpack_require__(9958);\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n  return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n\n\n/***/ }),\n\n/***/ 7908:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar requireObjectCoercible = __webpack_require__(4488);\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n  return Object(requireObjectCoercible(argument));\n};\n\n\n/***/ }),\n\n/***/ 4590:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar toPositiveInteger = __webpack_require__(3002);\n\nmodule.exports = function (it, BYTES) {\n  var offset = toPositiveInteger(it);\n  if (offset % BYTES) throw RangeError('Wrong offset');\n  return offset;\n};\n\n\n/***/ }),\n\n/***/ 3002:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar toInteger = __webpack_require__(9958);\n\nmodule.exports = function (it) {\n  var result = toInteger(it);\n  if (result < 0) throw RangeError(\"The argument can't be less than 0\");\n  return result;\n};\n\n\n/***/ }),\n\n/***/ 7593:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(111);\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/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\n\n/***/ }),\n\n/***/ 1694:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar wellKnownSymbol = __webpack_require__(5112);\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n\n\n/***/ }),\n\n/***/ 9843:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(2109);\nvar global = __webpack_require__(7854);\nvar DESCRIPTORS = __webpack_require__(9781);\nvar TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS = __webpack_require__(3832);\nvar ArrayBufferViewCore = __webpack_require__(260);\nvar ArrayBufferModule = __webpack_require__(3331);\nvar anInstance = __webpack_require__(5787);\nvar createPropertyDescriptor = __webpack_require__(9114);\nvar createNonEnumerableProperty = __webpack_require__(8880);\nvar toLength = __webpack_require__(7466);\nvar toIndex = __webpack_require__(7067);\nvar toOffset = __webpack_require__(4590);\nvar toPrimitive = __webpack_require__(7593);\nvar has = __webpack_require__(6656);\nvar classof = __webpack_require__(648);\nvar isObject = __webpack_require__(111);\nvar create = __webpack_require__(30);\nvar setPrototypeOf = __webpack_require__(7674);\nvar getOwnPropertyNames = __webpack_require__(8006).f;\nvar typedArrayFrom = __webpack_require__(7321);\nvar forEach = __webpack_require__(2092).forEach;\nvar setSpecies = __webpack_require__(6340);\nvar definePropertyModule = __webpack_require__(3070);\nvar getOwnPropertyDescriptorModule = __webpack_require__(1236);\nvar InternalStateModule = __webpack_require__(9909);\nvar inheritIfRequired = __webpack_require__(9587);\n\nvar getInternalState = InternalStateModule.get;\nvar setInternalState = InternalStateModule.set;\nvar nativeDefineProperty = definePropertyModule.f;\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\nvar round = Math.round;\nvar RangeError = global.RangeError;\nvar ArrayBuffer = ArrayBufferModule.ArrayBuffer;\nvar DataView = ArrayBufferModule.DataView;\nvar NATIVE_ARRAY_BUFFER_VIEWS = ArrayBufferViewCore.NATIVE_ARRAY_BUFFER_VIEWS;\nvar TYPED_ARRAY_TAG = ArrayBufferViewCore.TYPED_ARRAY_TAG;\nvar TypedArray = ArrayBufferViewCore.TypedArray;\nvar TypedArrayPrototype = ArrayBufferViewCore.TypedArrayPrototype;\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\nvar isTypedArray = ArrayBufferViewCore.isTypedArray;\nvar BYTES_PER_ELEMENT = 'BYTES_PER_ELEMENT';\nvar WRONG_LENGTH = 'Wrong length';\n\nvar fromList = function (C, list) {\n  var index = 0;\n  var length = list.length;\n  var result = new (aTypedArrayConstructor(C))(length);\n  while (length > index) result[index] = list[index++];\n  return result;\n};\n\nvar addGetter = function (it, key) {\n  nativeDefineProperty(it, key, { get: function () {\n    return getInternalState(this)[key];\n  } });\n};\n\nvar isArrayBuffer = function (it) {\n  var klass;\n  return it instanceof ArrayBuffer || (klass = classof(it)) == 'ArrayBuffer' || klass == 'SharedArrayBuffer';\n};\n\nvar isTypedArrayIndex = function (target, key) {\n  return isTypedArray(target)\n    && typeof key != 'symbol'\n    && key in target\n    && String(+key) == String(key);\n};\n\nvar wrappedGetOwnPropertyDescriptor = function getOwnPropertyDescriptor(target, key) {\n  return isTypedArrayIndex(target, key = toPrimitive(key, true))\n    ? createPropertyDescriptor(2, target[key])\n    : nativeGetOwnPropertyDescriptor(target, key);\n};\n\nvar wrappedDefineProperty = function defineProperty(target, key, descriptor) {\n  if (isTypedArrayIndex(target, key = toPrimitive(key, true))\n    && isObject(descriptor)\n    && has(descriptor, 'value')\n    && !has(descriptor, 'get')\n    && !has(descriptor, 'set')\n    // TODO: add validation descriptor w/o calling accessors\n    && !descriptor.configurable\n    && (!has(descriptor, 'writable') || descriptor.writable)\n    && (!has(descriptor, 'enumerable') || descriptor.enumerable)\n  ) {\n    target[key] = descriptor.value;\n    return target;\n  } return nativeDefineProperty(target, key, descriptor);\n};\n\nif (DESCRIPTORS) {\n  if (!NATIVE_ARRAY_BUFFER_VIEWS) {\n    getOwnPropertyDescriptorModule.f = wrappedGetOwnPropertyDescriptor;\n    definePropertyModule.f = wrappedDefineProperty;\n    addGetter(TypedArrayPrototype, 'buffer');\n    addGetter(TypedArrayPrototype, 'byteOffset');\n    addGetter(TypedArrayPrototype, 'byteLength');\n    addGetter(TypedArrayPrototype, 'length');\n  }\n\n  $({ target: 'Object', stat: true, forced: !NATIVE_ARRAY_BUFFER_VIEWS }, {\n    getOwnPropertyDescriptor: wrappedGetOwnPropertyDescriptor,\n    defineProperty: wrappedDefineProperty\n  });\n\n  module.exports = function (TYPE, wrapper, CLAMPED) {\n    var BYTES = TYPE.match(/\\d+$/)[0] / 8;\n    var CONSTRUCTOR_NAME = TYPE + (CLAMPED ? 'Clamped' : '') + 'Array';\n    var GETTER = 'get' + TYPE;\n    var SETTER = 'set' + TYPE;\n    var NativeTypedArrayConstructor = global[CONSTRUCTOR_NAME];\n    var TypedArrayConstructor = NativeTypedArrayConstructor;\n    var TypedArrayConstructorPrototype = TypedArrayConstructor && TypedArrayConstructor.prototype;\n    var exported = {};\n\n    var getter = function (that, index) {\n      var data = getInternalState(that);\n      return data.view[GETTER](index * BYTES + data.byteOffset, true);\n    };\n\n    var setter = function (that, index, value) {\n      var data = getInternalState(that);\n      if (CLAMPED) value = (value = round(value)) < 0 ? 0 : value > 0xFF ? 0xFF : value & 0xFF;\n      data.view[SETTER](index * BYTES + data.byteOffset, value, true);\n    };\n\n    var addElement = function (that, index) {\n      nativeDefineProperty(that, index, {\n        get: function () {\n          return getter(this, index);\n        },\n        set: function (value) {\n          return setter(this, index, value);\n        },\n        enumerable: true\n      });\n    };\n\n    if (!NATIVE_ARRAY_BUFFER_VIEWS) {\n      TypedArrayConstructor = wrapper(function (that, data, offset, $length) {\n        anInstance(that, TypedArrayConstructor, CONSTRUCTOR_NAME);\n        var index = 0;\n        var byteOffset = 0;\n        var buffer, byteLength, length;\n        if (!isObject(data)) {\n          length = toIndex(data);\n          byteLength = length * BYTES;\n          buffer = new ArrayBuffer(byteLength);\n        } else if (isArrayBuffer(data)) {\n          buffer = data;\n          byteOffset = toOffset(offset, BYTES);\n          var $len = data.byteLength;\n          if ($length === undefined) {\n            if ($len % BYTES) throw RangeError(WRONG_LENGTH);\n            byteLength = $len - byteOffset;\n            if (byteLength < 0) throw RangeError(WRONG_LENGTH);\n          } else {\n            byteLength = toLength($length) * BYTES;\n            if (byteLength + byteOffset > $len) throw RangeError(WRONG_LENGTH);\n          }\n          length = byteLength / BYTES;\n        } else if (isTypedArray(data)) {\n          return fromList(TypedArrayConstructor, data);\n        } else {\n          return typedArrayFrom.call(TypedArrayConstructor, data);\n        }\n        setInternalState(that, {\n          buffer: buffer,\n          byteOffset: byteOffset,\n          byteLength: byteLength,\n          length: length,\n          view: new DataView(buffer)\n        });\n        while (index < length) addElement(that, index++);\n      });\n\n      if (setPrototypeOf) setPrototypeOf(TypedArrayConstructor, TypedArray);\n      TypedArrayConstructorPrototype = TypedArrayConstructor.prototype = create(TypedArrayPrototype);\n    } else if (TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS) {\n      TypedArrayConstructor = wrapper(function (dummy, data, typedArrayOffset, $length) {\n        anInstance(dummy, TypedArrayConstructor, CONSTRUCTOR_NAME);\n        return inheritIfRequired(function () {\n          if (!isObject(data)) return new NativeTypedArrayConstructor(toIndex(data));\n          if (isArrayBuffer(data)) return $length !== undefined\n            ? new NativeTypedArrayConstructor(data, toOffset(typedArrayOffset, BYTES), $length)\n            : typedArrayOffset !== undefined\n              ? new NativeTypedArrayConstructor(data, toOffset(typedArrayOffset, BYTES))\n              : new NativeTypedArrayConstructor(data);\n          if (isTypedArray(data)) return fromList(TypedArrayConstructor, data);\n          return typedArrayFrom.call(TypedArrayConstructor, data);\n        }(), dummy, TypedArrayConstructor);\n      });\n\n      if (setPrototypeOf) setPrototypeOf(TypedArrayConstructor, TypedArray);\n      forEach(getOwnPropertyNames(NativeTypedArrayConstructor), function (key) {\n        if (!(key in TypedArrayConstructor)) {\n          createNonEnumerableProperty(TypedArrayConstructor, key, NativeTypedArrayConstructor[key]);\n        }\n      });\n      TypedArrayConstructor.prototype = TypedArrayConstructorPrototype;\n    }\n\n    if (TypedArrayConstructorPrototype.constructor !== TypedArrayConstructor) {\n      createNonEnumerableProperty(TypedArrayConstructorPrototype, 'constructor', TypedArrayConstructor);\n    }\n\n    if (TYPED_ARRAY_TAG) {\n      createNonEnumerableProperty(TypedArrayConstructorPrototype, TYPED_ARRAY_TAG, CONSTRUCTOR_NAME);\n    }\n\n    exported[CONSTRUCTOR_NAME] = TypedArrayConstructor;\n\n    $({\n      global: true, forced: TypedArrayConstructor != NativeTypedArrayConstructor, sham: !NATIVE_ARRAY_BUFFER_VIEWS\n    }, exported);\n\n    if (!(BYTES_PER_ELEMENT in TypedArrayConstructor)) {\n      createNonEnumerableProperty(TypedArrayConstructor, BYTES_PER_ELEMENT, BYTES);\n    }\n\n    if (!(BYTES_PER_ELEMENT in TypedArrayConstructorPrototype)) {\n      createNonEnumerableProperty(TypedArrayConstructorPrototype, BYTES_PER_ELEMENT, BYTES);\n    }\n\n    setSpecies(CONSTRUCTOR_NAME);\n  };\n} else module.exports = function () { /* empty */ };\n\n\n/***/ }),\n\n/***/ 3832:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n/* eslint-disable no-new -- required for testing */\nvar global = __webpack_require__(7854);\nvar fails = __webpack_require__(7293);\nvar checkCorrectnessOfIteration = __webpack_require__(7072);\nvar NATIVE_ARRAY_BUFFER_VIEWS = __webpack_require__(260).NATIVE_ARRAY_BUFFER_VIEWS;\n\nvar ArrayBuffer = global.ArrayBuffer;\nvar Int8Array = global.Int8Array;\n\nmodule.exports = !NATIVE_ARRAY_BUFFER_VIEWS || !fails(function () {\n  Int8Array(1);\n}) || !fails(function () {\n  new Int8Array(-1);\n}) || !checkCorrectnessOfIteration(function (iterable) {\n  new Int8Array();\n  new Int8Array(null);\n  new Int8Array(1.5);\n  new Int8Array(iterable);\n}, true) || fails(function () {\n  // Safari (11+) bug - a reason why even Safari 13 should load a typed array polyfill\n  return new Int8Array(new ArrayBuffer(2), 1, undefined).length !== 1;\n});\n\n\n/***/ }),\n\n/***/ 3074:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar aTypedArrayConstructor = __webpack_require__(260).aTypedArrayConstructor;\nvar speciesConstructor = __webpack_require__(6707);\n\nmodule.exports = function (instance, list) {\n  var C = speciesConstructor(instance, instance.constructor);\n  var index = 0;\n  var length = list.length;\n  var result = new (aTypedArrayConstructor(C))(length);\n  while (length > index) result[index] = list[index++];\n  return result;\n};\n\n\n/***/ }),\n\n/***/ 7321:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar toObject = __webpack_require__(7908);\nvar toLength = __webpack_require__(7466);\nvar getIteratorMethod = __webpack_require__(1246);\nvar isArrayIteratorMethod = __webpack_require__(7659);\nvar bind = __webpack_require__(9974);\nvar aTypedArrayConstructor = __webpack_require__(260).aTypedArrayConstructor;\n\nmodule.exports = function from(source /* , mapfn, thisArg */) {\n  var O = toObject(source);\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 i, length, result, step, iterator, next;\n  if (iteratorMethod != undefined && !isArrayIteratorMethod(iteratorMethod)) {\n    iterator = iteratorMethod.call(O);\n    next = iterator.next;\n    O = [];\n    while (!(step = next.call(iterator)).done) {\n      O.push(step.value);\n    }\n  }\n  if (mapping && argumentsLength > 2) {\n    mapfn = bind(mapfn, arguments[2], 2);\n  }\n  length = toLength(O.length);\n  result = new (aTypedArrayConstructor(this))(length);\n  for (i = 0; length > i; i++) {\n    result[i] = mapping ? mapfn(O[i], i) : O[i];\n  }\n  return result;\n};\n\n\n/***/ }),\n\n/***/ 9711:\n/***/ (function(module) {\n\nvar id = 0;\nvar postfix = Math.random();\n\nmodule.exports = function (key) {\n  return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id + postfix).toString(36);\n};\n\n\n/***/ }),\n\n/***/ 3307:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar NATIVE_SYMBOL = __webpack_require__(133);\n\nmodule.exports = NATIVE_SYMBOL\n  /* global Symbol -- safe */\n  && !Symbol.sham\n  && typeof Symbol.iterator == 'symbol';\n\n\n/***/ }),\n\n/***/ 5112:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar global = __webpack_require__(7854);\nvar shared = __webpack_require__(2309);\nvar has = __webpack_require__(6656);\nvar uid = __webpack_require__(9711);\nvar NATIVE_SYMBOL = __webpack_require__(133);\nvar USE_SYMBOL_AS_UID = __webpack_require__(3307);\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\n\n/***/ }),\n\n/***/ 1361:\n/***/ (function(module) {\n\n// a string of all valid unicode whitespaces\nmodule.exports = '\\u0009\\u000A\\u000B\\u000C\\u000D\\u0020\\u00A0\\u1680\\u2000\\u2001\\u2002' +\n  '\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n\n\n/***/ }),\n\n/***/ 8264:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(2109);\nvar global = __webpack_require__(7854);\nvar arrayBufferModule = __webpack_require__(3331);\nvar setSpecies = __webpack_require__(6340);\n\nvar ARRAY_BUFFER = 'ArrayBuffer';\nvar ArrayBuffer = arrayBufferModule[ARRAY_BUFFER];\nvar NativeArrayBuffer = global[ARRAY_BUFFER];\n\n// `ArrayBuffer` constructor\n// https://tc39.es/ecma262/#sec-arraybuffer-constructor\n$({ global: true, forced: NativeArrayBuffer !== ArrayBuffer }, {\n  ArrayBuffer: ArrayBuffer\n});\n\nsetSpecies(ARRAY_BUFFER);\n\n\n/***/ }),\n\n/***/ 2222:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(2109);\nvar fails = __webpack_require__(7293);\nvar isArray = __webpack_require__(3157);\nvar isObject = __webpack_require__(111);\nvar toObject = __webpack_require__(7908);\nvar toLength = __webpack_require__(7466);\nvar createProperty = __webpack_require__(6135);\nvar arraySpeciesCreate = __webpack_require__(5417);\nvar arrayMethodHasSpeciesSupport = __webpack_require__(1194);\nvar wellKnownSymbol = __webpack_require__(5112);\nvar V8_VERSION = __webpack_require__(7392);\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.es/ecma262/#sec-array.prototype.concat\n// with adding support of @@isConcatSpreadable and @@species\n$({ target: 'Array', proto: true, forced: FORCED }, {\n  // eslint-disable-next-line no-unused-vars -- required for `.length`\n  concat: function concat(arg) {\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\n\n/***/ }),\n\n/***/ 7327:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(2109);\nvar $filter = __webpack_require__(2092).filter;\nvar arrayMethodHasSpeciesSupport = __webpack_require__(1194);\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('filter');\n\n// `Array.prototype.filter` method\n// https://tc39.es/ecma262/#sec-array.prototype.filter\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n  filter: function filter(callbackfn /* , thisArg */) {\n    return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n\n\n/***/ }),\n\n/***/ 2772:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(2109);\nvar $indexOf = __webpack_require__(1318).indexOf;\nvar arrayMethodIsStrict = __webpack_require__(9341);\n\nvar nativeIndexOf = [].indexOf;\n\nvar NEGATIVE_ZERO = !!nativeIndexOf && 1 / [1].indexOf(1, -0) < 0;\nvar STRICT_METHOD = arrayMethodIsStrict('indexOf');\n\n// `Array.prototype.indexOf` method\n// https://tc39.es/ecma262/#sec-array.prototype.indexof\n$({ target: 'Array', proto: true, forced: NEGATIVE_ZERO || !STRICT_METHOD }, {\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\n\n/***/ }),\n\n/***/ 6992:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar toIndexedObject = __webpack_require__(5656);\nvar addToUnscopables = __webpack_require__(1223);\nvar Iterators = __webpack_require__(7497);\nvar InternalStateModule = __webpack_require__(9909);\nvar defineIterator = __webpack_require__(654);\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.es/ecma262/#sec-array.prototype.entries\n// `Array.prototype.keys` method\n// https://tc39.es/ecma262/#sec-array.prototype.keys\n// `Array.prototype.values` method\n// https://tc39.es/ecma262/#sec-array.prototype.values\n// `Array.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-array.prototype-@@iterator\n// `CreateArrayIterator` internal method\n// https://tc39.es/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.es/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.es/ecma262/#sec-createunmappedargumentsobject\n// https://tc39.es/ecma262/#sec-createmappedargumentsobject\nIterators.Arguments = Iterators.Array;\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n\n\n/***/ }),\n\n/***/ 1249:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(2109);\nvar $map = __webpack_require__(2092).map;\nvar arrayMethodHasSpeciesSupport = __webpack_require__(1194);\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('map');\n\n// `Array.prototype.map` method\n// https://tc39.es/ecma262/#sec-array.prototype.map\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n  map: function map(callbackfn /* , thisArg */) {\n    return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n\n\n/***/ }),\n\n/***/ 7042:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(2109);\nvar isObject = __webpack_require__(111);\nvar isArray = __webpack_require__(3157);\nvar toAbsoluteIndex = __webpack_require__(1400);\nvar toLength = __webpack_require__(7466);\nvar toIndexedObject = __webpack_require__(5656);\nvar createProperty = __webpack_require__(6135);\nvar wellKnownSymbol = __webpack_require__(5112);\nvar arrayMethodHasSpeciesSupport = __webpack_require__(1194);\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('slice');\n\nvar SPECIES = wellKnownSymbol('species');\nvar nativeSlice = [].slice;\nvar max = Math.max;\n\n// `Array.prototype.slice` method\n// https://tc39.es/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 }, {\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\n\n/***/ }),\n\n/***/ 561:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(2109);\nvar toAbsoluteIndex = __webpack_require__(1400);\nvar toInteger = __webpack_require__(9958);\nvar toLength = __webpack_require__(7466);\nvar toObject = __webpack_require__(7908);\nvar arraySpeciesCreate = __webpack_require__(5417);\nvar createProperty = __webpack_require__(6135);\nvar arrayMethodHasSpeciesSupport = __webpack_require__(1194);\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('splice');\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.es/ecma262/#sec-array.prototype.splice\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\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\n\n/***/ }),\n\n/***/ 8309:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\nvar DESCRIPTORS = __webpack_require__(9781);\nvar defineProperty = __webpack_require__(3070).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.es/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\n\n/***/ }),\n\n/***/ 489:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\nvar $ = __webpack_require__(2109);\nvar fails = __webpack_require__(7293);\nvar toObject = __webpack_require__(7908);\nvar nativeGetPrototypeOf = __webpack_require__(9518);\nvar CORRECT_PROTOTYPE_GETTER = __webpack_require__(8544);\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeGetPrototypeOf(1); });\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/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\n\n/***/ }),\n\n/***/ 1539:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\nvar TO_STRING_TAG_SUPPORT = __webpack_require__(1694);\nvar redefine = __webpack_require__(1320);\nvar toString = __webpack_require__(288);\n\n// `Object.prototype.toString` method\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nif (!TO_STRING_TAG_SUPPORT) {\n  redefine(Object.prototype, 'toString', toString, { unsafe: true });\n}\n\n\n/***/ }),\n\n/***/ 4916:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(2109);\nvar exec = __webpack_require__(2261);\n\n// `RegExp.prototype.exec` method\n// https://tc39.es/ecma262/#sec-regexp.prototype.exec\n$({ target: 'RegExp', proto: true, forced: /./.exec !== exec }, {\n  exec: exec\n});\n\n\n/***/ }),\n\n/***/ 9714:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar redefine = __webpack_require__(1320);\nvar anObject = __webpack_require__(9670);\nvar fails = __webpack_require__(7293);\nvar flags = __webpack_require__(7066);\n\nvar TO_STRING = 'toString';\nvar RegExpPrototype = RegExp.prototype;\nvar nativeToString = RegExpPrototype[TO_STRING];\n\nvar NOT_GENERIC = fails(function () { return nativeToString.call({ source: 'a', flags: 'b' }) != '/a/b'; });\n// FF44- RegExp#toString has a wrong name\nvar INCORRECT_NAME = nativeToString.name != TO_STRING;\n\n// `RegExp.prototype.toString` method\n// https://tc39.es/ecma262/#sec-regexp.prototype.tostring\nif (NOT_GENERIC || INCORRECT_NAME) {\n  redefine(RegExp.prototype, TO_STRING, function toString() {\n    var R = anObject(this);\n    var p = String(R.source);\n    var rf = R.flags;\n    var f = String(rf === undefined && R instanceof RegExp && !('flags' in RegExpPrototype) ? flags.call(R) : rf);\n    return '/' + p + '/' + f;\n  }, { unsafe: true });\n}\n\n\n/***/ }),\n\n/***/ 8783:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar charAt = __webpack_require__(8710).charAt;\nvar InternalStateModule = __webpack_require__(9909);\nvar defineIterator = __webpack_require__(654);\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.es/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.es/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\n\n/***/ }),\n\n/***/ 4723:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar fixRegExpWellKnownSymbolLogic = __webpack_require__(7007);\nvar anObject = __webpack_require__(9670);\nvar toLength = __webpack_require__(7466);\nvar requireObjectCoercible = __webpack_require__(4488);\nvar advanceStringIndex = __webpack_require__(1530);\nvar regExpExec = __webpack_require__(7651);\n\n// @@match logic\nfixRegExpWellKnownSymbolLogic('match', 1, function (MATCH, nativeMatch, maybeCallNative) {\n  return [\n    // `String.prototype.match` method\n    // https://tc39.es/ecma262/#sec-string.prototype.match\n    function match(regexp) {\n      var O = requireObjectCoercible(this);\n      var matcher = regexp == undefined ? undefined : regexp[MATCH];\n      return matcher !== undefined ? matcher.call(regexp, O) : new RegExp(regexp)[MATCH](String(O));\n    },\n    // `RegExp.prototype[@@match]` method\n    // https://tc39.es/ecma262/#sec-regexp.prototype-@@match\n    function (regexp) {\n      var res = maybeCallNative(nativeMatch, regexp, this);\n      if (res.done) return res.value;\n\n      var rx = anObject(regexp);\n      var S = String(this);\n\n      if (!rx.global) return regExpExec(rx, S);\n\n      var fullUnicode = rx.unicode;\n      rx.lastIndex = 0;\n      var A = [];\n      var n = 0;\n      var result;\n      while ((result = regExpExec(rx, S)) !== null) {\n        var matchStr = String(result[0]);\n        A[n] = matchStr;\n        if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n        n++;\n      }\n      return n === 0 ? null : A;\n    }\n  ];\n});\n\n\n/***/ }),\n\n/***/ 5306:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar fixRegExpWellKnownSymbolLogic = __webpack_require__(7007);\nvar anObject = __webpack_require__(9670);\nvar toLength = __webpack_require__(7466);\nvar toInteger = __webpack_require__(9958);\nvar requireObjectCoercible = __webpack_require__(4488);\nvar advanceStringIndex = __webpack_require__(1530);\nvar getSubstitution = __webpack_require__(647);\nvar regExpExec = __webpack_require__(7651);\n\nvar max = Math.max;\nvar min = Math.min;\n\nvar maybeToString = function (it) {\n  return it === undefined ? it : String(it);\n};\n\n// @@replace logic\nfixRegExpWellKnownSymbolLogic('replace', 2, function (REPLACE, nativeReplace, maybeCallNative, reason) {\n  var REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = reason.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE;\n  var REPLACE_KEEPS_$0 = reason.REPLACE_KEEPS_$0;\n  var UNSAFE_SUBSTITUTE = REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE ? '$' : '$0';\n\n  return [\n    // `String.prototype.replace` method\n    // https://tc39.es/ecma262/#sec-string.prototype.replace\n    function replace(searchValue, replaceValue) {\n      var O = requireObjectCoercible(this);\n      var replacer = searchValue == undefined ? undefined : searchValue[REPLACE];\n      return replacer !== undefined\n        ? replacer.call(searchValue, O, replaceValue)\n        : nativeReplace.call(String(O), searchValue, replaceValue);\n    },\n    // `RegExp.prototype[@@replace]` method\n    // https://tc39.es/ecma262/#sec-regexp.prototype-@@replace\n    function (regexp, replaceValue) {\n      if (\n        (!REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE && REPLACE_KEEPS_$0) ||\n        (typeof replaceValue === 'string' && replaceValue.indexOf(UNSAFE_SUBSTITUTE) === -1)\n      ) {\n        var res = maybeCallNative(nativeReplace, regexp, this, replaceValue);\n        if (res.done) return res.value;\n      }\n\n      var rx = anObject(regexp);\n      var S = String(this);\n\n      var functionalReplace = typeof replaceValue === 'function';\n      if (!functionalReplace) replaceValue = String(replaceValue);\n\n      var global = rx.global;\n      if (global) {\n        var fullUnicode = rx.unicode;\n        rx.lastIndex = 0;\n      }\n      var results = [];\n      while (true) {\n        var result = regExpExec(rx, S);\n        if (result === null) break;\n\n        results.push(result);\n        if (!global) break;\n\n        var matchStr = String(result[0]);\n        if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n      }\n\n      var accumulatedResult = '';\n      var nextSourcePosition = 0;\n      for (var i = 0; i < results.length; i++) {\n        result = results[i];\n\n        var matched = String(result[0]);\n        var position = max(min(toInteger(result.index), S.length), 0);\n        var captures = [];\n        // NOTE: This is equivalent to\n        //   captures = result.slice(1).map(maybeToString)\n        // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n        // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n        // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n        for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j]));\n        var namedCaptures = result.groups;\n        if (functionalReplace) {\n          var replacerArgs = [matched].concat(captures, position, S);\n          if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);\n          var replacement = String(replaceValue.apply(undefined, replacerArgs));\n        } else {\n          replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n        }\n        if (position >= nextSourcePosition) {\n          accumulatedResult += S.slice(nextSourcePosition, position) + replacement;\n          nextSourcePosition = position + matched.length;\n        }\n      }\n      return accumulatedResult + S.slice(nextSourcePosition);\n    }\n  ];\n});\n\n\n/***/ }),\n\n/***/ 3123:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar fixRegExpWellKnownSymbolLogic = __webpack_require__(7007);\nvar isRegExp = __webpack_require__(7850);\nvar anObject = __webpack_require__(9670);\nvar requireObjectCoercible = __webpack_require__(4488);\nvar speciesConstructor = __webpack_require__(6707);\nvar advanceStringIndex = __webpack_require__(1530);\nvar toLength = __webpack_require__(7466);\nvar callRegExpExec = __webpack_require__(7651);\nvar regexpExec = __webpack_require__(2261);\nvar fails = __webpack_require__(7293);\n\nvar arrayPush = [].push;\nvar min = Math.min;\nvar MAX_UINT32 = 0xFFFFFFFF;\n\n// babel-minify transpiles RegExp('x', 'y') -> /x/y and it causes SyntaxError\nvar SUPPORTS_Y = !fails(function () { return !RegExp(MAX_UINT32, 'y'); });\n\n// @@split logic\nfixRegExpWellKnownSymbolLogic('split', 2, function (SPLIT, nativeSplit, maybeCallNative) {\n  var internalSplit;\n  if (\n    'abbc'.split(/(b)*/)[1] == 'c' ||\n    // eslint-disable-next-line regexp/no-empty-group -- required for testing\n    'test'.split(/(?:)/, -1).length != 4 ||\n    'ab'.split(/(?:ab)*/).length != 2 ||\n    '.'.split(/(.?)(.?)/).length != 4 ||\n    // eslint-disable-next-line regexp/no-assertion-capturing-group, regexp/no-empty-group -- required for testing\n    '.'.split(/()()/).length > 1 ||\n    ''.split(/.?/).length\n  ) {\n    // based on es5-shim implementation, need to rework it\n    internalSplit = function (separator, limit) {\n      var string = String(requireObjectCoercible(this));\n      var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n      if (lim === 0) return [];\n      if (separator === undefined) return [string];\n      // If `separator` is not a regex, use native split\n      if (!isRegExp(separator)) {\n        return nativeSplit.call(string, separator, lim);\n      }\n      var output = [];\n      var flags = (separator.ignoreCase ? 'i' : '') +\n                  (separator.multiline ? 'm' : '') +\n                  (separator.unicode ? 'u' : '') +\n                  (separator.sticky ? 'y' : '');\n      var lastLastIndex = 0;\n      // Make `global` and avoid `lastIndex` issues by working with a copy\n      var separatorCopy = new RegExp(separator.source, flags + 'g');\n      var match, lastIndex, lastLength;\n      while (match = regexpExec.call(separatorCopy, string)) {\n        lastIndex = separatorCopy.lastIndex;\n        if (lastIndex > lastLastIndex) {\n          output.push(string.slice(lastLastIndex, match.index));\n          if (match.length > 1 && match.index < string.length) arrayPush.apply(output, match.slice(1));\n          lastLength = match[0].length;\n          lastLastIndex = lastIndex;\n          if (output.length >= lim) break;\n        }\n        if (separatorCopy.lastIndex === match.index) separatorCopy.lastIndex++; // Avoid an infinite loop\n      }\n      if (lastLastIndex === string.length) {\n        if (lastLength || !separatorCopy.test('')) output.push('');\n      } else output.push(string.slice(lastLastIndex));\n      return output.length > lim ? output.slice(0, lim) : output;\n    };\n  // Chakra, V8\n  } else if ('0'.split(undefined, 0).length) {\n    internalSplit = function (separator, limit) {\n      return separator === undefined && limit === 0 ? [] : nativeSplit.call(this, separator, limit);\n    };\n  } else internalSplit = nativeSplit;\n\n  return [\n    // `String.prototype.split` method\n    // https://tc39.es/ecma262/#sec-string.prototype.split\n    function split(separator, limit) {\n      var O = requireObjectCoercible(this);\n      var splitter = separator == undefined ? undefined : separator[SPLIT];\n      return splitter !== undefined\n        ? splitter.call(separator, O, limit)\n        : internalSplit.call(String(O), separator, limit);\n    },\n    // `RegExp.prototype[@@split]` method\n    // https://tc39.es/ecma262/#sec-regexp.prototype-@@split\n    //\n    // NOTE: This cannot be properly polyfilled in engines that don't support\n    // the 'y' flag.\n    function (regexp, limit) {\n      var res = maybeCallNative(internalSplit, regexp, this, limit, internalSplit !== nativeSplit);\n      if (res.done) return res.value;\n\n      var rx = anObject(regexp);\n      var S = String(this);\n      var C = speciesConstructor(rx, RegExp);\n\n      var unicodeMatching = rx.unicode;\n      var flags = (rx.ignoreCase ? 'i' : '') +\n                  (rx.multiline ? 'm' : '') +\n                  (rx.unicode ? 'u' : '') +\n                  (SUPPORTS_Y ? 'y' : 'g');\n\n      // ^(? + rx + ) is needed, in combination with some S slicing, to\n      // simulate the 'y' flag.\n      var splitter = new C(SUPPORTS_Y ? rx : '^(?:' + rx.source + ')', flags);\n      var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n      if (lim === 0) return [];\n      if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : [];\n      var p = 0;\n      var q = 0;\n      var A = [];\n      while (q < S.length) {\n        splitter.lastIndex = SUPPORTS_Y ? q : 0;\n        var z = callRegExpExec(splitter, SUPPORTS_Y ? S : S.slice(q));\n        var e;\n        if (\n          z === null ||\n          (e = min(toLength(splitter.lastIndex + (SUPPORTS_Y ? 0 : q)), S.length)) === p\n        ) {\n          q = advanceStringIndex(S, q, unicodeMatching);\n        } else {\n          A.push(S.slice(p, q));\n          if (A.length === lim) return A;\n          for (var i = 1; i <= z.length - 1; i++) {\n            A.push(z[i]);\n            if (A.length === lim) return A;\n          }\n          q = p = e;\n        }\n      }\n      A.push(S.slice(p));\n      return A;\n    }\n  ];\n}, !SUPPORTS_Y);\n\n\n/***/ }),\n\n/***/ 3210:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(2109);\nvar $trim = __webpack_require__(3111).trim;\nvar forcedStringTrimMethod = __webpack_require__(6091);\n\n// `String.prototype.trim` method\n// https://tc39.es/ecma262/#sec-string.prototype.trim\n$({ target: 'String', proto: true, forced: forcedStringTrimMethod('trim') }, {\n  trim: function trim() {\n    return $trim(this);\n  }\n});\n\n\n/***/ }),\n\n/***/ 2990:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __webpack_require__(260);\nvar $copyWithin = __webpack_require__(1048);\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.copyWithin` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.copywithin\nexportTypedArrayMethod('copyWithin', function copyWithin(target, start /* , end */) {\n  return $copyWithin.call(aTypedArray(this), target, start, arguments.length > 2 ? arguments[2] : undefined);\n});\n\n\n/***/ }),\n\n/***/ 8927:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __webpack_require__(260);\nvar $every = __webpack_require__(2092).every;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.every` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.every\nexportTypedArrayMethod('every', function every(callbackfn /* , thisArg */) {\n  return $every(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n});\n\n\n/***/ }),\n\n/***/ 3105:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __webpack_require__(260);\nvar $fill = __webpack_require__(1285);\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.fill` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.fill\n// eslint-disable-next-line no-unused-vars -- required for `.length`\nexportTypedArrayMethod('fill', function fill(value /* , start, end */) {\n  return $fill.apply(aTypedArray(this), arguments);\n});\n\n\n/***/ }),\n\n/***/ 5035:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __webpack_require__(260);\nvar $filter = __webpack_require__(2092).filter;\nvar fromSpeciesAndList = __webpack_require__(3074);\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.filter` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.filter\nexportTypedArrayMethod('filter', function filter(callbackfn /* , thisArg */) {\n  var list = $filter(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  return fromSpeciesAndList(this, list);\n});\n\n\n/***/ }),\n\n/***/ 7174:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __webpack_require__(260);\nvar $findIndex = __webpack_require__(2092).findIndex;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.findIndex` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.findindex\nexportTypedArrayMethod('findIndex', function findIndex(predicate /* , thisArg */) {\n  return $findIndex(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n});\n\n\n/***/ }),\n\n/***/ 4345:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __webpack_require__(260);\nvar $find = __webpack_require__(2092).find;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.find` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.find\nexportTypedArrayMethod('find', function find(predicate /* , thisArg */) {\n  return $find(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n});\n\n\n/***/ }),\n\n/***/ 2846:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __webpack_require__(260);\nvar $forEach = __webpack_require__(2092).forEach;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.forEach` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.foreach\nexportTypedArrayMethod('forEach', function forEach(callbackfn /* , thisArg */) {\n  $forEach(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n});\n\n\n/***/ }),\n\n/***/ 4731:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __webpack_require__(260);\nvar $includes = __webpack_require__(1318).includes;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.includes` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.includes\nexportTypedArrayMethod('includes', function includes(searchElement /* , fromIndex */) {\n  return $includes(aTypedArray(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n});\n\n\n/***/ }),\n\n/***/ 7209:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __webpack_require__(260);\nvar $indexOf = __webpack_require__(1318).indexOf;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.indexOf` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.indexof\nexportTypedArrayMethod('indexOf', function indexOf(searchElement /* , fromIndex */) {\n  return $indexOf(aTypedArray(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n});\n\n\n/***/ }),\n\n/***/ 6319:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar global = __webpack_require__(7854);\nvar ArrayBufferViewCore = __webpack_require__(260);\nvar ArrayIterators = __webpack_require__(6992);\nvar wellKnownSymbol = __webpack_require__(5112);\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar Uint8Array = global.Uint8Array;\nvar arrayValues = ArrayIterators.values;\nvar arrayKeys = ArrayIterators.keys;\nvar arrayEntries = ArrayIterators.entries;\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar nativeTypedArrayIterator = Uint8Array && Uint8Array.prototype[ITERATOR];\n\nvar CORRECT_ITER_NAME = !!nativeTypedArrayIterator\n  && (nativeTypedArrayIterator.name == 'values' || nativeTypedArrayIterator.name == undefined);\n\nvar typedArrayValues = function values() {\n  return arrayValues.call(aTypedArray(this));\n};\n\n// `%TypedArray%.prototype.entries` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.entries\nexportTypedArrayMethod('entries', function entries() {\n  return arrayEntries.call(aTypedArray(this));\n});\n// `%TypedArray%.prototype.keys` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.keys\nexportTypedArrayMethod('keys', function keys() {\n  return arrayKeys.call(aTypedArray(this));\n});\n// `%TypedArray%.prototype.values` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.values\nexportTypedArrayMethod('values', typedArrayValues, !CORRECT_ITER_NAME);\n// `%TypedArray%.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype-@@iterator\nexportTypedArrayMethod(ITERATOR, typedArrayValues, !CORRECT_ITER_NAME);\n\n\n/***/ }),\n\n/***/ 8867:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __webpack_require__(260);\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar $join = [].join;\n\n// `%TypedArray%.prototype.join` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.join\n// eslint-disable-next-line no-unused-vars -- required for `.length`\nexportTypedArrayMethod('join', function join(separator) {\n  return $join.apply(aTypedArray(this), arguments);\n});\n\n\n/***/ }),\n\n/***/ 7789:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __webpack_require__(260);\nvar $lastIndexOf = __webpack_require__(6583);\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.lastIndexOf` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.lastindexof\n// eslint-disable-next-line no-unused-vars -- required for `.length`\nexportTypedArrayMethod('lastIndexOf', function lastIndexOf(searchElement /* , fromIndex */) {\n  return $lastIndexOf.apply(aTypedArray(this), arguments);\n});\n\n\n/***/ }),\n\n/***/ 3739:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __webpack_require__(260);\nvar $map = __webpack_require__(2092).map;\nvar speciesConstructor = __webpack_require__(6707);\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.map` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.map\nexportTypedArrayMethod('map', function map(mapfn /* , thisArg */) {\n  return $map(aTypedArray(this), mapfn, arguments.length > 1 ? arguments[1] : undefined, function (O, length) {\n    return new (aTypedArrayConstructor(speciesConstructor(O, O.constructor)))(length);\n  });\n});\n\n\n/***/ }),\n\n/***/ 4483:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __webpack_require__(260);\nvar $reduceRight = __webpack_require__(3671).right;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.reduceRicht` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.reduceright\nexportTypedArrayMethod('reduceRight', function reduceRight(callbackfn /* , initialValue */) {\n  return $reduceRight(aTypedArray(this), callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined);\n});\n\n\n/***/ }),\n\n/***/ 9368:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __webpack_require__(260);\nvar $reduce = __webpack_require__(3671).left;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.reduce` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.reduce\nexportTypedArrayMethod('reduce', function reduce(callbackfn /* , initialValue */) {\n  return $reduce(aTypedArray(this), callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined);\n});\n\n\n/***/ }),\n\n/***/ 2056:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __webpack_require__(260);\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar floor = Math.floor;\n\n// `%TypedArray%.prototype.reverse` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.reverse\nexportTypedArrayMethod('reverse', function reverse() {\n  var that = this;\n  var length = aTypedArray(that).length;\n  var middle = floor(length / 2);\n  var index = 0;\n  var value;\n  while (index < middle) {\n    value = that[index];\n    that[index++] = that[--length];\n    that[length] = value;\n  } return that;\n});\n\n\n/***/ }),\n\n/***/ 3462:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __webpack_require__(260);\nvar toLength = __webpack_require__(7466);\nvar toOffset = __webpack_require__(4590);\nvar toObject = __webpack_require__(7908);\nvar fails = __webpack_require__(7293);\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\nvar FORCED = fails(function () {\n  /* global Int8Array -- safe */\n  new Int8Array(1).set({});\n});\n\n// `%TypedArray%.prototype.set` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.set\nexportTypedArrayMethod('set', function set(arrayLike /* , offset */) {\n  aTypedArray(this);\n  var offset = toOffset(arguments.length > 1 ? arguments[1] : undefined, 1);\n  var length = this.length;\n  var src = toObject(arrayLike);\n  var len = toLength(src.length);\n  var index = 0;\n  if (len + offset > length) throw RangeError('Wrong length');\n  while (index < len) this[offset + index] = src[index++];\n}, FORCED);\n\n\n/***/ }),\n\n/***/ 678:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __webpack_require__(260);\nvar speciesConstructor = __webpack_require__(6707);\nvar fails = __webpack_require__(7293);\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar $slice = [].slice;\n\nvar FORCED = fails(function () {\n  /* global Int8Array -- safe */\n  new Int8Array(1).slice();\n});\n\n// `%TypedArray%.prototype.slice` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.slice\nexportTypedArrayMethod('slice', function slice(start, end) {\n  var list = $slice.call(aTypedArray(this), start, end);\n  var C = speciesConstructor(this, this.constructor);\n  var index = 0;\n  var length = list.length;\n  var result = new (aTypedArrayConstructor(C))(length);\n  while (length > index) result[index] = list[index++];\n  return result;\n}, FORCED);\n\n\n/***/ }),\n\n/***/ 7462:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __webpack_require__(260);\nvar $some = __webpack_require__(2092).some;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.some` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.some\nexportTypedArrayMethod('some', function some(callbackfn /* , thisArg */) {\n  return $some(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n});\n\n\n/***/ }),\n\n/***/ 3824:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __webpack_require__(260);\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar $sort = [].sort;\n\n// `%TypedArray%.prototype.sort` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.sort\nexportTypedArrayMethod('sort', function sort(comparefn) {\n  return $sort.call(aTypedArray(this), comparefn);\n});\n\n\n/***/ }),\n\n/***/ 5021:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __webpack_require__(260);\nvar toLength = __webpack_require__(7466);\nvar toAbsoluteIndex = __webpack_require__(1400);\nvar speciesConstructor = __webpack_require__(6707);\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.subarray` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.subarray\nexportTypedArrayMethod('subarray', function subarray(begin, end) {\n  var O = aTypedArray(this);\n  var length = O.length;\n  var beginIndex = toAbsoluteIndex(begin, length);\n  return new (speciesConstructor(O, O.constructor))(\n    O.buffer,\n    O.byteOffset + beginIndex * O.BYTES_PER_ELEMENT,\n    toLength((end === undefined ? length : toAbsoluteIndex(end, length)) - beginIndex)\n  );\n});\n\n\n/***/ }),\n\n/***/ 2974:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar global = __webpack_require__(7854);\nvar ArrayBufferViewCore = __webpack_require__(260);\nvar fails = __webpack_require__(7293);\n\nvar Int8Array = global.Int8Array;\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar $toLocaleString = [].toLocaleString;\nvar $slice = [].slice;\n\n// iOS Safari 6.x fails here\nvar TO_LOCALE_STRING_BUG = !!Int8Array && fails(function () {\n  $toLocaleString.call(new Int8Array(1));\n});\n\nvar FORCED = fails(function () {\n  return [1, 2].toLocaleString() != new Int8Array([1, 2]).toLocaleString();\n}) || !fails(function () {\n  Int8Array.prototype.toLocaleString.call([1, 2]);\n});\n\n// `%TypedArray%.prototype.toLocaleString` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.tolocalestring\nexportTypedArrayMethod('toLocaleString', function toLocaleString() {\n  return $toLocaleString.apply(TO_LOCALE_STRING_BUG ? $slice.call(aTypedArray(this)) : aTypedArray(this), arguments);\n}, FORCED);\n\n\n/***/ }),\n\n/***/ 5016:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar exportTypedArrayMethod = __webpack_require__(260).exportTypedArrayMethod;\nvar fails = __webpack_require__(7293);\nvar global = __webpack_require__(7854);\n\nvar Uint8Array = global.Uint8Array;\nvar Uint8ArrayPrototype = Uint8Array && Uint8Array.prototype || {};\nvar arrayToString = [].toString;\nvar arrayJoin = [].join;\n\nif (fails(function () { arrayToString.call({}); })) {\n  arrayToString = function toString() {\n    return arrayJoin.call(this);\n  };\n}\n\nvar IS_NOT_ARRAY_METHOD = Uint8ArrayPrototype.toString != arrayToString;\n\n// `%TypedArray%.prototype.toString` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.tostring\nexportTypedArrayMethod('toString', arrayToString, IS_NOT_ARRAY_METHOD);\n\n\n/***/ }),\n\n/***/ 2472:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\nvar createTypedArrayConstructor = __webpack_require__(9843);\n\n// `Uint8Array` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Uint8', function (init) {\n  return function Uint8Array(data, byteOffset, length) {\n    return init(this, data, byteOffset, length);\n  };\n});\n\n\n/***/ }),\n\n/***/ 4747:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\nvar global = __webpack_require__(7854);\nvar DOMIterables = __webpack_require__(8324);\nvar forEach = __webpack_require__(8533);\nvar createNonEnumerableProperty = __webpack_require__(8880);\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\n\n/***/ }),\n\n/***/ 3948:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\nvar global = __webpack_require__(7854);\nvar DOMIterables = __webpack_require__(8324);\nvar ArrayIteratorMethods = __webpack_require__(6992);\nvar createNonEnumerableProperty = __webpack_require__(8880);\nvar wellKnownSymbol = __webpack_require__(5112);\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\n\n/***/ }),\n\n/***/ 1637:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\n// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`\n__webpack_require__(6992);\nvar $ = __webpack_require__(2109);\nvar getBuiltIn = __webpack_require__(5005);\nvar USE_NATIVE_URL = __webpack_require__(590);\nvar redefine = __webpack_require__(1320);\nvar redefineAll = __webpack_require__(2248);\nvar setToStringTag = __webpack_require__(8003);\nvar createIteratorConstructor = __webpack_require__(4994);\nvar InternalStateModule = __webpack_require__(9909);\nvar anInstance = __webpack_require__(5787);\nvar hasOwn = __webpack_require__(6656);\nvar bind = __webpack_require__(9974);\nvar classof = __webpack_require__(648);\nvar anObject = __webpack_require__(9670);\nvar isObject = __webpack_require__(111);\nvar create = __webpack_require__(30);\nvar createPropertyDescriptor = __webpack_require__(9114);\nvar getIterator = __webpack_require__(8554);\nvar getIteratorMethod = __webpack_require__(1246);\nvar wellKnownSymbol = __webpack_require__(5112);\n\nvar $fetch = getBuiltIn('fetch');\nvar Headers = getBuiltIn('Headers');\nvar ITERATOR = wellKnownSymbol('iterator');\nvar URL_SEARCH_PARAMS = 'URLSearchParams';\nvar URL_SEARCH_PARAMS_ITERATOR = URL_SEARCH_PARAMS + 'Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalParamsState = InternalStateModule.getterFor(URL_SEARCH_PARAMS);\nvar getInternalIteratorState = InternalStateModule.getterFor(URL_SEARCH_PARAMS_ITERATOR);\n\nvar plus = /\\+/g;\nvar sequences = Array(4);\n\nvar percentSequence = function (bytes) {\n  return sequences[bytes - 1] || (sequences[bytes - 1] = RegExp('((?:%[\\\\da-f]{2}){' + bytes + '})', 'gi'));\n};\n\nvar percentDecode = function (sequence) {\n  try {\n    return decodeURIComponent(sequence);\n  } catch (error) {\n    return sequence;\n  }\n};\n\nvar deserialize = function (it) {\n  var result = it.replace(plus, ' ');\n  var bytes = 4;\n  try {\n    return decodeURIComponent(result);\n  } catch (error) {\n    while (bytes) {\n      result = result.replace(percentSequence(bytes--), percentDecode);\n    }\n    return result;\n  }\n};\n\nvar find = /[!'()~]|%20/g;\n\nvar replace = {\n  '!': '%21',\n  \"'\": '%27',\n  '(': '%28',\n  ')': '%29',\n  '~': '%7E',\n  '%20': '+'\n};\n\nvar replacer = function (match) {\n  return replace[match];\n};\n\nvar serialize = function (it) {\n  return encodeURIComponent(it).replace(find, replacer);\n};\n\nvar parseSearchParams = function (result, query) {\n  if (query) {\n    var attributes = query.split('&');\n    var index = 0;\n    var attribute, entry;\n    while (index < attributes.length) {\n      attribute = attributes[index++];\n      if (attribute.length) {\n        entry = attribute.split('=');\n        result.push({\n          key: deserialize(entry.shift()),\n          value: deserialize(entry.join('='))\n        });\n      }\n    }\n  }\n};\n\nvar updateSearchParams = function (query) {\n  this.entries.length = 0;\n  parseSearchParams(this.entries, query);\n};\n\nvar validateArgumentsLength = function (passed, required) {\n  if (passed < required) throw TypeError('Not enough arguments');\n};\n\nvar URLSearchParamsIterator = createIteratorConstructor(function Iterator(params, kind) {\n  setInternalState(this, {\n    type: URL_SEARCH_PARAMS_ITERATOR,\n    iterator: getIterator(getInternalParamsState(params).entries),\n    kind: kind\n  });\n}, 'Iterator', function next() {\n  var state = getInternalIteratorState(this);\n  var kind = state.kind;\n  var step = state.iterator.next();\n  var entry = step.value;\n  if (!step.done) {\n    step.value = kind === 'keys' ? entry.key : kind === 'values' ? entry.value : [entry.key, entry.value];\n  } return step;\n});\n\n// `URLSearchParams` constructor\n// https://url.spec.whatwg.org/#interface-urlsearchparams\nvar URLSearchParamsConstructor = function URLSearchParams(/* init */) {\n  anInstance(this, URLSearchParamsConstructor, URL_SEARCH_PARAMS);\n  var init = arguments.length > 0 ? arguments[0] : undefined;\n  var that = this;\n  var entries = [];\n  var iteratorMethod, iterator, next, step, entryIterator, entryNext, first, second, key;\n\n  setInternalState(that, {\n    type: URL_SEARCH_PARAMS,\n    entries: entries,\n    updateURL: function () { /* empty */ },\n    updateSearchParams: updateSearchParams\n  });\n\n  if (init !== undefined) {\n    if (isObject(init)) {\n      iteratorMethod = getIteratorMethod(init);\n      if (typeof iteratorMethod === 'function') {\n        iterator = iteratorMethod.call(init);\n        next = iterator.next;\n        while (!(step = next.call(iterator)).done) {\n          entryIterator = getIterator(anObject(step.value));\n          entryNext = entryIterator.next;\n          if (\n            (first = entryNext.call(entryIterator)).done ||\n            (second = entryNext.call(entryIterator)).done ||\n            !entryNext.call(entryIterator).done\n          ) throw TypeError('Expected sequence with length 2');\n          entries.push({ key: first.value + '', value: second.value + '' });\n        }\n      } else for (key in init) if (hasOwn(init, key)) entries.push({ key: key, value: init[key] + '' });\n    } else {\n      parseSearchParams(entries, typeof init === 'string' ? init.charAt(0) === '?' ? init.slice(1) : init : init + '');\n    }\n  }\n};\n\nvar URLSearchParamsPrototype = URLSearchParamsConstructor.prototype;\n\nredefineAll(URLSearchParamsPrototype, {\n  // `URLSearchParams.prototype.append` method\n  // https://url.spec.whatwg.org/#dom-urlsearchparams-append\n  append: function append(name, value) {\n    validateArgumentsLength(arguments.length, 2);\n    var state = getInternalParamsState(this);\n    state.entries.push({ key: name + '', value: value + '' });\n    state.updateURL();\n  },\n  // `URLSearchParams.prototype.delete` method\n  // https://url.spec.whatwg.org/#dom-urlsearchparams-delete\n  'delete': function (name) {\n    validateArgumentsLength(arguments.length, 1);\n    var state = getInternalParamsState(this);\n    var entries = state.entries;\n    var key = name + '';\n    var index = 0;\n    while (index < entries.length) {\n      if (entries[index].key === key) entries.splice(index, 1);\n      else index++;\n    }\n    state.updateURL();\n  },\n  // `URLSearchParams.prototype.get` method\n  // https://url.spec.whatwg.org/#dom-urlsearchparams-get\n  get: function get(name) {\n    validateArgumentsLength(arguments.length, 1);\n    var entries = getInternalParamsState(this).entries;\n    var key = name + '';\n    var index = 0;\n    for (; index < entries.length; index++) {\n      if (entries[index].key === key) return entries[index].value;\n    }\n    return null;\n  },\n  // `URLSearchParams.prototype.getAll` method\n  // https://url.spec.whatwg.org/#dom-urlsearchparams-getall\n  getAll: function getAll(name) {\n    validateArgumentsLength(arguments.length, 1);\n    var entries = getInternalParamsState(this).entries;\n    var key = name + '';\n    var result = [];\n    var index = 0;\n    for (; index < entries.length; index++) {\n      if (entries[index].key === key) result.push(entries[index].value);\n    }\n    return result;\n  },\n  // `URLSearchParams.prototype.has` method\n  // https://url.spec.whatwg.org/#dom-urlsearchparams-has\n  has: function has(name) {\n    validateArgumentsLength(arguments.length, 1);\n    var entries = getInternalParamsState(this).entries;\n    var key = name + '';\n    var index = 0;\n    while (index < entries.length) {\n      if (entries[index++].key === key) return true;\n    }\n    return false;\n  },\n  // `URLSearchParams.prototype.set` method\n  // https://url.spec.whatwg.org/#dom-urlsearchparams-set\n  set: function set(name, value) {\n    validateArgumentsLength(arguments.length, 1);\n    var state = getInternalParamsState(this);\n    var entries = state.entries;\n    var found = false;\n    var key = name + '';\n    var val = value + '';\n    var index = 0;\n    var entry;\n    for (; index < entries.length; index++) {\n      entry = entries[index];\n      if (entry.key === key) {\n        if (found) entries.splice(index--, 1);\n        else {\n          found = true;\n          entry.value = val;\n        }\n      }\n    }\n    if (!found) entries.push({ key: key, value: val });\n    state.updateURL();\n  },\n  // `URLSearchParams.prototype.sort` method\n  // https://url.spec.whatwg.org/#dom-urlsearchparams-sort\n  sort: function sort() {\n    var state = getInternalParamsState(this);\n    var entries = state.entries;\n    // Array#sort is not stable in some engines\n    var slice = entries.slice();\n    var entry, entriesIndex, sliceIndex;\n    entries.length = 0;\n    for (sliceIndex = 0; sliceIndex < slice.length; sliceIndex++) {\n      entry = slice[sliceIndex];\n      for (entriesIndex = 0; entriesIndex < sliceIndex; entriesIndex++) {\n        if (entries[entriesIndex].key > entry.key) {\n          entries.splice(entriesIndex, 0, entry);\n          break;\n        }\n      }\n      if (entriesIndex === sliceIndex) entries.push(entry);\n    }\n    state.updateURL();\n  },\n  // `URLSearchParams.prototype.forEach` method\n  forEach: function forEach(callback /* , thisArg */) {\n    var entries = getInternalParamsState(this).entries;\n    var boundFunction = bind(callback, arguments.length > 1 ? arguments[1] : undefined, 3);\n    var index = 0;\n    var entry;\n    while (index < entries.length) {\n      entry = entries[index++];\n      boundFunction(entry.value, entry.key, this);\n    }\n  },\n  // `URLSearchParams.prototype.keys` method\n  keys: function keys() {\n    return new URLSearchParamsIterator(this, 'keys');\n  },\n  // `URLSearchParams.prototype.values` method\n  values: function values() {\n    return new URLSearchParamsIterator(this, 'values');\n  },\n  // `URLSearchParams.prototype.entries` method\n  entries: function entries() {\n    return new URLSearchParamsIterator(this, 'entries');\n  }\n}, { enumerable: true });\n\n// `URLSearchParams.prototype[@@iterator]` method\nredefine(URLSearchParamsPrototype, ITERATOR, URLSearchParamsPrototype.entries);\n\n// `URLSearchParams.prototype.toString` method\n// https://url.spec.whatwg.org/#urlsearchparams-stringification-behavior\nredefine(URLSearchParamsPrototype, 'toString', function toString() {\n  var entries = getInternalParamsState(this).entries;\n  var result = [];\n  var index = 0;\n  var entry;\n  while (index < entries.length) {\n    entry = entries[index++];\n    result.push(serialize(entry.key) + '=' + serialize(entry.value));\n  } return result.join('&');\n}, { enumerable: true });\n\nsetToStringTag(URLSearchParamsConstructor, URL_SEARCH_PARAMS);\n\n$({ global: true, forced: !USE_NATIVE_URL }, {\n  URLSearchParams: URLSearchParamsConstructor\n});\n\n// Wrap `fetch` for correct work with polyfilled `URLSearchParams`\n// https://github.com/zloirock/core-js/issues/674\nif (!USE_NATIVE_URL && typeof $fetch == 'function' && typeof Headers == 'function') {\n  $({ global: true, enumerable: true, forced: true }, {\n    fetch: function fetch(input /* , init */) {\n      var args = [input];\n      var init, body, headers;\n      if (arguments.length > 1) {\n        init = arguments[1];\n        if (isObject(init)) {\n          body = init.body;\n          if (classof(body) === URL_SEARCH_PARAMS) {\n            headers = init.headers ? new Headers(init.headers) : new Headers();\n            if (!headers.has('content-type')) {\n              headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n            }\n            init = create(init, {\n              body: createPropertyDescriptor(0, String(body)),\n              headers: createPropertyDescriptor(0, headers)\n            });\n          }\n        }\n        args.push(init);\n      } return $fetch.apply(this, args);\n    }\n  });\n}\n\nmodule.exports = {\n  URLSearchParams: URLSearchParamsConstructor,\n  getState: getInternalParamsState\n};\n\n\n/***/ }),\n\n/***/ 285:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\n// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`\n__webpack_require__(8783);\nvar $ = __webpack_require__(2109);\nvar DESCRIPTORS = __webpack_require__(9781);\nvar USE_NATIVE_URL = __webpack_require__(590);\nvar global = __webpack_require__(7854);\nvar defineProperties = __webpack_require__(6048);\nvar redefine = __webpack_require__(1320);\nvar anInstance = __webpack_require__(5787);\nvar has = __webpack_require__(6656);\nvar assign = __webpack_require__(1574);\nvar arrayFrom = __webpack_require__(8457);\nvar codeAt = __webpack_require__(8710).codeAt;\nvar toASCII = __webpack_require__(3197);\nvar setToStringTag = __webpack_require__(8003);\nvar URLSearchParamsModule = __webpack_require__(1637);\nvar InternalStateModule = __webpack_require__(9909);\n\nvar NativeURL = global.URL;\nvar URLSearchParams = URLSearchParamsModule.URLSearchParams;\nvar getInternalSearchParamsState = URLSearchParamsModule.getState;\nvar setInternalState = InternalStateModule.set;\nvar getInternalURLState = InternalStateModule.getterFor('URL');\nvar floor = Math.floor;\nvar pow = Math.pow;\n\nvar INVALID_AUTHORITY = 'Invalid authority';\nvar INVALID_SCHEME = 'Invalid scheme';\nvar INVALID_HOST = 'Invalid host';\nvar INVALID_PORT = 'Invalid port';\n\nvar ALPHA = /[A-Za-z]/;\nvar ALPHANUMERIC = /[\\d+-.A-Za-z]/;\nvar DIGIT = /\\d/;\nvar HEX_START = /^(0x|0X)/;\nvar OCT = /^[0-7]+$/;\nvar DEC = /^\\d+$/;\nvar HEX = /^[\\dA-Fa-f]+$/;\n/* eslint-disable no-control-regex -- safe */\nvar FORBIDDEN_HOST_CODE_POINT = /[\\u0000\\t\\u000A\\u000D #%/:?@[\\\\]]/;\nvar FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT = /[\\u0000\\t\\u000A\\u000D #/:?@[\\\\]]/;\nvar LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE = /^[\\u0000-\\u001F ]+|[\\u0000-\\u001F ]+$/g;\nvar TAB_AND_NEW_LINE = /[\\t\\u000A\\u000D]/g;\n/* eslint-enable no-control-regex -- safe */\nvar EOF;\n\nvar parseHost = function (url, input) {\n  var result, codePoints, index;\n  if (input.charAt(0) == '[') {\n    if (input.charAt(input.length - 1) != ']') return INVALID_HOST;\n    result = parseIPv6(input.slice(1, -1));\n    if (!result) return INVALID_HOST;\n    url.host = result;\n  // opaque host\n  } else if (!isSpecial(url)) {\n    if (FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT.test(input)) return INVALID_HOST;\n    result = '';\n    codePoints = arrayFrom(input);\n    for (index = 0; index < codePoints.length; index++) {\n      result += percentEncode(codePoints[index], C0ControlPercentEncodeSet);\n    }\n    url.host = result;\n  } else {\n    input = toASCII(input);\n    if (FORBIDDEN_HOST_CODE_POINT.test(input)) return INVALID_HOST;\n    result = parseIPv4(input);\n    if (result === null) return INVALID_HOST;\n    url.host = result;\n  }\n};\n\nvar parseIPv4 = function (input) {\n  var parts = input.split('.');\n  var partsLength, numbers, index, part, radix, number, ipv4;\n  if (parts.length && parts[parts.length - 1] == '') {\n    parts.pop();\n  }\n  partsLength = parts.length;\n  if (partsLength > 4) return input;\n  numbers = [];\n  for (index = 0; index < partsLength; index++) {\n    part = parts[index];\n    if (part == '') return input;\n    radix = 10;\n    if (part.length > 1 && part.charAt(0) == '0') {\n      radix = HEX_START.test(part) ? 16 : 8;\n      part = part.slice(radix == 8 ? 1 : 2);\n    }\n    if (part === '') {\n      number = 0;\n    } else {\n      if (!(radix == 10 ? DEC : radix == 8 ? OCT : HEX).test(part)) return input;\n      number = parseInt(part, radix);\n    }\n    numbers.push(number);\n  }\n  for (index = 0; index < partsLength; index++) {\n    number = numbers[index];\n    if (index == partsLength - 1) {\n      if (number >= pow(256, 5 - partsLength)) return null;\n    } else if (number > 255) return null;\n  }\n  ipv4 = numbers.pop();\n  for (index = 0; index < numbers.length; index++) {\n    ipv4 += numbers[index] * pow(256, 3 - index);\n  }\n  return ipv4;\n};\n\n// eslint-disable-next-line max-statements -- TODO\nvar parseIPv6 = function (input) {\n  var address = [0, 0, 0, 0, 0, 0, 0, 0];\n  var pieceIndex = 0;\n  var compress = null;\n  var pointer = 0;\n  var value, length, numbersSeen, ipv4Piece, number, swaps, swap;\n\n  var char = function () {\n    return input.charAt(pointer);\n  };\n\n  if (char() == ':') {\n    if (input.charAt(1) != ':') return;\n    pointer += 2;\n    pieceIndex++;\n    compress = pieceIndex;\n  }\n  while (char()) {\n    if (pieceIndex == 8) return;\n    if (char() == ':') {\n      if (compress !== null) return;\n      pointer++;\n      pieceIndex++;\n      compress = pieceIndex;\n      continue;\n    }\n    value = length = 0;\n    while (length < 4 && HEX.test(char())) {\n      value = value * 16 + parseInt(char(), 16);\n      pointer++;\n      length++;\n    }\n    if (char() == '.') {\n      if (length == 0) return;\n      pointer -= length;\n      if (pieceIndex > 6) return;\n      numbersSeen = 0;\n      while (char()) {\n        ipv4Piece = null;\n        if (numbersSeen > 0) {\n          if (char() == '.' && numbersSeen < 4) pointer++;\n          else return;\n        }\n        if (!DIGIT.test(char())) return;\n        while (DIGIT.test(char())) {\n          number = parseInt(char(), 10);\n          if (ipv4Piece === null) ipv4Piece = number;\n          else if (ipv4Piece == 0) return;\n          else ipv4Piece = ipv4Piece * 10 + number;\n          if (ipv4Piece > 255) return;\n          pointer++;\n        }\n        address[pieceIndex] = address[pieceIndex] * 256 + ipv4Piece;\n        numbersSeen++;\n        if (numbersSeen == 2 || numbersSeen == 4) pieceIndex++;\n      }\n      if (numbersSeen != 4) return;\n      break;\n    } else if (char() == ':') {\n      pointer++;\n      if (!char()) return;\n    } else if (char()) return;\n    address[pieceIndex++] = value;\n  }\n  if (compress !== null) {\n    swaps = pieceIndex - compress;\n    pieceIndex = 7;\n    while (pieceIndex != 0 && swaps > 0) {\n      swap = address[pieceIndex];\n      address[pieceIndex--] = address[compress + swaps - 1];\n      address[compress + --swaps] = swap;\n    }\n  } else if (pieceIndex != 8) return;\n  return address;\n};\n\nvar findLongestZeroSequence = function (ipv6) {\n  var maxIndex = null;\n  var maxLength = 1;\n  var currStart = null;\n  var currLength = 0;\n  var index = 0;\n  for (; index < 8; index++) {\n    if (ipv6[index] !== 0) {\n      if (currLength > maxLength) {\n        maxIndex = currStart;\n        maxLength = currLength;\n      }\n      currStart = null;\n      currLength = 0;\n    } else {\n      if (currStart === null) currStart = index;\n      ++currLength;\n    }\n  }\n  if (currLength > maxLength) {\n    maxIndex = currStart;\n    maxLength = currLength;\n  }\n  return maxIndex;\n};\n\nvar serializeHost = function (host) {\n  var result, index, compress, ignore0;\n  // ipv4\n  if (typeof host == 'number') {\n    result = [];\n    for (index = 0; index < 4; index++) {\n      result.unshift(host % 256);\n      host = floor(host / 256);\n    } return result.join('.');\n  // ipv6\n  } else if (typeof host == 'object') {\n    result = '';\n    compress = findLongestZeroSequence(host);\n    for (index = 0; index < 8; index++) {\n      if (ignore0 && host[index] === 0) continue;\n      if (ignore0) ignore0 = false;\n      if (compress === index) {\n        result += index ? ':' : '::';\n        ignore0 = true;\n      } else {\n        result += host[index].toString(16);\n        if (index < 7) result += ':';\n      }\n    }\n    return '[' + result + ']';\n  } return host;\n};\n\nvar C0ControlPercentEncodeSet = {};\nvar fragmentPercentEncodeSet = assign({}, C0ControlPercentEncodeSet, {\n  ' ': 1, '\"': 1, '<': 1, '>': 1, '`': 1\n});\nvar pathPercentEncodeSet = assign({}, fragmentPercentEncodeSet, {\n  '#': 1, '?': 1, '{': 1, '}': 1\n});\nvar userinfoPercentEncodeSet = assign({}, pathPercentEncodeSet, {\n  '/': 1, ':': 1, ';': 1, '=': 1, '@': 1, '[': 1, '\\\\': 1, ']': 1, '^': 1, '|': 1\n});\n\nvar percentEncode = function (char, set) {\n  var code = codeAt(char, 0);\n  return code > 0x20 && code < 0x7F && !has(set, char) ? char : encodeURIComponent(char);\n};\n\nvar specialSchemes = {\n  ftp: 21,\n  file: null,\n  http: 80,\n  https: 443,\n  ws: 80,\n  wss: 443\n};\n\nvar isSpecial = function (url) {\n  return has(specialSchemes, url.scheme);\n};\n\nvar includesCredentials = function (url) {\n  return url.username != '' || url.password != '';\n};\n\nvar cannotHaveUsernamePasswordPort = function (url) {\n  return !url.host || url.cannotBeABaseURL || url.scheme == 'file';\n};\n\nvar isWindowsDriveLetter = function (string, normalized) {\n  var second;\n  return string.length == 2 && ALPHA.test(string.charAt(0))\n    && ((second = string.charAt(1)) == ':' || (!normalized && second == '|'));\n};\n\nvar startsWithWindowsDriveLetter = function (string) {\n  var third;\n  return string.length > 1 && isWindowsDriveLetter(string.slice(0, 2)) && (\n    string.length == 2 ||\n    ((third = string.charAt(2)) === '/' || third === '\\\\' || third === '?' || third === '#')\n  );\n};\n\nvar shortenURLsPath = function (url) {\n  var path = url.path;\n  var pathSize = path.length;\n  if (pathSize && (url.scheme != 'file' || pathSize != 1 || !isWindowsDriveLetter(path[0], true))) {\n    path.pop();\n  }\n};\n\nvar isSingleDot = function (segment) {\n  return segment === '.' || segment.toLowerCase() === '%2e';\n};\n\nvar isDoubleDot = function (segment) {\n  segment = segment.toLowerCase();\n  return segment === '..' || segment === '%2e.' || segment === '.%2e' || segment === '%2e%2e';\n};\n\n// States:\nvar SCHEME_START = {};\nvar SCHEME = {};\nvar NO_SCHEME = {};\nvar SPECIAL_RELATIVE_OR_AUTHORITY = {};\nvar PATH_OR_AUTHORITY = {};\nvar RELATIVE = {};\nvar RELATIVE_SLASH = {};\nvar SPECIAL_AUTHORITY_SLASHES = {};\nvar SPECIAL_AUTHORITY_IGNORE_SLASHES = {};\nvar AUTHORITY = {};\nvar HOST = {};\nvar HOSTNAME = {};\nvar PORT = {};\nvar FILE = {};\nvar FILE_SLASH = {};\nvar FILE_HOST = {};\nvar PATH_START = {};\nvar PATH = {};\nvar CANNOT_BE_A_BASE_URL_PATH = {};\nvar QUERY = {};\nvar FRAGMENT = {};\n\n// eslint-disable-next-line max-statements -- TODO\nvar parseURL = function (url, input, stateOverride, base) {\n  var state = stateOverride || SCHEME_START;\n  var pointer = 0;\n  var buffer = '';\n  var seenAt = false;\n  var seenBracket = false;\n  var seenPasswordToken = false;\n  var codePoints, char, bufferCodePoints, failure;\n\n  if (!stateOverride) {\n    url.scheme = '';\n    url.username = '';\n    url.password = '';\n    url.host = null;\n    url.port = null;\n    url.path = [];\n    url.query = null;\n    url.fragment = null;\n    url.cannotBeABaseURL = false;\n    input = input.replace(LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE, '');\n  }\n\n  input = input.replace(TAB_AND_NEW_LINE, '');\n\n  codePoints = arrayFrom(input);\n\n  while (pointer <= codePoints.length) {\n    char = codePoints[pointer];\n    switch (state) {\n      case SCHEME_START:\n        if (char && ALPHA.test(char)) {\n          buffer += char.toLowerCase();\n          state = SCHEME;\n        } else if (!stateOverride) {\n          state = NO_SCHEME;\n          continue;\n        } else return INVALID_SCHEME;\n        break;\n\n      case SCHEME:\n        if (char && (ALPHANUMERIC.test(char) || char == '+' || char == '-' || char == '.')) {\n          buffer += char.toLowerCase();\n        } else if (char == ':') {\n          if (stateOverride && (\n            (isSpecial(url) != has(specialSchemes, buffer)) ||\n            (buffer == 'file' && (includesCredentials(url) || url.port !== null)) ||\n            (url.scheme == 'file' && !url.host)\n          )) return;\n          url.scheme = buffer;\n          if (stateOverride) {\n            if (isSpecial(url) && specialSchemes[url.scheme] == url.port) url.port = null;\n            return;\n          }\n          buffer = '';\n          if (url.scheme == 'file') {\n            state = FILE;\n          } else if (isSpecial(url) && base && base.scheme == url.scheme) {\n            state = SPECIAL_RELATIVE_OR_AUTHORITY;\n          } else if (isSpecial(url)) {\n            state = SPECIAL_AUTHORITY_SLASHES;\n          } else if (codePoints[pointer + 1] == '/') {\n            state = PATH_OR_AUTHORITY;\n            pointer++;\n          } else {\n            url.cannotBeABaseURL = true;\n            url.path.push('');\n            state = CANNOT_BE_A_BASE_URL_PATH;\n          }\n        } else if (!stateOverride) {\n          buffer = '';\n          state = NO_SCHEME;\n          pointer = 0;\n          continue;\n        } else return INVALID_SCHEME;\n        break;\n\n      case NO_SCHEME:\n        if (!base || (base.cannotBeABaseURL && char != '#')) return INVALID_SCHEME;\n        if (base.cannotBeABaseURL && char == '#') {\n          url.scheme = base.scheme;\n          url.path = base.path.slice();\n          url.query = base.query;\n          url.fragment = '';\n          url.cannotBeABaseURL = true;\n          state = FRAGMENT;\n          break;\n        }\n        state = base.scheme == 'file' ? FILE : RELATIVE;\n        continue;\n\n      case SPECIAL_RELATIVE_OR_AUTHORITY:\n        if (char == '/' && codePoints[pointer + 1] == '/') {\n          state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n          pointer++;\n        } else {\n          state = RELATIVE;\n          continue;\n        } break;\n\n      case PATH_OR_AUTHORITY:\n        if (char == '/') {\n          state = AUTHORITY;\n          break;\n        } else {\n          state = PATH;\n          continue;\n        }\n\n      case RELATIVE:\n        url.scheme = base.scheme;\n        if (char == EOF) {\n          url.username = base.username;\n          url.password = base.password;\n          url.host = base.host;\n          url.port = base.port;\n          url.path = base.path.slice();\n          url.query = base.query;\n        } else if (char == '/' || (char == '\\\\' && isSpecial(url))) {\n          state = RELATIVE_SLASH;\n        } else if (char == '?') {\n          url.username = base.username;\n          url.password = base.password;\n          url.host = base.host;\n          url.port = base.port;\n          url.path = base.path.slice();\n          url.query = '';\n          state = QUERY;\n        } else if (char == '#') {\n          url.username = base.username;\n          url.password = base.password;\n          url.host = base.host;\n          url.port = base.port;\n          url.path = base.path.slice();\n          url.query = base.query;\n          url.fragment = '';\n          state = FRAGMENT;\n        } else {\n          url.username = base.username;\n          url.password = base.password;\n          url.host = base.host;\n          url.port = base.port;\n          url.path = base.path.slice();\n          url.path.pop();\n          state = PATH;\n          continue;\n        } break;\n\n      case RELATIVE_SLASH:\n        if (isSpecial(url) && (char == '/' || char == '\\\\')) {\n          state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n        } else if (char == '/') {\n          state = AUTHORITY;\n        } else {\n          url.username = base.username;\n          url.password = base.password;\n          url.host = base.host;\n          url.port = base.port;\n          state = PATH;\n          continue;\n        } break;\n\n      case SPECIAL_AUTHORITY_SLASHES:\n        state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n        if (char != '/' || buffer.charAt(pointer + 1) != '/') continue;\n        pointer++;\n        break;\n\n      case SPECIAL_AUTHORITY_IGNORE_SLASHES:\n        if (char != '/' && char != '\\\\') {\n          state = AUTHORITY;\n          continue;\n        } break;\n\n      case AUTHORITY:\n        if (char == '@') {\n          if (seenAt) buffer = '%40' + buffer;\n          seenAt = true;\n          bufferCodePoints = arrayFrom(buffer);\n          for (var i = 0; i < bufferCodePoints.length; i++) {\n            var codePoint = bufferCodePoints[i];\n            if (codePoint == ':' && !seenPasswordToken) {\n              seenPasswordToken = true;\n              continue;\n            }\n            var encodedCodePoints = percentEncode(codePoint, userinfoPercentEncodeSet);\n            if (seenPasswordToken) url.password += encodedCodePoints;\n            else url.username += encodedCodePoints;\n          }\n          buffer = '';\n        } else if (\n          char == EOF || char == '/' || char == '?' || char == '#' ||\n          (char == '\\\\' && isSpecial(url))\n        ) {\n          if (seenAt && buffer == '') return INVALID_AUTHORITY;\n          pointer -= arrayFrom(buffer).length + 1;\n          buffer = '';\n          state = HOST;\n        } else buffer += char;\n        break;\n\n      case HOST:\n      case HOSTNAME:\n        if (stateOverride && url.scheme == 'file') {\n          state = FILE_HOST;\n          continue;\n        } else if (char == ':' && !seenBracket) {\n          if (buffer == '') return INVALID_HOST;\n          failure = parseHost(url, buffer);\n          if (failure) return failure;\n          buffer = '';\n          state = PORT;\n          if (stateOverride == HOSTNAME) return;\n        } else if (\n          char == EOF || char == '/' || char == '?' || char == '#' ||\n          (char == '\\\\' && isSpecial(url))\n        ) {\n          if (isSpecial(url) && buffer == '') return INVALID_HOST;\n          if (stateOverride && buffer == '' && (includesCredentials(url) || url.port !== null)) return;\n          failure = parseHost(url, buffer);\n          if (failure) return failure;\n          buffer = '';\n          state = PATH_START;\n          if (stateOverride) return;\n          continue;\n        } else {\n          if (char == '[') seenBracket = true;\n          else if (char == ']') seenBracket = false;\n          buffer += char;\n        } break;\n\n      case PORT:\n        if (DIGIT.test(char)) {\n          buffer += char;\n        } else if (\n          char == EOF || char == '/' || char == '?' || char == '#' ||\n          (char == '\\\\' && isSpecial(url)) ||\n          stateOverride\n        ) {\n          if (buffer != '') {\n            var port = parseInt(buffer, 10);\n            if (port > 0xFFFF) return INVALID_PORT;\n            url.port = (isSpecial(url) && port === specialSchemes[url.scheme]) ? null : port;\n            buffer = '';\n          }\n          if (stateOverride) return;\n          state = PATH_START;\n          continue;\n        } else return INVALID_PORT;\n        break;\n\n      case FILE:\n        url.scheme = 'file';\n        if (char == '/' || char == '\\\\') state = FILE_SLASH;\n        else if (base && base.scheme == 'file') {\n          if (char == EOF) {\n            url.host = base.host;\n            url.path = base.path.slice();\n            url.query = base.query;\n          } else if (char == '?') {\n            url.host = base.host;\n            url.path = base.path.slice();\n            url.query = '';\n            state = QUERY;\n          } else if (char == '#') {\n            url.host = base.host;\n            url.path = base.path.slice();\n            url.query = base.query;\n            url.fragment = '';\n            state = FRAGMENT;\n          } else {\n            if (!startsWithWindowsDriveLetter(codePoints.slice(pointer).join(''))) {\n              url.host = base.host;\n              url.path = base.path.slice();\n              shortenURLsPath(url);\n            }\n            state = PATH;\n            continue;\n          }\n        } else {\n          state = PATH;\n          continue;\n        } break;\n\n      case FILE_SLASH:\n        if (char == '/' || char == '\\\\') {\n          state = FILE_HOST;\n          break;\n        }\n        if (base && base.scheme == 'file' && !startsWithWindowsDriveLetter(codePoints.slice(pointer).join(''))) {\n          if (isWindowsDriveLetter(base.path[0], true)) url.path.push(base.path[0]);\n          else url.host = base.host;\n        }\n        state = PATH;\n        continue;\n\n      case FILE_HOST:\n        if (char == EOF || char == '/' || char == '\\\\' || char == '?' || char == '#') {\n          if (!stateOverride && isWindowsDriveLetter(buffer)) {\n            state = PATH;\n          } else if (buffer == '') {\n            url.host = '';\n            if (stateOverride) return;\n            state = PATH_START;\n          } else {\n            failure = parseHost(url, buffer);\n            if (failure) return failure;\n            if (url.host == 'localhost') url.host = '';\n            if (stateOverride) return;\n            buffer = '';\n            state = PATH_START;\n          } continue;\n        } else buffer += char;\n        break;\n\n      case PATH_START:\n        if (isSpecial(url)) {\n          state = PATH;\n          if (char != '/' && char != '\\\\') continue;\n        } else if (!stateOverride && char == '?') {\n          url.query = '';\n          state = QUERY;\n        } else if (!stateOverride && char == '#') {\n          url.fragment = '';\n          state = FRAGMENT;\n        } else if (char != EOF) {\n          state = PATH;\n          if (char != '/') continue;\n        } break;\n\n      case PATH:\n        if (\n          char == EOF || char == '/' ||\n          (char == '\\\\' && isSpecial(url)) ||\n          (!stateOverride && (char == '?' || char == '#'))\n        ) {\n          if (isDoubleDot(buffer)) {\n            shortenURLsPath(url);\n            if (char != '/' && !(char == '\\\\' && isSpecial(url))) {\n              url.path.push('');\n            }\n          } else if (isSingleDot(buffer)) {\n            if (char != '/' && !(char == '\\\\' && isSpecial(url))) {\n              url.path.push('');\n            }\n          } else {\n            if (url.scheme == 'file' && !url.path.length && isWindowsDriveLetter(buffer)) {\n              if (url.host) url.host = '';\n              buffer = buffer.charAt(0) + ':'; // normalize windows drive letter\n            }\n            url.path.push(buffer);\n          }\n          buffer = '';\n          if (url.scheme == 'file' && (char == EOF || char == '?' || char == '#')) {\n            while (url.path.length > 1 && url.path[0] === '') {\n              url.path.shift();\n            }\n          }\n          if (char == '?') {\n            url.query = '';\n            state = QUERY;\n          } else if (char == '#') {\n            url.fragment = '';\n            state = FRAGMENT;\n          }\n        } else {\n          buffer += percentEncode(char, pathPercentEncodeSet);\n        } break;\n\n      case CANNOT_BE_A_BASE_URL_PATH:\n        if (char == '?') {\n          url.query = '';\n          state = QUERY;\n        } else if (char == '#') {\n          url.fragment = '';\n          state = FRAGMENT;\n        } else if (char != EOF) {\n          url.path[0] += percentEncode(char, C0ControlPercentEncodeSet);\n        } break;\n\n      case QUERY:\n        if (!stateOverride && char == '#') {\n          url.fragment = '';\n          state = FRAGMENT;\n        } else if (char != EOF) {\n          if (char == \"'\" && isSpecial(url)) url.query += '%27';\n          else if (char == '#') url.query += '%23';\n          else url.query += percentEncode(char, C0ControlPercentEncodeSet);\n        } break;\n\n      case FRAGMENT:\n        if (char != EOF) url.fragment += percentEncode(char, fragmentPercentEncodeSet);\n        break;\n    }\n\n    pointer++;\n  }\n};\n\n// `URL` constructor\n// https://url.spec.whatwg.org/#url-class\nvar URLConstructor = function URL(url /* , base */) {\n  var that = anInstance(this, URLConstructor, 'URL');\n  var base = arguments.length > 1 ? arguments[1] : undefined;\n  var urlString = String(url);\n  var state = setInternalState(that, { type: 'URL' });\n  var baseState, failure;\n  if (base !== undefined) {\n    if (base instanceof URLConstructor) baseState = getInternalURLState(base);\n    else {\n      failure = parseURL(baseState = {}, String(base));\n      if (failure) throw TypeError(failure);\n    }\n  }\n  failure = parseURL(state, urlString, null, baseState);\n  if (failure) throw TypeError(failure);\n  var searchParams = state.searchParams = new URLSearchParams();\n  var searchParamsState = getInternalSearchParamsState(searchParams);\n  searchParamsState.updateSearchParams(state.query);\n  searchParamsState.updateURL = function () {\n    state.query = String(searchParams) || null;\n  };\n  if (!DESCRIPTORS) {\n    that.href = serializeURL.call(that);\n    that.origin = getOrigin.call(that);\n    that.protocol = getProtocol.call(that);\n    that.username = getUsername.call(that);\n    that.password = getPassword.call(that);\n    that.host = getHost.call(that);\n    that.hostname = getHostname.call(that);\n    that.port = getPort.call(that);\n    that.pathname = getPathname.call(that);\n    that.search = getSearch.call(that);\n    that.searchParams = getSearchParams.call(that);\n    that.hash = getHash.call(that);\n  }\n};\n\nvar URLPrototype = URLConstructor.prototype;\n\nvar serializeURL = function () {\n  var url = getInternalURLState(this);\n  var scheme = url.scheme;\n  var username = url.username;\n  var password = url.password;\n  var host = url.host;\n  var port = url.port;\n  var path = url.path;\n  var query = url.query;\n  var fragment = url.fragment;\n  var output = scheme + ':';\n  if (host !== null) {\n    output += '//';\n    if (includesCredentials(url)) {\n      output += username + (password ? ':' + password : '') + '@';\n    }\n    output += serializeHost(host);\n    if (port !== null) output += ':' + port;\n  } else if (scheme == 'file') output += '//';\n  output += url.cannotBeABaseURL ? path[0] : path.length ? '/' + path.join('/') : '';\n  if (query !== null) output += '?' + query;\n  if (fragment !== null) output += '#' + fragment;\n  return output;\n};\n\nvar getOrigin = function () {\n  var url = getInternalURLState(this);\n  var scheme = url.scheme;\n  var port = url.port;\n  if (scheme == 'blob') try {\n    return new URL(scheme.path[0]).origin;\n  } catch (error) {\n    return 'null';\n  }\n  if (scheme == 'file' || !isSpecial(url)) return 'null';\n  return scheme + '://' + serializeHost(url.host) + (port !== null ? ':' + port : '');\n};\n\nvar getProtocol = function () {\n  return getInternalURLState(this).scheme + ':';\n};\n\nvar getUsername = function () {\n  return getInternalURLState(this).username;\n};\n\nvar getPassword = function () {\n  return getInternalURLState(this).password;\n};\n\nvar getHost = function () {\n  var url = getInternalURLState(this);\n  var host = url.host;\n  var port = url.port;\n  return host === null ? ''\n    : port === null ? serializeHost(host)\n    : serializeHost(host) + ':' + port;\n};\n\nvar getHostname = function () {\n  var host = getInternalURLState(this).host;\n  return host === null ? '' : serializeHost(host);\n};\n\nvar getPort = function () {\n  var port = getInternalURLState(this).port;\n  return port === null ? '' : String(port);\n};\n\nvar getPathname = function () {\n  var url = getInternalURLState(this);\n  var path = url.path;\n  return url.cannotBeABaseURL ? path[0] : path.length ? '/' + path.join('/') : '';\n};\n\nvar getSearch = function () {\n  var query = getInternalURLState(this).query;\n  return query ? '?' + query : '';\n};\n\nvar getSearchParams = function () {\n  return getInternalURLState(this).searchParams;\n};\n\nvar getHash = function () {\n  var fragment = getInternalURLState(this).fragment;\n  return fragment ? '#' + fragment : '';\n};\n\nvar accessorDescriptor = function (getter, setter) {\n  return { get: getter, set: setter, configurable: true, enumerable: true };\n};\n\nif (DESCRIPTORS) {\n  defineProperties(URLPrototype, {\n    // `URL.prototype.href` accessors pair\n    // https://url.spec.whatwg.org/#dom-url-href\n    href: accessorDescriptor(serializeURL, function (href) {\n      var url = getInternalURLState(this);\n      var urlString = String(href);\n      var failure = parseURL(url, urlString);\n      if (failure) throw TypeError(failure);\n      getInternalSearchParamsState(url.searchParams).updateSearchParams(url.query);\n    }),\n    // `URL.prototype.origin` getter\n    // https://url.spec.whatwg.org/#dom-url-origin\n    origin: accessorDescriptor(getOrigin),\n    // `URL.prototype.protocol` accessors pair\n    // https://url.spec.whatwg.org/#dom-url-protocol\n    protocol: accessorDescriptor(getProtocol, function (protocol) {\n      var url = getInternalURLState(this);\n      parseURL(url, String(protocol) + ':', SCHEME_START);\n    }),\n    // `URL.prototype.username` accessors pair\n    // https://url.spec.whatwg.org/#dom-url-username\n    username: accessorDescriptor(getUsername, function (username) {\n      var url = getInternalURLState(this);\n      var codePoints = arrayFrom(String(username));\n      if (cannotHaveUsernamePasswordPort(url)) return;\n      url.username = '';\n      for (var i = 0; i < codePoints.length; i++) {\n        url.username += percentEncode(codePoints[i], userinfoPercentEncodeSet);\n      }\n    }),\n    // `URL.prototype.password` accessors pair\n    // https://url.spec.whatwg.org/#dom-url-password\n    password: accessorDescriptor(getPassword, function (password) {\n      var url = getInternalURLState(this);\n      var codePoints = arrayFrom(String(password));\n      if (cannotHaveUsernamePasswordPort(url)) return;\n      url.password = '';\n      for (var i = 0; i < codePoints.length; i++) {\n        url.password += percentEncode(codePoints[i], userinfoPercentEncodeSet);\n      }\n    }),\n    // `URL.prototype.host` accessors pair\n    // https://url.spec.whatwg.org/#dom-url-host\n    host: accessorDescriptor(getHost, function (host) {\n      var url = getInternalURLState(this);\n      if (url.cannotBeABaseURL) return;\n      parseURL(url, String(host), HOST);\n    }),\n    // `URL.prototype.hostname` accessors pair\n    // https://url.spec.whatwg.org/#dom-url-hostname\n    hostname: accessorDescriptor(getHostname, function (hostname) {\n      var url = getInternalURLState(this);\n      if (url.cannotBeABaseURL) return;\n      parseURL(url, String(hostname), HOSTNAME);\n    }),\n    // `URL.prototype.port` accessors pair\n    // https://url.spec.whatwg.org/#dom-url-port\n    port: accessorDescriptor(getPort, function (port) {\n      var url = getInternalURLState(this);\n      if (cannotHaveUsernamePasswordPort(url)) return;\n      port = String(port);\n      if (port == '') url.port = null;\n      else parseURL(url, port, PORT);\n    }),\n    // `URL.prototype.pathname` accessors pair\n    // https://url.spec.whatwg.org/#dom-url-pathname\n    pathname: accessorDescriptor(getPathname, function (pathname) {\n      var url = getInternalURLState(this);\n      if (url.cannotBeABaseURL) return;\n      url.path = [];\n      parseURL(url, pathname + '', PATH_START);\n    }),\n    // `URL.prototype.search` accessors pair\n    // https://url.spec.whatwg.org/#dom-url-search\n    search: accessorDescriptor(getSearch, function (search) {\n      var url = getInternalURLState(this);\n      search = String(search);\n      if (search == '') {\n        url.query = null;\n      } else {\n        if ('?' == search.charAt(0)) search = search.slice(1);\n        url.query = '';\n        parseURL(url, search, QUERY);\n      }\n      getInternalSearchParamsState(url.searchParams).updateSearchParams(url.query);\n    }),\n    // `URL.prototype.searchParams` getter\n    // https://url.spec.whatwg.org/#dom-url-searchparams\n    searchParams: accessorDescriptor(getSearchParams),\n    // `URL.prototype.hash` accessors pair\n    // https://url.spec.whatwg.org/#dom-url-hash\n    hash: accessorDescriptor(getHash, function (hash) {\n      var url = getInternalURLState(this);\n      hash = String(hash);\n      if (hash == '') {\n        url.fragment = null;\n        return;\n      }\n      if ('#' == hash.charAt(0)) hash = hash.slice(1);\n      url.fragment = '';\n      parseURL(url, hash, FRAGMENT);\n    })\n  });\n}\n\n// `URL.prototype.toJSON` method\n// https://url.spec.whatwg.org/#dom-url-tojson\nredefine(URLPrototype, 'toJSON', function toJSON() {\n  return serializeURL.call(this);\n}, { enumerable: true });\n\n// `URL.prototype.toString` method\n// https://url.spec.whatwg.org/#URL-stringification-behavior\nredefine(URLPrototype, 'toString', function toString() {\n  return serializeURL.call(this);\n}, { enumerable: true });\n\nif (NativeURL) {\n  var nativeCreateObjectURL = NativeURL.createObjectURL;\n  var nativeRevokeObjectURL = NativeURL.revokeObjectURL;\n  // `URL.createObjectURL` method\n  // https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL\n  // eslint-disable-next-line no-unused-vars -- required for `.length`\n  if (nativeCreateObjectURL) redefine(URLConstructor, 'createObjectURL', function createObjectURL(blob) {\n    return nativeCreateObjectURL.apply(NativeURL, arguments);\n  });\n  // `URL.revokeObjectURL` method\n  // https://developer.mozilla.org/en-US/docs/Web/API/URL/revokeObjectURL\n  // eslint-disable-next-line no-unused-vars -- required for `.length`\n  if (nativeRevokeObjectURL) redefine(URLConstructor, 'revokeObjectURL', function revokeObjectURL(url) {\n    return nativeRevokeObjectURL.apply(NativeURL, arguments);\n  });\n}\n\nsetToStringTag(URLConstructor, 'URL');\n\n$({ global: true, forced: !USE_NATIVE_URL, sham: !DESCRIPTORS }, {\n  URL: URLConstructor\n});\n\n\n/***/ })\n\n/******/ \t});\n/************************************************************************/\n/******/ \t// The module cache\n/******/ \tvar __webpack_module_cache__ = {};\n/******/ \t\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(__webpack_module_cache__[moduleId]) {\n/******/ \t\t\treturn __webpack_module_cache__[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t\t// no module.id needed\n/******/ \t\t\t// no module.loaded needed\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/ \t\n/******/ \t\t// Execute the module function\n/******/ \t\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n/******/ \t\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/ \t\n/************************************************************************/\n/******/ \t/* webpack/runtime/define property getters */\n/******/ \t!function() {\n/******/ \t\t// define getter functions for harmony exports\n/******/ \t\t__webpack_require__.d = function(exports, definition) {\n/******/ \t\t\tfor(var key in definition) {\n/******/ \t\t\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n/******/ \t\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/ \t\t};\n/******/ \t}();\n/******/ \t\n/******/ \t/* webpack/runtime/global */\n/******/ \t!function() {\n/******/ \t\t__webpack_require__.g = (function() {\n/******/ \t\t\tif (typeof globalThis === 'object') return globalThis;\n/******/ \t\t\ttry {\n/******/ \t\t\t\treturn this || new Function('return this')();\n/******/ \t\t\t} catch (e) {\n/******/ \t\t\t\tif (typeof window === 'object') return window;\n/******/ \t\t\t}\n/******/ \t\t})();\n/******/ \t}();\n/******/ \t\n/******/ \t/* webpack/runtime/hasOwnProperty shorthand */\n/******/ \t!function() {\n/******/ \t\t__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }\n/******/ \t}();\n/******/ \t\n/******/ \t/* webpack/runtime/make namespace object */\n/******/ \t!function() {\n/******/ \t\t// define __esModule on exports\n/******/ \t\t__webpack_require__.r = function(exports) {\n/******/ \t\t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t\t}\n/******/ \t\t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t\t};\n/******/ \t}();\n/******/ \t\n/************************************************************************/\nvar __webpack_exports__ = {};\n// This entry need to be wrapped in an IIFE because it need to be in strict mode.\n!function() {\n\"use strict\";\n// ESM COMPAT FLAG\n__webpack_require__.r(__webpack_exports__);\n\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, {\n  \"Dropzone\": function() { return /* reexport */ Dropzone; },\n  \"default\": function() { return /* binding */ dropzone_dist; }\n});\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.concat.js\nvar es_array_concat = __webpack_require__(2222);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.filter.js\nvar es_array_filter = __webpack_require__(7327);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.index-of.js\nvar es_array_index_of = __webpack_require__(2772);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.iterator.js\nvar es_array_iterator = __webpack_require__(6992);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.map.js\nvar es_array_map = __webpack_require__(1249);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.slice.js\nvar es_array_slice = __webpack_require__(7042);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.splice.js\nvar es_array_splice = __webpack_require__(561);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array-buffer.constructor.js\nvar es_array_buffer_constructor = __webpack_require__(8264);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.function.name.js\nvar es_function_name = __webpack_require__(8309);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.object.get-prototype-of.js\nvar es_object_get_prototype_of = __webpack_require__(489);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.object.to-string.js\nvar es_object_to_string = __webpack_require__(1539);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.regexp.exec.js\nvar es_regexp_exec = __webpack_require__(4916);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.regexp.to-string.js\nvar es_regexp_to_string = __webpack_require__(9714);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.string.iterator.js\nvar es_string_iterator = __webpack_require__(8783);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.string.match.js\nvar es_string_match = __webpack_require__(4723);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.string.replace.js\nvar es_string_replace = __webpack_require__(5306);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.string.split.js\nvar es_string_split = __webpack_require__(3123);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.string.trim.js\nvar es_string_trim = __webpack_require__(3210);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.uint8-array.js\nvar es_typed_array_uint8_array = __webpack_require__(2472);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.copy-within.js\nvar es_typed_array_copy_within = __webpack_require__(2990);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.every.js\nvar es_typed_array_every = __webpack_require__(8927);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.fill.js\nvar es_typed_array_fill = __webpack_require__(3105);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.filter.js\nvar es_typed_array_filter = __webpack_require__(5035);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.find.js\nvar es_typed_array_find = __webpack_require__(4345);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.find-index.js\nvar es_typed_array_find_index = __webpack_require__(7174);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.for-each.js\nvar es_typed_array_for_each = __webpack_require__(2846);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.includes.js\nvar es_typed_array_includes = __webpack_require__(4731);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.index-of.js\nvar es_typed_array_index_of = __webpack_require__(7209);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.iterator.js\nvar es_typed_array_iterator = __webpack_require__(6319);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.join.js\nvar es_typed_array_join = __webpack_require__(8867);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.last-index-of.js\nvar es_typed_array_last_index_of = __webpack_require__(7789);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.map.js\nvar es_typed_array_map = __webpack_require__(3739);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.reduce.js\nvar es_typed_array_reduce = __webpack_require__(9368);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.reduce-right.js\nvar es_typed_array_reduce_right = __webpack_require__(4483);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.reverse.js\nvar es_typed_array_reverse = __webpack_require__(2056);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.set.js\nvar es_typed_array_set = __webpack_require__(3462);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.slice.js\nvar es_typed_array_slice = __webpack_require__(678);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.some.js\nvar es_typed_array_some = __webpack_require__(7462);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.sort.js\nvar es_typed_array_sort = __webpack_require__(3824);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.subarray.js\nvar es_typed_array_subarray = __webpack_require__(5021);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.to-locale-string.js\nvar es_typed_array_to_locale_string = __webpack_require__(2974);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.to-string.js\nvar es_typed_array_to_string = __webpack_require__(5016);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/web.dom-collections.for-each.js\nvar web_dom_collections_for_each = __webpack_require__(4747);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/web.dom-collections.iterator.js\nvar web_dom_collections_iterator = __webpack_require__(3948);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/web.url.js\nvar web_url = __webpack_require__(285);\n;// CONCATENATED MODULE: ./src/emitter.js\n\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n// The Emitter class provides the ability to call `.on()` on Dropzone to listen\n// to events.\n// It is strongly based on component's emitter class, and I removed the\n// functionality because of the dependency hell with different frameworks.\nvar Emitter = /*#__PURE__*/function () {\n  function Emitter() {\n    _classCallCheck(this, Emitter);\n  }\n\n  _createClass(Emitter, [{\n    key: \"on\",\n    value: // Add an event listener for given event\n    function on(event, fn) {\n      this._callbacks = this._callbacks || {}; // Create namespace for this event\n\n      if (!this._callbacks[event]) {\n        this._callbacks[event] = [];\n      }\n\n      this._callbacks[event].push(fn);\n\n      return this;\n    }\n  }, {\n    key: \"emit\",\n    value: function emit(event) {\n      this._callbacks = this._callbacks || {};\n      var callbacks = this._callbacks[event];\n\n      for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n        args[_key - 1] = arguments[_key];\n      }\n\n      if (callbacks) {\n        var _iterator = _createForOfIteratorHelper(callbacks, true),\n            _step;\n\n        try {\n          for (_iterator.s(); !(_step = _iterator.n()).done;) {\n            var callback = _step.value;\n            callback.apply(this, args);\n          }\n        } catch (err) {\n          _iterator.e(err);\n        } finally {\n          _iterator.f();\n        }\n      } // trigger a corresponding DOM event\n\n\n      if (this.element) {\n        this.element.dispatchEvent(this.makeEvent(\"dropzone:\" + event, {\n          args: args\n        }));\n      }\n\n      return this;\n    }\n  }, {\n    key: \"makeEvent\",\n    value: function makeEvent(eventName, detail) {\n      var params = {\n        bubbles: true,\n        cancelable: true,\n        detail: detail\n      };\n\n      if (typeof window.CustomEvent === \"function\") {\n        return new CustomEvent(eventName, params);\n      } else {\n        // IE 11 support\n        // https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent/CustomEvent\n        var evt = document.createEvent(\"CustomEvent\");\n        evt.initCustomEvent(eventName, params.bubbles, params.cancelable, params.detail);\n        return evt;\n      }\n    } // Remove event listener for given event. If fn is not provided, all event\n    // listeners for that event will be removed. If neither is provided, all\n    // event listeners will be removed.\n\n  }, {\n    key: \"off\",\n    value: function off(event, fn) {\n      if (!this._callbacks || arguments.length === 0) {\n        this._callbacks = {};\n        return this;\n      } // specific event\n\n\n      var callbacks = this._callbacks[event];\n\n      if (!callbacks) {\n        return this;\n      } // remove all handlers\n\n\n      if (arguments.length === 1) {\n        delete this._callbacks[event];\n        return this;\n      } // remove specific handler\n\n\n      for (var i = 0; i < callbacks.length; i++) {\n        var callback = callbacks[i];\n\n        if (callback === fn) {\n          callbacks.splice(i, 1);\n          break;\n        }\n      }\n\n      return this;\n    }\n  }]);\n\n  return Emitter;\n}();\n\n\n;// CONCATENATED MODULE: ./src/preview-template.html\n// Module\nvar code = \"<div class=\\\"dz-preview dz-file-preview\\\"> <div class=\\\"dz-image\\\"><img data-dz-thumbnail/></div> <div class=\\\"dz-details\\\"> <div class=\\\"dz-size\\\"><span data-dz-size></span></div> <div class=\\\"dz-filename\\\"><span data-dz-name></span></div> </div> <div class=\\\"dz-progress\\\"> <span class=\\\"dz-upload\\\" data-dz-uploadprogress></span> </div> <div class=\\\"dz-error-message\\\"><span data-dz-errormessage></span></div> <div class=\\\"dz-success-mark\\\"> <svg width=\\\"54px\\\" height=\\\"54px\\\" viewBox=\\\"0 0 54 54\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\"> <title>Check</title> <g stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\"> <path d=\\\"M23.5,31.8431458 L17.5852419,25.9283877 C16.0248253,24.3679711 13.4910294,24.366835 11.9289322,25.9289322 C10.3700136,27.4878508 10.3665912,30.0234455 11.9283877,31.5852419 L20.4147581,40.0716123 C20.5133999,40.1702541 20.6159315,40.2626649 20.7218615,40.3488435 C22.2835669,41.8725651 24.794234,41.8626202 26.3461564,40.3106978 L43.3106978,23.3461564 C44.8771021,21.7797521 44.8758057,19.2483887 43.3137085,17.6862915 C41.7547899,16.1273729 39.2176035,16.1255422 37.6538436,17.6893022 L23.5,31.8431458 Z M27,53 C41.3594035,53 53,41.3594035 53,27 C53,12.6405965 41.3594035,1 27,1 C12.6405965,1 1,12.6405965 1,27 C1,41.3594035 12.6405965,53 27,53 Z\\\" stroke-opacity=\\\"0.198794158\\\" stroke=\\\"#747474\\\" fill-opacity=\\\"0.816519475\\\" fill=\\\"#FFFFFF\\\"></path> </g> </svg> </div> <div class=\\\"dz-error-mark\\\"> <svg width=\\\"54px\\\" height=\\\"54px\\\" viewBox=\\\"0 0 54 54\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\"> <title>Error</title> <g stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\"> <g stroke=\\\"#747474\\\" stroke-opacity=\\\"0.198794158\\\" fill=\\\"#FFFFFF\\\" fill-opacity=\\\"0.816519475\\\"> <path d=\\\"M32.6568542,29 L38.3106978,23.3461564 C39.8771021,21.7797521 39.8758057,19.2483887 38.3137085,17.6862915 C36.7547899,16.1273729 34.2176035,16.1255422 32.6538436,17.6893022 L27,23.3431458 L21.3461564,17.6893022 C19.7823965,16.1255422 17.2452101,16.1273729 15.6862915,17.6862915 C14.1241943,19.2483887 14.1228979,21.7797521 15.6893022,23.3461564 L21.3431458,29 L15.6893022,34.6538436 C14.1228979,36.2202479 14.1241943,38.7516113 15.6862915,40.3137085 C17.2452101,41.8726271 19.7823965,41.8744578 21.3461564,40.3106978 L27,34.6568542 L32.6538436,40.3106978 C34.2176035,41.8744578 36.7547899,41.8726271 38.3137085,40.3137085 C39.8758057,38.7516113 39.8771021,36.2202479 38.3106978,34.6538436 L32.6568542,29 Z M27,53 C41.3594035,53 53,41.3594035 53,27 C53,12.6405965 41.3594035,1 27,1 C12.6405965,1 1,12.6405965 1,27 C1,41.3594035 12.6405965,53 27,53 Z\\\"></path> </g> </g> </svg> </div> </div> \";\n// Exports\n/* harmony default export */ var preview_template = (code);\n;// CONCATENATED MODULE: ./src/options.js\n\n\n\n\n\nfunction options_createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = options_unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\n\nfunction options_unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return options_arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return options_arrayLikeToArray(o, minLen); }\n\nfunction options_arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\n\n\nvar defaultOptions = {\n  /**\n   * Has to be specified on elements other than form (or when the form\n   * doesn't have an `action` attribute). You can also\n   * provide a function that will be called with `files` and\n   * must return the url (since `v3.12.0`)\n   */\n  url: null,\n\n  /**\n   * Can be changed to `\"put\"` if necessary. You can also provide a function\n   * that will be called with `files` and must return the method (since `v3.12.0`).\n   */\n  method: \"post\",\n\n  /**\n   * Will be set on the XHRequest.\n   */\n  withCredentials: false,\n\n  /**\n   * The timeout for the XHR requests in milliseconds (since `v4.4.0`).\n   * If set to null or 0, no timeout is going to be set.\n   */\n  timeout: null,\n\n  /**\n   * How many file uploads to process in parallel (See the\n   * Enqueuing file uploads documentation section for more info)\n   */\n  parallelUploads: 2,\n\n  /**\n   * Whether to send multiple files in one request. If\n   * this it set to true, then the fallback file input element will\n   * have the `multiple` attribute as well. This option will\n   * also trigger additional events (like `processingmultiple`). See the events\n   * documentation section for more information.\n   */\n  uploadMultiple: false,\n\n  /**\n   * Whether you want files to be uploaded in chunks to your server. This can't be\n   * used in combination with `uploadMultiple`.\n   *\n   * See [chunksUploaded](#config-chunksUploaded) for the callback to finalise an upload.\n   */\n  chunking: false,\n\n  /**\n   * If `chunking` is enabled, this defines whether **every** file should be chunked,\n   * even if the file size is below chunkSize. This means, that the additional chunk\n   * form data will be submitted and the `chunksUploaded` callback will be invoked.\n   */\n  forceChunking: false,\n\n  /**\n   * If `chunking` is `true`, then this defines the chunk size in bytes.\n   */\n  chunkSize: 2000000,\n\n  /**\n   * If `true`, the individual chunks of a file are being uploaded simultaneously.\n   */\n  parallelChunkUploads: false,\n\n  /**\n   * Whether a chunk should be retried if it fails.\n   */\n  retryChunks: false,\n\n  /**\n   * If `retryChunks` is true, how many times should it be retried.\n   */\n  retryChunksLimit: 3,\n\n  /**\n   * The maximum filesize (in bytes) that is allowed to be uploaded.\n   */\n  maxFilesize: 256,\n\n  /**\n   * The name of the file param that gets transferred.\n   * **NOTE**: If you have the option  `uploadMultiple` set to `true`, then\n   * Dropzone will append `[]` to the name.\n   */\n  paramName: \"file\",\n\n  /**\n   * Whether thumbnails for images should be generated\n   */\n  createImageThumbnails: true,\n\n  /**\n   * In MB. When the filename exceeds this limit, the thumbnail will not be generated.\n   */\n  maxThumbnailFilesize: 10,\n\n  /**\n   * If `null`, the ratio of the image will be used to calculate it.\n   */\n  thumbnailWidth: 120,\n\n  /**\n   * The same as `thumbnailWidth`. If both are null, images will not be resized.\n   */\n  thumbnailHeight: 120,\n\n  /**\n   * How the images should be scaled down in case both, `thumbnailWidth` and `thumbnailHeight` are provided.\n   * Can be either `contain` or `crop`.\n   */\n  thumbnailMethod: \"crop\",\n\n  /**\n   * If set, images will be resized to these dimensions before being **uploaded**.\n   * If only one, `resizeWidth` **or** `resizeHeight` is provided, the original aspect\n   * ratio of the file will be preserved.\n   *\n   * The `options.transformFile` function uses these options, so if the `transformFile` function\n   * is overridden, these options don't do anything.\n   */\n  resizeWidth: null,\n\n  /**\n   * See `resizeWidth`.\n   */\n  resizeHeight: null,\n\n  /**\n   * The mime type of the resized image (before it gets uploaded to the server).\n   * If `null` the original mime type will be used. To force jpeg, for example, use `image/jpeg`.\n   * See `resizeWidth` for more information.\n   */\n  resizeMimeType: null,\n\n  /**\n   * The quality of the resized images. See `resizeWidth`.\n   */\n  resizeQuality: 0.8,\n\n  /**\n   * How the images should be scaled down in case both, `resizeWidth` and `resizeHeight` are provided.\n   * Can be either `contain` or `crop`.\n   */\n  resizeMethod: \"contain\",\n\n  /**\n   * The base that is used to calculate the **displayed** filesize. You can\n   * change this to 1024 if you would rather display kibibytes, mebibytes,\n   * etc... 1024 is technically incorrect, because `1024 bytes` are `1 kibibyte`\n   * not `1 kilobyte`. You can change this to `1024` if you don't care about\n   * validity.\n   */\n  filesizeBase: 1000,\n\n  /**\n   * If not `null` defines how many files this Dropzone handles. If it exceeds,\n   * the event `maxfilesexceeded` will be called. The dropzone element gets the\n   * class `dz-max-files-reached` accordingly so you can provide visual\n   * feedback.\n   */\n  maxFiles: null,\n\n  /**\n   * An optional object to send additional headers to the server. Eg:\n   * `{ \"My-Awesome-Header\": \"header value\" }`\n   */\n  headers: null,\n\n  /**\n   * If `true`, the dropzone element itself will be clickable, if `false`\n   * nothing will be clickable.\n   *\n   * You can also pass an HTML element, a CSS selector (for multiple elements)\n   * or an array of those. In that case, all of those elements will trigger an\n   * upload when clicked.\n   */\n  clickable: true,\n\n  /**\n   * Whether hidden files in directories should be ignored.\n   */\n  ignoreHiddenFiles: true,\n\n  /**\n   * The default implementation of `accept` checks the file's mime type or\n   * extension against this list. This is a comma separated list of mime\n   * types or file extensions.\n   *\n   * Eg.: `image/*,application/pdf,.psd`\n   *\n   * If the Dropzone is `clickable` this option will also be used as\n   * [`accept`](https://developer.mozilla.org/en-US/docs/HTML/Element/input#attr-accept)\n   * parameter on the hidden file input as well.\n   */\n  acceptedFiles: null,\n\n  /**\n   * **Deprecated!**\n   * Use acceptedFiles instead.\n   */\n  acceptedMimeTypes: null,\n\n  /**\n   * If false, files will be added to the queue but the queue will not be\n   * processed automatically.\n   * This can be useful if you need some additional user input before sending\n   * files (or if you want want all files sent at once).\n   * If you're ready to send the file simply call `myDropzone.processQueue()`.\n   *\n   * See the [enqueuing file uploads](#enqueuing-file-uploads) documentation\n   * section for more information.\n   */\n  autoProcessQueue: true,\n\n  /**\n   * If false, files added to the dropzone will not be queued by default.\n   * You'll have to call `enqueueFile(file)` manually.\n   */\n  autoQueue: true,\n\n  /**\n   * If `true`, this will add a link to every file preview to remove or cancel (if\n   * already uploading) the file. The `dictCancelUpload`, `dictCancelUploadConfirmation`\n   * and `dictRemoveFile` options are used for the wording.\n   */\n  addRemoveLinks: false,\n\n  /**\n   * Defines where to display the file previews – if `null` the\n   * Dropzone element itself is used. Can be a plain `HTMLElement` or a CSS\n   * selector. The element should have the `dropzone-previews` class so\n   * the previews are displayed properly.\n   */\n  previewsContainer: null,\n\n  /**\n   * Set this to `true` if you don't want previews to be shown.\n   */\n  disablePreviews: false,\n\n  /**\n   * This is the element the hidden input field (which is used when clicking on the\n   * dropzone to trigger file selection) will be appended to. This might\n   * be important in case you use frameworks to switch the content of your page.\n   *\n   * Can be a selector string, or an element directly.\n   */\n  hiddenInputContainer: \"body\",\n\n  /**\n   * If null, no capture type will be specified\n   * If camera, mobile devices will skip the file selection and choose camera\n   * If microphone, mobile devices will skip the file selection and choose the microphone\n   * If camcorder, mobile devices will skip the file selection and choose the camera in video mode\n   * On apple devices multiple must be set to false.  AcceptedFiles may need to\n   * be set to an appropriate mime type (e.g. \"image/*\", \"audio/*\", or \"video/*\").\n   */\n  capture: null,\n\n  /**\n   * **Deprecated**. Use `renameFile` instead.\n   */\n  renameFilename: null,\n\n  /**\n   * A function that is invoked before the file is uploaded to the server and renames the file.\n   * This function gets the `File` as argument and can use the `file.name`. The actual name of the\n   * file that gets used during the upload can be accessed through `file.upload.filename`.\n   */\n  renameFile: null,\n\n  /**\n   * If `true` the fallback will be forced. This is very useful to test your server\n   * implementations first and make sure that everything works as\n   * expected without dropzone if you experience problems, and to test\n   * how your fallbacks will look.\n   */\n  forceFallback: false,\n\n  /**\n   * The text used before any files are dropped.\n   */\n  dictDefaultMessage: \"Drop files here to upload\",\n\n  /**\n   * The text that replaces the default message text it the browser is not supported.\n   */\n  dictFallbackMessage: \"Your browser does not support drag'n'drop file uploads.\",\n\n  /**\n   * The text that will be added before the fallback form.\n   * If you provide a  fallback element yourself, or if this option is `null` this will\n   * be ignored.\n   */\n  dictFallbackText: \"Please use the fallback form below to upload your files like in the olden days.\",\n\n  /**\n   * If the filesize is too big.\n   * `{{filesize}}` and `{{maxFilesize}}` will be replaced with the respective configuration values.\n   */\n  dictFileTooBig: \"File is too big ({{filesize}}MiB). Max filesize: {{maxFilesize}}MiB.\",\n\n  /**\n   * If the file doesn't match the file type.\n   */\n  dictInvalidFileType: \"You can't upload files of this type.\",\n\n  /**\n   * If the server response was invalid.\n   * `{{statusCode}}` will be replaced with the servers status code.\n   */\n  dictResponseError: \"Server responded with {{statusCode}} code.\",\n\n  /**\n   * If `addRemoveLinks` is true, the text to be used for the cancel upload link.\n   */\n  dictCancelUpload: \"Cancel upload\",\n\n  /**\n   * The text that is displayed if an upload was manually canceled\n   */\n  dictUploadCanceled: \"Upload canceled.\",\n\n  /**\n   * If `addRemoveLinks` is true, the text to be used for confirmation when cancelling upload.\n   */\n  dictCancelUploadConfirmation: \"Are you sure you want to cancel this upload?\",\n\n  /**\n   * If `addRemoveLinks` is true, the text to be used to remove a file.\n   */\n  dictRemoveFile: \"Remove file\",\n\n  /**\n   * If this is not null, then the user will be prompted before removing a file.\n   */\n  dictRemoveFileConfirmation: null,\n\n  /**\n   * Displayed if `maxFiles` is st and exceeded.\n   * The string `{{maxFiles}}` will be replaced by the configuration value.\n   */\n  dictMaxFilesExceeded: \"You can not upload any more files.\",\n\n  /**\n   * Allows you to translate the different units. Starting with `tb` for terabytes and going down to\n   * `b` for bytes.\n   */\n  dictFileSizeUnits: {\n    tb: \"TB\",\n    gb: \"GB\",\n    mb: \"MB\",\n    kb: \"KB\",\n    b: \"b\"\n  },\n\n  /**\n   * Called when dropzone initialized\n   * You can add event listeners here\n   */\n  init: function init() {},\n\n  /**\n   * Can be an **object** of additional parameters to transfer to the server, **or** a `Function`\n   * that gets invoked with the `files`, `xhr` and, if it's a chunked upload, `chunk` arguments. In case\n   * of a function, this needs to return a map.\n   *\n   * The default implementation does nothing for normal uploads, but adds relevant information for\n   * chunked uploads.\n   *\n   * This is the same as adding hidden input fields in the form element.\n   */\n  params: function params(files, xhr, chunk) {\n    if (chunk) {\n      return {\n        dzuuid: chunk.file.upload.uuid,\n        dzchunkindex: chunk.index,\n        dztotalfilesize: chunk.file.size,\n        dzchunksize: this.options.chunkSize,\n        dztotalchunkcount: chunk.file.upload.totalChunkCount,\n        dzchunkbyteoffset: chunk.index * this.options.chunkSize\n      };\n    }\n  },\n\n  /**\n   * A function that gets a [file](https://developer.mozilla.org/en-US/docs/DOM/File)\n   * and a `done` function as parameters.\n   *\n   * If the done function is invoked without arguments, the file is \"accepted\" and will\n   * be processed. If you pass an error message, the file is rejected, and the error\n   * message will be displayed.\n   * This function will not be called if the file is too big or doesn't match the mime types.\n   */\n  accept: function accept(file, done) {\n    return done();\n  },\n\n  /**\n   * The callback that will be invoked when all chunks have been uploaded for a file.\n   * It gets the file for which the chunks have been uploaded as the first parameter,\n   * and the `done` function as second. `done()` needs to be invoked when everything\n   * needed to finish the upload process is done.\n   */\n  chunksUploaded: function chunksUploaded(file, done) {\n    done();\n  },\n\n  /**\n   * Gets called when the browser is not supported.\n   * The default implementation shows the fallback input field and adds\n   * a text.\n   */\n  fallback: function fallback() {\n    // This code should pass in IE7... :(\n    var messageElement;\n    this.element.className = \"\".concat(this.element.className, \" dz-browser-not-supported\");\n\n    var _iterator = options_createForOfIteratorHelper(this.element.getElementsByTagName(\"div\"), true),\n        _step;\n\n    try {\n      for (_iterator.s(); !(_step = _iterator.n()).done;) {\n        var child = _step.value;\n\n        if (/(^| )dz-message($| )/.test(child.className)) {\n          messageElement = child;\n          child.className = \"dz-message\"; // Removes the 'dz-default' class\n\n          break;\n        }\n      }\n    } catch (err) {\n      _iterator.e(err);\n    } finally {\n      _iterator.f();\n    }\n\n    if (!messageElement) {\n      messageElement = Dropzone.createElement('<div class=\"dz-message\"><span></span></div>');\n      this.element.appendChild(messageElement);\n    }\n\n    var span = messageElement.getElementsByTagName(\"span\")[0];\n\n    if (span) {\n      if (span.textContent != null) {\n        span.textContent = this.options.dictFallbackMessage;\n      } else if (span.innerText != null) {\n        span.innerText = this.options.dictFallbackMessage;\n      }\n    }\n\n    return this.element.appendChild(this.getFallbackForm());\n  },\n\n  /**\n   * Gets called to calculate the thumbnail dimensions.\n   *\n   * It gets `file`, `width` and `height` (both may be `null`) as parameters and must return an object containing:\n   *\n   *  - `srcWidth` & `srcHeight` (required)\n   *  - `trgWidth` & `trgHeight` (required)\n   *  - `srcX` & `srcY` (optional, default `0`)\n   *  - `trgX` & `trgY` (optional, default `0`)\n   *\n   * Those values are going to be used by `ctx.drawImage()`.\n   */\n  resize: function resize(file, width, height, resizeMethod) {\n    var info = {\n      srcX: 0,\n      srcY: 0,\n      srcWidth: file.width,\n      srcHeight: file.height\n    };\n    var srcRatio = file.width / file.height; // Automatically calculate dimensions if not specified\n\n    if (width == null && height == null) {\n      width = info.srcWidth;\n      height = info.srcHeight;\n    } else if (width == null) {\n      width = height * srcRatio;\n    } else if (height == null) {\n      height = width / srcRatio;\n    } // Make sure images aren't upscaled\n\n\n    width = Math.min(width, info.srcWidth);\n    height = Math.min(height, info.srcHeight);\n    var trgRatio = width / height;\n\n    if (info.srcWidth > width || info.srcHeight > height) {\n      // Image is bigger and needs rescaling\n      if (resizeMethod === \"crop\") {\n        if (srcRatio > trgRatio) {\n          info.srcHeight = file.height;\n          info.srcWidth = info.srcHeight * trgRatio;\n        } else {\n          info.srcWidth = file.width;\n          info.srcHeight = info.srcWidth / trgRatio;\n        }\n      } else if (resizeMethod === \"contain\") {\n        // Method 'contain'\n        if (srcRatio > trgRatio) {\n          height = width / srcRatio;\n        } else {\n          width = height * srcRatio;\n        }\n      } else {\n        throw new Error(\"Unknown resizeMethod '\".concat(resizeMethod, \"'\"));\n      }\n    }\n\n    info.srcX = (file.width - info.srcWidth) / 2;\n    info.srcY = (file.height - info.srcHeight) / 2;\n    info.trgWidth = width;\n    info.trgHeight = height;\n    return info;\n  },\n\n  /**\n   * Can be used to transform the file (for example, resize an image if necessary).\n   *\n   * The default implementation uses `resizeWidth` and `resizeHeight` (if provided) and resizes\n   * images according to those dimensions.\n   *\n   * Gets the `file` as the first parameter, and a `done()` function as the second, that needs\n   * to be invoked with the file when the transformation is done.\n   */\n  transformFile: function transformFile(file, done) {\n    if ((this.options.resizeWidth || this.options.resizeHeight) && file.type.match(/image.*/)) {\n      return this.resizeImage(file, this.options.resizeWidth, this.options.resizeHeight, this.options.resizeMethod, done);\n    } else {\n      return done(file);\n    }\n  },\n\n  /**\n   * A string that contains the template used for each dropped\n   * file. Change it to fulfill your needs but make sure to properly\n   * provide all elements.\n   *\n   * If you want to use an actual HTML element instead of providing a String\n   * as a config option, you could create a div with the id `tpl`,\n   * put the template inside it and provide the element like this:\n   *\n   *     document\n   *       .querySelector('#tpl')\n   *       .innerHTML\n   *\n   */\n  previewTemplate: preview_template,\n\n  /*\n   Those functions register themselves to the events on init and handle all\n   the user interface specific stuff. Overwriting them won't break the upload\n   but can break the way it's displayed.\n   You can overwrite them if you don't like the default behavior. If you just\n   want to add an additional event handler, register it on the dropzone object\n   and don't overwrite those options.\n   */\n  // Those are self explanatory and simply concern the DragnDrop.\n  drop: function drop(e) {\n    return this.element.classList.remove(\"dz-drag-hover\");\n  },\n  dragstart: function dragstart(e) {},\n  dragend: function dragend(e) {\n    return this.element.classList.remove(\"dz-drag-hover\");\n  },\n  dragenter: function dragenter(e) {\n    return this.element.classList.add(\"dz-drag-hover\");\n  },\n  dragover: function dragover(e) {\n    return this.element.classList.add(\"dz-drag-hover\");\n  },\n  dragleave: function dragleave(e) {\n    return this.element.classList.remove(\"dz-drag-hover\");\n  },\n  paste: function paste(e) {},\n  // Called whenever there are no files left in the dropzone anymore, and the\n  // dropzone should be displayed as if in the initial state.\n  reset: function reset() {\n    return this.element.classList.remove(\"dz-started\");\n  },\n  // Called when a file is added to the queue\n  // Receives `file`\n  addedfile: function addedfile(file) {\n    var _this = this;\n\n    if (this.element === this.previewsContainer) {\n      this.element.classList.add(\"dz-started\");\n    }\n\n    if (this.previewsContainer && !this.options.disablePreviews) {\n      file.previewElement = Dropzone.createElement(this.options.previewTemplate.trim());\n      file.previewTemplate = file.previewElement; // Backwards compatibility\n\n      this.previewsContainer.appendChild(file.previewElement);\n\n      var _iterator2 = options_createForOfIteratorHelper(file.previewElement.querySelectorAll(\"[data-dz-name]\"), true),\n          _step2;\n\n      try {\n        for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n          var node = _step2.value;\n          node.textContent = file.name;\n        }\n      } catch (err) {\n        _iterator2.e(err);\n      } finally {\n        _iterator2.f();\n      }\n\n      var _iterator3 = options_createForOfIteratorHelper(file.previewElement.querySelectorAll(\"[data-dz-size]\"), true),\n          _step3;\n\n      try {\n        for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n          node = _step3.value;\n          node.innerHTML = this.filesize(file.size);\n        }\n      } catch (err) {\n        _iterator3.e(err);\n      } finally {\n        _iterator3.f();\n      }\n\n      if (this.options.addRemoveLinks) {\n        file._removeLink = Dropzone.createElement(\"<a class=\\\"dz-remove\\\" href=\\\"javascript:undefined;\\\" data-dz-remove>\".concat(this.options.dictRemoveFile, \"</a>\"));\n        file.previewElement.appendChild(file._removeLink);\n      }\n\n      var removeFileEvent = function removeFileEvent(e) {\n        e.preventDefault();\n        e.stopPropagation();\n\n        if (file.status === Dropzone.UPLOADING) {\n          return Dropzone.confirm(_this.options.dictCancelUploadConfirmation, function () {\n            return _this.removeFile(file);\n          });\n        } else {\n          if (_this.options.dictRemoveFileConfirmation) {\n            return Dropzone.confirm(_this.options.dictRemoveFileConfirmation, function () {\n              return _this.removeFile(file);\n            });\n          } else {\n            return _this.removeFile(file);\n          }\n        }\n      };\n\n      var _iterator4 = options_createForOfIteratorHelper(file.previewElement.querySelectorAll(\"[data-dz-remove]\"), true),\n          _step4;\n\n      try {\n        for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {\n          var removeLink = _step4.value;\n          removeLink.addEventListener(\"click\", removeFileEvent);\n        }\n      } catch (err) {\n        _iterator4.e(err);\n      } finally {\n        _iterator4.f();\n      }\n    }\n  },\n  // Called whenever a file is removed.\n  removedfile: function removedfile(file) {\n    if (file.previewElement != null && file.previewElement.parentNode != null) {\n      file.previewElement.parentNode.removeChild(file.previewElement);\n    }\n\n    return this._updateMaxFilesReachedClass();\n  },\n  // Called when a thumbnail has been generated\n  // Receives `file` and `dataUrl`\n  thumbnail: function thumbnail(file, dataUrl) {\n    if (file.previewElement) {\n      file.previewElement.classList.remove(\"dz-file-preview\");\n\n      var _iterator5 = options_createForOfIteratorHelper(file.previewElement.querySelectorAll(\"[data-dz-thumbnail]\"), true),\n          _step5;\n\n      try {\n        for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {\n          var thumbnailElement = _step5.value;\n          thumbnailElement.alt = file.name;\n          thumbnailElement.src = dataUrl;\n        }\n      } catch (err) {\n        _iterator5.e(err);\n      } finally {\n        _iterator5.f();\n      }\n\n      return setTimeout(function () {\n        return file.previewElement.classList.add(\"dz-image-preview\");\n      }, 1);\n    }\n  },\n  // Called whenever an error occurs\n  // Receives `file` and `message`\n  error: function error(file, message) {\n    if (file.previewElement) {\n      file.previewElement.classList.add(\"dz-error\");\n\n      if (typeof message !== \"string\" && message.error) {\n        message = message.error;\n      }\n\n      var _iterator6 = options_createForOfIteratorHelper(file.previewElement.querySelectorAll(\"[data-dz-errormessage]\"), true),\n          _step6;\n\n      try {\n        for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {\n          var node = _step6.value;\n          node.textContent = message;\n        }\n      } catch (err) {\n        _iterator6.e(err);\n      } finally {\n        _iterator6.f();\n      }\n    }\n  },\n  errormultiple: function errormultiple() {},\n  // Called when a file gets processed. Since there is a cue, not all added\n  // files are processed immediately.\n  // Receives `file`\n  processing: function processing(file) {\n    if (file.previewElement) {\n      file.previewElement.classList.add(\"dz-processing\");\n\n      if (file._removeLink) {\n        return file._removeLink.innerHTML = this.options.dictCancelUpload;\n      }\n    }\n  },\n  processingmultiple: function processingmultiple() {},\n  // Called whenever the upload progress gets updated.\n  // Receives `file`, `progress` (percentage 0-100) and `bytesSent`.\n  // To get the total number of bytes of the file, use `file.size`\n  uploadprogress: function uploadprogress(file, progress, bytesSent) {\n    if (file.previewElement) {\n      var _iterator7 = options_createForOfIteratorHelper(file.previewElement.querySelectorAll(\"[data-dz-uploadprogress]\"), true),\n          _step7;\n\n      try {\n        for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {\n          var node = _step7.value;\n          node.nodeName === \"PROGRESS\" ? node.value = progress : node.style.width = \"\".concat(progress, \"%\");\n        }\n      } catch (err) {\n        _iterator7.e(err);\n      } finally {\n        _iterator7.f();\n      }\n    }\n  },\n  // Called whenever the total upload progress gets updated.\n  // Called with totalUploadProgress (0-100), totalBytes and totalBytesSent\n  totaluploadprogress: function totaluploadprogress() {},\n  // Called just before the file is sent. Gets the `xhr` object as second\n  // parameter, so you can modify it (for example to add a CSRF token) and a\n  // `formData` object to add additional information.\n  sending: function sending() {},\n  sendingmultiple: function sendingmultiple() {},\n  // When the complete upload is finished and successful\n  // Receives `file`\n  success: function success(file) {\n    if (file.previewElement) {\n      return file.previewElement.classList.add(\"dz-success\");\n    }\n  },\n  successmultiple: function successmultiple() {},\n  // When the upload is canceled.\n  canceled: function canceled(file) {\n    return this.emit(\"error\", file, this.options.dictUploadCanceled);\n  },\n  canceledmultiple: function canceledmultiple() {},\n  // When the upload is finished, either with success or an error.\n  // Receives `file`\n  complete: function complete(file) {\n    if (file._removeLink) {\n      file._removeLink.innerHTML = this.options.dictRemoveFile;\n    }\n\n    if (file.previewElement) {\n      return file.previewElement.classList.add(\"dz-complete\");\n    }\n  },\n  completemultiple: function completemultiple() {},\n  maxfilesexceeded: function maxfilesexceeded() {},\n  maxfilesreached: function maxfilesreached() {},\n  queuecomplete: function queuecomplete() {},\n  addedfiles: function addedfiles() {}\n};\n/* harmony default export */ var src_options = (defaultOptions);\n;// CONCATENATED MODULE: ./src/dropzone.js\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction dropzone_createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = dropzone_unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\n\nfunction dropzone_unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return dropzone_arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return dropzone_arrayLikeToArray(o, minLen); }\n\nfunction dropzone_arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction dropzone_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction dropzone_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction dropzone_createClass(Constructor, protoProps, staticProps) { if (protoProps) dropzone_defineProperties(Constructor.prototype, protoProps); if (staticProps) dropzone_defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n\n\n\nvar Dropzone = /*#__PURE__*/function (_Emitter) {\n  _inherits(Dropzone, _Emitter);\n\n  var _super = _createSuper(Dropzone);\n\n  function Dropzone(el, options) {\n    var _this;\n\n    dropzone_classCallCheck(this, Dropzone);\n\n    _this = _super.call(this);\n    var fallback, left;\n    _this.element = el; // For backwards compatibility since the version was in the prototype previously\n\n    _this.version = Dropzone.version;\n    _this.clickableElements = [];\n    _this.listeners = [];\n    _this.files = []; // All files\n\n    if (typeof _this.element === \"string\") {\n      _this.element = document.querySelector(_this.element);\n    } // Not checking if instance of HTMLElement or Element since IE9 is extremely weird.\n\n\n    if (!_this.element || _this.element.nodeType == null) {\n      throw new Error(\"Invalid dropzone element.\");\n    }\n\n    if (_this.element.dropzone) {\n      throw new Error(\"Dropzone already attached.\");\n    } // Now add this dropzone to the instances.\n\n\n    Dropzone.instances.push(_assertThisInitialized(_this)); // Put the dropzone inside the element itself.\n\n    _this.element.dropzone = _assertThisInitialized(_this);\n    var elementOptions = (left = Dropzone.optionsForElement(_this.element)) != null ? left : {};\n    _this.options = Dropzone.extend({}, src_options, elementOptions, options != null ? options : {});\n    _this.options.previewTemplate = _this.options.previewTemplate.replace(/\\n*/g, \"\"); // If the browser failed, just call the fallback and leave\n\n    if (_this.options.forceFallback || !Dropzone.isBrowserSupported()) {\n      return _possibleConstructorReturn(_this, _this.options.fallback.call(_assertThisInitialized(_this)));\n    } // @options.url = @element.getAttribute \"action\" unless @options.url?\n\n\n    if (_this.options.url == null) {\n      _this.options.url = _this.element.getAttribute(\"action\");\n    }\n\n    if (!_this.options.url) {\n      throw new Error(\"No URL provided.\");\n    }\n\n    if (_this.options.acceptedFiles && _this.options.acceptedMimeTypes) {\n      throw new Error(\"You can't provide both 'acceptedFiles' and 'acceptedMimeTypes'. 'acceptedMimeTypes' is deprecated.\");\n    }\n\n    if (_this.options.uploadMultiple && _this.options.chunking) {\n      throw new Error(\"You cannot set both: uploadMultiple and chunking.\");\n    } // Backwards compatibility\n\n\n    if (_this.options.acceptedMimeTypes) {\n      _this.options.acceptedFiles = _this.options.acceptedMimeTypes;\n      delete _this.options.acceptedMimeTypes;\n    } // Backwards compatibility\n\n\n    if (_this.options.renameFilename != null) {\n      _this.options.renameFile = function (file) {\n        return _this.options.renameFilename.call(_assertThisInitialized(_this), file.name, file);\n      };\n    }\n\n    if (typeof _this.options.method === \"string\") {\n      _this.options.method = _this.options.method.toUpperCase();\n    }\n\n    if ((fallback = _this.getExistingFallback()) && fallback.parentNode) {\n      // Remove the fallback\n      fallback.parentNode.removeChild(fallback);\n    } // Display previews in the previewsContainer element or the Dropzone element unless explicitly set to false\n\n\n    if (_this.options.previewsContainer !== false) {\n      if (_this.options.previewsContainer) {\n        _this.previewsContainer = Dropzone.getElement(_this.options.previewsContainer, \"previewsContainer\");\n      } else {\n        _this.previewsContainer = _this.element;\n      }\n    }\n\n    if (_this.options.clickable) {\n      if (_this.options.clickable === true) {\n        _this.clickableElements = [_this.element];\n      } else {\n        _this.clickableElements = Dropzone.getElements(_this.options.clickable, \"clickable\");\n      }\n    }\n\n    _this.init();\n\n    return _this;\n  } // Returns all files that have been accepted\n\n\n  dropzone_createClass(Dropzone, [{\n    key: \"getAcceptedFiles\",\n    value: function getAcceptedFiles() {\n      return this.files.filter(function (file) {\n        return file.accepted;\n      }).map(function (file) {\n        return file;\n      });\n    } // Returns all files that have been rejected\n    // Not sure when that's going to be useful, but added for completeness.\n\n  }, {\n    key: \"getRejectedFiles\",\n    value: function getRejectedFiles() {\n      return this.files.filter(function (file) {\n        return !file.accepted;\n      }).map(function (file) {\n        return file;\n      });\n    }\n  }, {\n    key: \"getFilesWithStatus\",\n    value: function getFilesWithStatus(status) {\n      return this.files.filter(function (file) {\n        return file.status === status;\n      }).map(function (file) {\n        return file;\n      });\n    } // Returns all files that are in the queue\n\n  }, {\n    key: \"getQueuedFiles\",\n    value: function getQueuedFiles() {\n      return this.getFilesWithStatus(Dropzone.QUEUED);\n    }\n  }, {\n    key: \"getUploadingFiles\",\n    value: function getUploadingFiles() {\n      return this.getFilesWithStatus(Dropzone.UPLOADING);\n    }\n  }, {\n    key: \"getAddedFiles\",\n    value: function getAddedFiles() {\n      return this.getFilesWithStatus(Dropzone.ADDED);\n    } // Files that are either queued or uploading\n\n  }, {\n    key: \"getActiveFiles\",\n    value: function getActiveFiles() {\n      return this.files.filter(function (file) {\n        return file.status === Dropzone.UPLOADING || file.status === Dropzone.QUEUED;\n      }).map(function (file) {\n        return file;\n      });\n    } // The function that gets called when Dropzone is initialized. You\n    // can (and should) setup event listeners inside this function.\n\n  }, {\n    key: \"init\",\n    value: function init() {\n      var _this2 = this;\n\n      // In case it isn't set already\n      if (this.element.tagName === \"form\") {\n        this.element.setAttribute(\"enctype\", \"multipart/form-data\");\n      }\n\n      if (this.element.classList.contains(\"dropzone\") && !this.element.querySelector(\".dz-message\")) {\n        this.element.appendChild(Dropzone.createElement(\"<div class=\\\"dz-default dz-message\\\"><button class=\\\"dz-button\\\" type=\\\"button\\\">\".concat(this.options.dictDefaultMessage, \"</button></div>\")));\n      }\n\n      if (this.clickableElements.length) {\n        var setupHiddenFileInput = function setupHiddenFileInput() {\n          if (_this2.hiddenFileInput) {\n            _this2.hiddenFileInput.parentNode.removeChild(_this2.hiddenFileInput);\n          }\n\n          _this2.hiddenFileInput = document.createElement(\"input\");\n\n          _this2.hiddenFileInput.setAttribute(\"type\", \"file\");\n\n          if (_this2.options.maxFiles === null || _this2.options.maxFiles > 1) {\n            _this2.hiddenFileInput.setAttribute(\"multiple\", \"multiple\");\n          }\n\n          _this2.hiddenFileInput.className = \"dz-hidden-input\";\n\n          if (_this2.options.acceptedFiles !== null) {\n            _this2.hiddenFileInput.setAttribute(\"accept\", _this2.options.acceptedFiles);\n          }\n\n          if (_this2.options.capture !== null) {\n            _this2.hiddenFileInput.setAttribute(\"capture\", _this2.options.capture);\n          } // Making sure that no one can \"tab\" into this field.\n\n\n          _this2.hiddenFileInput.setAttribute(\"tabindex\", \"-1\"); // Not setting `display=\"none\"` because some browsers don't accept clicks\n          // on elements that aren't displayed.\n\n\n          _this2.hiddenFileInput.style.visibility = \"hidden\";\n          _this2.hiddenFileInput.style.position = \"absolute\";\n          _this2.hiddenFileInput.style.top = \"0\";\n          _this2.hiddenFileInput.style.left = \"0\";\n          _this2.hiddenFileInput.style.height = \"0\";\n          _this2.hiddenFileInput.style.width = \"0\";\n          Dropzone.getElement(_this2.options.hiddenInputContainer, \"hiddenInputContainer\").appendChild(_this2.hiddenFileInput);\n\n          _this2.hiddenFileInput.addEventListener(\"change\", function () {\n            var files = _this2.hiddenFileInput.files;\n\n            if (files.length) {\n              var _iterator = dropzone_createForOfIteratorHelper(files, true),\n                  _step;\n\n              try {\n                for (_iterator.s(); !(_step = _iterator.n()).done;) {\n                  var file = _step.value;\n\n                  _this2.addFile(file);\n                }\n              } catch (err) {\n                _iterator.e(err);\n              } finally {\n                _iterator.f();\n              }\n            }\n\n            _this2.emit(\"addedfiles\", files);\n\n            setupHiddenFileInput();\n          });\n        };\n\n        setupHiddenFileInput();\n      }\n\n      this.URL = window.URL !== null ? window.URL : window.webkitURL; // Setup all event listeners on the Dropzone object itself.\n      // They're not in @setupEventListeners() because they shouldn't be removed\n      // again when the dropzone gets disabled.\n\n      var _iterator2 = dropzone_createForOfIteratorHelper(this.events, true),\n          _step2;\n\n      try {\n        for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n          var eventName = _step2.value;\n          this.on(eventName, this.options[eventName]);\n        }\n      } catch (err) {\n        _iterator2.e(err);\n      } finally {\n        _iterator2.f();\n      }\n\n      this.on(\"uploadprogress\", function () {\n        return _this2.updateTotalUploadProgress();\n      });\n      this.on(\"removedfile\", function () {\n        return _this2.updateTotalUploadProgress();\n      });\n      this.on(\"canceled\", function (file) {\n        return _this2.emit(\"complete\", file);\n      }); // Emit a `queuecomplete` event if all files finished uploading.\n\n      this.on(\"complete\", function (file) {\n        if (_this2.getAddedFiles().length === 0 && _this2.getUploadingFiles().length === 0 && _this2.getQueuedFiles().length === 0) {\n          // This needs to be deferred so that `queuecomplete` really triggers after `complete`\n          return setTimeout(function () {\n            return _this2.emit(\"queuecomplete\");\n          }, 0);\n        }\n      });\n\n      var containsFiles = function containsFiles(e) {\n        if (e.dataTransfer.types) {\n          // Because e.dataTransfer.types is an Object in\n          // IE, we need to iterate like this instead of\n          // using e.dataTransfer.types.some()\n          for (var i = 0; i < e.dataTransfer.types.length; i++) {\n            if (e.dataTransfer.types[i] === \"Files\") return true;\n          }\n        }\n\n        return false;\n      };\n\n      var noPropagation = function noPropagation(e) {\n        // If there are no files, we don't want to stop\n        // propagation so we don't interfere with other\n        // drag and drop behaviour.\n        if (!containsFiles(e)) return;\n        e.stopPropagation();\n\n        if (e.preventDefault) {\n          return e.preventDefault();\n        } else {\n          return e.returnValue = false;\n        }\n      }; // Create the listeners\n\n\n      this.listeners = [{\n        element: this.element,\n        events: {\n          dragstart: function dragstart(e) {\n            return _this2.emit(\"dragstart\", e);\n          },\n          dragenter: function dragenter(e) {\n            noPropagation(e);\n            return _this2.emit(\"dragenter\", e);\n          },\n          dragover: function dragover(e) {\n            // Makes it possible to drag files from chrome's download bar\n            // http://stackoverflow.com/questions/19526430/drag-and-drop-file-uploads-from-chrome-downloads-bar\n            // Try is required to prevent bug in Internet Explorer 11 (SCRIPT65535 exception)\n            var efct;\n\n            try {\n              efct = e.dataTransfer.effectAllowed;\n            } catch (error) {}\n\n            e.dataTransfer.dropEffect = \"move\" === efct || \"linkMove\" === efct ? \"move\" : \"copy\";\n            noPropagation(e);\n            return _this2.emit(\"dragover\", e);\n          },\n          dragleave: function dragleave(e) {\n            return _this2.emit(\"dragleave\", e);\n          },\n          drop: function drop(e) {\n            noPropagation(e);\n            return _this2.drop(e);\n          },\n          dragend: function dragend(e) {\n            return _this2.emit(\"dragend\", e);\n          }\n        } // This is disabled right now, because the browsers don't implement it properly.\n        // \"paste\": (e) =>\n        //   noPropagation e\n        //   @paste e\n\n      }];\n      this.clickableElements.forEach(function (clickableElement) {\n        return _this2.listeners.push({\n          element: clickableElement,\n          events: {\n            click: function click(evt) {\n              // Only the actual dropzone or the message element should trigger file selection\n              if (clickableElement !== _this2.element || evt.target === _this2.element || Dropzone.elementInside(evt.target, _this2.element.querySelector(\".dz-message\"))) {\n                _this2.hiddenFileInput.click(); // Forward the click\n\n              }\n\n              return true;\n            }\n          }\n        });\n      });\n      this.enable();\n      return this.options.init.call(this);\n    } // Not fully tested yet\n\n  }, {\n    key: \"destroy\",\n    value: function destroy() {\n      this.disable();\n      this.removeAllFiles(true);\n\n      if (this.hiddenFileInput != null ? this.hiddenFileInput.parentNode : undefined) {\n        this.hiddenFileInput.parentNode.removeChild(this.hiddenFileInput);\n        this.hiddenFileInput = null;\n      }\n\n      delete this.element.dropzone;\n      return Dropzone.instances.splice(Dropzone.instances.indexOf(this), 1);\n    }\n  }, {\n    key: \"updateTotalUploadProgress\",\n    value: function updateTotalUploadProgress() {\n      var totalUploadProgress;\n      var totalBytesSent = 0;\n      var totalBytes = 0;\n      var activeFiles = this.getActiveFiles();\n\n      if (activeFiles.length) {\n        var _iterator3 = dropzone_createForOfIteratorHelper(this.getActiveFiles(), true),\n            _step3;\n\n        try {\n          for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n            var file = _step3.value;\n            totalBytesSent += file.upload.bytesSent;\n            totalBytes += file.upload.total;\n          }\n        } catch (err) {\n          _iterator3.e(err);\n        } finally {\n          _iterator3.f();\n        }\n\n        totalUploadProgress = 100 * totalBytesSent / totalBytes;\n      } else {\n        totalUploadProgress = 100;\n      }\n\n      return this.emit(\"totaluploadprogress\", totalUploadProgress, totalBytes, totalBytesSent);\n    } // @options.paramName can be a function taking one parameter rather than a string.\n    // A parameter name for a file is obtained simply by calling this with an index number.\n\n  }, {\n    key: \"_getParamName\",\n    value: function _getParamName(n) {\n      if (typeof this.options.paramName === \"function\") {\n        return this.options.paramName(n);\n      } else {\n        return \"\".concat(this.options.paramName).concat(this.options.uploadMultiple ? \"[\".concat(n, \"]\") : \"\");\n      }\n    } // If @options.renameFile is a function,\n    // the function will be used to rename the file.name before appending it to the formData\n\n  }, {\n    key: \"_renameFile\",\n    value: function _renameFile(file) {\n      if (typeof this.options.renameFile !== \"function\") {\n        return file.name;\n      }\n\n      return this.options.renameFile(file);\n    } // Returns a form that can be used as fallback if the browser does not support DragnDrop\n    //\n    // If the dropzone is already a form, only the input field and button are returned. Otherwise a complete form element is provided.\n    // This code has to pass in IE7 :(\n\n  }, {\n    key: \"getFallbackForm\",\n    value: function getFallbackForm() {\n      var existingFallback, form;\n\n      if (existingFallback = this.getExistingFallback()) {\n        return existingFallback;\n      }\n\n      var fieldsString = '<div class=\"dz-fallback\">';\n\n      if (this.options.dictFallbackText) {\n        fieldsString += \"<p>\".concat(this.options.dictFallbackText, \"</p>\");\n      }\n\n      fieldsString += \"<input type=\\\"file\\\" name=\\\"\".concat(this._getParamName(0), \"\\\" \").concat(this.options.uploadMultiple ? 'multiple=\"multiple\"' : undefined, \" /><input type=\\\"submit\\\" value=\\\"Upload!\\\"></div>\");\n      var fields = Dropzone.createElement(fieldsString);\n\n      if (this.element.tagName !== \"FORM\") {\n        form = Dropzone.createElement(\"<form action=\\\"\".concat(this.options.url, \"\\\" enctype=\\\"multipart/form-data\\\" method=\\\"\").concat(this.options.method, \"\\\"></form>\"));\n        form.appendChild(fields);\n      } else {\n        // Make sure that the enctype and method attributes are set properly\n        this.element.setAttribute(\"enctype\", \"multipart/form-data\");\n        this.element.setAttribute(\"method\", this.options.method);\n      }\n\n      return form != null ? form : fields;\n    } // Returns the fallback elements if they exist already\n    //\n    // This code has to pass in IE7 :(\n\n  }, {\n    key: \"getExistingFallback\",\n    value: function getExistingFallback() {\n      var getFallback = function getFallback(elements) {\n        var _iterator4 = dropzone_createForOfIteratorHelper(elements, true),\n            _step4;\n\n        try {\n          for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {\n            var el = _step4.value;\n\n            if (/(^| )fallback($| )/.test(el.className)) {\n              return el;\n            }\n          }\n        } catch (err) {\n          _iterator4.e(err);\n        } finally {\n          _iterator4.f();\n        }\n      };\n\n      for (var _i = 0, _arr = [\"div\", \"form\"]; _i < _arr.length; _i++) {\n        var tagName = _arr[_i];\n        var fallback;\n\n        if (fallback = getFallback(this.element.getElementsByTagName(tagName))) {\n          return fallback;\n        }\n      }\n    } // Activates all listeners stored in @listeners\n\n  }, {\n    key: \"setupEventListeners\",\n    value: function setupEventListeners() {\n      return this.listeners.map(function (elementListeners) {\n        return function () {\n          var result = [];\n\n          for (var event in elementListeners.events) {\n            var listener = elementListeners.events[event];\n            result.push(elementListeners.element.addEventListener(event, listener, false));\n          }\n\n          return result;\n        }();\n      });\n    } // Deactivates all listeners stored in @listeners\n\n  }, {\n    key: \"removeEventListeners\",\n    value: function removeEventListeners() {\n      return this.listeners.map(function (elementListeners) {\n        return function () {\n          var result = [];\n\n          for (var event in elementListeners.events) {\n            var listener = elementListeners.events[event];\n            result.push(elementListeners.element.removeEventListener(event, listener, false));\n          }\n\n          return result;\n        }();\n      });\n    } // Removes all event listeners and cancels all files in the queue or being processed.\n\n  }, {\n    key: \"disable\",\n    value: function disable() {\n      var _this3 = this;\n\n      this.clickableElements.forEach(function (element) {\n        return element.classList.remove(\"dz-clickable\");\n      });\n      this.removeEventListeners();\n      this.disabled = true;\n      return this.files.map(function (file) {\n        return _this3.cancelUpload(file);\n      });\n    }\n  }, {\n    key: \"enable\",\n    value: function enable() {\n      delete this.disabled;\n      this.clickableElements.forEach(function (element) {\n        return element.classList.add(\"dz-clickable\");\n      });\n      return this.setupEventListeners();\n    } // Returns a nicely formatted filesize\n\n  }, {\n    key: \"filesize\",\n    value: function filesize(size) {\n      var selectedSize = 0;\n      var selectedUnit = \"b\";\n\n      if (size > 0) {\n        var units = [\"tb\", \"gb\", \"mb\", \"kb\", \"b\"];\n\n        for (var i = 0; i < units.length; i++) {\n          var unit = units[i];\n          var cutoff = Math.pow(this.options.filesizeBase, 4 - i) / 10;\n\n          if (size >= cutoff) {\n            selectedSize = size / Math.pow(this.options.filesizeBase, 4 - i);\n            selectedUnit = unit;\n            break;\n          }\n        }\n\n        selectedSize = Math.round(10 * selectedSize) / 10; // Cutting of digits\n      }\n\n      return \"<strong>\".concat(selectedSize, \"</strong> \").concat(this.options.dictFileSizeUnits[selectedUnit]);\n    } // Adds or removes the `dz-max-files-reached` class from the form.\n\n  }, {\n    key: \"_updateMaxFilesReachedClass\",\n    value: function _updateMaxFilesReachedClass() {\n      if (this.options.maxFiles != null && this.getAcceptedFiles().length >= this.options.maxFiles) {\n        if (this.getAcceptedFiles().length === this.options.maxFiles) {\n          this.emit(\"maxfilesreached\", this.files);\n        }\n\n        return this.element.classList.add(\"dz-max-files-reached\");\n      } else {\n        return this.element.classList.remove(\"dz-max-files-reached\");\n      }\n    }\n  }, {\n    key: \"drop\",\n    value: function drop(e) {\n      if (!e.dataTransfer) {\n        return;\n      }\n\n      this.emit(\"drop\", e); // Convert the FileList to an Array\n      // This is necessary for IE11\n\n      var files = [];\n\n      for (var i = 0; i < e.dataTransfer.files.length; i++) {\n        files[i] = e.dataTransfer.files[i];\n      } // Even if it's a folder, files.length will contain the folders.\n\n\n      if (files.length) {\n        var items = e.dataTransfer.items;\n\n        if (items && items.length && items[0].webkitGetAsEntry != null) {\n          // The browser supports dropping of folders, so handle items instead of files\n          this._addFilesFromItems(items);\n        } else {\n          this.handleFiles(files);\n        }\n      }\n\n      this.emit(\"addedfiles\", files);\n    }\n  }, {\n    key: \"paste\",\n    value: function paste(e) {\n      if (__guard__(e != null ? e.clipboardData : undefined, function (x) {\n        return x.items;\n      }) == null) {\n        return;\n      }\n\n      this.emit(\"paste\", e);\n      var items = e.clipboardData.items;\n\n      if (items.length) {\n        return this._addFilesFromItems(items);\n      }\n    }\n  }, {\n    key: \"handleFiles\",\n    value: function handleFiles(files) {\n      var _iterator5 = dropzone_createForOfIteratorHelper(files, true),\n          _step5;\n\n      try {\n        for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {\n          var file = _step5.value;\n          this.addFile(file);\n        }\n      } catch (err) {\n        _iterator5.e(err);\n      } finally {\n        _iterator5.f();\n      }\n    } // When a folder is dropped (or files are pasted), items must be handled\n    // instead of files.\n\n  }, {\n    key: \"_addFilesFromItems\",\n    value: function _addFilesFromItems(items) {\n      var _this4 = this;\n\n      return function () {\n        var result = [];\n\n        var _iterator6 = dropzone_createForOfIteratorHelper(items, true),\n            _step6;\n\n        try {\n          for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {\n            var item = _step6.value;\n            var entry;\n\n            if (item.webkitGetAsEntry != null && (entry = item.webkitGetAsEntry())) {\n              if (entry.isFile) {\n                result.push(_this4.addFile(item.getAsFile()));\n              } else if (entry.isDirectory) {\n                // Append all files from that directory to files\n                result.push(_this4._addFilesFromDirectory(entry, entry.name));\n              } else {\n                result.push(undefined);\n              }\n            } else if (item.getAsFile != null) {\n              if (item.kind == null || item.kind === \"file\") {\n                result.push(_this4.addFile(item.getAsFile()));\n              } else {\n                result.push(undefined);\n              }\n            } else {\n              result.push(undefined);\n            }\n          }\n        } catch (err) {\n          _iterator6.e(err);\n        } finally {\n          _iterator6.f();\n        }\n\n        return result;\n      }();\n    } // Goes through the directory, and adds each file it finds recursively\n\n  }, {\n    key: \"_addFilesFromDirectory\",\n    value: function _addFilesFromDirectory(directory, path) {\n      var _this5 = this;\n\n      var dirReader = directory.createReader();\n\n      var errorHandler = function errorHandler(error) {\n        return __guardMethod__(console, \"log\", function (o) {\n          return o.log(error);\n        });\n      };\n\n      var readEntries = function readEntries() {\n        return dirReader.readEntries(function (entries) {\n          if (entries.length > 0) {\n            var _iterator7 = dropzone_createForOfIteratorHelper(entries, true),\n                _step7;\n\n            try {\n              for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {\n                var entry = _step7.value;\n\n                if (entry.isFile) {\n                  entry.file(function (file) {\n                    if (_this5.options.ignoreHiddenFiles && file.name.substring(0, 1) === \".\") {\n                      return;\n                    }\n\n                    file.fullPath = \"\".concat(path, \"/\").concat(file.name);\n                    return _this5.addFile(file);\n                  });\n                } else if (entry.isDirectory) {\n                  _this5._addFilesFromDirectory(entry, \"\".concat(path, \"/\").concat(entry.name));\n                }\n              } // Recursively call readEntries() again, since browser only handle\n              // the first 100 entries.\n              // See: https://developer.mozilla.org/en-US/docs/Web/API/DirectoryReader#readEntries\n\n            } catch (err) {\n              _iterator7.e(err);\n            } finally {\n              _iterator7.f();\n            }\n\n            readEntries();\n          }\n\n          return null;\n        }, errorHandler);\n      };\n\n      return readEntries();\n    } // If `done()` is called without argument the file is accepted\n    // If you call it with an error message, the file is rejected\n    // (This allows for asynchronous validation)\n    //\n    // This function checks the filesize, and if the file.type passes the\n    // `acceptedFiles` check.\n\n  }, {\n    key: \"accept\",\n    value: function accept(file, done) {\n      if (this.options.maxFilesize && file.size > this.options.maxFilesize * 1024 * 1024) {\n        done(this.options.dictFileTooBig.replace(\"{{filesize}}\", Math.round(file.size / 1024 / 10.24) / 100).replace(\"{{maxFilesize}}\", this.options.maxFilesize));\n      } else if (!Dropzone.isValidFile(file, this.options.acceptedFiles)) {\n        done(this.options.dictInvalidFileType);\n      } else if (this.options.maxFiles != null && this.getAcceptedFiles().length >= this.options.maxFiles) {\n        done(this.options.dictMaxFilesExceeded.replace(\"{{maxFiles}}\", this.options.maxFiles));\n        this.emit(\"maxfilesexceeded\", file);\n      } else {\n        this.options.accept.call(this, file, done);\n      }\n    }\n  }, {\n    key: \"addFile\",\n    value: function addFile(file) {\n      var _this6 = this;\n\n      file.upload = {\n        uuid: Dropzone.uuidv4(),\n        progress: 0,\n        // Setting the total upload size to file.size for the beginning\n        // It's actual different than the size to be transmitted.\n        total: file.size,\n        bytesSent: 0,\n        filename: this._renameFile(file) // Not setting chunking information here, because the acutal data — and\n        // thus the chunks — might change if `options.transformFile` is set\n        // and does something to the data.\n\n      };\n      this.files.push(file);\n      file.status = Dropzone.ADDED;\n      this.emit(\"addedfile\", file);\n\n      this._enqueueThumbnail(file);\n\n      this.accept(file, function (error) {\n        if (error) {\n          file.accepted = false;\n\n          _this6._errorProcessing([file], error); // Will set the file.status\n\n        } else {\n          file.accepted = true;\n\n          if (_this6.options.autoQueue) {\n            _this6.enqueueFile(file);\n          } // Will set .accepted = true\n\n        }\n\n        _this6._updateMaxFilesReachedClass();\n      });\n    } // Wrapper for enqueueFile\n\n  }, {\n    key: \"enqueueFiles\",\n    value: function enqueueFiles(files) {\n      var _iterator8 = dropzone_createForOfIteratorHelper(files, true),\n          _step8;\n\n      try {\n        for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {\n          var file = _step8.value;\n          this.enqueueFile(file);\n        }\n      } catch (err) {\n        _iterator8.e(err);\n      } finally {\n        _iterator8.f();\n      }\n\n      return null;\n    }\n  }, {\n    key: \"enqueueFile\",\n    value: function enqueueFile(file) {\n      var _this7 = this;\n\n      if (file.status === Dropzone.ADDED && file.accepted === true) {\n        file.status = Dropzone.QUEUED;\n\n        if (this.options.autoProcessQueue) {\n          return setTimeout(function () {\n            return _this7.processQueue();\n          }, 0); // Deferring the call\n        }\n      } else {\n        throw new Error(\"This file can't be queued because it has already been processed or was rejected.\");\n      }\n    }\n  }, {\n    key: \"_enqueueThumbnail\",\n    value: function _enqueueThumbnail(file) {\n      var _this8 = this;\n\n      if (this.options.createImageThumbnails && file.type.match(/image.*/) && file.size <= this.options.maxThumbnailFilesize * 1024 * 1024) {\n        this._thumbnailQueue.push(file);\n\n        return setTimeout(function () {\n          return _this8._processThumbnailQueue();\n        }, 0); // Deferring the call\n      }\n    }\n  }, {\n    key: \"_processThumbnailQueue\",\n    value: function _processThumbnailQueue() {\n      var _this9 = this;\n\n      if (this._processingThumbnail || this._thumbnailQueue.length === 0) {\n        return;\n      }\n\n      this._processingThumbnail = true;\n\n      var file = this._thumbnailQueue.shift();\n\n      return this.createThumbnail(file, this.options.thumbnailWidth, this.options.thumbnailHeight, this.options.thumbnailMethod, true, function (dataUrl) {\n        _this9.emit(\"thumbnail\", file, dataUrl);\n\n        _this9._processingThumbnail = false;\n        return _this9._processThumbnailQueue();\n      });\n    } // Can be called by the user to remove a file\n\n  }, {\n    key: \"removeFile\",\n    value: function removeFile(file) {\n      if (file.status === Dropzone.UPLOADING) {\n        this.cancelUpload(file);\n      }\n\n      this.files = without(this.files, file);\n      this.emit(\"removedfile\", file);\n\n      if (this.files.length === 0) {\n        return this.emit(\"reset\");\n      }\n    } // Removes all files that aren't currently processed from the list\n\n  }, {\n    key: \"removeAllFiles\",\n    value: function removeAllFiles(cancelIfNecessary) {\n      // Create a copy of files since removeFile() changes the @files array.\n      if (cancelIfNecessary == null) {\n        cancelIfNecessary = false;\n      }\n\n      var _iterator9 = dropzone_createForOfIteratorHelper(this.files.slice(), true),\n          _step9;\n\n      try {\n        for (_iterator9.s(); !(_step9 = _iterator9.n()).done;) {\n          var file = _step9.value;\n\n          if (file.status !== Dropzone.UPLOADING || cancelIfNecessary) {\n            this.removeFile(file);\n          }\n        }\n      } catch (err) {\n        _iterator9.e(err);\n      } finally {\n        _iterator9.f();\n      }\n\n      return null;\n    } // Resizes an image before it gets sent to the server. This function is the default behavior of\n    // `options.transformFile` if `resizeWidth` or `resizeHeight` are set. The callback is invoked with\n    // the resized blob.\n\n  }, {\n    key: \"resizeImage\",\n    value: function resizeImage(file, width, height, resizeMethod, callback) {\n      var _this10 = this;\n\n      return this.createThumbnail(file, width, height, resizeMethod, true, function (dataUrl, canvas) {\n        if (canvas == null) {\n          // The image has not been resized\n          return callback(file);\n        } else {\n          var resizeMimeType = _this10.options.resizeMimeType;\n\n          if (resizeMimeType == null) {\n            resizeMimeType = file.type;\n          }\n\n          var resizedDataURL = canvas.toDataURL(resizeMimeType, _this10.options.resizeQuality);\n\n          if (resizeMimeType === \"image/jpeg\" || resizeMimeType === \"image/jpg\") {\n            // Now add the original EXIF information\n            resizedDataURL = ExifRestore.restore(file.dataURL, resizedDataURL);\n          }\n\n          return callback(Dropzone.dataURItoBlob(resizedDataURL));\n        }\n      });\n    }\n  }, {\n    key: \"createThumbnail\",\n    value: function createThumbnail(file, width, height, resizeMethod, fixOrientation, callback) {\n      var _this11 = this;\n\n      var fileReader = new FileReader();\n\n      fileReader.onload = function () {\n        file.dataURL = fileReader.result; // Don't bother creating a thumbnail for SVG images since they're vector\n\n        if (file.type === \"image/svg+xml\") {\n          if (callback != null) {\n            callback(fileReader.result);\n          }\n\n          return;\n        }\n\n        _this11.createThumbnailFromUrl(file, width, height, resizeMethod, fixOrientation, callback);\n      };\n\n      fileReader.readAsDataURL(file);\n    } // `mockFile` needs to have these attributes:\n    //\n    //     { name: 'name', size: 12345, imageUrl: '' }\n    //\n    // `callback` will be invoked when the image has been downloaded and displayed.\n    // `crossOrigin` will be added to the `img` tag when accessing the file.\n\n  }, {\n    key: \"displayExistingFile\",\n    value: function displayExistingFile(mockFile, imageUrl, callback, crossOrigin) {\n      var _this12 = this;\n\n      var resizeThumbnail = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;\n      this.emit(\"addedfile\", mockFile);\n      this.emit(\"complete\", mockFile);\n\n      if (!resizeThumbnail) {\n        this.emit(\"thumbnail\", mockFile, imageUrl);\n        if (callback) callback();\n      } else {\n        var onDone = function onDone(thumbnail) {\n          _this12.emit(\"thumbnail\", mockFile, thumbnail);\n\n          if (callback) callback();\n        };\n\n        mockFile.dataURL = imageUrl;\n        this.createThumbnailFromUrl(mockFile, this.options.thumbnailWidth, this.options.thumbnailHeight, this.options.thumbnailMethod, this.options.fixOrientation, onDone, crossOrigin);\n      }\n    }\n  }, {\n    key: \"createThumbnailFromUrl\",\n    value: function createThumbnailFromUrl(file, width, height, resizeMethod, fixOrientation, callback, crossOrigin) {\n      var _this13 = this;\n\n      // Not using `new Image` here because of a bug in latest Chrome versions.\n      // See https://github.com/enyo/dropzone/pull/226\n      var img = document.createElement(\"img\");\n\n      if (crossOrigin) {\n        img.crossOrigin = crossOrigin;\n      } // fixOrientation is not needed anymore with browsers handling imageOrientation\n\n\n      fixOrientation = getComputedStyle(document.body)[\"imageOrientation\"] == \"from-image\" ? false : fixOrientation;\n\n      img.onload = function () {\n        var loadExif = function loadExif(callback) {\n          return callback(1);\n        };\n\n        if (typeof EXIF !== \"undefined\" && EXIF !== null && fixOrientation) {\n          loadExif = function loadExif(callback) {\n            return EXIF.getData(img, function () {\n              return callback(EXIF.getTag(this, \"Orientation\"));\n            });\n          };\n        }\n\n        return loadExif(function (orientation) {\n          file.width = img.width;\n          file.height = img.height;\n\n          var resizeInfo = _this13.options.resize.call(_this13, file, width, height, resizeMethod);\n\n          var canvas = document.createElement(\"canvas\");\n          var ctx = canvas.getContext(\"2d\");\n          canvas.width = resizeInfo.trgWidth;\n          canvas.height = resizeInfo.trgHeight;\n\n          if (orientation > 4) {\n            canvas.width = resizeInfo.trgHeight;\n            canvas.height = resizeInfo.trgWidth;\n          }\n\n          switch (orientation) {\n            case 2:\n              // horizontal flip\n              ctx.translate(canvas.width, 0);\n              ctx.scale(-1, 1);\n              break;\n\n            case 3:\n              // 180° rotate left\n              ctx.translate(canvas.width, canvas.height);\n              ctx.rotate(Math.PI);\n              break;\n\n            case 4:\n              // vertical flip\n              ctx.translate(0, canvas.height);\n              ctx.scale(1, -1);\n              break;\n\n            case 5:\n              // vertical flip + 90 rotate right\n              ctx.rotate(0.5 * Math.PI);\n              ctx.scale(1, -1);\n              break;\n\n            case 6:\n              // 90° rotate right\n              ctx.rotate(0.5 * Math.PI);\n              ctx.translate(0, -canvas.width);\n              break;\n\n            case 7:\n              // horizontal flip + 90 rotate right\n              ctx.rotate(0.5 * Math.PI);\n              ctx.translate(canvas.height, -canvas.width);\n              ctx.scale(-1, 1);\n              break;\n\n            case 8:\n              // 90° rotate left\n              ctx.rotate(-0.5 * Math.PI);\n              ctx.translate(-canvas.height, 0);\n              break;\n          } // This is a bugfix for iOS' scaling bug.\n\n\n          drawImageIOSFix(ctx, img, resizeInfo.srcX != null ? resizeInfo.srcX : 0, resizeInfo.srcY != null ? resizeInfo.srcY : 0, resizeInfo.srcWidth, resizeInfo.srcHeight, resizeInfo.trgX != null ? resizeInfo.trgX : 0, resizeInfo.trgY != null ? resizeInfo.trgY : 0, resizeInfo.trgWidth, resizeInfo.trgHeight);\n          var thumbnail = canvas.toDataURL(\"image/png\");\n\n          if (callback != null) {\n            return callback(thumbnail, canvas);\n          }\n        });\n      };\n\n      if (callback != null) {\n        img.onerror = callback;\n      }\n\n      return img.src = file.dataURL;\n    } // Goes through the queue and processes files if there aren't too many already.\n\n  }, {\n    key: \"processQueue\",\n    value: function processQueue() {\n      var parallelUploads = this.options.parallelUploads;\n      var processingLength = this.getUploadingFiles().length;\n      var i = processingLength; // There are already at least as many files uploading than should be\n\n      if (processingLength >= parallelUploads) {\n        return;\n      }\n\n      var queuedFiles = this.getQueuedFiles();\n\n      if (!(queuedFiles.length > 0)) {\n        return;\n      }\n\n      if (this.options.uploadMultiple) {\n        // The files should be uploaded in one request\n        return this.processFiles(queuedFiles.slice(0, parallelUploads - processingLength));\n      } else {\n        while (i < parallelUploads) {\n          if (!queuedFiles.length) {\n            return;\n          } // Nothing left to process\n\n\n          this.processFile(queuedFiles.shift());\n          i++;\n        }\n      }\n    } // Wrapper for `processFiles`\n\n  }, {\n    key: \"processFile\",\n    value: function processFile(file) {\n      return this.processFiles([file]);\n    } // Loads the file, then calls finishedLoading()\n\n  }, {\n    key: \"processFiles\",\n    value: function processFiles(files) {\n      var _iterator10 = dropzone_createForOfIteratorHelper(files, true),\n          _step10;\n\n      try {\n        for (_iterator10.s(); !(_step10 = _iterator10.n()).done;) {\n          var file = _step10.value;\n          file.processing = true; // Backwards compatibility\n\n          file.status = Dropzone.UPLOADING;\n          this.emit(\"processing\", file);\n        }\n      } catch (err) {\n        _iterator10.e(err);\n      } finally {\n        _iterator10.f();\n      }\n\n      if (this.options.uploadMultiple) {\n        this.emit(\"processingmultiple\", files);\n      }\n\n      return this.uploadFiles(files);\n    }\n  }, {\n    key: \"_getFilesWithXhr\",\n    value: function _getFilesWithXhr(xhr) {\n      var files;\n      return files = this.files.filter(function (file) {\n        return file.xhr === xhr;\n      }).map(function (file) {\n        return file;\n      });\n    } // Cancels the file upload and sets the status to CANCELED\n    // **if** the file is actually being uploaded.\n    // If it's still in the queue, the file is being removed from it and the status\n    // set to CANCELED.\n\n  }, {\n    key: \"cancelUpload\",\n    value: function cancelUpload(file) {\n      if (file.status === Dropzone.UPLOADING) {\n        var groupedFiles = this._getFilesWithXhr(file.xhr);\n\n        var _iterator11 = dropzone_createForOfIteratorHelper(groupedFiles, true),\n            _step11;\n\n        try {\n          for (_iterator11.s(); !(_step11 = _iterator11.n()).done;) {\n            var groupedFile = _step11.value;\n            groupedFile.status = Dropzone.CANCELED;\n          }\n        } catch (err) {\n          _iterator11.e(err);\n        } finally {\n          _iterator11.f();\n        }\n\n        if (typeof file.xhr !== \"undefined\") {\n          file.xhr.abort();\n        }\n\n        var _iterator12 = dropzone_createForOfIteratorHelper(groupedFiles, true),\n            _step12;\n\n        try {\n          for (_iterator12.s(); !(_step12 = _iterator12.n()).done;) {\n            var _groupedFile = _step12.value;\n            this.emit(\"canceled\", _groupedFile);\n          }\n        } catch (err) {\n          _iterator12.e(err);\n        } finally {\n          _iterator12.f();\n        }\n\n        if (this.options.uploadMultiple) {\n          this.emit(\"canceledmultiple\", groupedFiles);\n        }\n      } else if (file.status === Dropzone.ADDED || file.status === Dropzone.QUEUED) {\n        file.status = Dropzone.CANCELED;\n        this.emit(\"canceled\", file);\n\n        if (this.options.uploadMultiple) {\n          this.emit(\"canceledmultiple\", [file]);\n        }\n      }\n\n      if (this.options.autoProcessQueue) {\n        return this.processQueue();\n      }\n    }\n  }, {\n    key: \"resolveOption\",\n    value: function resolveOption(option) {\n      if (typeof option === \"function\") {\n        for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n          args[_key - 1] = arguments[_key];\n        }\n\n        return option.apply(this, args);\n      }\n\n      return option;\n    }\n  }, {\n    key: \"uploadFile\",\n    value: function uploadFile(file) {\n      return this.uploadFiles([file]);\n    }\n  }, {\n    key: \"uploadFiles\",\n    value: function uploadFiles(files) {\n      var _this14 = this;\n\n      this._transformFiles(files, function (transformedFiles) {\n        if (_this14.options.chunking) {\n          // Chunking is not allowed to be used with `uploadMultiple` so we know\n          // that there is only __one__file.\n          var transformedFile = transformedFiles[0];\n          files[0].upload.chunked = _this14.options.chunking && (_this14.options.forceChunking || transformedFile.size > _this14.options.chunkSize);\n          files[0].upload.totalChunkCount = Math.ceil(transformedFile.size / _this14.options.chunkSize);\n        }\n\n        if (files[0].upload.chunked) {\n          // This file should be sent in chunks!\n          // If the chunking option is set, we **know** that there can only be **one** file, since\n          // uploadMultiple is not allowed with this option.\n          var file = files[0];\n          var _transformedFile = transformedFiles[0];\n          var startedChunkCount = 0;\n          file.upload.chunks = [];\n\n          var handleNextChunk = function handleNextChunk() {\n            var chunkIndex = 0; // Find the next item in file.upload.chunks that is not defined yet.\n\n            while (file.upload.chunks[chunkIndex] !== undefined) {\n              chunkIndex++;\n            } // This means, that all chunks have already been started.\n\n\n            if (chunkIndex >= file.upload.totalChunkCount) return;\n            startedChunkCount++;\n            var start = chunkIndex * _this14.options.chunkSize;\n            var end = Math.min(start + _this14.options.chunkSize, _transformedFile.size);\n            var dataBlock = {\n              name: _this14._getParamName(0),\n              data: _transformedFile.webkitSlice ? _transformedFile.webkitSlice(start, end) : _transformedFile.slice(start, end),\n              filename: file.upload.filename,\n              chunkIndex: chunkIndex\n            };\n            file.upload.chunks[chunkIndex] = {\n              file: file,\n              index: chunkIndex,\n              dataBlock: dataBlock,\n              // In case we want to retry.\n              status: Dropzone.UPLOADING,\n              progress: 0,\n              retries: 0 // The number of times this block has been retried.\n\n            };\n\n            _this14._uploadData(files, [dataBlock]);\n          };\n\n          file.upload.finishedChunkUpload = function (chunk, response) {\n            var allFinished = true;\n            chunk.status = Dropzone.SUCCESS; // Clear the data from the chunk\n\n            chunk.dataBlock = null; // Leaving this reference to xhr intact here will cause memory leaks in some browsers\n\n            chunk.xhr = null;\n\n            for (var i = 0; i < file.upload.totalChunkCount; i++) {\n              if (file.upload.chunks[i] === undefined) {\n                return handleNextChunk();\n              }\n\n              if (file.upload.chunks[i].status !== Dropzone.SUCCESS) {\n                allFinished = false;\n              }\n            }\n\n            if (allFinished) {\n              _this14.options.chunksUploaded(file, function () {\n                _this14._finished(files, response, null);\n              });\n            }\n          };\n\n          if (_this14.options.parallelChunkUploads) {\n            for (var i = 0; i < file.upload.totalChunkCount; i++) {\n              handleNextChunk();\n            }\n          } else {\n            handleNextChunk();\n          }\n        } else {\n          var dataBlocks = [];\n\n          for (var _i2 = 0; _i2 < files.length; _i2++) {\n            dataBlocks[_i2] = {\n              name: _this14._getParamName(_i2),\n              data: transformedFiles[_i2],\n              filename: files[_i2].upload.filename\n            };\n          }\n\n          _this14._uploadData(files, dataBlocks);\n        }\n      });\n    } /// Returns the right chunk for given file and xhr\n\n  }, {\n    key: \"_getChunk\",\n    value: function _getChunk(file, xhr) {\n      for (var i = 0; i < file.upload.totalChunkCount; i++) {\n        if (file.upload.chunks[i] !== undefined && file.upload.chunks[i].xhr === xhr) {\n          return file.upload.chunks[i];\n        }\n      }\n    } // This function actually uploads the file(s) to the server.\n    // If dataBlocks contains the actual data to upload (meaning, that this could either be transformed\n    // files, or individual chunks for chunked upload).\n\n  }, {\n    key: \"_uploadData\",\n    value: function _uploadData(files, dataBlocks) {\n      var _this15 = this;\n\n      var xhr = new XMLHttpRequest(); // Put the xhr object in the file objects to be able to reference it later.\n\n      var _iterator13 = dropzone_createForOfIteratorHelper(files, true),\n          _step13;\n\n      try {\n        for (_iterator13.s(); !(_step13 = _iterator13.n()).done;) {\n          var file = _step13.value;\n          file.xhr = xhr;\n        }\n      } catch (err) {\n        _iterator13.e(err);\n      } finally {\n        _iterator13.f();\n      }\n\n      if (files[0].upload.chunked) {\n        // Put the xhr object in the right chunk object, so it can be associated later, and found with _getChunk\n        files[0].upload.chunks[dataBlocks[0].chunkIndex].xhr = xhr;\n      }\n\n      var method = this.resolveOption(this.options.method, files);\n      var url = this.resolveOption(this.options.url, files);\n      xhr.open(method, url, true); // Setting the timeout after open because of IE11 issue: https://gitlab.com/meno/dropzone/issues/8\n\n      var timeout = this.resolveOption(this.options.timeout, files);\n      if (timeout) xhr.timeout = this.resolveOption(this.options.timeout, files); // Has to be after `.open()`. See https://github.com/enyo/dropzone/issues/179\n\n      xhr.withCredentials = !!this.options.withCredentials;\n\n      xhr.onload = function (e) {\n        _this15._finishedUploading(files, xhr, e);\n      };\n\n      xhr.ontimeout = function () {\n        _this15._handleUploadError(files, xhr, \"Request timedout after \".concat(_this15.options.timeout / 1000, \" seconds\"));\n      };\n\n      xhr.onerror = function () {\n        _this15._handleUploadError(files, xhr);\n      }; // Some browsers do not have the .upload property\n\n\n      var progressObj = xhr.upload != null ? xhr.upload : xhr;\n\n      progressObj.onprogress = function (e) {\n        return _this15._updateFilesUploadProgress(files, xhr, e);\n      };\n\n      var headers = {\n        Accept: \"application/json\",\n        \"Cache-Control\": \"no-cache\",\n        \"X-Requested-With\": \"XMLHttpRequest\"\n      };\n\n      if (this.options.headers) {\n        Dropzone.extend(headers, this.options.headers);\n      }\n\n      for (var headerName in headers) {\n        var headerValue = headers[headerName];\n\n        if (headerValue) {\n          xhr.setRequestHeader(headerName, headerValue);\n        }\n      }\n\n      var formData = new FormData(); // Adding all @options parameters\n\n      if (this.options.params) {\n        var additionalParams = this.options.params;\n\n        if (typeof additionalParams === \"function\") {\n          additionalParams = additionalParams.call(this, files, xhr, files[0].upload.chunked ? this._getChunk(files[0], xhr) : null);\n        }\n\n        for (var key in additionalParams) {\n          var value = additionalParams[key];\n\n          if (Array.isArray(value)) {\n            // The additional parameter contains an array,\n            // so lets iterate over it to attach each value\n            // individually.\n            for (var i = 0; i < value.length; i++) {\n              formData.append(key, value[i]);\n            }\n          } else {\n            formData.append(key, value);\n          }\n        }\n      } // Let the user add additional data if necessary\n\n\n      var _iterator14 = dropzone_createForOfIteratorHelper(files, true),\n          _step14;\n\n      try {\n        for (_iterator14.s(); !(_step14 = _iterator14.n()).done;) {\n          var _file = _step14.value;\n          this.emit(\"sending\", _file, xhr, formData);\n        }\n      } catch (err) {\n        _iterator14.e(err);\n      } finally {\n        _iterator14.f();\n      }\n\n      if (this.options.uploadMultiple) {\n        this.emit(\"sendingmultiple\", files, xhr, formData);\n      }\n\n      this._addFormElementData(formData); // Finally add the files\n      // Has to be last because some servers (eg: S3) expect the file to be the last parameter\n\n\n      for (var _i3 = 0; _i3 < dataBlocks.length; _i3++) {\n        var dataBlock = dataBlocks[_i3];\n        formData.append(dataBlock.name, dataBlock.data, dataBlock.filename);\n      }\n\n      this.submitRequest(xhr, formData, files);\n    } // Transforms all files with this.options.transformFile and invokes done with the transformed files when done.\n\n  }, {\n    key: \"_transformFiles\",\n    value: function _transformFiles(files, done) {\n      var _this16 = this;\n\n      var transformedFiles = []; // Clumsy way of handling asynchronous calls, until I get to add a proper Future library.\n\n      var doneCounter = 0;\n\n      var _loop = function _loop(i) {\n        _this16.options.transformFile.call(_this16, files[i], function (transformedFile) {\n          transformedFiles[i] = transformedFile;\n\n          if (++doneCounter === files.length) {\n            done(transformedFiles);\n          }\n        });\n      };\n\n      for (var i = 0; i < files.length; i++) {\n        _loop(i);\n      }\n    } // Takes care of adding other input elements of the form to the AJAX request\n\n  }, {\n    key: \"_addFormElementData\",\n    value: function _addFormElementData(formData) {\n      // Take care of other input elements\n      if (this.element.tagName === \"FORM\") {\n        var _iterator15 = dropzone_createForOfIteratorHelper(this.element.querySelectorAll(\"input, textarea, select, button\"), true),\n            _step15;\n\n        try {\n          for (_iterator15.s(); !(_step15 = _iterator15.n()).done;) {\n            var input = _step15.value;\n            var inputName = input.getAttribute(\"name\");\n            var inputType = input.getAttribute(\"type\");\n            if (inputType) inputType = inputType.toLowerCase(); // If the input doesn't have a name, we can't use it.\n\n            if (typeof inputName === \"undefined\" || inputName === null) continue;\n\n            if (input.tagName === \"SELECT\" && input.hasAttribute(\"multiple\")) {\n              // Possibly multiple values\n              var _iterator16 = dropzone_createForOfIteratorHelper(input.options, true),\n                  _step16;\n\n              try {\n                for (_iterator16.s(); !(_step16 = _iterator16.n()).done;) {\n                  var option = _step16.value;\n\n                  if (option.selected) {\n                    formData.append(inputName, option.value);\n                  }\n                }\n              } catch (err) {\n                _iterator16.e(err);\n              } finally {\n                _iterator16.f();\n              }\n            } else if (!inputType || inputType !== \"checkbox\" && inputType !== \"radio\" || input.checked) {\n              formData.append(inputName, input.value);\n            }\n          }\n        } catch (err) {\n          _iterator15.e(err);\n        } finally {\n          _iterator15.f();\n        }\n      }\n    } // Invoked when there is new progress information about given files.\n    // If e is not provided, it is assumed that the upload is finished.\n\n  }, {\n    key: \"_updateFilesUploadProgress\",\n    value: function _updateFilesUploadProgress(files, xhr, e) {\n      if (!files[0].upload.chunked) {\n        // Handle file uploads without chunking\n        var _iterator17 = dropzone_createForOfIteratorHelper(files, true),\n            _step17;\n\n        try {\n          for (_iterator17.s(); !(_step17 = _iterator17.n()).done;) {\n            var file = _step17.value;\n\n            if (file.upload.total && file.upload.bytesSent && file.upload.bytesSent == file.upload.total) {\n              // If both, the `total` and `bytesSent` have already been set, and\n              // they are equal (meaning progress is at 100%), we can skip this\n              // file, since an upload progress shouldn't go down.\n              continue;\n            }\n\n            if (e) {\n              file.upload.progress = 100 * e.loaded / e.total;\n              file.upload.total = e.total;\n              file.upload.bytesSent = e.loaded;\n            } else {\n              // No event, so we're at 100%\n              file.upload.progress = 100;\n              file.upload.bytesSent = file.upload.total;\n            }\n\n            this.emit(\"uploadprogress\", file, file.upload.progress, file.upload.bytesSent);\n          }\n        } catch (err) {\n          _iterator17.e(err);\n        } finally {\n          _iterator17.f();\n        }\n      } else {\n        // Handle chunked file uploads\n        // Chunked upload is not compatible with uploading multiple files in one\n        // request, so we know there's only one file.\n        var _file2 = files[0]; // Since this is a chunked upload, we need to update the appropriate chunk\n        // progress.\n\n        var chunk = this._getChunk(_file2, xhr);\n\n        if (e) {\n          chunk.progress = 100 * e.loaded / e.total;\n          chunk.total = e.total;\n          chunk.bytesSent = e.loaded;\n        } else {\n          // No event, so we're at 100%\n          chunk.progress = 100;\n          chunk.bytesSent = chunk.total;\n        } // Now tally the *file* upload progress from its individual chunks\n\n\n        _file2.upload.progress = 0;\n        _file2.upload.total = 0;\n        _file2.upload.bytesSent = 0;\n\n        for (var i = 0; i < _file2.upload.totalChunkCount; i++) {\n          if (_file2.upload.chunks[i] && typeof _file2.upload.chunks[i].progress !== \"undefined\") {\n            _file2.upload.progress += _file2.upload.chunks[i].progress;\n            _file2.upload.total += _file2.upload.chunks[i].total;\n            _file2.upload.bytesSent += _file2.upload.chunks[i].bytesSent;\n          }\n        } // Since the process is a percentage, we need to divide by the amount of\n        // chunks we've used.\n\n\n        _file2.upload.progress = _file2.upload.progress / _file2.upload.totalChunkCount;\n        this.emit(\"uploadprogress\", _file2, _file2.upload.progress, _file2.upload.bytesSent);\n      }\n    }\n  }, {\n    key: \"_finishedUploading\",\n    value: function _finishedUploading(files, xhr, e) {\n      var response;\n\n      if (files[0].status === Dropzone.CANCELED) {\n        return;\n      }\n\n      if (xhr.readyState !== 4) {\n        return;\n      }\n\n      if (xhr.responseType !== \"arraybuffer\" && xhr.responseType !== \"blob\") {\n        response = xhr.responseText;\n\n        if (xhr.getResponseHeader(\"content-type\") && ~xhr.getResponseHeader(\"content-type\").indexOf(\"application/json\")) {\n          try {\n            response = JSON.parse(response);\n          } catch (error) {\n            e = error;\n            response = \"Invalid JSON response from server.\";\n          }\n        }\n      }\n\n      this._updateFilesUploadProgress(files, xhr);\n\n      if (!(200 <= xhr.status && xhr.status < 300)) {\n        this._handleUploadError(files, xhr, response);\n      } else {\n        if (files[0].upload.chunked) {\n          files[0].upload.finishedChunkUpload(this._getChunk(files[0], xhr), response);\n        } else {\n          this._finished(files, response, e);\n        }\n      }\n    }\n  }, {\n    key: \"_handleUploadError\",\n    value: function _handleUploadError(files, xhr, response) {\n      if (files[0].status === Dropzone.CANCELED) {\n        return;\n      }\n\n      if (files[0].upload.chunked && this.options.retryChunks) {\n        var chunk = this._getChunk(files[0], xhr);\n\n        if (chunk.retries++ < this.options.retryChunksLimit) {\n          this._uploadData(files, [chunk.dataBlock]);\n\n          return;\n        } else {\n          console.warn(\"Retried this chunk too often. Giving up.\");\n        }\n      }\n\n      this._errorProcessing(files, response || this.options.dictResponseError.replace(\"{{statusCode}}\", xhr.status), xhr);\n    }\n  }, {\n    key: \"submitRequest\",\n    value: function submitRequest(xhr, formData, files) {\n      if (xhr.readyState != 1) {\n        console.warn(\"Cannot send this request because the XMLHttpRequest.readyState is not OPENED.\");\n        return;\n      }\n\n      xhr.send(formData);\n    } // Called internally when processing is finished.\n    // Individual callbacks have to be called in the appropriate sections.\n\n  }, {\n    key: \"_finished\",\n    value: function _finished(files, responseText, e) {\n      var _iterator18 = dropzone_createForOfIteratorHelper(files, true),\n          _step18;\n\n      try {\n        for (_iterator18.s(); !(_step18 = _iterator18.n()).done;) {\n          var file = _step18.value;\n          file.status = Dropzone.SUCCESS;\n          this.emit(\"success\", file, responseText, e);\n          this.emit(\"complete\", file);\n        }\n      } catch (err) {\n        _iterator18.e(err);\n      } finally {\n        _iterator18.f();\n      }\n\n      if (this.options.uploadMultiple) {\n        this.emit(\"successmultiple\", files, responseText, e);\n        this.emit(\"completemultiple\", files);\n      }\n\n      if (this.options.autoProcessQueue) {\n        return this.processQueue();\n      }\n    } // Called internally when processing is finished.\n    // Individual callbacks have to be called in the appropriate sections.\n\n  }, {\n    key: \"_errorProcessing\",\n    value: function _errorProcessing(files, message, xhr) {\n      var _iterator19 = dropzone_createForOfIteratorHelper(files, true),\n          _step19;\n\n      try {\n        for (_iterator19.s(); !(_step19 = _iterator19.n()).done;) {\n          var file = _step19.value;\n          file.status = Dropzone.ERROR;\n          this.emit(\"error\", file, message, xhr);\n          this.emit(\"complete\", file);\n        }\n      } catch (err) {\n        _iterator19.e(err);\n      } finally {\n        _iterator19.f();\n      }\n\n      if (this.options.uploadMultiple) {\n        this.emit(\"errormultiple\", files, message, xhr);\n        this.emit(\"completemultiple\", files);\n      }\n\n      if (this.options.autoProcessQueue) {\n        return this.processQueue();\n      }\n    }\n  }], [{\n    key: \"initClass\",\n    value: function initClass() {\n      // Exposing the emitter class, mainly for tests\n      this.prototype.Emitter = Emitter;\n      /*\n       This is a list of all available events you can register on a dropzone object.\n        You can register an event handler like this:\n        dropzone.on(\"dragEnter\", function() { });\n        */\n\n      this.prototype.events = [\"drop\", \"dragstart\", \"dragend\", \"dragenter\", \"dragover\", \"dragleave\", \"addedfile\", \"addedfiles\", \"removedfile\", \"thumbnail\", \"error\", \"errormultiple\", \"processing\", \"processingmultiple\", \"uploadprogress\", \"totaluploadprogress\", \"sending\", \"sendingmultiple\", \"success\", \"successmultiple\", \"canceled\", \"canceledmultiple\", \"complete\", \"completemultiple\", \"reset\", \"maxfilesexceeded\", \"maxfilesreached\", \"queuecomplete\"];\n      this.prototype._thumbnailQueue = [];\n      this.prototype._processingThumbnail = false;\n    } // global utility\n\n  }, {\n    key: \"extend\",\n    value: function extend(target) {\n      for (var _len2 = arguments.length, objects = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n        objects[_key2 - 1] = arguments[_key2];\n      }\n\n      for (var _i4 = 0, _objects = objects; _i4 < _objects.length; _i4++) {\n        var object = _objects[_i4];\n\n        for (var key in object) {\n          var val = object[key];\n          target[key] = val;\n        }\n      }\n\n      return target;\n    }\n  }, {\n    key: \"uuidv4\",\n    value: function uuidv4() {\n      return \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/g, function (c) {\n        var r = Math.random() * 16 | 0,\n            v = c === \"x\" ? r : r & 0x3 | 0x8;\n        return v.toString(16);\n      });\n    }\n  }]);\n\n  return Dropzone;\n}(Emitter);\n\n\nDropzone.initClass();\nDropzone.version = \"5.9.3\"; // This is a map of options for your different dropzones. Add configurations\n// to this object for your different dropzone elemens.\n//\n// Example:\n//\n//     Dropzone.options.myDropzoneElementId = { maxFilesize: 1 };\n//\n// To disable autoDiscover for a specific element, you can set `false` as an option:\n//\n//     Dropzone.options.myDisabledElementId = false;\n//\n// And in html:\n//\n//     <form action=\"/upload\" id=\"my-dropzone-element-id\" class=\"dropzone\"></form>\n\nDropzone.options = {}; // Returns the options for an element or undefined if none available.\n\nDropzone.optionsForElement = function (element) {\n  // Get the `Dropzone.options.elementId` for this element if it exists\n  if (element.getAttribute(\"id\")) {\n    return Dropzone.options[camelize(element.getAttribute(\"id\"))];\n  } else {\n    return undefined;\n  }\n}; // Holds a list of all dropzone instances\n\n\nDropzone.instances = []; // Returns the dropzone for given element if any\n\nDropzone.forElement = function (element) {\n  if (typeof element === \"string\") {\n    element = document.querySelector(element);\n  }\n\n  if ((element != null ? element.dropzone : undefined) == null) {\n    throw new Error(\"No Dropzone found for given element. This is probably because you're trying to access it before Dropzone had the time to initialize. Use the `init` option to setup any additional observers on your Dropzone.\");\n  }\n\n  return element.dropzone;\n}; // Set to false if you don't want Dropzone to automatically find and attach to .dropzone elements.\n\n\nDropzone.autoDiscover = true; // Looks for all .dropzone elements and creates a dropzone for them\n\nDropzone.discover = function () {\n  var dropzones;\n\n  if (document.querySelectorAll) {\n    dropzones = document.querySelectorAll(\".dropzone\");\n  } else {\n    dropzones = []; // IE :(\n\n    var checkElements = function checkElements(elements) {\n      return function () {\n        var result = [];\n\n        var _iterator20 = dropzone_createForOfIteratorHelper(elements, true),\n            _step20;\n\n        try {\n          for (_iterator20.s(); !(_step20 = _iterator20.n()).done;) {\n            var el = _step20.value;\n\n            if (/(^| )dropzone($| )/.test(el.className)) {\n              result.push(dropzones.push(el));\n            } else {\n              result.push(undefined);\n            }\n          }\n        } catch (err) {\n          _iterator20.e(err);\n        } finally {\n          _iterator20.f();\n        }\n\n        return result;\n      }();\n    };\n\n    checkElements(document.getElementsByTagName(\"div\"));\n    checkElements(document.getElementsByTagName(\"form\"));\n  }\n\n  return function () {\n    var result = [];\n\n    var _iterator21 = dropzone_createForOfIteratorHelper(dropzones, true),\n        _step21;\n\n    try {\n      for (_iterator21.s(); !(_step21 = _iterator21.n()).done;) {\n        var dropzone = _step21.value;\n\n        // Create a dropzone unless auto discover has been disabled for specific element\n        if (Dropzone.optionsForElement(dropzone) !== false) {\n          result.push(new Dropzone(dropzone));\n        } else {\n          result.push(undefined);\n        }\n      }\n    } catch (err) {\n      _iterator21.e(err);\n    } finally {\n      _iterator21.f();\n    }\n\n    return result;\n  }();\n}; // Some browsers support drag and drog functionality, but not correctly.\n//\n// So I created a blocklist of userAgents. Yes, yes. Browser sniffing, I know.\n// But what to do when browsers *theoretically* support an API, but crash\n// when using it.\n//\n// This is a list of regular expressions tested against navigator.userAgent\n//\n// ** It should only be used on browser that *do* support the API, but\n// incorrectly **\n\n\nDropzone.blockedBrowsers = [// The mac os and windows phone version of opera 12 seems to have a problem with the File drag'n'drop API.\n/opera.*(Macintosh|Windows Phone).*version\\/12/i]; // Checks if the browser is supported\n\nDropzone.isBrowserSupported = function () {\n  var capableBrowser = true;\n\n  if (window.File && window.FileReader && window.FileList && window.Blob && window.FormData && document.querySelector) {\n    if (!(\"classList\" in document.createElement(\"a\"))) {\n      capableBrowser = false;\n    } else {\n      if (Dropzone.blacklistedBrowsers !== undefined) {\n        // Since this has been renamed, this makes sure we don't break older\n        // configuration.\n        Dropzone.blockedBrowsers = Dropzone.blacklistedBrowsers;\n      } // The browser supports the API, but may be blocked.\n\n\n      var _iterator22 = dropzone_createForOfIteratorHelper(Dropzone.blockedBrowsers, true),\n          _step22;\n\n      try {\n        for (_iterator22.s(); !(_step22 = _iterator22.n()).done;) {\n          var regex = _step22.value;\n\n          if (regex.test(navigator.userAgent)) {\n            capableBrowser = false;\n            continue;\n          }\n        }\n      } catch (err) {\n        _iterator22.e(err);\n      } finally {\n        _iterator22.f();\n      }\n    }\n  } else {\n    capableBrowser = false;\n  }\n\n  return capableBrowser;\n};\n\nDropzone.dataURItoBlob = function (dataURI) {\n  // convert base64 to raw binary data held in a string\n  // doesn't handle URLEncoded DataURIs - see SO answer #6850276 for code that does this\n  var byteString = atob(dataURI.split(\",\")[1]); // separate out the mime component\n\n  var mimeString = dataURI.split(\",\")[0].split(\":\")[1].split(\";\")[0]; // write the bytes of the string to an ArrayBuffer\n\n  var ab = new ArrayBuffer(byteString.length);\n  var ia = new Uint8Array(ab);\n\n  for (var i = 0, end = byteString.length, asc = 0 <= end; asc ? i <= end : i >= end; asc ? i++ : i--) {\n    ia[i] = byteString.charCodeAt(i);\n  } // write the ArrayBuffer to a blob\n\n\n  return new Blob([ab], {\n    type: mimeString\n  });\n}; // Returns an array without the rejected item\n\n\nvar without = function without(list, rejectedItem) {\n  return list.filter(function (item) {\n    return item !== rejectedItem;\n  }).map(function (item) {\n    return item;\n  });\n}; // abc-def_ghi -> abcDefGhi\n\n\nvar camelize = function camelize(str) {\n  return str.replace(/[\\-_](\\w)/g, function (match) {\n    return match.charAt(1).toUpperCase();\n  });\n}; // Creates an element from string\n\n\nDropzone.createElement = function (string) {\n  var div = document.createElement(\"div\");\n  div.innerHTML = string;\n  return div.childNodes[0];\n}; // Tests if given element is inside (or simply is) the container\n\n\nDropzone.elementInside = function (element, container) {\n  if (element === container) {\n    return true;\n  } // Coffeescript doesn't support do/while loops\n\n\n  while (element = element.parentNode) {\n    if (element === container) {\n      return true;\n    }\n  }\n\n  return false;\n};\n\nDropzone.getElement = function (el, name) {\n  var element;\n\n  if (typeof el === \"string\") {\n    element = document.querySelector(el);\n  } else if (el.nodeType != null) {\n    element = el;\n  }\n\n  if (element == null) {\n    throw new Error(\"Invalid `\".concat(name, \"` option provided. Please provide a CSS selector or a plain HTML element.\"));\n  }\n\n  return element;\n};\n\nDropzone.getElements = function (els, name) {\n  var el, elements;\n\n  if (els instanceof Array) {\n    elements = [];\n\n    try {\n      var _iterator23 = dropzone_createForOfIteratorHelper(els, true),\n          _step23;\n\n      try {\n        for (_iterator23.s(); !(_step23 = _iterator23.n()).done;) {\n          el = _step23.value;\n          elements.push(this.getElement(el, name));\n        }\n      } catch (err) {\n        _iterator23.e(err);\n      } finally {\n        _iterator23.f();\n      }\n    } catch (e) {\n      elements = null;\n    }\n  } else if (typeof els === \"string\") {\n    elements = [];\n\n    var _iterator24 = dropzone_createForOfIteratorHelper(document.querySelectorAll(els), true),\n        _step24;\n\n    try {\n      for (_iterator24.s(); !(_step24 = _iterator24.n()).done;) {\n        el = _step24.value;\n        elements.push(el);\n      }\n    } catch (err) {\n      _iterator24.e(err);\n    } finally {\n      _iterator24.f();\n    }\n  } else if (els.nodeType != null) {\n    elements = [els];\n  }\n\n  if (elements == null || !elements.length) {\n    throw new Error(\"Invalid `\".concat(name, \"` option provided. Please provide a CSS selector, a plain HTML element or a list of those.\"));\n  }\n\n  return elements;\n}; // Asks the user the question and calls accepted or rejected accordingly\n//\n// The default implementation just uses `window.confirm` and then calls the\n// appropriate callback.\n\n\nDropzone.confirm = function (question, accepted, rejected) {\n  if (window.confirm(question)) {\n    return accepted();\n  } else if (rejected != null) {\n    return rejected();\n  }\n}; // Validates the mime type like this:\n//\n// https://developer.mozilla.org/en-US/docs/HTML/Element/input#attr-accept\n\n\nDropzone.isValidFile = function (file, acceptedFiles) {\n  if (!acceptedFiles) {\n    return true;\n  } // If there are no accepted mime types, it's OK\n\n\n  acceptedFiles = acceptedFiles.split(\",\");\n  var mimeType = file.type;\n  var baseMimeType = mimeType.replace(/\\/.*$/, \"\");\n\n  var _iterator25 = dropzone_createForOfIteratorHelper(acceptedFiles, true),\n      _step25;\n\n  try {\n    for (_iterator25.s(); !(_step25 = _iterator25.n()).done;) {\n      var validType = _step25.value;\n      validType = validType.trim();\n\n      if (validType.charAt(0) === \".\") {\n        if (file.name.toLowerCase().indexOf(validType.toLowerCase(), file.name.length - validType.length) !== -1) {\n          return true;\n        }\n      } else if (/\\/\\*$/.test(validType)) {\n        // This is something like a image/* mime type\n        if (baseMimeType === validType.replace(/\\/.*$/, \"\")) {\n          return true;\n        }\n      } else {\n        if (mimeType === validType) {\n          return true;\n        }\n      }\n    }\n  } catch (err) {\n    _iterator25.e(err);\n  } finally {\n    _iterator25.f();\n  }\n\n  return false;\n}; // Augment jQuery\n\n\nif (typeof jQuery !== \"undefined\" && jQuery !== null) {\n  jQuery.fn.dropzone = function (options) {\n    return this.each(function () {\n      return new Dropzone(this, options);\n    });\n  };\n} // Dropzone file status codes\n\n\nDropzone.ADDED = \"added\";\nDropzone.QUEUED = \"queued\"; // For backwards compatibility. Now, if a file is accepted, it's either queued\n// or uploading.\n\nDropzone.ACCEPTED = Dropzone.QUEUED;\nDropzone.UPLOADING = \"uploading\";\nDropzone.PROCESSING = Dropzone.UPLOADING; // alias\n\nDropzone.CANCELED = \"canceled\";\nDropzone.ERROR = \"error\";\nDropzone.SUCCESS = \"success\";\n/*\n\n Bugfix for iOS 6 and 7\n Source: http://stackoverflow.com/questions/11929099/html5-canvas-drawimage-ratio-bug-ios\n based on the work of https://github.com/stomita/ios-imagefile-megapixel\n\n */\n// Detecting vertical squash in loaded image.\n// Fixes a bug which squash image vertically while drawing into canvas for some images.\n// This is a bug in iOS6 devices. This function from https://github.com/stomita/ios-imagefile-megapixel\n\nvar detectVerticalSquash = function detectVerticalSquash(img) {\n  var iw = img.naturalWidth;\n  var ih = img.naturalHeight;\n  var canvas = document.createElement(\"canvas\");\n  canvas.width = 1;\n  canvas.height = ih;\n  var ctx = canvas.getContext(\"2d\");\n  ctx.drawImage(img, 0, 0);\n\n  var _ctx$getImageData = ctx.getImageData(1, 0, 1, ih),\n      data = _ctx$getImageData.data; // search image edge pixel position in case it is squashed vertically.\n\n\n  var sy = 0;\n  var ey = ih;\n  var py = ih;\n\n  while (py > sy) {\n    var alpha = data[(py - 1) * 4 + 3];\n\n    if (alpha === 0) {\n      ey = py;\n    } else {\n      sy = py;\n    }\n\n    py = ey + sy >> 1;\n  }\n\n  var ratio = py / ih;\n\n  if (ratio === 0) {\n    return 1;\n  } else {\n    return ratio;\n  }\n}; // A replacement for context.drawImage\n// (args are for source and destination).\n\n\nvar drawImageIOSFix = function drawImageIOSFix(ctx, img, sx, sy, sw, sh, dx, dy, dw, dh) {\n  var vertSquashRatio = detectVerticalSquash(img);\n  return ctx.drawImage(img, sx, sy, sw, sh, dx, dy, dw, dh / vertSquashRatio);\n}; // Based on MinifyJpeg\n// Source: http://www.perry.cz/files/ExifRestorer.js\n// http://elicon.blog57.fc2.com/blog-entry-206.html\n\n\nvar ExifRestore = /*#__PURE__*/function () {\n  function ExifRestore() {\n    dropzone_classCallCheck(this, ExifRestore);\n  }\n\n  dropzone_createClass(ExifRestore, null, [{\n    key: \"initClass\",\n    value: function initClass() {\n      this.KEY_STR = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n    }\n  }, {\n    key: \"encode64\",\n    value: function encode64(input) {\n      var output = \"\";\n      var chr1 = undefined;\n      var chr2 = undefined;\n      var chr3 = \"\";\n      var enc1 = undefined;\n      var enc2 = undefined;\n      var enc3 = undefined;\n      var enc4 = \"\";\n      var i = 0;\n\n      while (true) {\n        chr1 = input[i++];\n        chr2 = input[i++];\n        chr3 = input[i++];\n        enc1 = chr1 >> 2;\n        enc2 = (chr1 & 3) << 4 | chr2 >> 4;\n        enc3 = (chr2 & 15) << 2 | chr3 >> 6;\n        enc4 = chr3 & 63;\n\n        if (isNaN(chr2)) {\n          enc3 = enc4 = 64;\n        } else if (isNaN(chr3)) {\n          enc4 = 64;\n        }\n\n        output = output + this.KEY_STR.charAt(enc1) + this.KEY_STR.charAt(enc2) + this.KEY_STR.charAt(enc3) + this.KEY_STR.charAt(enc4);\n        chr1 = chr2 = chr3 = \"\";\n        enc1 = enc2 = enc3 = enc4 = \"\";\n\n        if (!(i < input.length)) {\n          break;\n        }\n      }\n\n      return output;\n    }\n  }, {\n    key: \"restore\",\n    value: function restore(origFileBase64, resizedFileBase64) {\n      if (!origFileBase64.match(\"data:image/jpeg;base64,\")) {\n        return resizedFileBase64;\n      }\n\n      var rawImage = this.decode64(origFileBase64.replace(\"data:image/jpeg;base64,\", \"\"));\n      var segments = this.slice2Segments(rawImage);\n      var image = this.exifManipulation(resizedFileBase64, segments);\n      return \"data:image/jpeg;base64,\".concat(this.encode64(image));\n    }\n  }, {\n    key: \"exifManipulation\",\n    value: function exifManipulation(resizedFileBase64, segments) {\n      var exifArray = this.getExifArray(segments);\n      var newImageArray = this.insertExif(resizedFileBase64, exifArray);\n      var aBuffer = new Uint8Array(newImageArray);\n      return aBuffer;\n    }\n  }, {\n    key: \"getExifArray\",\n    value: function getExifArray(segments) {\n      var seg = undefined;\n      var x = 0;\n\n      while (x < segments.length) {\n        seg = segments[x];\n\n        if (seg[0] === 255 & seg[1] === 225) {\n          return seg;\n        }\n\n        x++;\n      }\n\n      return [];\n    }\n  }, {\n    key: \"insertExif\",\n    value: function insertExif(resizedFileBase64, exifArray) {\n      var imageData = resizedFileBase64.replace(\"data:image/jpeg;base64,\", \"\");\n      var buf = this.decode64(imageData);\n      var separatePoint = buf.indexOf(255, 3);\n      var mae = buf.slice(0, separatePoint);\n      var ato = buf.slice(separatePoint);\n      var array = mae;\n      array = array.concat(exifArray);\n      array = array.concat(ato);\n      return array;\n    }\n  }, {\n    key: \"slice2Segments\",\n    value: function slice2Segments(rawImageArray) {\n      var head = 0;\n      var segments = [];\n\n      while (true) {\n        var length;\n\n        if (rawImageArray[head] === 255 & rawImageArray[head + 1] === 218) {\n          break;\n        }\n\n        if (rawImageArray[head] === 255 & rawImageArray[head + 1] === 216) {\n          head += 2;\n        } else {\n          length = rawImageArray[head + 2] * 256 + rawImageArray[head + 3];\n          var endPoint = head + length + 2;\n          var seg = rawImageArray.slice(head, endPoint);\n          segments.push(seg);\n          head = endPoint;\n        }\n\n        if (head > rawImageArray.length) {\n          break;\n        }\n      }\n\n      return segments;\n    }\n  }, {\n    key: \"decode64\",\n    value: function decode64(input) {\n      var output = \"\";\n      var chr1 = undefined;\n      var chr2 = undefined;\n      var chr3 = \"\";\n      var enc1 = undefined;\n      var enc2 = undefined;\n      var enc3 = undefined;\n      var enc4 = \"\";\n      var i = 0;\n      var buf = []; // remove all characters that are not A-Z, a-z, 0-9, +, /, or =\n\n      var base64test = /[^A-Za-z0-9\\+\\/\\=]/g;\n\n      if (base64test.exec(input)) {\n        console.warn(\"There were invalid base64 characters in the input text.\\nValid base64 characters are A-Z, a-z, 0-9, '+', '/',and '='\\nExpect errors in decoding.\");\n      }\n\n      input = input.replace(/[^A-Za-z0-9\\+\\/\\=]/g, \"\");\n\n      while (true) {\n        enc1 = this.KEY_STR.indexOf(input.charAt(i++));\n        enc2 = this.KEY_STR.indexOf(input.charAt(i++));\n        enc3 = this.KEY_STR.indexOf(input.charAt(i++));\n        enc4 = this.KEY_STR.indexOf(input.charAt(i++));\n        chr1 = enc1 << 2 | enc2 >> 4;\n        chr2 = (enc2 & 15) << 4 | enc3 >> 2;\n        chr3 = (enc3 & 3) << 6 | enc4;\n        buf.push(chr1);\n\n        if (enc3 !== 64) {\n          buf.push(chr2);\n        }\n\n        if (enc4 !== 64) {\n          buf.push(chr3);\n        }\n\n        chr1 = chr2 = chr3 = \"\";\n        enc1 = enc2 = enc3 = enc4 = \"\";\n\n        if (!(i < input.length)) {\n          break;\n        }\n      }\n\n      return buf;\n    }\n  }]);\n\n  return ExifRestore;\n}();\n\nExifRestore.initClass();\n/*\n * contentloaded.js\n *\n * Author: Diego Perini (diego.perini at gmail.com)\n * Summary: cross-browser wrapper for DOMContentLoaded\n * Updated: 20101020\n * License: MIT\n * Version: 1.2\n *\n * URL:\n * http://javascript.nwbox.com/ContentLoaded/\n * http://javascript.nwbox.com/ContentLoaded/MIT-LICENSE\n */\n// @win window reference\n// @fn function reference\n\nvar contentLoaded = function contentLoaded(win, fn) {\n  var done = false;\n  var top = true;\n  var doc = win.document;\n  var root = doc.documentElement;\n  var add = doc.addEventListener ? \"addEventListener\" : \"attachEvent\";\n  var rem = doc.addEventListener ? \"removeEventListener\" : \"detachEvent\";\n  var pre = doc.addEventListener ? \"\" : \"on\";\n\n  var init = function init(e) {\n    if (e.type === \"readystatechange\" && doc.readyState !== \"complete\") {\n      return;\n    }\n\n    (e.type === \"load\" ? win : doc)[rem](pre + e.type, init, false);\n\n    if (!done && (done = true)) {\n      return fn.call(win, e.type || e);\n    }\n  };\n\n  var poll = function poll() {\n    try {\n      root.doScroll(\"left\");\n    } catch (e) {\n      setTimeout(poll, 50);\n      return;\n    }\n\n    return init(\"poll\");\n  };\n\n  if (doc.readyState !== \"complete\") {\n    if (doc.createEventObject && root.doScroll) {\n      try {\n        top = !win.frameElement;\n      } catch (error) {}\n\n      if (top) {\n        poll();\n      }\n    }\n\n    doc[add](pre + \"DOMContentLoaded\", init, false);\n    doc[add](pre + \"readystatechange\", init, false);\n    return win[add](pre + \"load\", init, false);\n  }\n}; // As a single function to be able to write tests.\n\n\nDropzone._autoDiscoverFunction = function () {\n  if (Dropzone.autoDiscover) {\n    return Dropzone.discover();\n  }\n};\n\ncontentLoaded(window, Dropzone._autoDiscoverFunction);\n\nfunction __guard__(value, transform) {\n  return typeof value !== \"undefined\" && value !== null ? transform(value) : undefined;\n}\n\nfunction __guardMethod__(obj, methodName, transform) {\n  if (typeof obj !== \"undefined\" && obj !== null && typeof obj[methodName] === \"function\") {\n    return transform(obj, methodName);\n  } else {\n    return undefined;\n  }\n}\n\n\n;// CONCATENATED MODULE: ./tool/dropzone.dist.js\n /// Make Dropzone a global variable.\n\nwindow.Dropzone = Dropzone;\n/* harmony default export */ var dropzone_dist = (Dropzone);\n\n}();\n/******/ \treturn __webpack_exports__;\n/******/ })()\n;\n});","module.exports = function (exec) {\n  try {\n    return !!exec();\n  } catch (e) {\n    return true;\n  }\n};\n","exports.L = { bit: 1 }\nexports.M = { bit: 0 }\nexports.Q = { bit: 3 }\nexports.H = { bit: 2 }\n\nfunction fromString (string) {\n  if (typeof string !== 'string') {\n    throw new Error('Param is not a string')\n  }\n\n  const lcStr = string.toLowerCase()\n\n  switch (lcStr) {\n    case 'l':\n    case 'low':\n      return exports.L\n\n    case 'm':\n    case 'medium':\n      return exports.M\n\n    case 'q':\n    case 'quartile':\n      return exports.Q\n\n    case 'h':\n    case 'high':\n      return exports.H\n\n    default:\n      throw new Error('Unknown EC Level: ' + string)\n  }\n}\n\nexports.isValid = function isValid (level) {\n  return level && typeof level.bit !== 'undefined' &&\n    level.bit >= 0 && level.bit < 4\n}\n\nexports.from = function from (value, defaultValue) {\n  if (exports.isValid(value)) {\n    return value\n  }\n\n  try {\n    return fromString(value)\n  } catch (e) {\n    return defaultValue\n  }\n}\n","var nativeCreate = require('./_nativeCreate');\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 * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n  var data = this.__data__;\n  return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","'use strict';\nvar global = require('./_global');\nvar dP = require('./_object-dp');\nvar DESCRIPTORS = require('./_descriptors');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (KEY) {\n  var C = global[KEY];\n  if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {\n    configurable: true,\n    get: function () { return this; }\n  });\n};\n","var atob = require('./atob');\n\nfunction b64DecodeUnicode(str) {\n  return decodeURIComponent(atob(str).replace(/(.)/g, function (m, p) {\n    var code = p.charCodeAt(0).toString(16).toUpperCase();\n    if (code.length < 2) {\n      code = '0' + code;\n    }\n    return '%' + code;\n  }));\n}\n\nmodule.exports = function(str) {\n  var output = str.replace(/-/g, \"+\").replace(/_/g, \"/\");\n  switch (output.length % 4) {\n    case 0:\n      break;\n    case 2:\n      output += \"==\";\n      break;\n    case 3:\n      output += \"=\";\n      break;\n    default:\n      throw \"Illegal base64url string!\";\n  }\n\n  try{\n    return b64DecodeUnicode(output);\n  } catch (err) {\n    return atob(output);\n  }\n};\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 Stack = require('./_Stack'),\n    equalArrays = require('./_equalArrays'),\n    equalByTag = require('./_equalByTag'),\n    equalObjects = require('./_equalObjects'),\n    getTag = require('./_getTag'),\n    isArray = require('./isArray'),\n    isBuffer = require('./isBuffer'),\n    isTypedArray = require('./isTypedArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    arrayTag = '[object Array]',\n    objectTag = '[object Object]';\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 * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n  var objIsArr = isArray(object),\n      othIsArr = isArray(other),\n      objTag = objIsArr ? arrayTag : getTag(object),\n      othTag = othIsArr ? arrayTag : getTag(other);\n\n  objTag = objTag == argsTag ? objectTag : objTag;\n  othTag = othTag == argsTag ? objectTag : othTag;\n\n  var objIsObj = objTag == objectTag,\n      othIsObj = othTag == objectTag,\n      isSameTag = objTag == othTag;\n\n  if (isSameTag && isBuffer(object)) {\n    if (!isBuffer(other)) {\n      return false;\n    }\n    objIsArr = true;\n    objIsObj = false;\n  }\n  if (isSameTag && !objIsObj) {\n    stack || (stack = new Stack);\n    return (objIsArr || isTypedArray(object))\n      ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n      : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n  }\n  if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n    var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n        othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n    if (objIsWrapped || othIsWrapped) {\n      var objUnwrapped = objIsWrapped ? object.value() : object,\n          othUnwrapped = othIsWrapped ? other.value() : other;\n\n      stack || (stack = new Stack);\n      return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n    }\n  }\n  if (!isSameTag) {\n    return false;\n  }\n  stack || (stack = new Stack);\n  return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nmodule.exports = baseIsEqualDeep;\n","function BitBuffer () {\n  this.buffer = []\n  this.length = 0\n}\n\nBitBuffer.prototype = {\n\n  get: function (index) {\n    const bufIndex = Math.floor(index / 8)\n    return ((this.buffer[bufIndex] >>> (7 - index % 8)) & 1) === 1\n  },\n\n  put: function (num, length) {\n    for (let i = 0; i < length; i++) {\n      this.putBit(((num >>> (length - i - 1)) & 1) === 1)\n    }\n  },\n\n  getLengthInBits: function () {\n    return this.length\n  },\n\n  putBit: function (bit) {\n    const bufIndex = Math.floor(this.length / 8)\n    if (this.buffer.length <= bufIndex) {\n      this.buffer.push(0)\n    }\n\n    if (bit) {\n      this.buffer[bufIndex] |= (0x80 >>> (this.length % 8))\n    }\n\n    this.length++\n  }\n}\n\nmodule.exports = BitBuffer\n","// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nvar toIObject = require('./_to-iobject');\nvar gOPN = require('./_object-gopn').f;\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 gOPN(it);\n  } catch (e) {\n    return windowNames.slice();\n  }\n};\n\nmodule.exports.f = function getOwnPropertyNames(it) {\n  return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));\n};\n","// Utilities\nimport { consoleWarn } from './console';\nimport { chunk, padEnd } from './helpers';\nimport { toXYZ } from './color/transformSRGB';\nexport function isCssColor(color) {\n  return !!color && !!color.match(/^(#|var\\(--|(rgb|hsl)a?\\()/);\n}\nexport function colorToInt(color) {\n  let rgb;\n\n  if (typeof color === 'number') {\n    rgb = color;\n  } else if (typeof color === 'string') {\n    let c = color[0] === '#' ? color.substring(1) : color;\n\n    if (c.length === 3) {\n      c = c.split('').map(char => char + char).join('');\n    }\n\n    if (c.length !== 6) {\n      consoleWarn(`'${color}' is not a valid rgb color`);\n    }\n\n    rgb = parseInt(c, 16);\n  } else {\n    throw new TypeError(`Colors can only be numbers or strings, recieved ${color == null ? color : color.constructor.name} instead`);\n  }\n\n  if (rgb < 0) {\n    consoleWarn(`Colors cannot be negative: '${color}'`);\n    rgb = 0;\n  } else if (rgb > 0xffffff || isNaN(rgb)) {\n    consoleWarn(`'${color}' is not a valid rgb color`);\n    rgb = 0xffffff;\n  }\n\n  return rgb;\n}\nexport function classToHex(color, colors, currentTheme) {\n  const [colorName, colorModifier] = color.toString().trim().replace('-', '').split(' ', 2);\n  let hexColor = '';\n\n  if (colorName && colorName in colors) {\n    if (colorModifier && colorModifier in colors[colorName]) {\n      hexColor = colors[colorName][colorModifier];\n    } else if ('base' in colors[colorName]) {\n      hexColor = colors[colorName].base;\n    }\n  } else if (colorName && colorName in currentTheme) {\n    hexColor = currentTheme[colorName];\n  }\n\n  return hexColor;\n}\nexport function intToHex(color) {\n  let hexColor = color.toString(16);\n  if (hexColor.length < 6) hexColor = '0'.repeat(6 - hexColor.length) + hexColor;\n  return '#' + hexColor;\n}\nexport function colorToHex(color) {\n  return intToHex(colorToInt(color));\n}\n/**\n * Converts HSVA to RGBA. Based on formula from https://en.wikipedia.org/wiki/HSL_and_HSV\n *\n * @param color HSVA color as an array [0-360, 0-1, 0-1, 0-1]\n */\n\nexport function HSVAtoRGBA(hsva) {\n  const {\n    h,\n    s,\n    v,\n    a\n  } = hsva;\n\n  const f = n => {\n    const k = (n + h / 60) % 6;\n    return v - v * s * Math.max(Math.min(k, 4 - k, 1), 0);\n  };\n\n  const rgb = [f(5), f(3), f(1)].map(v => Math.round(v * 255));\n  return {\n    r: rgb[0],\n    g: rgb[1],\n    b: rgb[2],\n    a\n  };\n}\n/**\n * Converts RGBA to HSVA. Based on formula from https://en.wikipedia.org/wiki/HSL_and_HSV\n *\n * @param color RGBA color as an array [0-255, 0-255, 0-255, 0-1]\n */\n\nexport function RGBAtoHSVA(rgba) {\n  if (!rgba) return {\n    h: 0,\n    s: 1,\n    v: 1,\n    a: 1\n  };\n  const r = rgba.r / 255;\n  const g = rgba.g / 255;\n  const b = rgba.b / 255;\n  const max = Math.max(r, g, b);\n  const min = Math.min(r, g, b);\n  let h = 0;\n\n  if (max !== min) {\n    if (max === r) {\n      h = 60 * (0 + (g - b) / (max - min));\n    } else if (max === g) {\n      h = 60 * (2 + (b - r) / (max - min));\n    } else if (max === b) {\n      h = 60 * (4 + (r - g) / (max - min));\n    }\n  }\n\n  if (h < 0) h = h + 360;\n  const s = max === 0 ? 0 : (max - min) / max;\n  const hsv = [h, s, max];\n  return {\n    h: hsv[0],\n    s: hsv[1],\n    v: hsv[2],\n    a: rgba.a\n  };\n}\nexport function HSVAtoHSLA(hsva) {\n  const {\n    h,\n    s,\n    v,\n    a\n  } = hsva;\n  const l = v - v * s / 2;\n  const sprime = l === 1 || l === 0 ? 0 : (v - l) / Math.min(l, 1 - l);\n  return {\n    h,\n    s: sprime,\n    l,\n    a\n  };\n}\nexport function HSLAtoHSVA(hsl) {\n  const {\n    h,\n    s,\n    l,\n    a\n  } = hsl;\n  const v = l + s * Math.min(l, 1 - l);\n  const sprime = v === 0 ? 0 : 2 - 2 * l / v;\n  return {\n    h,\n    s: sprime,\n    v,\n    a\n  };\n}\nexport function RGBAtoCSS(rgba) {\n  return `rgba(${rgba.r}, ${rgba.g}, ${rgba.b}, ${rgba.a})`;\n}\nexport function RGBtoCSS(rgba) {\n  return RGBAtoCSS({ ...rgba,\n    a: 1\n  });\n}\nexport function RGBAtoHex(rgba) {\n  const toHex = v => {\n    const h = Math.round(v).toString(16);\n    return ('00'.substr(0, 2 - h.length) + h).toUpperCase();\n  };\n\n  return `#${[toHex(rgba.r), toHex(rgba.g), toHex(rgba.b), toHex(Math.round(rgba.a * 255))].join('')}`;\n}\nexport function HexToRGBA(hex) {\n  const rgba = chunk(hex.slice(1), 2).map(c => parseInt(c, 16));\n  return {\n    r: rgba[0],\n    g: rgba[1],\n    b: rgba[2],\n    a: Math.round(rgba[3] / 255 * 100) / 100\n  };\n}\nexport function HexToHSVA(hex) {\n  const rgb = HexToRGBA(hex);\n  return RGBAtoHSVA(rgb);\n}\nexport function HSVAtoHex(hsva) {\n  return RGBAtoHex(HSVAtoRGBA(hsva));\n}\nexport function parseHex(hex) {\n  if (hex.startsWith('#')) {\n    hex = hex.slice(1);\n  }\n\n  hex = hex.replace(/([^0-9a-f])/gi, 'F');\n\n  if (hex.length === 3 || hex.length === 4) {\n    hex = hex.split('').map(x => x + x).join('');\n  }\n\n  if (hex.length === 6) {\n    hex = padEnd(hex, 8, 'F');\n  } else {\n    hex = padEnd(padEnd(hex, 6), 8, 'F');\n  }\n\n  return `#${hex}`.toUpperCase().substr(0, 9);\n}\nexport function parseGradient(gradient, colors, currentTheme) {\n  return gradient.replace(/([a-z]+(\\s[a-z]+-[1-5])?)(?=$|,)/gi, x => {\n    return classToHex(x, colors, currentTheme) || x;\n  }).replace(/(rgba\\()#[0-9a-f]+(?=,)/gi, x => {\n    return 'rgba(' + Object.values(HexToRGBA(parseHex(x.replace(/rgba\\(/, '')))).slice(0, 3).join(',');\n  });\n}\nexport function RGBtoInt(rgba) {\n  return (rgba.r << 16) + (rgba.g << 8) + rgba.b;\n}\n/**\n * Returns the contrast ratio (1-21) between two colors.\n *\n * @param c1 First color\n * @param c2 Second color\n */\n\nexport function contrastRatio(c1, c2) {\n  const [, y1] = toXYZ(RGBtoInt(c1));\n  const [, y2] = toXYZ(RGBtoInt(c2));\n  return (Math.max(y1, y2) + 0.05) / (Math.min(y1, y2) + 0.05);\n}\n//# sourceMappingURL=colorUtils.js.map","let toSJISFunction\nconst CODEWORDS_COUNT = [\n  0, // Not used\n  26, 44, 70, 100, 134, 172, 196, 242, 292, 346,\n  404, 466, 532, 581, 655, 733, 815, 901, 991, 1085,\n  1156, 1258, 1364, 1474, 1588, 1706, 1828, 1921, 2051, 2185,\n  2323, 2465, 2611, 2761, 2876, 3034, 3196, 3362, 3532, 3706\n]\n\n/**\n * Returns the QR Code size for the specified version\n *\n * @param  {Number} version QR Code version\n * @return {Number}         size of QR code\n */\nexports.getSymbolSize = function getSymbolSize (version) {\n  if (!version) throw new Error('\"version\" cannot be null or undefined')\n  if (version < 1 || version > 40) throw new Error('\"version\" should be in range from 1 to 40')\n  return version * 4 + 17\n}\n\n/**\n * Returns the total number of codewords used to store data and EC information.\n *\n * @param  {Number} version QR Code version\n * @return {Number}         Data length in bits\n */\nexports.getSymbolTotalCodewords = function getSymbolTotalCodewords (version) {\n  return CODEWORDS_COUNT[version]\n}\n\n/**\n * Encode data with Bose-Chaudhuri-Hocquenghem\n *\n * @param  {Number} data Value to encode\n * @return {Number}      Encoded value\n */\nexports.getBCHDigit = function (data) {\n  let digit = 0\n\n  while (data !== 0) {\n    digit++\n    data >>>= 1\n  }\n\n  return digit\n}\n\nexports.setToSJISFunction = function setToSJISFunction (f) {\n  if (typeof f !== 'function') {\n    throw new Error('\"toSJISFunc\" is not a valid function.')\n  }\n\n  toSJISFunction = f\n}\n\nexports.isKanjiModeEnabled = function () {\n  return typeof toSJISFunction !== 'undefined'\n}\n\nexports.toSJIS = function toSJIS (kanji) {\n  return toSJISFunction(kanji)\n}\n","var Hash = require('./_Hash'),\n    ListCache = require('./_ListCache'),\n    Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n  this.size = 0;\n  this.__data__ = {\n    'hash': new Hash,\n    'map': new (Map || ListCache),\n    'string': new Hash\n  };\n}\n\nmodule.exports = mapCacheClear;\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","// linear\nexport const linear = t => t; // accelerating from zero velocity\n\nexport const easeInQuad = t => t ** 2; // decelerating to zero velocity\n\nexport const easeOutQuad = t => t * (2 - t); // acceleration until halfway, then deceleration\n\nexport const easeInOutQuad = t => t < 0.5 ? 2 * t ** 2 : -1 + (4 - 2 * t) * t; // accelerating from zero velocity\n\nexport const easeInCubic = t => t ** 3; // decelerating to zero velocity\n\nexport const easeOutCubic = t => --t ** 3 + 1; // acceleration until halfway, then deceleration\n\nexport const easeInOutCubic = t => t < 0.5 ? 4 * t ** 3 : (t - 1) * (2 * t - 2) * (2 * t - 2) + 1; // accelerating from zero velocity\n\nexport const easeInQuart = t => t ** 4; // decelerating to zero velocity\n\nexport const easeOutQuart = t => 1 - --t ** 4; // acceleration until halfway, then deceleration\n\nexport const easeInOutQuart = t => t < 0.5 ? 8 * t * t * t * t : 1 - 8 * --t * t * t * t; // accelerating from zero velocity\n\nexport const easeInQuint = t => t ** 5; // decelerating to zero velocity\n\nexport const easeOutQuint = t => 1 + --t ** 5; // acceleration until halfway, then deceleration\n\nexport const easeInOutQuint = t => t < 0.5 ? 16 * t ** 5 : 1 + 16 * --t ** 5;\n//# sourceMappingURL=easing-patterns.js.map","// Return target's cumulative offset from the top\nexport function getOffset(target) {\n  if (typeof target === 'number') {\n    return target;\n  }\n\n  let el = $(target);\n\n  if (!el) {\n    throw typeof target === 'string' ? new Error(`Target element \"${target}\" not found.`) : new TypeError(`Target must be a Number/Selector/HTMLElement/VueComponent, received ${type(target)} instead.`);\n  }\n\n  let totalOffset = 0;\n\n  while (el) {\n    totalOffset += el.offsetTop;\n    el = el.offsetParent;\n  }\n\n  return totalOffset;\n}\nexport function getContainer(container) {\n  const el = $(container);\n  if (el) return el;\n  throw typeof container === 'string' ? new Error(`Container element \"${container}\" not found.`) : new TypeError(`Container must be a Selector/HTMLElement/VueComponent, received ${type(container)} instead.`);\n}\n\nfunction type(el) {\n  return el == null ? el : el.constructor.name;\n}\n\nfunction $(el) {\n  if (typeof el === 'string') {\n    return document.querySelector(el);\n  } else if (el && el._isVue) {\n    return el.$el;\n  } else if (el instanceof HTMLElement) {\n    return el;\n  } else {\n    return null;\n  }\n}\n//# sourceMappingURL=util.js.map","// Extensions\nimport { Service } from '../service'; // Utilities\n\nimport * as easingPatterns from './easing-patterns';\nimport { getContainer, getOffset } from './util';\nexport default function goTo(_target, _settings = {}) {\n  const settings = {\n    container: document.scrollingElement || document.body || document.documentElement,\n    duration: 500,\n    offset: 0,\n    easing: 'easeInOutCubic',\n    appOffset: true,\n    ..._settings\n  };\n  const container = getContainer(settings.container);\n  /* istanbul ignore else */\n\n  if (settings.appOffset && goTo.framework.application) {\n    const isDrawer = container.classList.contains('v-navigation-drawer');\n    const isClipped = container.classList.contains('v-navigation-drawer--clipped');\n    const {\n      bar,\n      top\n    } = goTo.framework.application;\n    settings.offset += bar;\n    /* istanbul ignore else */\n\n    if (!isDrawer || isClipped) settings.offset += top;\n  }\n\n  const startTime = performance.now();\n  let targetLocation;\n\n  if (typeof _target === 'number') {\n    targetLocation = getOffset(_target) - settings.offset;\n  } else {\n    targetLocation = getOffset(_target) - getOffset(container) - settings.offset;\n  }\n\n  const startLocation = container.scrollTop;\n  if (targetLocation === startLocation) return Promise.resolve(targetLocation);\n  const ease = typeof settings.easing === 'function' ? settings.easing : easingPatterns[settings.easing];\n  /* istanbul ignore else */\n\n  if (!ease) throw new TypeError(`Easing function \"${settings.easing}\" not found.`); // Cannot be tested properly in jsdom\n\n  /* istanbul ignore next */\n\n  return new Promise(resolve => requestAnimationFrame(function step(currentTime) {\n    const timeElapsed = currentTime - startTime;\n    const progress = Math.abs(settings.duration ? Math.min(timeElapsed / settings.duration, 1) : 1);\n    container.scrollTop = Math.floor(startLocation + (targetLocation - startLocation) * ease(progress));\n    const clientHeight = container === document.body ? document.documentElement.clientHeight : container.clientHeight;\n    const reachBottom = clientHeight + container.scrollTop >= container.scrollHeight;\n\n    if (progress === 1 || // Need to go lower but reach bottom\n    targetLocation > container.scrollTop && reachBottom) {\n      return resolve(targetLocation);\n    }\n\n    requestAnimationFrame(step);\n  }));\n}\ngoTo.framework = {};\n\ngoTo.init = () => {};\n\nexport class Goto extends Service {\n  constructor() {\n    super();\n    return goTo;\n  }\n\n}\nGoto.property = 'goTo';\n//# sourceMappingURL=index.js.map","import Vue from 'vue';\n/**\n * This mixin provides `attrs$` and `listeners$` to work around\n * vue bug https://github.com/vuejs/vue/issues/10115\n */\n\nfunction makeWatcher(property) {\n  return function (val, oldVal) {\n    for (const attr in oldVal) {\n      if (!Object.prototype.hasOwnProperty.call(val, attr)) {\n        this.$delete(this.$data[property], attr);\n      }\n    }\n\n    for (const attr in val) {\n      this.$set(this.$data[property], attr, val[attr]);\n    }\n  };\n}\n\nexport default Vue.extend({\n  data: () => ({\n    attrs$: {},\n    listeners$: {}\n  }),\n\n  created() {\n    // Work around unwanted re-renders: https://github.com/vuejs/vue/issues/10115\n    // Make sure to use `attrs$` instead of `$attrs` (confusing right?)\n    this.$watch('$attrs', makeWatcher('attrs$'), {\n      immediate: true\n    });\n    this.$watch('$listeners', makeWatcher('listeners$'), {\n      immediate: true\n    });\n  }\n\n});\n//# sourceMappingURL=index.js.map","var ListCache = require('./_ListCache'),\n    stackClear = require('./_stackClear'),\n    stackDelete = require('./_stackDelete'),\n    stackGet = require('./_stackGet'),\n    stackHas = require('./_stackHas'),\n    stackSet = require('./_stackSet');\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n  var data = this.__data__ = new ListCache(entries);\n  this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n","/** Used to detect strings that need a more robust regexp to match words. */\nvar reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n/**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\nfunction hasUnicodeWord(string) {\n  return reHasUnicodeWord.test(string);\n}\n\nmodule.exports = hasUnicodeWord;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n  this.__data__.set(value, HASH_UNDEFINED);\n  return this;\n}\n\nmodule.exports = setCacheAdd;\n","var def = require('./_object-dp').f;\nvar has = require('./_has');\nvar TAG = require('./_wks')('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n  if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n","var baseUnset = require('./_baseUnset'),\n    isIndex = require('./_isIndex');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * The base implementation of `_.pullAt` without support for individual\n * indexes or capturing the removed elements.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {number[]} indexes The indexes of elements to remove.\n * @returns {Array} Returns `array`.\n */\nfunction basePullAt(array, indexes) {\n  var length = array ? indexes.length : 0,\n      lastIndex = length - 1;\n\n  while (length--) {\n    var index = indexes[length];\n    if (length == lastIndex || index !== previous) {\n      var previous = index;\n      if (isIndex(index)) {\n        splice.call(array, index, 1);\n      } else {\n        baseUnset(array, index);\n      }\n    }\n  }\n  return array;\n}\n\nmodule.exports = basePullAt;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createSymbol = exports.makeUrl = exports.isPromise = exports._ = exports.stripSlashes = void 0;\n// Removes all leading and trailing slashes from a path\nfunction stripSlashes(name) {\n    return name.replace(/^(\\/+)|(\\/+)$/g, '');\n}\nexports.stripSlashes = stripSlashes;\n// A set of lodash-y utility functions that use ES6\nexports._ = {\n    each(obj, callback) {\n        if (obj && typeof obj.forEach === 'function') {\n            obj.forEach(callback);\n        }\n        else if (exports._.isObject(obj)) {\n            Object.keys(obj).forEach(key => callback(obj[key], key));\n        }\n    },\n    some(value, callback) {\n        return Object.keys(value)\n            .map(key => [value[key], key])\n            .some(([val, key]) => callback(val, key));\n    },\n    every(value, callback) {\n        return Object.keys(value)\n            .map(key => [value[key], key])\n            .every(([val, key]) => callback(val, key));\n    },\n    keys(obj) {\n        return Object.keys(obj);\n    },\n    values(obj) {\n        return exports._.keys(obj).map(key => obj[key]);\n    },\n    isMatch(obj, item) {\n        return exports._.keys(item).every(key => obj[key] === item[key]);\n    },\n    isEmpty(obj) {\n        return exports._.keys(obj).length === 0;\n    },\n    isObject(item) {\n        return (typeof item === 'object' && !Array.isArray(item) && item !== null);\n    },\n    isObjectOrArray(value) {\n        return typeof value === 'object' && value !== null;\n    },\n    extend(first, ...rest) {\n        return Object.assign(first, ...rest);\n    },\n    omit(obj, ...keys) {\n        const result = exports._.extend({}, obj);\n        keys.forEach(key => delete result[key]);\n        return result;\n    },\n    pick(source, ...keys) {\n        return keys.reduce((result, key) => {\n            if (source[key] !== undefined) {\n                result[key] = source[key];\n            }\n            return result;\n        }, {});\n    },\n    // Recursively merge the source object into the target object\n    merge(target, source) {\n        if (exports._.isObject(target) && exports._.isObject(source)) {\n            Object.keys(source).forEach(key => {\n                if (exports._.isObject(source[key])) {\n                    if (!target[key]) {\n                        Object.assign(target, { [key]: {} });\n                    }\n                    exports._.merge(target[key], source[key]);\n                }\n                else {\n                    Object.assign(target, { [key]: source[key] });\n                }\n            });\n        }\n        return target;\n    }\n};\n// Duck-checks if an object looks like a promise\nfunction isPromise(result) {\n    return exports._.isObject(result) &&\n        typeof result.then === 'function';\n}\nexports.isPromise = isPromise;\nfunction makeUrl(path, app = {}) {\n    const get = typeof app.get === 'function' ? app.get.bind(app) : () => { };\n    const env = get('env') || process.env.NODE_ENV;\n    const host = get('host') || process.env.HOST_NAME || 'localhost';\n    const protocol = (env === 'development' || env === 'test' || (env === undefined)) ? 'http' : 'https';\n    const PORT = get('port') || process.env.PORT || 3030;\n    const port = (env === 'development' || env === 'test' || (env === undefined)) ? `:${PORT}` : '';\n    path = path || '';\n    return `${protocol}://${host}${port}/${exports.stripSlashes(path)}`;\n}\nexports.makeUrl = makeUrl;\nfunction createSymbol(name) {\n    return typeof Symbol !== 'undefined' ? Symbol(name) : name;\n}\nexports.createSymbol = createSymbol;\n//# sourceMappingURL=utils.js.map","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n  return this.__data__.get(key);\n}\n\nmodule.exports = stackGet;\n","\n/**\n * Module dependencies.\n */\n\nvar url = require('./url');\nvar parser = require('socket.io-parser');\nvar Manager = require('./manager');\nvar debug = require('debug')('socket.io-client');\n\n/**\n * Module exports.\n */\n\nmodule.exports = exports = lookup;\n\n/**\n * Managers cache.\n */\n\nvar cache = exports.managers = {};\n\n/**\n * Looks up an existing `Manager` for multiplexing.\n * If the user summons:\n *\n *   `io('http://localhost/a');`\n *   `io('http://localhost/b');`\n *\n * We reuse the existing instance based on same scheme/port/host,\n * and we initialize sockets for each namespace.\n *\n * @api public\n */\n\nfunction lookup (uri, opts) {\n  if (typeof uri === 'object') {\n    opts = uri;\n    uri = undefined;\n  }\n\n  opts = opts || {};\n\n  var parsed = url(uri);\n  var source = parsed.source;\n  var id = parsed.id;\n  var path = parsed.path;\n  var sameNamespace = cache[id] && path in cache[id].nsps;\n  var newConnection = opts.forceNew || opts['force new connection'] ||\n                      false === opts.multiplex || sameNamespace;\n\n  var io;\n\n  if (newConnection) {\n    debug('ignoring socket cache for %s', source);\n    io = Manager(source, opts);\n  } else {\n    if (!cache[id]) {\n      debug('new io instance for %s', source);\n      cache[id] = Manager(source, opts);\n    }\n    io = cache[id];\n  }\n  if (parsed.query && !opts.query) {\n    opts.query = parsed.query;\n  }\n  return io.socket(parsed.path, opts);\n}\n\n/**\n * Protocol version.\n *\n * @api public\n */\n\nexports.protocol = parser.protocol;\n\n/**\n * `connect`.\n *\n * @param {String} uri\n * @api public\n */\n\nexports.connect = lookup;\n\n/**\n * Expose constructors for standalone build.\n *\n * @api public\n */\n\nexports.Manager = require('./manager');\nexports.Socket = require('./socket');\n","/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n  var index = -1,\n      length = array == null ? 0 : array.length;\n\n  while (++index < length) {\n    if (iteratee(array[index], index, array) === false) {\n      break;\n    }\n  }\n  return array;\n}\n\nmodule.exports = arrayEach;\n","import Vue from 'vue';\nexport function createSimpleFunctional(c, el = 'div', name) {\n  return Vue.extend({\n    name: name || c.replace(/__/g, '-'),\n    functional: true,\n    props: {\n      tag: {\n        type: String,\n        default: el\n      }\n    },\n\n    render(h, {\n      data,\n      props,\n      children\n    }) {\n      data.staticClass = `${c} ${data.staticClass || ''}`.trim();\n      return h(props.tag, data, children);\n    }\n\n  });\n}\nexport function directiveConfig(binding, defaults = {}) {\n  return { ...defaults,\n    ...binding.modifiers,\n    value: binding.arg,\n    ...(binding.value || {})\n  };\n}\nexport function addOnceEventListener(el, eventName, cb, options = false) {\n  const once = event => {\n    cb(event);\n    el.removeEventListener(eventName, once, options);\n  };\n\n  el.addEventListener(eventName, once, options);\n}\nlet passiveSupported = false;\n\ntry {\n  if (typeof window !== 'undefined') {\n    const testListenerOpts = Object.defineProperty({}, 'passive', {\n      get: () => {\n        passiveSupported = true;\n      }\n    });\n    window.addEventListener('testListener', testListenerOpts, testListenerOpts);\n    window.removeEventListener('testListener', testListenerOpts, testListenerOpts);\n  }\n} catch (e) {\n  console.warn(e);\n}\n/* eslint-disable-line no-console */\n\n\nexport { passiveSupported };\nexport function addPassiveEventListener(el, event, cb, options) {\n  el.addEventListener(event, cb, passiveSupported ? options : false);\n}\nexport function getNestedValue(obj, path, fallback) {\n  const last = path.length - 1;\n  if (last < 0) return obj === undefined ? fallback : obj;\n\n  for (let i = 0; i < last; i++) {\n    if (obj == null) {\n      return fallback;\n    }\n\n    obj = obj[path[i]];\n  }\n\n  if (obj == null) return fallback;\n  return obj[path[last]] === undefined ? fallback : obj[path[last]];\n}\nexport function deepEqual(a, b) {\n  if (a === b) return true;\n\n  if (a instanceof Date && b instanceof Date && a.getTime() !== b.getTime()) {\n    // If the values are Date, compare them as timestamps\n    return false;\n  }\n\n  if (a !== Object(a) || b !== Object(b)) {\n    // If the values aren't objects, they were already checked for equality\n    return false;\n  }\n\n  const props = Object.keys(a);\n\n  if (props.length !== Object.keys(b).length) {\n    // Different number of props, don't bother to check\n    return false;\n  }\n\n  return props.every(p => deepEqual(a[p], b[p]));\n}\nexport function getObjectValueByPath(obj, path, fallback) {\n  // credit: http://stackoverflow.com/questions/6491463/accessing-nested-javascript-objects-with-string-key#comment55278413_6491621\n  if (obj == null || !path || typeof path !== 'string') return fallback;\n  if (obj[path] !== undefined) return obj[path];\n  path = path.replace(/\\[(\\w+)\\]/g, '.$1'); // convert indexes to properties\n\n  path = path.replace(/^\\./, ''); // strip a leading dot\n\n  return getNestedValue(obj, path.split('.'), fallback);\n}\nexport function getPropertyFromItem(item, property, fallback) {\n  if (property == null) return item === undefined ? fallback : item;\n  if (item !== Object(item)) return fallback === undefined ? item : fallback;\n  if (typeof property === 'string') return getObjectValueByPath(item, property, fallback);\n  if (Array.isArray(property)) return getNestedValue(item, property, fallback);\n  if (typeof property !== 'function') return fallback;\n  const value = property(item, fallback);\n  return typeof value === 'undefined' ? fallback : value;\n}\nexport function createRange(length) {\n  return Array.from({\n    length\n  }, (v, k) => k);\n}\nexport function getZIndex(el) {\n  if (!el || el.nodeType !== Node.ELEMENT_NODE) return 0;\n  const index = +window.getComputedStyle(el).getPropertyValue('z-index');\n  if (!index) return getZIndex(el.parentNode);\n  return index;\n}\nconst tagsToReplace = {\n  '&': '&amp;',\n  '<': '&lt;',\n  '>': '&gt;'\n};\nexport function escapeHTML(str) {\n  return str.replace(/[&<>]/g, tag => tagsToReplace[tag] || tag);\n}\nexport function filterObjectOnKeys(obj, keys) {\n  const filtered = {};\n\n  for (let i = 0; i < keys.length; i++) {\n    const key = keys[i];\n\n    if (typeof obj[key] !== 'undefined') {\n      filtered[key] = obj[key];\n    }\n  }\n\n  return filtered;\n}\nexport function convertToUnit(str, unit = 'px') {\n  if (str == null || str === '') {\n    return undefined;\n  } else if (isNaN(+str)) {\n    return String(str);\n  } else {\n    return `${Number(str)}${unit}`;\n  }\n}\nexport function kebabCase(str) {\n  return (str || '').replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();\n}\nexport function isObject(obj) {\n  return obj !== null && typeof obj === 'object';\n} // KeyboardEvent.keyCode aliases\n\nexport const keyCodes = Object.freeze({\n  enter: 13,\n  tab: 9,\n  delete: 46,\n  esc: 27,\n  space: 32,\n  up: 38,\n  down: 40,\n  left: 37,\n  right: 39,\n  end: 35,\n  home: 36,\n  del: 46,\n  backspace: 8,\n  insert: 45,\n  pageup: 33,\n  pagedown: 34,\n  shift: 16\n});\n/**\n * This remaps internal names like '$cancel' or '$vuetify.icons.cancel'\n * to the current name or component for that icon.\n */\n\nexport function remapInternalIcon(vm, iconName) {\n  // Look for custom component in the configuration\n  const component = vm.$vuetify.icons.component; // Look for overrides\n\n  if (iconName.startsWith('$')) {\n    // Get the target icon name\n    const iconPath = `$vuetify.icons.values.${iconName.split('$').pop().split('.').pop()}`; // Now look up icon indirection name,\n    // e.g. '$vuetify.icons.values.cancel'\n\n    const override = getObjectValueByPath(vm, iconPath, iconName);\n    if (typeof override === 'string') iconName = override;else return override;\n  }\n\n  if (component == null) {\n    return iconName;\n  }\n\n  return {\n    component,\n    props: {\n      icon: iconName\n    }\n  };\n}\nexport function keys(o) {\n  return Object.keys(o);\n}\n/**\n * Camelize a hyphen-delimited string.\n */\n\nconst camelizeRE = /-(\\w)/g;\nexport const camelize = str => {\n  return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : '');\n};\n/**\n * Returns the set difference of B and A, i.e. the set of elements in B but not in A\n */\n\nexport function arrayDiff(a, b) {\n  const diff = [];\n\n  for (let i = 0; i < b.length; i++) {\n    if (a.indexOf(b[i]) < 0) diff.push(b[i]);\n  }\n\n  return diff;\n}\n/**\n * Makes the first character of a string uppercase\n */\n\nexport function upperFirst(str) {\n  return str.charAt(0).toUpperCase() + str.slice(1);\n}\nexport function groupItems(items, groupBy, groupDesc) {\n  const key = groupBy[0];\n  const groups = [];\n  let current;\n\n  for (let i = 0; i < items.length; i++) {\n    const item = items[i];\n    const val = getObjectValueByPath(item, key, null);\n\n    if (current !== val) {\n      current = val;\n      groups.push({\n        name: val != null ? val : '',\n        items: []\n      });\n    }\n\n    groups[groups.length - 1].items.push(item);\n  }\n\n  return groups;\n}\nexport function wrapInArray(v) {\n  return v != null ? Array.isArray(v) ? v : [v] : [];\n}\nexport function sortItems(items, sortBy, sortDesc, locale, customSorters) {\n  if (sortBy === null || !sortBy.length) return items;\n  const stringCollator = new Intl.Collator(locale, {\n    sensitivity: 'accent',\n    usage: 'sort'\n  });\n  return items.sort((a, b) => {\n    for (let i = 0; i < sortBy.length; i++) {\n      const sortKey = sortBy[i];\n      let sortA = getObjectValueByPath(a, sortKey);\n      let sortB = getObjectValueByPath(b, sortKey);\n\n      if (sortDesc[i]) {\n        [sortA, sortB] = [sortB, sortA];\n      }\n\n      if (customSorters && customSorters[sortKey]) {\n        const customResult = customSorters[sortKey](sortA, sortB);\n        if (!customResult) continue;\n        return customResult;\n      } // Check if both cannot be evaluated\n\n\n      if (sortA === null && sortB === null) {\n        continue;\n      } // Dates should be compared numerically\n\n\n      if (sortA instanceof Date && sortB instanceof Date) {\n        return sortA.getTime() - sortB.getTime();\n      }\n\n      [sortA, sortB] = [sortA, sortB].map(s => (s || '').toString().toLocaleLowerCase());\n\n      if (sortA !== sortB) {\n        if (!isNaN(sortA) && !isNaN(sortB)) return Number(sortA) - Number(sortB);\n        return stringCollator.compare(sortA, sortB);\n      }\n    }\n\n    return 0;\n  });\n}\nexport function defaultFilter(value, search, item) {\n  return value != null && search != null && typeof value !== 'boolean' && value.toString().toLocaleLowerCase().indexOf(search.toLocaleLowerCase()) !== -1;\n}\nexport function searchItems(items, search) {\n  if (!search) return items;\n  search = search.toString().toLowerCase();\n  if (search.trim() === '') return items;\n  return items.filter(item => Object.keys(item).some(key => defaultFilter(getObjectValueByPath(item, key), search, item)));\n}\n/**\n * Returns:\n *  - 'normal' for old style slots - `<template slot=\"default\">`\n *  - 'scoped' for old style scoped slots (`<template slot=\"default\" slot-scope=\"data\">`) or bound v-slot (`#default=\"data\"`)\n *  - 'v-slot' for unbound v-slot (`#default`) - only if the third param is true, otherwise counts as scoped\n */\n\nexport function getSlotType(vm, name, split) {\n  if (vm.$slots.hasOwnProperty(name) && vm.$scopedSlots.hasOwnProperty(name) && vm.$scopedSlots[name].name) {\n    return split ? 'v-slot' : 'scoped';\n  }\n\n  if (vm.$slots.hasOwnProperty(name)) return 'normal';\n  if (vm.$scopedSlots.hasOwnProperty(name)) return 'scoped';\n}\nexport function debounce(fn, delay) {\n  let timeoutId = 0;\n  return (...args) => {\n    clearTimeout(timeoutId);\n    timeoutId = setTimeout(() => fn(...args), delay);\n  };\n}\nexport function throttle(fn, limit) {\n  let throttling = false;\n  return (...args) => {\n    if (!throttling) {\n      throttling = true;\n      setTimeout(() => throttling = false, limit);\n      return fn(...args);\n    }\n  };\n}\nexport function getPrefixedScopedSlots(prefix, scopedSlots) {\n  return Object.keys(scopedSlots).filter(k => k.startsWith(prefix)).reduce((obj, k) => {\n    obj[k.replace(prefix, '')] = scopedSlots[k];\n    return obj;\n  }, {});\n}\nexport function getSlot(vm, name = 'default', data, optional = false) {\n  if (vm.$scopedSlots.hasOwnProperty(name)) {\n    return vm.$scopedSlots[name](data instanceof Function ? data() : data);\n  } else if (vm.$slots.hasOwnProperty(name) && (!data || optional)) {\n    return vm.$slots[name];\n  }\n\n  return undefined;\n}\nexport function clamp(value, min = 0, max = 1) {\n  return Math.max(min, Math.min(max, value));\n}\nexport function padEnd(str, length, char = '0') {\n  return str + char.repeat(Math.max(0, length - str.length));\n}\nexport function chunk(str, size = 1) {\n  const chunked = [];\n  let index = 0;\n\n  while (index < str.length) {\n    chunked.push(str.substr(index, size));\n    index += size;\n  }\n\n  return chunked;\n}\nexport function humanReadableFileSize(bytes, binary = false) {\n  const base = binary ? 1024 : 1000;\n\n  if (bytes < base) {\n    return `${bytes} B`;\n  }\n\n  const prefix = binary ? ['Ki', 'Mi', 'Gi'] : ['k', 'M', 'G'];\n  let unit = -1;\n\n  while (Math.abs(bytes) >= base && unit < prefix.length - 1) {\n    bytes /= base;\n    ++unit;\n  }\n\n  return `${bytes.toFixed(1)} ${prefix[unit]}B`;\n}\nexport function camelizeObjectKeys(obj) {\n  if (!obj) return {};\n  return Object.keys(obj).reduce((o, key) => {\n    o[camelize(key)] = obj[key];\n    return o;\n  }, {});\n}\nexport function mergeDeep(source = {}, target = {}) {\n  for (const key in target) {\n    const sourceProperty = source[key];\n    const targetProperty = target[key]; // Only continue deep merging if\n    // both properties are objects\n\n    if (isObject(sourceProperty) && isObject(targetProperty)) {\n      source[key] = mergeDeep(sourceProperty, targetProperty);\n      continue;\n    }\n\n    source[key] = targetProperty;\n  }\n\n  return source;\n}\nexport function fillArray(length, obj) {\n  return Array(length).fill(obj);\n}\n/**  Polyfill for Event.prototype.composedPath */\n\nexport function composedPath(e) {\n  if (e.composedPath) return e.composedPath();\n  const path = [];\n  let el = e.target;\n\n  while (el) {\n    path.push(el);\n\n    if (el.tagName === 'HTML') {\n      path.push(document);\n      path.push(window);\n      return path;\n    }\n\n    el = el.parentElement;\n  }\n\n  return path;\n}\n//# sourceMappingURL=helpers.js.map","var createCaseFirst = require('./_createCaseFirst');\n\n/**\n * Converts the first character of `string` to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.upperFirst('fred');\n * // => 'Fred'\n *\n * _.upperFirst('FRED');\n * // => 'FRED'\n */\nvar upperFirst = createCaseFirst('toUpperCase');\n\nmodule.exports = upperFirst;\n","import \"../../../src/components/VAvatar/VAvatar.sass\"; // Mixins\n\nimport Colorable from '../../mixins/colorable';\nimport Measurable from '../../mixins/measurable';\nimport Roundable from '../../mixins/roundable'; // Utilities\n\nimport { convertToUnit } from '../../util/helpers';\nimport mixins from '../../util/mixins';\nexport default mixins(Colorable, Measurable, Roundable).extend({\n  name: 'v-avatar',\n  props: {\n    left: Boolean,\n    right: Boolean,\n    size: {\n      type: [Number, String],\n      default: 48\n    }\n  },\n  computed: {\n    classes() {\n      return {\n        'v-avatar--left': this.left,\n        'v-avatar--right': this.right,\n        ...this.roundedClasses\n      };\n    },\n\n    styles() {\n      return {\n        height: convertToUnit(this.size),\n        minWidth: convertToUnit(this.size),\n        width: convertToUnit(this.size),\n        ...this.measurableStyles\n      };\n    }\n\n  },\n\n  render(h) {\n    const data = {\n      staticClass: 'v-avatar',\n      class: this.classes,\n      style: this.styles,\n      on: this.$listeners\n    };\n    return h('div', this.setBackgroundColor(this.color, data), this.$slots.default);\n  }\n\n});\n//# sourceMappingURL=VAvatar.js.map","// Components\nimport VAvatar from '../VAvatar';\n/* @vue/component */\n\nexport default VAvatar.extend({\n  name: 'v-list-item-avatar',\n  props: {\n    horizontal: Boolean,\n    size: {\n      type: [Number, String],\n      default: 40\n    }\n  },\n  computed: {\n    classes() {\n      return {\n        'v-list-item__avatar--horizontal': this.horizontal,\n        ...VAvatar.options.computed.classes.call(this),\n        'v-avatar--tile': this.tile || this.horizontal\n      };\n    }\n\n  },\n\n  render(h) {\n    const render = VAvatar.options.render.call(this, h);\n    render.data = render.data || {};\n    render.data.staticClass += ' v-list-item__avatar';\n    return render;\n  }\n\n});\n//# sourceMappingURL=VListItemAvatar.js.map","var baseGet = require('./_baseGet'),\n    baseSlice = require('./_baseSlice');\n\n/**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\nfunction parent(object, path) {\n  return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n}\n\nmodule.exports = parent;\n","// Styles\nimport \"../../../src/components/VBtn/VBtn.sass\"; // Extensions\n\nimport VSheet from '../VSheet'; // Components\n\nimport VProgressCircular from '../VProgressCircular'; // Mixins\n\nimport { factory as GroupableFactory } from '../../mixins/groupable';\nimport { factory as ToggleableFactory } from '../../mixins/toggleable';\nimport Elevatable from '../../mixins/elevatable';\nimport Positionable from '../../mixins/positionable';\nimport Routable from '../../mixins/routable';\nimport Sizeable from '../../mixins/sizeable'; // Utilities\n\nimport mixins from '../../util/mixins';\nimport { breaking } from '../../util/console';\nconst baseMixins = mixins(VSheet, Routable, Positionable, Sizeable, GroupableFactory('btnToggle'), ToggleableFactory('inputValue')\n/* @vue/component */\n);\nexport default baseMixins.extend().extend({\n  name: 'v-btn',\n  props: {\n    activeClass: {\n      type: String,\n\n      default() {\n        if (!this.btnToggle) return '';\n        return this.btnToggle.activeClass;\n      }\n\n    },\n    block: Boolean,\n    depressed: Boolean,\n    fab: Boolean,\n    icon: Boolean,\n    loading: Boolean,\n    outlined: Boolean,\n    plain: Boolean,\n    retainFocusOnClick: Boolean,\n    rounded: Boolean,\n    tag: {\n      type: String,\n      default: 'button'\n    },\n    text: Boolean,\n    tile: Boolean,\n    type: {\n      type: String,\n      default: 'button'\n    },\n    value: null\n  },\n  data: () => ({\n    proxyClass: 'v-btn--active'\n  }),\n  computed: {\n    classes() {\n      return {\n        'v-btn': true,\n        ...Routable.options.computed.classes.call(this),\n        'v-btn--absolute': this.absolute,\n        'v-btn--block': this.block,\n        'v-btn--bottom': this.bottom,\n        'v-btn--disabled': this.disabled,\n        'v-btn--is-elevated': this.isElevated,\n        'v-btn--fab': this.fab,\n        'v-btn--fixed': this.fixed,\n        'v-btn--has-bg': this.hasBg,\n        'v-btn--icon': this.icon,\n        'v-btn--left': this.left,\n        'v-btn--loading': this.loading,\n        'v-btn--outlined': this.outlined,\n        'v-btn--plain': this.plain,\n        'v-btn--right': this.right,\n        'v-btn--round': this.isRound,\n        'v-btn--rounded': this.rounded,\n        'v-btn--router': this.to,\n        'v-btn--text': this.text,\n        'v-btn--tile': this.tile,\n        'v-btn--top': this.top,\n        ...this.themeClasses,\n        ...this.groupClasses,\n        ...this.elevationClasses,\n        ...this.sizeableClasses\n      };\n    },\n\n    computedElevation() {\n      if (this.disabled) return undefined;\n      return Elevatable.options.computed.computedElevation.call(this);\n    },\n\n    computedRipple() {\n      var _this$ripple;\n\n      const defaultRipple = this.icon || this.fab ? {\n        circle: true\n      } : true;\n      if (this.disabled) return false;else return (_this$ripple = this.ripple) != null ? _this$ripple : defaultRipple;\n    },\n\n    hasBg() {\n      return !this.text && !this.plain && !this.outlined && !this.icon;\n    },\n\n    isElevated() {\n      return Boolean(!this.icon && !this.text && !this.outlined && !this.depressed && !this.disabled && !this.plain && (this.elevation == null || Number(this.elevation) > 0));\n    },\n\n    isRound() {\n      return Boolean(this.icon || this.fab);\n    },\n\n    styles() {\n      return { ...this.measurableStyles\n      };\n    }\n\n  },\n\n  created() {\n    const breakingProps = [['flat', 'text'], ['outline', 'outlined'], ['round', 'rounded']];\n    /* istanbul ignore next */\n\n    breakingProps.forEach(([original, replacement]) => {\n      if (this.$attrs.hasOwnProperty(original)) breaking(original, replacement, this);\n    });\n  },\n\n  methods: {\n    click(e) {\n      // TODO: Remove this in v3\n      !this.retainFocusOnClick && !this.fab && e.detail && this.$el.blur();\n      this.$emit('click', e);\n      this.btnToggle && this.toggle();\n    },\n\n    genContent() {\n      return this.$createElement('span', {\n        staticClass: 'v-btn__content'\n      }, this.$slots.default);\n    },\n\n    genLoader() {\n      return this.$createElement('span', {\n        class: 'v-btn__loader'\n      }, this.$slots.loader || [this.$createElement(VProgressCircular, {\n        props: {\n          indeterminate: true,\n          size: 23,\n          width: 2\n        }\n      })]);\n    }\n\n  },\n\n  render(h) {\n    const children = [this.genContent(), this.loading && this.genLoader()];\n    const {\n      tag,\n      data\n    } = this.generateRouteLink();\n    const setColor = this.hasBg ? this.setBackgroundColor : this.setTextColor;\n\n    if (tag === 'button') {\n      data.attrs.type = this.type;\n      data.attrs.disabled = this.disabled;\n    }\n\n    data.attrs.value = ['string', 'number'].includes(typeof this.value) ? this.value : JSON.stringify(this.value);\n    return h(tag, this.disabled ? data : setColor(this.color, data), children);\n  }\n\n});\n//# sourceMappingURL=VBtn.js.map","var core = module.exports = { version: '2.6.12' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n","/*\n * base64-arraybuffer\n * https://github.com/niklasvh/base64-arraybuffer\n *\n * Copyright (c) 2012 Niklas von Hertzen\n * Licensed under the MIT license.\n */\n(function(chars){\n  \"use strict\";\n\n  exports.encode = function(arraybuffer) {\n    var bytes = new Uint8Array(arraybuffer),\n    i, len = bytes.length, base64 = \"\";\n\n    for (i = 0; i < len; i+=3) {\n      base64 += chars[bytes[i] >> 2];\n      base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n      base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n      base64 += chars[bytes[i + 2] & 63];\n    }\n\n    if ((len % 3) === 2) {\n      base64 = base64.substring(0, base64.length - 1) + \"=\";\n    } else if (len % 3 === 1) {\n      base64 = base64.substring(0, base64.length - 2) + \"==\";\n    }\n\n    return base64;\n  };\n\n  exports.decode =  function(base64) {\n    var bufferLength = base64.length * 0.75,\n    len = base64.length, i, p = 0,\n    encoded1, encoded2, encoded3, encoded4;\n\n    if (base64[base64.length - 1] === \"=\") {\n      bufferLength--;\n      if (base64[base64.length - 2] === \"=\") {\n        bufferLength--;\n      }\n    }\n\n    var arraybuffer = new ArrayBuffer(bufferLength),\n    bytes = new Uint8Array(arraybuffer);\n\n    for (i = 0; i < len; i+=4) {\n      encoded1 = chars.indexOf(base64[i]);\n      encoded2 = chars.indexOf(base64[i+1]);\n      encoded3 = chars.indexOf(base64[i+2]);\n      encoded4 = chars.indexOf(base64[i+3]);\n\n      bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n      bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n      bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n    }\n\n    return arraybuffer;\n  };\n})(\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\");\n","// 7.2.9 SameValue(x, y)\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","'use strict';\n// B.2.3.2 String.prototype.anchor(name)\nrequire('./_string-html')('anchor', function (createHTML) {\n  return function anchor(name) {\n    return createHTML(this, 'a', 'name', name);\n  };\n});\n","module.exports = {};\n","import Vue from 'vue';\nimport { deepEqual } from '../../util/helpers';\nexport default Vue.extend({\n  name: 'comparable',\n  props: {\n    valueComparator: {\n      type: Function,\n      default: deepEqual\n    }\n  }\n});\n//# sourceMappingURL=index.js.map","/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n  switch (args.length) {\n    case 0: return func.call(thisArg);\n    case 1: return func.call(thisArg, args[0]);\n    case 2: return func.call(thisArg, args[0], args[1]);\n    case 3: return func.call(thisArg, args[0], args[1], args[2]);\n  }\n  return func.apply(thisArg, args);\n}\n\nmodule.exports = apply;\n","var baseHasIn = require('./_baseHasIn'),\n    hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n  return object != null && hasPath(object, path, baseHasIn);\n}\n\nmodule.exports = hasIn;\n","// Styles\nimport \"../../../src/components/VCounter/VCounter.sass\"; // Mixins\n\nimport Themeable, { functionalThemeClasses } from '../../mixins/themeable';\nimport mixins from '../../util/mixins';\n/* @vue/component */\n\nexport default mixins(Themeable).extend({\n  name: 'v-counter',\n  functional: true,\n  props: {\n    value: {\n      type: [Number, String],\n      default: ''\n    },\n    max: [Number, String]\n  },\n\n  render(h, ctx) {\n    const {\n      props\n    } = ctx;\n    const max = parseInt(props.max, 10);\n    const value = parseInt(props.value, 10);\n    const content = max ? `${value} / ${max}` : String(props.value);\n    const isGreater = max && value > max;\n    return h('div', {\n      staticClass: 'v-counter',\n      class: {\n        'error--text': isGreater,\n        ...functionalThemeClasses(ctx)\n      }\n    }, content);\n  }\n\n});\n//# sourceMappingURL=VCounter.js.map","import VCounter from './VCounter';\nexport { VCounter };\nexport default VCounter;\n//# sourceMappingURL=index.js.map","// Directives\nimport Intersect from '../../directives/intersect'; // Utilities\n\nimport { consoleWarn } from '../../util/console'; // Types\n\nimport Vue from 'vue';\nexport default function intersectable(options) {\n  return Vue.extend({\n    name: 'intersectable',\n    data: () => ({\n      isIntersecting: false\n    }),\n\n    mounted() {\n      Intersect.inserted(this.$el, {\n        name: 'intersect',\n        value: this.onObserve\n      }, this.$vnode);\n    },\n\n    destroyed() {\n      Intersect.unbind(this.$el, {\n        name: 'intersect',\n        value: this.onObserve\n      }, this.$vnode);\n    },\n\n    methods: {\n      onObserve(entries, observer, isIntersecting) {\n        this.isIntersecting = isIntersecting;\n        if (!isIntersecting) return;\n\n        for (let i = 0, length = options.onVisible.length; i < length; i++) {\n          const callback = this[options.onVisible[i]];\n\n          if (typeof callback === 'function') {\n            callback();\n            continue;\n          }\n\n          consoleWarn(options.onVisible[i] + ' method is not available on the instance but referenced in intersectable mixin options');\n        }\n      }\n\n    }\n  });\n}\n//# sourceMappingURL=index.js.map","// Styles\nimport \"../../../src/components/VTextField/VTextField.sass\"; // Extensions\n\nimport VInput from '../VInput'; // Components\n\nimport VCounter from '../VCounter';\nimport VLabel from '../VLabel'; // Mixins\n\nimport Intersectable from '../../mixins/intersectable';\nimport Loadable from '../../mixins/loadable';\nimport Validatable from '../../mixins/validatable'; // Directives\n\nimport resize from '../../directives/resize';\nimport ripple from '../../directives/ripple'; // Utilities\n\nimport { attachedRoot } from '../../util/dom';\nimport { convertToUnit, keyCodes } from '../../util/helpers';\nimport { breaking, consoleWarn } from '../../util/console'; // Types\n\nimport mixins from '../../util/mixins';\nconst baseMixins = mixins(VInput, Intersectable({\n  onVisible: ['onResize', 'tryAutofocus']\n}), Loadable);\nconst dirtyTypes = ['color', 'file', 'time', 'date', 'datetime-local', 'week', 'month'];\n/* @vue/component */\n\nexport default baseMixins.extend().extend({\n  name: 'v-text-field',\n  directives: {\n    resize,\n    ripple\n  },\n  inheritAttrs: false,\n  props: {\n    appendOuterIcon: String,\n    autofocus: Boolean,\n    clearable: Boolean,\n    clearIcon: {\n      type: String,\n      default: '$clear'\n    },\n    counter: [Boolean, Number, String],\n    counterValue: Function,\n    filled: Boolean,\n    flat: Boolean,\n    fullWidth: Boolean,\n    label: String,\n    outlined: Boolean,\n    placeholder: String,\n    prefix: String,\n    prependInnerIcon: String,\n    persistentPlaceholder: Boolean,\n    reverse: Boolean,\n    rounded: Boolean,\n    shaped: Boolean,\n    singleLine: Boolean,\n    solo: Boolean,\n    soloInverted: Boolean,\n    suffix: String,\n    type: {\n      type: String,\n      default: 'text'\n    }\n  },\n  data: () => ({\n    badInput: false,\n    labelWidth: 0,\n    prefixWidth: 0,\n    prependWidth: 0,\n    initialValue: null,\n    isBooted: false,\n    isClearing: false\n  }),\n  computed: {\n    classes() {\n      return { ...VInput.options.computed.classes.call(this),\n        'v-text-field': true,\n        'v-text-field--full-width': this.fullWidth,\n        'v-text-field--prefix': this.prefix,\n        'v-text-field--single-line': this.isSingle,\n        'v-text-field--solo': this.isSolo,\n        'v-text-field--solo-inverted': this.soloInverted,\n        'v-text-field--solo-flat': this.flat,\n        'v-text-field--filled': this.filled,\n        'v-text-field--is-booted': this.isBooted,\n        'v-text-field--enclosed': this.isEnclosed,\n        'v-text-field--reverse': this.reverse,\n        'v-text-field--outlined': this.outlined,\n        'v-text-field--placeholder': this.placeholder,\n        'v-text-field--rounded': this.rounded,\n        'v-text-field--shaped': this.shaped\n      };\n    },\n\n    computedColor() {\n      const computedColor = Validatable.options.computed.computedColor.call(this);\n      if (!this.soloInverted || !this.isFocused) return computedColor;\n      return this.color || 'primary';\n    },\n\n    computedCounterValue() {\n      if (typeof this.counterValue === 'function') {\n        return this.counterValue(this.internalValue);\n      }\n\n      return [...(this.internalValue || '').toString()].length;\n    },\n\n    hasCounter() {\n      return this.counter !== false && this.counter != null;\n    },\n\n    hasDetails() {\n      return VInput.options.computed.hasDetails.call(this) || this.hasCounter;\n    },\n\n    internalValue: {\n      get() {\n        return this.lazyValue;\n      },\n\n      set(val) {\n        this.lazyValue = val;\n        this.$emit('input', this.lazyValue);\n      }\n\n    },\n\n    isDirty() {\n      var _this$lazyValue;\n\n      return ((_this$lazyValue = this.lazyValue) == null ? void 0 : _this$lazyValue.toString().length) > 0 || this.badInput;\n    },\n\n    isEnclosed() {\n      return this.filled || this.isSolo || this.outlined;\n    },\n\n    isLabelActive() {\n      return this.isDirty || dirtyTypes.includes(this.type);\n    },\n\n    isSingle() {\n      return this.isSolo || this.singleLine || this.fullWidth || // https://material.io/components/text-fields/#filled-text-field\n      this.filled && !this.hasLabel;\n    },\n\n    isSolo() {\n      return this.solo || this.soloInverted;\n    },\n\n    labelPosition() {\n      let offset = this.prefix && !this.labelValue ? this.prefixWidth : 0;\n      if (this.labelValue && this.prependWidth) offset -= this.prependWidth;\n      return this.$vuetify.rtl === this.reverse ? {\n        left: offset,\n        right: 'auto'\n      } : {\n        left: 'auto',\n        right: offset\n      };\n    },\n\n    showLabel() {\n      return this.hasLabel && !(this.isSingle && this.labelValue);\n    },\n\n    labelValue() {\n      return this.isFocused || this.isLabelActive || this.persistentPlaceholder;\n    }\n\n  },\n  watch: {\n    // labelValue: 'setLabelWidth', // moved to mounted, see #11533\n    outlined: 'setLabelWidth',\n\n    label() {\n      this.$nextTick(this.setLabelWidth);\n    },\n\n    prefix() {\n      this.$nextTick(this.setPrefixWidth);\n    },\n\n    isFocused: 'updateValue',\n\n    value(val) {\n      this.lazyValue = val;\n    }\n\n  },\n\n  created() {\n    /* istanbul ignore next */\n    if (this.$attrs.hasOwnProperty('box')) {\n      breaking('box', 'filled', this);\n    }\n    /* istanbul ignore next */\n\n\n    if (this.$attrs.hasOwnProperty('browser-autocomplete')) {\n      breaking('browser-autocomplete', 'autocomplete', this);\n    }\n    /* istanbul ignore if */\n\n\n    if (this.shaped && !(this.filled || this.outlined || this.isSolo)) {\n      consoleWarn('shaped should be used with either filled or outlined', this);\n    }\n  },\n\n  mounted() {\n    // #11533\n    this.$watch(() => this.labelValue, this.setLabelWidth);\n    this.autofocus && this.tryAutofocus();\n    requestAnimationFrame(() => {\n      this.isBooted = true;\n      requestAnimationFrame(() => {\n        if (!this.isIntersecting) {\n          this.onResize();\n        }\n      });\n    });\n  },\n\n  methods: {\n    /** @public */\n    focus() {\n      this.onFocus();\n    },\n\n    /** @public */\n    blur(e) {\n      // https://github.com/vuetifyjs/vuetify/issues/5913\n      // Safari tab order gets broken if called synchronous\n      window.requestAnimationFrame(() => {\n        this.$refs.input && this.$refs.input.blur();\n      });\n    },\n\n    clearableCallback() {\n      this.$refs.input && this.$refs.input.focus();\n      this.$nextTick(() => this.internalValue = null);\n    },\n\n    genAppendSlot() {\n      const slot = [];\n\n      if (this.$slots['append-outer']) {\n        slot.push(this.$slots['append-outer']);\n      } else if (this.appendOuterIcon) {\n        slot.push(this.genIcon('appendOuter'));\n      }\n\n      return this.genSlot('append', 'outer', slot);\n    },\n\n    genPrependInnerSlot() {\n      const slot = [];\n\n      if (this.$slots['prepend-inner']) {\n        slot.push(this.$slots['prepend-inner']);\n      } else if (this.prependInnerIcon) {\n        slot.push(this.genIcon('prependInner'));\n      }\n\n      return this.genSlot('prepend', 'inner', slot);\n    },\n\n    genIconSlot() {\n      const slot = [];\n\n      if (this.$slots.append) {\n        slot.push(this.$slots.append);\n      } else if (this.appendIcon) {\n        slot.push(this.genIcon('append'));\n      }\n\n      return this.genSlot('append', 'inner', slot);\n    },\n\n    genInputSlot() {\n      const input = VInput.options.methods.genInputSlot.call(this);\n      const prepend = this.genPrependInnerSlot();\n\n      if (prepend) {\n        input.children = input.children || [];\n        input.children.unshift(prepend);\n      }\n\n      return input;\n    },\n\n    genClearIcon() {\n      if (!this.clearable) return null; // if the text field has no content then don't display the clear icon.\n      // We add an empty div because other controls depend on a ref to append inner\n\n      if (!this.isDirty) {\n        return this.genSlot('append', 'inner', [this.$createElement('div')]);\n      }\n\n      return this.genSlot('append', 'inner', [this.genIcon('clear', this.clearableCallback)]);\n    },\n\n    genCounter() {\n      var _this$$scopedSlots$co, _this$$scopedSlots$co2, _this$$scopedSlots;\n\n      if (!this.hasCounter) return null;\n      const max = this.counter === true ? this.attrs$.maxlength : this.counter;\n      const props = {\n        dark: this.dark,\n        light: this.light,\n        max,\n        value: this.computedCounterValue\n      };\n      return (_this$$scopedSlots$co = (_this$$scopedSlots$co2 = (_this$$scopedSlots = this.$scopedSlots).counter) == null ? void 0 : _this$$scopedSlots$co2.call(_this$$scopedSlots, {\n        props\n      })) != null ? _this$$scopedSlots$co : this.$createElement(VCounter, {\n        props\n      });\n    },\n\n    genControl() {\n      return VInput.options.methods.genControl.call(this);\n    },\n\n    genDefaultSlot() {\n      return [this.genFieldset(), this.genTextFieldSlot(), this.genClearIcon(), this.genIconSlot(), this.genProgress()];\n    },\n\n    genFieldset() {\n      if (!this.outlined) return null;\n      return this.$createElement('fieldset', {\n        attrs: {\n          'aria-hidden': true\n        }\n      }, [this.genLegend()]);\n    },\n\n    genLabel() {\n      if (!this.showLabel) return null;\n      const data = {\n        props: {\n          absolute: true,\n          color: this.validationState,\n          dark: this.dark,\n          disabled: this.isDisabled,\n          focused: !this.isSingle && (this.isFocused || !!this.validationState),\n          for: this.computedId,\n          left: this.labelPosition.left,\n          light: this.light,\n          right: this.labelPosition.right,\n          value: this.labelValue\n        }\n      };\n      return this.$createElement(VLabel, data, this.$slots.label || this.label);\n    },\n\n    genLegend() {\n      const width = !this.singleLine && (this.labelValue || this.isDirty) ? this.labelWidth : 0;\n      const span = this.$createElement('span', {\n        domProps: {\n          innerHTML: '&#8203;'\n        },\n        staticClass: 'notranslate'\n      });\n      return this.$createElement('legend', {\n        style: {\n          width: !this.isSingle ? convertToUnit(width) : undefined\n        }\n      }, [span]);\n    },\n\n    genInput() {\n      const listeners = Object.assign({}, this.listeners$);\n      delete listeners.change; // Change should not be bound externally\n\n      const {\n        title,\n        ...inputAttrs\n      } = this.attrs$;\n      return this.$createElement('input', {\n        style: {},\n        domProps: {\n          value: this.type === 'number' && Object.is(this.lazyValue, -0) ? '-0' : this.lazyValue\n        },\n        attrs: { ...inputAttrs,\n          autofocus: this.autofocus,\n          disabled: this.isDisabled,\n          id: this.computedId,\n          placeholder: this.persistentPlaceholder || this.isFocused || !this.hasLabel ? this.placeholder : undefined,\n          readonly: this.isReadonly,\n          type: this.type\n        },\n        on: Object.assign(listeners, {\n          blur: this.onBlur,\n          input: this.onInput,\n          focus: this.onFocus,\n          keydown: this.onKeyDown\n        }),\n        ref: 'input',\n        directives: [{\n          name: 'resize',\n          modifiers: {\n            quiet: true\n          },\n          value: this.onResize\n        }]\n      });\n    },\n\n    genMessages() {\n      if (!this.showDetails) return null;\n      const messagesNode = VInput.options.methods.genMessages.call(this);\n      const counterNode = this.genCounter();\n      return this.$createElement('div', {\n        staticClass: 'v-text-field__details'\n      }, [messagesNode, counterNode]);\n    },\n\n    genTextFieldSlot() {\n      return this.$createElement('div', {\n        staticClass: 'v-text-field__slot'\n      }, [this.genLabel(), this.prefix ? this.genAffix('prefix') : null, this.genInput(), this.suffix ? this.genAffix('suffix') : null]);\n    },\n\n    genAffix(type) {\n      return this.$createElement('div', {\n        class: `v-text-field__${type}`,\n        ref: type\n      }, this[type]);\n    },\n\n    onBlur(e) {\n      this.isFocused = false;\n      e && this.$nextTick(() => this.$emit('blur', e));\n    },\n\n    onClick() {\n      if (this.isFocused || this.isDisabled || !this.$refs.input) return;\n      this.$refs.input.focus();\n    },\n\n    onFocus(e) {\n      if (!this.$refs.input) return;\n      const root = attachedRoot(this.$el);\n      if (!root) return;\n\n      if (root.activeElement !== this.$refs.input) {\n        return this.$refs.input.focus();\n      }\n\n      if (!this.isFocused) {\n        this.isFocused = true;\n        e && this.$emit('focus', e);\n      }\n    },\n\n    onInput(e) {\n      const target = e.target;\n      this.internalValue = target.value;\n      this.badInput = target.validity && target.validity.badInput;\n    },\n\n    onKeyDown(e) {\n      if (e.keyCode === keyCodes.enter && this.lazyValue !== this.initialValue) {\n        this.initialValue = this.lazyValue;\n        this.$emit('change', this.initialValue);\n      }\n\n      this.$emit('keydown', e);\n    },\n\n    onMouseDown(e) {\n      // Prevent input from being blurred\n      if (e.target !== this.$refs.input) {\n        e.preventDefault();\n        e.stopPropagation();\n      }\n\n      VInput.options.methods.onMouseDown.call(this, e);\n    },\n\n    onMouseUp(e) {\n      if (this.hasMouseDown) this.focus();\n      VInput.options.methods.onMouseUp.call(this, e);\n    },\n\n    setLabelWidth() {\n      if (!this.outlined) return;\n      this.labelWidth = this.$refs.label ? Math.min(this.$refs.label.scrollWidth * 0.75 + 6, this.$el.offsetWidth - 24) : 0;\n    },\n\n    setPrefixWidth() {\n      if (!this.$refs.prefix) return;\n      this.prefixWidth = this.$refs.prefix.offsetWidth;\n    },\n\n    setPrependWidth() {\n      if (!this.outlined || !this.$refs['prepend-inner']) return;\n      this.prependWidth = this.$refs['prepend-inner'].offsetWidth;\n    },\n\n    tryAutofocus() {\n      if (!this.autofocus || typeof document === 'undefined' || !this.$refs.input) return false;\n      const root = attachedRoot(this.$el);\n      if (!root || root.activeElement === this.$refs.input) return false;\n      this.$refs.input.focus();\n      return true;\n    },\n\n    updateValue(val) {\n      // Sets validationState from validatable\n      this.hasColor = val;\n\n      if (val) {\n        this.initialValue = this.lazyValue;\n      } else if (this.initialValue !== this.lazyValue) {\n        this.$emit('change', this.lazyValue);\n      }\n    },\n\n    onResize() {\n      this.setLabelWidth();\n      this.setPrefixWidth();\n      this.setPrependWidth();\n    }\n\n  }\n});\n//# sourceMappingURL=VTextField.js.map","var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n  anObject(O);\n  P = toPrimitive(P, true);\n  anObject(Attributes);\n  if (IE8_DOM_DEFINE) try {\n    return dP(O, P, Attributes);\n  } catch (e) { /* 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","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","// Styles\nimport \"../../../src/components/VList/VList.sass\"; // Components\n\nimport VSheet from '../VSheet/VSheet';\n/* @vue/component */\n\nexport default VSheet.extend().extend({\n  name: 'v-list',\n\n  provide() {\n    return {\n      isInList: true,\n      list: this\n    };\n  },\n\n  inject: {\n    isInMenu: {\n      default: false\n    },\n    isInNav: {\n      default: false\n    }\n  },\n  props: {\n    dense: Boolean,\n    disabled: Boolean,\n    expand: Boolean,\n    flat: Boolean,\n    nav: Boolean,\n    rounded: Boolean,\n    subheader: Boolean,\n    threeLine: Boolean,\n    twoLine: Boolean\n  },\n  data: () => ({\n    groups: []\n  }),\n  computed: {\n    classes() {\n      return { ...VSheet.options.computed.classes.call(this),\n        'v-list--dense': this.dense,\n        'v-list--disabled': this.disabled,\n        'v-list--flat': this.flat,\n        'v-list--nav': this.nav,\n        'v-list--rounded': this.rounded,\n        'v-list--subheader': this.subheader,\n        'v-list--two-line': this.twoLine,\n        'v-list--three-line': this.threeLine\n      };\n    }\n\n  },\n  methods: {\n    register(content) {\n      this.groups.push(content);\n    },\n\n    unregister(content) {\n      const index = this.groups.findIndex(g => g._uid === content._uid);\n      if (index > -1) this.groups.splice(index, 1);\n    },\n\n    listClick(uid) {\n      if (this.expand) return;\n\n      for (const group of this.groups) {\n        group.toggle(uid);\n      }\n    }\n\n  },\n\n  render(h) {\n    const data = {\n      staticClass: 'v-list',\n      class: this.classes,\n      style: this.styles,\n      attrs: {\n        role: this.isInNav || this.isInMenu ? undefined : 'list',\n        ...this.attrs$\n      }\n    };\n    return h(this.tag, this.setBackgroundColor(this.color, data), [this.$slots.default]);\n  }\n\n});\n//# sourceMappingURL=VList.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AdapterService = void 0;\nconst errors_1 = require(\"@feathersjs/errors\");\nconst filter_query_1 = __importDefault(require(\"./filter-query\"));\nconst callMethod = (self, name, ...args) => {\n    if (typeof self[name] !== 'function') {\n        return Promise.reject(new errors_1.NotImplemented(`Method ${name} not available`));\n    }\n    return self[name](...args);\n};\nconst alwaysMulti = {\n    find: true,\n    get: false,\n    update: false\n};\nclass AdapterService {\n    constructor(options) {\n        this.options = Object.assign({\n            id: 'id',\n            events: [],\n            paginate: {},\n            multi: false,\n            filters: [],\n            whitelist: []\n        }, options);\n    }\n    get id() {\n        return this.options.id;\n    }\n    get events() {\n        return this.options.events;\n    }\n    filterQuery(params = {}, opts = {}) {\n        const paginate = typeof params.paginate !== 'undefined'\n            ? params.paginate : this.options.paginate;\n        const { query = {} } = params;\n        const options = Object.assign({\n            operators: this.options.whitelist || [],\n            filters: this.options.filters,\n            paginate\n        }, opts);\n        const result = filter_query_1.default(query, options);\n        return Object.assign(result, { paginate });\n    }\n    allowsMulti(method) {\n        const always = alwaysMulti[method];\n        if (typeof always !== 'undefined') {\n            return always;\n        }\n        const option = this.options.multi;\n        if (option === true || option === false) {\n            return option;\n        }\n        else {\n            return option.includes(method);\n        }\n    }\n    find(params) {\n        return callMethod(this, '_find', params);\n    }\n    get(id, params) {\n        return callMethod(this, '_get', id, params);\n    }\n    create(data, params) {\n        if (Array.isArray(data) && !this.allowsMulti('create')) {\n            return Promise.reject(new errors_1.MethodNotAllowed(`Can not create multiple entries`));\n        }\n        return callMethod(this, '_create', data, params);\n    }\n    update(id, data, params) {\n        if (id === null || Array.isArray(data)) {\n            return Promise.reject(new errors_1.BadRequest(`You can not replace multiple instances. Did you mean 'patch'?`));\n        }\n        return callMethod(this, '_update', id, data, params);\n    }\n    patch(id, data, params) {\n        if (id === null && !this.allowsMulti('patch')) {\n            return Promise.reject(new errors_1.MethodNotAllowed(`Can not patch multiple entries`));\n        }\n        return callMethod(this, '_patch', id, data, params);\n    }\n    remove(id, params) {\n        if (id === null && !this.allowsMulti('remove')) {\n            return Promise.reject(new errors_1.MethodNotAllowed(`Can not remove multiple entries`));\n        }\n        return callMethod(this, '_remove', id, params);\n    }\n}\nexports.AdapterService = AdapterService;\n//# sourceMappingURL=service.js.map","var baseGet = require('./_baseGet'),\n    baseSet = require('./_baseSet'),\n    castPath = require('./_castPath');\n\n/**\n * The base implementation of  `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\nfunction basePickBy(object, paths, predicate) {\n  var index = -1,\n      length = paths.length,\n      result = {};\n\n  while (++index < length) {\n    var path = paths[index],\n        value = baseGet(object, path);\n\n    if (predicate(value, path)) {\n      baseSet(result, castPath(path, object), value);\n    }\n  }\n  return result;\n}\n\nmodule.exports = basePickBy;\n","'use strict';\n// ECMAScript 6 symbols shim\nvar global = require('./_global');\nvar has = require('./_has');\nvar DESCRIPTORS = require('./_descriptors');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar META = require('./_meta').KEY;\nvar $fails = require('./_fails');\nvar shared = require('./_shared');\nvar setToStringTag = require('./_set-to-string-tag');\nvar uid = require('./_uid');\nvar wks = require('./_wks');\nvar wksExt = require('./_wks-ext');\nvar wksDefine = require('./_wks-define');\nvar enumKeys = require('./_enum-keys');\nvar isArray = require('./_is-array');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar toObject = require('./_to-object');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar createDesc = require('./_property-desc');\nvar _create = require('./_object-create');\nvar gOPNExt = require('./_object-gopn-ext');\nvar $GOPD = require('./_object-gopd');\nvar $GOPS = require('./_object-gops');\nvar $DP = require('./_object-dp');\nvar $keys = require('./_object-keys');\nvar gOPD = $GOPD.f;\nvar dP = $DP.f;\nvar gOPN = gOPNExt.f;\nvar $Symbol = global.Symbol;\nvar $JSON = global.JSON;\nvar _stringify = $JSON && $JSON.stringify;\nvar PROTOTYPE = 'prototype';\nvar HIDDEN = wks('_hidden');\nvar TO_PRIMITIVE = wks('toPrimitive');\nvar isEnum = {}.propertyIsEnumerable;\nvar SymbolRegistry = shared('symbol-registry');\nvar AllSymbols = shared('symbols');\nvar OPSymbols = shared('op-symbols');\nvar ObjectProto = Object[PROTOTYPE];\nvar USE_NATIVE = typeof $Symbol == 'function' && !!$GOPS.f;\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDesc = DESCRIPTORS && $fails(function () {\n  return _create(dP({}, 'a', {\n    get: function () { return dP(this, 'a', { value: 7 }).a; }\n  })).a != 7;\n}) ? function (it, key, D) {\n  var protoDesc = gOPD(ObjectProto, key);\n  if (protoDesc) delete ObjectProto[key];\n  dP(it, key, D);\n  if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);\n} : dP;\n\nvar wrap = function (tag) {\n  var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);\n  sym._k = tag;\n  return sym;\n};\n\nvar isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {\n  return typeof it == 'symbol';\n} : function (it) {\n  return it instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(it, key, D) {\n  if (it === ObjectProto) $defineProperty(OPSymbols, key, D);\n  anObject(it);\n  key = toPrimitive(key, true);\n  anObject(D);\n  if (has(AllSymbols, key)) {\n    if (!D.enumerable) {\n      if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));\n      it[HIDDEN][key] = true;\n    } else {\n      if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;\n      D = _create(D, { enumerable: createDesc(0, false) });\n    } return setSymbolDesc(it, key, D);\n  } return dP(it, key, D);\n};\nvar $defineProperties = function defineProperties(it, P) {\n  anObject(it);\n  var keys = enumKeys(P = toIObject(P));\n  var i = 0;\n  var l = keys.length;\n  var key;\n  while (l > i) $defineProperty(it, key = keys[i++], P[key]);\n  return it;\n};\nvar $create = function create(it, P) {\n  return P === undefined ? _create(it) : $defineProperties(_create(it), P);\n};\nvar $propertyIsEnumerable = function propertyIsEnumerable(key) {\n  var E = isEnum.call(this, key = toPrimitive(key, true));\n  if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;\n  return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;\n};\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {\n  it = toIObject(it);\n  key = toPrimitive(key, true);\n  if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;\n  var D = gOPD(it, key);\n  if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;\n  return D;\n};\nvar $getOwnPropertyNames = function getOwnPropertyNames(it) {\n  var names = gOPN(toIObject(it));\n  var result = [];\n  var i = 0;\n  var key;\n  while (names.length > i) {\n    if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);\n  } return result;\n};\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(it) {\n  var IS_OP = it === ObjectProto;\n  var names = gOPN(IS_OP ? OPSymbols : toIObject(it));\n  var result = [];\n  var i = 0;\n  var key;\n  while (names.length > i) {\n    if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);\n  } return result;\n};\n\n// 19.4.1.1 Symbol([description])\nif (!USE_NATIVE) {\n  $Symbol = function Symbol() {\n    if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');\n    var tag = uid(arguments.length > 0 ? arguments[0] : undefined);\n    var $set = function (value) {\n      if (this === ObjectProto) $set.call(OPSymbols, value);\n      if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n      setSymbolDesc(this, tag, createDesc(1, value));\n    };\n    if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set });\n    return wrap(tag);\n  };\n  redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n    return this._k;\n  });\n\n  $GOPD.f = $getOwnPropertyDescriptor;\n  $DP.f = $defineProperty;\n  require('./_object-gopn').f = gOPNExt.f = $getOwnPropertyNames;\n  require('./_object-pie').f = $propertyIsEnumerable;\n  $GOPS.f = $getOwnPropertySymbols;\n\n  if (DESCRIPTORS && !require('./_library')) {\n    redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);\n  }\n\n  wksExt.f = function (name) {\n    return wrap(wks(name));\n  };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });\n\nfor (var es6Symbols = (\n  // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14\n  'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'\n).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]);\n\nfor (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]);\n\n$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {\n  // 19.4.2.1 Symbol.for(key)\n  'for': function (key) {\n    return has(SymbolRegistry, key += '')\n      ? SymbolRegistry[key]\n      : SymbolRegistry[key] = $Symbol(key);\n  },\n  // 19.4.2.5 Symbol.keyFor(sym)\n  keyFor: function keyFor(sym) {\n    if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');\n    for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key;\n  },\n  useSetter: function () { setter = true; },\n  useSimple: function () { setter = false; }\n});\n\n$export($export.S + $export.F * !USE_NATIVE, 'Object', {\n  // 19.1.2.2 Object.create(O [, Properties])\n  create: $create,\n  // 19.1.2.4 Object.defineProperty(O, P, Attributes)\n  defineProperty: $defineProperty,\n  // 19.1.2.3 Object.defineProperties(O, Properties)\n  defineProperties: $defineProperties,\n  // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\n  getOwnPropertyDescriptor: $getOwnPropertyDescriptor,\n  // 19.1.2.7 Object.getOwnPropertyNames(O)\n  getOwnPropertyNames: $getOwnPropertyNames,\n  // 19.1.2.8 Object.getOwnPropertySymbols(O)\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\nvar FAILS_ON_PRIMITIVES = $fails(function () { $GOPS.f(1); });\n\n$export($export.S + $export.F * FAILS_ON_PRIMITIVES, 'Object', {\n  getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n    return $GOPS.f(toObject(it));\n  }\n});\n\n// 24.3.2 JSON.stringify(value [, replacer [, space]])\n$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {\n  var S = $Symbol();\n  // MS Edge converts symbol values to JSON as {}\n  // WebKit converts symbol values to JSON as null\n  // V8 throws on boxed symbols\n  return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';\n})), 'JSON', {\n  stringify: function stringify(it) {\n    var args = [it];\n    var i = 1;\n    var replacer, $replacer;\n    while (arguments.length > i) args.push(arguments[i++]);\n    $replacer = replacer = args[1];\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($JSON, args);\n  }\n});\n\n// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)\n$Symbol[PROTOTYPE][TO_PRIMITIVE] || require('./_hide')($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n// 19.4.3.5 Symbol.prototype[@@toStringTag]\nsetToStringTag($Symbol, 'Symbol');\n// 20.2.1.9 Math[@@toStringTag]\nsetToStringTag(Math, 'Math', true);\n// 24.3.3 JSON[@@toStringTag]\nsetToStringTag(global.JSON, 'JSON', true);\n","/**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction safeGet(object, key) {\n  if (key === 'constructor' && typeof object[key] === 'function') {\n    return;\n  }\n\n  if (key == '__proto__') {\n    return;\n  }\n\n  return object[key];\n}\n\nmodule.exports = safeGet;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n    Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n    o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n    if (mod && mod.__esModule) return mod;\n    var result = {};\n    if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n    __setModuleDefault(result, mod);\n    return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.defaults = exports.defaultStorage = exports.hooks = exports.MemoryStorage = exports.AuthenticationClient = exports.getDefaultStorage = void 0;\nconst core_1 = require(\"./core\");\nObject.defineProperty(exports, \"AuthenticationClient\", { enumerable: true, get: function () { return core_1.AuthenticationClient; } });\nconst hooks = __importStar(require(\"./hooks\"));\nexports.hooks = hooks;\nconst storage_1 = require(\"./storage\");\nObject.defineProperty(exports, \"MemoryStorage\", { enumerable: true, get: function () { return storage_1.MemoryStorage; } });\nconst getDefaultStorage = () => {\n    try {\n        return new storage_1.StorageWrapper(window.localStorage);\n    }\n    catch (error) { }\n    return new storage_1.MemoryStorage();\n};\nexports.getDefaultStorage = getDefaultStorage;\nexports.defaultStorage = exports.getDefaultStorage();\nexports.defaults = {\n    header: 'Authorization',\n    scheme: 'Bearer',\n    storageKey: 'feathers-jwt',\n    locationKey: 'access_token',\n    locationErrorKey: 'error',\n    jwtStrategy: 'jwt',\n    path: '/authentication',\n    Authentication: core_1.AuthenticationClient,\n    storage: exports.defaultStorage\n};\nconst init = (_options = {}) => {\n    const options = Object.assign({}, exports.defaults, _options);\n    const { Authentication } = options;\n    return (app) => {\n        const authentication = new Authentication(app, options);\n        app.authentication = authentication;\n        app.authenticate = authentication.authenticate.bind(authentication);\n        app.reAuthenticate = authentication.reAuthenticate.bind(authentication);\n        app.logout = authentication.logout.bind(authentication);\n        app.hooks({\n            before: {\n                all: [\n                    hooks.authentication(),\n                    hooks.populateHeader()\n                ]\n            }\n        });\n    };\n};\nexports.default = init;\nif (typeof module !== 'undefined') {\n    module.exports = Object.assign(init, module.exports);\n}\n//# sourceMappingURL=index.js.map","// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nvar isObject = require('./_is-object');\nvar anObject = require('./_an-object');\nvar check = function (O, proto) {\n  anObject(O);\n  if (!isObject(proto) && proto !== null) throw TypeError(proto + \": can't set as prototype!\");\n};\nmodule.exports = {\n  set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line\n    function (test, buggy, set) {\n      try {\n        set = require('./_ctx')(Function.call, require('./_object-gopd').f(Object.prototype, '__proto__').set, 2);\n        set(test, []);\n        buggy = !(test instanceof Array);\n      } catch (e) { buggy = true; }\n      return function setPrototypeOf(O, proto) {\n        check(O, proto);\n        if (buggy) O.__proto__ = proto;\n        else set(O, proto);\n        return O;\n      };\n    }({}, false) : undefined),\n  check: check\n};\n","/*!\n  * vue-router v3.5.3\n  * (c) 2021 Evan You\n  * @license MIT\n  */\n/*  */\n\nfunction assert (condition, message) {\n  if (!condition) {\n    throw new Error((\"[vue-router] \" + message))\n  }\n}\n\nfunction warn (condition, message) {\n  if (!condition) {\n    typeof console !== 'undefined' && console.warn((\"[vue-router] \" + message));\n  }\n}\n\nfunction extend (a, b) {\n  for (var key in b) {\n    a[key] = b[key];\n  }\n  return a\n}\n\n/*  */\n\nvar encodeReserveRE = /[!'()*]/g;\nvar encodeReserveReplacer = function (c) { return '%' + c.charCodeAt(0).toString(16); };\nvar commaRE = /%2C/g;\n\n// fixed encodeURIComponent which is more conformant to RFC3986:\n// - escapes [!'()*]\n// - preserve commas\nvar encode = function (str) { return encodeURIComponent(str)\n    .replace(encodeReserveRE, encodeReserveReplacer)\n    .replace(commaRE, ','); };\n\nfunction decode (str) {\n  try {\n    return decodeURIComponent(str)\n  } catch (err) {\n    if (process.env.NODE_ENV !== 'production') {\n      warn(false, (\"Error decoding \\\"\" + str + \"\\\". Leaving it intact.\"));\n    }\n  }\n  return str\n}\n\nfunction resolveQuery (\n  query,\n  extraQuery,\n  _parseQuery\n) {\n  if ( extraQuery === void 0 ) extraQuery = {};\n\n  var parse = _parseQuery || parseQuery;\n  var parsedQuery;\n  try {\n    parsedQuery = parse(query || '');\n  } catch (e) {\n    process.env.NODE_ENV !== 'production' && warn(false, e.message);\n    parsedQuery = {};\n  }\n  for (var key in extraQuery) {\n    var value = extraQuery[key];\n    parsedQuery[key] = Array.isArray(value)\n      ? value.map(castQueryParamValue)\n      : castQueryParamValue(value);\n  }\n  return parsedQuery\n}\n\nvar castQueryParamValue = function (value) { return (value == null || typeof value === 'object' ? value : String(value)); };\n\nfunction parseQuery (query) {\n  var res = {};\n\n  query = query.trim().replace(/^(\\?|#|&)/, '');\n\n  if (!query) {\n    return res\n  }\n\n  query.split('&').forEach(function (param) {\n    var parts = param.replace(/\\+/g, ' ').split('=');\n    var key = decode(parts.shift());\n    var val = parts.length > 0 ? decode(parts.join('=')) : null;\n\n    if (res[key] === undefined) {\n      res[key] = val;\n    } else if (Array.isArray(res[key])) {\n      res[key].push(val);\n    } else {\n      res[key] = [res[key], val];\n    }\n  });\n\n  return res\n}\n\nfunction stringifyQuery (obj) {\n  var res = obj\n    ? Object.keys(obj)\n      .map(function (key) {\n        var val = obj[key];\n\n        if (val === undefined) {\n          return ''\n        }\n\n        if (val === null) {\n          return encode(key)\n        }\n\n        if (Array.isArray(val)) {\n          var result = [];\n          val.forEach(function (val2) {\n            if (val2 === undefined) {\n              return\n            }\n            if (val2 === null) {\n              result.push(encode(key));\n            } else {\n              result.push(encode(key) + '=' + encode(val2));\n            }\n          });\n          return result.join('&')\n        }\n\n        return encode(key) + '=' + encode(val)\n      })\n      .filter(function (x) { return x.length > 0; })\n      .join('&')\n    : null;\n  return res ? (\"?\" + res) : ''\n}\n\n/*  */\n\nvar trailingSlashRE = /\\/?$/;\n\nfunction createRoute (\n  record,\n  location,\n  redirectedFrom,\n  router\n) {\n  var stringifyQuery = router && router.options.stringifyQuery;\n\n  var query = location.query || {};\n  try {\n    query = clone(query);\n  } catch (e) {}\n\n  var route = {\n    name: location.name || (record && record.name),\n    meta: (record && record.meta) || {},\n    path: location.path || '/',\n    hash: location.hash || '',\n    query: query,\n    params: location.params || {},\n    fullPath: getFullPath(location, stringifyQuery),\n    matched: record ? formatMatch(record) : []\n  };\n  if (redirectedFrom) {\n    route.redirectedFrom = getFullPath(redirectedFrom, stringifyQuery);\n  }\n  return Object.freeze(route)\n}\n\nfunction clone (value) {\n  if (Array.isArray(value)) {\n    return value.map(clone)\n  } else if (value && typeof value === 'object') {\n    var res = {};\n    for (var key in value) {\n      res[key] = clone(value[key]);\n    }\n    return res\n  } else {\n    return value\n  }\n}\n\n// the starting route that represents the initial state\nvar START = createRoute(null, {\n  path: '/'\n});\n\nfunction formatMatch (record) {\n  var res = [];\n  while (record) {\n    res.unshift(record);\n    record = record.parent;\n  }\n  return res\n}\n\nfunction getFullPath (\n  ref,\n  _stringifyQuery\n) {\n  var path = ref.path;\n  var query = ref.query; if ( query === void 0 ) query = {};\n  var hash = ref.hash; if ( hash === void 0 ) hash = '';\n\n  var stringify = _stringifyQuery || stringifyQuery;\n  return (path || '/') + stringify(query) + hash\n}\n\nfunction isSameRoute (a, b, onlyPath) {\n  if (b === START) {\n    return a === b\n  } else if (!b) {\n    return false\n  } else if (a.path && b.path) {\n    return a.path.replace(trailingSlashRE, '') === b.path.replace(trailingSlashRE, '') && (onlyPath ||\n      a.hash === b.hash &&\n      isObjectEqual(a.query, b.query))\n  } else if (a.name && b.name) {\n    return (\n      a.name === b.name &&\n      (onlyPath || (\n        a.hash === b.hash &&\n      isObjectEqual(a.query, b.query) &&\n      isObjectEqual(a.params, b.params))\n      )\n    )\n  } else {\n    return false\n  }\n}\n\nfunction isObjectEqual (a, b) {\n  if ( a === void 0 ) a = {};\n  if ( b === void 0 ) b = {};\n\n  // handle null value #1566\n  if (!a || !b) { return a === b }\n  var aKeys = Object.keys(a).sort();\n  var bKeys = Object.keys(b).sort();\n  if (aKeys.length !== bKeys.length) {\n    return false\n  }\n  return aKeys.every(function (key, i) {\n    var aVal = a[key];\n    var bKey = bKeys[i];\n    if (bKey !== key) { return false }\n    var bVal = b[key];\n    // query values can be null and undefined\n    if (aVal == null || bVal == null) { return aVal === bVal }\n    // check nested equality\n    if (typeof aVal === 'object' && typeof bVal === 'object') {\n      return isObjectEqual(aVal, bVal)\n    }\n    return String(aVal) === String(bVal)\n  })\n}\n\nfunction isIncludedRoute (current, target) {\n  return (\n    current.path.replace(trailingSlashRE, '/').indexOf(\n      target.path.replace(trailingSlashRE, '/')\n    ) === 0 &&\n    (!target.hash || current.hash === target.hash) &&\n    queryIncludes(current.query, target.query)\n  )\n}\n\nfunction queryIncludes (current, target) {\n  for (var key in target) {\n    if (!(key in current)) {\n      return false\n    }\n  }\n  return true\n}\n\nfunction handleRouteEntered (route) {\n  for (var i = 0; i < route.matched.length; i++) {\n    var record = route.matched[i];\n    for (var name in record.instances) {\n      var instance = record.instances[name];\n      var cbs = record.enteredCbs[name];\n      if (!instance || !cbs) { continue }\n      delete record.enteredCbs[name];\n      for (var i$1 = 0; i$1 < cbs.length; i$1++) {\n        if (!instance._isBeingDestroyed) { cbs[i$1](instance); }\n      }\n    }\n  }\n}\n\nvar View = {\n  name: 'RouterView',\n  functional: true,\n  props: {\n    name: {\n      type: String,\n      default: 'default'\n    }\n  },\n  render: function render (_, ref) {\n    var props = ref.props;\n    var children = ref.children;\n    var parent = ref.parent;\n    var data = ref.data;\n\n    // used by devtools to display a router-view badge\n    data.routerView = true;\n\n    // directly use parent context's createElement() function\n    // so that components rendered by router-view can resolve named slots\n    var h = parent.$createElement;\n    var name = props.name;\n    var route = parent.$route;\n    var cache = parent._routerViewCache || (parent._routerViewCache = {});\n\n    // determine current view depth, also check to see if the tree\n    // has been toggled inactive but kept-alive.\n    var depth = 0;\n    var inactive = false;\n    while (parent && parent._routerRoot !== parent) {\n      var vnodeData = parent.$vnode ? parent.$vnode.data : {};\n      if (vnodeData.routerView) {\n        depth++;\n      }\n      if (vnodeData.keepAlive && parent._directInactive && parent._inactive) {\n        inactive = true;\n      }\n      parent = parent.$parent;\n    }\n    data.routerViewDepth = depth;\n\n    // render previous view if the tree is inactive and kept-alive\n    if (inactive) {\n      var cachedData = cache[name];\n      var cachedComponent = cachedData && cachedData.component;\n      if (cachedComponent) {\n        // #2301\n        // pass props\n        if (cachedData.configProps) {\n          fillPropsinData(cachedComponent, data, cachedData.route, cachedData.configProps);\n        }\n        return h(cachedComponent, data, children)\n      } else {\n        // render previous empty view\n        return h()\n      }\n    }\n\n    var matched = route.matched[depth];\n    var component = matched && matched.components[name];\n\n    // render empty node if no matched route or no config component\n    if (!matched || !component) {\n      cache[name] = null;\n      return h()\n    }\n\n    // cache component\n    cache[name] = { component: component };\n\n    // attach instance registration hook\n    // this will be called in the instance's injected lifecycle hooks\n    data.registerRouteInstance = function (vm, val) {\n      // val could be undefined for unregistration\n      var current = matched.instances[name];\n      if (\n        (val && current !== vm) ||\n        (!val && current === vm)\n      ) {\n        matched.instances[name] = val;\n      }\n    }\n\n    // also register instance in prepatch hook\n    // in case the same component instance is reused across different routes\n    ;(data.hook || (data.hook = {})).prepatch = function (_, vnode) {\n      matched.instances[name] = vnode.componentInstance;\n    };\n\n    // register instance in init hook\n    // in case kept-alive component be actived when routes changed\n    data.hook.init = function (vnode) {\n      if (vnode.data.keepAlive &&\n        vnode.componentInstance &&\n        vnode.componentInstance !== matched.instances[name]\n      ) {\n        matched.instances[name] = vnode.componentInstance;\n      }\n\n      // if the route transition has already been confirmed then we weren't\n      // able to call the cbs during confirmation as the component was not\n      // registered yet, so we call it here.\n      handleRouteEntered(route);\n    };\n\n    var configProps = matched.props && matched.props[name];\n    // save route and configProps in cache\n    if (configProps) {\n      extend(cache[name], {\n        route: route,\n        configProps: configProps\n      });\n      fillPropsinData(component, data, route, configProps);\n    }\n\n    return h(component, data, children)\n  }\n};\n\nfunction fillPropsinData (component, data, route, configProps) {\n  // resolve props\n  var propsToPass = data.props = resolveProps(route, configProps);\n  if (propsToPass) {\n    // clone to prevent mutation\n    propsToPass = data.props = extend({}, propsToPass);\n    // pass non-declared props as attrs\n    var attrs = data.attrs = data.attrs || {};\n    for (var key in propsToPass) {\n      if (!component.props || !(key in component.props)) {\n        attrs[key] = propsToPass[key];\n        delete propsToPass[key];\n      }\n    }\n  }\n}\n\nfunction resolveProps (route, config) {\n  switch (typeof config) {\n    case 'undefined':\n      return\n    case 'object':\n      return config\n    case 'function':\n      return config(route)\n    case 'boolean':\n      return config ? route.params : undefined\n    default:\n      if (process.env.NODE_ENV !== 'production') {\n        warn(\n          false,\n          \"props in \\\"\" + (route.path) + \"\\\" is a \" + (typeof config) + \", \" +\n          \"expecting an object, function or boolean.\"\n        );\n      }\n  }\n}\n\n/*  */\n\nfunction resolvePath (\n  relative,\n  base,\n  append\n) {\n  var firstChar = relative.charAt(0);\n  if (firstChar === '/') {\n    return relative\n  }\n\n  if (firstChar === '?' || firstChar === '#') {\n    return base + relative\n  }\n\n  var stack = base.split('/');\n\n  // remove trailing segment if:\n  // - not appending\n  // - appending to trailing slash (last segment is empty)\n  if (!append || !stack[stack.length - 1]) {\n    stack.pop();\n  }\n\n  // resolve relative path\n  var segments = relative.replace(/^\\//, '').split('/');\n  for (var i = 0; i < segments.length; i++) {\n    var segment = segments[i];\n    if (segment === '..') {\n      stack.pop();\n    } else if (segment !== '.') {\n      stack.push(segment);\n    }\n  }\n\n  // ensure leading slash\n  if (stack[0] !== '') {\n    stack.unshift('');\n  }\n\n  return stack.join('/')\n}\n\nfunction parsePath (path) {\n  var hash = '';\n  var query = '';\n\n  var hashIndex = path.indexOf('#');\n  if (hashIndex >= 0) {\n    hash = path.slice(hashIndex);\n    path = path.slice(0, hashIndex);\n  }\n\n  var queryIndex = path.indexOf('?');\n  if (queryIndex >= 0) {\n    query = path.slice(queryIndex + 1);\n    path = path.slice(0, queryIndex);\n  }\n\n  return {\n    path: path,\n    query: query,\n    hash: hash\n  }\n}\n\nfunction cleanPath (path) {\n  return path.replace(/\\/+/g, '/')\n}\n\nvar isarray = Array.isArray || function (arr) {\n  return Object.prototype.toString.call(arr) == '[object Array]';\n};\n\n/**\n * Expose `pathToRegexp`.\n */\nvar pathToRegexp_1 = pathToRegexp;\nvar parse_1 = parse;\nvar compile_1 = compile;\nvar tokensToFunction_1 = tokensToFunction;\nvar tokensToRegExp_1 = tokensToRegExp;\n\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\nvar PATH_REGEXP = new RegExp([\n  // Match escaped characters that would otherwise appear in future matches.\n  // This allows the user to escape special characters that won't transform.\n  '(\\\\\\\\.)',\n  // Match Express-style parameters and un-named parameters with a prefix\n  // and optional suffixes. Matches appear as:\n  //\n  // \"/:test(\\\\d+)?\" => [\"/\", \"test\", \"\\d+\", undefined, \"?\", undefined]\n  // \"/route(\\\\d+)\"  => [undefined, undefined, undefined, \"\\d+\", undefined, undefined]\n  // \"/*\"            => [\"/\", undefined, undefined, undefined, undefined, \"*\"]\n  '([\\\\/.])?(?:(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?|(\\\\*))'\n].join('|'), 'g');\n\n/**\n * Parse a string for the raw tokens.\n *\n * @param  {string}  str\n * @param  {Object=} options\n * @return {!Array}\n */\nfunction parse (str, options) {\n  var tokens = [];\n  var key = 0;\n  var index = 0;\n  var path = '';\n  var defaultDelimiter = options && options.delimiter || '/';\n  var res;\n\n  while ((res = PATH_REGEXP.exec(str)) != null) {\n    var m = res[0];\n    var escaped = res[1];\n    var offset = res.index;\n    path += str.slice(index, offset);\n    index = offset + m.length;\n\n    // Ignore already escaped sequences.\n    if (escaped) {\n      path += escaped[1];\n      continue\n    }\n\n    var next = str[index];\n    var prefix = res[2];\n    var name = res[3];\n    var capture = res[4];\n    var group = res[5];\n    var modifier = res[6];\n    var asterisk = res[7];\n\n    // Push the current path onto the tokens.\n    if (path) {\n      tokens.push(path);\n      path = '';\n    }\n\n    var partial = prefix != null && next != null && next !== prefix;\n    var repeat = modifier === '+' || modifier === '*';\n    var optional = modifier === '?' || modifier === '*';\n    var delimiter = res[2] || defaultDelimiter;\n    var pattern = capture || group;\n\n    tokens.push({\n      name: name || key++,\n      prefix: prefix || '',\n      delimiter: delimiter,\n      optional: optional,\n      repeat: repeat,\n      partial: partial,\n      asterisk: !!asterisk,\n      pattern: pattern ? escapeGroup(pattern) : (asterisk ? '.*' : '[^' + escapeString(delimiter) + ']+?')\n    });\n  }\n\n  // Match any characters still remaining.\n  if (index < str.length) {\n    path += str.substr(index);\n  }\n\n  // If the path exists, push it onto the end.\n  if (path) {\n    tokens.push(path);\n  }\n\n  return tokens\n}\n\n/**\n * Compile a string to a template function for the path.\n *\n * @param  {string}             str\n * @param  {Object=}            options\n * @return {!function(Object=, Object=)}\n */\nfunction compile (str, options) {\n  return tokensToFunction(parse(str, options), options)\n}\n\n/**\n * Prettier encoding of URI path segments.\n *\n * @param  {string}\n * @return {string}\n */\nfunction encodeURIComponentPretty (str) {\n  return encodeURI(str).replace(/[\\/?#]/g, function (c) {\n    return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n  })\n}\n\n/**\n * Encode the asterisk parameter. Similar to `pretty`, but allows slashes.\n *\n * @param  {string}\n * @return {string}\n */\nfunction encodeAsterisk (str) {\n  return encodeURI(str).replace(/[?#]/g, function (c) {\n    return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n  })\n}\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction (tokens, options) {\n  // Compile all the tokens into regexps.\n  var matches = new Array(tokens.length);\n\n  // Compile all the patterns before compilation.\n  for (var i = 0; i < tokens.length; i++) {\n    if (typeof tokens[i] === 'object') {\n      matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$', flags(options));\n    }\n  }\n\n  return function (obj, opts) {\n    var path = '';\n    var data = obj || {};\n    var options = opts || {};\n    var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent;\n\n    for (var i = 0; i < tokens.length; i++) {\n      var token = tokens[i];\n\n      if (typeof token === 'string') {\n        path += token;\n\n        continue\n      }\n\n      var value = data[token.name];\n      var segment;\n\n      if (value == null) {\n        if (token.optional) {\n          // Prepend partial segment prefixes.\n          if (token.partial) {\n            path += token.prefix;\n          }\n\n          continue\n        } else {\n          throw new TypeError('Expected \"' + token.name + '\" to be defined')\n        }\n      }\n\n      if (isarray(value)) {\n        if (!token.repeat) {\n          throw new TypeError('Expected \"' + token.name + '\" to not repeat, but received `' + JSON.stringify(value) + '`')\n        }\n\n        if (value.length === 0) {\n          if (token.optional) {\n            continue\n          } else {\n            throw new TypeError('Expected \"' + token.name + '\" to not be empty')\n          }\n        }\n\n        for (var j = 0; j < value.length; j++) {\n          segment = encode(value[j]);\n\n          if (!matches[i].test(segment)) {\n            throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\", but received `' + JSON.stringify(segment) + '`')\n          }\n\n          path += (j === 0 ? token.prefix : token.delimiter) + segment;\n        }\n\n        continue\n      }\n\n      segment = token.asterisk ? encodeAsterisk(value) : encode(value);\n\n      if (!matches[i].test(segment)) {\n        throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but received \"' + segment + '\"')\n      }\n\n      path += token.prefix + segment;\n    }\n\n    return path\n  }\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param  {string} str\n * @return {string}\n */\nfunction escapeString (str) {\n  return str.replace(/([.+*?=^!:${}()[\\]|\\/\\\\])/g, '\\\\$1')\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param  {string} group\n * @return {string}\n */\nfunction escapeGroup (group) {\n  return group.replace(/([=!:$\\/()])/g, '\\\\$1')\n}\n\n/**\n * Attach the keys as a property of the regexp.\n *\n * @param  {!RegExp} re\n * @param  {Array}   keys\n * @return {!RegExp}\n */\nfunction attachKeys (re, keys) {\n  re.keys = keys;\n  return re\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param  {Object} options\n * @return {string}\n */\nfunction flags (options) {\n  return options && options.sensitive ? '' : 'i'\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param  {!RegExp} path\n * @param  {!Array}  keys\n * @return {!RegExp}\n */\nfunction regexpToRegexp (path, keys) {\n  // Use a negative lookahead to match only capturing groups.\n  var groups = path.source.match(/\\((?!\\?)/g);\n\n  if (groups) {\n    for (var i = 0; i < groups.length; i++) {\n      keys.push({\n        name: i,\n        prefix: null,\n        delimiter: null,\n        optional: false,\n        repeat: false,\n        partial: false,\n        asterisk: false,\n        pattern: null\n      });\n    }\n  }\n\n  return attachKeys(path, keys)\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param  {!Array}  path\n * @param  {Array}   keys\n * @param  {!Object} options\n * @return {!RegExp}\n */\nfunction arrayToRegexp (path, keys, options) {\n  var parts = [];\n\n  for (var i = 0; i < path.length; i++) {\n    parts.push(pathToRegexp(path[i], keys, options).source);\n  }\n\n  var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options));\n\n  return attachKeys(regexp, keys)\n}\n\n/**\n * Create a path regexp from string input.\n *\n * @param  {string}  path\n * @param  {!Array}  keys\n * @param  {!Object} options\n * @return {!RegExp}\n */\nfunction stringToRegexp (path, keys, options) {\n  return tokensToRegExp(parse(path, options), keys, options)\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param  {!Array}          tokens\n * @param  {(Array|Object)=} keys\n * @param  {Object=}         options\n * @return {!RegExp}\n */\nfunction tokensToRegExp (tokens, keys, options) {\n  if (!isarray(keys)) {\n    options = /** @type {!Object} */ (keys || options);\n    keys = [];\n  }\n\n  options = options || {};\n\n  var strict = options.strict;\n  var end = options.end !== false;\n  var route = '';\n\n  // Iterate over the tokens and create our regexp string.\n  for (var i = 0; i < tokens.length; i++) {\n    var token = tokens[i];\n\n    if (typeof token === 'string') {\n      route += escapeString(token);\n    } else {\n      var prefix = escapeString(token.prefix);\n      var capture = '(?:' + token.pattern + ')';\n\n      keys.push(token);\n\n      if (token.repeat) {\n        capture += '(?:' + prefix + capture + ')*';\n      }\n\n      if (token.optional) {\n        if (!token.partial) {\n          capture = '(?:' + prefix + '(' + capture + '))?';\n        } else {\n          capture = prefix + '(' + capture + ')?';\n        }\n      } else {\n        capture = prefix + '(' + capture + ')';\n      }\n\n      route += capture;\n    }\n  }\n\n  var delimiter = escapeString(options.delimiter || '/');\n  var endsWithDelimiter = route.slice(-delimiter.length) === delimiter;\n\n  // In non-strict mode we allow a slash at the end of match. If the path to\n  // match already ends with a slash, we remove it for consistency. The slash\n  // is valid at the end of a path match, not in the middle. This is important\n  // in non-ending mode, where \"/test/\" shouldn't match \"/test//route\".\n  if (!strict) {\n    route = (endsWithDelimiter ? route.slice(0, -delimiter.length) : route) + '(?:' + delimiter + '(?=$))?';\n  }\n\n  if (end) {\n    route += '$';\n  } else {\n    // In non-ending mode, we need the capturing groups to match as much as\n    // possible by using a positive lookahead to the end or next path segment.\n    route += strict && endsWithDelimiter ? '' : '(?=' + delimiter + '|$)';\n  }\n\n  return attachKeys(new RegExp('^' + route, flags(options)), keys)\n}\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param  {(string|RegExp|Array)} path\n * @param  {(Array|Object)=}       keys\n * @param  {Object=}               options\n * @return {!RegExp}\n */\nfunction pathToRegexp (path, keys, options) {\n  if (!isarray(keys)) {\n    options = /** @type {!Object} */ (keys || options);\n    keys = [];\n  }\n\n  options = options || {};\n\n  if (path instanceof RegExp) {\n    return regexpToRegexp(path, /** @type {!Array} */ (keys))\n  }\n\n  if (isarray(path)) {\n    return arrayToRegexp(/** @type {!Array} */ (path), /** @type {!Array} */ (keys), options)\n  }\n\n  return stringToRegexp(/** @type {string} */ (path), /** @type {!Array} */ (keys), options)\n}\npathToRegexp_1.parse = parse_1;\npathToRegexp_1.compile = compile_1;\npathToRegexp_1.tokensToFunction = tokensToFunction_1;\npathToRegexp_1.tokensToRegExp = tokensToRegExp_1;\n\n/*  */\n\n// $flow-disable-line\nvar regexpCompileCache = Object.create(null);\n\nfunction fillParams (\n  path,\n  params,\n  routeMsg\n) {\n  params = params || {};\n  try {\n    var filler =\n      regexpCompileCache[path] ||\n      (regexpCompileCache[path] = pathToRegexp_1.compile(path));\n\n    // Fix #2505 resolving asterisk routes { name: 'not-found', params: { pathMatch: '/not-found' }}\n    // and fix #3106 so that you can work with location descriptor object having params.pathMatch equal to empty string\n    if (typeof params.pathMatch === 'string') { params[0] = params.pathMatch; }\n\n    return filler(params, { pretty: true })\n  } catch (e) {\n    if (process.env.NODE_ENV !== 'production') {\n      // Fix #3072 no warn if `pathMatch` is string\n      warn(typeof params.pathMatch === 'string', (\"missing param for \" + routeMsg + \": \" + (e.message)));\n    }\n    return ''\n  } finally {\n    // delete the 0 if it was added\n    delete params[0];\n  }\n}\n\n/*  */\n\nfunction normalizeLocation (\n  raw,\n  current,\n  append,\n  router\n) {\n  var next = typeof raw === 'string' ? { path: raw } : raw;\n  // named target\n  if (next._normalized) {\n    return next\n  } else if (next.name) {\n    next = extend({}, raw);\n    var params = next.params;\n    if (params && typeof params === 'object') {\n      next.params = extend({}, params);\n    }\n    return next\n  }\n\n  // relative params\n  if (!next.path && next.params && current) {\n    next = extend({}, next);\n    next._normalized = true;\n    var params$1 = extend(extend({}, current.params), next.params);\n    if (current.name) {\n      next.name = current.name;\n      next.params = params$1;\n    } else if (current.matched.length) {\n      var rawPath = current.matched[current.matched.length - 1].path;\n      next.path = fillParams(rawPath, params$1, (\"path \" + (current.path)));\n    } else if (process.env.NODE_ENV !== 'production') {\n      warn(false, \"relative params navigation requires a current route.\");\n    }\n    return next\n  }\n\n  var parsedPath = parsePath(next.path || '');\n  var basePath = (current && current.path) || '/';\n  var path = parsedPath.path\n    ? resolvePath(parsedPath.path, basePath, append || next.append)\n    : basePath;\n\n  var query = resolveQuery(\n    parsedPath.query,\n    next.query,\n    router && router.options.parseQuery\n  );\n\n  var hash = next.hash || parsedPath.hash;\n  if (hash && hash.charAt(0) !== '#') {\n    hash = \"#\" + hash;\n  }\n\n  return {\n    _normalized: true,\n    path: path,\n    query: query,\n    hash: hash\n  }\n}\n\n/*  */\n\n// work around weird flow bug\nvar toTypes = [String, Object];\nvar eventTypes = [String, Array];\n\nvar noop = function () {};\n\nvar warnedCustomSlot;\nvar warnedTagProp;\nvar warnedEventProp;\n\nvar Link = {\n  name: 'RouterLink',\n  props: {\n    to: {\n      type: toTypes,\n      required: true\n    },\n    tag: {\n      type: String,\n      default: 'a'\n    },\n    custom: Boolean,\n    exact: Boolean,\n    exactPath: Boolean,\n    append: Boolean,\n    replace: Boolean,\n    activeClass: String,\n    exactActiveClass: String,\n    ariaCurrentValue: {\n      type: String,\n      default: 'page'\n    },\n    event: {\n      type: eventTypes,\n      default: 'click'\n    }\n  },\n  render: function render (h) {\n    var this$1 = this;\n\n    var router = this.$router;\n    var current = this.$route;\n    var ref = router.resolve(\n      this.to,\n      current,\n      this.append\n    );\n    var location = ref.location;\n    var route = ref.route;\n    var href = ref.href;\n\n    var classes = {};\n    var globalActiveClass = router.options.linkActiveClass;\n    var globalExactActiveClass = router.options.linkExactActiveClass;\n    // Support global empty active class\n    var activeClassFallback =\n      globalActiveClass == null ? 'router-link-active' : globalActiveClass;\n    var exactActiveClassFallback =\n      globalExactActiveClass == null\n        ? 'router-link-exact-active'\n        : globalExactActiveClass;\n    var activeClass =\n      this.activeClass == null ? activeClassFallback : this.activeClass;\n    var exactActiveClass =\n      this.exactActiveClass == null\n        ? exactActiveClassFallback\n        : this.exactActiveClass;\n\n    var compareTarget = route.redirectedFrom\n      ? createRoute(null, normalizeLocation(route.redirectedFrom), null, router)\n      : route;\n\n    classes[exactActiveClass] = isSameRoute(current, compareTarget, this.exactPath);\n    classes[activeClass] = this.exact || this.exactPath\n      ? classes[exactActiveClass]\n      : isIncludedRoute(current, compareTarget);\n\n    var ariaCurrentValue = classes[exactActiveClass] ? this.ariaCurrentValue : null;\n\n    var handler = function (e) {\n      if (guardEvent(e)) {\n        if (this$1.replace) {\n          router.replace(location, noop);\n        } else {\n          router.push(location, noop);\n        }\n      }\n    };\n\n    var on = { click: guardEvent };\n    if (Array.isArray(this.event)) {\n      this.event.forEach(function (e) {\n        on[e] = handler;\n      });\n    } else {\n      on[this.event] = handler;\n    }\n\n    var data = { class: classes };\n\n    var scopedSlot =\n      !this.$scopedSlots.$hasNormal &&\n      this.$scopedSlots.default &&\n      this.$scopedSlots.default({\n        href: href,\n        route: route,\n        navigate: handler,\n        isActive: classes[activeClass],\n        isExactActive: classes[exactActiveClass]\n      });\n\n    if (scopedSlot) {\n      if (process.env.NODE_ENV !== 'production' && !this.custom) {\n        !warnedCustomSlot && warn(false, 'In Vue Router 4, the v-slot API will by default wrap its content with an <a> element. Use the custom prop to remove this warning:\\n<router-link v-slot=\"{ navigate, href }\" custom></router-link>\\n');\n        warnedCustomSlot = true;\n      }\n      if (scopedSlot.length === 1) {\n        return scopedSlot[0]\n      } else if (scopedSlot.length > 1 || !scopedSlot.length) {\n        if (process.env.NODE_ENV !== 'production') {\n          warn(\n            false,\n            (\"<router-link> with to=\\\"\" + (this.to) + \"\\\" is trying to use a scoped slot but it didn't provide exactly one child. Wrapping the content with a span element.\")\n          );\n        }\n        return scopedSlot.length === 0 ? h() : h('span', {}, scopedSlot)\n      }\n    }\n\n    if (process.env.NODE_ENV !== 'production') {\n      if ('tag' in this.$options.propsData && !warnedTagProp) {\n        warn(\n          false,\n          \"<router-link>'s tag prop is deprecated and has been removed in Vue Router 4. Use the v-slot API to remove this warning: https://next.router.vuejs.org/guide/migration/#removal-of-event-and-tag-props-in-router-link.\"\n        );\n        warnedTagProp = true;\n      }\n      if ('event' in this.$options.propsData && !warnedEventProp) {\n        warn(\n          false,\n          \"<router-link>'s event prop is deprecated and has been removed in Vue Router 4. Use the v-slot API to remove this warning: https://next.router.vuejs.org/guide/migration/#removal-of-event-and-tag-props-in-router-link.\"\n        );\n        warnedEventProp = true;\n      }\n    }\n\n    if (this.tag === 'a') {\n      data.on = on;\n      data.attrs = { href: href, 'aria-current': ariaCurrentValue };\n    } else {\n      // find the first <a> child and apply listener and href\n      var a = findAnchor(this.$slots.default);\n      if (a) {\n        // in case the <a> is a static node\n        a.isStatic = false;\n        var aData = (a.data = extend({}, a.data));\n        aData.on = aData.on || {};\n        // transform existing events in both objects into arrays so we can push later\n        for (var event in aData.on) {\n          var handler$1 = aData.on[event];\n          if (event in on) {\n            aData.on[event] = Array.isArray(handler$1) ? handler$1 : [handler$1];\n          }\n        }\n        // append new listeners for router-link\n        for (var event$1 in on) {\n          if (event$1 in aData.on) {\n            // on[event] is always a function\n            aData.on[event$1].push(on[event$1]);\n          } else {\n            aData.on[event$1] = handler;\n          }\n        }\n\n        var aAttrs = (a.data.attrs = extend({}, a.data.attrs));\n        aAttrs.href = href;\n        aAttrs['aria-current'] = ariaCurrentValue;\n      } else {\n        // doesn't have <a> child, apply listener to self\n        data.on = on;\n      }\n    }\n\n    return h(this.tag, data, this.$slots.default)\n  }\n};\n\nfunction guardEvent (e) {\n  // don't redirect with control keys\n  if (e.metaKey || e.altKey || e.ctrlKey || e.shiftKey) { return }\n  // don't redirect when preventDefault called\n  if (e.defaultPrevented) { return }\n  // don't redirect on right click\n  if (e.button !== undefined && e.button !== 0) { return }\n  // don't redirect if `target=\"_blank\"`\n  if (e.currentTarget && e.currentTarget.getAttribute) {\n    var target = e.currentTarget.getAttribute('target');\n    if (/\\b_blank\\b/i.test(target)) { return }\n  }\n  // this may be a Weex event which doesn't have this method\n  if (e.preventDefault) {\n    e.preventDefault();\n  }\n  return true\n}\n\nfunction findAnchor (children) {\n  if (children) {\n    var child;\n    for (var i = 0; i < children.length; i++) {\n      child = children[i];\n      if (child.tag === 'a') {\n        return child\n      }\n      if (child.children && (child = findAnchor(child.children))) {\n        return child\n      }\n    }\n  }\n}\n\nvar _Vue;\n\nfunction install (Vue) {\n  if (install.installed && _Vue === Vue) { return }\n  install.installed = true;\n\n  _Vue = Vue;\n\n  var isDef = function (v) { return v !== undefined; };\n\n  var registerInstance = function (vm, callVal) {\n    var i = vm.$options._parentVnode;\n    if (isDef(i) && isDef(i = i.data) && isDef(i = i.registerRouteInstance)) {\n      i(vm, callVal);\n    }\n  };\n\n  Vue.mixin({\n    beforeCreate: function beforeCreate () {\n      if (isDef(this.$options.router)) {\n        this._routerRoot = this;\n        this._router = this.$options.router;\n        this._router.init(this);\n        Vue.util.defineReactive(this, '_route', this._router.history.current);\n      } else {\n        this._routerRoot = (this.$parent && this.$parent._routerRoot) || this;\n      }\n      registerInstance(this, this);\n    },\n    destroyed: function destroyed () {\n      registerInstance(this);\n    }\n  });\n\n  Object.defineProperty(Vue.prototype, '$router', {\n    get: function get () { return this._routerRoot._router }\n  });\n\n  Object.defineProperty(Vue.prototype, '$route', {\n    get: function get () { return this._routerRoot._route }\n  });\n\n  Vue.component('RouterView', View);\n  Vue.component('RouterLink', Link);\n\n  var strats = Vue.config.optionMergeStrategies;\n  // use the same hook merging strategy for route hooks\n  strats.beforeRouteEnter = strats.beforeRouteLeave = strats.beforeRouteUpdate = strats.created;\n}\n\n/*  */\n\nvar inBrowser = typeof window !== 'undefined';\n\n/*  */\n\nfunction createRouteMap (\n  routes,\n  oldPathList,\n  oldPathMap,\n  oldNameMap,\n  parentRoute\n) {\n  // the path list is used to control path matching priority\n  var pathList = oldPathList || [];\n  // $flow-disable-line\n  var pathMap = oldPathMap || Object.create(null);\n  // $flow-disable-line\n  var nameMap = oldNameMap || Object.create(null);\n\n  routes.forEach(function (route) {\n    addRouteRecord(pathList, pathMap, nameMap, route, parentRoute);\n  });\n\n  // ensure wildcard routes are always at the end\n  for (var i = 0, l = pathList.length; i < l; i++) {\n    if (pathList[i] === '*') {\n      pathList.push(pathList.splice(i, 1)[0]);\n      l--;\n      i--;\n    }\n  }\n\n  if (process.env.NODE_ENV === 'development') {\n    // warn if routes do not include leading slashes\n    var found = pathList\n    // check for missing leading slash\n      .filter(function (path) { return path && path.charAt(0) !== '*' && path.charAt(0) !== '/'; });\n\n    if (found.length > 0) {\n      var pathNames = found.map(function (path) { return (\"- \" + path); }).join('\\n');\n      warn(false, (\"Non-nested routes must include a leading slash character. Fix the following routes: \\n\" + pathNames));\n    }\n  }\n\n  return {\n    pathList: pathList,\n    pathMap: pathMap,\n    nameMap: nameMap\n  }\n}\n\nfunction addRouteRecord (\n  pathList,\n  pathMap,\n  nameMap,\n  route,\n  parent,\n  matchAs\n) {\n  var path = route.path;\n  var name = route.name;\n  if (process.env.NODE_ENV !== 'production') {\n    assert(path != null, \"\\\"path\\\" is required in a route configuration.\");\n    assert(\n      typeof route.component !== 'string',\n      \"route config \\\"component\\\" for path: \" + (String(\n        path || name\n      )) + \" cannot be a \" + \"string id. Use an actual component instead.\"\n    );\n\n    warn(\n      // eslint-disable-next-line no-control-regex\n      !/[^\\u0000-\\u007F]+/.test(path),\n      \"Route with path \\\"\" + path + \"\\\" contains unencoded characters, make sure \" +\n        \"your path is correctly encoded before passing it to the router. Use \" +\n        \"encodeURI to encode static segments of your path.\"\n    );\n  }\n\n  var pathToRegexpOptions =\n    route.pathToRegexpOptions || {};\n  var normalizedPath = normalizePath(path, parent, pathToRegexpOptions.strict);\n\n  if (typeof route.caseSensitive === 'boolean') {\n    pathToRegexpOptions.sensitive = route.caseSensitive;\n  }\n\n  var record = {\n    path: normalizedPath,\n    regex: compileRouteRegex(normalizedPath, pathToRegexpOptions),\n    components: route.components || { default: route.component },\n    alias: route.alias\n      ? typeof route.alias === 'string'\n        ? [route.alias]\n        : route.alias\n      : [],\n    instances: {},\n    enteredCbs: {},\n    name: name,\n    parent: parent,\n    matchAs: matchAs,\n    redirect: route.redirect,\n    beforeEnter: route.beforeEnter,\n    meta: route.meta || {},\n    props:\n      route.props == null\n        ? {}\n        : route.components\n          ? route.props\n          : { default: route.props }\n  };\n\n  if (route.children) {\n    // Warn if route is named, does not redirect and has a default child route.\n    // If users navigate to this route by name, the default child will\n    // not be rendered (GH Issue #629)\n    if (process.env.NODE_ENV !== 'production') {\n      if (\n        route.name &&\n        !route.redirect &&\n        route.children.some(function (child) { return /^\\/?$/.test(child.path); })\n      ) {\n        warn(\n          false,\n          \"Named Route '\" + (route.name) + \"' has a default child route. \" +\n            \"When navigating to this named route (:to=\\\"{name: '\" + (route.name) + \"'\\\"), \" +\n            \"the default child route will not be rendered. Remove the name from \" +\n            \"this route and use the name of the default child route for named \" +\n            \"links instead.\"\n        );\n      }\n    }\n    route.children.forEach(function (child) {\n      var childMatchAs = matchAs\n        ? cleanPath((matchAs + \"/\" + (child.path)))\n        : undefined;\n      addRouteRecord(pathList, pathMap, nameMap, child, record, childMatchAs);\n    });\n  }\n\n  if (!pathMap[record.path]) {\n    pathList.push(record.path);\n    pathMap[record.path] = record;\n  }\n\n  if (route.alias !== undefined) {\n    var aliases = Array.isArray(route.alias) ? route.alias : [route.alias];\n    for (var i = 0; i < aliases.length; ++i) {\n      var alias = aliases[i];\n      if (process.env.NODE_ENV !== 'production' && alias === path) {\n        warn(\n          false,\n          (\"Found an alias with the same value as the path: \\\"\" + path + \"\\\". You have to remove that alias. It will be ignored in development.\")\n        );\n        // skip in dev to make it work\n        continue\n      }\n\n      var aliasRoute = {\n        path: alias,\n        children: route.children\n      };\n      addRouteRecord(\n        pathList,\n        pathMap,\n        nameMap,\n        aliasRoute,\n        parent,\n        record.path || '/' // matchAs\n      );\n    }\n  }\n\n  if (name) {\n    if (!nameMap[name]) {\n      nameMap[name] = record;\n    } else if (process.env.NODE_ENV !== 'production' && !matchAs) {\n      warn(\n        false,\n        \"Duplicate named routes definition: \" +\n          \"{ name: \\\"\" + name + \"\\\", path: \\\"\" + (record.path) + \"\\\" }\"\n      );\n    }\n  }\n}\n\nfunction compileRouteRegex (\n  path,\n  pathToRegexpOptions\n) {\n  var regex = pathToRegexp_1(path, [], pathToRegexpOptions);\n  if (process.env.NODE_ENV !== 'production') {\n    var keys = Object.create(null);\n    regex.keys.forEach(function (key) {\n      warn(\n        !keys[key.name],\n        (\"Duplicate param keys in route with path: \\\"\" + path + \"\\\"\")\n      );\n      keys[key.name] = true;\n    });\n  }\n  return regex\n}\n\nfunction normalizePath (\n  path,\n  parent,\n  strict\n) {\n  if (!strict) { path = path.replace(/\\/$/, ''); }\n  if (path[0] === '/') { return path }\n  if (parent == null) { return path }\n  return cleanPath(((parent.path) + \"/\" + path))\n}\n\n/*  */\n\n\n\nfunction createMatcher (\n  routes,\n  router\n) {\n  var ref = createRouteMap(routes);\n  var pathList = ref.pathList;\n  var pathMap = ref.pathMap;\n  var nameMap = ref.nameMap;\n\n  function addRoutes (routes) {\n    createRouteMap(routes, pathList, pathMap, nameMap);\n  }\n\n  function addRoute (parentOrRoute, route) {\n    var parent = (typeof parentOrRoute !== 'object') ? nameMap[parentOrRoute] : undefined;\n    // $flow-disable-line\n    createRouteMap([route || parentOrRoute], pathList, pathMap, nameMap, parent);\n\n    // add aliases of parent\n    if (parent && parent.alias.length) {\n      createRouteMap(\n        // $flow-disable-line route is defined if parent is\n        parent.alias.map(function (alias) { return ({ path: alias, children: [route] }); }),\n        pathList,\n        pathMap,\n        nameMap,\n        parent\n      );\n    }\n  }\n\n  function getRoutes () {\n    return pathList.map(function (path) { return pathMap[path]; })\n  }\n\n  function match (\n    raw,\n    currentRoute,\n    redirectedFrom\n  ) {\n    var location = normalizeLocation(raw, currentRoute, false, router);\n    var name = location.name;\n\n    if (name) {\n      var record = nameMap[name];\n      if (process.env.NODE_ENV !== 'production') {\n        warn(record, (\"Route with name '\" + name + \"' does not exist\"));\n      }\n      if (!record) { return _createRoute(null, location) }\n      var paramNames = record.regex.keys\n        .filter(function (key) { return !key.optional; })\n        .map(function (key) { return key.name; });\n\n      if (typeof location.params !== 'object') {\n        location.params = {};\n      }\n\n      if (currentRoute && typeof currentRoute.params === 'object') {\n        for (var key in currentRoute.params) {\n          if (!(key in location.params) && paramNames.indexOf(key) > -1) {\n            location.params[key] = currentRoute.params[key];\n          }\n        }\n      }\n\n      location.path = fillParams(record.path, location.params, (\"named route \\\"\" + name + \"\\\"\"));\n      return _createRoute(record, location, redirectedFrom)\n    } else if (location.path) {\n      location.params = {};\n      for (var i = 0; i < pathList.length; i++) {\n        var path = pathList[i];\n        var record$1 = pathMap[path];\n        if (matchRoute(record$1.regex, location.path, location.params)) {\n          return _createRoute(record$1, location, redirectedFrom)\n        }\n      }\n    }\n    // no match\n    return _createRoute(null, location)\n  }\n\n  function redirect (\n    record,\n    location\n  ) {\n    var originalRedirect = record.redirect;\n    var redirect = typeof originalRedirect === 'function'\n      ? originalRedirect(createRoute(record, location, null, router))\n      : originalRedirect;\n\n    if (typeof redirect === 'string') {\n      redirect = { path: redirect };\n    }\n\n    if (!redirect || typeof redirect !== 'object') {\n      if (process.env.NODE_ENV !== 'production') {\n        warn(\n          false, (\"invalid redirect option: \" + (JSON.stringify(redirect)))\n        );\n      }\n      return _createRoute(null, location)\n    }\n\n    var re = redirect;\n    var name = re.name;\n    var path = re.path;\n    var query = location.query;\n    var hash = location.hash;\n    var params = location.params;\n    query = re.hasOwnProperty('query') ? re.query : query;\n    hash = re.hasOwnProperty('hash') ? re.hash : hash;\n    params = re.hasOwnProperty('params') ? re.params : params;\n\n    if (name) {\n      // resolved named direct\n      var targetRecord = nameMap[name];\n      if (process.env.NODE_ENV !== 'production') {\n        assert(targetRecord, (\"redirect failed: named route \\\"\" + name + \"\\\" not found.\"));\n      }\n      return match({\n        _normalized: true,\n        name: name,\n        query: query,\n        hash: hash,\n        params: params\n      }, undefined, location)\n    } else if (path) {\n      // 1. resolve relative redirect\n      var rawPath = resolveRecordPath(path, record);\n      // 2. resolve params\n      var resolvedPath = fillParams(rawPath, params, (\"redirect route with path \\\"\" + rawPath + \"\\\"\"));\n      // 3. rematch with existing query and hash\n      return match({\n        _normalized: true,\n        path: resolvedPath,\n        query: query,\n        hash: hash\n      }, undefined, location)\n    } else {\n      if (process.env.NODE_ENV !== 'production') {\n        warn(false, (\"invalid redirect option: \" + (JSON.stringify(redirect))));\n      }\n      return _createRoute(null, location)\n    }\n  }\n\n  function alias (\n    record,\n    location,\n    matchAs\n  ) {\n    var aliasedPath = fillParams(matchAs, location.params, (\"aliased route with path \\\"\" + matchAs + \"\\\"\"));\n    var aliasedMatch = match({\n      _normalized: true,\n      path: aliasedPath\n    });\n    if (aliasedMatch) {\n      var matched = aliasedMatch.matched;\n      var aliasedRecord = matched[matched.length - 1];\n      location.params = aliasedMatch.params;\n      return _createRoute(aliasedRecord, location)\n    }\n    return _createRoute(null, location)\n  }\n\n  function _createRoute (\n    record,\n    location,\n    redirectedFrom\n  ) {\n    if (record && record.redirect) {\n      return redirect(record, redirectedFrom || location)\n    }\n    if (record && record.matchAs) {\n      return alias(record, location, record.matchAs)\n    }\n    return createRoute(record, location, redirectedFrom, router)\n  }\n\n  return {\n    match: match,\n    addRoute: addRoute,\n    getRoutes: getRoutes,\n    addRoutes: addRoutes\n  }\n}\n\nfunction matchRoute (\n  regex,\n  path,\n  params\n) {\n  var m = path.match(regex);\n\n  if (!m) {\n    return false\n  } else if (!params) {\n    return true\n  }\n\n  for (var i = 1, len = m.length; i < len; ++i) {\n    var key = regex.keys[i - 1];\n    if (key) {\n      // Fix #1994: using * with props: true generates a param named 0\n      params[key.name || 'pathMatch'] = typeof m[i] === 'string' ? decode(m[i]) : m[i];\n    }\n  }\n\n  return true\n}\n\nfunction resolveRecordPath (path, record) {\n  return resolvePath(path, record.parent ? record.parent.path : '/', true)\n}\n\n/*  */\n\n// use User Timing api (if present) for more accurate key precision\nvar Time =\n  inBrowser && window.performance && window.performance.now\n    ? window.performance\n    : Date;\n\nfunction genStateKey () {\n  return Time.now().toFixed(3)\n}\n\nvar _key = genStateKey();\n\nfunction getStateKey () {\n  return _key\n}\n\nfunction setStateKey (key) {\n  return (_key = key)\n}\n\n/*  */\n\nvar positionStore = Object.create(null);\n\nfunction setupScroll () {\n  // Prevent browser scroll behavior on History popstate\n  if ('scrollRestoration' in window.history) {\n    window.history.scrollRestoration = 'manual';\n  }\n  // Fix for #1585 for Firefox\n  // Fix for #2195 Add optional third attribute to workaround a bug in safari https://bugs.webkit.org/show_bug.cgi?id=182678\n  // Fix for #2774 Support for apps loaded from Windows file shares not mapped to network drives: replaced location.origin with\n  // window.location.protocol + '//' + window.location.host\n  // location.host contains the port and location.hostname doesn't\n  var protocolAndPath = window.location.protocol + '//' + window.location.host;\n  var absolutePath = window.location.href.replace(protocolAndPath, '');\n  // preserve existing history state as it could be overriden by the user\n  var stateCopy = extend({}, window.history.state);\n  stateCopy.key = getStateKey();\n  window.history.replaceState(stateCopy, '', absolutePath);\n  window.addEventListener('popstate', handlePopState);\n  return function () {\n    window.removeEventListener('popstate', handlePopState);\n  }\n}\n\nfunction handleScroll (\n  router,\n  to,\n  from,\n  isPop\n) {\n  if (!router.app) {\n    return\n  }\n\n  var behavior = router.options.scrollBehavior;\n  if (!behavior) {\n    return\n  }\n\n  if (process.env.NODE_ENV !== 'production') {\n    assert(typeof behavior === 'function', \"scrollBehavior must be a function\");\n  }\n\n  // wait until re-render finishes before scrolling\n  router.app.$nextTick(function () {\n    var position = getScrollPosition();\n    var shouldScroll = behavior.call(\n      router,\n      to,\n      from,\n      isPop ? position : null\n    );\n\n    if (!shouldScroll) {\n      return\n    }\n\n    if (typeof shouldScroll.then === 'function') {\n      shouldScroll\n        .then(function (shouldScroll) {\n          scrollToPosition((shouldScroll), position);\n        })\n        .catch(function (err) {\n          if (process.env.NODE_ENV !== 'production') {\n            assert(false, err.toString());\n          }\n        });\n    } else {\n      scrollToPosition(shouldScroll, position);\n    }\n  });\n}\n\nfunction saveScrollPosition () {\n  var key = getStateKey();\n  if (key) {\n    positionStore[key] = {\n      x: window.pageXOffset,\n      y: window.pageYOffset\n    };\n  }\n}\n\nfunction handlePopState (e) {\n  saveScrollPosition();\n  if (e.state && e.state.key) {\n    setStateKey(e.state.key);\n  }\n}\n\nfunction getScrollPosition () {\n  var key = getStateKey();\n  if (key) {\n    return positionStore[key]\n  }\n}\n\nfunction getElementPosition (el, offset) {\n  var docEl = document.documentElement;\n  var docRect = docEl.getBoundingClientRect();\n  var elRect = el.getBoundingClientRect();\n  return {\n    x: elRect.left - docRect.left - offset.x,\n    y: elRect.top - docRect.top - offset.y\n  }\n}\n\nfunction isValidPosition (obj) {\n  return isNumber(obj.x) || isNumber(obj.y)\n}\n\nfunction normalizePosition (obj) {\n  return {\n    x: isNumber(obj.x) ? obj.x : window.pageXOffset,\n    y: isNumber(obj.y) ? obj.y : window.pageYOffset\n  }\n}\n\nfunction normalizeOffset (obj) {\n  return {\n    x: isNumber(obj.x) ? obj.x : 0,\n    y: isNumber(obj.y) ? obj.y : 0\n  }\n}\n\nfunction isNumber (v) {\n  return typeof v === 'number'\n}\n\nvar hashStartsWithNumberRE = /^#\\d/;\n\nfunction scrollToPosition (shouldScroll, position) {\n  var isObject = typeof shouldScroll === 'object';\n  if (isObject && typeof shouldScroll.selector === 'string') {\n    // getElementById would still fail if the selector contains a more complicated query like #main[data-attr]\n    // but at the same time, it doesn't make much sense to select an element with an id and an extra selector\n    var el = hashStartsWithNumberRE.test(shouldScroll.selector) // $flow-disable-line\n      ? document.getElementById(shouldScroll.selector.slice(1)) // $flow-disable-line\n      : document.querySelector(shouldScroll.selector);\n\n    if (el) {\n      var offset =\n        shouldScroll.offset && typeof shouldScroll.offset === 'object'\n          ? shouldScroll.offset\n          : {};\n      offset = normalizeOffset(offset);\n      position = getElementPosition(el, offset);\n    } else if (isValidPosition(shouldScroll)) {\n      position = normalizePosition(shouldScroll);\n    }\n  } else if (isObject && isValidPosition(shouldScroll)) {\n    position = normalizePosition(shouldScroll);\n  }\n\n  if (position) {\n    // $flow-disable-line\n    if ('scrollBehavior' in document.documentElement.style) {\n      window.scrollTo({\n        left: position.x,\n        top: position.y,\n        // $flow-disable-line\n        behavior: shouldScroll.behavior\n      });\n    } else {\n      window.scrollTo(position.x, position.y);\n    }\n  }\n}\n\n/*  */\n\nvar supportsPushState =\n  inBrowser &&\n  (function () {\n    var ua = window.navigator.userAgent;\n\n    if (\n      (ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) &&\n      ua.indexOf('Mobile Safari') !== -1 &&\n      ua.indexOf('Chrome') === -1 &&\n      ua.indexOf('Windows Phone') === -1\n    ) {\n      return false\n    }\n\n    return window.history && typeof window.history.pushState === 'function'\n  })();\n\nfunction pushState (url, replace) {\n  saveScrollPosition();\n  // try...catch the pushState call to get around Safari\n  // DOM Exception 18 where it limits to 100 pushState calls\n  var history = window.history;\n  try {\n    if (replace) {\n      // preserve existing history state as it could be overriden by the user\n      var stateCopy = extend({}, history.state);\n      stateCopy.key = getStateKey();\n      history.replaceState(stateCopy, '', url);\n    } else {\n      history.pushState({ key: setStateKey(genStateKey()) }, '', url);\n    }\n  } catch (e) {\n    window.location[replace ? 'replace' : 'assign'](url);\n  }\n}\n\nfunction replaceState (url) {\n  pushState(url, true);\n}\n\n/*  */\n\nfunction runQueue (queue, fn, cb) {\n  var step = function (index) {\n    if (index >= queue.length) {\n      cb();\n    } else {\n      if (queue[index]) {\n        fn(queue[index], function () {\n          step(index + 1);\n        });\n      } else {\n        step(index + 1);\n      }\n    }\n  };\n  step(0);\n}\n\n// When changing thing, also edit router.d.ts\nvar NavigationFailureType = {\n  redirected: 2,\n  aborted: 4,\n  cancelled: 8,\n  duplicated: 16\n};\n\nfunction createNavigationRedirectedError (from, to) {\n  return createRouterError(\n    from,\n    to,\n    NavigationFailureType.redirected,\n    (\"Redirected when going from \\\"\" + (from.fullPath) + \"\\\" to \\\"\" + (stringifyRoute(\n      to\n    )) + \"\\\" via a navigation guard.\")\n  )\n}\n\nfunction createNavigationDuplicatedError (from, to) {\n  var error = createRouterError(\n    from,\n    to,\n    NavigationFailureType.duplicated,\n    (\"Avoided redundant navigation to current location: \\\"\" + (from.fullPath) + \"\\\".\")\n  );\n  // backwards compatible with the first introduction of Errors\n  error.name = 'NavigationDuplicated';\n  return error\n}\n\nfunction createNavigationCancelledError (from, to) {\n  return createRouterError(\n    from,\n    to,\n    NavigationFailureType.cancelled,\n    (\"Navigation cancelled from \\\"\" + (from.fullPath) + \"\\\" to \\\"\" + (to.fullPath) + \"\\\" with a new navigation.\")\n  )\n}\n\nfunction createNavigationAbortedError (from, to) {\n  return createRouterError(\n    from,\n    to,\n    NavigationFailureType.aborted,\n    (\"Navigation aborted from \\\"\" + (from.fullPath) + \"\\\" to \\\"\" + (to.fullPath) + \"\\\" via a navigation guard.\")\n  )\n}\n\nfunction createRouterError (from, to, type, message) {\n  var error = new Error(message);\n  error._isRouter = true;\n  error.from = from;\n  error.to = to;\n  error.type = type;\n\n  return error\n}\n\nvar propertiesToLog = ['params', 'query', 'hash'];\n\nfunction stringifyRoute (to) {\n  if (typeof to === 'string') { return to }\n  if ('path' in to) { return to.path }\n  var location = {};\n  propertiesToLog.forEach(function (key) {\n    if (key in to) { location[key] = to[key]; }\n  });\n  return JSON.stringify(location, null, 2)\n}\n\nfunction isError (err) {\n  return Object.prototype.toString.call(err).indexOf('Error') > -1\n}\n\nfunction isNavigationFailure (err, errorType) {\n  return (\n    isError(err) &&\n    err._isRouter &&\n    (errorType == null || err.type === errorType)\n  )\n}\n\n/*  */\n\nfunction resolveAsyncComponents (matched) {\n  return function (to, from, next) {\n    var hasAsync = false;\n    var pending = 0;\n    var error = null;\n\n    flatMapComponents(matched, function (def, _, match, key) {\n      // if it's a function and doesn't have cid attached,\n      // assume it's an async component resolve function.\n      // we are not using Vue's default async resolving mechanism because\n      // we want to halt the navigation until the incoming component has been\n      // resolved.\n      if (typeof def === 'function' && def.cid === undefined) {\n        hasAsync = true;\n        pending++;\n\n        var resolve = once(function (resolvedDef) {\n          if (isESModule(resolvedDef)) {\n            resolvedDef = resolvedDef.default;\n          }\n          // save resolved on async factory in case it's used elsewhere\n          def.resolved = typeof resolvedDef === 'function'\n            ? resolvedDef\n            : _Vue.extend(resolvedDef);\n          match.components[key] = resolvedDef;\n          pending--;\n          if (pending <= 0) {\n            next();\n          }\n        });\n\n        var reject = once(function (reason) {\n          var msg = \"Failed to resolve async component \" + key + \": \" + reason;\n          process.env.NODE_ENV !== 'production' && warn(false, msg);\n          if (!error) {\n            error = isError(reason)\n              ? reason\n              : new Error(msg);\n            next(error);\n          }\n        });\n\n        var res;\n        try {\n          res = def(resolve, reject);\n        } catch (e) {\n          reject(e);\n        }\n        if (res) {\n          if (typeof res.then === 'function') {\n            res.then(resolve, reject);\n          } else {\n            // new syntax in Vue 2.3\n            var comp = res.component;\n            if (comp && typeof comp.then === 'function') {\n              comp.then(resolve, reject);\n            }\n          }\n        }\n      }\n    });\n\n    if (!hasAsync) { next(); }\n  }\n}\n\nfunction flatMapComponents (\n  matched,\n  fn\n) {\n  return flatten(matched.map(function (m) {\n    return Object.keys(m.components).map(function (key) { return fn(\n      m.components[key],\n      m.instances[key],\n      m, key\n    ); })\n  }))\n}\n\nfunction flatten (arr) {\n  return Array.prototype.concat.apply([], arr)\n}\n\nvar hasSymbol =\n  typeof Symbol === 'function' &&\n  typeof Symbol.toStringTag === 'symbol';\n\nfunction isESModule (obj) {\n  return obj.__esModule || (hasSymbol && obj[Symbol.toStringTag] === 'Module')\n}\n\n// in Webpack 2, require.ensure now also returns a Promise\n// so the resolve/reject functions may get called an extra time\n// if the user uses an arrow function shorthand that happens to\n// return that Promise.\nfunction once (fn) {\n  var called = false;\n  return function () {\n    var args = [], len = arguments.length;\n    while ( len-- ) args[ len ] = arguments[ len ];\n\n    if (called) { return }\n    called = true;\n    return fn.apply(this, args)\n  }\n}\n\n/*  */\n\nvar History = function History (router, base) {\n  this.router = router;\n  this.base = normalizeBase(base);\n  // start with a route object that stands for \"nowhere\"\n  this.current = START;\n  this.pending = null;\n  this.ready = false;\n  this.readyCbs = [];\n  this.readyErrorCbs = [];\n  this.errorCbs = [];\n  this.listeners = [];\n};\n\nHistory.prototype.listen = function listen (cb) {\n  this.cb = cb;\n};\n\nHistory.prototype.onReady = function onReady (cb, errorCb) {\n  if (this.ready) {\n    cb();\n  } else {\n    this.readyCbs.push(cb);\n    if (errorCb) {\n      this.readyErrorCbs.push(errorCb);\n    }\n  }\n};\n\nHistory.prototype.onError = function onError (errorCb) {\n  this.errorCbs.push(errorCb);\n};\n\nHistory.prototype.transitionTo = function transitionTo (\n  location,\n  onComplete,\n  onAbort\n) {\n    var this$1 = this;\n\n  var route;\n  // catch redirect option https://github.com/vuejs/vue-router/issues/3201\n  try {\n    route = this.router.match(location, this.current);\n  } catch (e) {\n    this.errorCbs.forEach(function (cb) {\n      cb(e);\n    });\n    // Exception should still be thrown\n    throw e\n  }\n  var prev = this.current;\n  this.confirmTransition(\n    route,\n    function () {\n      this$1.updateRoute(route);\n      onComplete && onComplete(route);\n      this$1.ensureURL();\n      this$1.router.afterHooks.forEach(function (hook) {\n        hook && hook(route, prev);\n      });\n\n      // fire ready cbs once\n      if (!this$1.ready) {\n        this$1.ready = true;\n        this$1.readyCbs.forEach(function (cb) {\n          cb(route);\n        });\n      }\n    },\n    function (err) {\n      if (onAbort) {\n        onAbort(err);\n      }\n      if (err && !this$1.ready) {\n        // Initial redirection should not mark the history as ready yet\n        // because it's triggered by the redirection instead\n        // https://github.com/vuejs/vue-router/issues/3225\n        // https://github.com/vuejs/vue-router/issues/3331\n        if (!isNavigationFailure(err, NavigationFailureType.redirected) || prev !== START) {\n          this$1.ready = true;\n          this$1.readyErrorCbs.forEach(function (cb) {\n            cb(err);\n          });\n        }\n      }\n    }\n  );\n};\n\nHistory.prototype.confirmTransition = function confirmTransition (route, onComplete, onAbort) {\n    var this$1 = this;\n\n  var current = this.current;\n  this.pending = route;\n  var abort = function (err) {\n    // changed after adding errors with\n    // https://github.com/vuejs/vue-router/pull/3047 before that change,\n    // redirect and aborted navigation would produce an err == null\n    if (!isNavigationFailure(err) && isError(err)) {\n      if (this$1.errorCbs.length) {\n        this$1.errorCbs.forEach(function (cb) {\n          cb(err);\n        });\n      } else {\n        if (process.env.NODE_ENV !== 'production') {\n          warn(false, 'uncaught error during route navigation:');\n        }\n        console.error(err);\n      }\n    }\n    onAbort && onAbort(err);\n  };\n  var lastRouteIndex = route.matched.length - 1;\n  var lastCurrentIndex = current.matched.length - 1;\n  if (\n    isSameRoute(route, current) &&\n    // in the case the route map has been dynamically appended to\n    lastRouteIndex === lastCurrentIndex &&\n    route.matched[lastRouteIndex] === current.matched[lastCurrentIndex]\n  ) {\n    this.ensureURL();\n    if (route.hash) {\n      handleScroll(this.router, current, route, false);\n    }\n    return abort(createNavigationDuplicatedError(current, route))\n  }\n\n  var ref = resolveQueue(\n    this.current.matched,\n    route.matched\n  );\n    var updated = ref.updated;\n    var deactivated = ref.deactivated;\n    var activated = ref.activated;\n\n  var queue = [].concat(\n    // in-component leave guards\n    extractLeaveGuards(deactivated),\n    // global before hooks\n    this.router.beforeHooks,\n    // in-component update hooks\n    extractUpdateHooks(updated),\n    // in-config enter guards\n    activated.map(function (m) { return m.beforeEnter; }),\n    // async components\n    resolveAsyncComponents(activated)\n  );\n\n  var iterator = function (hook, next) {\n    if (this$1.pending !== route) {\n      return abort(createNavigationCancelledError(current, route))\n    }\n    try {\n      hook(route, current, function (to) {\n        if (to === false) {\n          // next(false) -> abort navigation, ensure current URL\n          this$1.ensureURL(true);\n          abort(createNavigationAbortedError(current, route));\n        } else if (isError(to)) {\n          this$1.ensureURL(true);\n          abort(to);\n        } else if (\n          typeof to === 'string' ||\n          (typeof to === 'object' &&\n            (typeof to.path === 'string' || typeof to.name === 'string'))\n        ) {\n          // next('/') or next({ path: '/' }) -> redirect\n          abort(createNavigationRedirectedError(current, route));\n          if (typeof to === 'object' && to.replace) {\n            this$1.replace(to);\n          } else {\n            this$1.push(to);\n          }\n        } else {\n          // confirm transition and pass on the value\n          next(to);\n        }\n      });\n    } catch (e) {\n      abort(e);\n    }\n  };\n\n  runQueue(queue, iterator, function () {\n    // wait until async components are resolved before\n    // extracting in-component enter guards\n    var enterGuards = extractEnterGuards(activated);\n    var queue = enterGuards.concat(this$1.router.resolveHooks);\n    runQueue(queue, iterator, function () {\n      if (this$1.pending !== route) {\n        return abort(createNavigationCancelledError(current, route))\n      }\n      this$1.pending = null;\n      onComplete(route);\n      if (this$1.router.app) {\n        this$1.router.app.$nextTick(function () {\n          handleRouteEntered(route);\n        });\n      }\n    });\n  });\n};\n\nHistory.prototype.updateRoute = function updateRoute (route) {\n  this.current = route;\n  this.cb && this.cb(route);\n};\n\nHistory.prototype.setupListeners = function setupListeners () {\n  // Default implementation is empty\n};\n\nHistory.prototype.teardown = function teardown () {\n  // clean up event listeners\n  // https://github.com/vuejs/vue-router/issues/2341\n  this.listeners.forEach(function (cleanupListener) {\n    cleanupListener();\n  });\n  this.listeners = [];\n\n  // reset current history route\n  // https://github.com/vuejs/vue-router/issues/3294\n  this.current = START;\n  this.pending = null;\n};\n\nfunction normalizeBase (base) {\n  if (!base) {\n    if (inBrowser) {\n      // respect <base> tag\n      var baseEl = document.querySelector('base');\n      base = (baseEl && baseEl.getAttribute('href')) || '/';\n      // strip full URL origin\n      base = base.replace(/^https?:\\/\\/[^\\/]+/, '');\n    } else {\n      base = '/';\n    }\n  }\n  // make sure there's the starting slash\n  if (base.charAt(0) !== '/') {\n    base = '/' + base;\n  }\n  // remove trailing slash\n  return base.replace(/\\/$/, '')\n}\n\nfunction resolveQueue (\n  current,\n  next\n) {\n  var i;\n  var max = Math.max(current.length, next.length);\n  for (i = 0; i < max; i++) {\n    if (current[i] !== next[i]) {\n      break\n    }\n  }\n  return {\n    updated: next.slice(0, i),\n    activated: next.slice(i),\n    deactivated: current.slice(i)\n  }\n}\n\nfunction extractGuards (\n  records,\n  name,\n  bind,\n  reverse\n) {\n  var guards = flatMapComponents(records, function (def, instance, match, key) {\n    var guard = extractGuard(def, name);\n    if (guard) {\n      return Array.isArray(guard)\n        ? guard.map(function (guard) { return bind(guard, instance, match, key); })\n        : bind(guard, instance, match, key)\n    }\n  });\n  return flatten(reverse ? guards.reverse() : guards)\n}\n\nfunction extractGuard (\n  def,\n  key\n) {\n  if (typeof def !== 'function') {\n    // extend now so that global mixins are applied.\n    def = _Vue.extend(def);\n  }\n  return def.options[key]\n}\n\nfunction extractLeaveGuards (deactivated) {\n  return extractGuards(deactivated, 'beforeRouteLeave', bindGuard, true)\n}\n\nfunction extractUpdateHooks (updated) {\n  return extractGuards(updated, 'beforeRouteUpdate', bindGuard)\n}\n\nfunction bindGuard (guard, instance) {\n  if (instance) {\n    return function boundRouteGuard () {\n      return guard.apply(instance, arguments)\n    }\n  }\n}\n\nfunction extractEnterGuards (\n  activated\n) {\n  return extractGuards(\n    activated,\n    'beforeRouteEnter',\n    function (guard, _, match, key) {\n      return bindEnterGuard(guard, match, key)\n    }\n  )\n}\n\nfunction bindEnterGuard (\n  guard,\n  match,\n  key\n) {\n  return function routeEnterGuard (to, from, next) {\n    return guard(to, from, function (cb) {\n      if (typeof cb === 'function') {\n        if (!match.enteredCbs[key]) {\n          match.enteredCbs[key] = [];\n        }\n        match.enteredCbs[key].push(cb);\n      }\n      next(cb);\n    })\n  }\n}\n\n/*  */\n\nvar HTML5History = /*@__PURE__*/(function (History) {\n  function HTML5History (router, base) {\n    History.call(this, router, base);\n\n    this._startLocation = getLocation(this.base);\n  }\n\n  if ( History ) HTML5History.__proto__ = History;\n  HTML5History.prototype = Object.create( History && History.prototype );\n  HTML5History.prototype.constructor = HTML5History;\n\n  HTML5History.prototype.setupListeners = function setupListeners () {\n    var this$1 = this;\n\n    if (this.listeners.length > 0) {\n      return\n    }\n\n    var router = this.router;\n    var expectScroll = router.options.scrollBehavior;\n    var supportsScroll = supportsPushState && expectScroll;\n\n    if (supportsScroll) {\n      this.listeners.push(setupScroll());\n    }\n\n    var handleRoutingEvent = function () {\n      var current = this$1.current;\n\n      // Avoiding first `popstate` event dispatched in some browsers but first\n      // history route not updated since async guard at the same time.\n      var location = getLocation(this$1.base);\n      if (this$1.current === START && location === this$1._startLocation) {\n        return\n      }\n\n      this$1.transitionTo(location, function (route) {\n        if (supportsScroll) {\n          handleScroll(router, route, current, true);\n        }\n      });\n    };\n    window.addEventListener('popstate', handleRoutingEvent);\n    this.listeners.push(function () {\n      window.removeEventListener('popstate', handleRoutingEvent);\n    });\n  };\n\n  HTML5History.prototype.go = function go (n) {\n    window.history.go(n);\n  };\n\n  HTML5History.prototype.push = function push (location, onComplete, onAbort) {\n    var this$1 = this;\n\n    var ref = this;\n    var fromRoute = ref.current;\n    this.transitionTo(location, function (route) {\n      pushState(cleanPath(this$1.base + route.fullPath));\n      handleScroll(this$1.router, route, fromRoute, false);\n      onComplete && onComplete(route);\n    }, onAbort);\n  };\n\n  HTML5History.prototype.replace = function replace (location, onComplete, onAbort) {\n    var this$1 = this;\n\n    var ref = this;\n    var fromRoute = ref.current;\n    this.transitionTo(location, function (route) {\n      replaceState(cleanPath(this$1.base + route.fullPath));\n      handleScroll(this$1.router, route, fromRoute, false);\n      onComplete && onComplete(route);\n    }, onAbort);\n  };\n\n  HTML5History.prototype.ensureURL = function ensureURL (push) {\n    if (getLocation(this.base) !== this.current.fullPath) {\n      var current = cleanPath(this.base + this.current.fullPath);\n      push ? pushState(current) : replaceState(current);\n    }\n  };\n\n  HTML5History.prototype.getCurrentLocation = function getCurrentLocation () {\n    return getLocation(this.base)\n  };\n\n  return HTML5History;\n}(History));\n\nfunction getLocation (base) {\n  var path = window.location.pathname;\n  var pathLowerCase = path.toLowerCase();\n  var baseLowerCase = base.toLowerCase();\n  // base=\"/a\" shouldn't turn path=\"/app\" into \"/a/pp\"\n  // https://github.com/vuejs/vue-router/issues/3555\n  // so we ensure the trailing slash in the base\n  if (base && ((pathLowerCase === baseLowerCase) ||\n    (pathLowerCase.indexOf(cleanPath(baseLowerCase + '/')) === 0))) {\n    path = path.slice(base.length);\n  }\n  return (path || '/') + window.location.search + window.location.hash\n}\n\n/*  */\n\nvar HashHistory = /*@__PURE__*/(function (History) {\n  function HashHistory (router, base, fallback) {\n    History.call(this, router, base);\n    // check history fallback deeplinking\n    if (fallback && checkFallback(this.base)) {\n      return\n    }\n    ensureSlash();\n  }\n\n  if ( History ) HashHistory.__proto__ = History;\n  HashHistory.prototype = Object.create( History && History.prototype );\n  HashHistory.prototype.constructor = HashHistory;\n\n  // this is delayed until the app mounts\n  // to avoid the hashchange listener being fired too early\n  HashHistory.prototype.setupListeners = function setupListeners () {\n    var this$1 = this;\n\n    if (this.listeners.length > 0) {\n      return\n    }\n\n    var router = this.router;\n    var expectScroll = router.options.scrollBehavior;\n    var supportsScroll = supportsPushState && expectScroll;\n\n    if (supportsScroll) {\n      this.listeners.push(setupScroll());\n    }\n\n    var handleRoutingEvent = function () {\n      var current = this$1.current;\n      if (!ensureSlash()) {\n        return\n      }\n      this$1.transitionTo(getHash(), function (route) {\n        if (supportsScroll) {\n          handleScroll(this$1.router, route, current, true);\n        }\n        if (!supportsPushState) {\n          replaceHash(route.fullPath);\n        }\n      });\n    };\n    var eventType = supportsPushState ? 'popstate' : 'hashchange';\n    window.addEventListener(\n      eventType,\n      handleRoutingEvent\n    );\n    this.listeners.push(function () {\n      window.removeEventListener(eventType, handleRoutingEvent);\n    });\n  };\n\n  HashHistory.prototype.push = function push (location, onComplete, onAbort) {\n    var this$1 = this;\n\n    var ref = this;\n    var fromRoute = ref.current;\n    this.transitionTo(\n      location,\n      function (route) {\n        pushHash(route.fullPath);\n        handleScroll(this$1.router, route, fromRoute, false);\n        onComplete && onComplete(route);\n      },\n      onAbort\n    );\n  };\n\n  HashHistory.prototype.replace = function replace (location, onComplete, onAbort) {\n    var this$1 = this;\n\n    var ref = this;\n    var fromRoute = ref.current;\n    this.transitionTo(\n      location,\n      function (route) {\n        replaceHash(route.fullPath);\n        handleScroll(this$1.router, route, fromRoute, false);\n        onComplete && onComplete(route);\n      },\n      onAbort\n    );\n  };\n\n  HashHistory.prototype.go = function go (n) {\n    window.history.go(n);\n  };\n\n  HashHistory.prototype.ensureURL = function ensureURL (push) {\n    var current = this.current.fullPath;\n    if (getHash() !== current) {\n      push ? pushHash(current) : replaceHash(current);\n    }\n  };\n\n  HashHistory.prototype.getCurrentLocation = function getCurrentLocation () {\n    return getHash()\n  };\n\n  return HashHistory;\n}(History));\n\nfunction checkFallback (base) {\n  var location = getLocation(base);\n  if (!/^\\/#/.test(location)) {\n    window.location.replace(cleanPath(base + '/#' + location));\n    return true\n  }\n}\n\nfunction ensureSlash () {\n  var path = getHash();\n  if (path.charAt(0) === '/') {\n    return true\n  }\n  replaceHash('/' + path);\n  return false\n}\n\nfunction getHash () {\n  // We can't use window.location.hash here because it's not\n  // consistent across browsers - Firefox will pre-decode it!\n  var href = window.location.href;\n  var index = href.indexOf('#');\n  // empty path\n  if (index < 0) { return '' }\n\n  href = href.slice(index + 1);\n\n  return href\n}\n\nfunction getUrl (path) {\n  var href = window.location.href;\n  var i = href.indexOf('#');\n  var base = i >= 0 ? href.slice(0, i) : href;\n  return (base + \"#\" + path)\n}\n\nfunction pushHash (path) {\n  if (supportsPushState) {\n    pushState(getUrl(path));\n  } else {\n    window.location.hash = path;\n  }\n}\n\nfunction replaceHash (path) {\n  if (supportsPushState) {\n    replaceState(getUrl(path));\n  } else {\n    window.location.replace(getUrl(path));\n  }\n}\n\n/*  */\n\nvar AbstractHistory = /*@__PURE__*/(function (History) {\n  function AbstractHistory (router, base) {\n    History.call(this, router, base);\n    this.stack = [];\n    this.index = -1;\n  }\n\n  if ( History ) AbstractHistory.__proto__ = History;\n  AbstractHistory.prototype = Object.create( History && History.prototype );\n  AbstractHistory.prototype.constructor = AbstractHistory;\n\n  AbstractHistory.prototype.push = function push (location, onComplete, onAbort) {\n    var this$1 = this;\n\n    this.transitionTo(\n      location,\n      function (route) {\n        this$1.stack = this$1.stack.slice(0, this$1.index + 1).concat(route);\n        this$1.index++;\n        onComplete && onComplete(route);\n      },\n      onAbort\n    );\n  };\n\n  AbstractHistory.prototype.replace = function replace (location, onComplete, onAbort) {\n    var this$1 = this;\n\n    this.transitionTo(\n      location,\n      function (route) {\n        this$1.stack = this$1.stack.slice(0, this$1.index).concat(route);\n        onComplete && onComplete(route);\n      },\n      onAbort\n    );\n  };\n\n  AbstractHistory.prototype.go = function go (n) {\n    var this$1 = this;\n\n    var targetIndex = this.index + n;\n    if (targetIndex < 0 || targetIndex >= this.stack.length) {\n      return\n    }\n    var route = this.stack[targetIndex];\n    this.confirmTransition(\n      route,\n      function () {\n        var prev = this$1.current;\n        this$1.index = targetIndex;\n        this$1.updateRoute(route);\n        this$1.router.afterHooks.forEach(function (hook) {\n          hook && hook(route, prev);\n        });\n      },\n      function (err) {\n        if (isNavigationFailure(err, NavigationFailureType.duplicated)) {\n          this$1.index = targetIndex;\n        }\n      }\n    );\n  };\n\n  AbstractHistory.prototype.getCurrentLocation = function getCurrentLocation () {\n    var current = this.stack[this.stack.length - 1];\n    return current ? current.fullPath : '/'\n  };\n\n  AbstractHistory.prototype.ensureURL = function ensureURL () {\n    // noop\n  };\n\n  return AbstractHistory;\n}(History));\n\n/*  */\n\nvar VueRouter = function VueRouter (options) {\n  if ( options === void 0 ) options = {};\n\n  if (process.env.NODE_ENV !== 'production') {\n    warn(this instanceof VueRouter, \"Router must be called with the new operator.\");\n  }\n  this.app = null;\n  this.apps = [];\n  this.options = options;\n  this.beforeHooks = [];\n  this.resolveHooks = [];\n  this.afterHooks = [];\n  this.matcher = createMatcher(options.routes || [], this);\n\n  var mode = options.mode || 'hash';\n  this.fallback =\n    mode === 'history' && !supportsPushState && options.fallback !== false;\n  if (this.fallback) {\n    mode = 'hash';\n  }\n  if (!inBrowser) {\n    mode = 'abstract';\n  }\n  this.mode = mode;\n\n  switch (mode) {\n    case 'history':\n      this.history = new HTML5History(this, options.base);\n      break\n    case 'hash':\n      this.history = new HashHistory(this, options.base, this.fallback);\n      break\n    case 'abstract':\n      this.history = new AbstractHistory(this, options.base);\n      break\n    default:\n      if (process.env.NODE_ENV !== 'production') {\n        assert(false, (\"invalid mode: \" + mode));\n      }\n  }\n};\n\nvar prototypeAccessors = { currentRoute: { configurable: true } };\n\nVueRouter.prototype.match = function match (raw, current, redirectedFrom) {\n  return this.matcher.match(raw, current, redirectedFrom)\n};\n\nprototypeAccessors.currentRoute.get = function () {\n  return this.history && this.history.current\n};\n\nVueRouter.prototype.init = function init (app /* Vue component instance */) {\n    var this$1 = this;\n\n  process.env.NODE_ENV !== 'production' &&\n    assert(\n      install.installed,\n      \"not installed. Make sure to call `Vue.use(VueRouter)` \" +\n        \"before creating root instance.\"\n    );\n\n  this.apps.push(app);\n\n  // set up app destroyed handler\n  // https://github.com/vuejs/vue-router/issues/2639\n  app.$once('hook:destroyed', function () {\n    // clean out app from this.apps array once destroyed\n    var index = this$1.apps.indexOf(app);\n    if (index > -1) { this$1.apps.splice(index, 1); }\n    // ensure we still have a main app or null if no apps\n    // we do not release the router so it can be reused\n    if (this$1.app === app) { this$1.app = this$1.apps[0] || null; }\n\n    if (!this$1.app) { this$1.history.teardown(); }\n  });\n\n  // main app previously initialized\n  // return as we don't need to set up new history listener\n  if (this.app) {\n    return\n  }\n\n  this.app = app;\n\n  var history = this.history;\n\n  if (history instanceof HTML5History || history instanceof HashHistory) {\n    var handleInitialScroll = function (routeOrError) {\n      var from = history.current;\n      var expectScroll = this$1.options.scrollBehavior;\n      var supportsScroll = supportsPushState && expectScroll;\n\n      if (supportsScroll && 'fullPath' in routeOrError) {\n        handleScroll(this$1, routeOrError, from, false);\n      }\n    };\n    var setupListeners = function (routeOrError) {\n      history.setupListeners();\n      handleInitialScroll(routeOrError);\n    };\n    history.transitionTo(\n      history.getCurrentLocation(),\n      setupListeners,\n      setupListeners\n    );\n  }\n\n  history.listen(function (route) {\n    this$1.apps.forEach(function (app) {\n      app._route = route;\n    });\n  });\n};\n\nVueRouter.prototype.beforeEach = function beforeEach (fn) {\n  return registerHook(this.beforeHooks, fn)\n};\n\nVueRouter.prototype.beforeResolve = function beforeResolve (fn) {\n  return registerHook(this.resolveHooks, fn)\n};\n\nVueRouter.prototype.afterEach = function afterEach (fn) {\n  return registerHook(this.afterHooks, fn)\n};\n\nVueRouter.prototype.onReady = function onReady (cb, errorCb) {\n  this.history.onReady(cb, errorCb);\n};\n\nVueRouter.prototype.onError = function onError (errorCb) {\n  this.history.onError(errorCb);\n};\n\nVueRouter.prototype.push = function push (location, onComplete, onAbort) {\n    var this$1 = this;\n\n  // $flow-disable-line\n  if (!onComplete && !onAbort && typeof Promise !== 'undefined') {\n    return new Promise(function (resolve, reject) {\n      this$1.history.push(location, resolve, reject);\n    })\n  } else {\n    this.history.push(location, onComplete, onAbort);\n  }\n};\n\nVueRouter.prototype.replace = function replace (location, onComplete, onAbort) {\n    var this$1 = this;\n\n  // $flow-disable-line\n  if (!onComplete && !onAbort && typeof Promise !== 'undefined') {\n    return new Promise(function (resolve, reject) {\n      this$1.history.replace(location, resolve, reject);\n    })\n  } else {\n    this.history.replace(location, onComplete, onAbort);\n  }\n};\n\nVueRouter.prototype.go = function go (n) {\n  this.history.go(n);\n};\n\nVueRouter.prototype.back = function back () {\n  this.go(-1);\n};\n\nVueRouter.prototype.forward = function forward () {\n  this.go(1);\n};\n\nVueRouter.prototype.getMatchedComponents = function getMatchedComponents (to) {\n  var route = to\n    ? to.matched\n      ? to\n      : this.resolve(to).route\n    : this.currentRoute;\n  if (!route) {\n    return []\n  }\n  return [].concat.apply(\n    [],\n    route.matched.map(function (m) {\n      return Object.keys(m.components).map(function (key) {\n        return m.components[key]\n      })\n    })\n  )\n};\n\nVueRouter.prototype.resolve = function resolve (\n  to,\n  current,\n  append\n) {\n  current = current || this.history.current;\n  var location = normalizeLocation(to, current, append, this);\n  var route = this.match(location, current);\n  var fullPath = route.redirectedFrom || route.fullPath;\n  var base = this.history.base;\n  var href = createHref(base, fullPath, this.mode);\n  return {\n    location: location,\n    route: route,\n    href: href,\n    // for backwards compat\n    normalizedTo: location,\n    resolved: route\n  }\n};\n\nVueRouter.prototype.getRoutes = function getRoutes () {\n  return this.matcher.getRoutes()\n};\n\nVueRouter.prototype.addRoute = function addRoute (parentOrRoute, route) {\n  this.matcher.addRoute(parentOrRoute, route);\n  if (this.history.current !== START) {\n    this.history.transitionTo(this.history.getCurrentLocation());\n  }\n};\n\nVueRouter.prototype.addRoutes = function addRoutes (routes) {\n  if (process.env.NODE_ENV !== 'production') {\n    warn(false, 'router.addRoutes() is deprecated and has been removed in Vue Router 4. Use router.addRoute() instead.');\n  }\n  this.matcher.addRoutes(routes);\n  if (this.history.current !== START) {\n    this.history.transitionTo(this.history.getCurrentLocation());\n  }\n};\n\nObject.defineProperties( VueRouter.prototype, prototypeAccessors );\n\nfunction registerHook (list, fn) {\n  list.push(fn);\n  return function () {\n    var i = list.indexOf(fn);\n    if (i > -1) { list.splice(i, 1); }\n  }\n}\n\nfunction createHref (base, fullPath, mode) {\n  var path = mode === 'hash' ? '#' + fullPath : fullPath;\n  return base ? cleanPath(base + '/' + path) : path\n}\n\nVueRouter.install = install;\nVueRouter.version = '3.5.3';\nVueRouter.isNavigationFailure = isNavigationFailure;\nVueRouter.NavigationFailureType = NavigationFailureType;\nVueRouter.START_LOCATION = START;\n\nif (inBrowser && window.Vue) {\n  window.Vue.use(VueRouter);\n}\n\nexport default VueRouter;\n","'use strict';\nconst {inspect} = require('util');\n\nclass NonError extends Error {\n\tconstructor(message) {\n\t\tsuper(inspect(message));\n\t\tthis.name = 'NonError';\n\t\tError.captureStackTrace(this, NonError);\n\t}\n}\n\nconst commonProperties = [\n\t'name',\n\t'message',\n\t'stack',\n\t'code'\n];\n\nconst destroyCircular = (from, seen, to_) => {\n\tconst to = to_ || (Array.isArray(from) ? [] : {});\n\n\tseen.push(from);\n\n\tfor (const [key, value] of Object.entries(from)) {\n\t\tif (typeof value === 'function') {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (!value || typeof value !== 'object') {\n\t\t\tto[key] = value;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (!seen.includes(from[key])) {\n\t\t\tto[key] = destroyCircular(from[key], seen.slice());\n\t\t\tcontinue;\n\t\t}\n\n\t\tto[key] = '[Circular]';\n\t}\n\n\tfor (const property of commonProperties) {\n\t\tif (typeof from[property] === 'string') {\n\t\t\tto[property] = from[property];\n\t\t}\n\t}\n\n\treturn to;\n};\n\nconst serializeError = value => {\n\tif (typeof value === 'object' && value !== null) {\n\t\treturn destroyCircular(value, []);\n\t}\n\n\t// People sometimes throw things besides Error objects…\n\tif (typeof value === 'function') {\n\t\t// `JSON.stringify()` discards functions. We do too, unless a function is thrown directly.\n\t\treturn `[Function: ${(value.name || 'anonymous')}]`;\n\t}\n\n\treturn value;\n};\n\nconst deserializeError = value => {\n\tif (value instanceof Error) {\n\t\treturn value;\n\t}\n\n\tif (typeof value === 'object' && value !== null && !Array.isArray(value)) {\n\t\tconst newError = new Error();\n\t\tdestroyCircular(value, [], newError);\n\t\treturn newError;\n\t}\n\n\treturn new NonError(value);\n};\n\nmodule.exports = {\n\tserializeError,\n\tdeserializeError\n};\n","export * from \"-!../../mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../vue-loader/lib/loaders/stylePostLoader.js!../../postcss-loader/src/index.js??ref--9-oneOf-1-2!../../sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../cache-loader/dist/cjs.js??ref--1-0!../../vue-loader/lib/index.js??vue-loader-options!./vue-tel-input-vuetify.vue?vue&type=style&index=1&lang=scss&\"","const Polynomial = require('./polynomial')\n\nfunction ReedSolomonEncoder (degree) {\n  this.genPoly = undefined\n  this.degree = degree\n\n  if (this.degree) this.initialize(this.degree)\n}\n\n/**\n * Initialize the encoder.\n * The input param should correspond to the number of error correction codewords.\n *\n * @param  {Number} degree\n */\nReedSolomonEncoder.prototype.initialize = function initialize (degree) {\n  // create an irreducible generator polynomial\n  this.degree = degree\n  this.genPoly = Polynomial.generateECPolynomial(this.degree)\n}\n\n/**\n * Encodes a chunk of data\n *\n * @param  {Uint8Array} data Buffer containing input data\n * @return {Uint8Array}      Buffer containing encoded data\n */\nReedSolomonEncoder.prototype.encode = function encode (data) {\n  if (!this.genPoly) {\n    throw new Error('Encoder not initialized')\n  }\n\n  // Calculate EC for this data block\n  // extends data size to data+genPoly size\n  const paddedData = new Uint8Array(data.length + this.degree)\n  paddedData.set(data)\n\n  // The error correction codewords are the remainder after dividing the data codewords\n  // by a generator polynomial\n  const remainder = Polynomial.mod(paddedData, this.genPoly)\n\n  // return EC data blocks (last n byte, where n is the degree of genPoly)\n  // If coefficients number in remainder are less than genPoly degree,\n  // pad with 0s to the left to reach the needed number of coefficients\n  const start = this.degree - remainder.length\n  if (start > 0) {\n    const buff = new Uint8Array(this.degree)\n    buff.set(remainder, start)\n\n    return buff\n  }\n\n  return remainder\n}\n\nmodule.exports = ReedSolomonEncoder\n","var trimmedEndIndex = require('./_trimmedEndIndex');\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n  return string\n    ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n    : string;\n}\n\nmodule.exports = baseTrim;\n","import { clamp } from '../../util/helpers'; // For converting XYZ to sRGB\n\nconst srgbForwardMatrix = [[3.2406, -1.5372, -0.4986], [-0.9689, 1.8758, 0.0415], [0.0557, -0.2040, 1.0570]]; // Forward gamma adjust\n\nconst srgbForwardTransform = C => C <= 0.0031308 ? C * 12.92 : 1.055 * C ** (1 / 2.4) - 0.055; // For converting sRGB to XYZ\n\n\nconst srgbReverseMatrix = [[0.4124, 0.3576, 0.1805], [0.2126, 0.7152, 0.0722], [0.0193, 0.1192, 0.9505]]; // Reverse gamma adjust\n\nconst srgbReverseTransform = C => C <= 0.04045 ? C / 12.92 : ((C + 0.055) / 1.055) ** 2.4;\n\nexport function fromXYZ(xyz) {\n  const rgb = Array(3);\n  const transform = srgbForwardTransform;\n  const matrix = srgbForwardMatrix; // Matrix transform, then gamma adjustment\n\n  for (let i = 0; i < 3; ++i) {\n    rgb[i] = Math.round(clamp(transform(matrix[i][0] * xyz[0] + matrix[i][1] * xyz[1] + matrix[i][2] * xyz[2])) * 255);\n  } // Rescale back to [0, 255]\n\n\n  return (rgb[0] << 16) + (rgb[1] << 8) + (rgb[2] << 0);\n}\nexport function toXYZ(rgb) {\n  const xyz = [0, 0, 0];\n  const transform = srgbReverseTransform;\n  const matrix = srgbReverseMatrix; // Rescale from [0, 255] to [0, 1] then adjust sRGB gamma to linear RGB\n\n  const r = transform((rgb >> 16 & 0xff) / 255);\n  const g = transform((rgb >> 8 & 0xff) / 255);\n  const b = transform((rgb >> 0 & 0xff) / 255); // Matrix color space transform\n\n  for (let i = 0; i < 3; ++i) {\n    xyz[i] = matrix[i][0] * r + matrix[i][1] * g + matrix[i][2] * b;\n  }\n\n  return xyz;\n}\n//# sourceMappingURL=transformSRGB.js.map","var baseIndexOf = require('./_baseIndexOf');\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n  var length = array == null ? 0 : array.length;\n  return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\nmodule.exports = arrayIncludes;\n","// Styles\nimport \"../../../src/components/VSheet/VSheet.sass\"; // Mixins\n\nimport BindsAttrs from '../../mixins/binds-attrs';\nimport Colorable from '../../mixins/colorable';\nimport Elevatable from '../../mixins/elevatable';\nimport Measurable from '../../mixins/measurable';\nimport Roundable from '../../mixins/roundable';\nimport Themeable from '../../mixins/themeable'; // Helpers\n\nimport mixins from '../../util/mixins';\n/* @vue/component */\n\nexport default mixins(BindsAttrs, Colorable, Elevatable, Measurable, Roundable, Themeable).extend({\n  name: 'v-sheet',\n  props: {\n    outlined: Boolean,\n    shaped: Boolean,\n    tag: {\n      type: String,\n      default: 'div'\n    }\n  },\n  computed: {\n    classes() {\n      return {\n        'v-sheet': true,\n        'v-sheet--outlined': this.outlined,\n        'v-sheet--shaped': this.shaped,\n        ...this.themeClasses,\n        ...this.elevationClasses,\n        ...this.roundedClasses\n      };\n    },\n\n    styles() {\n      return this.measurableStyles;\n    }\n\n  },\n\n  render(h) {\n    const data = {\n      class: this.classes,\n      style: this.styles,\n      on: this.listeners$\n    };\n    return h(this.tag, this.setBackgroundColor(this.color, data), this.$slots.default);\n  }\n\n});\n//# sourceMappingURL=VSheet.js.map","var copyObject = require('./_copyObject'),\n    keysIn = require('./keysIn');\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n  return copyObject(value, keysIn(value));\n}\n\nmodule.exports = toPlainObject;\n","import \"../../../src/components/VProgressLinear/VProgressLinear.sass\"; // Components\n\nimport { VFadeTransition, VSlideXTransition } from '../transitions'; // Directives\n\nimport intersect from '../../directives/intersect'; // Mixins\n\nimport Colorable from '../../mixins/colorable';\nimport { factory as PositionableFactory } from '../../mixins/positionable';\nimport Proxyable from '../../mixins/proxyable';\nimport Themeable from '../../mixins/themeable'; // Utilities\n\nimport { convertToUnit, getSlot } from '../../util/helpers';\nimport mixins from '../../util/mixins';\nconst baseMixins = mixins(Colorable, PositionableFactory(['absolute', 'fixed', 'top', 'bottom']), Proxyable, Themeable);\n/* @vue/component */\n\nexport default baseMixins.extend({\n  name: 'v-progress-linear',\n  directives: {\n    intersect\n  },\n  props: {\n    active: {\n      type: Boolean,\n      default: true\n    },\n    backgroundColor: {\n      type: String,\n      default: null\n    },\n    backgroundOpacity: {\n      type: [Number, String],\n      default: null\n    },\n    bufferValue: {\n      type: [Number, String],\n      default: 100\n    },\n    color: {\n      type: String,\n      default: 'primary'\n    },\n    height: {\n      type: [Number, String],\n      default: 4\n    },\n    indeterminate: Boolean,\n    query: Boolean,\n    reverse: Boolean,\n    rounded: Boolean,\n    stream: Boolean,\n    striped: Boolean,\n    value: {\n      type: [Number, String],\n      default: 0\n    }\n  },\n\n  data() {\n    return {\n      internalLazyValue: this.value || 0,\n      isVisible: true\n    };\n  },\n\n  computed: {\n    __cachedBackground() {\n      return this.$createElement('div', this.setBackgroundColor(this.backgroundColor || this.color, {\n        staticClass: 'v-progress-linear__background',\n        style: this.backgroundStyle\n      }));\n    },\n\n    __cachedBar() {\n      return this.$createElement(this.computedTransition, [this.__cachedBarType]);\n    },\n\n    __cachedBarType() {\n      return this.indeterminate ? this.__cachedIndeterminate : this.__cachedDeterminate;\n    },\n\n    __cachedBuffer() {\n      return this.$createElement('div', {\n        staticClass: 'v-progress-linear__buffer',\n        style: this.styles\n      });\n    },\n\n    __cachedDeterminate() {\n      return this.$createElement('div', this.setBackgroundColor(this.color, {\n        staticClass: `v-progress-linear__determinate`,\n        style: {\n          width: convertToUnit(this.normalizedValue, '%')\n        }\n      }));\n    },\n\n    __cachedIndeterminate() {\n      return this.$createElement('div', {\n        staticClass: 'v-progress-linear__indeterminate',\n        class: {\n          'v-progress-linear__indeterminate--active': this.active\n        }\n      }, [this.genProgressBar('long'), this.genProgressBar('short')]);\n    },\n\n    __cachedStream() {\n      if (!this.stream) return null;\n      return this.$createElement('div', this.setTextColor(this.color, {\n        staticClass: 'v-progress-linear__stream',\n        style: {\n          width: convertToUnit(100 - this.normalizedBuffer, '%')\n        }\n      }));\n    },\n\n    backgroundStyle() {\n      const backgroundOpacity = this.backgroundOpacity == null ? this.backgroundColor ? 1 : 0.3 : parseFloat(this.backgroundOpacity);\n      return {\n        opacity: backgroundOpacity,\n        [this.isReversed ? 'right' : 'left']: convertToUnit(this.normalizedValue, '%'),\n        width: convertToUnit(Math.max(0, this.normalizedBuffer - this.normalizedValue), '%')\n      };\n    },\n\n    classes() {\n      return {\n        'v-progress-linear--absolute': this.absolute,\n        'v-progress-linear--fixed': this.fixed,\n        'v-progress-linear--query': this.query,\n        'v-progress-linear--reactive': this.reactive,\n        'v-progress-linear--reverse': this.isReversed,\n        'v-progress-linear--rounded': this.rounded,\n        'v-progress-linear--striped': this.striped,\n        'v-progress-linear--visible': this.isVisible,\n        ...this.themeClasses\n      };\n    },\n\n    computedTransition() {\n      return this.indeterminate ? VFadeTransition : VSlideXTransition;\n    },\n\n    isReversed() {\n      return this.$vuetify.rtl !== this.reverse;\n    },\n\n    normalizedBuffer() {\n      return this.normalize(this.bufferValue);\n    },\n\n    normalizedValue() {\n      return this.normalize(this.internalLazyValue);\n    },\n\n    reactive() {\n      return Boolean(this.$listeners.change);\n    },\n\n    styles() {\n      const styles = {};\n\n      if (!this.active) {\n        styles.height = 0;\n      }\n\n      if (!this.indeterminate && parseFloat(this.normalizedBuffer) !== 100) {\n        styles.width = convertToUnit(this.normalizedBuffer, '%');\n      }\n\n      return styles;\n    }\n\n  },\n  methods: {\n    genContent() {\n      const slot = getSlot(this, 'default', {\n        value: this.internalLazyValue\n      });\n      if (!slot) return null;\n      return this.$createElement('div', {\n        staticClass: 'v-progress-linear__content'\n      }, slot);\n    },\n\n    genListeners() {\n      const listeners = this.$listeners;\n\n      if (this.reactive) {\n        listeners.click = this.onClick;\n      }\n\n      return listeners;\n    },\n\n    genProgressBar(name) {\n      return this.$createElement('div', this.setBackgroundColor(this.color, {\n        staticClass: 'v-progress-linear__indeterminate',\n        class: {\n          [name]: true\n        }\n      }));\n    },\n\n    onClick(e) {\n      if (!this.reactive) return;\n      const {\n        width\n      } = this.$el.getBoundingClientRect();\n      this.internalValue = e.offsetX / width * 100;\n    },\n\n    onObserve(entries, observer, isIntersecting) {\n      this.isVisible = isIntersecting;\n    },\n\n    normalize(value) {\n      if (value < 0) return 0;\n      if (value > 100) return 100;\n      return parseFloat(value);\n    }\n\n  },\n\n  render(h) {\n    const data = {\n      staticClass: 'v-progress-linear',\n      attrs: {\n        role: 'progressbar',\n        'aria-valuemin': 0,\n        'aria-valuemax': this.normalizedBuffer,\n        'aria-valuenow': this.indeterminate ? undefined : this.normalizedValue\n      },\n      class: this.classes,\n      directives: [{\n        name: 'intersect',\n        value: this.onObserve\n      }],\n      style: {\n        bottom: this.bottom ? 0 : undefined,\n        height: this.active ? convertToUnit(this.height) : 0,\n        top: this.top ? 0 : undefined\n      },\n      on: this.genListeners()\n    };\n    return h('div', data, [this.__cachedStream, this.__cachedBackground, this.__cachedBuffer, this.__cachedBar, this.genContent()]);\n  }\n\n});\n//# sourceMappingURL=VProgressLinear.js.map","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","import VIcon from '../../VIcon';\nimport VSimpleCheckbox from '../../VCheckbox/VSimpleCheckbox';\nimport ripple from '../../../directives/ripple';\nimport mixins from '../../../util/mixins';\nexport default mixins().extend({\n  // https://github.com/vuejs/vue/issues/6872\n  directives: {\n    ripple\n  },\n  props: {\n    headers: {\n      type: Array,\n      default: () => []\n    },\n    options: {\n      type: Object,\n      default: () => ({\n        page: 1,\n        itemsPerPage: 10,\n        sortBy: [],\n        sortDesc: [],\n        groupBy: [],\n        groupDesc: [],\n        multiSort: false,\n        mustSort: false\n      })\n    },\n    checkboxColor: String,\n    sortIcon: {\n      type: String,\n      default: '$sort'\n    },\n    everyItem: Boolean,\n    someItems: Boolean,\n    showGroupBy: Boolean,\n    singleSelect: Boolean,\n    disableSort: Boolean\n  },\n  methods: {\n    genSelectAll() {\n      var _this$checkboxColor;\n\n      const data = {\n        props: {\n          value: this.everyItem,\n          indeterminate: !this.everyItem && this.someItems,\n          color: (_this$checkboxColor = this.checkboxColor) != null ? _this$checkboxColor : ''\n        },\n        on: {\n          input: v => this.$emit('toggle-select-all', v)\n        }\n      };\n\n      if (this.$scopedSlots['data-table-select']) {\n        return this.$scopedSlots['data-table-select'](data);\n      }\n\n      return this.$createElement(VSimpleCheckbox, {\n        staticClass: 'v-data-table__checkbox',\n        ...data\n      });\n    },\n\n    genSortIcon() {\n      return this.$createElement(VIcon, {\n        staticClass: 'v-data-table-header__icon',\n        props: {\n          size: 18\n        }\n      }, [this.sortIcon]);\n    }\n\n  }\n});\n//# sourceMappingURL=header.js.map","import mixins from '../../util/mixins';\nimport VSelect from '../VSelect/VSelect';\nimport VChip from '../VChip';\nimport header from './mixins/header';\nimport { wrapInArray } from '../../util/helpers';\nexport default mixins(header).extend({\n  name: 'v-data-table-header-mobile',\n  props: {\n    sortByText: {\n      type: String,\n      default: '$vuetify.dataTable.sortBy'\n    }\n  },\n  methods: {\n    genSortChip(props) {\n      const children = [props.item.text];\n      const sortIndex = this.options.sortBy.findIndex(k => k === props.item.value);\n      const beingSorted = sortIndex >= 0;\n      const isDesc = this.options.sortDesc[sortIndex];\n      children.push(this.$createElement('div', {\n        staticClass: 'v-chip__close',\n        class: {\n          sortable: true,\n          active: beingSorted,\n          asc: beingSorted && !isDesc,\n          desc: beingSorted && isDesc\n        }\n      }, [this.genSortIcon()]));\n      return this.$createElement(VChip, {\n        staticClass: 'sortable',\n        on: {\n          click: e => {\n            e.stopPropagation();\n            this.$emit('sort', props.item.value);\n          }\n        }\n      }, children);\n    },\n\n    genSortSelect(items) {\n      return this.$createElement(VSelect, {\n        props: {\n          label: this.$vuetify.lang.t(this.sortByText),\n          items,\n          hideDetails: true,\n          multiple: this.options.multiSort,\n          value: this.options.multiSort ? this.options.sortBy : this.options.sortBy[0],\n          menuProps: {\n            closeOnContentClick: true\n          }\n        },\n        on: {\n          change: v => this.$emit('sort', v)\n        },\n        scopedSlots: {\n          selection: props => this.genSortChip(props)\n        }\n      });\n    }\n\n  },\n\n  render(h) {\n    const children = [];\n    const header = this.headers.find(h => h.value === 'data-table-select');\n\n    if (header && !this.singleSelect) {\n      children.push(this.$createElement('div', {\n        class: ['v-data-table-header-mobile__select', ...wrapInArray(header.class)],\n        attrs: {\n          width: header.width\n        }\n      }, [this.genSelectAll()]));\n    }\n\n    const sortHeaders = this.headers.filter(h => h.sortable !== false && h.value !== 'data-table-select').map(h => ({\n      text: h.text,\n      value: h.value\n    }));\n\n    if (!this.disableSort && sortHeaders.length) {\n      children.push(this.genSortSelect(sortHeaders));\n    }\n\n    const th = children.length ? h('th', [h('div', {\n      staticClass: 'v-data-table-header-mobile__wrapper'\n    }, children)]) : undefined;\n    const tr = h('tr', [th]);\n    return h('thead', {\n      staticClass: 'v-data-table-header v-data-table-header-mobile'\n    }, [tr]);\n  }\n\n});\n//# sourceMappingURL=VDataTableHeaderMobile.js.map","import mixins from '../../util/mixins';\nimport header from './mixins/header';\nimport { wrapInArray, convertToUnit } from '../../util/helpers';\nexport default mixins(header).extend({\n  name: 'v-data-table-header-desktop',\n  methods: {\n    genGroupByToggle(header) {\n      return this.$createElement('span', {\n        on: {\n          click: e => {\n            e.stopPropagation();\n            this.$emit('group', header.value);\n          }\n        }\n      }, ['group']);\n    },\n\n    getAria(beingSorted, isDesc) {\n      const $t = key => this.$vuetify.lang.t(`$vuetify.dataTable.ariaLabel.${key}`);\n\n      let ariaSort = 'none';\n      let ariaLabel = [$t('sortNone'), $t('activateAscending')];\n\n      if (!beingSorted) {\n        return {\n          ariaSort,\n          ariaLabel: ariaLabel.join(' ')\n        };\n      }\n\n      if (isDesc) {\n        ariaSort = 'descending';\n        ariaLabel = [$t('sortDescending'), $t(this.options.mustSort ? 'activateAscending' : 'activateNone')];\n      } else {\n        ariaSort = 'ascending';\n        ariaLabel = [$t('sortAscending'), $t('activateDescending')];\n      }\n\n      return {\n        ariaSort,\n        ariaLabel: ariaLabel.join(' ')\n      };\n    },\n\n    genHeader(header) {\n      const data = {\n        attrs: {\n          role: 'columnheader',\n          scope: 'col',\n          'aria-label': header.text || ''\n        },\n        style: {\n          width: convertToUnit(header.width),\n          minWidth: convertToUnit(header.width)\n        },\n        class: [`text-${header.align || 'start'}`, ...wrapInArray(header.class), header.divider && 'v-data-table__divider'],\n        on: {}\n      };\n      const children = [];\n\n      if (header.value === 'data-table-select' && !this.singleSelect) {\n        return this.$createElement('th', data, [this.genSelectAll()]);\n      }\n\n      children.push(this.$scopedSlots.hasOwnProperty(header.value) ? this.$scopedSlots[header.value]({\n        header\n      }) : this.$createElement('span', [header.text]));\n\n      if (!this.disableSort && (header.sortable || !header.hasOwnProperty('sortable'))) {\n        data.on.click = () => this.$emit('sort', header.value);\n\n        const sortIndex = this.options.sortBy.findIndex(k => k === header.value);\n        const beingSorted = sortIndex >= 0;\n        const isDesc = this.options.sortDesc[sortIndex];\n        data.class.push('sortable');\n        const {\n          ariaLabel,\n          ariaSort\n        } = this.getAria(beingSorted, isDesc);\n        data.attrs['aria-label'] += `${header.text ? ': ' : ''}${ariaLabel}`;\n        data.attrs['aria-sort'] = ariaSort;\n\n        if (beingSorted) {\n          data.class.push('active');\n          data.class.push(isDesc ? 'desc' : 'asc');\n        }\n\n        if (header.align === 'end') children.unshift(this.genSortIcon());else children.push(this.genSortIcon());\n\n        if (this.options.multiSort && beingSorted) {\n          children.push(this.$createElement('span', {\n            class: 'v-data-table-header__sort-badge'\n          }, [String(sortIndex + 1)]));\n        }\n      }\n\n      if (this.showGroupBy && header.groupable !== false) children.push(this.genGroupByToggle(header));\n      return this.$createElement('th', data, children);\n    }\n\n  },\n\n  render() {\n    return this.$createElement('thead', {\n      staticClass: 'v-data-table-header'\n    }, [this.$createElement('tr', this.headers.map(header => this.genHeader(header)))]);\n  }\n\n});\n//# sourceMappingURL=VDataTableHeaderDesktop.js.map","/**\n * Removes duplicate `@input` listeners when\n * using v-model with functional components\n *\n * @see https://github.com/vuetifyjs/vuetify/issues/4460\n */\nexport default function dedupeModelListeners(data) {\n  if (data.model && data.on && data.on.input) {\n    if (Array.isArray(data.on.input)) {\n      const i = data.on.input.indexOf(data.model.callback);\n      if (i > -1) data.on.input.splice(i, 1);\n    } else {\n      delete data.on.input;\n    }\n  }\n}\n//# sourceMappingURL=dedupeModelListeners.js.map","export default function rebuildFunctionalSlots(slots, h) {\n  const children = [];\n\n  for (const slot in slots) {\n    if (slots.hasOwnProperty(slot)) {\n      children.push(h('template', {\n        slot\n      }, slots[slot]));\n    }\n  }\n\n  return children;\n}\n//# sourceMappingURL=rebuildFunctionalSlots.js.map","// Styles\nimport \"../../../src/components/VDataTable/VDataTableHeader.sass\"; // Components\n\nimport VDataTableHeaderMobile from './VDataTableHeaderMobile';\nimport VDataTableHeaderDesktop from './VDataTableHeaderDesktop'; // Mixins\n\nimport header from './mixins/header'; // Utilities\n\nimport dedupeModelListeners from '../../util/dedupeModelListeners';\nimport mergeData from '../../util/mergeData';\nimport rebuildSlots from '../../util/rebuildFunctionalSlots'; // Types\n\nimport Vue from 'vue';\n/* @vue/component */\n\nexport default Vue.extend({\n  name: 'v-data-table-header',\n  functional: true,\n  props: { ...header.options.props,\n    mobile: Boolean\n  },\n\n  render(h, {\n    props,\n    data,\n    slots\n  }) {\n    dedupeModelListeners(data);\n    const children = rebuildSlots(slots(), h);\n    data = mergeData(data, {\n      props\n    });\n\n    if (props.mobile) {\n      return h(VDataTableHeaderMobile, data, children);\n    } else {\n      return h(VDataTableHeaderDesktop, data, children);\n    }\n  }\n\n});\n//# sourceMappingURL=VDataTableHeader.js.map","// Types\nimport Vue from 'vue'; // Utils\n\nimport { getObjectValueByPath, wrapInArray } from '../../util/helpers';\n\nfunction needsTd(slot) {\n  var _slot$;\n\n  return slot.length !== 1 || !['td', 'th'].includes((_slot$ = slot[0]) == null ? void 0 : _slot$.tag);\n}\n\nexport default Vue.extend({\n  name: 'row',\n  functional: true,\n  props: {\n    headers: Array,\n    index: Number,\n    item: Object,\n    rtl: Boolean\n  },\n\n  render(h, {\n    props,\n    slots,\n    data\n  }) {\n    const computedSlots = slots();\n    const columns = props.headers.map(header => {\n      const children = [];\n      const value = getObjectValueByPath(props.item, header.value);\n      const slotName = header.value;\n      const scopedSlot = data.scopedSlots && data.scopedSlots.hasOwnProperty(slotName) && data.scopedSlots[slotName];\n      const regularSlot = computedSlots.hasOwnProperty(slotName) && computedSlots[slotName];\n\n      if (scopedSlot) {\n        children.push(...wrapInArray(scopedSlot({\n          item: props.item,\n          isMobile: false,\n          header,\n          index: props.index,\n          value\n        })));\n      } else if (regularSlot) {\n        children.push(...wrapInArray(regularSlot));\n      } else {\n        children.push(value == null ? value : String(value));\n      }\n\n      const textAlign = `text-${header.align || 'start'}`;\n      return needsTd(children) ? h('td', {\n        class: [textAlign, header.cellClass, {\n          'v-data-table__divider': header.divider\n        }]\n      }, children) : children;\n    });\n    return h('tr', data, columns);\n  }\n\n});\n//# sourceMappingURL=Row.js.map","import Vue from 'vue';\nexport default Vue.extend({\n  name: 'row-group',\n  functional: true,\n  props: {\n    value: {\n      type: Boolean,\n      default: true\n    },\n    headerClass: {\n      type: String,\n      default: 'v-row-group__header'\n    },\n    contentClass: String,\n    summaryClass: {\n      type: String,\n      default: 'v-row-group__summary'\n    }\n  },\n\n  render(h, {\n    slots,\n    props\n  }) {\n    const computedSlots = slots();\n    const children = [];\n\n    if (computedSlots['column.header']) {\n      children.push(h('tr', {\n        staticClass: props.headerClass\n      }, computedSlots['column.header']));\n    } else if (computedSlots['row.header']) {\n      children.push(...computedSlots['row.header']);\n    }\n\n    if (computedSlots['row.content'] && props.value) children.push(...computedSlots['row.content']);\n\n    if (computedSlots['column.summary']) {\n      children.push(h('tr', {\n        staticClass: props.summaryClass\n      }, computedSlots['column.summary']));\n    } else if (computedSlots['row.summary']) {\n      children.push(...computedSlots['row.summary']);\n    }\n\n    return children;\n  }\n\n});\n//# sourceMappingURL=RowGroup.js.map","import Vue from 'vue';\nimport { getObjectValueByPath } from '../../util/helpers';\nexport default Vue.extend({\n  name: 'row',\n  functional: true,\n  props: {\n    headers: Array,\n    hideDefaultHeader: Boolean,\n    index: Number,\n    item: Object,\n    rtl: Boolean\n  },\n\n  render(h, {\n    props,\n    slots,\n    data\n  }) {\n    const computedSlots = slots();\n    const columns = props.headers.map(header => {\n      const classes = {\n        'v-data-table__mobile-row': true\n      };\n      const children = [];\n      const value = getObjectValueByPath(props.item, header.value);\n      const slotName = header.value;\n      const scopedSlot = data.scopedSlots && data.scopedSlots.hasOwnProperty(slotName) && data.scopedSlots[slotName];\n      const regularSlot = computedSlots.hasOwnProperty(slotName) && computedSlots[slotName];\n\n      if (scopedSlot) {\n        children.push(scopedSlot({\n          item: props.item,\n          isMobile: true,\n          header,\n          index: props.index,\n          value\n        }));\n      } else if (regularSlot) {\n        children.push(regularSlot);\n      } else {\n        children.push(value == null ? value : String(value));\n      }\n\n      const mobileRowChildren = [h('div', {\n        staticClass: 'v-data-table__mobile-row__cell'\n      }, children)];\n\n      if (header.value !== 'dataTableSelect' && !props.hideDefaultHeader) {\n        mobileRowChildren.unshift(h('div', {\n          staticClass: 'v-data-table__mobile-row__header'\n        }, [header.text]));\n      }\n\n      return h('td', {\n        class: classes\n      }, mobileRowChildren);\n    });\n    return h('tr', { ...data,\n      staticClass: 'v-data-table__mobile-table-row'\n    }, columns);\n  }\n\n});\n//# sourceMappingURL=MobileRow.js.map","import \"../../../src/components/VDataTable/VDataTable.sass\"; // Components\n\nimport { VData } from '../VData';\nimport { VDataFooter, VDataIterator } from '../VDataIterator';\nimport VBtn from '../VBtn';\nimport VDataTableHeader from './VDataTableHeader'; // import VVirtualTable from './VVirtualTable'\n\nimport VIcon from '../VIcon';\nimport Row from './Row';\nimport RowGroup from './RowGroup';\nimport VSimpleCheckbox from '../VCheckbox/VSimpleCheckbox';\nimport VSimpleTable from './VSimpleTable';\nimport MobileRow from './MobileRow'; // Mixins\n\nimport Loadable from '../../mixins/loadable'; // Directives\n\nimport ripple from '../../directives/ripple'; // Helpers\n\nimport mixins from '../../util/mixins';\nimport { deepEqual, getObjectValueByPath, getPrefixedScopedSlots, getSlot, defaultFilter, camelizeObjectKeys, getPropertyFromItem } from '../../util/helpers';\nimport { breaking } from '../../util/console';\nimport { mergeClasses } from '../../util/mergeData';\n\nfunction filterFn(item, search, filter) {\n  return header => {\n    const value = getObjectValueByPath(item, header.value);\n    return header.filter ? header.filter(value, search, item) : filter(value, search, item);\n  };\n}\n\nfunction searchTableItems(items, search, headersWithCustomFilters, headersWithoutCustomFilters, customFilter) {\n  search = typeof search === 'string' ? search.trim() : null;\n  return items.filter(item => {\n    // Headers with custom filters are evaluated whether or not a search term has been provided.\n    // We need to match every filter to be included in the results.\n    const matchesColumnFilters = headersWithCustomFilters.every(filterFn(item, search, defaultFilter)); // Headers without custom filters are only filtered by the `search` property if it is defined.\n    // We only need a single column to match the search term to be included in the results.\n\n    const matchesSearchTerm = !search || headersWithoutCustomFilters.some(filterFn(item, search, customFilter));\n    return matchesColumnFilters && matchesSearchTerm;\n  });\n}\n/* @vue/component */\n\n\nexport default mixins(VDataIterator, Loadable).extend({\n  name: 'v-data-table',\n  // https://github.com/vuejs/vue/issues/6872\n  directives: {\n    ripple\n  },\n  props: {\n    headers: {\n      type: Array,\n      default: () => []\n    },\n    showSelect: Boolean,\n    checkboxColor: String,\n    showExpand: Boolean,\n    showGroupBy: Boolean,\n    // TODO: Fix\n    // virtualRows: Boolean,\n    height: [Number, String],\n    hideDefaultHeader: Boolean,\n    caption: String,\n    dense: Boolean,\n    headerProps: Object,\n    calculateWidths: Boolean,\n    fixedHeader: Boolean,\n    headersLength: Number,\n    expandIcon: {\n      type: String,\n      default: '$expand'\n    },\n    customFilter: {\n      type: Function,\n      default: defaultFilter\n    },\n    itemClass: {\n      type: [String, Function],\n      default: () => ''\n    },\n    loaderHeight: {\n      type: [Number, String],\n      default: 4\n    }\n  },\n\n  data() {\n    return {\n      internalGroupBy: [],\n      openCache: {},\n      widths: []\n    };\n  },\n\n  computed: {\n    computedHeaders() {\n      if (!this.headers) return [];\n      const headers = this.headers.filter(h => h.value === undefined || !this.internalGroupBy.find(v => v === h.value));\n      const defaultHeader = {\n        text: '',\n        sortable: false,\n        width: '1px'\n      };\n\n      if (this.showSelect) {\n        const index = headers.findIndex(h => h.value === 'data-table-select');\n        if (index < 0) headers.unshift({ ...defaultHeader,\n          value: 'data-table-select'\n        });else headers.splice(index, 1, { ...defaultHeader,\n          ...headers[index]\n        });\n      }\n\n      if (this.showExpand) {\n        const index = headers.findIndex(h => h.value === 'data-table-expand');\n        if (index < 0) headers.unshift({ ...defaultHeader,\n          value: 'data-table-expand'\n        });else headers.splice(index, 1, { ...defaultHeader,\n          ...headers[index]\n        });\n      }\n\n      return headers;\n    },\n\n    colspanAttrs() {\n      return this.isMobile ? undefined : {\n        colspan: this.headersLength || this.computedHeaders.length\n      };\n    },\n\n    columnSorters() {\n      return this.computedHeaders.reduce((acc, header) => {\n        if (header.sort) acc[header.value] = header.sort;\n        return acc;\n      }, {});\n    },\n\n    headersWithCustomFilters() {\n      return this.headers.filter(header => header.filter && (!header.hasOwnProperty('filterable') || header.filterable === true));\n    },\n\n    headersWithoutCustomFilters() {\n      return this.headers.filter(header => !header.filter && (!header.hasOwnProperty('filterable') || header.filterable === true));\n    },\n\n    sanitizedHeaderProps() {\n      return camelizeObjectKeys(this.headerProps);\n    },\n\n    computedItemsPerPage() {\n      const itemsPerPage = this.options && this.options.itemsPerPage ? this.options.itemsPerPage : this.itemsPerPage;\n      const itemsPerPageOptions = this.sanitizedFooterProps.itemsPerPageOptions;\n\n      if (itemsPerPageOptions && !itemsPerPageOptions.find(item => typeof item === 'number' ? item === itemsPerPage : item.value === itemsPerPage)) {\n        const firstOption = itemsPerPageOptions[0];\n        return typeof firstOption === 'object' ? firstOption.value : firstOption;\n      }\n\n      return itemsPerPage;\n    }\n\n  },\n\n  created() {\n    const breakingProps = [['sort-icon', 'header-props.sort-icon'], ['hide-headers', 'hide-default-header'], ['select-all', 'show-select']];\n    /* istanbul ignore next */\n\n    breakingProps.forEach(([original, replacement]) => {\n      if (this.$attrs.hasOwnProperty(original)) breaking(original, replacement, this);\n    });\n  },\n\n  mounted() {\n    // if ((!this.sortBy || !this.sortBy.length) && (!this.options.sortBy || !this.options.sortBy.length)) {\n    //   const firstSortable = this.headers.find(h => !('sortable' in h) || !!h.sortable)\n    //   if (firstSortable) this.updateOptions({ sortBy: [firstSortable.value], sortDesc: [false] })\n    // }\n    if (this.calculateWidths) {\n      window.addEventListener('resize', this.calcWidths);\n      this.calcWidths();\n    }\n  },\n\n  beforeDestroy() {\n    if (this.calculateWidths) {\n      window.removeEventListener('resize', this.calcWidths);\n    }\n  },\n\n  methods: {\n    calcWidths() {\n      this.widths = Array.from(this.$el.querySelectorAll('th')).map(e => e.clientWidth);\n    },\n\n    customFilterWithColumns(items, search) {\n      return searchTableItems(items, search, this.headersWithCustomFilters, this.headersWithoutCustomFilters, this.customFilter);\n    },\n\n    customSortWithHeaders(items, sortBy, sortDesc, locale) {\n      return this.customSort(items, sortBy, sortDesc, locale, this.columnSorters);\n    },\n\n    createItemProps(item, index) {\n      const props = VDataIterator.options.methods.createItemProps.call(this, item, index);\n      return Object.assign(props, {\n        headers: this.computedHeaders\n      });\n    },\n\n    genCaption(props) {\n      if (this.caption) return [this.$createElement('caption', [this.caption])];\n      return getSlot(this, 'caption', props, true);\n    },\n\n    genColgroup(props) {\n      return this.$createElement('colgroup', this.computedHeaders.map(header => {\n        return this.$createElement('col', {\n          class: {\n            divider: header.divider\n          }\n        });\n      }));\n    },\n\n    genLoading() {\n      const th = this.$createElement('th', {\n        staticClass: 'column',\n        attrs: this.colspanAttrs\n      }, [this.genProgress()]);\n      const tr = this.$createElement('tr', {\n        staticClass: 'v-data-table__progress'\n      }, [th]);\n      return this.$createElement('thead', [tr]);\n    },\n\n    genHeaders(props) {\n      const data = {\n        props: { ...this.sanitizedHeaderProps,\n          headers: this.computedHeaders,\n          options: props.options,\n          mobile: this.isMobile,\n          showGroupBy: this.showGroupBy,\n          checkboxColor: this.checkboxColor,\n          someItems: this.someItems,\n          everyItem: this.everyItem,\n          singleSelect: this.singleSelect,\n          disableSort: this.disableSort\n        },\n        on: {\n          sort: props.sort,\n          group: props.group,\n          'toggle-select-all': this.toggleSelectAll\n        }\n      }; // TODO: rename to 'head'? (thead, tbody, tfoot)\n\n      const children = [getSlot(this, 'header', { ...data,\n        isMobile: this.isMobile\n      })];\n\n      if (!this.hideDefaultHeader) {\n        const scopedSlots = getPrefixedScopedSlots('header.', this.$scopedSlots);\n        children.push(this.$createElement(VDataTableHeader, { ...data,\n          scopedSlots\n        }));\n      }\n\n      if (this.loading) children.push(this.genLoading());\n      return children;\n    },\n\n    genEmptyWrapper(content) {\n      return this.$createElement('tr', {\n        staticClass: 'v-data-table__empty-wrapper'\n      }, [this.$createElement('td', {\n        attrs: this.colspanAttrs\n      }, content)]);\n    },\n\n    genItems(items, props) {\n      const empty = this.genEmpty(props.originalItemsLength, props.pagination.itemsLength);\n      if (empty) return [empty];\n      return props.groupedItems ? this.genGroupedRows(props.groupedItems, props) : this.genRows(items, props);\n    },\n\n    genGroupedRows(groupedItems, props) {\n      return groupedItems.map(group => {\n        if (!this.openCache.hasOwnProperty(group.name)) this.$set(this.openCache, group.name, true);\n\n        if (this.$scopedSlots.group) {\n          return this.$scopedSlots.group({\n            group: group.name,\n            options: props.options,\n            isMobile: this.isMobile,\n            items: group.items,\n            headers: this.computedHeaders\n          });\n        } else {\n          return this.genDefaultGroupedRow(group.name, group.items, props);\n        }\n      });\n    },\n\n    genDefaultGroupedRow(group, items, props) {\n      const isOpen = !!this.openCache[group];\n      const children = [this.$createElement('template', {\n        slot: 'row.content'\n      }, this.genRows(items, props))];\n\n      const toggleFn = () => this.$set(this.openCache, group, !this.openCache[group]);\n\n      const removeFn = () => props.updateOptions({\n        groupBy: [],\n        groupDesc: []\n      });\n\n      if (this.$scopedSlots['group.header']) {\n        children.unshift(this.$createElement('template', {\n          slot: 'column.header'\n        }, [this.$scopedSlots['group.header']({\n          group,\n          groupBy: props.options.groupBy,\n          isMobile: this.isMobile,\n          items,\n          headers: this.computedHeaders,\n          isOpen,\n          toggle: toggleFn,\n          remove: removeFn\n        })]));\n      } else {\n        const toggle = this.$createElement(VBtn, {\n          staticClass: 'ma-0',\n          props: {\n            icon: true,\n            small: true\n          },\n          on: {\n            click: toggleFn\n          }\n        }, [this.$createElement(VIcon, [isOpen ? '$minus' : '$plus'])]);\n        const remove = this.$createElement(VBtn, {\n          staticClass: 'ma-0',\n          props: {\n            icon: true,\n            small: true\n          },\n          on: {\n            click: removeFn\n          }\n        }, [this.$createElement(VIcon, ['$close'])]);\n        const column = this.$createElement('td', {\n          staticClass: 'text-start',\n          attrs: this.colspanAttrs\n        }, [toggle, `${props.options.groupBy[0]}: ${group}`, remove]);\n        children.unshift(this.$createElement('template', {\n          slot: 'column.header'\n        }, [column]));\n      }\n\n      if (this.$scopedSlots['group.summary']) {\n        children.push(this.$createElement('template', {\n          slot: 'column.summary'\n        }, [this.$scopedSlots['group.summary']({\n          group,\n          groupBy: props.options.groupBy,\n          isMobile: this.isMobile,\n          items,\n          headers: this.computedHeaders,\n          isOpen,\n          toggle: toggleFn\n        })]));\n      }\n\n      return this.$createElement(RowGroup, {\n        key: group,\n        props: {\n          value: isOpen\n        }\n      }, children);\n    },\n\n    genRows(items, props) {\n      return this.$scopedSlots.item ? this.genScopedRows(items, props) : this.genDefaultRows(items, props);\n    },\n\n    genScopedRows(items, props) {\n      const rows = [];\n\n      for (let i = 0; i < items.length; i++) {\n        const item = items[i];\n        rows.push(this.$scopedSlots.item({ ...this.createItemProps(item, i),\n          isMobile: this.isMobile\n        }));\n\n        if (this.isExpanded(item)) {\n          rows.push(this.$scopedSlots['expanded-item']({\n            headers: this.computedHeaders,\n            isMobile: this.isMobile,\n            index: i,\n            item\n          }));\n        }\n      }\n\n      return rows;\n    },\n\n    genDefaultRows(items, props) {\n      return this.$scopedSlots['expanded-item'] ? items.map((item, index) => this.genDefaultExpandedRow(item, index)) : items.map((item, index) => this.genDefaultSimpleRow(item, index));\n    },\n\n    genDefaultExpandedRow(item, index) {\n      const isExpanded = this.isExpanded(item);\n      const classes = {\n        'v-data-table__expanded v-data-table__expanded__row': isExpanded\n      };\n      const headerRow = this.genDefaultSimpleRow(item, index, classes);\n      const expandedRow = this.$createElement('tr', {\n        staticClass: 'v-data-table__expanded v-data-table__expanded__content'\n      }, [this.$scopedSlots['expanded-item']({\n        headers: this.computedHeaders,\n        isMobile: this.isMobile,\n        item\n      })]);\n      return this.$createElement(RowGroup, {\n        props: {\n          value: isExpanded\n        }\n      }, [this.$createElement('template', {\n        slot: 'row.header'\n      }, [headerRow]), this.$createElement('template', {\n        slot: 'row.content'\n      }, [expandedRow])]);\n    },\n\n    genDefaultSimpleRow(item, index, classes = {}) {\n      const scopedSlots = getPrefixedScopedSlots('item.', this.$scopedSlots);\n      const data = this.createItemProps(item, index);\n\n      if (this.showSelect) {\n        const slot = scopedSlots['data-table-select'];\n        scopedSlots['data-table-select'] = slot ? () => slot({ ...data,\n          isMobile: this.isMobile\n        }) : () => {\n          var _this$checkboxColor;\n\n          return this.$createElement(VSimpleCheckbox, {\n            staticClass: 'v-data-table__checkbox',\n            props: {\n              value: data.isSelected,\n              disabled: !this.isSelectable(item),\n              color: (_this$checkboxColor = this.checkboxColor) != null ? _this$checkboxColor : ''\n            },\n            on: {\n              input: val => data.select(val)\n            }\n          });\n        };\n      }\n\n      if (this.showExpand) {\n        const slot = scopedSlots['data-table-expand'];\n        scopedSlots['data-table-expand'] = slot ? () => slot(data) : () => this.$createElement(VIcon, {\n          staticClass: 'v-data-table__expand-icon',\n          class: {\n            'v-data-table__expand-icon--active': data.isExpanded\n          },\n          on: {\n            click: e => {\n              e.stopPropagation();\n              data.expand(!data.isExpanded);\n            }\n          }\n        }, [this.expandIcon]);\n      }\n\n      return this.$createElement(this.isMobile ? MobileRow : Row, {\n        key: getObjectValueByPath(item, this.itemKey),\n        class: mergeClasses({ ...classes,\n          'v-data-table__selected': data.isSelected\n        }, getPropertyFromItem(item, this.itemClass)),\n        props: {\n          headers: this.computedHeaders,\n          hideDefaultHeader: this.hideDefaultHeader,\n          index,\n          item,\n          rtl: this.$vuetify.rtl\n        },\n        scopedSlots,\n        on: {\n          // TODO: for click, the first argument should be the event, and the second argument should be data,\n          // but this is a breaking change so it's for v3\n          click: () => this.$emit('click:row', item, data),\n          contextmenu: event => this.$emit('contextmenu:row', event, data),\n          dblclick: event => this.$emit('dblclick:row', event, data)\n        }\n      });\n    },\n\n    genBody(props) {\n      const data = { ...props,\n        expand: this.expand,\n        headers: this.computedHeaders,\n        isExpanded: this.isExpanded,\n        isMobile: this.isMobile,\n        isSelected: this.isSelected,\n        select: this.select\n      };\n\n      if (this.$scopedSlots.body) {\n        return this.$scopedSlots.body(data);\n      }\n\n      return this.$createElement('tbody', [getSlot(this, 'body.prepend', data, true), this.genItems(props.items, props), getSlot(this, 'body.append', data, true)]);\n    },\n\n    genFoot(props) {\n      var _this$$scopedSlots$fo, _this$$scopedSlots;\n\n      return (_this$$scopedSlots$fo = (_this$$scopedSlots = this.$scopedSlots).foot) == null ? void 0 : _this$$scopedSlots$fo.call(_this$$scopedSlots, props);\n    },\n\n    genFooters(props) {\n      const data = {\n        props: {\n          options: props.options,\n          pagination: props.pagination,\n          itemsPerPageText: '$vuetify.dataTable.itemsPerPageText',\n          ...this.sanitizedFooterProps\n        },\n        on: {\n          'update:options': value => props.updateOptions(value)\n        },\n        widths: this.widths,\n        headers: this.computedHeaders\n      };\n      const children = [getSlot(this, 'footer', data, true)];\n\n      if (!this.hideDefaultFooter) {\n        children.push(this.$createElement(VDataFooter, { ...data,\n          scopedSlots: getPrefixedScopedSlots('footer.', this.$scopedSlots)\n        }));\n      }\n\n      return children;\n    },\n\n    genDefaultScopedSlot(props) {\n      const simpleProps = {\n        height: this.height,\n        fixedHeader: this.fixedHeader,\n        dense: this.dense\n      }; // if (this.virtualRows) {\n      //   return this.$createElement(VVirtualTable, {\n      //     props: Object.assign(simpleProps, {\n      //       items: props.items,\n      //       height: this.height,\n      //       rowHeight: this.dense ? 24 : 48,\n      //       headerHeight: this.dense ? 32 : 48,\n      //       // TODO: expose rest of props from virtual table?\n      //     }),\n      //     scopedSlots: {\n      //       items: ({ items }) => this.genItems(items, props) as any,\n      //     },\n      //   }, [\n      //     this.proxySlot('body.before', [this.genCaption(props), this.genHeaders(props)]),\n      //     this.proxySlot('bottom', this.genFooters(props)),\n      //   ])\n      // }\n\n      return this.$createElement(VSimpleTable, {\n        props: simpleProps,\n        class: {\n          'v-data-table--mobile': this.isMobile\n        }\n      }, [this.proxySlot('top', getSlot(this, 'top', { ...props,\n        isMobile: this.isMobile\n      }, true)), this.genCaption(props), this.genColgroup(props), this.genHeaders(props), this.genBody(props), this.genFoot(props), this.proxySlot('bottom', this.genFooters(props))]);\n    },\n\n    proxySlot(slot, content) {\n      return this.$createElement('template', {\n        slot\n      }, content);\n    }\n\n  },\n\n  render() {\n    return this.$createElement(VData, {\n      props: { ...this.$props,\n        customFilter: this.customFilterWithColumns,\n        customSort: this.customSortWithHeaders,\n        itemsPerPage: this.computedItemsPerPage\n      },\n      on: {\n        'update:options': (v, old) => {\n          this.internalGroupBy = v.groupBy || [];\n          !deepEqual(v, old) && this.$emit('update:options', v);\n        },\n        'update:page': v => this.$emit('update:page', v),\n        'update:items-per-page': v => this.$emit('update:items-per-page', v),\n        'update:sort-by': v => this.$emit('update:sort-by', v),\n        'update:sort-desc': v => this.$emit('update:sort-desc', v),\n        'update:group-by': v => this.$emit('update:group-by', v),\n        'update:group-desc': v => this.$emit('update:group-desc', v),\n        pagination: (v, old) => !deepEqual(v, old) && this.$emit('pagination', v),\n        'current-items': v => {\n          this.internalCurrentItems = v;\n          this.$emit('current-items', v);\n        },\n        'page-count': v => this.$emit('page-count', v)\n      },\n      scopedSlots: {\n        default: this.genDefaultScopedSlot\n      }\n    });\n  }\n\n});\n//# sourceMappingURL=VDataTable.js.map","var toString = require('./toString');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g,\n    reHasRegExpChar = RegExp(reRegExpChar.source);\n\n/**\n * Escapes the `RegExp` special characters \"^\", \"$\", \"\\\", \".\", \"*\", \"+\",\n * \"?\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", and \"|\" in `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escapeRegExp('[lodash](https://lodash.com/)');\n * // => '\\[lodash\\]\\(https://lodash\\.com/\\)'\n */\nfunction escapeRegExp(string) {\n  string = toString(string);\n  return (string && reHasRegExpChar.test(string))\n    ? string.replace(reRegExpChar, '\\\\$&')\n    : string;\n}\n\nmodule.exports = escapeRegExp;\n","// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar $keys = require('./_object-keys-internal');\nvar hiddenKeys = require('./_enum-bug-keys').concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n  return $keys(O, hiddenKeys);\n};\n","function inserted(el, binding, vnode) {\n  if (typeof window === 'undefined' || !('IntersectionObserver' in window)) return;\n  const modifiers = binding.modifiers || {};\n  const value = binding.value;\n  const {\n    handler,\n    options\n  } = typeof value === 'object' ? value : {\n    handler: value,\n    options: {}\n  };\n  const observer = new IntersectionObserver((entries = [], observer) => {\n    var _el$_observe;\n\n    const _observe = (_el$_observe = el._observe) == null ? void 0 : _el$_observe[vnode.context._uid];\n\n    if (!_observe) return; // Just in case, should never fire\n\n    const isIntersecting = entries.some(entry => entry.isIntersecting); // If is not quiet or has already been\n    // initted, invoke the user callback\n\n    if (handler && (!modifiers.quiet || _observe.init) && (!modifiers.once || isIntersecting || _observe.init)) {\n      handler(entries, observer, isIntersecting);\n    }\n\n    if (isIntersecting && modifiers.once) unbind(el, binding, vnode);else _observe.init = true;\n  }, options);\n  el._observe = Object(el._observe);\n  el._observe[vnode.context._uid] = {\n    init: false,\n    observer\n  };\n  observer.observe(el);\n}\n\nfunction unbind(el, binding, vnode) {\n  var _el$_observe2;\n\n  const observe = (_el$_observe2 = el._observe) == null ? void 0 : _el$_observe2[vnode.context._uid];\n  if (!observe) return;\n  observe.observer.unobserve(el);\n  delete el._observe[vnode.context._uid];\n}\n\nexport const Intersect = {\n  inserted,\n  unbind\n};\nexport default Intersect;\n//# sourceMappingURL=index.js.map","module.exports = toArray\n\nfunction toArray(list, index) {\n    var array = []\n\n    index = index || 0\n\n    for (var i = index || 0; i < list.length; i++) {\n        array[i - index] = list[i]\n    }\n\n    return array\n}\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n  var e, m\n  var eLen = (nBytes * 8) - mLen - 1\n  var eMax = (1 << eLen) - 1\n  var eBias = eMax >> 1\n  var nBits = -7\n  var i = isLE ? (nBytes - 1) : 0\n  var d = isLE ? -1 : 1\n  var s = buffer[offset + i]\n\n  i += d\n\n  e = s & ((1 << (-nBits)) - 1)\n  s >>= (-nBits)\n  nBits += eLen\n  for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n  m = e & ((1 << (-nBits)) - 1)\n  e >>= (-nBits)\n  nBits += mLen\n  for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n  if (e === 0) {\n    e = 1 - eBias\n  } else if (e === eMax) {\n    return m ? NaN : ((s ? -1 : 1) * Infinity)\n  } else {\n    m = m + Math.pow(2, mLen)\n    e = e - eBias\n  }\n  return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n  var e, m, c\n  var eLen = (nBytes * 8) - mLen - 1\n  var eMax = (1 << eLen) - 1\n  var eBias = eMax >> 1\n  var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n  var i = isLE ? 0 : (nBytes - 1)\n  var d = isLE ? 1 : -1\n  var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n  value = Math.abs(value)\n\n  if (isNaN(value) || value === Infinity) {\n    m = isNaN(value) ? 1 : 0\n    e = eMax\n  } else {\n    e = Math.floor(Math.log(value) / Math.LN2)\n    if (value * (c = Math.pow(2, -e)) < 1) {\n      e--\n      c *= 2\n    }\n    if (e + eBias >= 1) {\n      value += rt / c\n    } else {\n      value += rt * Math.pow(2, 1 - eBias)\n    }\n    if (value * c >= 2) {\n      e++\n      c /= 2\n    }\n\n    if (e + eBias >= eMax) {\n      m = 0\n      e = eMax\n    } else if (e + eBias >= 1) {\n      m = ((value * c) - 1) * Math.pow(2, mLen)\n      e = e + eBias\n    } else {\n      m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n      e = 0\n    }\n  }\n\n  for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n  e = (e << mLen) | m\n  eLen += mLen\n  for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n  buffer[offset + i - d] |= s * 128\n}\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","import {\n\tEventDispatcher,\n\tMOUSE,\n\tQuaternion,\n\tVector2,\n\tVector3\n} from \"../../../build/three.module.js\";\n\nvar TrackballControls = function ( object, domElement ) {\n\n\tif ( domElement === undefined ) console.warn( 'THREE.TrackballControls: The second parameter \"domElement\" is now mandatory.' );\n\tif ( domElement === document ) console.error( 'THREE.TrackballControls: \"document\" should not be used as the target \"domElement\". Please use \"renderer.domElement\" instead.' );\n\n\tvar scope = this;\n\tvar STATE = { NONE: - 1, ROTATE: 0, ZOOM: 1, PAN: 2, TOUCH_ROTATE: 3, TOUCH_ZOOM_PAN: 4 };\n\n\tthis.object = object;\n\tthis.domElement = domElement;\n\n\t// API\n\n\tthis.enabled = true;\n\n\tthis.screen = { left: 0, top: 0, width: 0, height: 0 };\n\n\tthis.rotateSpeed = 1.0;\n\tthis.zoomSpeed = 1.2;\n\tthis.panSpeed = 0.3;\n\n\tthis.noRotate = false;\n\tthis.noZoom = false;\n\tthis.noPan = false;\n\n\tthis.staticMoving = false;\n\tthis.dynamicDampingFactor = 0.2;\n\n\tthis.minDistance = 0;\n\tthis.maxDistance = Infinity;\n\n\tthis.keys = [ 65 /*A*/, 83 /*S*/, 68 /*D*/ ];\n\n\tthis.mouseButtons = { LEFT: MOUSE.ROTATE, MIDDLE: MOUSE.ZOOM, RIGHT: MOUSE.PAN };\n\n\t// internals\n\n\tthis.target = new Vector3();\n\n\tvar EPS = 0.000001;\n\n\tvar lastPosition = new Vector3();\n\tvar lastZoom = 1;\n\n\tvar _state = STATE.NONE,\n\t\t_keyState = STATE.NONE,\n\n\t\t_eye = new Vector3(),\n\n\t\t_movePrev = new Vector2(),\n\t\t_moveCurr = new Vector2(),\n\n\t\t_lastAxis = new Vector3(),\n\t\t_lastAngle = 0,\n\n\t\t_zoomStart = new Vector2(),\n\t\t_zoomEnd = new Vector2(),\n\n\t\t_touchZoomDistanceStart = 0,\n\t\t_touchZoomDistanceEnd = 0,\n\n\t\t_panStart = new Vector2(),\n\t\t_panEnd = new Vector2();\n\n\t// for reset\n\n\tthis.target0 = this.target.clone();\n\tthis.position0 = this.object.position.clone();\n\tthis.up0 = this.object.up.clone();\n\tthis.zoom0 = this.object.zoom;\n\n\t// events\n\n\tvar changeEvent = { type: 'change' };\n\tvar startEvent = { type: 'start' };\n\tvar endEvent = { type: 'end' };\n\n\n\t// methods\n\n\tthis.handleResize = function () {\n\n\t\tvar box = scope.domElement.getBoundingClientRect();\n\t\t// adjustments come from similar code in the jquery offset() function\n\t\tvar d = scope.domElement.ownerDocument.documentElement;\n\t\tscope.screen.left = box.left + window.pageXOffset - d.clientLeft;\n\t\tscope.screen.top = box.top + window.pageYOffset - d.clientTop;\n\t\tscope.screen.width = box.width;\n\t\tscope.screen.height = box.height;\n\n\t};\n\n\tvar getMouseOnScreen = ( function () {\n\n\t\tvar vector = new Vector2();\n\n\t\treturn function getMouseOnScreen( pageX, pageY ) {\n\n\t\t\tvector.set(\n\t\t\t\t( pageX - scope.screen.left ) / scope.screen.width,\n\t\t\t\t( pageY - scope.screen.top ) / scope.screen.height\n\t\t\t);\n\n\t\t\treturn vector;\n\n\t\t};\n\n\t}() );\n\n\tvar getMouseOnCircle = ( function () {\n\n\t\tvar vector = new Vector2();\n\n\t\treturn function getMouseOnCircle( pageX, pageY ) {\n\n\t\t\tvector.set(\n\t\t\t\t( ( pageX - scope.screen.width * 0.5 - scope.screen.left ) / ( scope.screen.width * 0.5 ) ),\n\t\t\t\t( ( scope.screen.height + 2 * ( scope.screen.top - pageY ) ) / scope.screen.width ) // screen.width intentional\n\t\t\t);\n\n\t\t\treturn vector;\n\n\t\t};\n\n\t}() );\n\n\tthis.rotateCamera = ( function () {\n\n\t\tvar axis = new Vector3(),\n\t\t\tquaternion = new Quaternion(),\n\t\t\teyeDirection = new Vector3(),\n\t\t\tobjectUpDirection = new Vector3(),\n\t\t\tobjectSidewaysDirection = new Vector3(),\n\t\t\tmoveDirection = new Vector3(),\n\t\t\tangle;\n\n\t\treturn function rotateCamera() {\n\n\t\t\tmoveDirection.set( _moveCurr.x - _movePrev.x, _moveCurr.y - _movePrev.y, 0 );\n\t\t\tangle = moveDirection.length();\n\n\t\t\tif ( angle ) {\n\n\t\t\t\t_eye.copy( scope.object.position ).sub( scope.target );\n\n\t\t\t\teyeDirection.copy( _eye ).normalize();\n\t\t\t\tobjectUpDirection.copy( scope.object.up ).normalize();\n\t\t\t\tobjectSidewaysDirection.crossVectors( objectUpDirection, eyeDirection ).normalize();\n\n\t\t\t\tobjectUpDirection.setLength( _moveCurr.y - _movePrev.y );\n\t\t\t\tobjectSidewaysDirection.setLength( _moveCurr.x - _movePrev.x );\n\n\t\t\t\tmoveDirection.copy( objectUpDirection.add( objectSidewaysDirection ) );\n\n\t\t\t\taxis.crossVectors( moveDirection, _eye ).normalize();\n\n\t\t\t\tangle *= scope.rotateSpeed;\n\t\t\t\tquaternion.setFromAxisAngle( axis, angle );\n\n\t\t\t\t_eye.applyQuaternion( quaternion );\n\t\t\t\tscope.object.up.applyQuaternion( quaternion );\n\n\t\t\t\t_lastAxis.copy( axis );\n\t\t\t\t_lastAngle = angle;\n\n\t\t\t} else if ( ! scope.staticMoving && _lastAngle ) {\n\n\t\t\t\t_lastAngle *= Math.sqrt( 1.0 - scope.dynamicDampingFactor );\n\t\t\t\t_eye.copy( scope.object.position ).sub( scope.target );\n\t\t\t\tquaternion.setFromAxisAngle( _lastAxis, _lastAngle );\n\t\t\t\t_eye.applyQuaternion( quaternion );\n\t\t\t\tscope.object.up.applyQuaternion( quaternion );\n\n\t\t\t}\n\n\t\t\t_movePrev.copy( _moveCurr );\n\n\t\t};\n\n\t}() );\n\n\n\tthis.zoomCamera = function () {\n\n\t\tvar factor;\n\n\t\tif ( _state === STATE.TOUCH_ZOOM_PAN ) {\n\n\t\t\tfactor = _touchZoomDistanceStart / _touchZoomDistanceEnd;\n\t\t\t_touchZoomDistanceStart = _touchZoomDistanceEnd;\n\n\t\t\tif ( scope.object.isPerspectiveCamera ) {\n\n\t\t\t\t_eye.multiplyScalar( factor );\n\n\t\t\t} else if ( scope.object.isOrthographicCamera ) {\n\n\t\t\t\tscope.object.zoom *= factor;\n\t\t\t\tscope.object.updateProjectionMatrix();\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'THREE.TrackballControls: Unsupported camera type' );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tfactor = 1.0 + ( _zoomEnd.y - _zoomStart.y ) * scope.zoomSpeed;\n\n\t\t\tif ( factor !== 1.0 && factor > 0.0 ) {\n\n\t\t\t\tif ( scope.object.isPerspectiveCamera ) {\n\n\t\t\t\t\t_eye.multiplyScalar( factor );\n\n\t\t\t\t} else if ( scope.object.isOrthographicCamera ) {\n\n\t\t\t\t\tscope.object.zoom /= factor;\n\t\t\t\t\tscope.object.updateProjectionMatrix();\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.TrackballControls: Unsupported camera type' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( scope.staticMoving ) {\n\n\t\t\t\t_zoomStart.copy( _zoomEnd );\n\n\t\t\t} else {\n\n\t\t\t\t_zoomStart.y += ( _zoomEnd.y - _zoomStart.y ) * this.dynamicDampingFactor;\n\n\t\t\t}\n\n\t\t}\n\n\t};\n\n\tthis.panCamera = ( function () {\n\n\t\tvar mouseChange = new Vector2(),\n\t\t\tobjectUp = new Vector3(),\n\t\t\tpan = new Vector3();\n\n\t\treturn function panCamera() {\n\n\t\t\tmouseChange.copy( _panEnd ).sub( _panStart );\n\n\t\t\tif ( mouseChange.lengthSq() ) {\n\n\t\t\t\tif ( scope.object.isOrthographicCamera ) {\n\n\t\t\t\t\tvar scale_x = ( scope.object.right - scope.object.left ) / scope.object.zoom / scope.domElement.clientWidth;\n\t\t\t\t\tvar scale_y = ( scope.object.top - scope.object.bottom ) / scope.object.zoom / scope.domElement.clientWidth;\n\n\t\t\t\t\tmouseChange.x *= scale_x;\n\t\t\t\t\tmouseChange.y *= scale_y;\n\n\t\t\t\t}\n\n\t\t\t\tmouseChange.multiplyScalar( _eye.length() * scope.panSpeed );\n\n\t\t\t\tpan.copy( _eye ).cross( scope.object.up ).setLength( mouseChange.x );\n\t\t\t\tpan.add( objectUp.copy( scope.object.up ).setLength( mouseChange.y ) );\n\n\t\t\t\tscope.object.position.add( pan );\n\t\t\t\tscope.target.add( pan );\n\n\t\t\t\tif ( scope.staticMoving ) {\n\n\t\t\t\t\t_panStart.copy( _panEnd );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t_panStart.add( mouseChange.subVectors( _panEnd, _panStart ).multiplyScalar( scope.dynamicDampingFactor ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t}() );\n\n\tthis.checkDistances = function () {\n\n\t\tif ( ! scope.noZoom || ! scope.noPan ) {\n\n\t\t\tif ( _eye.lengthSq() > scope.maxDistance * scope.maxDistance ) {\n\n\t\t\t\tscope.object.position.addVectors( scope.target, _eye.setLength( scope.maxDistance ) );\n\t\t\t\t_zoomStart.copy( _zoomEnd );\n\n\t\t\t}\n\n\t\t\tif ( _eye.lengthSq() < scope.minDistance * scope.minDistance ) {\n\n\t\t\t\tscope.object.position.addVectors( scope.target, _eye.setLength( scope.minDistance ) );\n\t\t\t\t_zoomStart.copy( _zoomEnd );\n\n\t\t\t}\n\n\t\t}\n\n\t};\n\n\tthis.update = function () {\n\n\t\t_eye.subVectors( scope.object.position, scope.target );\n\n\t\tif ( ! scope.noRotate ) {\n\n\t\t\tscope.rotateCamera();\n\n\t\t}\n\n\t\tif ( ! scope.noZoom ) {\n\n\t\t\tscope.zoomCamera();\n\n\t\t}\n\n\t\tif ( ! scope.noPan ) {\n\n\t\t\tscope.panCamera();\n\n\t\t}\n\n\t\tscope.object.position.addVectors( scope.target, _eye );\n\n\t\tif ( scope.object.isPerspectiveCamera ) {\n\n\t\t\tscope.checkDistances();\n\n\t\t\tscope.object.lookAt( scope.target );\n\n\t\t\tif ( lastPosition.distanceToSquared( scope.object.position ) > EPS ) {\n\n\t\t\t\tscope.dispatchEvent( changeEvent );\n\n\t\t\t\tlastPosition.copy( scope.object.position );\n\n\t\t\t}\n\n\t\t} else if ( scope.object.isOrthographicCamera ) {\n\n\t\t\tscope.object.lookAt( scope.target );\n\n\t\t\tif ( lastPosition.distanceToSquared( scope.object.position ) > EPS || lastZoom !== scope.object.zoom ) {\n\n\t\t\t\tscope.dispatchEvent( changeEvent );\n\n\t\t\t\tlastPosition.copy( scope.object.position );\n\t\t\t\tlastZoom = scope.object.zoom;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.TrackballControls: Unsupported camera type' );\n\n\t\t}\n\n\t};\n\n\tthis.reset = function () {\n\n\t\t_state = STATE.NONE;\n\t\t_keyState = STATE.NONE;\n\n\t\tscope.target.copy( scope.target0 );\n\t\tscope.object.position.copy( scope.position0 );\n\t\tscope.object.up.copy( scope.up0 );\n\t\tscope.object.zoom = scope.zoom0;\n\n\t\tscope.object.updateProjectionMatrix();\n\n\t\t_eye.subVectors( scope.object.position, scope.target );\n\n\t\tscope.object.lookAt( scope.target );\n\n\t\tscope.dispatchEvent( changeEvent );\n\n\t\tlastPosition.copy( scope.object.position );\n\t\tlastZoom = scope.object.zoom;\n\n\t};\n\n\t// listeners\n\n\tfunction onPointerDown( event ) {\n\n\t\tif ( scope.enabled === false ) return;\n\n\t\tswitch ( event.pointerType ) {\n\n\t\t\tcase 'mouse':\n\t\t\t\tonMouseDown( event );\n\t\t\t\tbreak;\n\n\t\t\t// TODO touch\n\n\t\t}\n\n\t}\n\n\tfunction onPointerMove( event ) {\n\n\t\tif ( scope.enabled === false ) return;\n\n\t\tswitch ( event.pointerType ) {\n\n\t\t\tcase 'mouse':\n\t\t\t\tonMouseMove( event );\n\t\t\t\tbreak;\n\n\t\t\t// TODO touch\n\n\t\t}\n\n\t}\n\n\tfunction onPointerUp( event ) {\n\n\t\tif ( scope.enabled === false ) return;\n\n\t\tswitch ( event.pointerType ) {\n\n\t\t\tcase 'mouse':\n\t\t\t\tonMouseUp( event );\n\t\t\t\tbreak;\n\n\t\t\t// TODO touch\n\n\t\t}\n\n\t}\n\n\tfunction keydown( event ) {\n\n\t\tif ( scope.enabled === false ) return;\n\n\t\twindow.removeEventListener( 'keydown', keydown );\n\n\t\tif ( _keyState !== STATE.NONE ) {\n\n\t\t\treturn;\n\n\t\t} else if ( event.keyCode === scope.keys[ STATE.ROTATE ] && ! scope.noRotate ) {\n\n\t\t\t_keyState = STATE.ROTATE;\n\n\t\t} else if ( event.keyCode === scope.keys[ STATE.ZOOM ] && ! scope.noZoom ) {\n\n\t\t\t_keyState = STATE.ZOOM;\n\n\t\t} else if ( event.keyCode === scope.keys[ STATE.PAN ] && ! scope.noPan ) {\n\n\t\t\t_keyState = STATE.PAN;\n\n\t\t}\n\n\t}\n\n\tfunction keyup() {\n\n\t\tif ( scope.enabled === false ) return;\n\n\t\t_keyState = STATE.NONE;\n\n\t\twindow.addEventListener( 'keydown', keydown, false );\n\n\t}\n\n\tfunction onMouseDown( event ) {\n\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\n\t\tif ( _state === STATE.NONE ) {\n\n\t\t\tswitch ( event.button ) {\n\n\t\t\t\tcase scope.mouseButtons.LEFT:\n\t\t\t\t\t_state = STATE.ROTATE;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase scope.mouseButtons.MIDDLE:\n\t\t\t\t\t_state = STATE.ZOOM;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase scope.mouseButtons.RIGHT:\n\t\t\t\t\t_state = STATE.PAN;\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\t_state = STATE.NONE;\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar state = ( _keyState !== STATE.NONE ) ? _keyState : _state;\n\n\t\tif ( state === STATE.ROTATE && ! scope.noRotate ) {\n\n\t\t\t_moveCurr.copy( getMouseOnCircle( event.pageX, event.pageY ) );\n\t\t\t_movePrev.copy( _moveCurr );\n\n\t\t} else if ( state === STATE.ZOOM && ! scope.noZoom ) {\n\n\t\t\t_zoomStart.copy( getMouseOnScreen( event.pageX, event.pageY ) );\n\t\t\t_zoomEnd.copy( _zoomStart );\n\n\t\t} else if ( state === STATE.PAN && ! scope.noPan ) {\n\n\t\t\t_panStart.copy( getMouseOnScreen( event.pageX, event.pageY ) );\n\t\t\t_panEnd.copy( _panStart );\n\n\t\t}\n\n\t\tscope.domElement.ownerDocument.addEventListener( 'pointermove', onPointerMove, false );\n\t\tscope.domElement.ownerDocument.addEventListener( 'pointerup', onPointerUp, false );\n\n\t\tscope.dispatchEvent( startEvent );\n\n\t}\n\n\tfunction onMouseMove( event ) {\n\n\t\tif ( scope.enabled === false ) return;\n\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\n\t\tvar state = ( _keyState !== STATE.NONE ) ? _keyState : _state;\n\n\t\tif ( state === STATE.ROTATE && ! scope.noRotate ) {\n\n\t\t\t_movePrev.copy( _moveCurr );\n\t\t\t_moveCurr.copy( getMouseOnCircle( event.pageX, event.pageY ) );\n\n\t\t} else if ( state === STATE.ZOOM && ! scope.noZoom ) {\n\n\t\t\t_zoomEnd.copy( getMouseOnScreen( event.pageX, event.pageY ) );\n\n\t\t} else if ( state === STATE.PAN && ! scope.noPan ) {\n\n\t\t\t_panEnd.copy( getMouseOnScreen( event.pageX, event.pageY ) );\n\n\t\t}\n\n\t}\n\n\tfunction onMouseUp( event ) {\n\n\t\tif ( scope.enabled === false ) return;\n\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\n\t\t_state = STATE.NONE;\n\n\t\tscope.domElement.ownerDocument.removeEventListener( 'pointermove', onPointerMove );\n\t\tscope.domElement.ownerDocument.removeEventListener( 'pointerup', onPointerUp );\n\n\t\tscope.dispatchEvent( endEvent );\n\n\t}\n\n\tfunction mousewheel( event ) {\n\n\t\tif ( scope.enabled === false ) return;\n\n\t\tif ( scope.noZoom === true ) return;\n\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\n\t\tswitch ( event.deltaMode ) {\n\n\t\t\tcase 2:\n\t\t\t\t// Zoom in pages\n\t\t\t\t_zoomStart.y -= event.deltaY * 0.025;\n\t\t\t\tbreak;\n\n\t\t\tcase 1:\n\t\t\t\t// Zoom in lines\n\t\t\t\t_zoomStart.y -= event.deltaY * 0.01;\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\t// undefined, 0, assume pixels\n\t\t\t\t_zoomStart.y -= event.deltaY * 0.00025;\n\t\t\t\tbreak;\n\n\t\t}\n\n\t\tscope.dispatchEvent( startEvent );\n\t\tscope.dispatchEvent( endEvent );\n\n\t}\n\n\tfunction touchstart( event ) {\n\n\t\tif ( scope.enabled === false ) return;\n\n\t\tevent.preventDefault();\n\n\t\tswitch ( event.touches.length ) {\n\n\t\t\tcase 1:\n\t\t\t\t_state = STATE.TOUCH_ROTATE;\n\t\t\t\t_moveCurr.copy( getMouseOnCircle( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY ) );\n\t\t\t\t_movePrev.copy( _moveCurr );\n\t\t\t\tbreak;\n\n\t\t\tdefault: // 2 or more\n\t\t\t\t_state = STATE.TOUCH_ZOOM_PAN;\n\t\t\t\tvar dx = event.touches[ 0 ].pageX - event.touches[ 1 ].pageX;\n\t\t\t\tvar dy = event.touches[ 0 ].pageY - event.touches[ 1 ].pageY;\n\t\t\t\t_touchZoomDistanceEnd = _touchZoomDistanceStart = Math.sqrt( dx * dx + dy * dy );\n\n\t\t\t\tvar x = ( event.touches[ 0 ].pageX + event.touches[ 1 ].pageX ) / 2;\n\t\t\t\tvar y = ( event.touches[ 0 ].pageY + event.touches[ 1 ].pageY ) / 2;\n\t\t\t\t_panStart.copy( getMouseOnScreen( x, y ) );\n\t\t\t\t_panEnd.copy( _panStart );\n\t\t\t\tbreak;\n\n\t\t}\n\n\t\tscope.dispatchEvent( startEvent );\n\n\t}\n\n\tfunction touchmove( event ) {\n\n\t\tif ( scope.enabled === false ) return;\n\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\n\t\tswitch ( event.touches.length ) {\n\n\t\t\tcase 1:\n\t\t\t\t_movePrev.copy( _moveCurr );\n\t\t\t\t_moveCurr.copy( getMouseOnCircle( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY ) );\n\t\t\t\tbreak;\n\n\t\t\tdefault: // 2 or more\n\t\t\t\tvar dx = event.touches[ 0 ].pageX - event.touches[ 1 ].pageX;\n\t\t\t\tvar dy = event.touches[ 0 ].pageY - event.touches[ 1 ].pageY;\n\t\t\t\t_touchZoomDistanceEnd = Math.sqrt( dx * dx + dy * dy );\n\n\t\t\t\tvar x = ( event.touches[ 0 ].pageX + event.touches[ 1 ].pageX ) / 2;\n\t\t\t\tvar y = ( event.touches[ 0 ].pageY + event.touches[ 1 ].pageY ) / 2;\n\t\t\t\t_panEnd.copy( getMouseOnScreen( x, y ) );\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\tfunction touchend( event ) {\n\n\t\tif ( scope.enabled === false ) return;\n\n\t\tswitch ( event.touches.length ) {\n\n\t\t\tcase 0:\n\t\t\t\t_state = STATE.NONE;\n\t\t\t\tbreak;\n\n\t\t\tcase 1:\n\t\t\t\t_state = STATE.TOUCH_ROTATE;\n\t\t\t\t_moveCurr.copy( getMouseOnCircle( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY ) );\n\t\t\t\t_movePrev.copy( _moveCurr );\n\t\t\t\tbreak;\n\n\t\t}\n\n\t\tscope.dispatchEvent( endEvent );\n\n\t}\n\n\tfunction contextmenu( event ) {\n\n\t\tif ( scope.enabled === false ) return;\n\n\t\tevent.preventDefault();\n\n\t}\n\n\tthis.dispose = function () {\n\n\t\tscope.domElement.removeEventListener( 'contextmenu', contextmenu, false );\n\n\t\tscope.domElement.removeEventListener( 'pointerdown', onPointerDown, false );\n\t\tscope.domElement.removeEventListener( 'wheel', mousewheel, false );\n\n\t\tscope.domElement.removeEventListener( 'touchstart', touchstart, false );\n\t\tscope.domElement.removeEventListener( 'touchend', touchend, false );\n\t\tscope.domElement.removeEventListener( 'touchmove', touchmove, false );\n\n\t\tscope.domElement.ownerDocument.removeEventListener( 'pointermove', onPointerMove, false );\n\t\tscope.domElement.ownerDocument.removeEventListener( 'pointerup', onPointerUp, false );\n\n\t\twindow.removeEventListener( 'keydown', keydown, false );\n\t\twindow.removeEventListener( 'keyup', keyup, false );\n\n\t};\n\n\tthis.domElement.addEventListener( 'contextmenu', contextmenu, false );\n\n\tthis.domElement.addEventListener( 'pointerdown', onPointerDown, false );\n\tthis.domElement.addEventListener( 'wheel', mousewheel, false );\n\n\tthis.domElement.addEventListener( 'touchstart', touchstart, false );\n\tthis.domElement.addEventListener( 'touchend', touchend, false );\n\tthis.domElement.addEventListener( 'touchmove', touchmove, false );\n\n\tthis.domElement.ownerDocument.addEventListener( 'pointermove', onPointerMove, false );\n\tthis.domElement.ownerDocument.addEventListener( 'pointerup', onPointerUp, false );\n\n\twindow.addEventListener( 'keydown', keydown, false );\n\twindow.addEventListener( 'keyup', keyup, false );\n\n\tthis.handleResize();\n\n\t// force an update at start\n\tthis.update();\n\n};\n\nTrackballControls.prototype = Object.create( EventDispatcher.prototype );\nTrackballControls.prototype.constructor = TrackballControls;\n\nexport { TrackballControls };\n","const getSymbolSize = require('./utils').getSymbolSize\nconst FINDER_PATTERN_SIZE = 7\n\n/**\n * Returns an array containing the positions of each finder pattern.\n * Each array's element represent the top-left point of the pattern as (x, y) coordinates\n *\n * @param  {Number} version QR Code version\n * @return {Array}          Array of coordinates\n */\nexports.getPositions = function getPositions (version) {\n  const size = getSymbolSize(version)\n\n  return [\n    // top-left\n    [0, 0],\n    // top-right\n    [size - FINDER_PATTERN_SIZE, 0],\n    // bottom-left\n    [0, size - FINDER_PATTERN_SIZE]\n  ]\n}\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n  var result = getMapData(this, key)['delete'](key);\n  this.size -= result ? 1 : 0;\n  return result;\n}\n\nmodule.exports = mapCacheDelete;\n","\nmodule.exports = require('./socket');\n\n/**\n * Exports parser\n *\n * @api public\n *\n */\nmodule.exports.parser = require('engine.io-parser');\n","var isArrayLike = require('./isArrayLike');\n\n/**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseEach(eachFunc, fromRight) {\n  return function(collection, iteratee) {\n    if (collection == null) {\n      return collection;\n    }\n    if (!isArrayLike(collection)) {\n      return eachFunc(collection, iteratee);\n    }\n    var length = collection.length,\n        index = fromRight ? length : -1,\n        iterable = Object(collection);\n\n    while ((fromRight ? index-- : ++index < length)) {\n      if (iteratee(iterable[index], index, iterable) === false) {\n        break;\n      }\n    }\n    return collection;\n  };\n}\n\nmodule.exports = createBaseEach;\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","const Utils = require('./utils')\n\nconst G15 = (1 << 10) | (1 << 8) | (1 << 5) | (1 << 4) | (1 << 2) | (1 << 1) | (1 << 0)\nconst G15_MASK = (1 << 14) | (1 << 12) | (1 << 10) | (1 << 4) | (1 << 1)\nconst G15_BCH = Utils.getBCHDigit(G15)\n\n/**\n * Returns format information with relative error correction bits\n *\n * The format information is a 15-bit sequence containing 5 data bits,\n * with 10 error correction bits calculated using the (15, 5) BCH code.\n *\n * @param  {Number} errorCorrectionLevel Error correction level\n * @param  {Number} mask                 Mask pattern\n * @return {Number}                      Encoded format information bits\n */\nexports.getEncodedBits = function getEncodedBits (errorCorrectionLevel, mask) {\n  const data = ((errorCorrectionLevel.bit << 3) | mask)\n  let d = data << 10\n\n  while (Utils.getBCHDigit(d) - G15_BCH >= 0) {\n    d ^= (G15 << (Utils.getBCHDigit(d) - G15_BCH))\n  }\n\n  // xor final data with mask pattern in order to ensure that\n  // no combination of Error Correction Level and data mask pattern\n  // will result in an all-zero data string\n  return ((data << 10) | d) ^ G15_MASK\n}\n","\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = createDebug.debug = createDebug['default'] = createDebug;\nexports.coerce = coerce;\nexports.disable = disable;\nexports.enable = enable;\nexports.enabled = enabled;\nexports.humanize = require('ms');\n\n/**\n * Active `debug` instances.\n */\nexports.instances = [];\n\n/**\n * The currently active debug mode names, and names to skip.\n */\n\nexports.names = [];\nexports.skips = [];\n\n/**\n * Map of special \"%n\" handling functions, for the debug \"format\" argument.\n *\n * Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n */\n\nexports.formatters = {};\n\n/**\n * Select a color.\n * @param {String} namespace\n * @return {Number}\n * @api private\n */\n\nfunction selectColor(namespace) {\n  var hash = 0, i;\n\n  for (i in namespace) {\n    hash  = ((hash << 5) - hash) + namespace.charCodeAt(i);\n    hash |= 0; // Convert to 32bit integer\n  }\n\n  return exports.colors[Math.abs(hash) % exports.colors.length];\n}\n\n/**\n * Create a debugger with the given `namespace`.\n *\n * @param {String} namespace\n * @return {Function}\n * @api public\n */\n\nfunction createDebug(namespace) {\n\n  var prevTime;\n\n  function debug() {\n    // disabled?\n    if (!debug.enabled) return;\n\n    var self = debug;\n\n    // set `diff` timestamp\n    var curr = +new Date();\n    var ms = curr - (prevTime || curr);\n    self.diff = ms;\n    self.prev = prevTime;\n    self.curr = curr;\n    prevTime = curr;\n\n    // turn the `arguments` into a proper Array\n    var args = new Array(arguments.length);\n    for (var i = 0; i < args.length; i++) {\n      args[i] = arguments[i];\n    }\n\n    args[0] = exports.coerce(args[0]);\n\n    if ('string' !== typeof args[0]) {\n      // anything else let's inspect with %O\n      args.unshift('%O');\n    }\n\n    // apply any `formatters` transformations\n    var index = 0;\n    args[0] = args[0].replace(/%([a-zA-Z%])/g, function(match, format) {\n      // if we encounter an escaped % then don't increase the array index\n      if (match === '%%') return match;\n      index++;\n      var formatter = exports.formatters[format];\n      if ('function' === typeof formatter) {\n        var val = args[index];\n        match = formatter.call(self, val);\n\n        // now we need to remove `args[index]` since it's inlined in the `format`\n        args.splice(index, 1);\n        index--;\n      }\n      return match;\n    });\n\n    // apply env-specific formatting (colors, etc.)\n    exports.formatArgs.call(self, args);\n\n    var logFn = debug.log || exports.log || console.log.bind(console);\n    logFn.apply(self, args);\n  }\n\n  debug.namespace = namespace;\n  debug.enabled = exports.enabled(namespace);\n  debug.useColors = exports.useColors();\n  debug.color = selectColor(namespace);\n  debug.destroy = destroy;\n\n  // env-specific initialization logic for debug instances\n  if ('function' === typeof exports.init) {\n    exports.init(debug);\n  }\n\n  exports.instances.push(debug);\n\n  return debug;\n}\n\nfunction destroy () {\n  var index = exports.instances.indexOf(this);\n  if (index !== -1) {\n    exports.instances.splice(index, 1);\n    return true;\n  } else {\n    return false;\n  }\n}\n\n/**\n * Enables a debug mode by namespaces. This can include modes\n * separated by a colon and wildcards.\n *\n * @param {String} namespaces\n * @api public\n */\n\nfunction enable(namespaces) {\n  exports.save(namespaces);\n\n  exports.names = [];\n  exports.skips = [];\n\n  var i;\n  var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n  var len = split.length;\n\n  for (i = 0; i < len; i++) {\n    if (!split[i]) continue; // ignore empty strings\n    namespaces = split[i].replace(/\\*/g, '.*?');\n    if (namespaces[0] === '-') {\n      exports.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));\n    } else {\n      exports.names.push(new RegExp('^' + namespaces + '$'));\n    }\n  }\n\n  for (i = 0; i < exports.instances.length; i++) {\n    var instance = exports.instances[i];\n    instance.enabled = exports.enabled(instance.namespace);\n  }\n}\n\n/**\n * Disable debug output.\n *\n * @api public\n */\n\nfunction disable() {\n  exports.enable('');\n}\n\n/**\n * Returns true if the given mode name is enabled, false otherwise.\n *\n * @param {String} name\n * @return {Boolean}\n * @api public\n */\n\nfunction enabled(name) {\n  if (name[name.length - 1] === '*') {\n    return true;\n  }\n  var i, len;\n  for (i = 0, len = exports.skips.length; i < len; i++) {\n    if (exports.skips[i].test(name)) {\n      return false;\n    }\n  }\n  for (i = 0, len = exports.names.length; i < len; i++) {\n    if (exports.names[i].test(name)) {\n      return true;\n    }\n  }\n  return false;\n}\n\n/**\n * Coerce `val`.\n *\n * @param {Mixed} val\n * @return {Mixed}\n * @api private\n */\n\nfunction coerce(val) {\n  if (val instanceof Error) return val.stack || val.message;\n  return val;\n}\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 Stack = require('./_Stack'),\n    baseIsEqual = require('./_baseIsEqual');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n    COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n  var index = matchData.length,\n      length = index,\n      noCustomizer = !customizer;\n\n  if (object == null) {\n    return !length;\n  }\n  object = Object(object);\n  while (index--) {\n    var data = matchData[index];\n    if ((noCustomizer && data[2])\n          ? data[1] !== object[data[0]]\n          : !(data[0] in object)\n        ) {\n      return false;\n    }\n  }\n  while (++index < length) {\n    data = matchData[index];\n    var key = data[0],\n        objValue = object[key],\n        srcValue = data[1];\n\n    if (noCustomizer && data[2]) {\n      if (objValue === undefined && !(key in object)) {\n        return false;\n      }\n    } else {\n      var stack = new Stack;\n      if (customizer) {\n        var result = customizer(objValue, srcValue, key, object, source, stack);\n      }\n      if (!(result === undefined\n            ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n            : result\n          )) {\n        return false;\n      }\n    }\n  }\n  return true;\n}\n\nmodule.exports = baseIsMatch;\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n  \"use strict\";\n\n  var Op = Object.prototype;\n  var hasOwn = Op.hasOwnProperty;\n  var undefined; // More compressible than void 0.\n  var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n  var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n  var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n  var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n  function define(obj, key, value) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n    return obj[key];\n  }\n  try {\n    // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n    define({}, \"\");\n  } catch (err) {\n    define = function(obj, key, value) {\n      return obj[key] = value;\n    };\n  }\n\n  function wrap(innerFn, outerFn, self, tryLocsList) {\n    // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n    var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n    var generator = Object.create(protoGenerator.prototype);\n    var context = new Context(tryLocsList || []);\n\n    // The ._invoke method unifies the implementations of the .next,\n    // .throw, and .return methods.\n    generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n    return generator;\n  }\n  exports.wrap = wrap;\n\n  // Try/catch helper to minimize deoptimizations. Returns a completion\n  // record like context.tryEntries[i].completion. This interface could\n  // have been (and was previously) designed to take a closure to be\n  // invoked without arguments, but in all the cases we care about we\n  // already have an existing method we want to call, so there's no need\n  // to create a new function object. We can even get away with assuming\n  // the method takes exactly one argument, since that happens to be true\n  // in every case, so we don't have to touch the arguments object. The\n  // only additional allocation required is the completion record, which\n  // has a stable shape and so hopefully should be cheap to allocate.\n  function tryCatch(fn, obj, arg) {\n    try {\n      return { type: \"normal\", arg: fn.call(obj, arg) };\n    } catch (err) {\n      return { type: \"throw\", arg: err };\n    }\n  }\n\n  var GenStateSuspendedStart = \"suspendedStart\";\n  var GenStateSuspendedYield = \"suspendedYield\";\n  var GenStateExecuting = \"executing\";\n  var GenStateCompleted = \"completed\";\n\n  // Returning this object from the innerFn has the same effect as\n  // breaking out of the dispatch switch statement.\n  var ContinueSentinel = {};\n\n  // Dummy constructor functions that we use as the .constructor and\n  // .constructor.prototype properties for functions that return Generator\n  // objects. For full spec compliance, you may wish to configure your\n  // minifier not to mangle the names of these two functions.\n  function Generator() {}\n  function GeneratorFunction() {}\n  function GeneratorFunctionPrototype() {}\n\n  // This is a polyfill for %IteratorPrototype% for environments that\n  // don't natively support it.\n  var IteratorPrototype = {};\n  define(IteratorPrototype, iteratorSymbol, function () {\n    return this;\n  });\n\n  var getProto = Object.getPrototypeOf;\n  var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n  if (NativeIteratorPrototype &&\n      NativeIteratorPrototype !== Op &&\n      hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n    // This environment has a native %IteratorPrototype%; use it instead\n    // of the polyfill.\n    IteratorPrototype = NativeIteratorPrototype;\n  }\n\n  var Gp = GeneratorFunctionPrototype.prototype =\n    Generator.prototype = Object.create(IteratorPrototype);\n  GeneratorFunction.prototype = GeneratorFunctionPrototype;\n  define(Gp, \"constructor\", GeneratorFunctionPrototype);\n  define(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction);\n  GeneratorFunction.displayName = define(\n    GeneratorFunctionPrototype,\n    toStringTagSymbol,\n    \"GeneratorFunction\"\n  );\n\n  // Helper for defining the .next, .throw, and .return methods of the\n  // Iterator interface in terms of a single ._invoke method.\n  function defineIteratorMethods(prototype) {\n    [\"next\", \"throw\", \"return\"].forEach(function(method) {\n      define(prototype, method, function(arg) {\n        return this._invoke(method, arg);\n      });\n    });\n  }\n\n  exports.isGeneratorFunction = function(genFun) {\n    var ctor = typeof genFun === \"function\" && genFun.constructor;\n    return ctor\n      ? ctor === GeneratorFunction ||\n        // For the native GeneratorFunction constructor, the best we can\n        // do is to check its .name property.\n        (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n      : false;\n  };\n\n  exports.mark = function(genFun) {\n    if (Object.setPrototypeOf) {\n      Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n    } else {\n      genFun.__proto__ = GeneratorFunctionPrototype;\n      define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n    }\n    genFun.prototype = Object.create(Gp);\n    return genFun;\n  };\n\n  // Within the body of any async function, `await x` is transformed to\n  // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n  // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n  // meant to be awaited.\n  exports.awrap = function(arg) {\n    return { __await: arg };\n  };\n\n  function AsyncIterator(generator, PromiseImpl) {\n    function invoke(method, arg, resolve, reject) {\n      var record = tryCatch(generator[method], generator, arg);\n      if (record.type === \"throw\") {\n        reject(record.arg);\n      } else {\n        var result = record.arg;\n        var value = result.value;\n        if (value &&\n            typeof value === \"object\" &&\n            hasOwn.call(value, \"__await\")) {\n          return PromiseImpl.resolve(value.__await).then(function(value) {\n            invoke(\"next\", value, resolve, reject);\n          }, function(err) {\n            invoke(\"throw\", err, resolve, reject);\n          });\n        }\n\n        return PromiseImpl.resolve(value).then(function(unwrapped) {\n          // When a yielded Promise is resolved, its final value becomes\n          // the .value of the Promise<{value,done}> result for the\n          // current iteration.\n          result.value = unwrapped;\n          resolve(result);\n        }, function(error) {\n          // If a rejected Promise was yielded, throw the rejection back\n          // into the async generator function so it can be handled there.\n          return invoke(\"throw\", error, resolve, reject);\n        });\n      }\n    }\n\n    var previousPromise;\n\n    function enqueue(method, arg) {\n      function callInvokeWithMethodAndArg() {\n        return new PromiseImpl(function(resolve, reject) {\n          invoke(method, arg, resolve, reject);\n        });\n      }\n\n      return previousPromise =\n        // If enqueue has been called before, then we want to wait until\n        // all previous Promises have been resolved before calling invoke,\n        // so that results are always delivered in the correct order. If\n        // enqueue has not been called before, then it is important to\n        // call invoke immediately, without waiting on a callback to fire,\n        // so that the async generator function has the opportunity to do\n        // any necessary setup in a predictable way. This predictability\n        // is why the Promise constructor synchronously invokes its\n        // executor callback, and why async functions synchronously\n        // execute code before the first await. Since we implement simple\n        // async functions in terms of async generators, it is especially\n        // important to get this right, even though it requires care.\n        previousPromise ? previousPromise.then(\n          callInvokeWithMethodAndArg,\n          // Avoid propagating failures to Promises returned by later\n          // invocations of the iterator.\n          callInvokeWithMethodAndArg\n        ) : callInvokeWithMethodAndArg();\n    }\n\n    // Define the unified helper method that is used to implement .next,\n    // .throw, and .return (see defineIteratorMethods).\n    this._invoke = enqueue;\n  }\n\n  defineIteratorMethods(AsyncIterator.prototype);\n  define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n    return this;\n  });\n  exports.AsyncIterator = AsyncIterator;\n\n  // Note that simple async functions are implemented on top of\n  // AsyncIterator objects; they just return a Promise for the value of\n  // the final result produced by the iterator.\n  exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n    if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n    var iter = new AsyncIterator(\n      wrap(innerFn, outerFn, self, tryLocsList),\n      PromiseImpl\n    );\n\n    return exports.isGeneratorFunction(outerFn)\n      ? iter // If outerFn is a generator, return the full iterator.\n      : iter.next().then(function(result) {\n          return result.done ? result.value : iter.next();\n        });\n  };\n\n  function makeInvokeMethod(innerFn, self, context) {\n    var state = GenStateSuspendedStart;\n\n    return function invoke(method, arg) {\n      if (state === GenStateExecuting) {\n        throw new Error(\"Generator is already running\");\n      }\n\n      if (state === GenStateCompleted) {\n        if (method === \"throw\") {\n          throw arg;\n        }\n\n        // Be forgiving, per 25.3.3.3.3 of the spec:\n        // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n        return doneResult();\n      }\n\n      context.method = method;\n      context.arg = arg;\n\n      while (true) {\n        var delegate = context.delegate;\n        if (delegate) {\n          var delegateResult = maybeInvokeDelegate(delegate, context);\n          if (delegateResult) {\n            if (delegateResult === ContinueSentinel) continue;\n            return delegateResult;\n          }\n        }\n\n        if (context.method === \"next\") {\n          // Setting context._sent for legacy support of Babel's\n          // function.sent implementation.\n          context.sent = context._sent = context.arg;\n\n        } else if (context.method === \"throw\") {\n          if (state === GenStateSuspendedStart) {\n            state = GenStateCompleted;\n            throw context.arg;\n          }\n\n          context.dispatchException(context.arg);\n\n        } else if (context.method === \"return\") {\n          context.abrupt(\"return\", context.arg);\n        }\n\n        state = GenStateExecuting;\n\n        var record = tryCatch(innerFn, self, context);\n        if (record.type === \"normal\") {\n          // If an exception is thrown from innerFn, we leave state ===\n          // GenStateExecuting and loop back for another invocation.\n          state = context.done\n            ? GenStateCompleted\n            : GenStateSuspendedYield;\n\n          if (record.arg === ContinueSentinel) {\n            continue;\n          }\n\n          return {\n            value: record.arg,\n            done: context.done\n          };\n\n        } else if (record.type === \"throw\") {\n          state = GenStateCompleted;\n          // Dispatch the exception by looping back around to the\n          // context.dispatchException(context.arg) call above.\n          context.method = \"throw\";\n          context.arg = record.arg;\n        }\n      }\n    };\n  }\n\n  // Call delegate.iterator[context.method](context.arg) and handle the\n  // result, either by returning a { value, done } result from the\n  // delegate iterator, or by modifying context.method and context.arg,\n  // setting context.delegate to null, and returning the ContinueSentinel.\n  function maybeInvokeDelegate(delegate, context) {\n    var method = delegate.iterator[context.method];\n    if (method === undefined) {\n      // A .throw or .return when the delegate iterator has no .throw\n      // method always terminates the yield* loop.\n      context.delegate = null;\n\n      if (context.method === \"throw\") {\n        // Note: [\"return\"] must be used for ES3 parsing compatibility.\n        if (delegate.iterator[\"return\"]) {\n          // If the delegate iterator has a return method, give it a\n          // chance to clean up.\n          context.method = \"return\";\n          context.arg = undefined;\n          maybeInvokeDelegate(delegate, context);\n\n          if (context.method === \"throw\") {\n            // If maybeInvokeDelegate(context) changed context.method from\n            // \"return\" to \"throw\", let that override the TypeError below.\n            return ContinueSentinel;\n          }\n        }\n\n        context.method = \"throw\";\n        context.arg = new TypeError(\n          \"The iterator does not provide a 'throw' method\");\n      }\n\n      return ContinueSentinel;\n    }\n\n    var record = tryCatch(method, delegate.iterator, context.arg);\n\n    if (record.type === \"throw\") {\n      context.method = \"throw\";\n      context.arg = record.arg;\n      context.delegate = null;\n      return ContinueSentinel;\n    }\n\n    var info = record.arg;\n\n    if (! info) {\n      context.method = \"throw\";\n      context.arg = new TypeError(\"iterator result is not an object\");\n      context.delegate = null;\n      return ContinueSentinel;\n    }\n\n    if (info.done) {\n      // Assign the result of the finished delegate to the temporary\n      // variable specified by delegate.resultName (see delegateYield).\n      context[delegate.resultName] = info.value;\n\n      // Resume execution at the desired location (see delegateYield).\n      context.next = delegate.nextLoc;\n\n      // If context.method was \"throw\" but the delegate handled the\n      // exception, let the outer generator proceed normally. If\n      // context.method was \"next\", forget context.arg since it has been\n      // \"consumed\" by the delegate iterator. If context.method was\n      // \"return\", allow the original .return call to continue in the\n      // outer generator.\n      if (context.method !== \"return\") {\n        context.method = \"next\";\n        context.arg = undefined;\n      }\n\n    } else {\n      // Re-yield the result returned by the delegate method.\n      return info;\n    }\n\n    // The delegate iterator is finished, so forget it and continue with\n    // the outer generator.\n    context.delegate = null;\n    return ContinueSentinel;\n  }\n\n  // Define Generator.prototype.{next,throw,return} in terms of the\n  // unified ._invoke helper method.\n  defineIteratorMethods(Gp);\n\n  define(Gp, toStringTagSymbol, \"Generator\");\n\n  // A Generator should always return itself as the iterator object when the\n  // @@iterator function is called on it. Some browsers' implementations of the\n  // iterator prototype chain incorrectly implement this, causing the Generator\n  // object to not be returned from this call. This ensures that doesn't happen.\n  // See https://github.com/facebook/regenerator/issues/274 for more details.\n  define(Gp, iteratorSymbol, function() {\n    return this;\n  });\n\n  define(Gp, \"toString\", function() {\n    return \"[object Generator]\";\n  });\n\n  function pushTryEntry(locs) {\n    var entry = { tryLoc: locs[0] };\n\n    if (1 in locs) {\n      entry.catchLoc = locs[1];\n    }\n\n    if (2 in locs) {\n      entry.finallyLoc = locs[2];\n      entry.afterLoc = locs[3];\n    }\n\n    this.tryEntries.push(entry);\n  }\n\n  function resetTryEntry(entry) {\n    var record = entry.completion || {};\n    record.type = \"normal\";\n    delete record.arg;\n    entry.completion = record;\n  }\n\n  function Context(tryLocsList) {\n    // The root entry object (effectively a try statement without a catch\n    // or a finally block) gives us a place to store values thrown from\n    // locations where there is no enclosing try statement.\n    this.tryEntries = [{ tryLoc: \"root\" }];\n    tryLocsList.forEach(pushTryEntry, this);\n    this.reset(true);\n  }\n\n  exports.keys = function(object) {\n    var keys = [];\n    for (var key in object) {\n      keys.push(key);\n    }\n    keys.reverse();\n\n    // Rather than returning an object with a next method, we keep\n    // things simple and return the next function itself.\n    return function next() {\n      while (keys.length) {\n        var key = keys.pop();\n        if (key in object) {\n          next.value = key;\n          next.done = false;\n          return next;\n        }\n      }\n\n      // To avoid creating an additional object, we just hang the .value\n      // and .done properties off the next function object itself. This\n      // also ensures that the minifier will not anonymize the function.\n      next.done = true;\n      return next;\n    };\n  };\n\n  function values(iterable) {\n    if (iterable) {\n      var iteratorMethod = iterable[iteratorSymbol];\n      if (iteratorMethod) {\n        return iteratorMethod.call(iterable);\n      }\n\n      if (typeof iterable.next === \"function\") {\n        return iterable;\n      }\n\n      if (!isNaN(iterable.length)) {\n        var i = -1, next = function next() {\n          while (++i < iterable.length) {\n            if (hasOwn.call(iterable, i)) {\n              next.value = iterable[i];\n              next.done = false;\n              return next;\n            }\n          }\n\n          next.value = undefined;\n          next.done = true;\n\n          return next;\n        };\n\n        return next.next = next;\n      }\n    }\n\n    // Return an iterator with no values.\n    return { next: doneResult };\n  }\n  exports.values = values;\n\n  function doneResult() {\n    return { value: undefined, done: true };\n  }\n\n  Context.prototype = {\n    constructor: Context,\n\n    reset: function(skipTempReset) {\n      this.prev = 0;\n      this.next = 0;\n      // Resetting context._sent for legacy support of Babel's\n      // function.sent implementation.\n      this.sent = this._sent = undefined;\n      this.done = false;\n      this.delegate = null;\n\n      this.method = \"next\";\n      this.arg = undefined;\n\n      this.tryEntries.forEach(resetTryEntry);\n\n      if (!skipTempReset) {\n        for (var name in this) {\n          // Not sure about the optimal order of these conditions:\n          if (name.charAt(0) === \"t\" &&\n              hasOwn.call(this, name) &&\n              !isNaN(+name.slice(1))) {\n            this[name] = undefined;\n          }\n        }\n      }\n    },\n\n    stop: function() {\n      this.done = true;\n\n      var rootEntry = this.tryEntries[0];\n      var rootRecord = rootEntry.completion;\n      if (rootRecord.type === \"throw\") {\n        throw rootRecord.arg;\n      }\n\n      return this.rval;\n    },\n\n    dispatchException: function(exception) {\n      if (this.done) {\n        throw exception;\n      }\n\n      var context = this;\n      function handle(loc, caught) {\n        record.type = \"throw\";\n        record.arg = exception;\n        context.next = loc;\n\n        if (caught) {\n          // If the dispatched exception was caught by a catch block,\n          // then let that catch block handle the exception normally.\n          context.method = \"next\";\n          context.arg = undefined;\n        }\n\n        return !! caught;\n      }\n\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        var record = entry.completion;\n\n        if (entry.tryLoc === \"root\") {\n          // Exception thrown outside of any try block that could handle\n          // it, so set the completion value of the entire function to\n          // throw the exception.\n          return handle(\"end\");\n        }\n\n        if (entry.tryLoc <= this.prev) {\n          var hasCatch = hasOwn.call(entry, \"catchLoc\");\n          var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n          if (hasCatch && hasFinally) {\n            if (this.prev < entry.catchLoc) {\n              return handle(entry.catchLoc, true);\n            } else if (this.prev < entry.finallyLoc) {\n              return handle(entry.finallyLoc);\n            }\n\n          } else if (hasCatch) {\n            if (this.prev < entry.catchLoc) {\n              return handle(entry.catchLoc, true);\n            }\n\n          } else if (hasFinally) {\n            if (this.prev < entry.finallyLoc) {\n              return handle(entry.finallyLoc);\n            }\n\n          } else {\n            throw new Error(\"try statement without catch or finally\");\n          }\n        }\n      }\n    },\n\n    abrupt: function(type, arg) {\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        if (entry.tryLoc <= this.prev &&\n            hasOwn.call(entry, \"finallyLoc\") &&\n            this.prev < entry.finallyLoc) {\n          var finallyEntry = entry;\n          break;\n        }\n      }\n\n      if (finallyEntry &&\n          (type === \"break\" ||\n           type === \"continue\") &&\n          finallyEntry.tryLoc <= arg &&\n          arg <= finallyEntry.finallyLoc) {\n        // Ignore the finally entry if control is not jumping to a\n        // location outside the try/catch block.\n        finallyEntry = null;\n      }\n\n      var record = finallyEntry ? finallyEntry.completion : {};\n      record.type = type;\n      record.arg = arg;\n\n      if (finallyEntry) {\n        this.method = \"next\";\n        this.next = finallyEntry.finallyLoc;\n        return ContinueSentinel;\n      }\n\n      return this.complete(record);\n    },\n\n    complete: function(record, afterLoc) {\n      if (record.type === \"throw\") {\n        throw record.arg;\n      }\n\n      if (record.type === \"break\" ||\n          record.type === \"continue\") {\n        this.next = record.arg;\n      } else if (record.type === \"return\") {\n        this.rval = this.arg = record.arg;\n        this.method = \"return\";\n        this.next = \"end\";\n      } else if (record.type === \"normal\" && afterLoc) {\n        this.next = afterLoc;\n      }\n\n      return ContinueSentinel;\n    },\n\n    finish: function(finallyLoc) {\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        if (entry.finallyLoc === finallyLoc) {\n          this.complete(entry.completion, entry.afterLoc);\n          resetTryEntry(entry);\n          return ContinueSentinel;\n        }\n      }\n    },\n\n    \"catch\": function(tryLoc) {\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        if (entry.tryLoc === tryLoc) {\n          var record = entry.completion;\n          if (record.type === \"throw\") {\n            var thrown = record.arg;\n            resetTryEntry(entry);\n          }\n          return thrown;\n        }\n      }\n\n      // The context.catch method must only be called with a location\n      // argument that corresponds to a known catch block.\n      throw new Error(\"illegal catch attempt\");\n    },\n\n    delegateYield: function(iterable, resultName, nextLoc) {\n      this.delegate = {\n        iterator: values(iterable),\n        resultName: resultName,\n        nextLoc: nextLoc\n      };\n\n      if (this.method === \"next\") {\n        // Deliberately forget the last sent value so that we don't\n        // accidentally pass it on to the delegate.\n        this.arg = undefined;\n      }\n\n      return ContinueSentinel;\n    }\n  };\n\n  // Regardless of whether this script is executing as a CommonJS module\n  // or not, return the runtime object so that we can declare the variable\n  // regeneratorRuntime in the outer scope, which allows this module to be\n  // injected easily by `bin/regenerator --include-runtime script.js`.\n  return exports;\n\n}(\n  // If this script is executing as a CommonJS module, use module.exports\n  // as the regeneratorRuntime namespace. Otherwise create a new empty\n  // object. Either way, the resulting object will be used to initialize\n  // the regeneratorRuntime variable at the top of this file.\n  typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n  regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n  // This module should not be running in strict mode, so the above\n  // assignment should always work unless something is misconfigured. Just\n  // in case runtime.js accidentally runs in strict mode, in modern engines\n  // we can explicitly access globalThis. In older engines we can escape\n  // strict mode using a global Function call. This could conceivably fail\n  // if a Content Security Policy forbids using Function, but in that case\n  // the proper solution is to fix the accidental strict mode problem. If\n  // you've misconfigured your bundler to force strict mode and applied a\n  // CSP to forbid Function, and you're not willing to fix either of those\n  // problems, please detail your unique predicament in a GitHub issue.\n  if (typeof globalThis === \"object\") {\n    globalThis.regeneratorRuntime = runtime;\n  } else {\n    Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n  }\n}\n","var baseEach = require('./_baseEach'),\n    isArrayLike = require('./isArrayLike');\n\n/**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction baseMap(collection, iteratee) {\n  var index = -1,\n      result = isArrayLike(collection) ? Array(collection.length) : [];\n\n  baseEach(collection, function(value, key, collection) {\n    result[++index] = iteratee(value, key, collection);\n  });\n  return result;\n}\n\nmodule.exports = baseMap;\n","var toString = require('./toString');\n\n/** Used to generate unique IDs. */\nvar idCounter = 0;\n\n/**\n * Generates a unique ID. If `prefix` is given, the ID is appended to it.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {string} [prefix=''] The value to prefix the ID with.\n * @returns {string} Returns the unique ID.\n * @example\n *\n * _.uniqueId('contact_');\n * // => 'contact_104'\n *\n * _.uniqueId();\n * // => '105'\n */\nfunction uniqueId(prefix) {\n  var id = ++idCounter;\n  return toString(prefix) + id;\n}\n\nmodule.exports = uniqueId;\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","/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n  return function(object, iteratee, keysFunc) {\n    var index = -1,\n        iterable = Object(object),\n        props = keysFunc(object),\n        length = props.length;\n\n    while (length--) {\n      var key = props[fromRight ? length : ++index];\n      if (iteratee(iterable[key], key, iterable) === false) {\n        break;\n      }\n    }\n    return object;\n  };\n}\n\nmodule.exports = createBaseFor;\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","import VCard from './VCard';\nimport { createSimpleFunctional } from '../../util/helpers';\nconst VCardActions = createSimpleFunctional('v-card__actions');\nconst VCardSubtitle = createSimpleFunctional('v-card__subtitle');\nconst VCardText = createSimpleFunctional('v-card__text');\nconst VCardTitle = createSimpleFunctional('v-card__title');\nexport { VCard, VCardActions, VCardSubtitle, VCardText, VCardTitle };\nexport default {\n  $_vuetify_subcomponents: {\n    VCard,\n    VCardActions,\n    VCardSubtitle,\n    VCardText,\n    VCardTitle\n  }\n};\n//# sourceMappingURL=index.js.map","var eq = require('./eq'),\n    isArrayLike = require('./isArrayLike'),\n    isIndex = require('./_isIndex'),\n    isObject = require('./isObject');\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n *  else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n  if (!isObject(object)) {\n    return false;\n  }\n  var type = typeof index;\n  if (type == 'number'\n        ? (isArrayLike(object) && isIndex(index, object.length))\n        : (type == 'string' && index in object)\n      ) {\n    return eq(object[index], value);\n  }\n  return false;\n}\n\nmodule.exports = isIterateeCall;\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","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n  aFunction(fn);\n  if (that === undefined) return fn;\n  switch (length) {\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","/**\n * The code was extracted from:\n * https://github.com/davidchambers/Base64.js\n */\n\nvar chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n\nfunction InvalidCharacterError(message) {\n  this.message = message;\n}\n\nInvalidCharacterError.prototype = new Error();\nInvalidCharacterError.prototype.name = 'InvalidCharacterError';\n\nfunction polyfill (input) {\n  var str = String(input).replace(/=+$/, '');\n  if (str.length % 4 == 1) {\n    throw new InvalidCharacterError(\"'atob' failed: The string to be decoded is not correctly encoded.\");\n  }\n  for (\n    // initialize result and counters\n    var bc = 0, bs, buffer, idx = 0, output = '';\n    // get next character\n    buffer = str.charAt(idx++);\n    // character found in table? initialize bit storage and add its ascii value;\n    ~buffer && (bs = bc % 4 ? bs * 64 + buffer : buffer,\n      // and if not first of each 4 characters,\n      // convert the first 8 bits to one ascii character\n      bc++ % 4) ? output += String.fromCharCode(255 & bs >> (-2 * bc & 6)) : 0\n  ) {\n    // try to find character in table (0-63, not found => -1)\n    buffer = chars.indexOf(buffer);\n  }\n  return output;\n}\n\n\nmodule.exports = typeof window !== 'undefined' && window.atob && window.atob.bind(window) || polyfill;\n","// 22.1.3.31 Array.prototype[@@unscopables]\nvar UNSCOPABLES = require('./_wks')('unscopables');\nvar ArrayProto = Array.prototype;\nif (ArrayProto[UNSCOPABLES] == undefined) require('./_hide')(ArrayProto, UNSCOPABLES, {});\nmodule.exports = function (key) {\n  ArrayProto[UNSCOPABLES][key] = true;\n};\n","'use strict';\n// B.2.3.3 String.prototype.big()\nrequire('./_string-html')('big', function (createHTML) {\n  return function big() {\n    return createHTML(this, 'big', '', '');\n  };\n});\n","import VIcon from './VIcon';\nexport { VIcon };\nexport default VIcon;\n//# sourceMappingURL=index.js.map","// Utilities\nimport { removed } from '../../util/console'; // Types\n\nimport Vue from 'vue';\n/**\n * Bootable\n * @mixin\n *\n * Used to add lazy content functionality to components\n * Looks for change in \"isActive\" to automatically boot\n * Otherwise can be set manually\n */\n\n/* @vue/component */\n\nexport default Vue.extend().extend({\n  name: 'bootable',\n  props: {\n    eager: Boolean\n  },\n  data: () => ({\n    isBooted: false\n  }),\n  computed: {\n    hasContent() {\n      return this.isBooted || this.eager || this.isActive;\n    }\n\n  },\n  watch: {\n    isActive() {\n      this.isBooted = true;\n    }\n\n  },\n\n  created() {\n    /* istanbul ignore next */\n    if ('lazy' in this.$attrs) {\n      removed('lazy', this);\n    }\n  },\n\n  methods: {\n    showLazyContent(content) {\n      return this.hasContent && content ? content() : [this.$createElement()];\n    }\n\n  }\n});\n//# sourceMappingURL=index.js.map","const Mode = require('./mode')\n\n/**\n * Array of characters available in alphanumeric mode\n *\n * As per QR Code specification, to each character\n * is assigned a value from 0 to 44 which in this case coincides\n * with the array index\n *\n * @type {Array}\n */\nconst ALPHA_NUM_CHARS = [\n  '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',\n  'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',\n  'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',\n  ' ', '$', '%', '*', '+', '-', '.', '/', ':'\n]\n\nfunction AlphanumericData (data) {\n  this.mode = Mode.ALPHANUMERIC\n  this.data = data\n}\n\nAlphanumericData.getBitsLength = function getBitsLength (length) {\n  return 11 * Math.floor(length / 2) + 6 * (length % 2)\n}\n\nAlphanumericData.prototype.getLength = function getLength () {\n  return this.data.length\n}\n\nAlphanumericData.prototype.getBitsLength = function getBitsLength () {\n  return AlphanumericData.getBitsLength(this.data.length)\n}\n\nAlphanumericData.prototype.write = function write (bitBuffer) {\n  let i\n\n  // Input data characters are divided into groups of two characters\n  // and encoded as 11-bit binary codes.\n  for (i = 0; i + 2 <= this.data.length; i += 2) {\n    // The character value of the first character is multiplied by 45\n    let value = ALPHA_NUM_CHARS.indexOf(this.data[i]) * 45\n\n    // The character value of the second digit is added to the product\n    value += ALPHA_NUM_CHARS.indexOf(this.data[i + 1])\n\n    // The sum is then stored as 11-bit binary number\n    bitBuffer.put(value, 11)\n  }\n\n  // If the number of input data characters is not a multiple of two,\n  // the character value of the final character is encoded as a 6-bit binary number.\n  if (this.data.length % 2) {\n    bitBuffer.put(ALPHA_NUM_CHARS.indexOf(this.data[i]), 6)\n  }\n}\n\nmodule.exports = AlphanumericData\n","// 7.1.15 ToLength\nvar toInteger = require('./_to-integer');\nvar min = Math.min;\nmodule.exports = function (it) {\n  return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n  return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n","!function(e,n){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=n():\"function\"==typeof define&&define.amd?define(n):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_locale_en=n()}(this,(function(){\"use strict\";return{name:\"en\",weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\")}}));","import { randomString, getQueryInfo } from './utils'\nimport _get from 'lodash/get'\nexport default {\n  props: {\n    service: {\n      type: String,\n      required: true\n    },\n    query: {\n      type: Object,\n      default: null\n    },\n    queryWhen: {\n      type: [Boolean, Function],\n      default: true\n    },\n    // If a separate query is desired to fetch data, use fetchQuery\n    // The watchers will automatically be updated, so you don't have to write 'fetchQuery.propName'\n    fetchQuery: {\n      type: Object\n    },\n    /**\n     * Can be used in place of the `query` prop to provide more params. Only params.query is\n     * passed to the getter.\n     */\n    params: {\n      type: Object,\n      default: null\n    },\n    /**\n     * Can be used in place of the `fetchQuery` prop to provide more params. Only params.query is\n     * passed to the getter.\n     */\n    fetchParams: {\n      type: Object,\n      default: null\n    },\n    watch: {\n      type: [String, Array],\n      default() {\n        return []\n      }\n    },\n    local: {\n      type: Boolean,\n      default: false\n    },\n    editScope: {\n      type: Function,\n      default(scope) {\n        return scope\n      }\n    },\n    qid: {\n      type: String,\n      default() {\n        return randomString(10)\n      }\n    },\n    /**\n     * Set `temps` to true to include temporary records from the store.\n     */\n    temps: {\n      type: Boolean,\n      default: false\n    }\n  },\n  data: () => ({\n    isFindPending: false,\n    queryId: null,\n    pageId: null\n  }),\n  computed: {\n    items() {\n      let { query, service, $store, temps } = this\n      let { params } = this\n      query = query || {}\n      params = params || { query, temps }\n      return $store.getters[`${service}/find`](params).data\n    },\n    pagination() {\n      return this.$store.state[this.service].pagination[this.qid]\n    },\n    queryInfo() {\n      if (this.pagination == null || this.queryId == null) return {}\n      return _get(this.pagination, this.queryId, {})\n    },\n    pageInfo() {\n      if (\n        this.pagination == null ||\n        this.queryId == null ||\n        this.pageId == null\n      )\n        return {}\n      return _get(this.pagination, [this.queryId, this.pageId], {})\n    },\n    scope() {\n      const { items, isFindPending, pagination, queryInfo, pageInfo } = this\n      const defaultScope = {\n        isFindPending,\n        pagination,\n        items,\n        queryInfo,\n        pageInfo\n      }\n      return this.editScope(defaultScope) || defaultScope\n    }\n  },\n  methods: {\n    findData() {\n      const query = this.fetchQuery || this.query\n      let params = this.fetchParams || this.params\n      if (\n        typeof this.queryWhen === 'function'\n          ? this.queryWhen(this.params || this.query)\n          : this.queryWhen\n      ) {\n        this.isFindPending = true\n        if (params || query) {\n          if (params) {\n            params = Object.assign({}, params, { qid: this.qid || 'default' })\n          } else {\n            params = { query, qid: this.qid || 'default' }\n          }\n          return this.$store\n            .dispatch(`${this.service}/find`, params)\n            .then((response) => {\n              this.isFindPending = false\n              const { queryId, pageId } = getQueryInfo(params, response)\n              this.queryId = queryId\n              this.pageId = pageId\n            })\n        }\n      }\n    },\n    fetchData() {\n      if (!this.local) {\n        if (this.params || this.query) {\n          return this.findData()\n        } else {\n          // TODO: access debug boolean from the store config, somehow.\n          // eslint-disable-next-line no-console\n          console.log(\n            `No query and no id provided, so no data will be fetched.`\n          )\n        }\n      }\n    }\n  },\n  created() {\n    if (!this.$FeathersVuex) {\n      throw new Error(\n        `You must first Vue.use the FeathersVuex plugin before using the 'FeathersVuexFind' component.`\n      )\n    }\n    if (!this.$store.state[this.service]) {\n      throw new Error(\n        `The '${this.service}' plugin not registered with feathers-vuex`\n      )\n    }\n    const watch = Array.isArray(this.watch) ? this.watch : [this.watch]\n    if (this.fetchQuery || this.query || this.params) {\n      watch.forEach((prop) => {\n        if (typeof prop !== 'string') {\n          throw new Error(`Values in the 'watch' array must be strings.`)\n        }\n        if (this.fetchQuery) {\n          if (prop.startsWith('query')) {\n            prop = prop.replace('query', 'fetchQuery')\n          }\n        }\n        if (this.fetchParams) {\n          if (prop.startsWith('params')) {\n            prop = prop.replace('params', 'fetchParams')\n          }\n        }\n        this.$watch(prop, this.fetchData)\n      })\n      this.fetchData()\n    }\n  },\n  render() {\n    return this.$scopedSlots.default(this.scope)\n  }\n}\n","/* eslint-disable @typescript-eslint/explicit-function-return-type */\nexport default {\n  props: {\n    /**\n     * The path of the service from which to pull records.\n     */\n    service: {\n      type: String,\n      required: true\n    },\n    /**\n     * Must match the `serverAlias` that was provided in the service's configuration.\n     */\n    serverAlias: {\n      type: String,\n      default: 'api'\n    },\n    /**\n     * By default, `query` is used to get data from the Vuex store AND the API request.\n     * If you specify a `fetchQuery`, then `query` will only be used for the Vuex store.\n     */\n    query: {\n      type: Object,\n      default: null\n    },\n    /**\n     * If a separate query is desired to fetch data, use fetchQuery\n     * The watchers are automatically updated, so you don't have to write 'fetchQuery.propName'\n     */\n    fetchQuery: {\n      type: Object\n    },\n    /**\n     * Can be used in place of the `query` prop to provide more params. Only params.query is\n     * passed to the getter.\n     */\n    params: {\n      type: Object,\n      default: null\n    },\n    /**\n     * Can be used in place of the `fetchQuery` prop to provide more params. Only params.query is\n     * passed to the getter.\n     */\n    fetchParams: {\n      type: Object,\n      default: null\n    },\n    /**\n     * When `queryWhen` evaluates to false, no API request will be made.\n     */\n    queryWhen: {\n      type: [Boolean, Function],\n      default: true\n    },\n    // For get requests\n    id: {\n      type: [Number, String],\n      default: null\n    },\n    /**\n     * Specify which properties in the query to watch and re-trigger API requests.\n     */\n    watch: {\n      type: [String, Array],\n      default() {\n        return []\n      }\n    },\n    /**\n     * Set `local` to true to only requests from the Vuex data store and not make API requests.\n     */\n    local: {\n      type: Boolean,\n      default: false\n    },\n    /**\n     * This function is called by the getter and allows you to intercept the `item` in the\n     * response to pass it into the parent component's scope.  It's a dirty little cheater\n     * function (because it's called from a getter), but it actually works well  ;)\n     */\n    editScope: {\n      type: Function,\n      default(scope) {\n        return scope\n      }\n    }\n  },\n  data: () => ({\n    isFindPending: false,\n    isGetPending: false\n  }),\n  computed: {\n    item() {\n      const getArgs = this.getArgs(this.query)\n      if (this.id) {\n        if (getArgs.length === 1) {\n          return this.$store.getters[`${this.service}/get`](this.id) || null\n        } else {\n          const args = [this.id]\n          const query = getArgs[1].query\n          if (query) {\n            args.push(query)\n          }\n          return this.$store.getters[`${this.service}/get`](args) || null\n        }\n      } else {\n        return null\n      }\n    },\n    scope() {\n      const { item, isGetPending } = this\n      const defaultScope = { item, isGetPending }\n      return this.editScope(defaultScope) || defaultScope\n    }\n  },\n  methods: {\n    getArgs(queryToUse) {\n      const query = queryToUse || this.fetchQuery || this.query\n      const params = this.fetchParams || this.params\n      const getArgs = [this.id]\n      if (params) {\n        getArgs.push(params)\n      } else if (query && Object.keys(query).length > 0) {\n        getArgs.push({ query })\n      }\n      return getArgs\n    },\n    getData() {\n      const getArgs = this.getArgs()\n      if (\n        typeof this.queryWhen === 'function'\n          ? this.queryWhen(...getArgs)\n          : this.queryWhen\n      ) {\n        this.isGetPending = true\n        if (this.id) {\n          return this.$store\n            .dispatch(\n              `${this.service}/get`,\n              getArgs.length === 1 ? this.id : getArgs\n            )\n            .then((response) => {\n              this.isGetPending = false\n              return response\n            })\n        }\n      }\n    },\n    fetchData() {\n      if (this.local || this.id === 'new') {\n        return\n      } else if (\n        this.fetchQuery ||\n        this.query ||\n        this.params ||\n        (this.id !== null && this.id !== undefined)\n      ) {\n        return this.getData()\n      } else {\n        // eslint-disable-next-line no-console\n        console.log(`No query and no id provided, so no data will be fetched.`)\n      }\n    }\n  },\n  created() {\n    if (!this.$FeathersVuex) {\n      throw new Error(\n        `You must first Vue.use the FeathersVuex plugin before using the 'FeathersVuexGet' component.`\n      )\n    }\n    if (!this.$store.state[this.service]) {\n      throw new Error(\n        `The '${this.service}' plugin is not registered with feathers-vuex`\n      )\n    }\n    const watch = Array.isArray(this.watch) ? this.watch : [this.watch]\n    if (\n      this.fetchQuery ||\n      this.query ||\n      this.params ||\n      (this.id !== null && this.id !== undefined)\n    ) {\n      watch.forEach((prop) => {\n        if (typeof prop !== 'string') {\n          throw new Error(`Values in the 'watch' array must be strings.`)\n        }\n        if (this.fetchQuery) {\n          if (prop.startsWith('query')) {\n            prop.replace('query', 'fetchQuery')\n          }\n        }\n        this.$watch(prop, this.fetchData)\n      })\n      this.fetchData()\n    }\n  },\n  render() {\n    return this.$scopedSlots.default(this.scope)\n  }\n}\n","var __awaiter =\n  (this && this.__awaiter) ||\n  function (thisArg, _arguments, P, generator) {\n    function adopt(value) {\n      return value instanceof P\n        ? value\n        : new P(function (resolve) {\n            resolve(value)\n          })\n    }\n    return new (P || (P = Promise))(function (resolve, reject) {\n      function fulfilled(value) {\n        try {\n          step(generator.next(value))\n        } catch (e) {\n          reject(e)\n        }\n      }\n      function rejected(value) {\n        try {\n          step(generator['throw'](value))\n        } catch (e) {\n          reject(e)\n        }\n      }\n      function step(result) {\n        result.done\n          ? resolve(result.value)\n          : adopt(result.value).then(fulfilled, rejected)\n      }\n      step((generator = generator.apply(thisArg, _arguments || [])).next())\n    })\n  }\nexport default {\n  name: 'FeathersVuexFormWrapper',\n  model: {\n    prop: 'item',\n    event: 'update:item'\n  },\n  props: {\n    item: {\n      type: Object,\n      required: true\n    },\n    /**\n     * By default, when you call the `save` method, the cloned data will be\n     * committed to the store BEFORE saving tot he API server. Set\n     * `:eager=\"false\"` to only update the store with the API server response.\n     */\n    eager: {\n      type: Boolean,\n      default: true\n    },\n    // Set to false to prevent re-cloning if the object updates.\n    watch: {\n      type: Boolean,\n      default: true\n    }\n  },\n  data: () => ({\n    clone: null,\n    isDirty: false\n  }),\n  computed: {\n    isNew() {\n      return (this.item && this.item.__isTemp) || false\n    }\n  },\n  watch: {\n    item: {\n      handler: 'setup',\n      immediate: true,\n      deep: true\n    }\n  },\n  methods: {\n    setup() {\n      if (this.item) {\n        this.isDirty = false\n        // Unwatch the clone to prevent running watchers during reclone\n        if (this.unwatchClone) {\n          this.unwatchClone()\n        }\n        this.clone = this.item.clone()\n        // Watch the new clone.\n        this.unwatchClone = this.$watch('clone', {\n          handler: 'markAsDirty',\n          deep: true\n        })\n      }\n    },\n    save(params) {\n      if (this.eager) {\n        this.clone.commit()\n      }\n      return this.clone.save(params).then((response) => {\n        this.$emit('saved', response)\n        if (this.isNew) {\n          this.$emit('saved-new', response)\n        }\n        return response\n      })\n    },\n    reset() {\n      this.clone.reset()\n      this.isDirty = false\n      this.$emit('reset', this.item)\n    },\n    remove() {\n      return __awaiter(this, void 0, void 0, function* () {\n        yield this.item.remove()\n        this.$emit('removed', this.item)\n        return this.item\n      })\n    },\n    markAsDirty() {\n      if (!this.isDirty) {\n        this.isDirty = true\n      }\n    }\n  },\n  render() {\n    const { clone, save, reset, remove, isDirty, isNew } = this\n    return this.$scopedSlots.default({\n      clone,\n      save,\n      reset,\n      remove,\n      isDirty,\n      isNew\n    })\n  }\n}\n","import _debounce from 'lodash/debounce'\nexport default {\n  name: 'FeathersVuexInputWrapper',\n  props: {\n    item: {\n      type: Object,\n      required: true\n    },\n    prop: {\n      type: String,\n      required: true\n    },\n    debounce: {\n      type: Number,\n      default: 0\n    }\n  },\n  data: () => ({\n    clone: null\n  }),\n  computed: {\n    current() {\n      return this.clone || this.item\n    }\n  },\n  watch: {\n    debounce: {\n      handler(wait) {\n        this.debouncedHandler = _debounce(this.handler, wait)\n      },\n      immediate: true\n    }\n  },\n  methods: {\n    createClone(e) {\n      this.clone = this.item.clone()\n    },\n    cleanup() {\n      this.$nextTick(() => {\n        this.clone = null\n      })\n    },\n    handler(e, callback) {\n      if (!this.clone) {\n        this.createClone()\n      }\n      const maybePromise = callback({\n        event: e,\n        clone: this.clone,\n        prop: this.prop,\n        data: { [this.prop]: this.clone[this.prop] }\n      })\n      if (maybePromise && maybePromise.then) {\n        maybePromise.then(this.cleanup)\n      } else {\n        this.cleanup()\n      }\n    }\n  },\n  render() {\n    const { current, prop, createClone } = this\n    const handler = this.debounce ? this.debouncedHandler : this.handler\n    return this.$scopedSlots.default({ current, prop, createClone, handler })\n  }\n}\n","import {\n  // eslint-disable-next-line @typescript-eslint/ban-ts-ignore\n  // @ts-ignore\n  createElement as baseCreateElement,\n  // eslint-disable-next-line @typescript-eslint/ban-ts-ignore\n  // @ts-ignore\n  h,\n  computed,\n  watch\n} from '@vue/composition-api'\n/**\n * Allow for usage with newer (^1.0.0) @vue/composition-api releases\n * See: https://github.com/feathersjs-ecosystem/feathers-vuex/issues/504\n */\nconst createElement = baseCreateElement || h\nexport default {\n  name: 'FeathersVuexPagination',\n  props: {\n    /**\n     * An object containing { $limit, and $skip }\n     */\n    value: {\n      type: Object,\n      // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n      default: () => null\n    },\n    /**\n     * The `latestQuery` object from the useFind data\n     */\n    latestQuery: {\n      type: Object,\n      // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n      default: () => null\n    }\n  },\n  // eslint-disable-next-line\n  setup(props, context) {\n    /**\n     * The number of pages available based on the results returned in the latestQuery prop.\n     */\n    const pageCount = computed(() => {\n      const q = props.latestQuery\n      if (q && q.response) {\n        return Math.ceil(q.response.total / props.value.$limit)\n      } else {\n        return 1\n      }\n    })\n    /**\n     * The `currentPage` is calculated based on the $limit and $skip values provided in\n     * the v-model object.\n     *\n     * Setting `currentPage` to a new numeric value will emit the appropriate values out\n     * the v-model. (using the default `input` event)\n     */\n    const currentPage = computed({\n      set(pageNumber) {\n        if (pageNumber < 1) {\n          pageNumber = 1\n        } else if (pageNumber > pageCount.value) {\n          pageNumber = pageCount.value\n        }\n        const $limit = props.value.$limit\n        const $skip = $limit * (pageNumber - 1)\n        context.emit('input', { $limit, $skip })\n      },\n      get() {\n        const params = props.value\n        if (params) {\n          return pageCount.value === 0 ? 0 : params.$skip / params.$limit + 1\n        } else {\n          return 1\n        }\n      }\n    })\n    watch(\n      () => pageCount.value,\n      () => {\n        const lq = props.latestQuery\n        if (lq && lq.response && currentPage.value > pageCount.value) {\n          currentPage.value = pageCount.value\n        }\n      }\n    )\n    const canPrev = computed(() => {\n      return currentPage.value - 1 > 0\n    })\n    const canNext = computed(() => {\n      return currentPage.value < pageCount.value\n    })\n    function toStart() {\n      currentPage.value = 1\n    }\n    function toEnd() {\n      currentPage.value = pageCount.value\n    }\n    function toPage(pageNumber) {\n      currentPage.value = pageNumber\n    }\n    function next() {\n      currentPage.value++\n    }\n    function prev() {\n      currentPage.value--\n    }\n    // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n    return () => {\n      if (context.slots.default) {\n        return context.slots.default({\n          currentPage: currentPage.value,\n          pageCount: pageCount.value,\n          canPrev: canPrev.value,\n          canNext: canNext.value,\n          toStart,\n          toEnd,\n          toPage,\n          prev,\n          next\n        })\n      } else {\n        return createElement('div', {}, [\n          createElement('p', `FeathersVuexPagination uses the default slot:`),\n          createElement('p', `#default=\"{ currentPage, pageCount }\"`)\n        ])\n      }\n    }\n  }\n}\n","/*\neslint\n@typescript-eslint/explicit-function-return-type: 0,\n@typescript-eslint/no-explicit-any: 0\n*/\nimport _get from 'lodash/get'\n/**\n * A global object that holds references to all Model Classes in the application.\n */\nexport const clients = {\n  byAlias: {},\n  byHost: {}\n}\n/**\n * prepareAddModel wraps options in a closure around addModel\n * @param options\n */\nexport function addClient({ client, serverAlias }) {\n  // Save reference to the clients by host uri, if it was available.\n  let uri = ''\n  if (client.io) {\n    uri = _get(client, 'io.io.uri')\n  }\n  if (uri) {\n    clients.byHost[uri] = client\n  }\n  // Save reference to clients by serverAlias.\n  clients.byAlias[serverAlias] = client\n}\nexport function clearClients() {\n  function deleteKeys(path) {\n    Object.keys(clients[path]).forEach((key) => {\n      delete clients[path][key]\n    })\n  }\n  deleteKeys('byAlias')\n  deleteKeys('byHost')\n}\n","import { globalModels, prepareAddModel } from './global-models'\nimport { mergeWithAccessors, checkNamespace, getId } from '../utils'\nimport _merge from 'lodash/merge'\nimport _get from 'lodash/get'\nimport { EventEmitter } from 'events'\nconst defaultOptions = {\n  clone: false,\n  commit: true,\n  merge: true\n}\n/** Ensures value has EventEmitter instance props */\nfunction assertIsEventEmitter(val) {\n  if (\n    !Object.keys(EventEmitter.prototype).every((eeKey) =>\n      Object.prototype.hasOwnProperty.call(val, eeKey)\n    )\n  ) {\n    throw new Error(`Expected EventEmitter, but got ${val}`)\n  }\n}\n/**\n *\n * @param options\n */\nexport default function makeBaseModel(options) {\n  const addModel = prepareAddModel(options)\n  const { serverAlias } = options\n  // If this serverAlias already has a BaseModel, return it\n  const ExistingBaseModel = _get(globalModels, [serverAlias, 'BaseModel'])\n  if (ExistingBaseModel) {\n    return ExistingBaseModel\n  }\n  class BaseModel {\n    constructor(data, options) {\n      // You have to pass at least an empty object to get a tempId.\n      data = data || {}\n      options = Object.assign({}, defaultOptions, options)\n      const {\n        store,\n        keepCopiesInStore,\n        copiesById: copiesByIdOnModel,\n        models,\n        instanceDefaults,\n        idField,\n        tempIdField,\n        setupInstance,\n        getFromStore,\n        namespace,\n        _commit\n      } = this.constructor\n      const id = getId(data, idField)\n      const hasValidId = id !== null && id !== undefined\n      const tempId =\n        data && data.hasOwnProperty(tempIdField) ? data[tempIdField] : undefined\n      const hasValidTempId = tempId !== null && tempId !== undefined\n      const copiesById = keepCopiesInStore\n        ? store.state[namespace].copiesById\n        : copiesByIdOnModel\n      const existingItem =\n        hasValidId && !options.clone\n          ? getFromStore.call(this.constructor, id)\n          : null\n      // If it already exists, update the original and return\n      if (existingItem) {\n        data = setupInstance.call(this, data, { models, store }) || data\n        _commit.call(this.constructor, 'mergeInstance', data)\n        return existingItem\n      }\n      // If cloning and a clone already exists, update and return the original clone. Only one clone is allowed.\n      const existingClone =\n        (hasValidId || hasValidTempId) && options.clone\n          ? copiesById[id] || copiesById[tempId]\n          : null\n      if (existingClone) {\n        // This must be done in a mutation to avoid Vuex errors.\n        _commit.call(this.constructor, 'merge', {\n          dest: existingClone,\n          source: data\n        })\n        return existingClone\n      }\n      // Mark as a clone\n      if (options.clone) {\n        Object.defineProperty(this, '__isClone', {\n          value: true,\n          enumerable: false\n        })\n      }\n      // Setup instanceDefaults\n      if (instanceDefaults && typeof instanceDefaults === 'function') {\n        const defaults =\n          instanceDefaults.call(this, data, { models, store }) || data\n        mergeWithAccessors(this, defaults)\n      }\n      // Handles Vue objects or regular ones. We can't simply assign or return\n      // the data due to how Vue wraps everything into an accessor.\n      if (options.merge !== false) {\n        mergeWithAccessors(\n          this,\n          setupInstance.call(this, data, { models, store }) || data\n        )\n      }\n      // Add the item to the store\n      if (!options.clone && options.commit !== false && store) {\n        _commit.call(this.constructor, 'addItem', this)\n      }\n      return this\n    }\n    // eslint-disable-next-line\n    static instanceDefaults(data, ctx) {\n      return data\n    }\n    // eslint-disable-next-line\n    static setupInstance(data, ctx) {\n      return data\n    }\n    static diffOnPatch(data) {\n      return data\n    }\n    /**\n     * Calls `getter`, passing this model's ID as the parameter\n     * @param getter name of getter to call\n     */\n    getGetterWithId(getter) {\n      const { _getters, idField, tempIdField } = this.constructor\n      const id =\n        getId(this, idField) != null ? getId(this, idField) : this[tempIdField]\n      return _getters.call(this.constructor, getter, id)\n    }\n    get isCreatePending() {\n      return this.getGetterWithId('isCreatePendingById')\n    }\n    get isUpdatePending() {\n      return this.getGetterWithId('isUpdatePendingById')\n    }\n    get isPatchPending() {\n      return this.getGetterWithId('isPatchPendingById')\n    }\n    get isRemovePending() {\n      return this.getGetterWithId('isRemovePendingById')\n    }\n    get isSavePending() {\n      return this.getGetterWithId('isSavePendingById')\n    }\n    get isPending() {\n      return this.getGetterWithId('isPendingById')\n    }\n    static getId(record) {\n      const { idField } = this.constructor\n      return getId(record, idField)\n    }\n    static find(params) {\n      return this._dispatch('find', params)\n    }\n    static findInStore(params) {\n      return this._getters('find', params)\n    }\n    static count(params) {\n      return this._dispatch('count', params)\n    }\n    static countInStore(params) {\n      return this._getters('count', params)\n    }\n    static get(id, params) {\n      if (params) {\n        return this._dispatch('get', [id, params])\n      } else {\n        return this._dispatch('get', id)\n      }\n    }\n    static getFromStore(id, params) {\n      return this._getters('get', id, params)\n    }\n    /**\n     * An alias for store.getters. Can only call function-based getters, since\n     * it's meant for only `find` and `get`.\n     * @param method the vuex getter name without the namespace\n     * @param payload if provided, the getter will be called as a function\n     */\n    static _getters(name, idOrParams, params) {\n      const { namespace, store } = this\n      if (checkNamespace(namespace, this, options.debug)) {\n        if (!store.getters.hasOwnProperty(`${namespace}/${name}`)) {\n          throw new Error(`Could not find getter named ${namespace}/${name}`)\n        }\n        return store.getters[`${namespace}/${name}`](idOrParams, params)\n      }\n    }\n    /**\n     * An alias for store.commit\n     * @param method the vuex mutation name without the namespace\n     * @param payload the payload for the mutation\n     */\n    static _commit(method, payload) {\n      const { namespace, store } = this\n      if (checkNamespace(namespace, this, options.debug)) {\n        store.commit(`${namespace}/${method}`, payload)\n      }\n    }\n    /**\n     * An alias for store.dispatch\n     * @param method the vuex action name without the namespace\n     * @param payload the payload for the action\n     */\n    static _dispatch(method, payload) {\n      const { namespace, store } = this\n      if (checkNamespace(namespace, this, options.debug)) {\n        return store.dispatch(`${namespace}/${method}`, payload)\n      }\n    }\n    /**\n     * make the server side documents hydrated on client a FeathersVuexModel\n     */\n    static hydrateAll() {\n      const { namespace, store } = this\n      const state = store.state[namespace]\n      const commit = store.commit\n      // Replace each plain object with a model instance.\n      Object.keys(state.keyedById).forEach((id) => {\n        const record = state.keyedById[id]\n        commit(`${namespace}/removeItem`, record)\n        commit(`${namespace}/addItem`, record)\n      })\n    }\n    /**\n     * clone the current record using the `createCopy` mutation\n     */\n    clone(data) {\n      const { idField, tempIdField } = this.constructor\n      if (this.__isClone) {\n        throw new Error('You cannot clone a copy')\n      }\n      const id =\n        getId(this, idField) != null ? getId(this, idField) : this[tempIdField]\n      return this._clone(id, data)\n    }\n    _clone(id, data = {}) {\n      const { store, namespace, _commit, _getters } = this.constructor\n      const { keepCopiesInStore } = store.state[namespace]\n      _commit.call(this.constructor, `createCopy`, id)\n      if (keepCopiesInStore) {\n        return Object.assign(\n          _getters.call(this.constructor, 'getCopyById', id),\n          data\n        )\n      } else {\n        // const { copiesById } = this.constructor as typeof BaseModel\n        return Object.assign(this.constructor.copiesById[id], data)\n      }\n    }\n    /**\n     * Reset a clone to match the instance in the store.\n     */\n    reset() {\n      const { idField, tempIdField, _commit } = this.constructor\n      if (this.__isClone) {\n        const id =\n          getId(this, idField) != null\n            ? getId(this, idField)\n            : this[tempIdField]\n        _commit.call(this.constructor, 'resetCopy', id)\n        return this\n      } else {\n        throw new Error('You cannot reset a non-copy')\n      }\n    }\n    /**\n     * Update a store instance to match a clone.\n     */\n    commit() {\n      const { idField, tempIdField, _commit, _getters } = this.constructor\n      if (this.__isClone) {\n        const id =\n          getId(this, idField) != null\n            ? getId(this, idField)\n            : this[tempIdField]\n        _commit.call(this.constructor, 'commitCopy', id)\n        return _getters.call(this.constructor, 'get', id)\n      } else {\n        throw new Error('You cannot call commit on a non-copy')\n      }\n    }\n    /**\n     * A shortcut to either call create or patch/update\n     * @param params\n     */\n    save(params) {\n      const { idField, preferUpdate } = this.constructor\n      const id = getId(this, idField)\n      if (id != null) {\n        return preferUpdate ? this.update(params) : this.patch(params)\n      } else {\n        return this.create(params)\n      }\n    }\n    /**\n     * Calls service create with the current instance data\n     * @param params\n     */\n    create(params) {\n      const { _dispatch } = this.constructor\n      const data = Object.assign({}, this)\n      if (data[options.idField] === null) {\n        delete data[options.idField]\n      }\n      return _dispatch.call(this.constructor, 'create', [data, params])\n    }\n    /**\n     * Calls service patch with the current instance data\n     * @param params\n     */\n    patch(params) {\n      const { idField, _dispatch } = this.constructor\n      const id = getId(this, idField)\n      if (id == null) {\n        const error = new Error(\n          `Missing ${idField} property. You must create the data before you can patch with this data`\n        )\n        return Promise.reject(error)\n      }\n      return _dispatch.call(this.constructor, 'patch', [id, this, params])\n    }\n    /**\n     * Calls service update with the current instance data\n     * @param params\n     */\n    update(params) {\n      const { idField, _dispatch } = this.constructor\n      const id = getId(this, idField)\n      if (id !== 0 && !id) {\n        const error = new Error(\n          `Missing ${idField} property. You must create the data before you can update with this data`\n        )\n        return Promise.reject(error)\n      }\n      return _dispatch.call(this.constructor, 'update', [id, this, params])\n    }\n    /**\n     * Calls service remove with the current instance id\n     * @param params\n     */\n    remove(params) {\n      const { idField, tempIdField, _dispatch, _commit } = this.constructor\n      const id = getId(this, idField)\n      if (id != null) {\n        if (params && params.eager) {\n          _commit.call(this.constructor, 'removeItem', id)\n        }\n        return _dispatch.call(this.constructor, 'remove', [id, params])\n      } else {\n        // is temp\n        _commit.call(this.constructor, 'removeTemps', [this[tempIdField]])\n        _commit.call(this.constructor, 'clearCopy', [this[tempIdField]])\n        return Promise.resolve(this)\n      }\n    }\n    toJSON() {\n      return _merge({}, this)\n    }\n  }\n  BaseModel.keepCopiesInStore = options.keepCopiesInStore\n  BaseModel.idField = options.idField\n  BaseModel.tempIdField = options.tempIdField\n  BaseModel.preferUpdate = options.preferUpdate\n  BaseModel.serverAlias = options.serverAlias\n  BaseModel.models = globalModels // Can access other Models here\n  BaseModel.copiesById = {}\n  BaseModel.merge = mergeWithAccessors\n  BaseModel.modelName = 'BaseModel'\n  for (const n in EventEmitter.prototype) {\n    BaseModel[n] = EventEmitter.prototype[n]\n  }\n  addModel(BaseModel)\n  const BaseModelEventEmitter = BaseModel\n  assertIsEventEmitter(BaseModelEventEmitter)\n  return BaseModelEventEmitter\n}\n","/*\neslint\n@typescript-eslint/explicit-function-return-type: 0,\n@typescript-eslint/no-explicit-any: 0\n*/\nimport _omit from 'lodash/omit'\nexport default function makeDefaultState(options) {\n  const nonStateProps = [\n    'Model',\n    'service',\n    'instanceDefaults',\n    'setupInstance',\n    'handleEvents',\n    'extend',\n    'state',\n    'getters',\n    'mutations',\n    'actions'\n  ]\n  const state = {\n    ids: [],\n    keyedById: {},\n    copiesById: {},\n    tempsById: {},\n    pagination: {\n      defaultLimit: null,\n      defaultSkip: null\n    },\n    paramsForServer: ['$populateParams'],\n    debounceEventsTime: null,\n    isFindPending: false,\n    isGetPending: false,\n    isCreatePending: false,\n    isUpdatePending: false,\n    isPatchPending: false,\n    isRemovePending: false,\n    errorOnFind: null,\n    errorOnGet: null,\n    errorOnCreate: null,\n    errorOnUpdate: null,\n    errorOnPatch: null,\n    errorOnRemove: null,\n    isIdCreatePending: [],\n    isIdUpdatePending: [],\n    isIdPatchPending: [],\n    isIdRemovePending: []\n  }\n  if (options.Model) {\n    state.modelName = options.Model.modelName\n  }\n  const startingState = _omit(options, nonStateProps)\n  return Object.assign({}, state, startingState)\n}\n","/*\neslint\n@typescript-eslint/explicit-function-return-type: 0,\n@typescript-eslint/no-explicit-any: 0\n*/\nimport sift from 'sift'\nimport { _ } from '@feathersjs/commons'\nimport { filterQuery, sorter, select } from '@feathersjs/adapter-commons'\nimport { globalModels as models } from './global-models'\nimport _get from 'lodash/get'\nimport _omit from 'lodash/omit'\nimport { isRef } from '@vue/composition-api'\nconst FILTERS = ['$sort', '$limit', '$skip', '$select']\nconst additionalOperators = ['$elemMatch']\nconst getCopiesById = ({\n  keepCopiesInStore,\n  servicePath,\n  serverAlias,\n  copiesById\n}) => {\n  if (keepCopiesInStore) {\n    return copiesById\n  } else {\n    const Model = _get(models, [serverAlias, 'byServicePath', servicePath])\n    return Model.copiesById\n  }\n}\nexport default function makeServiceGetters() {\n  return {\n    list(state) {\n      return state.ids.map((id) => state.keyedById[id])\n    },\n    find: (state) => (params) => {\n      if (isRef(params)) {\n        params = params.value\n      }\n      params = Object.assign({}, params) || {}\n      // Set params.temps to true to include the tempsById records\n      params.temps = params.hasOwnProperty('temps') ? params.temps : false\n      // Set params.copies to true to include the copiesById records\n      params.copies = params.hasOwnProperty('copies') ? params.copies : false\n      const { paramsForServer, whitelist, keyedById } = state\n      const q = _omit(params.query || {}, paramsForServer)\n      const { query, filters } = filterQuery(q, {\n        operators: additionalOperators.concat(whitelist)\n      })\n      let values = _.values(keyedById)\n      if (params.temps) {\n        values.push(..._.values(state.tempsById))\n      }\n      values = values.filter(sift(query))\n      if (params.copies) {\n        const { idField } = state\n        const copiesById = getCopiesById(state)\n        values.forEach((val, i, arr) => {\n          const copy = copiesById[val[idField]]\n          if (copy) {\n            // replace keyedById value with existing clone value\n            arr[i] = copy\n          }\n        })\n      }\n      const total = values.length\n      if (filters.$sort) {\n        values.sort(sorter(filters.$sort))\n      }\n      if (filters.$skip) {\n        values = values.slice(filters.$skip)\n      }\n      if (typeof filters.$limit !== 'undefined') {\n        values = values.slice(0, filters.$limit)\n      }\n      if (filters.$select) {\n        values = values.map((value) =>\n          _.pick(value, ...filters.$select.slice())\n        )\n      }\n      return {\n        total,\n        limit: filters.$limit || 0,\n        skip: filters.$skip || 0,\n        data: values\n      }\n    },\n    count: (state, getters) => (params) => {\n      if (isRef(params)) {\n        params = params.value\n      }\n      if (!params.query) {\n        throw 'params must contain a query-object'\n      }\n      const cleanQuery = _omit(params.query, FILTERS)\n      params.query = cleanQuery\n      return getters.find(params).total\n    },\n    get: ({ keyedById, tempsById, idField, tempIdField }) => (\n      id,\n      params = {}\n    ) => {\n      if (isRef(id)) {\n        id = id.value\n      }\n      if (isRef(params)) {\n        params = params.value\n      }\n      const record = keyedById[id] && select(params, idField)(keyedById[id])\n      if (record) {\n        return record\n      }\n      const tempRecord =\n        tempsById[id] && select(params, tempIdField)(tempsById[id])\n      return tempRecord || null\n    },\n    getCopyById: (state) => (id) => {\n      const copiesById = getCopiesById(state)\n      return copiesById[id]\n    },\n    isCreatePendingById: ({ isIdCreatePending }) => (id) =>\n      isIdCreatePending.includes(id),\n    isUpdatePendingById: ({ isIdUpdatePending }) => (id) =>\n      isIdUpdatePending.includes(id),\n    isPatchPendingById: ({ isIdPatchPending }) => (id) =>\n      isIdPatchPending.includes(id),\n    isRemovePendingById: ({ isIdRemovePending }) => (id) =>\n      isIdRemovePending.includes(id),\n    isSavePendingById: (state, getters) => (id) =>\n      getters.isCreatePendingById(id) ||\n      getters.isUpdatePendingById(id) ||\n      getters.isPatchPendingById(id),\n    isPendingById: (state, getters) => (id) =>\n      getters.isSavePendingById(id) || getters.isRemovePendingById(id)\n  }\n}\n","/*\neslint\n@typescript-eslint/explicit-function-return-type: 0,\n@typescript-eslint/no-explicit-any: 0,\nno-var: 0\n*/\nimport Vue from 'vue'\nimport { serializeError } from 'serialize-error'\nimport {\n  updateOriginal,\n  mergeWithAccessors,\n  assignTempId,\n  getId,\n  getQueryInfo\n} from '../utils'\nimport { globalModels as models } from './global-models'\nimport _omit from 'lodash/omit'\nimport _get from 'lodash/get'\nimport _isObject from 'lodash/isObject'\nexport default function makeServiceMutations() {\n  function addItems(state, items) {\n    const { serverAlias, idField, tempIdField, modelName } = state\n    const Model = _get(models, [serverAlias, modelName])\n    const BaseModel = _get(models, [serverAlias, 'BaseModel'])\n    for (let item of items) {\n      const id = getId(item, idField)\n      const isTemp = id === null || id === undefined\n      // If the response contains a real id, remove isTemp\n      if (id != null) {\n        delete item.__isTemp\n      }\n      if (Model && !(item instanceof BaseModel) && !(item instanceof Model)) {\n        item = new Model(item, { commit: false })\n      }\n      if (isTemp) {\n        let tempId = item[tempIdField]\n        if (tempId == null) {\n          tempId = assignTempId(state, item)\n        }\n        item.__isTemp = true\n        Vue.set(state.tempsById, tempId, item)\n      } else {\n        // Only add the id if it's not already in the `ids` list.\n        if (!state.ids.includes(id)) {\n          state.ids.push(id)\n        }\n        Vue.set(state.keyedById, id, item)\n      }\n    }\n  }\n  function updateItems(state, items) {\n    const { idField, replaceItems, addOnUpsert, serverAlias, modelName } = state\n    const Model = _get(models, [serverAlias, modelName])\n    const BaseModel = _get(models, [state.serverAlias, 'BaseModel'])\n    for (let item of items) {\n      const id = getId(item, idField)\n      // If the response contains a real id, remove isTemp\n      if (id != null) {\n        delete item.__isTemp\n      }\n      // Update the record\n      if (id !== null && id !== undefined) {\n        if (state.ids.includes(id)) {\n          // Completely replace the item\n          if (replaceItems) {\n            if (Model && !(item instanceof Model)) {\n              item = new Model(item)\n            }\n            Vue.set(state.keyedById, id, item)\n            // Merge in changes\n          } else {\n            /**\n             * If we have a Model class, calling new Model(incomingData) will call update\n             * the original record with the accessors and setupInstance data.\n             * This means that date objects and relationships will be preserved.\n             *\n             * If there's no Model class, just call updateOriginal on the incoming data.\n             */\n            if (\n              Model &&\n              !(item instanceof BaseModel) &&\n              !(item instanceof Model)\n            ) {\n              item = new Model(item)\n            } else {\n              const original = state.keyedById[id]\n              updateOriginal(original, item)\n            }\n          }\n          // if addOnUpsert then add the record into the state, else discard it.\n        } else if (addOnUpsert) {\n          state.ids.push(id)\n          Vue.set(state.keyedById, id, item)\n        }\n        continue\n      }\n    }\n  }\n  function mergeInstance(state, item) {\n    const { idField } = state\n    const id = getId(item, idField)\n    const existingItem = state.keyedById[id]\n    if (existingItem) {\n      mergeWithAccessors(existingItem, item)\n    }\n  }\n  function merge(state, { dest, source }) {\n    mergeWithAccessors(dest, source)\n  }\n  return {\n    mergeInstance,\n    merge,\n    addItem(state, item) {\n      addItems(state, [item])\n    },\n    addItems,\n    updateItem(state, item) {\n      updateItems(state, [item])\n    },\n    updateItems(state, items) {\n      if (!Array.isArray(items)) {\n        throw new Error(\n          'You must provide an array to the `updateItems` mutation.'\n        )\n      }\n      updateItems(state, items)\n    },\n    // Promotes temp to \"real\" item:\n    // - adds _id to temp\n    // - removes __isTemp flag\n    // - migrates temp from tempsById to keyedById\n    updateTemp(state, { id, tempId }) {\n      const temp = state.tempsById[tempId]\n      if (temp) {\n        temp[state.idField] = id\n        Vue.delete(temp, '__isTemp')\n        Vue.delete(state.tempsById, tempId)\n        // If an item already exists in the store from the `created` event firing\n        // it will be replaced here\n        Vue.set(state.keyedById, id, temp)\n        // Only add the id if it's not already in the `ids` list.\n        if (!state.ids.includes(id)) {\n          state.ids.push(id)\n        }\n      }\n      // Add _id to temp's clone as well if it exists\n      const Model = _get(models, [state.serverAlias, state.modelName])\n      const tempClone = Model && Model.copiesById && Model.copiesById[tempId]\n      if (tempClone) {\n        tempClone[state.idField] = id\n        Model.copiesById[id] = tempClone\n        Vue.delete(tempClone, '__isTemp')\n      }\n    },\n    removeItem(state, item) {\n      const { idField } = state\n      const idToBeRemoved = _isObject(item) ? getId(item, idField) : item\n      const isIdOk = idToBeRemoved !== null && idToBeRemoved !== undefined\n      const index = state.ids.findIndex((i) => i === idToBeRemoved)\n      const Model = _get(models, `[${state.serverAlias}][${state.modelName}]`)\n      const copiesById = state.keepCopiesInStore\n        ? state.copiesById\n        : Model.copiesById\n      if (isIdOk && index !== null && index !== undefined) {\n        Vue.delete(state.ids, index)\n        Vue.delete(state.keyedById, idToBeRemoved)\n        if (copiesById.hasOwnProperty(idToBeRemoved)) {\n          Vue.delete(copiesById, idToBeRemoved)\n        }\n      }\n    },\n    // Removes temp records\n    removeTemps(state, tempIds) {\n      tempIds.forEach((id) => {\n        const temp = state.tempsById[id]\n        if (temp) {\n          if (temp[state.idField]) {\n            // Removes __isTemp if created\n            delete temp.__isTemp\n            Vue.delete(temp, '__isTemp')\n          }\n        }\n      })\n      state.tempsById = _omit(state.tempsById, tempIds)\n    },\n    removeItems(state, items) {\n      const { idField } = state\n      if (!Array.isArray(items)) {\n        throw new Error(\n          'You must provide an array to the `removeItems` mutation.'\n        )\n      }\n      // Make sure we have an array of ids. Assume all are the same.\n      const containsObjects = items[0] && _isObject(items[0])\n      const idsToRemove = containsObjects\n        ? items.map((item) => getId(item, idField))\n        : items\n      const mapOfIdsToRemove = idsToRemove.reduce((map, id) => {\n        map[id] = true\n        return map\n      }, {})\n      const Model = _get(models, [\n        state.serverAlias,\n        'byServicePath',\n        state.servicePath\n      ])\n      const copiesById = state.keepCopiesInStore\n        ? state.copiesById\n        : Model.copiesById\n      idsToRemove.forEach((id) => {\n        Vue.delete(state.keyedById, id)\n        if (copiesById.hasOwnProperty(id)) {\n          Vue.delete(copiesById, id)\n        }\n      })\n      // Get indexes to remove from the ids array.\n      const mapOfIndexesToRemove = state.ids.reduce((map, id, index) => {\n        if (mapOfIdsToRemove[id]) {\n          map[index] = true\n        }\n        return map\n      }, {})\n      // Remove highest indexes first, so the indexes don't change\n      const indexesInReverseOrder = Object.keys(mapOfIndexesToRemove).sort(\n        (a, b) => {\n          if (a < b) {\n            return 1\n          } else if (a > b) {\n            return -1\n          } else {\n            return 0\n          }\n        }\n      )\n      indexesInReverseOrder.forEach((indexInIdsArray) => {\n        Vue.delete(state.ids, indexInIdsArray)\n      })\n    },\n    clearAll(state) {\n      state.ids = []\n      state.keyedById = {}\n      if (state.keepCopiesInStore) {\n        state.copiesById = {}\n      } else {\n        const Model = _get(models, [\n          state.serverAlias,\n          'byServicePath',\n          state.servicePath\n        ])\n        Object.keys(Model.copiesById).forEach((k) =>\n          Vue.delete(Model.copiesById, k)\n        )\n      }\n    },\n    // Creates a copy of the record with the passed-in id, stores it in copiesById\n    createCopy(state, id) {\n      const { servicePath, keepCopiesInStore, serverAlias } = state\n      const current = state.keyedById[id] || state.tempsById[id]\n      const Model = _get(models, [serverAlias, 'byServicePath', servicePath])\n      let item\n      if (Model) {\n        item = new Model(current, { clone: true })\n      } else {\n        const existingClone = state.copiesById[id]\n        item = existingClone\n          ? mergeWithAccessors(existingClone, current)\n          : mergeWithAccessors({}, current)\n      }\n      if (keepCopiesInStore) {\n        state.copiesById[id] = item\n      } else {\n        // Since it won't be added to the store, make it a Vue object\n        if (!item.hasOwnProperty('__ob__')) {\n          item = Vue.observable(item)\n        }\n        if (!Model.hasOwnProperty('copiesById')) {\n          Object.defineProperty(Model, 'copiesById', { value: {} })\n        }\n        Model.copiesById[id] = item\n      }\n    },\n    // Resets the copy to match the original record, locally\n    resetCopy(state, id) {\n      const { servicePath, keepCopiesInStore } = state\n      const Model = _get(models, [\n        state.serverAlias,\n        'byServicePath',\n        servicePath\n      ])\n      const copy = keepCopiesInStore\n        ? state.copiesById[id]\n        : Model && _get(Model, ['copiesById', id])\n      if (copy) {\n        const original =\n          copy[state.idField] != null\n            ? state.keyedById[id]\n            : state.tempsById[id]\n        mergeWithAccessors(copy, original)\n      }\n    },\n    // Deep assigns copy to original record, locally\n    commitCopy(state, id) {\n      const { servicePath, keepCopiesInStore } = state\n      const Model = _get(models, [\n        state.serverAlias,\n        'byServicePath',\n        servicePath\n      ])\n      const copy = keepCopiesInStore\n        ? state.copiesById[id]\n        : Model && _get(Model, ['copiesById', id])\n      if (copy) {\n        const original =\n          copy[state.idField] != null\n            ? state.keyedById[id]\n            : state.tempsById[id]\n        mergeWithAccessors(original, copy)\n      }\n    },\n    // Removes the copy from copiesById\n    clearCopy(state, id) {\n      const { keepCopiesInStore } = state\n      const Model = _get(models, [\n        state.serverAlias,\n        'byServicePath',\n        state.servicePath\n      ])\n      const copiesById = keepCopiesInStore ? state.copiesById : Model.copiesById\n      if (copiesById[id]) {\n        Vue.delete(copiesById, id)\n      }\n    },\n    /**\n     * Stores pagination data on state.pagination based on the query identifier\n     * (qid) The qid must be manually assigned to `params.qid`\n     */\n    updatePaginationForQuery(state, { qid, response, query = {} }) {\n      const { data, total } = response\n      const { idField } = state\n      const ids = data.map((i) => i[idField])\n      const queriedAt = new Date().getTime()\n      const { queryId, queryParams, pageId, pageParams } = getQueryInfo(\n        { qid, query },\n        response\n      )\n      if (!state.pagination[qid]) {\n        Vue.set(state.pagination, qid, {})\n      }\n      if (!query.hasOwnProperty('$limit') && response.hasOwnProperty('limit')) {\n        Vue.set(state.pagination, 'defaultLimit', response.limit)\n      }\n      if (!query.hasOwnProperty('$skip') && response.hasOwnProperty('skip')) {\n        Vue.set(state.pagination, 'defaultSkip', response.skip)\n      }\n      const mostRecent = {\n        query,\n        queryId,\n        queryParams,\n        pageId,\n        pageParams,\n        queriedAt,\n        total\n      }\n      const qidData = state.pagination[qid] || {}\n      Object.assign(qidData, { mostRecent })\n      qidData[queryId] = qidData[queryId] || {}\n      const queryData = {\n        total,\n        queryParams\n      }\n      Object.assign(qidData[queryId], queryData)\n      const pageData = {\n        [pageId]: { pageParams, ids, queriedAt }\n      }\n      Object.assign(qidData[queryId], pageData)\n      const newState = Object.assign({}, state.pagination[qid], qidData)\n      Vue.set(state.pagination, qid, newState)\n    },\n    setPending(state, method) {\n      const uppercaseMethod = method.charAt(0).toUpperCase() + method.slice(1)\n      state[`is${uppercaseMethod}Pending`] = true\n    },\n    unsetPending(state, method) {\n      const uppercaseMethod = method.charAt(0).toUpperCase() + method.slice(1)\n      state[`is${uppercaseMethod}Pending`] = false\n    },\n    setIdPending(state, payload) {\n      const { method, id } = payload\n      const uppercaseMethod = method.charAt(0).toUpperCase() + method.slice(1)\n      const isIdMethodPending = state[`isId${uppercaseMethod}Pending`]\n      // if `id` is an array, ensure it doesn't have duplicates\n      const ids = Array.isArray(id) ? [...new Set(id)] : [id]\n      ids.forEach((id) => {\n        if (typeof id === 'number' || typeof id === 'string') {\n          isIdMethodPending.push(id)\n        }\n      })\n    },\n    unsetIdPending(state, payload) {\n      const { method, id } = payload\n      const uppercaseMethod = method.charAt(0).toUpperCase() + method.slice(1)\n      const isIdMethodPending = state[`isId${uppercaseMethod}Pending`]\n      // if `id` is an array, ensure it doesn't have duplicates\n      const ids = Array.isArray(id) ? [...new Set(id)] : [id]\n      ids.forEach((id) => {\n        const idx = isIdMethodPending.indexOf(id)\n        if (idx >= 0) {\n          Vue.delete(isIdMethodPending, idx)\n        }\n      })\n    },\n    setError(state, payload) {\n      const { method, error } = payload\n      const uppercaseMethod = method.charAt(0).toUpperCase() + method.slice(1)\n      state[`errorOn${uppercaseMethod}`] = Object.assign(\n        {},\n        serializeError(error)\n      )\n    },\n    clearError(state, method) {\n      const uppercaseMethod = method.charAt(0).toUpperCase() + method.slice(1)\n      state[`errorOn${uppercaseMethod}`] = null\n    }\n  }\n}\n","var __awaiter =\n  (this && this.__awaiter) ||\n  function (thisArg, _arguments, P, generator) {\n    function adopt(value) {\n      return value instanceof P\n        ? value\n        : new P(function (resolve) {\n            resolve(value)\n          })\n    }\n    return new (P || (P = Promise))(function (resolve, reject) {\n      function fulfilled(value) {\n        try {\n          step(generator.next(value))\n        } catch (e) {\n          reject(e)\n        }\n      }\n      function rejected(value) {\n        try {\n          step(generator['throw'](value))\n        } catch (e) {\n          reject(e)\n        }\n      }\n      function step(result) {\n        result.done\n          ? resolve(result.value)\n          : adopt(result.value).then(fulfilled, rejected)\n      }\n      step((generator = generator.apply(thisArg, _arguments || [])).next())\n    })\n  }\n/*\neslint\n@typescript-eslint/explicit-function-return-type: 0,\n@typescript-eslint/no-explicit-any: 0\n*/\nimport fastCopy from 'fast-copy'\nimport { getId } from '../utils'\nexport default function makeServiceActions({ service, options }) {\n  const serviceActions = {\n    find({ commit, dispatch }, params) {\n      params = params || {}\n      params = fastCopy(params)\n      // For working with client-side services, paginate.default must be truthy.\n      if (params.paginate === true) {\n        params.paginate = { default: true }\n      }\n      commit('setPending', 'find')\n      return service\n        .find(params)\n        .then((response) =>\n          dispatch('handleFindResponse', { params, response })\n        )\n        .catch((error) => dispatch('handleFindError', { params, error }))\n    },\n    // Two query syntaxes are supported, since actions only receive one argument.\n    //   1. Just pass the id: `get(1)`\n    //   2. Pass arguments as an array: `get([null, params])`\n    get({ state, getters, commit, dispatch }, args) {\n      let id\n      let params\n      let skipRequestIfExists\n      if (Array.isArray(args)) {\n        id = args[0]\n        params = args[1] || {}\n      } else {\n        id = args\n        params = {}\n      }\n      params = fastCopy(params)\n      if ('skipRequestIfExists' in params) {\n        skipRequestIfExists = params.skipRequestIfExists\n        delete params.skipRequestIfExists\n      } else {\n        skipRequestIfExists = state.skipRequestIfExists\n      }\n      function getFromRemote() {\n        commit('setPending', 'get')\n        return service\n          .get(id, params)\n          .then(function (item) {\n            return __awaiter(this, void 0, void 0, function* () {\n              dispatch('addOrUpdate', item)\n              commit('unsetPending', 'get')\n              return state.keyedById[id]\n            })\n          })\n          .catch((error) => {\n            commit('setError', { method: 'get', error })\n            commit('unsetPending', 'get')\n            return Promise.reject(error)\n          })\n      }\n      // If the records is already in store, return it\n      const existingItem = getters.get(id, params)\n      if (existingItem && skipRequestIfExists) {\n        return Promise.resolve(existingItem)\n      }\n      return getFromRemote()\n    },\n    create({ commit, dispatch, state }, dataOrArray) {\n      const { idField, tempIdField } = state\n      let data\n      let params\n      let tempIds\n      if (Array.isArray(dataOrArray)) {\n        data = dataOrArray[0]\n        params = dataOrArray[1]\n      } else {\n        data = dataOrArray\n      }\n      params = fastCopy(params)\n      if (Array.isArray(data)) {\n        tempIds = data.map((i) => i[tempIdField])\n      } else {\n        tempIds = [data[tempIdField]] // Array of tempIds\n      }\n      params = params || {}\n      commit('setPending', 'create')\n      commit('setIdPending', { method: 'create', id: tempIds })\n      return service\n        .create(data, params)\n        .then((response) =>\n          __awaiter(this, void 0, void 0, function* () {\n            if (Array.isArray(response)) {\n              dispatch('addOrUpdateList', response)\n              response = response.map((item) => {\n                const id = getId(item, idField)\n                return state.keyedById[id]\n              })\n            } else {\n              const id = getId(response, idField)\n              const tempId = tempIds[0]\n              if (id != null && tempId != null) {\n                commit('updateTemp', { id, tempId })\n              }\n              response = dispatch('addOrUpdate', response)\n              // response = state.keyedById[id]\n            }\n            commit('removeTemps', tempIds)\n            return response\n          })\n        )\n        .catch((error) => {\n          commit('setError', { method: 'create', error })\n          return Promise.reject(error)\n        })\n        .finally(() => {\n          commit('unsetPending', 'create')\n          commit('unsetIdPending', { method: 'create', id: tempIds })\n        })\n    },\n    update({ commit, dispatch, state }, [id, data, params]) {\n      commit('setPending', 'update')\n      commit('setIdPending', { method: 'update', id })\n      params = fastCopy(params)\n      return service\n        .update(id, data, params)\n        .then(function (item) {\n          return __awaiter(this, void 0, void 0, function* () {\n            dispatch('addOrUpdate', item)\n            return state.keyedById[id]\n          })\n        })\n        .catch((error) => {\n          commit('setError', { method: 'update', error })\n          return Promise.reject(error)\n        })\n        .finally(() => {\n          commit('unsetPending', 'update')\n          commit('unsetIdPending', { method: 'update', id })\n        })\n    },\n    /**\n     * If params.data is provided, it will be passed as the patch data (instead of the `data` arg).\n     * This provides a simple way to patch with partial data.\n     */\n    patch({ commit, dispatch, state }, [id, data, params]) {\n      commit('setPending', 'patch')\n      commit('setIdPending', { method: 'patch', id })\n      params = fastCopy(params)\n      if (service.FeathersVuexModel && (!params || !params.data)) {\n        data = service.FeathersVuexModel.diffOnPatch(data)\n      }\n      if (params && params.data) {\n        data = params.data\n      }\n      return service\n        .patch(id, data, params)\n        .then(function (item) {\n          return __awaiter(this, void 0, void 0, function* () {\n            dispatch('addOrUpdate', item)\n            return state.keyedById[id]\n          })\n        })\n        .catch((error) => {\n          commit('setError', { method: 'patch', error })\n          return Promise.reject(error)\n        })\n        .finally(() => {\n          commit('unsetPending', 'patch')\n          commit('unsetIdPending', { method: 'patch', id })\n        })\n    },\n    remove({ commit }, idOrArray) {\n      let id\n      let params\n      if (Array.isArray(idOrArray)) {\n        id = idOrArray[0]\n        params = idOrArray[1]\n      } else {\n        id = idOrArray\n      }\n      params = params || {}\n      params = fastCopy(params)\n      commit('setPending', 'remove')\n      commit('setIdPending', { method: 'remove', id })\n      return service\n        .remove(id, params)\n        .then((item) => {\n          commit('removeItem', id)\n          return item\n        })\n        .catch((error) => {\n          commit('setError', { method: 'remove', error })\n          return Promise.reject(error)\n        })\n        .finally(() => {\n          commit('unsetPending', 'remove')\n          commit('unsetIdPending', { method: 'remove', id })\n        })\n    }\n  }\n  const actions = {\n    count({ dispatch }, params) {\n      params = params || {}\n      params = fastCopy(params)\n      if (!params.query) {\n        throw 'params must contain a query-object'\n      }\n      params.query.$limit = 0 // <- limit 0 in feathers is a fast count query\n      return dispatch('find', params)\n        .then((response) => {\n          return response.total || response.length\n        })\n        .catch((error) => dispatch('handleFindError', { params, error }))\n    },\n    /**\n     * Handle the response from the find action.\n     *\n     * @param payload consists of the following two params\n     *   @param params - Remember that these params aren't what was sent to the\n     *         Feathers client.  The client modifies the params object.\n     *   @param response\n     */\n    handleFindResponse({ state, commit, dispatch }, { params, response }) {\n      return __awaiter(this, void 0, void 0, function* () {\n        const { qid = 'default', query } = params\n        const { idField } = state\n        dispatch('addOrUpdateList', response)\n        commit('unsetPending', 'find')\n        const mapItemFromState = (item) => {\n          const id = getId(item, idField)\n          return state.keyedById[id]\n        }\n        // The pagination data will be under `pagination.default` or whatever qid is passed.\n        response.data &&\n          commit('updatePaginationForQuery', { qid, response, query })\n        // Swap out the response records for their Vue-observable store versions\n        const data = response.data || response\n        const mappedFromState = data.map(mapItemFromState)\n        if (mappedFromState[0] !== undefined) {\n          response.data\n            ? (response.data = mappedFromState)\n            : (response = mappedFromState)\n        }\n        response = yield dispatch('afterFind', response)\n        return response\n      })\n    },\n    handleFindError({ commit }, { params, error }) {\n      return __awaiter(this, void 0, void 0, function* () {\n        commit('setError', { method: 'find', params, error })\n        commit('unsetPending', 'find')\n        return Promise.reject(error)\n      })\n    },\n    afterFind({}, response) {\n      return __awaiter(this, void 0, void 0, function* () {\n        return response\n      })\n    },\n    addOrUpdateList({ state, commit }, response) {\n      const list = response.data || response\n      const isPaginated = response.hasOwnProperty('total')\n      const toAdd = []\n      const toUpdate = []\n      const toRemove = []\n      const { idField, autoRemove } = state\n      const disableRemove = response.disableRemove || !autoRemove\n      list.forEach((item) => {\n        const id = getId(item, idField)\n        const existingItem = state.keyedById[id]\n        if (id !== null && id !== undefined) {\n          existingItem ? toUpdate.push(item) : toAdd.push(item)\n        }\n      })\n      if (!isPaginated && !disableRemove) {\n        // Find IDs from the state which are not in the list\n        state.ids.forEach((id) => {\n          if (!list.some((item) => getId(item, idField) === id)) {\n            toRemove.push(state.keyedById[id])\n          }\n        })\n        commit('removeItems', toRemove) // commit removal\n      }\n      if (options.Model) {\n        toAdd.forEach((item, index) => {\n          toAdd[index] = new options.Model(item, { commit: false })\n        })\n      }\n      commit('addItems', toAdd)\n      commit('updateItems', toUpdate)\n      return response\n    },\n    /**\n     * Adds or updates an item. If a matching temp record is found in the store,\n     * the temp record will completely replace the existingItem. This is to work\n     * around the common scenario where the realtime `created` event arrives before\n     * the `create` response returns to create the record. The reference to the\n     * original temporary record must be maintained in order to preserve reactivity.\n     */\n    addOrUpdate({ state, commit }, item) {\n      const { idField } = state\n      const id = getId(item, idField)\n      const isIdOk = id !== null && id !== undefined\n      if (\n        service.FeathersVuexModel &&\n        !(item instanceof service.FeathersVuexModel)\n      ) {\n        item = new service.FeathersVuexModel(item, { commit: false })\n      }\n      if (isIdOk) {\n        if (state.keyedById[id]) {\n          commit('updateItem', item)\n        } else {\n          commit('addItem', item)\n        }\n      }\n      return item\n    }\n  }\n  /**\n   * Only add a method to the store if the service actually has that same method.\n   */\n  Object.keys(serviceActions).map((method) => {\n    if (service[method] && typeof service[method] === 'function') {\n      actions[method] = serviceActions[method]\n    }\n  })\n  return actions\n}\n","/*\neslint\n@typescript-eslint/explicit-function-return-type: 0,\n@typescript-eslint/no-explicit-any: 0\n*/\nimport _pick from 'lodash/pick'\nimport _merge from 'lodash/merge'\nimport makeDefaultState from './service-module.state'\nimport makeGetters from './service-module.getters'\nimport makeMutations from './service-module.mutations'\nimport makeActions from './service-module.actions'\nexport default function makeServiceModule(service, options, store) {\n  const defaults = {\n    namespaced: true,\n    state: makeDefaultState(options),\n    getters: makeGetters(),\n    mutations: makeMutations(),\n    actions: makeActions({ service, options })\n  }\n  const fromOptions = _pick(options, [\n    'state',\n    'getters',\n    'mutations',\n    'actions'\n  ])\n  const merged = _merge({}, defaults, fromOptions)\n  const extended = options.extend({ store, module: merged })\n  const finalModule = _merge({}, merged, extended)\n  return finalModule\n}\n","var __awaiter =\n  (this && this.__awaiter) ||\n  function (thisArg, _arguments, P, generator) {\n    function adopt(value) {\n      return value instanceof P\n        ? value\n        : new P(function (resolve) {\n            resolve(value)\n          })\n    }\n    return new (P || (P = Promise))(function (resolve, reject) {\n      function fulfilled(value) {\n        try {\n          step(generator.next(value))\n        } catch (e) {\n          reject(e)\n        }\n      }\n      function rejected(value) {\n        try {\n          step(generator['throw'](value))\n        } catch (e) {\n          reject(e)\n        }\n      }\n      function step(result) {\n        result.done\n          ? resolve(result.value)\n          : adopt(result.value).then(fulfilled, rejected)\n      }\n      step((generator = generator.apply(thisArg, _arguments || [])).next())\n    })\n  }\nimport { getId } from '../utils'\nimport _debounce from 'lodash/debounce'\nimport { globalModels } from './global-models'\nexport default function enableServiceEvents({\n  service,\n  Model,\n  store,\n  options\n}) {\n  const debouncedQueue = {\n    addOrUpdateById: {},\n    removeItemById: {},\n    enqueueAddOrUpdate(item) {\n      const id = getId(item, options.idField)\n      this.addOrUpdateById[id] = item\n      if (this.removeItemById.hasOwnProperty(id)) {\n        delete this.removeItemById[id]\n      }\n      this.flushAddOrUpdateQueue()\n    },\n    enqueueRemoval(item) {\n      const id = getId(item, options.idField)\n      this.removeItemById[id] = item\n      if (this.addOrUpdateById.hasOwnProperty(id)) {\n        delete this.addOrUpdateById[id]\n      }\n      this.flushRemoveItemQueue()\n    },\n    flushAddOrUpdateQueue: _debounce(\n      function () {\n        return __awaiter(this, void 0, void 0, function* () {\n          const values = Object.values(this.addOrUpdateById)\n          if (values.length === 0) return\n          yield store.dispatch(`${options.namespace}/addOrUpdateList`, {\n            data: values,\n            disableRemove: true\n          })\n          this.addOrUpdateById = {}\n        })\n      },\n      options.debounceEventsTime || 20,\n      { maxWait: options.debounceEventsMaxWait }\n    ),\n    flushRemoveItemQueue: _debounce(\n      function () {\n        const values = Object.values(this.removeItemById)\n        if (values.length === 0) return\n        store.commit(`${options.namespace}/removeItems`, values)\n        this.removeItemById = {}\n      },\n      options.debounceEventsTime || 20,\n      { maxWait: options.debounceEventsMaxWait }\n    )\n  }\n  const handleEvent = (eventName, item, mutationName) => {\n    const handler = options.handleEvents[eventName]\n    const confirmOrArray = handler(item, {\n      model: Model,\n      models: globalModels\n    })\n    const [affectsStore, modified = item] = Array.isArray(confirmOrArray)\n      ? confirmOrArray\n      : [confirmOrArray]\n    if (affectsStore) {\n      if (!options.debounceEventsTime) {\n        eventName === 'removed'\n          ? store.commit(`${options.namespace}/removeItem`, modified)\n          : store.dispatch(`${options.namespace}/${mutationName}`, modified)\n      } else {\n        eventName === 'removed'\n          ? debouncedQueue.enqueueRemoval(item)\n          : debouncedQueue.enqueueAddOrUpdate(item)\n      }\n    }\n  }\n  // Listen to socket events when available.\n  service.on('created', (item) => {\n    handleEvent('created', item, 'addOrUpdate')\n    Model.emit && Model.emit('created', item)\n  })\n  service.on('updated', (item) => {\n    handleEvent('updated', item, 'addOrUpdate')\n    Model.emit && Model.emit('updated', item)\n  })\n  service.on('patched', (item) => {\n    handleEvent('patched', item, 'addOrUpdate')\n    Model.emit && Model.emit('patched', item)\n  })\n  service.on('removed', (item) => {\n    handleEvent('removed', item, 'removeItem')\n    Model.emit && Model.emit('removed', item)\n  })\n  return debouncedQueue\n}\n","import makeServiceModule from './make-service-module'\nimport { globalModels, prepareAddModel } from './global-models'\nimport enableServiceEvents from './service-module.events'\nimport { makeNamespace, getServicePath, assignIfNotPresent } from '../utils'\nimport _get from 'lodash/get'\nconst defaults = {\n  namespace: '',\n  servicePath: '',\n  extend: ({ module }) => module,\n  state: {},\n  getters: {},\n  mutations: {},\n  actions: {},\n  instanceDefaults: () => ({}),\n  setupInstance: (instance) => instance,\n  debounceEventsMaxWait: 1000\n}\nconst events = ['created', 'patched', 'updated', 'removed']\n/**\n * prepare only wraps the makeServicePlugin to provide the globalOptions.\n * @param globalOptions\n */\nexport default function prepareMakeServicePlugin(globalOptions) {\n  const addModel = prepareAddModel(globalOptions)\n  /**\n   * (1) Make a Vuex plugin for the provided service.\n   * (2a) Attach the vuex store to the BaseModel.\n   * (2b) If the Model does not extend the BaseModel, monkey patch it, too\n   * (3) Setup real-time events\n   */\n  return function makeServicePlugin(config) {\n    if (!config.service) {\n      throw new Error(\n        'No service was provided. If you passed one in, check that you have configured a transport plugin on the Feathers Client. Make sure you use the client version of the transport.'\n      )\n    }\n    const options = Object.assign({}, defaults, globalOptions, config)\n    const {\n      Model,\n      service,\n      namespace,\n      nameStyle,\n      instanceDefaults,\n      setupInstance,\n      preferUpdate\n    } = options\n    if (globalOptions.handleEvents && options.handleEvents) {\n      options.handleEvents = Object.assign(\n        {},\n        globalOptions.handleEvents,\n        options.handleEvents\n      )\n    }\n    events.forEach((eventName) => {\n      if (!options.handleEvents[eventName])\n        options.handleEvents[eventName] = () => options.enableEvents || true\n    })\n    // Make sure we get a service path from either the service or the options\n    let { servicePath } = options\n    if (!servicePath) {\n      servicePath = getServicePath(service, Model)\n    }\n    options.servicePath = servicePath\n    service.FeathersVuexModel = Model\n    return (store) => {\n      // (1^) Create and register the Vuex module\n      options.namespace = makeNamespace(namespace, servicePath, nameStyle)\n      const module = makeServiceModule(service, options, store)\n      // Don't preserve state if reinitialized (prevents state pollution in SSR)\n      store.registerModule(options.namespace, module, { preserveState: false })\n      // (2a^) Monkey patch the BaseModel in globalModels\n      const BaseModel = _get(globalModels, [options.serverAlias, 'BaseModel'])\n      if (BaseModel && !BaseModel.store) {\n        Object.assign(BaseModel, {\n          store\n        })\n      }\n      // (2b^) Monkey patch the Model(s) and add to globalModels\n      assignIfNotPresent(Model, {\n        namespace: options.namespace,\n        servicePath,\n        instanceDefaults,\n        setupInstance,\n        preferUpdate\n      })\n      // As per 1^, don't preserve state on the model either (prevents state pollution in SSR)\n      Object.assign(Model, {\n        store\n      })\n      if (!Model.modelName || Model.modelName === 'BaseModel') {\n        throw new Error(\n          'The modelName property is required for Feathers-Vuex Models'\n        )\n      }\n      addModel(Model)\n      // (3^) Setup real-time events\n      if (options.enableEvents) {\n        enableServiceEvents({ service, Model, store, options })\n      }\n    }\n  }\n}\n","export default function setupAuthState({\n  userService,\n  serverAlias,\n  responseEntityField = 'user',\n  entityIdField = 'userId'\n}) {\n  const state = {\n    accessToken: null,\n    payload: null,\n    entityIdField,\n    responseEntityField,\n    isAuthenticatePending: false,\n    isLogoutPending: false,\n    errorOnAuthenticate: null,\n    errorOnLogout: null,\n    user: null,\n    userService: null,\n    serverAlias\n  }\n  // If a userService string was passed, add a user attribute\n  if (userService) {\n    Object.assign(state, { userService })\n  }\n  return state\n}\n","/*\neslint\n@typescript-eslint/explicit-function-return-type: 0,\n@typescript-eslint/no-explicit-any: 0\n*/\nexport default function makeAuthGetters({ userService }) {\n  const getters = {}\n  if (userService) {\n    Object.assign(getters, {\n      // A reactive user object\n      user(state, getters, rootState) {\n        if (!state.user) {\n          return null\n        }\n        const { idField } = rootState[userService]\n        const userId = state.user[idField]\n        return rootState[userService].keyedById[userId] || null\n      },\n      isAuthenticated(state, getters) {\n        return !!getters.user\n      }\n    })\n  }\n  return getters\n}\n","/*\neslint\n@typescript-eslint/explicit-function-return-type: 0,\n@typescript-eslint/no-explicit-any: 0\n*/\nimport { serializeError } from 'serialize-error'\nexport default function makeAuthMutations() {\n  return {\n    setAccessToken(state, payload) {\n      state.accessToken = payload\n    },\n    setPayload(state, payload) {\n      state.payload = payload\n    },\n    setUser(state, payload) {\n      state.user = payload\n    },\n    setAuthenticatePending(state) {\n      state.isAuthenticatePending = true\n    },\n    unsetAuthenticatePending(state) {\n      state.isAuthenticatePending = false\n    },\n    setLogoutPending(state) {\n      state.isLogoutPending = true\n    },\n    unsetLogoutPending(state) {\n      state.isLogoutPending = false\n    },\n    setAuthenticateError(state, error) {\n      state.errorOnAuthenticate = Object.assign({}, serializeError(error))\n    },\n    clearAuthenticateError(state) {\n      state.errorOnAuthenticate = null\n    },\n    setLogoutError(state, error) {\n      state.errorOnLogout = Object.assign({}, serializeError(error))\n    },\n    clearLogoutError(state) {\n      state.errorOnLogout = null\n    },\n    logout(state) {\n      state.payload = null\n      state.accessToken = null\n      if (state.user) {\n        state.user = null\n      }\n    }\n  }\n}\n","/*\neslint\n@typescript-eslint/explicit-function-return-type: 0,\n@typescript-eslint/no-explicit-any: 0\n*/\nimport fastCopy from 'fast-copy'\nimport { globalModels as models } from '../service-module/global-models'\nimport { getNameFromPath } from '../utils'\nexport default function makeAuthActions(feathersClient) {\n  return {\n    authenticate(store, dataOrArray) {\n      const { commit, state, dispatch } = store\n      const [data, params] = Array.isArray(dataOrArray)\n        ? dataOrArray\n        : [dataOrArray]\n      commit('setAuthenticatePending')\n      if (state.errorOnAuthenticate) {\n        commit('clearAuthenticateError')\n      }\n      return feathersClient\n        .authenticate(data, params)\n        .then((response) => {\n          return dispatch('responseHandler', response)\n        })\n        .catch((error) => {\n          commit('setAuthenticateError', error)\n          commit('unsetAuthenticatePending')\n          return Promise.reject(error)\n        })\n    },\n    responseHandler({ commit, state, dispatch }, response) {\n      if (response.accessToken) {\n        commit('setAccessToken', response.accessToken)\n        commit('setPayload', response)\n        // Handle when user is returned in the authenticate response\n        let user = response[state.responseEntityField]\n        if (user) {\n          if (state.serverAlias && state.userService) {\n            const Model = Object.keys(models[state.serverAlias])\n              .map((modelName) => models[state.serverAlias][modelName])\n              .find(\n                (model) =>\n                  getNameFromPath(model.servicePath) ===\n                  getNameFromPath(state.userService)\n              )\n            if (Model) {\n              // Copy user object to avoid setupInstance modifying payload state\n              user = new Model(fastCopy(user))\n            }\n          }\n          commit('setUser', user)\n          commit('unsetAuthenticatePending')\n        } else if (\n          state.userService &&\n          response.hasOwnProperty(state.entityIdField)\n        ) {\n          return dispatch('populateUser', response[state.entityIdField]).then(\n            () => {\n              commit('unsetAuthenticatePending')\n              return response\n            }\n          )\n        }\n        return response\n        // If there was not an accessToken in the response, allow the response to pass through to handle two-factor-auth\n      } else {\n        return response\n      }\n    },\n    populateUser({ commit, state, dispatch }, userId) {\n      return dispatch(`${state.userService}/get`, userId, { root: true }).then(\n        (user) => {\n          commit('setUser', user)\n          return user\n        }\n      )\n    },\n    logout({ commit }) {\n      commit('setLogoutPending')\n      return feathersClient\n        .logout()\n        .then((response) => {\n          commit('logout')\n          commit('unsetLogoutPending')\n          return response\n        })\n        .catch((error) => {\n          return Promise.reject(error)\n        })\n    }\n  }\n}\n","import setupState from './auth-module.state'\nimport setupGetters from './auth-module.getters'\nimport setupMutations from './auth-module.mutations'\nimport setupActions from './auth-module.actions'\nconst defaults = {\n  namespace: 'auth',\n  userService: '',\n  serverAlias: 'api',\n  debug: false,\n  state: {},\n  getters: {},\n  mutations: {},\n  actions: {} // for custom actions\n}\nexport default function authPluginInit(feathersClient, globalOptions) {\n  if (!feathersClient || !feathersClient.service) {\n    throw new Error('You must pass a Feathers Client instance to feathers-vuex')\n  }\n  return function makeAuthPlugin(options) {\n    options = Object.assign(\n      {},\n      defaults,\n      { serverAlias: globalOptions.serverAlias },\n      options\n    )\n    if (!feathersClient.authenticate) {\n      throw new Error(\n        'You must register the @feathersjs/authentication-client plugin before using the feathers-vuex auth module'\n      )\n    }\n    if (options.debug && options.userService && !options.serverAlias) {\n      console.warn(\n        'A userService was provided, but no serverAlias was provided. To make sure the user record is an instance of the User model, a serverAlias must be provided.'\n      )\n    }\n    const defaultState = setupState(options)\n    const defaultGetters = setupGetters(options)\n    const defaultMutations = setupMutations()\n    const defaultActions = setupActions(feathersClient)\n    return function setupStore(store) {\n      const { namespace } = options\n      store.registerModule(namespace, {\n        namespaced: true,\n        state: Object.assign({}, defaultState, options.state),\n        getters: Object.assign({}, defaultGetters, options.getters),\n        mutations: Object.assign({}, defaultMutations, options.mutations),\n        actions: Object.assign({}, defaultActions, options.actions)\n      })\n    }\n  }\n}\n","/*\neslint\n@typescript-eslint/no-explicit-any: 0\n*/\nimport { computed, isRef, reactive, toRefs, watch } from '@vue/composition-api'\nimport debounce from 'lodash/debounce'\nimport { getItemsFromQueryInfo, getQueryInfo } from './utils'\nconst unwrapParams = (params) => (isRef(params) ? params.value : params)\nexport default function find(options) {\n  const defaults = {\n    model: null,\n    params: null,\n    qid: 'default',\n    queryWhen: computed(() => true),\n    local: false,\n    immediate: true\n  }\n  const { model, params, queryWhen, qid, local, immediate } = Object.assign(\n    {},\n    defaults,\n    options\n  )\n  if (!model) {\n    throw new Error(\n      `No model provided for useFind(). Did you define and register it with FeathersVuex?`\n    )\n  }\n  const getFetchParams = (providedParams) => {\n    const provided = unwrapParams(providedParams)\n    if (provided) {\n      return provided\n    }\n    const fetchParams = unwrapParams(options.fetchParams)\n    // Returning null fetchParams allows the query to be skipped.\n    if (fetchParams || fetchParams === null) {\n      return fetchParams\n    }\n    const params = unwrapParams(options.params)\n    return params\n  }\n  const state = reactive({\n    qid,\n    isPending: false,\n    haveBeenRequested: false,\n    haveLoaded: local,\n    error: null,\n    debounceTime: null,\n    latestQuery: null,\n    isLocal: local\n  })\n  const computes = {\n    // The find getter\n    items: computed(() => {\n      const getterParams = unwrapParams(params)\n      if (getterParams) {\n        if (getterParams.paginate) {\n          const serviceState = model.store.state[model.servicePath]\n          const { defaultSkip, defaultLimit } = serviceState.pagination\n          const skip = getterParams.query.$skip || defaultSkip\n          const limit = getterParams.query.$limit || defaultLimit\n          const pagination =\n            computes.paginationData.value[getterParams.qid || state.qid] || {}\n          const response = skip != null && limit != null ? { limit, skip } : {}\n          const queryInfo = getQueryInfo(getterParams, response)\n          const items = getItemsFromQueryInfo(\n            pagination,\n            queryInfo,\n            serviceState.keyedById\n          )\n          return items\n        } else {\n          return model.findInStore(getterParams).data\n        }\n      } else {\n        return []\n      }\n    }),\n    paginationData: computed(() => {\n      return model.store.state[model.servicePath].pagination\n    }),\n    servicePath: computed(() => model.servicePath)\n  }\n  function find(params) {\n    params = unwrapParams(params)\n    if (queryWhen.value && !state.isLocal) {\n      state.isPending = true\n      state.haveBeenRequested = true\n      return model.find(params).then((response) => {\n        // To prevent thrashing, only clear error on response, not on initial request.\n        state.error = null\n        state.haveLoaded = true\n        if (!Array.isArray(response)) {\n          const queryInfo = getQueryInfo(params, response)\n          queryInfo.response = response\n          queryInfo.isOutdated = false\n          state.latestQuery = queryInfo\n        }\n        state.isPending = false\n        return response\n      })\n    }\n  }\n  const methods = {\n    findDebounced(params) {\n      return find(params)\n    }\n  }\n  function findProxy(params) {\n    const paramsToUse = getFetchParams(params)\n    if (paramsToUse && paramsToUse.debounce) {\n      if (paramsToUse.debounce !== state.debounceTime) {\n        methods.findDebounced = debounce(find, paramsToUse.debounce)\n        state.debounceTime = paramsToUse.debounce\n      }\n      return methods.findDebounced(paramsToUse)\n    } else if (paramsToUse) {\n      return find(paramsToUse)\n    } else {\n      // Set error\n    }\n  }\n  watch(\n    () => getFetchParams(),\n    () => {\n      findProxy()\n    },\n    { immediate }\n  )\n  return Object.assign(\n    Object.assign(Object.assign({}, computes), toRefs(state)),\n    { find }\n  )\n}\n","export default {\n  props: {\n    service: {\n      type: String,\n      required: true\n    },\n    params: {\n      type: Object,\n      default: () => {\n        return {\n          query: {}\n        }\n      }\n    },\n    queryWhen: {\n      type: [Boolean, Function],\n      default: true\n    },\n    // If separate params are desired to fetch data, use fetchParams\n    // The watchers will automatically be updated, so you don't have to write 'fetchParams.query.propName'\n    fetchParams: {\n      type: Object\n    },\n    watch: {\n      type: [String, Array],\n      default: () => []\n    },\n    local: {\n      type: Boolean,\n      default: false\n    }\n  },\n  data: () => ({\n    isCountPending: false,\n    serverTotal: null\n  }),\n  computed: {\n    total() {\n      if (!this.local) {\n        return this.serverTotal\n      } else {\n        const { params, service, $store, temps } = this\n        return params ? $store.getters[`${service}/count`](params) : 0\n      }\n    },\n    scope() {\n      const { total, isCountPending } = this\n      return { total, isCountPending }\n    }\n  },\n  methods: {\n    findData() {\n      const params = this.fetchParams || this.params\n      if (\n        typeof this.queryWhen === 'function'\n          ? this.queryWhen(this.params)\n          : this.queryWhen\n      ) {\n        this.isCountPending = true\n        if (params) {\n          return this.$store\n            .dispatch(`${this.service}/count`, params)\n            .then((response) => {\n              this.isCountPending = false\n              this.serverTotal = response\n            })\n        }\n      }\n    },\n    fetchData() {\n      if (!this.local) {\n        if (this.params) {\n          return this.findData()\n        } else {\n          // TODO: access debug boolean from the store config, somehow.\n          // eslint-disable-next-line no-console\n          console.log(\n            `No query and no id provided, so no data will be fetched.`\n          )\n        }\n      }\n    }\n  },\n  created() {\n    if (!this.$FeathersVuex) {\n      throw new Error(\n        `You must first Vue.use the FeathersVuex plugin before using the 'FeathersVuexFind' component.`\n      )\n    }\n    if (!this.$store.state[this.service]) {\n      throw new Error(\n        `The '${this.service}' plugin not registered with feathers-vuex`\n      )\n    }\n    const watch = Array.isArray(this.watch) ? this.watch : [this.watch]\n    if (this.fetchParams || this.params) {\n      watch.forEach((prop) => {\n        if (typeof prop !== 'string') {\n          throw new Error(`Values in the 'watch' array must be strings.`)\n        }\n        if (this.fetchParams) {\n          if (prop.startsWith('params')) {\n            prop = prop.replace('params', 'fetchParams')\n          }\n        }\n        this.$watch(prop, this.fetchData)\n      })\n      this.fetchData()\n    }\n  },\n  render() {\n    return this.$scopedSlots.default(this.scope)\n  }\n}\n","/*\neslint\n@typescript-eslint/explicit-function-return-type: 0,\n@typescript-eslint/no-explicit-any: 0\n*/\nimport FeathersVuexFind from '../FeathersVuexFind'\nimport FeathersVuexGet from '../FeathersVuexGet'\nimport FeathersVuexFormWrapper from '../FeathersVuexFormWrapper'\nimport FeathersVuexInputWrapper from '../FeathersVuexInputWrapper'\nimport FeathersVuexPagination from '../FeathersVuexPagination'\nimport FeathersVuexCount from '../FeathersVuexCount'\nimport { globalModels } from '../service-module/global-models'\nexport const FeathersVuex = {\n  install(Vue, options = { components: true }) {\n    const shouldSetupComponents = options.components !== false\n    Vue.$FeathersVuex = globalModels\n    Vue.prototype.$FeathersVuex = globalModels\n    if (shouldSetupComponents) {\n      Vue.component('FeathersVuexFind', FeathersVuexFind)\n      Vue.component('FeathersVuexGet', FeathersVuexGet)\n      Vue.component('FeathersVuexFormWrapper', FeathersVuexFormWrapper)\n      Vue.component('FeathersVuexInputWrapper', FeathersVuexInputWrapper)\n      Vue.component('FeathersVuexPagination', FeathersVuexPagination)\n      Vue.component('FeathersVuexCount', FeathersVuexCount)\n    }\n  }\n}\n","/*\neslint\n@typescript-eslint/explicit-function-return-type: 0,\n@typescript-eslint/no-explicit-any: 0\n*/\nimport FeathersVuexFind from './FeathersVuexFind'\nimport FeathersVuexGet from './FeathersVuexGet'\nimport FeathersVuexFormWrapper from './FeathersVuexFormWrapper'\nimport FeathersVuexInputWrapper from './FeathersVuexInputWrapper'\nimport FeathersVuexPagination from './FeathersVuexPagination'\nimport makeFindMixin from './make-find-mixin'\nimport makeGetMixin from './make-get-mixin'\nimport { globalModels as models } from './service-module/global-models'\nimport { clients, addClient } from './service-module/global-clients'\nimport makeBaseModel from './service-module/make-base-model'\nimport prepareMakeServicePlugin from './service-module/make-service-plugin'\nimport prepareMakeAuthPlugin from './auth-module/make-auth-plugin'\nimport useFind from './useFind'\nimport useGet from './useGet'\nimport { initAuth, hydrateApi } from './utils'\nimport { FeathersVuex } from './vue-plugin/vue-plugin'\nconst events = ['created', 'patched', 'updated', 'removed']\nconst defaults = {\n  autoRemove: false,\n  addOnUpsert: false,\n  enableEvents: true,\n  idField: 'id',\n  tempIdField: '__id',\n  debug: false,\n  keepCopiesInStore: false,\n  nameStyle: 'short',\n  paramsForServer: ['$populateParams'],\n  preferUpdate: false,\n  replaceItems: false,\n  serverAlias: 'api',\n  handleEvents: {},\n  skipRequestIfExists: false,\n  whitelist: [] // Custom query operators that will be allowed in the find getter.\n}\nexport default function feathersVuex(feathers, options) {\n  if (!feathers || !feathers.service) {\n    throw new Error(\n      'The first argument to feathersVuex must be a feathers client.'\n    )\n  }\n  // Setup the event handlers. By default they just return the value of `options.enableEvents`\n  defaults.handleEvents = events.reduce((obj, eventName) => {\n    obj[eventName] = () => options.enableEvents || true\n    return obj\n  }, {})\n  options = Object.assign({}, defaults, options)\n  if (!options.serverAlias) {\n    throw new Error(\n      `You must provide a 'serverAlias' in the options to feathersVuex`\n    )\n  }\n  addClient({ client: feathers, serverAlias: options.serverAlias })\n  const BaseModel = makeBaseModel(options)\n  const makeServicePlugin = prepareMakeServicePlugin(options)\n  const makeAuthPlugin = prepareMakeAuthPlugin(feathers, options)\n  return {\n    makeServicePlugin,\n    BaseModel,\n    makeAuthPlugin,\n    FeathersVuex,\n    models: models,\n    clients\n  }\n}\nexport {\n  initAuth,\n  hydrateApi,\n  FeathersVuexFind,\n  FeathersVuexGet,\n  FeathersVuexFormWrapper,\n  FeathersVuexInputWrapper,\n  FeathersVuexPagination,\n  FeathersVuex,\n  makeFindMixin,\n  makeGetMixin,\n  models,\n  clients,\n  useFind,\n  useGet\n}\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var baseAssignValue = require('./_baseAssignValue'),\n    baseForOwn = require('./_baseForOwn'),\n    baseIteratee = require('./_baseIteratee');\n\n/**\n * Creates an object with the same keys as `object` and values generated\n * by running each own enumerable string keyed property of `object` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapKeys\n * @example\n *\n * var users = {\n *   'fred':    { 'user': 'fred',    'age': 40 },\n *   'pebbles': { 'user': 'pebbles', 'age': 1 }\n * };\n *\n * _.mapValues(users, function(o) { return o.age; });\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n *\n * // The `_.property` iteratee shorthand.\n * _.mapValues(users, 'age');\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n */\nfunction mapValues(object, iteratee) {\n  var result = {};\n  iteratee = baseIteratee(iteratee, 3);\n\n  baseForOwn(object, function(value, key, object) {\n    baseAssignValue(result, key, iteratee(value, key, object));\n  });\n  return result;\n}\n\nmodule.exports = mapValues;\n","import \"../../../src/components/VCheckbox/VSimpleCheckbox.sass\";\nimport ripple from '../../directives/ripple';\nimport Vue from 'vue';\nimport { VIcon } from '../VIcon'; // Mixins\n\nimport Colorable from '../../mixins/colorable';\nimport Themeable from '../../mixins/themeable'; // Utilities\n\nimport mergeData from '../../util/mergeData';\nimport { wrapInArray } from '../../util/helpers';\nexport default Vue.extend({\n  name: 'v-simple-checkbox',\n  functional: true,\n  directives: {\n    ripple\n  },\n  props: { ...Colorable.options.props,\n    ...Themeable.options.props,\n    disabled: Boolean,\n    ripple: {\n      type: Boolean,\n      default: true\n    },\n    value: Boolean,\n    indeterminate: Boolean,\n    indeterminateIcon: {\n      type: String,\n      default: '$checkboxIndeterminate'\n    },\n    onIcon: {\n      type: String,\n      default: '$checkboxOn'\n    },\n    offIcon: {\n      type: String,\n      default: '$checkboxOff'\n    }\n  },\n\n  render(h, {\n    props,\n    data,\n    listeners\n  }) {\n    const children = [];\n    let icon = props.offIcon;\n    if (props.indeterminate) icon = props.indeterminateIcon;else if (props.value) icon = props.onIcon;\n    children.push(h(VIcon, Colorable.options.methods.setTextColor(props.value && props.color, {\n      props: {\n        disabled: props.disabled,\n        dark: props.dark,\n        light: props.light\n      }\n    }), icon));\n\n    if (props.ripple && !props.disabled) {\n      const ripple = h('div', Colorable.options.methods.setTextColor(props.color, {\n        staticClass: 'v-input--selection-controls__ripple',\n        directives: [{\n          name: 'ripple',\n          value: {\n            center: true\n          }\n        }]\n      }));\n      children.push(ripple);\n    }\n\n    return h('div', mergeData(data, {\n      class: {\n        'v-simple-checkbox': true,\n        'v-simple-checkbox--disabled': props.disabled\n      },\n      on: {\n        click: e => {\n          e.stopPropagation();\n\n          if (data.on && data.on.input && !props.disabled) {\n            wrapInArray(data.on.input).forEach(f => f(!props.value));\n          }\n        }\n      }\n    }), [h('div', {\n      staticClass: 'v-input--selection-controls__input'\n    }, children)]);\n  }\n\n});\n//# sourceMappingURL=VSimpleCheckbox.js.map","'use strict';\n// B.2.3.8 String.prototype.fontsize(size)\nrequire('./_string-html')('fontsize', function (createHTML) {\n  return function fontsize(size) {\n    return createHTML(this, 'font', 'size', size);\n  };\n});\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n    Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n    o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n    if (mod && mod.__esModule) return mod;\n    var result = {};\n    if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n    __setModuleDefault(result, mod);\n    return result;\n};\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n    for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.hooks = void 0;\nconst hookUtils = __importStar(require(\"./hooks\"));\n__exportStar(require(\"./utils\"), exports);\nexports.hooks = hookUtils;\n//# sourceMappingURL=index.js.map","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","/*! https://mths.be/utf8js v2.1.2 by @mathias */\n\nvar stringFromCharCode = String.fromCharCode;\n\n// Taken from https://mths.be/punycode\nfunction ucs2decode(string) {\n\tvar output = [];\n\tvar counter = 0;\n\tvar length = string.length;\n\tvar value;\n\tvar extra;\n\twhile (counter < length) {\n\t\tvalue = string.charCodeAt(counter++);\n\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t// high surrogate, and there is a next character\n\t\t\textra = string.charCodeAt(counter++);\n\t\t\tif ((extra & 0xFC00) == 0xDC00) { // low surrogate\n\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t} else {\n\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\n\t\t\t\t// code unit is the high surrogate of a surrogate pair\n\t\t\t\toutput.push(value);\n\t\t\t\tcounter--;\n\t\t\t}\n\t\t} else {\n\t\t\toutput.push(value);\n\t\t}\n\t}\n\treturn output;\n}\n\n// Taken from https://mths.be/punycode\nfunction ucs2encode(array) {\n\tvar length = array.length;\n\tvar index = -1;\n\tvar value;\n\tvar output = '';\n\twhile (++index < length) {\n\t\tvalue = array[index];\n\t\tif (value > 0xFFFF) {\n\t\t\tvalue -= 0x10000;\n\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n\t\t\tvalue = 0xDC00 | value & 0x3FF;\n\t\t}\n\t\toutput += stringFromCharCode(value);\n\t}\n\treturn output;\n}\n\nfunction checkScalarValue(codePoint, strict) {\n\tif (codePoint >= 0xD800 && codePoint <= 0xDFFF) {\n\t\tif (strict) {\n\t\t\tthrow Error(\n\t\t\t\t'Lone surrogate U+' + codePoint.toString(16).toUpperCase() +\n\t\t\t\t' is not a scalar value'\n\t\t\t);\n\t\t}\n\t\treturn false;\n\t}\n\treturn true;\n}\n/*--------------------------------------------------------------------------*/\n\nfunction createByte(codePoint, shift) {\n\treturn stringFromCharCode(((codePoint >> shift) & 0x3F) | 0x80);\n}\n\nfunction encodeCodePoint(codePoint, strict) {\n\tif ((codePoint & 0xFFFFFF80) == 0) { // 1-byte sequence\n\t\treturn stringFromCharCode(codePoint);\n\t}\n\tvar symbol = '';\n\tif ((codePoint & 0xFFFFF800) == 0) { // 2-byte sequence\n\t\tsymbol = stringFromCharCode(((codePoint >> 6) & 0x1F) | 0xC0);\n\t}\n\telse if ((codePoint & 0xFFFF0000) == 0) { // 3-byte sequence\n\t\tif (!checkScalarValue(codePoint, strict)) {\n\t\t\tcodePoint = 0xFFFD;\n\t\t}\n\t\tsymbol = stringFromCharCode(((codePoint >> 12) & 0x0F) | 0xE0);\n\t\tsymbol += createByte(codePoint, 6);\n\t}\n\telse if ((codePoint & 0xFFE00000) == 0) { // 4-byte sequence\n\t\tsymbol = stringFromCharCode(((codePoint >> 18) & 0x07) | 0xF0);\n\t\tsymbol += createByte(codePoint, 12);\n\t\tsymbol += createByte(codePoint, 6);\n\t}\n\tsymbol += stringFromCharCode((codePoint & 0x3F) | 0x80);\n\treturn symbol;\n}\n\nfunction utf8encode(string, opts) {\n\topts = opts || {};\n\tvar strict = false !== opts.strict;\n\n\tvar codePoints = ucs2decode(string);\n\tvar length = codePoints.length;\n\tvar index = -1;\n\tvar codePoint;\n\tvar byteString = '';\n\twhile (++index < length) {\n\t\tcodePoint = codePoints[index];\n\t\tbyteString += encodeCodePoint(codePoint, strict);\n\t}\n\treturn byteString;\n}\n\n/*--------------------------------------------------------------------------*/\n\nfunction readContinuationByte() {\n\tif (byteIndex >= byteCount) {\n\t\tthrow Error('Invalid byte index');\n\t}\n\n\tvar continuationByte = byteArray[byteIndex] & 0xFF;\n\tbyteIndex++;\n\n\tif ((continuationByte & 0xC0) == 0x80) {\n\t\treturn continuationByte & 0x3F;\n\t}\n\n\t// If we end up here, it’s not a continuation byte\n\tthrow Error('Invalid continuation byte');\n}\n\nfunction decodeSymbol(strict) {\n\tvar byte1;\n\tvar byte2;\n\tvar byte3;\n\tvar byte4;\n\tvar codePoint;\n\n\tif (byteIndex > byteCount) {\n\t\tthrow Error('Invalid byte index');\n\t}\n\n\tif (byteIndex == byteCount) {\n\t\treturn false;\n\t}\n\n\t// Read first byte\n\tbyte1 = byteArray[byteIndex] & 0xFF;\n\tbyteIndex++;\n\n\t// 1-byte sequence (no continuation bytes)\n\tif ((byte1 & 0x80) == 0) {\n\t\treturn byte1;\n\t}\n\n\t// 2-byte sequence\n\tif ((byte1 & 0xE0) == 0xC0) {\n\t\tbyte2 = readContinuationByte();\n\t\tcodePoint = ((byte1 & 0x1F) << 6) | byte2;\n\t\tif (codePoint >= 0x80) {\n\t\t\treturn codePoint;\n\t\t} else {\n\t\t\tthrow Error('Invalid continuation byte');\n\t\t}\n\t}\n\n\t// 3-byte sequence (may include unpaired surrogates)\n\tif ((byte1 & 0xF0) == 0xE0) {\n\t\tbyte2 = readContinuationByte();\n\t\tbyte3 = readContinuationByte();\n\t\tcodePoint = ((byte1 & 0x0F) << 12) | (byte2 << 6) | byte3;\n\t\tif (codePoint >= 0x0800) {\n\t\t\treturn checkScalarValue(codePoint, strict) ? codePoint : 0xFFFD;\n\t\t} else {\n\t\t\tthrow Error('Invalid continuation byte');\n\t\t}\n\t}\n\n\t// 4-byte sequence\n\tif ((byte1 & 0xF8) == 0xF0) {\n\t\tbyte2 = readContinuationByte();\n\t\tbyte3 = readContinuationByte();\n\t\tbyte4 = readContinuationByte();\n\t\tcodePoint = ((byte1 & 0x07) << 0x12) | (byte2 << 0x0C) |\n\t\t\t(byte3 << 0x06) | byte4;\n\t\tif (codePoint >= 0x010000 && codePoint <= 0x10FFFF) {\n\t\t\treturn codePoint;\n\t\t}\n\t}\n\n\tthrow Error('Invalid UTF-8 detected');\n}\n\nvar byteArray;\nvar byteCount;\nvar byteIndex;\nfunction utf8decode(byteString, opts) {\n\topts = opts || {};\n\tvar strict = false !== opts.strict;\n\n\tbyteArray = ucs2decode(byteString);\n\tbyteCount = byteArray.length;\n\tbyteIndex = 0;\n\tvar codePoints = [];\n\tvar tmp;\n\twhile ((tmp = decodeSymbol(strict)) !== false) {\n\t\tcodePoints.push(tmp);\n\t}\n\treturn ucs2encode(codePoints);\n}\n\nmodule.exports = {\n\tversion: '2.1.2',\n\tencode: utf8encode,\n\tdecode: utf8decode\n};\n","/**\n * A specialized version of `baseAggregator` for arrays.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\nfunction arrayAggregator(array, setter, iteratee, accumulator) {\n  var index = -1,\n      length = array == null ? 0 : array.length;\n\n  while (++index < length) {\n    var value = array[index];\n    setter(accumulator, value, iteratee(value), array);\n  }\n  return accumulator;\n}\n\nmodule.exports = arrayAggregator;\n","import Vue from 'vue';\n/* @vue/component */\n\nexport default Vue.extend({\n  name: 'roundable',\n  props: {\n    rounded: [Boolean, String],\n    tile: Boolean\n  },\n  computed: {\n    roundedClasses() {\n      const composite = [];\n      const rounded = typeof this.rounded === 'string' ? String(this.rounded) : this.rounded === true;\n\n      if (this.tile) {\n        composite.push('rounded-0');\n      } else if (typeof rounded === 'string') {\n        const values = rounded.split(' ');\n\n        for (const value of values) {\n          composite.push(`rounded-${value}`);\n        }\n      } else if (rounded) {\n        composite.push('rounded');\n      }\n\n      return composite.length > 0 ? {\n        [composite.join(' ')]: true\n      } : {};\n    }\n\n  }\n});\n//# sourceMappingURL=index.js.map","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n  return toString.call(arr) == '[object Array]';\n};\n","var global = require('./_global');\nvar navigator = global.navigator;\n\nmodule.exports = navigator && navigator.userAgent || '';\n","import { attachedRoot } from '../../util/dom';\n\nfunction defaultConditional() {\n  return true;\n}\n\nfunction checkEvent(e, el, binding) {\n  // The include element callbacks below can be expensive\n  // so we should avoid calling them when we're not active.\n  // Explicitly check for false to allow fallback compatibility\n  // with non-toggleable components\n  if (!e || checkIsActive(e, binding) === false) return false; // If we're clicking inside the shadowroot, then the app root doesn't get the same\n  // level of introspection as to _what_ we're clicking. We want to check to see if\n  // our target is the shadowroot parent container, and if it is, ignore.\n\n  const root = attachedRoot(el);\n  if (typeof ShadowRoot !== 'undefined' && root instanceof ShadowRoot && root.host === e.target) return false; // Check if additional elements were passed to be included in check\n  // (click must be outside all included elements, if any)\n\n  const elements = (typeof binding.value === 'object' && binding.value.include || (() => []))(); // Add the root element for the component this directive was defined on\n\n\n  elements.push(el); // Check if it's a click outside our elements, and then if our callback returns true.\n  // Non-toggleable components should take action in their callback and return falsy.\n  // Toggleable can return true if it wants to deactivate.\n  // Note that, because we're in the capture phase, this callback will occur before\n  // the bubbling click event on any outside elements.\n\n  return !elements.some(el => el.contains(e.target));\n}\n\nfunction checkIsActive(e, binding) {\n  const isActive = typeof binding.value === 'object' && binding.value.closeConditional || defaultConditional;\n  return isActive(e);\n}\n\nfunction directive(e, el, binding, vnode) {\n  const handler = typeof binding.value === 'function' ? binding.value : binding.value.handler;\n  el._clickOutside.lastMousedownWasOutside && checkEvent(e, el, binding) && setTimeout(() => {\n    checkIsActive(e, binding) && handler && handler(e);\n  }, 0);\n}\n\nfunction handleShadow(el, callback) {\n  const root = attachedRoot(el);\n  callback(document);\n\n  if (typeof ShadowRoot !== 'undefined' && root instanceof ShadowRoot) {\n    callback(root);\n  }\n}\n\nexport const ClickOutside = {\n  // [data-app] may not be found\n  // if using bind, inserted makes\n  // sure that the root element is\n  // available, iOS does not support\n  // clicks on body\n  inserted(el, binding, vnode) {\n    const onClick = e => directive(e, el, binding, vnode);\n\n    const onMousedown = e => {\n      el._clickOutside.lastMousedownWasOutside = checkEvent(e, el, binding);\n    };\n\n    handleShadow(el, app => {\n      app.addEventListener('click', onClick, true);\n      app.addEventListener('mousedown', onMousedown, true);\n    });\n\n    if (!el._clickOutside) {\n      el._clickOutside = {\n        lastMousedownWasOutside: true\n      };\n    }\n\n    el._clickOutside[vnode.context._uid] = {\n      onClick,\n      onMousedown\n    };\n  },\n\n  unbind(el, binding, vnode) {\n    if (!el._clickOutside) return;\n    handleShadow(el, app => {\n      var _el$_clickOutside;\n\n      if (!app || !((_el$_clickOutside = el._clickOutside) != null && _el$_clickOutside[vnode.context._uid])) return;\n      const {\n        onClick,\n        onMousedown\n      } = el._clickOutside[vnode.context._uid];\n      app.removeEventListener('click', onClick, true);\n      app.removeEventListener('mousedown', onMousedown, true);\n    });\n    delete el._clickOutside[vnode.context._uid];\n  }\n\n};\nexport default ClickOutside;\n//# sourceMappingURL=index.js.map","import { FieldName } from '@shopify/address-consts';\nvar FIELD_REGEXP = /({\\w+})/g;\nexport var FIELDS_MAPPING = {\n  '{firstName}': FieldName.FirstName,\n  '{lastName}': FieldName.LastName,\n  '{country}': FieldName.Country,\n  '{city}': FieldName.City,\n  '{zip}': FieldName.PostalCode,\n  '{province}': FieldName.Zone,\n  '{address1}': FieldName.Address1,\n  '{address2}': FieldName.Address2,\n  '{phone}': FieldName.Phone,\n  '{company}': FieldName.Company\n};\n/*\n * Returns empty string if all replacement fields are empty.\n */\n\nexport function renderLineTemplate(country, template, address) {\n  var result = template.match(FIELD_REGEXP);\n  var line = template;\n\n  if (!result) {\n    return '';\n  }\n\n  var lineIsEmpty = true;\n  result.forEach(function (key) {\n    var addressKey = key.replace('{', '').replace('}', '');\n\n    if (address[addressKey]) {\n      lineIsEmpty = false;\n    }\n\n    switch (addressKey) {\n      case FieldName.Country:\n        line = line.replace(\"{\".concat(FieldName.Country, \"}\"), country.name);\n        break;\n\n      case FieldName.Zone:\n        line = line.replace(\"{\".concat(FieldName.Zone, \"}\"), address.province ? getZone(country.zones, address.province).name : '');\n        break;\n\n      default:\n        line = line.replace(key, address[addressKey] || '');\n        break;\n    }\n  });\n\n  if (lineIsEmpty) {\n    return '';\n  } else {\n    return line.trim().replace('  ', ' ');\n  }\n}\n\nfunction getZone(zones, zoneCode) {\n  return zones.find(function (zone) {\n    return zone.code === zoneCode;\n  }) || {\n    name: '',\n    code: ''\n  };\n}","var query = \"\\nquery countries($locale: SupportedLocale!) {\\n  countries(locale: $locale) {\\n    name\\n    code\\n    continent\\n    phoneNumberPrefix\\n    autocompletionField\\n    provinceKey\\n    labels {\\n      address1\\n      address2\\n      city\\n      company\\n      country\\n      firstName\\n      lastName\\n      phone\\n      postalCode\\n      zone\\n    }\\n    optionalLabels {\\n      address2\\n    }\\n    formatting {\\n      edit\\n      show\\n    }\\n    zones {\\n      name\\n      code\\n    }\\n  }\\n}\\n\\nquery country($countryCode: SupportedCountry!, $locale: SupportedLocale!) {\\n  country(countryCode: $countryCode, locale: $locale) {\\n    name\\n    code\\n    continent\\n    phoneNumberPrefix\\n    autocompletionField\\n    provinceKey\\n    labels {\\n      address1\\n      address2\\n      city\\n      company\\n      country\\n      firstName\\n      lastName\\n      phone\\n      postalCode\\n      zone\\n    }\\n    optionalLabels {\\n      address2\\n    }\\n    formatting {\\n      edit\\n      show\\n    }\\n    zones {\\n      name\\n      code\\n    }\\n  }\\n}\\n\";\nexport default query;","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _wrapNativeSuper(Class) { var _cache = typeof Map === \"function\" ? new Map() : undefined; _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; if (typeof Class !== \"function\") { throw new TypeError(\"Super expression must either be null or a function\"); } if (typeof _cache !== \"undefined\") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); }; return _wrapNativeSuper(Class); }\n\nfunction _construct(Parent, args, Class) { if (_isNativeReflectConstruct()) { _construct = Reflect.construct; } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _isNativeFunction(fn) { return Function.toString.call(fn).indexOf(\"[native code]\") !== -1; }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport _regeneratorRuntime from \"@babel/runtime/regenerator\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nimport { GRAPHQL_ENDPOINT, HEADERS, GraphqlOperationName } from '@shopify/address-consts';\nimport query from \"./graphqlQuery.mjs\";\nexport var loadCountries = memoizeAsync( /*#__PURE__*/function () {\n  var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(locale) {\n    var response, countries;\n    return _regeneratorRuntime.wrap(function _callee$(_context) {\n      while (1) {\n        switch (_context.prev = _context.next) {\n          case 0:\n            _context.next = 2;\n            return fetch(GRAPHQL_ENDPOINT, {\n              method: 'POST',\n              headers: HEADERS,\n              body: JSON.stringify({\n                query: query,\n                operationName: GraphqlOperationName.Countries,\n                variables: {\n                  locale: locale.replace(/-/, '_').toUpperCase()\n                }\n              })\n            });\n\n          case 2:\n            response = _context.sent;\n            _context.next = 5;\n            return response.json();\n\n          case 5:\n            countries = _context.sent;\n\n            if (!(!('data' in countries) && 'errors' in countries)) {\n              _context.next = 8;\n              break;\n            }\n\n            throw new CountryLoaderError(countries);\n\n          case 8:\n            return _context.abrupt(\"return\", countries.data.countries);\n\n          case 9:\n          case \"end\":\n            return _context.stop();\n        }\n      }\n    }, _callee);\n  }));\n\n  return function (_x) {\n    return _ref.apply(this, arguments);\n  };\n}());\nexport var loadCountry = memoizeAsync( /*#__PURE__*/function () {\n  var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(locale, countryCode) {\n    var response, country;\n    return _regeneratorRuntime.wrap(function _callee2$(_context2) {\n      while (1) {\n        switch (_context2.prev = _context2.next) {\n          case 0:\n            _context2.next = 2;\n            return fetch(GRAPHQL_ENDPOINT, {\n              method: 'POST',\n              headers: HEADERS,\n              body: JSON.stringify({\n                query: query,\n                operationName: GraphqlOperationName.Country,\n                variables: {\n                  countryCode: countryCode,\n                  locale: locale.replace(/-/, '_').toUpperCase()\n                }\n              })\n            });\n\n          case 2:\n            response = _context2.sent;\n            _context2.next = 5;\n            return response.json();\n\n          case 5:\n            country = _context2.sent;\n\n            if (!(!('data' in country) && 'errors' in country)) {\n              _context2.next = 8;\n              break;\n            }\n\n            throw new CountryLoaderError(country);\n\n          case 8:\n            return _context2.abrupt(\"return\", country.data.country);\n\n          case 9:\n          case \"end\":\n            return _context2.stop();\n        }\n      }\n    }, _callee2);\n  }));\n\n  return function (_x2, _x3) {\n    return _ref2.apply(this, arguments);\n  };\n}());\n\nvar CountryLoaderError = /*#__PURE__*/function (_Error) {\n  _inherits(CountryLoaderError, _Error);\n\n  var _super = _createSuper(CountryLoaderError);\n\n  function CountryLoaderError(errors) {\n    _classCallCheck(this, CountryLoaderError);\n\n    var errorMessage = errors.errors.map(function (error) {\n      return error.message;\n    }).join('; ');\n    return _super.call(this, errorMessage);\n  }\n\n  return CountryLoaderError;\n}( /*#__PURE__*/_wrapNativeSuper(Error));\n\nfunction memoizeAsync(asyncFunction) {\n  var _this = this;\n\n  var cache = {};\n  return function () {\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    var stringifiedArgs = JSON.stringify(args);\n\n    if (!cache[stringifiedArgs]) {\n      cache[stringifiedArgs] = asyncFunction.apply(_this, args);\n    }\n\n    return cache[stringifiedArgs];\n  };\n}","import _regeneratorRuntime from \"@babel/runtime/regenerator\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nimport { renderLineTemplate, FIELDS_MAPPING } from \"./utilities.mjs\";\nimport { loadCountry, loadCountries } from \"./loader.mjs\";\nvar FIELD_REGEXP = /({\\w+})/g;\nvar LINE_DELIMITER = '_';\nvar DEFAULT_FORM_LAYOUT = '{firstName}{lastName}_{company}_{address1}_{address2}_{city}_{country}{province}{zip}_{phone}';\nvar DEFAULT_SHOW_LAYOUT = '{lastName} {firstName}_{company}_{address1} {address2}_{city} {province} {zip}_{country}_{phone}';\nvar ORDERED_COUNTRIES_CACHE = {};\n\nvar AddressFormatter = /*#__PURE__*/function () {\n  function AddressFormatter(locale) {\n    _classCallCheck(this, AddressFormatter);\n\n    this.locale = locale;\n    this.locale = locale;\n  }\n\n  _createClass(AddressFormatter, [{\n    key: \"updateLocale\",\n    value: function updateLocale(locale) {\n      this.locale = locale;\n    }\n  }, {\n    key: \"getCountry\",\n    value: function () {\n      var _getCountry = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(countryCode) {\n        var country;\n        return _regeneratorRuntime.wrap(function _callee$(_context) {\n          while (1) {\n            switch (_context.prev = _context.next) {\n              case 0:\n                country = this.loadCountryFromCache(countryCode);\n\n                if (!country) {\n                  _context.next = 3;\n                  break;\n                }\n\n                return _context.abrupt(\"return\", country);\n\n              case 3:\n                _context.next = 5;\n                return loadCountry(this.locale, countryCode);\n\n              case 5:\n                country = _context.sent;\n                return _context.abrupt(\"return\", country);\n\n              case 7:\n              case \"end\":\n                return _context.stop();\n            }\n          }\n        }, _callee, this);\n      }));\n\n      function getCountry(_x) {\n        return _getCountry.apply(this, arguments);\n      }\n\n      return getCountry;\n    }()\n  }, {\n    key: \"getCountries\",\n    value: function () {\n      var _getCountries = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {\n        var countries;\n        return _regeneratorRuntime.wrap(function _callee2$(_context2) {\n          while (1) {\n            switch (_context2.prev = _context2.next) {\n              case 0:\n                _context2.next = 2;\n                return loadCountries(this.locale);\n\n              case 2:\n                countries = _context2.sent;\n                ORDERED_COUNTRIES_CACHE[this.locale] = countries;\n                return _context2.abrupt(\"return\", countries);\n\n              case 5:\n              case \"end\":\n                return _context2.stop();\n            }\n          }\n        }, _callee2, this);\n      }));\n\n      function getCountries() {\n        return _getCountries.apply(this, arguments);\n      }\n\n      return getCountries;\n    }()\n    /* Returns the address ordered in an array based based on the country code\n     * Eg.:\n     *   [\n     *     'Shopify',\n     *     'First Name Last Name',\n     *     'Address 1',\n     *     'address2',\n     *     'Montréal',\n     *     'Canada Quebec H2J 4B7',\n     *     '514 444 3333'\n     *   ]\n     */\n\n  }, {\n    key: \"format\",\n    value: function () {\n      var _format = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee3(address) {\n        var country, layout;\n        return _regeneratorRuntime.wrap(function _callee3$(_context3) {\n          while (1) {\n            switch (_context3.prev = _context3.next) {\n              case 0:\n                _context3.next = 2;\n                return this.getCountry(address.country);\n\n              case 2:\n                country = _context3.sent;\n                layout = country.formatting.show || DEFAULT_SHOW_LAYOUT;\n                return _context3.abrupt(\"return\", layout.split(LINE_DELIMITER).map(function (fields) {\n                  return renderLineTemplate(country, fields, address).trim();\n                }));\n\n              case 5:\n              case \"end\":\n                return _context3.stop();\n            }\n          }\n        }, _callee3, this);\n      }));\n\n      function format(_x2) {\n        return _format.apply(this, arguments);\n      }\n\n      return format;\n    }()\n    /* Returns an array that shows how to order fields based on the country code\n     * Eg.:\n     *   [\n     *     ['company'],\n     *     ['firstName', 'lastName'],\n     *     ['address1'],\n     *     ['address2'],\n     *     ['city'],\n     *     ['country', 'province', 'zip'],\n     *     ['phone']\n     *   ]\n     */\n\n  }, {\n    key: \"getOrderedFields\",\n    value: function () {\n      var _getOrderedFields = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee4(countryCode) {\n        var country, format;\n        return _regeneratorRuntime.wrap(function _callee4$(_context4) {\n          while (1) {\n            switch (_context4.prev = _context4.next) {\n              case 0:\n                _context4.next = 2;\n                return this.getCountry(countryCode);\n\n              case 2:\n                country = _context4.sent;\n                format = country ? country.formatting.edit : DEFAULT_FORM_LAYOUT;\n                return _context4.abrupt(\"return\", format.split(LINE_DELIMITER).map(function (fields) {\n                  var result = fields.match(FIELD_REGEXP);\n\n                  if (!result) {\n                    return [];\n                  }\n\n                  return result.map(function (field) {\n                    return FIELDS_MAPPING[field];\n                  });\n                }));\n\n              case 5:\n              case \"end\":\n                return _context4.stop();\n            }\n          }\n        }, _callee4, this);\n      }));\n\n      function getOrderedFields(_x3) {\n        return _getOrderedFields.apply(this, arguments);\n      }\n\n      return getOrderedFields;\n    }()\n  }, {\n    key: \"loadCountryFromCache\",\n    value: function loadCountryFromCache(countryCode) {\n      if (ORDERED_COUNTRIES_CACHE[this.locale]) {\n        return ORDERED_COUNTRIES_CACHE[this.locale].find(function (country) {\n          return country.code === countryCode;\n        });\n      }\n\n      return null;\n    }\n  }]);\n\n  return AddressFormatter;\n}();\n\nexport { AddressFormatter as default };","var SetCache = require('./_SetCache'),\n    arraySome = require('./_arraySome'),\n    cacheHas = require('./_cacheHas');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n    COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n  var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n      arrLength = array.length,\n      othLength = other.length;\n\n  if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n    return false;\n  }\n  // Check that cyclic values are equal.\n  var arrStacked = stack.get(array);\n  var othStacked = stack.get(other);\n  if (arrStacked && othStacked) {\n    return arrStacked == other && othStacked == array;\n  }\n  var index = -1,\n      result = true,\n      seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n  stack.set(array, other);\n  stack.set(other, array);\n\n  // Ignore non-index properties.\n  while (++index < arrLength) {\n    var arrValue = array[index],\n        othValue = other[index];\n\n    if (customizer) {\n      var compared = isPartial\n        ? customizer(othValue, arrValue, index, other, array, stack)\n        : customizer(arrValue, othValue, index, array, other, stack);\n    }\n    if (compared !== undefined) {\n      if (compared) {\n        continue;\n      }\n      result = false;\n      break;\n    }\n    // Recursively compare arrays (susceptible to call stack limits).\n    if (seen) {\n      if (!arraySome(other, function(othValue, othIndex) {\n            if (!cacheHas(seen, othIndex) &&\n                (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n              return seen.push(othIndex);\n            }\n          })) {\n        result = false;\n        break;\n      }\n    } else if (!(\n          arrValue === othValue ||\n            equalFunc(arrValue, othValue, bitmask, customizer, stack)\n        )) {\n      result = false;\n      break;\n    }\n  }\n  stack['delete'](array);\n  stack['delete'](other);\n  return result;\n}\n\nmodule.exports = equalArrays;\n","var Symbol = require('./_Symbol');\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n    symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n  return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\nmodule.exports = cloneSymbol;\n","module.exports = require(\"regenerator-runtime\");\n","import Vue from 'vue';\nexport function factory(prop = 'value', event = 'change') {\n  return Vue.extend({\n    name: 'proxyable',\n    model: {\n      prop,\n      event\n    },\n    props: {\n      [prop]: {\n        required: false\n      }\n    },\n\n    data() {\n      return {\n        internalLazyValue: this[prop]\n      };\n    },\n\n    computed: {\n      internalValue: {\n        get() {\n          return this.internalLazyValue;\n        },\n\n        set(val) {\n          if (val === this.internalLazyValue) return;\n          this.internalLazyValue = val;\n          this.$emit(event, val);\n        }\n\n      }\n    },\n    watch: {\n      [prop](val) {\n        this.internalLazyValue = val;\n      }\n\n    }\n  });\n}\n/* eslint-disable-next-line @typescript-eslint/no-redeclare */\n\nconst Proxyable = factory();\nexport default Proxyable;\n//# sourceMappingURL=index.js.map","var constant = require('./constant'),\n    defineProperty = require('./_defineProperty'),\n    identity = require('./identity');\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n  return defineProperty(func, 'toString', {\n    'configurable': true,\n    'enumerable': false,\n    'value': constant(string),\n    'writable': true\n  });\n};\n\nmodule.exports = baseSetToString;\n","!function(e,_){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=_(require(\"dayjs\")):\"function\"==typeof define&&define.amd?define([\"dayjs\"],_):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_locale_zh_cn=_(e.dayjs)}(this,(function(e){\"use strict\";function _(e){return e&&\"object\"==typeof e&&\"default\"in e?e:{default:e}}var t=_(e),d={name:\"zh-cn\",weekdays:\"星期日_星期一_星期二_星期三_星期四_星期五_星期六\".split(\"_\"),weekdaysShort:\"周日_周一_周二_周三_周四_周五_周六\".split(\"_\"),weekdaysMin:\"日_一_二_三_四_五_六\".split(\"_\"),months:\"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月\".split(\"_\"),monthsShort:\"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月\".split(\"_\"),ordinal:function(e,_){switch(_){case\"W\":return e+\"周\";default:return e+\"日\"}},weekStart:1,yearStart:4,formats:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"YYYY/MM/DD\",LL:\"YYYY年M月D日\",LLL:\"YYYY年M月D日Ah点mm分\",LLLL:\"YYYY年M月D日ddddAh点mm分\",l:\"YYYY/M/D\",ll:\"YYYY年M月D日\",lll:\"YYYY年M月D日 HH:mm\",llll:\"YYYY年M月D日dddd HH:mm\"},relativeTime:{future:\"%s内\",past:\"%s前\",s:\"几秒\",m:\"1 分钟\",mm:\"%d 分钟\",h:\"1 小时\",hh:\"%d 小时\",d:\"1 天\",dd:\"%d 天\",M:\"1 个月\",MM:\"%d 个月\",y:\"1 年\",yy:\"%d 年\"},meridiem:function(e,_){var t=100*e+_;return t<600?\"凌晨\":t<900?\"早上\":t<1100?\"上午\":t<1300?\"中午\":t<1800?\"下午\":\"晚上\"}};return t.default.locale(d,null,!0),d}));","'use strict';\n\nvar anObject = require('./_an-object');\nvar toObject = require('./_to-object');\nvar toLength = require('./_to-length');\nvar toInteger = require('./_to-integer');\nvar advanceStringIndex = require('./_advance-string-index');\nvar regExpExec = require('./_regexp-exec-abstract');\nvar max = Math.max;\nvar min = Math.min;\nvar floor = Math.floor;\nvar SUBSTITUTION_SYMBOLS = /\\$([$&`']|\\d\\d?|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&`']|\\d\\d?)/g;\n\nvar maybeToString = function (it) {\n  return it === undefined ? it : String(it);\n};\n\n// @@replace logic\nrequire('./_fix-re-wks')('replace', 2, function (defined, REPLACE, $replace, maybeCallNative) {\n  return [\n    // `String.prototype.replace` method\n    // https://tc39.github.io/ecma262/#sec-string.prototype.replace\n    function replace(searchValue, replaceValue) {\n      var O = defined(this);\n      var fn = searchValue == undefined ? undefined : searchValue[REPLACE];\n      return fn !== undefined\n        ? fn.call(searchValue, O, replaceValue)\n        : $replace.call(String(O), searchValue, replaceValue);\n    },\n    // `RegExp.prototype[@@replace]` method\n    // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@replace\n    function (regexp, replaceValue) {\n      var res = maybeCallNative($replace, regexp, this, replaceValue);\n      if (res.done) return res.value;\n\n      var rx = anObject(regexp);\n      var S = String(this);\n      var functionalReplace = typeof replaceValue === 'function';\n      if (!functionalReplace) replaceValue = String(replaceValue);\n      var global = rx.global;\n      if (global) {\n        var fullUnicode = rx.unicode;\n        rx.lastIndex = 0;\n      }\n      var results = [];\n      while (true) {\n        var result = regExpExec(rx, S);\n        if (result === null) break;\n        results.push(result);\n        if (!global) break;\n        var matchStr = String(result[0]);\n        if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n      }\n      var accumulatedResult = '';\n      var nextSourcePosition = 0;\n      for (var i = 0; i < results.length; i++) {\n        result = results[i];\n        var matched = String(result[0]);\n        var position = max(min(toInteger(result.index), S.length), 0);\n        var captures = [];\n        // NOTE: This is equivalent to\n        //   captures = result.slice(1).map(maybeToString)\n        // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n        // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n        // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n        for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j]));\n        var namedCaptures = result.groups;\n        if (functionalReplace) {\n          var replacerArgs = [matched].concat(captures, position, S);\n          if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);\n          var replacement = String(replaceValue.apply(undefined, replacerArgs));\n        } else {\n          replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n        }\n        if (position >= nextSourcePosition) {\n          accumulatedResult += S.slice(nextSourcePosition, position) + replacement;\n          nextSourcePosition = position + matched.length;\n        }\n      }\n      return accumulatedResult + S.slice(nextSourcePosition);\n    }\n  ];\n\n    // https://tc39.github.io/ecma262/#sec-getsubstitution\n  function getSubstitution(matched, str, position, captures, namedCaptures, replacement) {\n    var tailPos = position + matched.length;\n    var m = captures.length;\n    var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n    if (namedCaptures !== undefined) {\n      namedCaptures = toObject(namedCaptures);\n      symbols = SUBSTITUTION_SYMBOLS;\n    }\n    return $replace.call(replacement, symbols, function (match, ch) {\n      var capture;\n      switch (ch.charAt(0)) {\n        case '$': return '$';\n        case '&': return matched;\n        case '`': return str.slice(0, position);\n        case \"'\": return str.slice(tailPos);\n        case '<':\n          capture = namedCaptures[ch.slice(1, -1)];\n          break;\n        default: // \\d\\d?\n          var n = +ch;\n          if (n === 0) return match;\n          if (n > m) {\n            var f = floor(n / 10);\n            if (f === 0) return match;\n            if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);\n            return match;\n          }\n          capture = captures[n - 1];\n      }\n      return capture === undefined ? '' : capture;\n    });\n  }\n});\n","// Types\nimport Vue from 'vue';\nexport default function VGrid(name) {\n  /* @vue/component */\n  return Vue.extend({\n    name: `v-${name}`,\n    functional: true,\n    props: {\n      id: String,\n      tag: {\n        type: String,\n        default: 'div'\n      }\n    },\n\n    render(h, {\n      props,\n      data,\n      children\n    }) {\n      data.staticClass = `${name} ${data.staticClass || ''}`.trim();\n      const {\n        attrs\n      } = data;\n\n      if (attrs) {\n        // reset attrs to extract utility clases like pa-3\n        data.attrs = {};\n        const classes = Object.keys(attrs).filter(key => {\n          // TODO: Remove once resolved\n          // https://github.com/vuejs/vue/issues/7841\n          if (key === 'slot') return false;\n          const value = attrs[key]; // add back data attributes like data-test=\"foo\" but do not\n          // add them as classes\n\n          if (key.startsWith('data-')) {\n            data.attrs[key] = value;\n            return false;\n          }\n\n          return value || typeof value === 'string';\n        });\n        if (classes.length) data.staticClass += ` ${classes.join(' ')}`;\n      }\n\n      if (props.id) {\n        data.domProps = data.domProps || {};\n        data.domProps.id = props.id;\n      }\n\n      return h(props.tag, data, children);\n    }\n\n  });\n}\n//# sourceMappingURL=grid.js.map","import \"../../../src/components/VGrid/_grid.sass\";\nimport \"../../../src/components/VGrid/VGrid.sass\";\nimport Grid from './grid';\nimport mergeData from '../../util/mergeData';\n/* @vue/component */\n\nexport default Grid('container').extend({\n  name: 'v-container',\n  functional: true,\n  props: {\n    id: String,\n    tag: {\n      type: String,\n      default: 'div'\n    },\n    fluid: {\n      type: Boolean,\n      default: false\n    }\n  },\n\n  render(h, {\n    props,\n    data,\n    children\n  }) {\n    let classes;\n    const {\n      attrs\n    } = data;\n\n    if (attrs) {\n      // reset attrs to extract utility clases like pa-3\n      data.attrs = {};\n      classes = Object.keys(attrs).filter(key => {\n        // TODO: Remove once resolved\n        // https://github.com/vuejs/vue/issues/7841\n        if (key === 'slot') return false;\n        const value = attrs[key]; // add back data attributes like data-test=\"foo\" but do not\n        // add them as classes\n\n        if (key.startsWith('data-')) {\n          data.attrs[key] = value;\n          return false;\n        }\n\n        return value || typeof value === 'string';\n      });\n    }\n\n    if (props.id) {\n      data.domProps = data.domProps || {};\n      data.domProps.id = props.id;\n    }\n\n    return h(props.tag, mergeData(data, {\n      staticClass: 'container',\n      class: Array({\n        'container--fluid': props.fluid\n      }).concat(classes || [])\n    }), children);\n  }\n\n});\n//# sourceMappingURL=VContainer.js.map","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n  return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","'use strict';\n// 25.4.1.5 NewPromiseCapability(C)\nvar aFunction = require('./_a-function');\n\nfunction PromiseCapability(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\nmodule.exports.f = function (C) {\n  return new PromiseCapability(C);\n};\n","// Styles\nimport \"../../../src/components/VBtnToggle/VBtnToggle.sass\"; // Mixins\n\nimport ButtonGroup from '../../mixins/button-group';\nimport Colorable from '../../mixins/colorable'; // Utilities\n\nimport mixins from '../../util/mixins';\n/* @vue/component */\n\nexport default mixins(ButtonGroup, Colorable).extend({\n  name: 'v-btn-toggle',\n  props: {\n    backgroundColor: String,\n    borderless: Boolean,\n    dense: Boolean,\n    group: Boolean,\n    rounded: Boolean,\n    shaped: Boolean,\n    tile: Boolean\n  },\n  computed: {\n    classes() {\n      return { ...ButtonGroup.options.computed.classes.call(this),\n        'v-btn-toggle': true,\n        'v-btn-toggle--borderless': this.borderless,\n        'v-btn-toggle--dense': this.dense,\n        'v-btn-toggle--group': this.group,\n        'v-btn-toggle--rounded': this.rounded,\n        'v-btn-toggle--shaped': this.shaped,\n        'v-btn-toggle--tile': this.tile,\n        ...this.themeClasses\n      };\n    }\n\n  },\n  methods: {\n    genData() {\n      const data = this.setTextColor(this.color, { ...ButtonGroup.options.methods.genData.call(this)\n      });\n      if (this.group) return data;\n      return this.setBackgroundColor(this.backgroundColor, data);\n    }\n\n  }\n});\n//# sourceMappingURL=VBtnToggle.js.map","const exportedName = 'PhoneNumber$$module$src$index';\n\nmodule.exports =\n\trequire( './lib' )[ exportedName ] ||\n\t(\n\t\ttypeof globalThis !== 'undefined' && globalThis\n\t\t|| typeof global !== 'undefined' && global\n\t\t|| typeof window !== 'undefined' && window\n\t\t|| typeof self !== 'undefined' && self\n\t\t|| this\n\t)[ exportedName ];\n\nObject.defineProperty(\n\tmodule.exports,\n\t\"__esModule\",\n\t{\n\t\tvalue: true\n\t}\n);\n\nmodule.exports.default = module.exports;\n","// Styles\nimport \"../../../src/components/VOverlay/VOverlay.sass\"; // Mixins\n\nimport Colorable from './../../mixins/colorable';\nimport Themeable from '../../mixins/themeable';\nimport Toggleable from './../../mixins/toggleable'; // Utilities\n\nimport mixins from '../../util/mixins';\n/* @vue/component */\n\nexport default mixins(Colorable, Themeable, Toggleable).extend({\n  name: 'v-overlay',\n  props: {\n    absolute: Boolean,\n    color: {\n      type: String,\n      default: '#212121'\n    },\n    dark: {\n      type: Boolean,\n      default: true\n    },\n    opacity: {\n      type: [Number, String],\n      default: 0.46\n    },\n    value: {\n      default: true\n    },\n    zIndex: {\n      type: [Number, String],\n      default: 5\n    }\n  },\n  computed: {\n    __scrim() {\n      const data = this.setBackgroundColor(this.color, {\n        staticClass: 'v-overlay__scrim',\n        style: {\n          opacity: this.computedOpacity\n        }\n      });\n      return this.$createElement('div', data);\n    },\n\n    classes() {\n      return {\n        'v-overlay--absolute': this.absolute,\n        'v-overlay--active': this.isActive,\n        ...this.themeClasses\n      };\n    },\n\n    computedOpacity() {\n      return Number(this.isActive ? this.opacity : 0);\n    },\n\n    styles() {\n      return {\n        zIndex: this.zIndex\n      };\n    }\n\n  },\n  methods: {\n    genContent() {\n      return this.$createElement('div', {\n        staticClass: 'v-overlay__content'\n      }, this.$slots.default);\n    }\n\n  },\n\n  render(h) {\n    const children = [this.__scrim];\n    if (this.isActive) children.push(this.genContent());\n    return h('div', {\n      staticClass: 'v-overlay',\n      on: this.$listeners,\n      class: this.classes,\n      style: this.styles\n    }, children);\n  }\n\n});\n//# sourceMappingURL=VOverlay.js.map","// Styles\nimport \"../../../src/components/VTextarea/VTextarea.sass\"; // Extensions\n\nimport VTextField from '../VTextField/VTextField'; // Utilities\n\nimport mixins from '../../util/mixins';\nconst baseMixins = mixins(VTextField);\n/* @vue/component */\n\nexport default baseMixins.extend({\n  name: 'v-textarea',\n  props: {\n    autoGrow: Boolean,\n    noResize: Boolean,\n    rowHeight: {\n      type: [Number, String],\n      default: 24,\n      validator: v => !isNaN(parseFloat(v))\n    },\n    rows: {\n      type: [Number, String],\n      default: 5,\n      validator: v => !isNaN(parseInt(v, 10))\n    }\n  },\n  computed: {\n    classes() {\n      return {\n        'v-textarea': true,\n        'v-textarea--auto-grow': this.autoGrow,\n        'v-textarea--no-resize': this.noResizeHandle,\n        ...VTextField.options.computed.classes.call(this)\n      };\n    },\n\n    noResizeHandle() {\n      return this.noResize || this.autoGrow;\n    }\n\n  },\n  watch: {\n    autoGrow(val) {\n      this.$nextTick(() => {\n        var _this$$refs$input;\n\n        val ? this.calculateInputHeight() : (_this$$refs$input = this.$refs.input) == null ? void 0 : _this$$refs$input.style.removeProperty('height');\n      });\n    },\n\n    lazyValue() {\n      this.autoGrow && this.$nextTick(this.calculateInputHeight);\n    },\n\n    rowHeight() {\n      this.autoGrow && this.$nextTick(this.calculateInputHeight);\n    }\n\n  },\n\n  mounted() {\n    setTimeout(() => {\n      this.autoGrow && this.calculateInputHeight();\n    }, 0);\n  },\n\n  methods: {\n    calculateInputHeight() {\n      const input = this.$refs.input;\n      if (!input) return;\n      input.style.height = '0';\n      const height = input.scrollHeight;\n      const minHeight = parseInt(this.rows, 10) * parseFloat(this.rowHeight); // This has to be done ASAP, waiting for Vue\n      // to update the DOM causes ugly layout jumping\n\n      input.style.height = Math.max(minHeight, height) + 'px';\n    },\n\n    genInput() {\n      const input = VTextField.options.methods.genInput.call(this);\n      input.tag = 'textarea';\n      delete input.data.attrs.type;\n      input.data.attrs.rows = this.rows;\n      return input;\n    },\n\n    onInput(e) {\n      VTextField.options.methods.onInput.call(this, e);\n      this.autoGrow && this.calculateInputHeight();\n    },\n\n    onKeyDown(e) {\n      // Prevents closing of a\n      // dialog when pressing\n      // enter\n      if (this.isFocused && e.keyCode === 13) {\n        e.stopPropagation();\n      }\n\n      this.$emit('keydown', e);\n    }\n\n  }\n});\n//# sourceMappingURL=VTextarea.js.map","var baseIteratee = require('./_baseIteratee'),\n    baseUniq = require('./_baseUniq');\n\n/**\n * This method is like `_.uniq` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * uniqueness is computed. The order of result values is determined by the\n * order they occur in the array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\nfunction uniqBy(array, iteratee) {\n  return (array && array.length) ? baseUniq(array, baseIteratee(iteratee, 2)) : [];\n}\n\nmodule.exports = uniqBy;\n","var basePropertyOf = require('./_basePropertyOf');\n\n/** Used to map Latin Unicode letters to basic Latin letters. */\nvar deburredLetters = {\n  // Latin-1 Supplement block.\n  '\\xc0': 'A',  '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n  '\\xe0': 'a',  '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n  '\\xc7': 'C',  '\\xe7': 'c',\n  '\\xd0': 'D',  '\\xf0': 'd',\n  '\\xc8': 'E',  '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n  '\\xe8': 'e',  '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n  '\\xcc': 'I',  '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n  '\\xec': 'i',  '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n  '\\xd1': 'N',  '\\xf1': 'n',\n  '\\xd2': 'O',  '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n  '\\xf2': 'o',  '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n  '\\xd9': 'U',  '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n  '\\xf9': 'u',  '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n  '\\xdd': 'Y',  '\\xfd': 'y', '\\xff': 'y',\n  '\\xc6': 'Ae', '\\xe6': 'ae',\n  '\\xde': 'Th', '\\xfe': 'th',\n  '\\xdf': 'ss',\n  // Latin Extended-A block.\n  '\\u0100': 'A',  '\\u0102': 'A', '\\u0104': 'A',\n  '\\u0101': 'a',  '\\u0103': 'a', '\\u0105': 'a',\n  '\\u0106': 'C',  '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n  '\\u0107': 'c',  '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n  '\\u010e': 'D',  '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n  '\\u0112': 'E',  '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n  '\\u0113': 'e',  '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n  '\\u011c': 'G',  '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n  '\\u011d': 'g',  '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n  '\\u0124': 'H',  '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n  '\\u0128': 'I',  '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n  '\\u0129': 'i',  '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n  '\\u0134': 'J',  '\\u0135': 'j',\n  '\\u0136': 'K',  '\\u0137': 'k', '\\u0138': 'k',\n  '\\u0139': 'L',  '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n  '\\u013a': 'l',  '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n  '\\u0143': 'N',  '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n  '\\u0144': 'n',  '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n  '\\u014c': 'O',  '\\u014e': 'O', '\\u0150': 'O',\n  '\\u014d': 'o',  '\\u014f': 'o', '\\u0151': 'o',\n  '\\u0154': 'R',  '\\u0156': 'R', '\\u0158': 'R',\n  '\\u0155': 'r',  '\\u0157': 'r', '\\u0159': 'r',\n  '\\u015a': 'S',  '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n  '\\u015b': 's',  '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n  '\\u0162': 'T',  '\\u0164': 'T', '\\u0166': 'T',\n  '\\u0163': 't',  '\\u0165': 't', '\\u0167': 't',\n  '\\u0168': 'U',  '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n  '\\u0169': 'u',  '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n  '\\u0174': 'W',  '\\u0175': 'w',\n  '\\u0176': 'Y',  '\\u0177': 'y', '\\u0178': 'Y',\n  '\\u0179': 'Z',  '\\u017b': 'Z', '\\u017d': 'Z',\n  '\\u017a': 'z',  '\\u017c': 'z', '\\u017e': 'z',\n  '\\u0132': 'IJ', '\\u0133': 'ij',\n  '\\u0152': 'Oe', '\\u0153': 'oe',\n  '\\u0149': \"'n\", '\\u017f': 's'\n};\n\n/**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\nvar deburrLetter = basePropertyOf(deburredLetters);\n\nmodule.exports = deburrLetter;\n","/*!\n * vue-i18n v8.26.7 \n * (c) 2021 kazuya kawaguchi\n * Released under the MIT License.\n */\n/*  */\n\n/**\n * constants\n */\n\nvar numberFormatKeys = [\n  'compactDisplay',\n  'currency',\n  'currencyDisplay',\n  'currencySign',\n  'localeMatcher',\n  'notation',\n  'numberingSystem',\n  'signDisplay',\n  'style',\n  'unit',\n  'unitDisplay',\n  'useGrouping',\n  'minimumIntegerDigits',\n  'minimumFractionDigits',\n  'maximumFractionDigits',\n  'minimumSignificantDigits',\n  'maximumSignificantDigits'\n];\n\n/**\n * utilities\n */\n\nfunction warn (msg, err) {\n  if (typeof console !== 'undefined') {\n    console.warn('[vue-i18n] ' + msg);\n    /* istanbul ignore if */\n    if (err) {\n      console.warn(err.stack);\n    }\n  }\n}\n\nfunction error (msg, err) {\n  if (typeof console !== 'undefined') {\n    console.error('[vue-i18n] ' + msg);\n    /* istanbul ignore if */\n    if (err) {\n      console.error(err.stack);\n    }\n  }\n}\n\nvar isArray = Array.isArray;\n\nfunction isObject (obj) {\n  return obj !== null && typeof obj === 'object'\n}\n\nfunction isBoolean (val) {\n  return typeof val === 'boolean'\n}\n\nfunction isString (val) {\n  return typeof val === 'string'\n}\n\nvar toString = Object.prototype.toString;\nvar OBJECT_STRING = '[object Object]';\nfunction isPlainObject (obj) {\n  return toString.call(obj) === OBJECT_STRING\n}\n\nfunction isNull (val) {\n  return val === null || val === undefined\n}\n\nfunction isFunction (val) {\n  return typeof val === 'function'\n}\n\nfunction parseArgs () {\n  var args = [], len = arguments.length;\n  while ( len-- ) args[ len ] = arguments[ len ];\n\n  var locale = null;\n  var params = null;\n  if (args.length === 1) {\n    if (isObject(args[0]) || isArray(args[0])) {\n      params = args[0];\n    } else if (typeof args[0] === 'string') {\n      locale = args[0];\n    }\n  } else if (args.length === 2) {\n    if (typeof args[0] === 'string') {\n      locale = args[0];\n    }\n    /* istanbul ignore if */\n    if (isObject(args[1]) || isArray(args[1])) {\n      params = args[1];\n    }\n  }\n\n  return { locale: locale, params: params }\n}\n\nfunction looseClone (obj) {\n  return JSON.parse(JSON.stringify(obj))\n}\n\nfunction remove (arr, item) {\n  if (arr.delete(item)) {\n    return arr\n  }\n}\n\nfunction arrayFrom (arr) {\n  var ret = [];\n  arr.forEach(function (a) { return ret.push(a); });\n  return ret\n}\n\nfunction includes (arr, item) {\n  return !!~arr.indexOf(item)\n}\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction hasOwn (obj, key) {\n  return hasOwnProperty.call(obj, key)\n}\n\nfunction merge (target) {\n  var arguments$1 = arguments;\n\n  var output = Object(target);\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments$1[i];\n    if (source !== undefined && source !== null) {\n      var key = (void 0);\n      for (key in source) {\n        if (hasOwn(source, key)) {\n          if (isObject(source[key])) {\n            output[key] = merge(output[key], source[key]);\n          } else {\n            output[key] = source[key];\n          }\n        }\n      }\n    }\n  }\n  return output\n}\n\nfunction looseEqual (a, b) {\n  if (a === b) { return true }\n  var isObjectA = isObject(a);\n  var isObjectB = isObject(b);\n  if (isObjectA && isObjectB) {\n    try {\n      var isArrayA = isArray(a);\n      var isArrayB = isArray(b);\n      if (isArrayA && isArrayB) {\n        return a.length === b.length && a.every(function (e, i) {\n          return looseEqual(e, b[i])\n        })\n      } else if (!isArrayA && !isArrayB) {\n        var keysA = Object.keys(a);\n        var keysB = Object.keys(b);\n        return keysA.length === keysB.length && keysA.every(function (key) {\n          return looseEqual(a[key], b[key])\n        })\n      } else {\n        /* istanbul ignore next */\n        return false\n      }\n    } catch (e) {\n      /* istanbul ignore next */\n      return false\n    }\n  } else if (!isObjectA && !isObjectB) {\n    return String(a) === String(b)\n  } else {\n    return false\n  }\n}\n\n/**\n * Sanitizes html special characters from input strings. For mitigating risk of XSS attacks.\n * @param rawText The raw input from the user that should be escaped.\n */\nfunction escapeHtml(rawText) {\n  return rawText\n    .replace(/</g, '&lt;')\n    .replace(/>/g, '&gt;')\n    .replace(/\"/g, '&quot;')\n    .replace(/'/g, '&apos;')\n}\n\n/**\n * Escapes html tags and special symbols from all provided params which were returned from parseArgs().params.\n * This method performs an in-place operation on the params object.\n *\n * @param {any} params Parameters as provided from `parseArgs().params`.\n *                     May be either an array of strings or a string->any map.\n *\n * @returns The manipulated `params` object.\n */\nfunction escapeParams(params) {\n  if(params != null) {\n    Object.keys(params).forEach(function (key) {\n      if(typeof(params[key]) == 'string') {\n        params[key] = escapeHtml(params[key]);\n      }\n    });\n  }\n  return params\n}\n\n/*  */\n\nfunction extend (Vue) {\n  if (!Vue.prototype.hasOwnProperty('$i18n')) {\n    // $FlowFixMe\n    Object.defineProperty(Vue.prototype, '$i18n', {\n      get: function get () { return this._i18n }\n    });\n  }\n\n  Vue.prototype.$t = function (key) {\n    var values = [], len = arguments.length - 1;\n    while ( len-- > 0 ) values[ len ] = arguments[ len + 1 ];\n\n    var i18n = this.$i18n;\n    return i18n._t.apply(i18n, [ key, i18n.locale, i18n._getMessages(), this ].concat( values ))\n  };\n\n  Vue.prototype.$tc = function (key, choice) {\n    var values = [], len = arguments.length - 2;\n    while ( len-- > 0 ) values[ len ] = arguments[ len + 2 ];\n\n    var i18n = this.$i18n;\n    return i18n._tc.apply(i18n, [ key, i18n.locale, i18n._getMessages(), this, choice ].concat( values ))\n  };\n\n  Vue.prototype.$te = function (key, locale) {\n    var i18n = this.$i18n;\n    return i18n._te(key, i18n.locale, i18n._getMessages(), locale)\n  };\n\n  Vue.prototype.$d = function (value) {\n    var ref;\n\n    var args = [], len = arguments.length - 1;\n    while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];\n    return (ref = this.$i18n).d.apply(ref, [ value ].concat( args ))\n  };\n\n  Vue.prototype.$n = function (value) {\n    var ref;\n\n    var args = [], len = arguments.length - 1;\n    while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];\n    return (ref = this.$i18n).n.apply(ref, [ value ].concat( args ))\n  };\n}\n\n/*  */\n\n/**\n * Mixin\n * \n * If `bridge` mode, empty mixin is returned,\n * else regulary mixin implementation is returned.\n */\nfunction defineMixin (bridge) {\n  if ( bridge === void 0 ) bridge = false;\n\n  function mounted () {\n    if (this !== this.$root && this.$options.__INTLIFY_META__ && this.$el) {\n      this.$el.setAttribute('data-intlify', this.$options.__INTLIFY_META__);\n    }\n  }\n\n  return bridge\n    ? { mounted: mounted } // delegate `vue-i18n-bridge` mixin implementation\n    : { // regulary \n    beforeCreate: function beforeCreate () {\n      var options = this.$options;\n      options.i18n = options.i18n || ((options.__i18nBridge || options.__i18n) ? {} : null);\n\n      if (options.i18n) {\n        if (options.i18n instanceof VueI18n) {\n          // init locale messages via custom blocks\n          if ((options.__i18nBridge || options.__i18n)) {\n            try {\n              var localeMessages = options.i18n && options.i18n.messages ? options.i18n.messages : {};\n              var _i18n = options.__i18nBridge || options.__i18n;\n              _i18n.forEach(function (resource) {\n                localeMessages = merge(localeMessages, JSON.parse(resource));\n              });\n              Object.keys(localeMessages).forEach(function (locale) {\n                options.i18n.mergeLocaleMessage(locale, localeMessages[locale]);\n              });\n            } catch (e) {\n              if (process.env.NODE_ENV !== 'production') {\n                error(\"Cannot parse locale messages via custom blocks.\", e);\n              }\n            }\n          }\n          this._i18n = options.i18n;\n          this._i18nWatcher = this._i18n.watchI18nData();\n        } else if (isPlainObject(options.i18n)) {\n          var rootI18n = this.$root && this.$root.$i18n && this.$root.$i18n instanceof VueI18n\n            ? this.$root.$i18n\n            : null;\n          // component local i18n\n          if (rootI18n) {\n            options.i18n.root = this.$root;\n            options.i18n.formatter = rootI18n.formatter;\n            options.i18n.fallbackLocale = rootI18n.fallbackLocale;\n            options.i18n.formatFallbackMessages = rootI18n.formatFallbackMessages;\n            options.i18n.silentTranslationWarn = rootI18n.silentTranslationWarn;\n            options.i18n.silentFallbackWarn = rootI18n.silentFallbackWarn;\n            options.i18n.pluralizationRules = rootI18n.pluralizationRules;\n            options.i18n.preserveDirectiveContent = rootI18n.preserveDirectiveContent;\n          }\n\n          // init locale messages via custom blocks\n          if ((options.__i18nBridge || options.__i18n)) {\n            try {\n              var localeMessages$1 = options.i18n && options.i18n.messages ? options.i18n.messages : {};\n              var _i18n$1 = options.__i18nBridge || options.__i18n;\n              _i18n$1.forEach(function (resource) {\n                localeMessages$1 = merge(localeMessages$1, JSON.parse(resource));\n              });\n              options.i18n.messages = localeMessages$1;\n            } catch (e) {\n              if (process.env.NODE_ENV !== 'production') {\n                warn(\"Cannot parse locale messages via custom blocks.\", e);\n              }\n            }\n          }\n\n          var ref = options.i18n;\n          var sharedMessages = ref.sharedMessages;\n          if (sharedMessages && isPlainObject(sharedMessages)) {\n            options.i18n.messages = merge(options.i18n.messages, sharedMessages);\n          }\n\n          this._i18n = new VueI18n(options.i18n);\n          this._i18nWatcher = this._i18n.watchI18nData();\n\n          if (options.i18n.sync === undefined || !!options.i18n.sync) {\n            this._localeWatcher = this.$i18n.watchLocale();\n          }\n\n          if (rootI18n) {\n            rootI18n.onComponentInstanceCreated(this._i18n);\n          }\n        } else {\n          if (process.env.NODE_ENV !== 'production') {\n            warn(\"Cannot be interpreted 'i18n' option.\");\n          }\n        }\n      } else if (this.$root && this.$root.$i18n && this.$root.$i18n instanceof VueI18n) {\n        // root i18n\n        this._i18n = this.$root.$i18n;\n      } else if (options.parent && options.parent.$i18n && options.parent.$i18n instanceof VueI18n) {\n        // parent i18n\n        this._i18n = options.parent.$i18n;\n      }\n    },\n\n    beforeMount: function beforeMount () {\n      var options = this.$options;\n      options.i18n = options.i18n || ((options.__i18nBridge || options.__i18n) ? {} : null);\n\n      if (options.i18n) {\n        if (options.i18n instanceof VueI18n) {\n          // init locale messages via custom blocks\n          this._i18n.subscribeDataChanging(this);\n          this._subscribing = true;\n        } else if (isPlainObject(options.i18n)) {\n          this._i18n.subscribeDataChanging(this);\n          this._subscribing = true;\n        } else {\n          if (process.env.NODE_ENV !== 'production') {\n            warn(\"Cannot be interpreted 'i18n' option.\");\n          }\n        }\n      } else if (this.$root && this.$root.$i18n && this.$root.$i18n instanceof VueI18n) {\n        this._i18n.subscribeDataChanging(this);\n        this._subscribing = true;\n      } else if (options.parent && options.parent.$i18n && options.parent.$i18n instanceof VueI18n) {\n        this._i18n.subscribeDataChanging(this);\n        this._subscribing = true;\n      }\n    },\n\n    mounted: mounted,\n\n    beforeDestroy: function beforeDestroy () {\n      if (!this._i18n) { return }\n\n      var self = this;\n      this.$nextTick(function () {\n        if (self._subscribing) {\n          self._i18n.unsubscribeDataChanging(self);\n          delete self._subscribing;\n        }\n\n        if (self._i18nWatcher) {\n          self._i18nWatcher();\n          self._i18n.destroyVM();\n          delete self._i18nWatcher;\n        }\n\n        if (self._localeWatcher) {\n          self._localeWatcher();\n          delete self._localeWatcher;\n        }\n      });\n    }\n  }\n}\n\n/*  */\n\nvar interpolationComponent = {\n  name: 'i18n',\n  functional: true,\n  props: {\n    tag: {\n      type: [String, Boolean, Object],\n      default: 'span'\n    },\n    path: {\n      type: String,\n      required: true\n    },\n    locale: {\n      type: String\n    },\n    places: {\n      type: [Array, Object]\n    }\n  },\n  render: function render (h, ref) {\n    var data = ref.data;\n    var parent = ref.parent;\n    var props = ref.props;\n    var slots = ref.slots;\n\n    var $i18n = parent.$i18n;\n    if (!$i18n) {\n      if (process.env.NODE_ENV !== 'production') {\n        warn('Cannot find VueI18n instance!');\n      }\n      return\n    }\n\n    var path = props.path;\n    var locale = props.locale;\n    var places = props.places;\n    var params = slots();\n    var children = $i18n.i(\n      path,\n      locale,\n      onlyHasDefaultPlace(params) || places\n        ? useLegacyPlaces(params.default, places)\n        : params\n    );\n\n    var tag = (!!props.tag && props.tag !== true) || props.tag === false ? props.tag : 'span';\n    return tag ? h(tag, data, children) : children\n  }\n};\n\nfunction onlyHasDefaultPlace (params) {\n  var prop;\n  for (prop in params) {\n    if (prop !== 'default') { return false }\n  }\n  return Boolean(prop)\n}\n\nfunction useLegacyPlaces (children, places) {\n  var params = places ? createParamsFromPlaces(places) : {};\n\n  if (!children) { return params }\n\n  // Filter empty text nodes\n  children = children.filter(function (child) {\n    return child.tag || child.text.trim() !== ''\n  });\n\n  var everyPlace = children.every(vnodeHasPlaceAttribute);\n  if (process.env.NODE_ENV !== 'production' && everyPlace) {\n    warn('`place` attribute is deprecated in next major version. Please switch to Vue slots.');\n  }\n\n  return children.reduce(\n    everyPlace ? assignChildPlace : assignChildIndex,\n    params\n  )\n}\n\nfunction createParamsFromPlaces (places) {\n  if (process.env.NODE_ENV !== 'production') {\n    warn('`places` prop is deprecated in next major version. Please switch to Vue slots.');\n  }\n\n  return Array.isArray(places)\n    ? places.reduce(assignChildIndex, {})\n    : Object.assign({}, places)\n}\n\nfunction assignChildPlace (params, child) {\n  if (child.data && child.data.attrs && child.data.attrs.place) {\n    params[child.data.attrs.place] = child;\n  }\n  return params\n}\n\nfunction assignChildIndex (params, child, index) {\n  params[index] = child;\n  return params\n}\n\nfunction vnodeHasPlaceAttribute (vnode) {\n  return Boolean(vnode.data && vnode.data.attrs && vnode.data.attrs.place)\n}\n\n/*  */\n\nvar numberComponent = {\n  name: 'i18n-n',\n  functional: true,\n  props: {\n    tag: {\n      type: [String, Boolean, Object],\n      default: 'span'\n    },\n    value: {\n      type: Number,\n      required: true\n    },\n    format: {\n      type: [String, Object]\n    },\n    locale: {\n      type: String\n    }\n  },\n  render: function render (h, ref) {\n    var props = ref.props;\n    var parent = ref.parent;\n    var data = ref.data;\n\n    var i18n = parent.$i18n;\n\n    if (!i18n) {\n      if (process.env.NODE_ENV !== 'production') {\n        warn('Cannot find VueI18n instance!');\n      }\n      return null\n    }\n\n    var key = null;\n    var options = null;\n\n    if (isString(props.format)) {\n      key = props.format;\n    } else if (isObject(props.format)) {\n      if (props.format.key) {\n        key = props.format.key;\n      }\n\n      // Filter out number format options only\n      options = Object.keys(props.format).reduce(function (acc, prop) {\n        var obj;\n\n        if (includes(numberFormatKeys, prop)) {\n          return Object.assign({}, acc, ( obj = {}, obj[prop] = props.format[prop], obj ))\n        }\n        return acc\n      }, null);\n    }\n\n    var locale = props.locale || i18n.locale;\n    var parts = i18n._ntp(props.value, locale, key, options);\n\n    var values = parts.map(function (part, index) {\n      var obj;\n\n      var slot = data.scopedSlots && data.scopedSlots[part.type];\n      return slot ? slot(( obj = {}, obj[part.type] = part.value, obj.index = index, obj.parts = parts, obj )) : part.value\n    });\n\n    var tag = (!!props.tag && props.tag !== true) || props.tag === false ? props.tag : 'span';\n    return tag\n      ? h(tag, {\n        attrs: data.attrs,\n        'class': data['class'],\n        staticClass: data.staticClass\n      }, values)\n      : values\n  }\n};\n\n/*  */\n\nfunction bind (el, binding, vnode) {\n  if (!assert(el, vnode)) { return }\n\n  t(el, binding, vnode);\n}\n\nfunction update (el, binding, vnode, oldVNode) {\n  if (!assert(el, vnode)) { return }\n\n  var i18n = vnode.context.$i18n;\n  if (localeEqual(el, vnode) &&\n    (looseEqual(binding.value, binding.oldValue) &&\n     looseEqual(el._localeMessage, i18n.getLocaleMessage(i18n.locale)))) { return }\n\n  t(el, binding, vnode);\n}\n\nfunction unbind (el, binding, vnode, oldVNode) {\n  var vm = vnode.context;\n  if (!vm) {\n    warn('Vue instance does not exists in VNode context');\n    return\n  }\n\n  var i18n = vnode.context.$i18n || {};\n  if (!binding.modifiers.preserve && !i18n.preserveDirectiveContent) {\n    el.textContent = '';\n  }\n  el._vt = undefined;\n  delete el['_vt'];\n  el._locale = undefined;\n  delete el['_locale'];\n  el._localeMessage = undefined;\n  delete el['_localeMessage'];\n}\n\nfunction assert (el, vnode) {\n  var vm = vnode.context;\n  if (!vm) {\n    warn('Vue instance does not exists in VNode context');\n    return false\n  }\n\n  if (!vm.$i18n) {\n    warn('VueI18n instance does not exists in Vue instance');\n    return false\n  }\n\n  return true\n}\n\nfunction localeEqual (el, vnode) {\n  var vm = vnode.context;\n  return el._locale === vm.$i18n.locale\n}\n\nfunction t (el, binding, vnode) {\n  var ref$1, ref$2;\n\n  var value = binding.value;\n\n  var ref = parseValue(value);\n  var path = ref.path;\n  var locale = ref.locale;\n  var args = ref.args;\n  var choice = ref.choice;\n  if (!path && !locale && !args) {\n    warn('value type not supported');\n    return\n  }\n\n  if (!path) {\n    warn('`path` is required in v-t directive');\n    return\n  }\n\n  var vm = vnode.context;\n  if (choice != null) {\n    el._vt = el.textContent = (ref$1 = vm.$i18n).tc.apply(ref$1, [ path, choice ].concat( makeParams(locale, args) ));\n  } else {\n    el._vt = el.textContent = (ref$2 = vm.$i18n).t.apply(ref$2, [ path ].concat( makeParams(locale, args) ));\n  }\n  el._locale = vm.$i18n.locale;\n  el._localeMessage = vm.$i18n.getLocaleMessage(vm.$i18n.locale);\n}\n\nfunction parseValue (value) {\n  var path;\n  var locale;\n  var args;\n  var choice;\n\n  if (isString(value)) {\n    path = value;\n  } else if (isPlainObject(value)) {\n    path = value.path;\n    locale = value.locale;\n    args = value.args;\n    choice = value.choice;\n  }\n\n  return { path: path, locale: locale, args: args, choice: choice }\n}\n\nfunction makeParams (locale, args) {\n  var params = [];\n\n  locale && params.push(locale);\n  if (args && (Array.isArray(args) || isPlainObject(args))) {\n    params.push(args);\n  }\n\n  return params\n}\n\nvar Vue;\n\nfunction install (_Vue, options) {\n  if ( options === void 0 ) options = { bridge: false };\n\n  /* istanbul ignore if */\n  if (process.env.NODE_ENV !== 'production' && install.installed && _Vue === Vue) {\n    warn('already installed.');\n    return\n  }\n  install.installed = true;\n\n  Vue = _Vue;\n\n  var version = (Vue.version && Number(Vue.version.split('.')[0])) || -1;\n  /* istanbul ignore if */\n  if (process.env.NODE_ENV !== 'production' && version < 2) {\n    warn((\"vue-i18n (\" + (install.version) + \") need to use Vue 2.0 or later (Vue: \" + (Vue.version) + \").\"));\n    return\n  }\n\n  extend(Vue);\n  Vue.mixin(defineMixin(options.bridge));\n  Vue.directive('t', { bind: bind, update: update, unbind: unbind });\n  Vue.component(interpolationComponent.name, interpolationComponent);\n  Vue.component(numberComponent.name, numberComponent);\n\n  // use simple mergeStrategies to prevent i18n instance lose '__proto__'\n  var strats = Vue.config.optionMergeStrategies;\n  strats.i18n = function (parentVal, childVal) {\n    return childVal === undefined\n      ? parentVal\n      : childVal\n  };\n}\n\n/*  */\n\nvar BaseFormatter = function BaseFormatter () {\n  this._caches = Object.create(null);\n};\n\nBaseFormatter.prototype.interpolate = function interpolate (message, values) {\n  if (!values) {\n    return [message]\n  }\n  var tokens = this._caches[message];\n  if (!tokens) {\n    tokens = parse(message);\n    this._caches[message] = tokens;\n  }\n  return compile(tokens, values)\n};\n\n\n\nvar RE_TOKEN_LIST_VALUE = /^(?:\\d)+/;\nvar RE_TOKEN_NAMED_VALUE = /^(?:\\w)+/;\n\nfunction parse (format) {\n  var tokens = [];\n  var position = 0;\n\n  var text = '';\n  while (position < format.length) {\n    var char = format[position++];\n    if (char === '{') {\n      if (text) {\n        tokens.push({ type: 'text', value: text });\n      }\n\n      text = '';\n      var sub = '';\n      char = format[position++];\n      while (char !== undefined && char !== '}') {\n        sub += char;\n        char = format[position++];\n      }\n      var isClosed = char === '}';\n\n      var type = RE_TOKEN_LIST_VALUE.test(sub)\n        ? 'list'\n        : isClosed && RE_TOKEN_NAMED_VALUE.test(sub)\n          ? 'named'\n          : 'unknown';\n      tokens.push({ value: sub, type: type });\n    } else if (char === '%') {\n      // when found rails i18n syntax, skip text capture\n      if (format[(position)] !== '{') {\n        text += char;\n      }\n    } else {\n      text += char;\n    }\n  }\n\n  text && tokens.push({ type: 'text', value: text });\n\n  return tokens\n}\n\nfunction compile (tokens, values) {\n  var compiled = [];\n  var index = 0;\n\n  var mode = Array.isArray(values)\n    ? 'list'\n    : isObject(values)\n      ? 'named'\n      : 'unknown';\n  if (mode === 'unknown') { return compiled }\n\n  while (index < tokens.length) {\n    var token = tokens[index];\n    switch (token.type) {\n      case 'text':\n        compiled.push(token.value);\n        break\n      case 'list':\n        compiled.push(values[parseInt(token.value, 10)]);\n        break\n      case 'named':\n        if (mode === 'named') {\n          compiled.push((values)[token.value]);\n        } else {\n          if (process.env.NODE_ENV !== 'production') {\n            warn((\"Type of token '\" + (token.type) + \"' and format of value '\" + mode + \"' don't match!\"));\n          }\n        }\n        break\n      case 'unknown':\n        if (process.env.NODE_ENV !== 'production') {\n          warn(\"Detect 'unknown' type of token!\");\n        }\n        break\n    }\n    index++;\n  }\n\n  return compiled\n}\n\n/*  */\n\n/**\n *  Path parser\n *  - Inspired:\n *    Vue.js Path parser\n */\n\n// actions\nvar APPEND = 0;\nvar PUSH = 1;\nvar INC_SUB_PATH_DEPTH = 2;\nvar PUSH_SUB_PATH = 3;\n\n// states\nvar BEFORE_PATH = 0;\nvar IN_PATH = 1;\nvar BEFORE_IDENT = 2;\nvar IN_IDENT = 3;\nvar IN_SUB_PATH = 4;\nvar IN_SINGLE_QUOTE = 5;\nvar IN_DOUBLE_QUOTE = 6;\nvar AFTER_PATH = 7;\nvar ERROR = 8;\n\nvar pathStateMachine = [];\n\npathStateMachine[BEFORE_PATH] = {\n  'ws': [BEFORE_PATH],\n  'ident': [IN_IDENT, APPEND],\n  '[': [IN_SUB_PATH],\n  'eof': [AFTER_PATH]\n};\n\npathStateMachine[IN_PATH] = {\n  'ws': [IN_PATH],\n  '.': [BEFORE_IDENT],\n  '[': [IN_SUB_PATH],\n  'eof': [AFTER_PATH]\n};\n\npathStateMachine[BEFORE_IDENT] = {\n  'ws': [BEFORE_IDENT],\n  'ident': [IN_IDENT, APPEND],\n  '0': [IN_IDENT, APPEND],\n  'number': [IN_IDENT, APPEND]\n};\n\npathStateMachine[IN_IDENT] = {\n  'ident': [IN_IDENT, APPEND],\n  '0': [IN_IDENT, APPEND],\n  'number': [IN_IDENT, APPEND],\n  'ws': [IN_PATH, PUSH],\n  '.': [BEFORE_IDENT, PUSH],\n  '[': [IN_SUB_PATH, PUSH],\n  'eof': [AFTER_PATH, PUSH]\n};\n\npathStateMachine[IN_SUB_PATH] = {\n  \"'\": [IN_SINGLE_QUOTE, APPEND],\n  '\"': [IN_DOUBLE_QUOTE, APPEND],\n  '[': [IN_SUB_PATH, INC_SUB_PATH_DEPTH],\n  ']': [IN_PATH, PUSH_SUB_PATH],\n  'eof': ERROR,\n  'else': [IN_SUB_PATH, APPEND]\n};\n\npathStateMachine[IN_SINGLE_QUOTE] = {\n  \"'\": [IN_SUB_PATH, APPEND],\n  'eof': ERROR,\n  'else': [IN_SINGLE_QUOTE, APPEND]\n};\n\npathStateMachine[IN_DOUBLE_QUOTE] = {\n  '\"': [IN_SUB_PATH, APPEND],\n  'eof': ERROR,\n  'else': [IN_DOUBLE_QUOTE, APPEND]\n};\n\n/**\n * Check if an expression is a literal value.\n */\n\nvar literalValueRE = /^\\s?(?:true|false|-?[\\d.]+|'[^']*'|\"[^\"]*\")\\s?$/;\nfunction isLiteral (exp) {\n  return literalValueRE.test(exp)\n}\n\n/**\n * Strip quotes from a string\n */\n\nfunction stripQuotes (str) {\n  var a = str.charCodeAt(0);\n  var b = str.charCodeAt(str.length - 1);\n  return a === b && (a === 0x22 || a === 0x27)\n    ? str.slice(1, -1)\n    : str\n}\n\n/**\n * Determine the type of a character in a keypath.\n */\n\nfunction getPathCharType (ch) {\n  if (ch === undefined || ch === null) { return 'eof' }\n\n  var code = ch.charCodeAt(0);\n\n  switch (code) {\n    case 0x5B: // [\n    case 0x5D: // ]\n    case 0x2E: // .\n    case 0x22: // \"\n    case 0x27: // '\n      return ch\n\n    case 0x5F: // _\n    case 0x24: // $\n    case 0x2D: // -\n      return 'ident'\n\n    case 0x09: // Tab\n    case 0x0A: // Newline\n    case 0x0D: // Return\n    case 0xA0:  // No-break space\n    case 0xFEFF:  // Byte Order Mark\n    case 0x2028:  // Line Separator\n    case 0x2029:  // Paragraph Separator\n      return 'ws'\n  }\n\n  return 'ident'\n}\n\n/**\n * Format a subPath, return its plain form if it is\n * a literal string or number. Otherwise prepend the\n * dynamic indicator (*).\n */\n\nfunction formatSubPath (path) {\n  var trimmed = path.trim();\n  // invalid leading 0\n  if (path.charAt(0) === '0' && isNaN(path)) { return false }\n\n  return isLiteral(trimmed) ? stripQuotes(trimmed) : '*' + trimmed\n}\n\n/**\n * Parse a string path into an array of segments\n */\n\nfunction parse$1 (path) {\n  var keys = [];\n  var index = -1;\n  var mode = BEFORE_PATH;\n  var subPathDepth = 0;\n  var c;\n  var key;\n  var newChar;\n  var type;\n  var transition;\n  var action;\n  var typeMap;\n  var actions = [];\n\n  actions[PUSH] = function () {\n    if (key !== undefined) {\n      keys.push(key);\n      key = undefined;\n    }\n  };\n\n  actions[APPEND] = function () {\n    if (key === undefined) {\n      key = newChar;\n    } else {\n      key += newChar;\n    }\n  };\n\n  actions[INC_SUB_PATH_DEPTH] = function () {\n    actions[APPEND]();\n    subPathDepth++;\n  };\n\n  actions[PUSH_SUB_PATH] = function () {\n    if (subPathDepth > 0) {\n      subPathDepth--;\n      mode = IN_SUB_PATH;\n      actions[APPEND]();\n    } else {\n      subPathDepth = 0;\n      if (key === undefined) { return false }\n      key = formatSubPath(key);\n      if (key === false) {\n        return false\n      } else {\n        actions[PUSH]();\n      }\n    }\n  };\n\n  function maybeUnescapeQuote () {\n    var nextChar = path[index + 1];\n    if ((mode === IN_SINGLE_QUOTE && nextChar === \"'\") ||\n      (mode === IN_DOUBLE_QUOTE && nextChar === '\"')) {\n      index++;\n      newChar = '\\\\' + nextChar;\n      actions[APPEND]();\n      return true\n    }\n  }\n\n  while (mode !== null) {\n    index++;\n    c = path[index];\n\n    if (c === '\\\\' && maybeUnescapeQuote()) {\n      continue\n    }\n\n    type = getPathCharType(c);\n    typeMap = pathStateMachine[mode];\n    transition = typeMap[type] || typeMap['else'] || ERROR;\n\n    if (transition === ERROR) {\n      return // parse error\n    }\n\n    mode = transition[0];\n    action = actions[transition[1]];\n    if (action) {\n      newChar = transition[2];\n      newChar = newChar === undefined\n        ? c\n        : newChar;\n      if (action() === false) {\n        return\n      }\n    }\n\n    if (mode === AFTER_PATH) {\n      return keys\n    }\n  }\n}\n\n\n\n\n\nvar I18nPath = function I18nPath () {\n  this._cache = Object.create(null);\n};\n\n/**\n * External parse that check for a cache hit first\n */\nI18nPath.prototype.parsePath = function parsePath (path) {\n  var hit = this._cache[path];\n  if (!hit) {\n    hit = parse$1(path);\n    if (hit) {\n      this._cache[path] = hit;\n    }\n  }\n  return hit || []\n};\n\n/**\n * Get path value from path string\n */\nI18nPath.prototype.getPathValue = function getPathValue (obj, path) {\n  if (!isObject(obj)) { return null }\n\n  var paths = this.parsePath(path);\n  if (paths.length === 0) {\n    return null\n  } else {\n    var length = paths.length;\n    var last = obj;\n    var i = 0;\n    while (i < length) {\n      var value = last[paths[i]];\n      if (value === undefined || value === null) {\n        return null\n      }\n      last = value;\n      i++;\n    }\n\n    return last\n  }\n};\n\n/*  */\n\n\n\nvar htmlTagMatcher = /<\\/?[\\w\\s=\"/.':;#-\\/]+>/;\nvar linkKeyMatcher = /(?:@(?:\\.[a-z]+)?:(?:[\\w\\-_|./]+|\\([\\w\\-_|./]+\\)))/g;\nvar linkKeyPrefixMatcher = /^@(?:\\.([a-z]+))?:/;\nvar bracketsMatcher = /[()]/g;\nvar defaultModifiers = {\n  'upper': function (str) { return str.toLocaleUpperCase(); },\n  'lower': function (str) { return str.toLocaleLowerCase(); },\n  'capitalize': function (str) { return (\"\" + (str.charAt(0).toLocaleUpperCase()) + (str.substr(1))); }\n};\n\nvar defaultFormatter = new BaseFormatter();\n\nvar VueI18n = function VueI18n (options) {\n  var this$1 = this;\n  if ( options === void 0 ) options = {};\n\n  // Auto install if it is not done yet and `window` has `Vue`.\n  // To allow users to avoid auto-installation in some cases,\n  // this code should be placed here. See #290\n  /* istanbul ignore if */\n  if (!Vue && typeof window !== 'undefined' && window.Vue) {\n    install(window.Vue);\n  }\n\n  var locale = options.locale || 'en-US';\n  var fallbackLocale = options.fallbackLocale === false\n    ? false\n    : options.fallbackLocale || 'en-US';\n  var messages = options.messages || {};\n  var dateTimeFormats = options.dateTimeFormats || options.datetimeFormats || {};\n  var numberFormats = options.numberFormats || {};\n\n  this._vm = null;\n  this._formatter = options.formatter || defaultFormatter;\n  this._modifiers = options.modifiers || {};\n  this._missing = options.missing || null;\n  this._root = options.root || null;\n  this._sync = options.sync === undefined ? true : !!options.sync;\n  this._fallbackRoot = options.fallbackRoot === undefined\n    ? true\n    : !!options.fallbackRoot;\n  this._formatFallbackMessages = options.formatFallbackMessages === undefined\n    ? false\n    : !!options.formatFallbackMessages;\n  this._silentTranslationWarn = options.silentTranslationWarn === undefined\n    ? false\n    : options.silentTranslationWarn;\n  this._silentFallbackWarn = options.silentFallbackWarn === undefined\n    ? false\n    : !!options.silentFallbackWarn;\n  this._dateTimeFormatters = {};\n  this._numberFormatters = {};\n  this._path = new I18nPath();\n  this._dataListeners = new Set();\n  this._componentInstanceCreatedListener = options.componentInstanceCreatedListener || null;\n  this._preserveDirectiveContent = options.preserveDirectiveContent === undefined\n    ? false\n    : !!options.preserveDirectiveContent;\n  this.pluralizationRules = options.pluralizationRules || {};\n  this._warnHtmlInMessage = options.warnHtmlInMessage || 'off';\n  this._postTranslation = options.postTranslation || null;\n  this._escapeParameterHtml = options.escapeParameterHtml || false;\n\n  if ('__VUE_I18N_BRIDGE__' in options) {\n    this.__VUE_I18N_BRIDGE__ = options.__VUE_I18N_BRIDGE__;\n  }\n\n  /**\n   * @param choice {number} a choice index given by the input to $tc: `$tc('path.to.rule', choiceIndex)`\n   * @param choicesLength {number} an overall amount of available choices\n   * @returns a final choice index\n  */\n  this.getChoiceIndex = function (choice, choicesLength) {\n    var thisPrototype = Object.getPrototypeOf(this$1);\n    if (thisPrototype && thisPrototype.getChoiceIndex) {\n      var prototypeGetChoiceIndex = (thisPrototype.getChoiceIndex);\n      return (prototypeGetChoiceIndex).call(this$1, choice, choicesLength)\n    }\n\n    // Default (old) getChoiceIndex implementation - english-compatible\n    var defaultImpl = function (_choice, _choicesLength) {\n      _choice = Math.abs(_choice);\n\n      if (_choicesLength === 2) {\n        return _choice\n          ? _choice > 1\n            ? 1\n            : 0\n          : 1\n      }\n\n      return _choice ? Math.min(_choice, 2) : 0\n    };\n\n    if (this$1.locale in this$1.pluralizationRules) {\n      return this$1.pluralizationRules[this$1.locale].apply(this$1, [choice, choicesLength])\n    } else {\n      return defaultImpl(choice, choicesLength)\n    }\n  };\n\n\n  this._exist = function (message, key) {\n    if (!message || !key) { return false }\n    if (!isNull(this$1._path.getPathValue(message, key))) { return true }\n    // fallback for flat key\n    if (message[key]) { return true }\n    return false\n  };\n\n  if (this._warnHtmlInMessage === 'warn' || this._warnHtmlInMessage === 'error') {\n    Object.keys(messages).forEach(function (locale) {\n      this$1._checkLocaleMessage(locale, this$1._warnHtmlInMessage, messages[locale]);\n    });\n  }\n\n  this._initVM({\n    locale: locale,\n    fallbackLocale: fallbackLocale,\n    messages: messages,\n    dateTimeFormats: dateTimeFormats,\n    numberFormats: numberFormats\n  });\n};\n\nvar prototypeAccessors = { vm: { configurable: true },messages: { configurable: true },dateTimeFormats: { configurable: true },numberFormats: { configurable: true },availableLocales: { configurable: true },locale: { configurable: true },fallbackLocale: { configurable: true },formatFallbackMessages: { configurable: true },missing: { configurable: true },formatter: { configurable: true },silentTranslationWarn: { configurable: true },silentFallbackWarn: { configurable: true },preserveDirectiveContent: { configurable: true },warnHtmlInMessage: { configurable: true },postTranslation: { configurable: true },sync: { configurable: true } };\n\nVueI18n.prototype._checkLocaleMessage = function _checkLocaleMessage (locale, level, message) {\n  var paths = [];\n\n  var fn = function (level, locale, message, paths) {\n    if (isPlainObject(message)) {\n      Object.keys(message).forEach(function (key) {\n        var val = message[key];\n        if (isPlainObject(val)) {\n          paths.push(key);\n          paths.push('.');\n          fn(level, locale, val, paths);\n          paths.pop();\n          paths.pop();\n        } else {\n          paths.push(key);\n          fn(level, locale, val, paths);\n          paths.pop();\n        }\n      });\n    } else if (isArray(message)) {\n      message.forEach(function (item, index) {\n        if (isPlainObject(item)) {\n          paths.push((\"[\" + index + \"]\"));\n          paths.push('.');\n          fn(level, locale, item, paths);\n          paths.pop();\n          paths.pop();\n        } else {\n          paths.push((\"[\" + index + \"]\"));\n          fn(level, locale, item, paths);\n          paths.pop();\n        }\n      });\n    } else if (isString(message)) {\n      var ret = htmlTagMatcher.test(message);\n      if (ret) {\n        var msg = \"Detected HTML in message '\" + message + \"' of keypath '\" + (paths.join('')) + \"' at '\" + locale + \"'. Consider component interpolation with '<i18n>' to avoid XSS. See https://bit.ly/2ZqJzkp\";\n        if (level === 'warn') {\n          warn(msg);\n        } else if (level === 'error') {\n          error(msg);\n        }\n      }\n    }\n  };\n\n  fn(level, locale, message, paths);\n};\n\nVueI18n.prototype._initVM = function _initVM (data) {\n  var silent = Vue.config.silent;\n  Vue.config.silent = true;\n  this._vm = new Vue({ data: data, __VUE18N__INSTANCE__: true });\n  Vue.config.silent = silent;\n};\n\nVueI18n.prototype.destroyVM = function destroyVM () {\n  this._vm.$destroy();\n};\n\nVueI18n.prototype.subscribeDataChanging = function subscribeDataChanging (vm) {\n  this._dataListeners.add(vm);\n};\n\nVueI18n.prototype.unsubscribeDataChanging = function unsubscribeDataChanging (vm) {\n  remove(this._dataListeners, vm);\n};\n\nVueI18n.prototype.watchI18nData = function watchI18nData () {\n    var this$1 = this;\n  return this._vm.$watch('$data', function () {\n    var listeners = arrayFrom(this$1._dataListeners);\n    var i = listeners.length;\n    while(i--) {\n      Vue.nextTick(function () {\n        listeners[i] && listeners[i].$forceUpdate();\n      });\n    }\n  }, { deep: true })\n};\n\nVueI18n.prototype.watchLocale = function watchLocale (composer) {\n  if (!composer) {\n    /* istanbul ignore if */\n    if (!this._sync || !this._root) { return null }\n    var target = this._vm;\n    return this._root.$i18n.vm.$watch('locale', function (val) {\n      target.$set(target, 'locale', val);\n      target.$forceUpdate();\n    }, { immediate: true })\n  } else {\n    // deal with vue-i18n-bridge\n    if (!this.__VUE_I18N_BRIDGE__) { return null }\n    var self = this;\n    var target$1 = this._vm;\n    return this.vm.$watch('locale', function (val) {\n      target$1.$set(target$1, 'locale', val);\n      if (self.__VUE_I18N_BRIDGE__ && composer) {\n        composer.locale.value = val;\n      }\n      target$1.$forceUpdate();\n    }, { immediate: true })\n  }\n};\n\nVueI18n.prototype.onComponentInstanceCreated = function onComponentInstanceCreated (newI18n) {\n  if (this._componentInstanceCreatedListener) {\n    this._componentInstanceCreatedListener(newI18n, this);\n  }\n};\n\nprototypeAccessors.vm.get = function () { return this._vm };\n\nprototypeAccessors.messages.get = function () { return looseClone(this._getMessages()) };\nprototypeAccessors.dateTimeFormats.get = function () { return looseClone(this._getDateTimeFormats()) };\nprototypeAccessors.numberFormats.get = function () { return looseClone(this._getNumberFormats()) };\nprototypeAccessors.availableLocales.get = function () { return Object.keys(this.messages).sort() };\n\nprototypeAccessors.locale.get = function () { return this._vm.locale };\nprototypeAccessors.locale.set = function (locale) {\n  this._vm.$set(this._vm, 'locale', locale);\n};\n\nprototypeAccessors.fallbackLocale.get = function () { return this._vm.fallbackLocale };\nprototypeAccessors.fallbackLocale.set = function (locale) {\n  this._localeChainCache = {};\n  this._vm.$set(this._vm, 'fallbackLocale', locale);\n};\n\nprototypeAccessors.formatFallbackMessages.get = function () { return this._formatFallbackMessages };\nprototypeAccessors.formatFallbackMessages.set = function (fallback) { this._formatFallbackMessages = fallback; };\n\nprototypeAccessors.missing.get = function () { return this._missing };\nprototypeAccessors.missing.set = function (handler) { this._missing = handler; };\n\nprototypeAccessors.formatter.get = function () { return this._formatter };\nprototypeAccessors.formatter.set = function (formatter) { this._formatter = formatter; };\n\nprototypeAccessors.silentTranslationWarn.get = function () { return this._silentTranslationWarn };\nprototypeAccessors.silentTranslationWarn.set = function (silent) { this._silentTranslationWarn = silent; };\n\nprototypeAccessors.silentFallbackWarn.get = function () { return this._silentFallbackWarn };\nprototypeAccessors.silentFallbackWarn.set = function (silent) { this._silentFallbackWarn = silent; };\n\nprototypeAccessors.preserveDirectiveContent.get = function () { return this._preserveDirectiveContent };\nprototypeAccessors.preserveDirectiveContent.set = function (preserve) { this._preserveDirectiveContent = preserve; };\n\nprototypeAccessors.warnHtmlInMessage.get = function () { return this._warnHtmlInMessage };\nprototypeAccessors.warnHtmlInMessage.set = function (level) {\n    var this$1 = this;\n\n  var orgLevel = this._warnHtmlInMessage;\n  this._warnHtmlInMessage = level;\n  if (orgLevel !== level && (level === 'warn' || level === 'error')) {\n    var messages = this._getMessages();\n    Object.keys(messages).forEach(function (locale) {\n      this$1._checkLocaleMessage(locale, this$1._warnHtmlInMessage, messages[locale]);\n    });\n  }\n};\n\nprototypeAccessors.postTranslation.get = function () { return this._postTranslation };\nprototypeAccessors.postTranslation.set = function (handler) { this._postTranslation = handler; };\n\nprototypeAccessors.sync.get = function () { return this._sync };\nprototypeAccessors.sync.set = function (val) { this._sync = val; };\n\nVueI18n.prototype._getMessages = function _getMessages () { return this._vm.messages };\nVueI18n.prototype._getDateTimeFormats = function _getDateTimeFormats () { return this._vm.dateTimeFormats };\nVueI18n.prototype._getNumberFormats = function _getNumberFormats () { return this._vm.numberFormats };\n\nVueI18n.prototype._warnDefault = function _warnDefault (locale, key, result, vm, values, interpolateMode) {\n  if (!isNull(result)) { return result }\n  if (this._missing) {\n    var missingRet = this._missing.apply(null, [locale, key, vm, values]);\n    if (isString(missingRet)) {\n      return missingRet\n    }\n  } else {\n    if (process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key)) {\n      warn(\n        \"Cannot translate the value of keypath '\" + key + \"'. \" +\n        'Use the value of keypath as default.'\n      );\n    }\n  }\n\n  if (this._formatFallbackMessages) {\n    var parsedArgs = parseArgs.apply(void 0, values);\n    return this._render(key, interpolateMode, parsedArgs.params, key)\n  } else {\n    return key\n  }\n};\n\nVueI18n.prototype._isFallbackRoot = function _isFallbackRoot (val) {\n  return !val && !isNull(this._root) && this._fallbackRoot\n};\n\nVueI18n.prototype._isSilentFallbackWarn = function _isSilentFallbackWarn (key) {\n  return this._silentFallbackWarn instanceof RegExp\n    ? this._silentFallbackWarn.test(key)\n    : this._silentFallbackWarn\n};\n\nVueI18n.prototype._isSilentFallback = function _isSilentFallback (locale, key) {\n  return this._isSilentFallbackWarn(key) && (this._isFallbackRoot() || locale !== this.fallbackLocale)\n};\n\nVueI18n.prototype._isSilentTranslationWarn = function _isSilentTranslationWarn (key) {\n  return this._silentTranslationWarn instanceof RegExp\n    ? this._silentTranslationWarn.test(key)\n    : this._silentTranslationWarn\n};\n\nVueI18n.prototype._interpolate = function _interpolate (\n  locale,\n  message,\n  key,\n  host,\n  interpolateMode,\n  values,\n  visitedLinkStack\n) {\n  if (!message) { return null }\n\n  var pathRet = this._path.getPathValue(message, key);\n  if (isArray(pathRet) || isPlainObject(pathRet)) { return pathRet }\n\n  var ret;\n  if (isNull(pathRet)) {\n    /* istanbul ignore else */\n    if (isPlainObject(message)) {\n      ret = message[key];\n      if (!(isString(ret) || isFunction(ret))) {\n        if (process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key) && !this._isSilentFallback(locale, key)) {\n          warn((\"Value of key '\" + key + \"' is not a string or function !\"));\n        }\n        return null\n      }\n    } else {\n      return null\n    }\n  } else {\n    /* istanbul ignore else */\n    if (isString(pathRet) || isFunction(pathRet)) {\n      ret = pathRet;\n    } else {\n      if (process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key) && !this._isSilentFallback(locale, key)) {\n        warn((\"Value of key '\" + key + \"' is not a string or function!\"));\n      }\n      return null\n    }\n  }\n\n  // Check for the existence of links within the translated string\n  if (isString(ret) && (ret.indexOf('@:') >= 0 || ret.indexOf('@.') >= 0)) {\n    ret = this._link(locale, message, ret, host, 'raw', values, visitedLinkStack);\n  }\n\n  return this._render(ret, interpolateMode, values, key)\n};\n\nVueI18n.prototype._link = function _link (\n  locale,\n  message,\n  str,\n  host,\n  interpolateMode,\n  values,\n  visitedLinkStack\n) {\n  var ret = str;\n\n  // Match all the links within the local\n  // We are going to replace each of\n  // them with its translation\n  var matches = ret.match(linkKeyMatcher);\n    \n  // eslint-disable-next-line no-autofix/prefer-const\n  for (var idx in matches) {\n    // ie compatible: filter custom array\n    // prototype method\n    if (!matches.hasOwnProperty(idx)) {\n      continue\n    }\n    var link = matches[idx];\n    var linkKeyPrefixMatches = link.match(linkKeyPrefixMatcher);\n    var linkPrefix = linkKeyPrefixMatches[0];\n      var formatterName = linkKeyPrefixMatches[1];\n\n    // Remove the leading @:, @.case: and the brackets\n    var linkPlaceholder = link.replace(linkPrefix, '').replace(bracketsMatcher, '');\n\n    if (includes(visitedLinkStack, linkPlaceholder)) {\n      if (process.env.NODE_ENV !== 'production') {\n        warn((\"Circular reference found. \\\"\" + link + \"\\\" is already visited in the chain of \" + (visitedLinkStack.reverse().join(' <- '))));\n      }\n      return ret\n    }\n    visitedLinkStack.push(linkPlaceholder);\n\n    // Translate the link\n    var translated = this._interpolate(\n      locale, message, linkPlaceholder, host,\n      interpolateMode === 'raw' ? 'string' : interpolateMode,\n      interpolateMode === 'raw' ? undefined : values,\n      visitedLinkStack\n    );\n\n    if (this._isFallbackRoot(translated)) {\n      if (process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(linkPlaceholder)) {\n        warn((\"Fall back to translate the link placeholder '\" + linkPlaceholder + \"' with root locale.\"));\n      }\n      /* istanbul ignore if */\n      if (!this._root) { throw Error('unexpected error') }\n      var root = this._root.$i18n;\n      translated = root._translate(\n        root._getMessages(), root.locale, root.fallbackLocale,\n        linkPlaceholder, host, interpolateMode, values\n      );\n    }\n    translated = this._warnDefault(\n      locale, linkPlaceholder, translated, host,\n      isArray(values) ? values : [values],\n      interpolateMode\n    );\n\n    if (this._modifiers.hasOwnProperty(formatterName)) {\n      translated = this._modifiers[formatterName](translated);\n    } else if (defaultModifiers.hasOwnProperty(formatterName)) {\n      translated = defaultModifiers[formatterName](translated);\n    }\n\n    visitedLinkStack.pop();\n\n    // Replace the link with the translated\n    ret = !translated ? ret : ret.replace(link, translated);\n  }\n\n  return ret\n};\n\nVueI18n.prototype._createMessageContext = function _createMessageContext (values, formatter, path, interpolateMode) {\n    var this$1 = this;\n\n  var _list = isArray(values) ? values : [];\n  var _named = isObject(values) ? values : {};\n  var list = function (index) { return _list[index]; };\n  var named = function (key) { return _named[key]; };\n  var messages = this._getMessages();\n  var locale = this.locale;\n\n  return {\n    list: list,\n    named: named,\n    values: values,\n    formatter: formatter,\n    path: path,\n    messages: messages,\n    locale: locale,\n    linked: function (linkedKey) { return this$1._interpolate(locale, messages[locale] || {}, linkedKey, null, interpolateMode, undefined, [linkedKey]); }\n  }\n};\n\nVueI18n.prototype._render = function _render (message, interpolateMode, values, path) {\n  if (isFunction(message)) {\n    return message(\n      this._createMessageContext(values, this._formatter || defaultFormatter, path, interpolateMode)\n    )\n  }\n\n  var ret = this._formatter.interpolate(message, values, path);\n\n  // If the custom formatter refuses to work - apply the default one\n  if (!ret) {\n    ret = defaultFormatter.interpolate(message, values, path);\n  }\n\n  // if interpolateMode is **not** 'string' ('row'),\n  // return the compiled data (e.g. ['foo', VNode, 'bar']) with formatter\n  return interpolateMode === 'string' && !isString(ret) ? ret.join('') : ret\n};\n\nVueI18n.prototype._appendItemToChain = function _appendItemToChain (chain, item, blocks) {\n  var follow = false;\n  if (!includes(chain, item)) {\n    follow = true;\n    if (item) {\n      follow = item[item.length - 1] !== '!';\n      item = item.replace(/!/g, '');\n      chain.push(item);\n      if (blocks && blocks[item]) {\n        follow = blocks[item];\n      }\n    }\n  }\n  return follow\n};\n\nVueI18n.prototype._appendLocaleToChain = function _appendLocaleToChain (chain, locale, blocks) {\n  var follow;\n  var tokens = locale.split('-');\n  do {\n    var item = tokens.join('-');\n    follow = this._appendItemToChain(chain, item, blocks);\n    tokens.splice(-1, 1);\n  } while (tokens.length && (follow === true))\n  return follow\n};\n\nVueI18n.prototype._appendBlockToChain = function _appendBlockToChain (chain, block, blocks) {\n  var follow = true;\n  for (var i = 0; (i < block.length) && (isBoolean(follow)); i++) {\n    var locale = block[i];\n    if (isString(locale)) {\n      follow = this._appendLocaleToChain(chain, locale, blocks);\n    }\n  }\n  return follow\n};\n\nVueI18n.prototype._getLocaleChain = function _getLocaleChain (start, fallbackLocale) {\n  if (start === '') { return [] }\n\n  if (!this._localeChainCache) {\n    this._localeChainCache = {};\n  }\n\n  var chain = this._localeChainCache[start];\n  if (!chain) {\n    if (!fallbackLocale) {\n      fallbackLocale = this.fallbackLocale;\n    }\n    chain = [];\n\n    // first block defined by start\n    var block = [start];\n\n    // while any intervening block found\n    while (isArray(block)) {\n      block = this._appendBlockToChain(\n        chain,\n        block,\n        fallbackLocale\n      );\n    }\n\n    // last block defined by default\n    var defaults;\n    if (isArray(fallbackLocale)) {\n      defaults = fallbackLocale;\n    } else if (isObject(fallbackLocale)) {\n      /* $FlowFixMe */\n      if (fallbackLocale['default']) {\n        defaults = fallbackLocale['default'];\n      } else {\n        defaults = null;\n      }\n    } else {\n      defaults = fallbackLocale;\n    }\n\n    // convert defaults to array\n    if (isString(defaults)) {\n      block = [defaults];\n    } else {\n      block = defaults;\n    }\n    if (block) {\n      this._appendBlockToChain(\n        chain,\n        block,\n        null\n      );\n    }\n    this._localeChainCache[start] = chain;\n  }\n  return chain\n};\n\nVueI18n.prototype._translate = function _translate (\n  messages,\n  locale,\n  fallback,\n  key,\n  host,\n  interpolateMode,\n  args\n) {\n  var chain = this._getLocaleChain(locale, fallback);\n  var res;\n  for (var i = 0; i < chain.length; i++) {\n    var step = chain[i];\n    res =\n      this._interpolate(step, messages[step], key, host, interpolateMode, args, [key]);\n    if (!isNull(res)) {\n      if (step !== locale && process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key) && !this._isSilentFallbackWarn(key)) {\n        warn((\"Fall back to translate the keypath '\" + key + \"' with '\" + step + \"' locale.\"));\n      }\n      return res\n    }\n  }\n  return null\n};\n\nVueI18n.prototype._t = function _t (key, _locale, messages, host) {\n    var ref;\n\n    var values = [], len = arguments.length - 4;\n    while ( len-- > 0 ) values[ len ] = arguments[ len + 4 ];\n  if (!key) { return '' }\n\n  var parsedArgs = parseArgs.apply(void 0, values);\n  if(this._escapeParameterHtml) {\n    parsedArgs.params = escapeParams(parsedArgs.params);\n  }\n\n  var locale = parsedArgs.locale || _locale;\n\n  var ret = this._translate(\n    messages, locale, this.fallbackLocale, key,\n    host, 'string', parsedArgs.params\n  );\n  if (this._isFallbackRoot(ret)) {\n    if (process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key) && !this._isSilentFallbackWarn(key)) {\n      warn((\"Fall back to translate the keypath '\" + key + \"' with root locale.\"));\n    }\n    /* istanbul ignore if */\n    if (!this._root) { throw Error('unexpected error') }\n    return (ref = this._root).$t.apply(ref, [ key ].concat( values ))\n  } else {\n    ret = this._warnDefault(locale, key, ret, host, values, 'string');\n    if (this._postTranslation && ret !== null && ret !== undefined) {\n      ret = this._postTranslation(ret, key);\n    }\n    return ret\n  }\n};\n\nVueI18n.prototype.t = function t (key) {\n    var ref;\n\n    var values = [], len = arguments.length - 1;\n    while ( len-- > 0 ) values[ len ] = arguments[ len + 1 ];\n  return (ref = this)._t.apply(ref, [ key, this.locale, this._getMessages(), null ].concat( values ))\n};\n\nVueI18n.prototype._i = function _i (key, locale, messages, host, values) {\n  var ret =\n    this._translate(messages, locale, this.fallbackLocale, key, host, 'raw', values);\n  if (this._isFallbackRoot(ret)) {\n    if (process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key)) {\n      warn((\"Fall back to interpolate the keypath '\" + key + \"' with root locale.\"));\n    }\n    if (!this._root) { throw Error('unexpected error') }\n    return this._root.$i18n.i(key, locale, values)\n  } else {\n    return this._warnDefault(locale, key, ret, host, [values], 'raw')\n  }\n};\n\nVueI18n.prototype.i = function i (key, locale, values) {\n  /* istanbul ignore if */\n  if (!key) { return '' }\n\n  if (!isString(locale)) {\n    locale = this.locale;\n  }\n\n  return this._i(key, locale, this._getMessages(), null, values)\n};\n\nVueI18n.prototype._tc = function _tc (\n  key,\n  _locale,\n  messages,\n  host,\n  choice\n) {\n    var ref;\n\n    var values = [], len = arguments.length - 5;\n    while ( len-- > 0 ) values[ len ] = arguments[ len + 5 ];\n  if (!key) { return '' }\n  if (choice === undefined) {\n    choice = 1;\n  }\n\n  var predefined = { 'count': choice, 'n': choice };\n  var parsedArgs = parseArgs.apply(void 0, values);\n  parsedArgs.params = Object.assign(predefined, parsedArgs.params);\n  values = parsedArgs.locale === null ? [parsedArgs.params] : [parsedArgs.locale, parsedArgs.params];\n  return this.fetchChoice((ref = this)._t.apply(ref, [ key, _locale, messages, host ].concat( values )), choice)\n};\n\nVueI18n.prototype.fetchChoice = function fetchChoice (message, choice) {\n  /* istanbul ignore if */\n  if (!message || !isString(message)) { return null }\n  var choices = message.split('|');\n\n  choice = this.getChoiceIndex(choice, choices.length);\n  if (!choices[choice]) { return message }\n  return choices[choice].trim()\n};\n\nVueI18n.prototype.tc = function tc (key, choice) {\n    var ref;\n\n    var values = [], len = arguments.length - 2;\n    while ( len-- > 0 ) values[ len ] = arguments[ len + 2 ];\n  return (ref = this)._tc.apply(ref, [ key, this.locale, this._getMessages(), null, choice ].concat( values ))\n};\n\nVueI18n.prototype._te = function _te (key, locale, messages) {\n    var args = [], len = arguments.length - 3;\n    while ( len-- > 0 ) args[ len ] = arguments[ len + 3 ];\n\n  var _locale = parseArgs.apply(void 0, args).locale || locale;\n  return this._exist(messages[_locale], key)\n};\n\nVueI18n.prototype.te = function te (key, locale) {\n  return this._te(key, this.locale, this._getMessages(), locale)\n};\n\nVueI18n.prototype.getLocaleMessage = function getLocaleMessage (locale) {\n  return looseClone(this._vm.messages[locale] || {})\n};\n\nVueI18n.prototype.setLocaleMessage = function setLocaleMessage (locale, message) {\n  if (this._warnHtmlInMessage === 'warn' || this._warnHtmlInMessage === 'error') {\n    this._checkLocaleMessage(locale, this._warnHtmlInMessage, message);\n  }\n  this._vm.$set(this._vm.messages, locale, message);\n};\n\nVueI18n.prototype.mergeLocaleMessage = function mergeLocaleMessage (locale, message) {\n  if (this._warnHtmlInMessage === 'warn' || this._warnHtmlInMessage === 'error') {\n    this._checkLocaleMessage(locale, this._warnHtmlInMessage, message);\n  }\n  this._vm.$set(this._vm.messages, locale, merge(\n    typeof this._vm.messages[locale] !== 'undefined' && Object.keys(this._vm.messages[locale]).length\n      ? Object.assign({}, this._vm.messages[locale])\n      : {},\n    message\n  ));\n};\n\nVueI18n.prototype.getDateTimeFormat = function getDateTimeFormat (locale) {\n  return looseClone(this._vm.dateTimeFormats[locale] || {})\n};\n\nVueI18n.prototype.setDateTimeFormat = function setDateTimeFormat (locale, format) {\n  this._vm.$set(this._vm.dateTimeFormats, locale, format);\n  this._clearDateTimeFormat(locale, format);\n};\n\nVueI18n.prototype.mergeDateTimeFormat = function mergeDateTimeFormat (locale, format) {\n  this._vm.$set(this._vm.dateTimeFormats, locale, merge(this._vm.dateTimeFormats[locale] || {}, format));\n  this._clearDateTimeFormat(locale, format);\n};\n\nVueI18n.prototype._clearDateTimeFormat = function _clearDateTimeFormat (locale, format) {\n  // eslint-disable-next-line no-autofix/prefer-const\n  for (var key in format) {\n    var id = locale + \"__\" + key;\n\n    if (!this._dateTimeFormatters.hasOwnProperty(id)) {\n      continue\n    }\n\n    delete this._dateTimeFormatters[id];\n  }\n};\n\nVueI18n.prototype._localizeDateTime = function _localizeDateTime (\n  value,\n  locale,\n  fallback,\n  dateTimeFormats,\n  key\n) {\n  var _locale = locale;\n  var formats = dateTimeFormats[_locale];\n\n  var chain = this._getLocaleChain(locale, fallback);\n  for (var i = 0; i < chain.length; i++) {\n    var current = _locale;\n    var step = chain[i];\n    formats = dateTimeFormats[step];\n    _locale = step;\n    // fallback locale\n    if (isNull(formats) || isNull(formats[key])) {\n      if (step !== locale && process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key) && !this._isSilentFallbackWarn(key)) {\n        warn((\"Fall back to '\" + step + \"' datetime formats from '\" + current + \"' datetime formats.\"));\n      }\n    } else {\n      break\n    }\n  }\n\n  if (isNull(formats) || isNull(formats[key])) {\n    return null\n  } else {\n    var format = formats[key];\n    var id = _locale + \"__\" + key;\n    var formatter = this._dateTimeFormatters[id];\n    if (!formatter) {\n      formatter = this._dateTimeFormatters[id] = new Intl.DateTimeFormat(_locale, format);\n    }\n    return formatter.format(value)\n  }\n};\n\nVueI18n.prototype._d = function _d (value, locale, key) {\n  /* istanbul ignore if */\n  if (process.env.NODE_ENV !== 'production' && !VueI18n.availabilities.dateTimeFormat) {\n    warn('Cannot format a Date value due to not supported Intl.DateTimeFormat.');\n    return ''\n  }\n\n  if (!key) {\n    return new Intl.DateTimeFormat(locale).format(value)\n  }\n\n  var ret =\n    this._localizeDateTime(value, locale, this.fallbackLocale, this._getDateTimeFormats(), key);\n  if (this._isFallbackRoot(ret)) {\n    if (process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key) && !this._isSilentFallbackWarn(key)) {\n      warn((\"Fall back to datetime localization of root: key '\" + key + \"'.\"));\n    }\n    /* istanbul ignore if */\n    if (!this._root) { throw Error('unexpected error') }\n    return this._root.$i18n.d(value, key, locale)\n  } else {\n    return ret || ''\n  }\n};\n\nVueI18n.prototype.d = function d (value) {\n    var args = [], len = arguments.length - 1;\n    while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];\n\n  var locale = this.locale;\n  var key = null;\n\n  if (args.length === 1) {\n    if (isString(args[0])) {\n      key = args[0];\n    } else if (isObject(args[0])) {\n      if (args[0].locale) {\n        locale = args[0].locale;\n      }\n      if (args[0].key) {\n        key = args[0].key;\n      }\n    }\n  } else if (args.length === 2) {\n    if (isString(args[0])) {\n      key = args[0];\n    }\n    if (isString(args[1])) {\n      locale = args[1];\n    }\n  }\n\n  return this._d(value, locale, key)\n};\n\nVueI18n.prototype.getNumberFormat = function getNumberFormat (locale) {\n  return looseClone(this._vm.numberFormats[locale] || {})\n};\n\nVueI18n.prototype.setNumberFormat = function setNumberFormat (locale, format) {\n  this._vm.$set(this._vm.numberFormats, locale, format);\n  this._clearNumberFormat(locale, format);\n};\n\nVueI18n.prototype.mergeNumberFormat = function mergeNumberFormat (locale, format) {\n  this._vm.$set(this._vm.numberFormats, locale, merge(this._vm.numberFormats[locale] || {}, format));\n  this._clearNumberFormat(locale, format);\n};\n\nVueI18n.prototype._clearNumberFormat = function _clearNumberFormat (locale, format) {\n  // eslint-disable-next-line no-autofix/prefer-const\n  for (var key in format) {\n    var id = locale + \"__\" + key;\n\n    if (!this._numberFormatters.hasOwnProperty(id)) {\n      continue\n    }\n\n    delete this._numberFormatters[id];\n  }\n};\n\nVueI18n.prototype._getNumberFormatter = function _getNumberFormatter (\n  value,\n  locale,\n  fallback,\n  numberFormats,\n  key,\n  options\n) {\n  var _locale = locale;\n  var formats = numberFormats[_locale];\n\n  var chain = this._getLocaleChain(locale, fallback);\n  for (var i = 0; i < chain.length; i++) {\n    var current = _locale;\n    var step = chain[i];\n    formats = numberFormats[step];\n    _locale = step;\n    // fallback locale\n    if (isNull(formats) || isNull(formats[key])) {\n      if (step !== locale && process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key) && !this._isSilentFallbackWarn(key)) {\n        warn((\"Fall back to '\" + step + \"' number formats from '\" + current + \"' number formats.\"));\n      }\n    } else {\n      break\n    }\n  }\n\n  if (isNull(formats) || isNull(formats[key])) {\n    return null\n  } else {\n    var format = formats[key];\n\n    var formatter;\n    if (options) {\n      // If options specified - create one time number formatter\n      formatter = new Intl.NumberFormat(_locale, Object.assign({}, format, options));\n    } else {\n      var id = _locale + \"__\" + key;\n      formatter = this._numberFormatters[id];\n      if (!formatter) {\n        formatter = this._numberFormatters[id] = new Intl.NumberFormat(_locale, format);\n      }\n    }\n    return formatter\n  }\n};\n\nVueI18n.prototype._n = function _n (value, locale, key, options) {\n  /* istanbul ignore if */\n  if (!VueI18n.availabilities.numberFormat) {\n    if (process.env.NODE_ENV !== 'production') {\n      warn('Cannot format a Number value due to not supported Intl.NumberFormat.');\n    }\n    return ''\n  }\n\n  if (!key) {\n    var nf = !options ? new Intl.NumberFormat(locale) : new Intl.NumberFormat(locale, options);\n    return nf.format(value)\n  }\n\n  var formatter = this._getNumberFormatter(value, locale, this.fallbackLocale, this._getNumberFormats(), key, options);\n  var ret = formatter && formatter.format(value);\n  if (this._isFallbackRoot(ret)) {\n    if (process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key) && !this._isSilentFallbackWarn(key)) {\n      warn((\"Fall back to number localization of root: key '\" + key + \"'.\"));\n    }\n    /* istanbul ignore if */\n    if (!this._root) { throw Error('unexpected error') }\n    return this._root.$i18n.n(value, Object.assign({}, { key: key, locale: locale }, options))\n  } else {\n    return ret || ''\n  }\n};\n\nVueI18n.prototype.n = function n (value) {\n    var args = [], len = arguments.length - 1;\n    while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];\n\n  var locale = this.locale;\n  var key = null;\n  var options = null;\n\n  if (args.length === 1) {\n    if (isString(args[0])) {\n      key = args[0];\n    } else if (isObject(args[0])) {\n      if (args[0].locale) {\n        locale = args[0].locale;\n      }\n      if (args[0].key) {\n        key = args[0].key;\n      }\n\n      // Filter out number format options only\n      options = Object.keys(args[0]).reduce(function (acc, key) {\n          var obj;\n\n        if (includes(numberFormatKeys, key)) {\n          return Object.assign({}, acc, ( obj = {}, obj[key] = args[0][key], obj ))\n        }\n        return acc\n      }, null);\n    }\n  } else if (args.length === 2) {\n    if (isString(args[0])) {\n      key = args[0];\n    }\n    if (isString(args[1])) {\n      locale = args[1];\n    }\n  }\n\n  return this._n(value, locale, key, options)\n};\n\nVueI18n.prototype._ntp = function _ntp (value, locale, key, options) {\n  /* istanbul ignore if */\n  if (!VueI18n.availabilities.numberFormat) {\n    if (process.env.NODE_ENV !== 'production') {\n      warn('Cannot format to parts a Number value due to not supported Intl.NumberFormat.');\n    }\n    return []\n  }\n\n  if (!key) {\n    var nf = !options ? new Intl.NumberFormat(locale) : new Intl.NumberFormat(locale, options);\n    return nf.formatToParts(value)\n  }\n\n  var formatter = this._getNumberFormatter(value, locale, this.fallbackLocale, this._getNumberFormats(), key, options);\n  var ret = formatter && formatter.formatToParts(value);\n  if (this._isFallbackRoot(ret)) {\n    if (process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key)) {\n      warn((\"Fall back to format number to parts of root: key '\" + key + \"' .\"));\n    }\n    /* istanbul ignore if */\n    if (!this._root) { throw Error('unexpected error') }\n    return this._root.$i18n._ntp(value, locale, key, options)\n  } else {\n    return ret || []\n  }\n};\n\nObject.defineProperties( VueI18n.prototype, prototypeAccessors );\n\nvar availabilities;\n// $FlowFixMe\nObject.defineProperty(VueI18n, 'availabilities', {\n  get: function get () {\n    if (!availabilities) {\n      var intlDefined = typeof Intl !== 'undefined';\n      availabilities = {\n        dateTimeFormat: intlDefined && typeof Intl.DateTimeFormat !== 'undefined',\n        numberFormat: intlDefined && typeof Intl.NumberFormat !== 'undefined'\n      };\n    }\n\n    return availabilities\n  }\n});\n\nVueI18n.install = install;\nVueI18n.version = '8.26.7';\n\nexport default VueI18n;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n    getSymbols = require('./_getSymbols'),\n    keys = require('./keys');\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n  return baseGetAllKeys(object, keys, getSymbols);\n}\n\nmodule.exports = getAllKeys;\n","import Vue from 'vue';\nimport { consoleError } from '../../util/console';\nimport { isCssColor } from '../../util/colorUtils';\nexport default Vue.extend({\n  name: 'colorable',\n  props: {\n    color: String\n  },\n  methods: {\n    setBackgroundColor(color, data = {}) {\n      if (typeof data.style === 'string') {\n        // istanbul ignore next\n        consoleError('style must be an object', this); // istanbul ignore next\n\n        return data;\n      }\n\n      if (typeof data.class === 'string') {\n        // istanbul ignore next\n        consoleError('class must be an object', this); // istanbul ignore next\n\n        return data;\n      }\n\n      if (isCssColor(color)) {\n        data.style = { ...data.style,\n          'background-color': `${color}`,\n          'border-color': `${color}`\n        };\n      } else if (color) {\n        data.class = { ...data.class,\n          [color]: true\n        };\n      }\n\n      return data;\n    },\n\n    setTextColor(color, data = {}) {\n      if (typeof data.style === 'string') {\n        // istanbul ignore next\n        consoleError('style must be an object', this); // istanbul ignore next\n\n        return data;\n      }\n\n      if (typeof data.class === 'string') {\n        // istanbul ignore next\n        consoleError('class must be an object', this); // istanbul ignore next\n\n        return data;\n      }\n\n      if (isCssColor(color)) {\n        data.style = { ...data.style,\n          color: `${color}`,\n          'caret-color': `${color}`\n        };\n      } else if (color) {\n        const [colorName, colorModifier] = color.toString().trim().split(' ', 2);\n        data.class = { ...data.class,\n          [colorName + '--text']: true\n        };\n\n        if (colorModifier) {\n          data.class['text--' + colorModifier] = true;\n        }\n      }\n\n      return data;\n    }\n\n  }\n});\n//# sourceMappingURL=index.js.map","const Utils = require('./utils')\nconst ECLevel = require('./error-correction-level')\nconst BitBuffer = require('./bit-buffer')\nconst BitMatrix = require('./bit-matrix')\nconst AlignmentPattern = require('./alignment-pattern')\nconst FinderPattern = require('./finder-pattern')\nconst MaskPattern = require('./mask-pattern')\nconst ECCode = require('./error-correction-code')\nconst ReedSolomonEncoder = require('./reed-solomon-encoder')\nconst Version = require('./version')\nconst FormatInfo = require('./format-info')\nconst Mode = require('./mode')\nconst Segments = require('./segments')\n\n/**\n * QRCode for JavaScript\n *\n * modified by Ryan Day for nodejs support\n * Copyright (c) 2011 Ryan Day\n *\n * Licensed under the MIT license:\n *   http://www.opensource.org/licenses/mit-license.php\n *\n//---------------------------------------------------------------------\n// QRCode for JavaScript\n//\n// Copyright (c) 2009 Kazuhiko Arase\n//\n// URL: http://www.d-project.com/\n//\n// Licensed under the MIT license:\n//   http://www.opensource.org/licenses/mit-license.php\n//\n// The word \"QR Code\" is registered trademark of\n// DENSO WAVE INCORPORATED\n//   http://www.denso-wave.com/qrcode/faqpatent-e.html\n//\n//---------------------------------------------------------------------\n*/\n\n/**\n * Add finder patterns bits to matrix\n *\n * @param  {BitMatrix} matrix  Modules matrix\n * @param  {Number}    version QR Code version\n */\nfunction setupFinderPattern (matrix, version) {\n  const size = matrix.size\n  const pos = FinderPattern.getPositions(version)\n\n  for (let i = 0; i < pos.length; i++) {\n    const row = pos[i][0]\n    const col = pos[i][1]\n\n    for (let r = -1; r <= 7; r++) {\n      if (row + r <= -1 || size <= row + r) continue\n\n      for (let c = -1; c <= 7; c++) {\n        if (col + c <= -1 || size <= col + c) continue\n\n        if ((r >= 0 && r <= 6 && (c === 0 || c === 6)) ||\n          (c >= 0 && c <= 6 && (r === 0 || r === 6)) ||\n          (r >= 2 && r <= 4 && c >= 2 && c <= 4)) {\n          matrix.set(row + r, col + c, true, true)\n        } else {\n          matrix.set(row + r, col + c, false, true)\n        }\n      }\n    }\n  }\n}\n\n/**\n * Add timing pattern bits to matrix\n *\n * Note: this function must be called before {@link setupAlignmentPattern}\n *\n * @param  {BitMatrix} matrix Modules matrix\n */\nfunction setupTimingPattern (matrix) {\n  const size = matrix.size\n\n  for (let r = 8; r < size - 8; r++) {\n    const value = r % 2 === 0\n    matrix.set(r, 6, value, true)\n    matrix.set(6, r, value, true)\n  }\n}\n\n/**\n * Add alignment patterns bits to matrix\n *\n * Note: this function must be called after {@link setupTimingPattern}\n *\n * @param  {BitMatrix} matrix  Modules matrix\n * @param  {Number}    version QR Code version\n */\nfunction setupAlignmentPattern (matrix, version) {\n  const pos = AlignmentPattern.getPositions(version)\n\n  for (let i = 0; i < pos.length; i++) {\n    const row = pos[i][0]\n    const col = pos[i][1]\n\n    for (let r = -2; r <= 2; r++) {\n      for (let c = -2; c <= 2; c++) {\n        if (r === -2 || r === 2 || c === -2 || c === 2 ||\n          (r === 0 && c === 0)) {\n          matrix.set(row + r, col + c, true, true)\n        } else {\n          matrix.set(row + r, col + c, false, true)\n        }\n      }\n    }\n  }\n}\n\n/**\n * Add version info bits to matrix\n *\n * @param  {BitMatrix} matrix  Modules matrix\n * @param  {Number}    version QR Code version\n */\nfunction setupVersionInfo (matrix, version) {\n  const size = matrix.size\n  const bits = Version.getEncodedBits(version)\n  let row, col, mod\n\n  for (let i = 0; i < 18; i++) {\n    row = Math.floor(i / 3)\n    col = i % 3 + size - 8 - 3\n    mod = ((bits >> i) & 1) === 1\n\n    matrix.set(row, col, mod, true)\n    matrix.set(col, row, mod, true)\n  }\n}\n\n/**\n * Add format info bits to matrix\n *\n * @param  {BitMatrix} matrix               Modules matrix\n * @param  {ErrorCorrectionLevel}    errorCorrectionLevel Error correction level\n * @param  {Number}    maskPattern          Mask pattern reference value\n */\nfunction setupFormatInfo (matrix, errorCorrectionLevel, maskPattern) {\n  const size = matrix.size\n  const bits = FormatInfo.getEncodedBits(errorCorrectionLevel, maskPattern)\n  let i, mod\n\n  for (i = 0; i < 15; i++) {\n    mod = ((bits >> i) & 1) === 1\n\n    // vertical\n    if (i < 6) {\n      matrix.set(i, 8, mod, true)\n    } else if (i < 8) {\n      matrix.set(i + 1, 8, mod, true)\n    } else {\n      matrix.set(size - 15 + i, 8, mod, true)\n    }\n\n    // horizontal\n    if (i < 8) {\n      matrix.set(8, size - i - 1, mod, true)\n    } else if (i < 9) {\n      matrix.set(8, 15 - i - 1 + 1, mod, true)\n    } else {\n      matrix.set(8, 15 - i - 1, mod, true)\n    }\n  }\n\n  // fixed module\n  matrix.set(size - 8, 8, 1, true)\n}\n\n/**\n * Add encoded data bits to matrix\n *\n * @param  {BitMatrix}  matrix Modules matrix\n * @param  {Uint8Array} data   Data codewords\n */\nfunction setupData (matrix, data) {\n  const size = matrix.size\n  let inc = -1\n  let row = size - 1\n  let bitIndex = 7\n  let byteIndex = 0\n\n  for (let col = size - 1; col > 0; col -= 2) {\n    if (col === 6) col--\n\n    while (true) {\n      for (let c = 0; c < 2; c++) {\n        if (!matrix.isReserved(row, col - c)) {\n          let dark = false\n\n          if (byteIndex < data.length) {\n            dark = (((data[byteIndex] >>> bitIndex) & 1) === 1)\n          }\n\n          matrix.set(row, col - c, dark)\n          bitIndex--\n\n          if (bitIndex === -1) {\n            byteIndex++\n            bitIndex = 7\n          }\n        }\n      }\n\n      row += inc\n\n      if (row < 0 || size <= row) {\n        row -= inc\n        inc = -inc\n        break\n      }\n    }\n  }\n}\n\n/**\n * Create encoded codewords from data input\n *\n * @param  {Number}   version              QR Code version\n * @param  {ErrorCorrectionLevel}   errorCorrectionLevel Error correction level\n * @param  {ByteData} data                 Data input\n * @return {Uint8Array}                    Buffer containing encoded codewords\n */\nfunction createData (version, errorCorrectionLevel, segments) {\n  // Prepare data buffer\n  const buffer = new BitBuffer()\n\n  segments.forEach(function (data) {\n    // prefix data with mode indicator (4 bits)\n    buffer.put(data.mode.bit, 4)\n\n    // Prefix data with character count indicator.\n    // The character count indicator is a string of bits that represents the\n    // number of characters that are being encoded.\n    // The character count indicator must be placed after the mode indicator\n    // and must be a certain number of bits long, depending on the QR version\n    // and data mode\n    // @see {@link Mode.getCharCountIndicator}.\n    buffer.put(data.getLength(), Mode.getCharCountIndicator(data.mode, version))\n\n    // add binary data sequence to buffer\n    data.write(buffer)\n  })\n\n  // Calculate required number of bits\n  const totalCodewords = Utils.getSymbolTotalCodewords(version)\n  const ecTotalCodewords = ECCode.getTotalCodewordsCount(version, errorCorrectionLevel)\n  const dataTotalCodewordsBits = (totalCodewords - ecTotalCodewords) * 8\n\n  // Add a terminator.\n  // If the bit string is shorter than the total number of required bits,\n  // a terminator of up to four 0s must be added to the right side of the string.\n  // If the bit string is more than four bits shorter than the required number of bits,\n  // add four 0s to the end.\n  if (buffer.getLengthInBits() + 4 <= dataTotalCodewordsBits) {\n    buffer.put(0, 4)\n  }\n\n  // If the bit string is fewer than four bits shorter, add only the number of 0s that\n  // are needed to reach the required number of bits.\n\n  // After adding the terminator, if the number of bits in the string is not a multiple of 8,\n  // pad the string on the right with 0s to make the string's length a multiple of 8.\n  while (buffer.getLengthInBits() % 8 !== 0) {\n    buffer.putBit(0)\n  }\n\n  // Add pad bytes if the string is still shorter than the total number of required bits.\n  // Extend the buffer to fill the data capacity of the symbol corresponding to\n  // the Version and Error Correction Level by adding the Pad Codewords 11101100 (0xEC)\n  // and 00010001 (0x11) alternately.\n  const remainingByte = (dataTotalCodewordsBits - buffer.getLengthInBits()) / 8\n  for (let i = 0; i < remainingByte; i++) {\n    buffer.put(i % 2 ? 0x11 : 0xEC, 8)\n  }\n\n  return createCodewords(buffer, version, errorCorrectionLevel)\n}\n\n/**\n * Encode input data with Reed-Solomon and return codewords with\n * relative error correction bits\n *\n * @param  {BitBuffer} bitBuffer            Data to encode\n * @param  {Number}    version              QR Code version\n * @param  {ErrorCorrectionLevel} errorCorrectionLevel Error correction level\n * @return {Uint8Array}                     Buffer containing encoded codewords\n */\nfunction createCodewords (bitBuffer, version, errorCorrectionLevel) {\n  // Total codewords for this QR code version (Data + Error correction)\n  const totalCodewords = Utils.getSymbolTotalCodewords(version)\n\n  // Total number of error correction codewords\n  const ecTotalCodewords = ECCode.getTotalCodewordsCount(version, errorCorrectionLevel)\n\n  // Total number of data codewords\n  const dataTotalCodewords = totalCodewords - ecTotalCodewords\n\n  // Total number of blocks\n  const ecTotalBlocks = ECCode.getBlocksCount(version, errorCorrectionLevel)\n\n  // Calculate how many blocks each group should contain\n  const blocksInGroup2 = totalCodewords % ecTotalBlocks\n  const blocksInGroup1 = ecTotalBlocks - blocksInGroup2\n\n  const totalCodewordsInGroup1 = Math.floor(totalCodewords / ecTotalBlocks)\n\n  const dataCodewordsInGroup1 = Math.floor(dataTotalCodewords / ecTotalBlocks)\n  const dataCodewordsInGroup2 = dataCodewordsInGroup1 + 1\n\n  // Number of EC codewords is the same for both groups\n  const ecCount = totalCodewordsInGroup1 - dataCodewordsInGroup1\n\n  // Initialize a Reed-Solomon encoder with a generator polynomial of degree ecCount\n  const rs = new ReedSolomonEncoder(ecCount)\n\n  let offset = 0\n  const dcData = new Array(ecTotalBlocks)\n  const ecData = new Array(ecTotalBlocks)\n  let maxDataSize = 0\n  const buffer = new Uint8Array(bitBuffer.buffer)\n\n  // Divide the buffer into the required number of blocks\n  for (let b = 0; b < ecTotalBlocks; b++) {\n    const dataSize = b < blocksInGroup1 ? dataCodewordsInGroup1 : dataCodewordsInGroup2\n\n    // extract a block of data from buffer\n    dcData[b] = buffer.slice(offset, offset + dataSize)\n\n    // Calculate EC codewords for this data block\n    ecData[b] = rs.encode(dcData[b])\n\n    offset += dataSize\n    maxDataSize = Math.max(maxDataSize, dataSize)\n  }\n\n  // Create final data\n  // Interleave the data and error correction codewords from each block\n  const data = new Uint8Array(totalCodewords)\n  let index = 0\n  let i, r\n\n  // Add data codewords\n  for (i = 0; i < maxDataSize; i++) {\n    for (r = 0; r < ecTotalBlocks; r++) {\n      if (i < dcData[r].length) {\n        data[index++] = dcData[r][i]\n      }\n    }\n  }\n\n  // Apped EC codewords\n  for (i = 0; i < ecCount; i++) {\n    for (r = 0; r < ecTotalBlocks; r++) {\n      data[index++] = ecData[r][i]\n    }\n  }\n\n  return data\n}\n\n/**\n * Build QR Code symbol\n *\n * @param  {String} data                 Input string\n * @param  {Number} version              QR Code version\n * @param  {ErrorCorretionLevel} errorCorrectionLevel Error level\n * @param  {MaskPattern} maskPattern     Mask pattern\n * @return {Object}                      Object containing symbol data\n */\nfunction createSymbol (data, version, errorCorrectionLevel, maskPattern) {\n  let segments\n\n  if (Array.isArray(data)) {\n    segments = Segments.fromArray(data)\n  } else if (typeof data === 'string') {\n    let estimatedVersion = version\n\n    if (!estimatedVersion) {\n      const rawSegments = Segments.rawSplit(data)\n\n      // Estimate best version that can contain raw splitted segments\n      estimatedVersion = Version.getBestVersionForData(rawSegments, errorCorrectionLevel)\n    }\n\n    // Build optimized segments\n    // If estimated version is undefined, try with the highest version\n    segments = Segments.fromString(data, estimatedVersion || 40)\n  } else {\n    throw new Error('Invalid data')\n  }\n\n  // Get the min version that can contain data\n  const bestVersion = Version.getBestVersionForData(segments, errorCorrectionLevel)\n\n  // If no version is found, data cannot be stored\n  if (!bestVersion) {\n    throw new Error('The amount of data is too big to be stored in a QR Code')\n  }\n\n  // If not specified, use min version as default\n  if (!version) {\n    version = bestVersion\n\n  // Check if the specified version can contain the data\n  } else if (version < bestVersion) {\n    throw new Error('\\n' +\n      'The chosen QR Code version cannot contain this amount of data.\\n' +\n      'Minimum version required to store current data is: ' + bestVersion + '.\\n'\n    )\n  }\n\n  const dataBits = createData(version, errorCorrectionLevel, segments)\n\n  // Allocate matrix buffer\n  const moduleCount = Utils.getSymbolSize(version)\n  const modules = new BitMatrix(moduleCount)\n\n  // Add function modules\n  setupFinderPattern(modules, version)\n  setupTimingPattern(modules)\n  setupAlignmentPattern(modules, version)\n\n  // Add temporary dummy bits for format info just to set them as reserved.\n  // This is needed to prevent these bits from being masked by {@link MaskPattern.applyMask}\n  // since the masking operation must be performed only on the encoding region.\n  // These blocks will be replaced with correct values later in code.\n  setupFormatInfo(modules, errorCorrectionLevel, 0)\n\n  if (version >= 7) {\n    setupVersionInfo(modules, version)\n  }\n\n  // Add data codewords\n  setupData(modules, dataBits)\n\n  if (isNaN(maskPattern)) {\n    // Find best mask pattern\n    maskPattern = MaskPattern.getBestMask(modules,\n      setupFormatInfo.bind(null, modules, errorCorrectionLevel))\n  }\n\n  // Apply mask pattern\n  MaskPattern.applyMask(maskPattern, modules)\n\n  // Replace format info bits with correct values\n  setupFormatInfo(modules, errorCorrectionLevel, maskPattern)\n\n  return {\n    modules: modules,\n    version: version,\n    errorCorrectionLevel: errorCorrectionLevel,\n    maskPattern: maskPattern,\n    segments: segments\n  }\n}\n\n/**\n * QR Code\n *\n * @param {String | Array} data                 Input data\n * @param {Object} options                      Optional configurations\n * @param {Number} options.version              QR Code version\n * @param {String} options.errorCorrectionLevel Error correction level\n * @param {Function} options.toSJISFunc         Helper func to convert utf8 to sjis\n */\nexports.create = function create (data, options) {\n  if (typeof data === 'undefined' || data === '') {\n    throw new Error('No input text')\n  }\n\n  let errorCorrectionLevel = ECLevel.M\n  let version\n  let mask\n\n  if (typeof options !== 'undefined') {\n    // Use higher error correction level as default\n    errorCorrectionLevel = ECLevel.from(options.errorCorrectionLevel, ECLevel.M)\n    version = Version.from(options.version)\n    mask = MaskPattern.from(options.maskPattern)\n\n    if (options.toSJISFunc) {\n      Utils.setToSJISFunction(options.toSJISFunc)\n    }\n  }\n\n  return createSymbol(data, version, errorCorrectionLevel, mask)\n}\n","// Extensions\nimport VWindow from '../VWindow/VWindow'; // Types & Components\n\nimport { BaseItemGroup } from './../VItemGroup/VItemGroup';\n/* @vue/component */\n\nexport default VWindow.extend({\n  name: 'v-tabs-items',\n  props: {\n    mandatory: {\n      type: Boolean,\n      default: false\n    }\n  },\n  computed: {\n    classes() {\n      return { ...VWindow.options.computed.classes.call(this),\n        'v-tabs-items': true\n      };\n    },\n\n    isDark() {\n      return this.rootIsDark;\n    }\n\n  },\n  methods: {\n    getValue(item, i) {\n      return item.id || BaseItemGroup.options.methods.getValue.call(this, item, i);\n    }\n\n  }\n});\n//# sourceMappingURL=VTabsItems.js.map","// 7.2.8 IsRegExp(argument)\nvar isObject = require('./_is-object');\nvar cof = require('./_cof');\nvar MATCH = require('./_wks')('match');\nmodule.exports = function (it) {\n  var isRegExp;\n  return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : cof(it) == 'RegExp');\n};\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n    rsComboMarksRange = '\\\\u0300-\\\\u036f',\n    reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n    rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n    rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n    rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsZWJ = '\\\\u200d';\n\n/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\nvar reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange  + rsComboRange + rsVarRange + ']');\n\n/**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\nfunction hasUnicode(string) {\n  return reHasUnicode.test(string);\n}\n\nmodule.exports = hasUnicode;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n  var index = -1,\n      result = Array(set.size);\n\n  set.forEach(function(value) {\n    result[++index] = value;\n  });\n  return result;\n}\n\nmodule.exports = setToArray;\n","require('./_wks-define')('asyncIterator');\n","var $iterators = require('./es6.array.iterator');\nvar getKeys = require('./_object-keys');\nvar redefine = require('./_redefine');\nvar global = require('./_global');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar wks = require('./_wks');\nvar ITERATOR = wks('iterator');\nvar TO_STRING_TAG = wks('toStringTag');\nvar ArrayValues = Iterators.Array;\n\nvar DOMIterables = {\n  CSSRuleList: true, // TODO: Not spec compliant, should be false.\n  CSSStyleDeclaration: false,\n  CSSValueList: false,\n  ClientRectList: false,\n  DOMRectList: false,\n  DOMStringList: false,\n  DOMTokenList: true,\n  DataTransferItemList: false,\n  FileList: false,\n  HTMLAllCollection: false,\n  HTMLCollection: false,\n  HTMLFormElement: false,\n  HTMLSelectElement: false,\n  MediaList: true, // TODO: Not spec compliant, should be false.\n  MimeTypeArray: false,\n  NamedNodeMap: false,\n  NodeList: true,\n  PaintRequestList: false,\n  Plugin: false,\n  PluginArray: false,\n  SVGLengthList: false,\n  SVGNumberList: false,\n  SVGPathSegList: false,\n  SVGPointList: false,\n  SVGStringList: false,\n  SVGTransformList: false,\n  SourceBufferList: false,\n  StyleSheetList: true, // TODO: Not spec compliant, should be false.\n  TextTrackCueList: false,\n  TextTrackList: false,\n  TouchList: false\n};\n\nfor (var collections = getKeys(DOMIterables), i = 0; i < collections.length; i++) {\n  var NAME = collections[i];\n  var explicit = DOMIterables[NAME];\n  var Collection = global[NAME];\n  var proto = Collection && Collection.prototype;\n  var key;\n  if (proto) {\n    if (!proto[ITERATOR]) hide(proto, ITERATOR, ArrayValues);\n    if (!proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n    Iterators[NAME] = ArrayValues;\n    if (explicit) for (key in $iterators) if (!proto[key]) redefine(proto, key, $iterators[key], true);\n  }\n}\n","// Styles\nimport \"../../../src/components/VCheckbox/VCheckbox.sass\";\nimport \"../../../src/styles/components/_selection-controls.sass\"; // Components\n\nimport VIcon from '../VIcon';\nimport VInput from '../VInput'; // Mixins\n\nimport Selectable from '../../mixins/selectable';\n/* @vue/component */\n\nexport default Selectable.extend({\n  name: 'v-checkbox',\n  props: {\n    indeterminate: Boolean,\n    indeterminateIcon: {\n      type: String,\n      default: '$checkboxIndeterminate'\n    },\n    offIcon: {\n      type: String,\n      default: '$checkboxOff'\n    },\n    onIcon: {\n      type: String,\n      default: '$checkboxOn'\n    }\n  },\n\n  data() {\n    return {\n      inputIndeterminate: this.indeterminate\n    };\n  },\n\n  computed: {\n    classes() {\n      return { ...VInput.options.computed.classes.call(this),\n        'v-input--selection-controls': true,\n        'v-input--checkbox': true,\n        'v-input--indeterminate': this.inputIndeterminate\n      };\n    },\n\n    computedIcon() {\n      if (this.inputIndeterminate) {\n        return this.indeterminateIcon;\n      } else if (this.isActive) {\n        return this.onIcon;\n      } else {\n        return this.offIcon;\n      }\n    },\n\n    // Do not return undefined if disabled,\n    // according to spec, should still show\n    // a color when disabled and active\n    validationState() {\n      if (this.isDisabled && !this.inputIndeterminate) return undefined;\n      if (this.hasError && this.shouldValidate) return 'error';\n      if (this.hasSuccess) return 'success';\n      if (this.hasColor !== null) return this.computedColor;\n      return undefined;\n    }\n\n  },\n  watch: {\n    indeterminate(val) {\n      // https://github.com/vuetifyjs/vuetify/issues/8270\n      this.$nextTick(() => this.inputIndeterminate = val);\n    },\n\n    inputIndeterminate(val) {\n      this.$emit('update:indeterminate', val);\n    },\n\n    isActive() {\n      if (!this.indeterminate) return;\n      this.inputIndeterminate = false;\n    }\n\n  },\n  methods: {\n    genCheckbox() {\n      const {\n        title,\n        ...checkboxAttrs\n      } = this.attrs$;\n      return this.$createElement('div', {\n        staticClass: 'v-input--selection-controls__input'\n      }, [this.$createElement(VIcon, this.setTextColor(this.validationState, {\n        props: {\n          dense: this.dense,\n          dark: this.dark,\n          light: this.light\n        }\n      }), this.computedIcon), this.genInput('checkbox', { ...checkboxAttrs,\n        'aria-checked': this.inputIndeterminate ? 'mixed' : this.isActive.toString()\n      }), this.genRipple(this.setTextColor(this.rippleState))]);\n    },\n\n    genDefaultSlot() {\n      return [this.genCheckbox(), this.genLabel()];\n    }\n\n  }\n});\n//# sourceMappingURL=VCheckbox.js.map","import \"../../../src/components/VResponsive/VResponsive.sass\"; // Mixins\n\nimport Measurable from '../../mixins/measurable'; // Utils\n\nimport mixins from '../../util/mixins';\n/* @vue/component */\n\nexport default mixins(Measurable).extend({\n  name: 'v-responsive',\n  props: {\n    aspectRatio: [String, Number],\n    contentClass: String\n  },\n  computed: {\n    computedAspectRatio() {\n      return Number(this.aspectRatio);\n    },\n\n    aspectStyle() {\n      return this.computedAspectRatio ? {\n        paddingBottom: 1 / this.computedAspectRatio * 100 + '%'\n      } : undefined;\n    },\n\n    __cachedSizer() {\n      if (!this.aspectStyle) return [];\n      return this.$createElement('div', {\n        style: this.aspectStyle,\n        staticClass: 'v-responsive__sizer'\n      });\n    }\n\n  },\n  methods: {\n    genContent() {\n      return this.$createElement('div', {\n        staticClass: 'v-responsive__content',\n        class: this.contentClass\n      }, this.$slots.default);\n    }\n\n  },\n\n  render(h) {\n    return h('div', {\n      staticClass: 'v-responsive',\n      style: this.measurableStyles,\n      on: this.$listeners\n    }, [this.__cachedSizer, this.genContent()]);\n  }\n\n});\n//# sourceMappingURL=VResponsive.js.map","import VResponsive from './VResponsive';\nexport { VResponsive };\nexport default VResponsive;\n//# sourceMappingURL=index.js.map","// Styles\nimport \"../../../src/components/VImg/VImg.sass\"; // Directives\n\nimport intersect from '../../directives/intersect'; // Components\n\nimport VResponsive from '../VResponsive'; // Mixins\n\nimport Themeable from '../../mixins/themeable'; // Utils\n\nimport mixins from '../../util/mixins';\nimport mergeData from '../../util/mergeData';\nimport { consoleWarn } from '../../util/console';\nconst hasIntersect = typeof window !== 'undefined' && 'IntersectionObserver' in window;\n/* @vue/component */\n\nexport default mixins(VResponsive, Themeable).extend({\n  name: 'v-img',\n  directives: {\n    intersect\n  },\n  props: {\n    alt: String,\n    contain: Boolean,\n    eager: Boolean,\n    gradient: String,\n    lazySrc: String,\n    options: {\n      type: Object,\n      // For more information on types, navigate to:\n      // https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API\n      default: () => ({\n        root: undefined,\n        rootMargin: undefined,\n        threshold: undefined\n      })\n    },\n    position: {\n      type: String,\n      default: 'center center'\n    },\n    sizes: String,\n    src: {\n      type: [String, Object],\n      default: ''\n    },\n    srcset: String,\n    transition: {\n      type: [Boolean, String],\n      default: 'fade-transition'\n    }\n  },\n\n  data() {\n    return {\n      currentSrc: '',\n      image: null,\n      isLoading: true,\n      calculatedAspectRatio: undefined,\n      naturalWidth: undefined,\n      hasError: false\n    };\n  },\n\n  computed: {\n    computedAspectRatio() {\n      return Number(this.normalisedSrc.aspect || this.calculatedAspectRatio);\n    },\n\n    normalisedSrc() {\n      return this.src && typeof this.src === 'object' ? {\n        src: this.src.src,\n        srcset: this.srcset || this.src.srcset,\n        lazySrc: this.lazySrc || this.src.lazySrc,\n        aspect: Number(this.aspectRatio || this.src.aspect)\n      } : {\n        src: this.src,\n        srcset: this.srcset,\n        lazySrc: this.lazySrc,\n        aspect: Number(this.aspectRatio || 0)\n      };\n    },\n\n    __cachedImage() {\n      if (!(this.normalisedSrc.src || this.normalisedSrc.lazySrc || this.gradient)) return [];\n      const backgroundImage = [];\n      const src = this.isLoading ? this.normalisedSrc.lazySrc : this.currentSrc;\n      if (this.gradient) backgroundImage.push(`linear-gradient(${this.gradient})`);\n      if (src) backgroundImage.push(`url(\"${src}\")`);\n      const image = this.$createElement('div', {\n        staticClass: 'v-image__image',\n        class: {\n          'v-image__image--preload': this.isLoading,\n          'v-image__image--contain': this.contain,\n          'v-image__image--cover': !this.contain\n        },\n        style: {\n          backgroundImage: backgroundImage.join(', '),\n          backgroundPosition: this.position\n        },\n        key: +this.isLoading\n      });\n      /* istanbul ignore if */\n\n      if (!this.transition) return image;\n      return this.$createElement('transition', {\n        attrs: {\n          name: this.transition,\n          mode: 'in-out'\n        }\n      }, [image]);\n    }\n\n  },\n  watch: {\n    src() {\n      // Force re-init when src changes\n      if (!this.isLoading) this.init(undefined, undefined, true);else this.loadImage();\n    },\n\n    '$vuetify.breakpoint.width': 'getSrc'\n  },\n\n  mounted() {\n    this.init();\n  },\n\n  methods: {\n    init(entries, observer, isIntersecting) {\n      // If the current browser supports the intersection\n      // observer api, the image is not observable, and\n      // the eager prop isn't being used, do not load\n      if (hasIntersect && !isIntersecting && !this.eager) return;\n\n      if (this.normalisedSrc.lazySrc) {\n        const lazyImg = new Image();\n        lazyImg.src = this.normalisedSrc.lazySrc;\n        this.pollForSize(lazyImg, null);\n      }\n      /* istanbul ignore else */\n\n\n      if (this.normalisedSrc.src) this.loadImage();\n    },\n\n    onLoad() {\n      this.getSrc();\n      this.isLoading = false;\n      this.$emit('load', this.src);\n\n      if (this.image && (this.normalisedSrc.src.endsWith('.svg') || this.normalisedSrc.src.startsWith('data:image/svg+xml'))) {\n        if (this.image.naturalHeight && this.image.naturalWidth) {\n          this.naturalWidth = this.image.naturalWidth;\n          this.calculatedAspectRatio = this.image.naturalWidth / this.image.naturalHeight;\n        } else {\n          this.calculatedAspectRatio = 1;\n        }\n      }\n    },\n\n    onError() {\n      this.hasError = true;\n      this.$emit('error', this.src);\n    },\n\n    getSrc() {\n      /* istanbul ignore else */\n      if (this.image) this.currentSrc = this.image.currentSrc || this.image.src;\n    },\n\n    loadImage() {\n      const image = new Image();\n      this.image = image;\n\n      image.onload = () => {\n        /* istanbul ignore if */\n        if (image.decode) {\n          image.decode().catch(err => {\n            consoleWarn(`Failed to decode image, trying to render anyway\\n\\n` + `src: ${this.normalisedSrc.src}` + (err.message ? `\\nOriginal error: ${err.message}` : ''), this);\n          }).then(this.onLoad);\n        } else {\n          this.onLoad();\n        }\n      };\n\n      image.onerror = this.onError;\n      this.hasError = false;\n      this.sizes && (image.sizes = this.sizes);\n      this.normalisedSrc.srcset && (image.srcset = this.normalisedSrc.srcset);\n      image.src = this.normalisedSrc.src;\n      this.$emit('loadstart', this.normalisedSrc.src);\n      this.aspectRatio || this.pollForSize(image);\n      this.getSrc();\n    },\n\n    pollForSize(img, timeout = 100) {\n      const poll = () => {\n        const {\n          naturalHeight,\n          naturalWidth\n        } = img;\n\n        if (naturalHeight || naturalWidth) {\n          this.naturalWidth = naturalWidth;\n          this.calculatedAspectRatio = naturalWidth / naturalHeight;\n        } else if (!img.complete && this.isLoading && !this.hasError && timeout != null) {\n          setTimeout(poll, timeout);\n        }\n      };\n\n      poll();\n    },\n\n    genContent() {\n      const content = VResponsive.options.methods.genContent.call(this);\n\n      if (this.naturalWidth) {\n        this._b(content.data, 'div', {\n          style: {\n            width: `${this.naturalWidth}px`\n          }\n        });\n      }\n\n      return content;\n    },\n\n    __genPlaceholder() {\n      if (this.$slots.placeholder) {\n        const placeholder = this.isLoading ? [this.$createElement('div', {\n          staticClass: 'v-image__placeholder'\n        }, this.$slots.placeholder)] : [];\n        if (!this.transition) return placeholder[0];\n        return this.$createElement('transition', {\n          props: {\n            appear: true,\n            name: this.transition\n          }\n        }, placeholder);\n      }\n    }\n\n  },\n\n  render(h) {\n    const node = VResponsive.options.render.call(this, h);\n    const data = mergeData(node.data, {\n      staticClass: 'v-image',\n      attrs: {\n        'aria-label': this.alt,\n        role: this.alt ? 'img' : undefined\n      },\n      class: this.themeClasses,\n      // Only load intersect directive if it\n      // will work in the current browser.\n      directives: hasIntersect ? [{\n        name: 'intersect',\n        modifiers: {\n          once: true\n        },\n        value: {\n          handler: this.init,\n          options: this.options\n        }\n      }] : undefined\n    });\n    node.children = [this.__cachedSizer, this.__cachedImage, this.__genPlaceholder(), this.genContent()];\n    return h(node.tag, data, node.children);\n  }\n\n});\n//# sourceMappingURL=VImg.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.OPERATORS = exports.FILTERS = void 0;\nconst commons_1 = require(\"@feathersjs/commons\");\nconst errors_1 = require(\"@feathersjs/errors\");\nfunction parse(number) {\n    if (typeof number !== 'undefined') {\n        return Math.abs(parseInt(number, 10));\n    }\n    return undefined;\n}\n// Returns the pagination limit and will take into account the\n// default and max pagination settings\nfunction getLimit(limit, paginate) {\n    if (paginate && paginate.default) {\n        const lower = typeof limit === 'number' && !isNaN(limit) ? limit : paginate.default;\n        const upper = typeof paginate.max === 'number' ? paginate.max : Number.MAX_VALUE;\n        return Math.min(lower, upper);\n    }\n    return limit;\n}\n// Makes sure that $sort order is always converted to an actual number\nfunction convertSort(sort) {\n    if (typeof sort !== 'object' || Array.isArray(sort)) {\n        return sort;\n    }\n    return Object.keys(sort).reduce((result, key) => {\n        result[key] = typeof sort[key] === 'object'\n            ? sort[key] : parseInt(sort[key], 10);\n        return result;\n    }, {});\n}\nfunction cleanQuery(query, operators, filters) {\n    if (Array.isArray(query)) {\n        return query.map(value => cleanQuery(value, operators, filters));\n    }\n    else if (commons_1._.isObject(query) && query.constructor === {}.constructor) {\n        const result = {};\n        commons_1._.each(query, (value, key) => {\n            if (key[0] === '$') {\n                if (filters[key] !== undefined) {\n                    return;\n                }\n                if (!operators.includes(key)) {\n                    throw new errors_1.BadRequest(`Invalid query parameter ${key}`, query);\n                }\n            }\n            result[key] = cleanQuery(value, operators, filters);\n        });\n        Object.getOwnPropertySymbols(query).forEach(symbol => {\n            // @ts-ignore\n            result[symbol] = query[symbol];\n        });\n        return result;\n    }\n    return query;\n}\nfunction assignFilters(object, query, filters, options) {\n    if (Array.isArray(filters)) {\n        commons_1._.each(filters, (key) => {\n            if (query[key] !== undefined) {\n                object[key] = query[key];\n            }\n        });\n    }\n    else {\n        commons_1._.each(filters, (converter, key) => {\n            const converted = converter(query[key], options);\n            if (converted !== undefined) {\n                object[key] = converted;\n            }\n        });\n    }\n    return object;\n}\nexports.FILTERS = {\n    $sort: (value) => convertSort(value),\n    $limit: (value, options) => getLimit(parse(value), options.paginate),\n    $skip: (value) => parse(value),\n    $select: (value) => value\n};\nexports.OPERATORS = ['$in', '$nin', '$lt', '$lte', '$gt', '$gte', '$ne', '$or'];\n// Converts Feathers special query parameters and pagination settings\n// and returns them separately a `filters` and the rest of the query\n// as `query`\nfunction filterQuery(query, options = {}) {\n    const { filters: additionalFilters = {}, operators: additionalOperators = [] } = options;\n    const result = {};\n    result.filters = assignFilters({}, query, exports.FILTERS, options);\n    result.filters = assignFilters(result.filters, query, additionalFilters, options);\n    result.query = cleanQuery(query, exports.OPERATORS.concat(additionalOperators), result.filters);\n    return result;\n}\nexports.default = filterQuery;\nif (typeof module !== 'undefined') {\n    module.exports = Object.assign(filterQuery, module.exports);\n}\n//# sourceMappingURL=filter-query.js.map","import Vue from 'vue';\nexport default Vue.extend({\n  name: 'sizeable',\n  props: {\n    large: Boolean,\n    small: Boolean,\n    xLarge: Boolean,\n    xSmall: Boolean\n  },\n  computed: {\n    medium() {\n      return Boolean(!this.xSmall && !this.small && !this.large && !this.xLarge);\n    },\n\n    sizeableClasses() {\n      return {\n        'v-size--x-small': this.xSmall,\n        'v-size--small': this.small,\n        'v-size--default': this.medium,\n        'v-size--large': this.large,\n        'v-size--x-large': this.xLarge\n      };\n    }\n\n  }\n});\n//# sourceMappingURL=index.js.map","import VBtn from './VBtn';\nexport { VBtn };\nexport default VBtn;\n//# sourceMappingURL=index.js.map","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","/**\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","// Styles\nimport \"../../../src/components/VCard/VCard.sass\"; // Extensions\n\nimport VSheet from '../VSheet'; // Mixins\n\nimport Loadable from '../../mixins/loadable';\nimport Routable from '../../mixins/routable'; // Helpers\n\nimport mixins from '../../util/mixins';\n/* @vue/component */\n\nexport default mixins(Loadable, Routable, VSheet).extend({\n  name: 'v-card',\n  props: {\n    flat: Boolean,\n    hover: Boolean,\n    img: String,\n    link: Boolean,\n    loaderHeight: {\n      type: [Number, String],\n      default: 4\n    },\n    raised: Boolean\n  },\n  computed: {\n    classes() {\n      return {\n        'v-card': true,\n        ...Routable.options.computed.classes.call(this),\n        'v-card--flat': this.flat,\n        'v-card--hover': this.hover,\n        'v-card--link': this.isClickable,\n        'v-card--loading': this.loading,\n        'v-card--disabled': this.disabled,\n        'v-card--raised': this.raised,\n        ...VSheet.options.computed.classes.call(this)\n      };\n    },\n\n    styles() {\n      const style = { ...VSheet.options.computed.styles.call(this)\n      };\n\n      if (this.img) {\n        style.background = `url(\"${this.img}\") center center / cover no-repeat`;\n      }\n\n      return style;\n    }\n\n  },\n  methods: {\n    genProgress() {\n      const render = Loadable.options.methods.genProgress.call(this);\n      if (!render) return null;\n      return this.$createElement('div', {\n        staticClass: 'v-card__progress',\n        key: 'progress'\n      }, [render]);\n    }\n\n  },\n\n  render(h) {\n    const {\n      tag,\n      data\n    } = this.generateRouteLink();\n    data.style = this.styles;\n\n    if (this.isClickable) {\n      data.attrs = data.attrs || {};\n      data.attrs.tabindex = 0;\n    }\n\n    return h(tag, this.setBackgroundColor(this.color, data), [this.genProgress(), this.$slots.default]);\n  }\n\n});\n//# sourceMappingURL=VCard.js.map","'use strict';\nvar regexpExec = require('./_regexp-exec');\nrequire('./_export')({\n  target: 'RegExp',\n  proto: true,\n  forced: regexpExec !== /./.exec\n}, {\n  exec: regexpExec\n});\n","var getAllKeys = require('./_getAllKeys');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\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 * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n  var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n      objProps = getAllKeys(object),\n      objLength = objProps.length,\n      othProps = getAllKeys(other),\n      othLength = othProps.length;\n\n  if (objLength != othLength && !isPartial) {\n    return false;\n  }\n  var index = objLength;\n  while (index--) {\n    var key = objProps[index];\n    if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n      return false;\n    }\n  }\n  // Check that cyclic values are equal.\n  var objStacked = stack.get(object);\n  var othStacked = stack.get(other);\n  if (objStacked && othStacked) {\n    return objStacked == other && othStacked == object;\n  }\n  var result = true;\n  stack.set(object, other);\n  stack.set(other, object);\n\n  var skipCtor = isPartial;\n  while (++index < objLength) {\n    key = objProps[index];\n    var objValue = object[key],\n        othValue = other[key];\n\n    if (customizer) {\n      var compared = isPartial\n        ? customizer(othValue, objValue, key, other, object, stack)\n        : customizer(objValue, othValue, key, object, other, stack);\n    }\n    // Recursively compare objects (susceptible to call stack limits).\n    if (!(compared === undefined\n          ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n          : compared\n        )) {\n      result = false;\n      break;\n    }\n    skipCtor || (skipCtor = key == 'constructor');\n  }\n  if (result && !skipCtor) {\n    var objCtor = object.constructor,\n        othCtor = other.constructor;\n\n    // Non `Object` object instances with different constructors are not equal.\n    if (objCtor != othCtor &&\n        ('constructor' in object && 'constructor' in other) &&\n        !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n          typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n      result = false;\n    }\n  }\n  stack['delete'](object);\n  stack['delete'](other);\n  return result;\n}\n\nmodule.exports = equalObjects;\n","var arrayReduce = require('./_arrayReduce'),\n    deburr = require('./deburr'),\n    words = require('./words');\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\";\n\n/** Used to match apostrophes. */\nvar reApos = RegExp(rsApos, 'g');\n\n/**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\nfunction createCompounder(callback) {\n  return function(string) {\n    return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n  };\n}\n\nmodule.exports = createCompounder;\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","var SetCache = require('./_SetCache'),\n    arrayIncludes = require('./_arrayIncludes'),\n    arrayIncludesWith = require('./_arrayIncludesWith'),\n    arrayMap = require('./_arrayMap'),\n    baseUnary = require('./_baseUnary'),\n    cacheHas = require('./_cacheHas');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMin = Math.min;\n\n/**\n * The base implementation of methods like `_.intersection`, without support\n * for iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of shared values.\n */\nfunction baseIntersection(arrays, iteratee, comparator) {\n  var includes = comparator ? arrayIncludesWith : arrayIncludes,\n      length = arrays[0].length,\n      othLength = arrays.length,\n      othIndex = othLength,\n      caches = Array(othLength),\n      maxLength = Infinity,\n      result = [];\n\n  while (othIndex--) {\n    var array = arrays[othIndex];\n    if (othIndex && iteratee) {\n      array = arrayMap(array, baseUnary(iteratee));\n    }\n    maxLength = nativeMin(array.length, maxLength);\n    caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))\n      ? new SetCache(othIndex && array)\n      : undefined;\n  }\n  array = arrays[0];\n\n  var index = -1,\n      seen = caches[0];\n\n  outer:\n  while (++index < length && result.length < maxLength) {\n    var value = array[index],\n        computed = iteratee ? iteratee(value) : value;\n\n    value = (comparator || value !== 0) ? value : 0;\n    if (!(seen\n          ? cacheHas(seen, computed)\n          : includes(result, computed, comparator)\n        )) {\n      othIndex = othLength;\n      while (--othIndex) {\n        var cache = caches[othIndex];\n        if (!(cache\n              ? cacheHas(cache, computed)\n              : includes(arrays[othIndex], computed, comparator))\n            ) {\n          continue outer;\n        }\n      }\n      if (seen) {\n        seen.push(computed);\n      }\n      result.push(value);\n    }\n  }\n  return result;\n}\n\nmodule.exports = baseIntersection;\n","const Proto = require('uberproto');\nconst Application = require('./application');\nconst version = require('./version');\nconst { ACTIVATE_HOOKS, activateHooks } = require('./hooks');\n// A base object Prototype that does not inherit from a\n// potentially polluted Object prototype\nconst baseObject = Object.create(null);\n\nfunction createApplication () {\n  const app = Object.create(baseObject);\n\n  // Mix in the base application\n  Proto.mixin(Application, app);\n\n  app.init();\n\n  return app;\n}\n\ncreateApplication.version = version;\ncreateApplication.ACTIVATE_HOOKS = ACTIVATE_HOOKS;\ncreateApplication.activateHooks = activateHooks;\n\nmodule.exports = createApplication;\n\n// For better ES module (TypeScript) compatibility\nmodule.exports.default = createApplication;\n","var baseTrim = require('./_baseTrim'),\n    isObject = require('./isObject'),\n    isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n  if (typeof value == 'number') {\n    return value;\n  }\n  if (isSymbol(value)) {\n    return NAN;\n  }\n  if (isObject(value)) {\n    var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n    value = isObject(other) ? (other + '') : other;\n  }\n  if (typeof value != 'string') {\n    return value === 0 ? value : +value;\n  }\n  value = baseTrim(value);\n  var isBinary = reIsBinary.test(value);\n  return (isBinary || reIsOctal.test(value))\n    ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n    : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","'use strict';\n// B.2.3.10 String.prototype.link(url)\nrequire('./_string-html')('link', function (createHTML) {\n  return function link(url) {\n    return createHTML(this, 'a', 'href', url);\n  };\n});\n","/**\n * A global object that holds references to all Model Classes in the application.\n */\nexport const globalModels = {}\n/**\n * prepareAddModel wraps options in a closure around addModel\n * @param options\n */\nexport function prepareAddModel(options) {\n  const { serverAlias } = options\n  return function addModel(Model) {\n    globalModels[serverAlias] = globalModels[serverAlias] || {\n      byServicePath: {}\n    }\n    const name = Model.modelName || Model.name\n    if (globalModels[serverAlias][name] && options.debug) {\n      // eslint-disable-next-line no-console\n      console.error(`Overwriting Model: models[${serverAlias}][${name}].`)\n    }\n    globalModels[serverAlias][name] = Model\n    globalModels[serverAlias].byServicePath[Model.servicePath] = Model\n  }\n}\nexport function clearModels() {\n  Object.keys(globalModels).forEach((key) => {\n    const serverAliasObj = globalModels[key]\n    Object.keys(serverAliasObj).forEach((key) => {\n      delete globalModels[key]\n    })\n    delete globalModels[key]\n  })\n}\n","var getNative = require('./_getNative'),\n    root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nmodule.exports = DataView;\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author   Feross Aboukhadijeh <http://feross.org>\n * @license  MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar isArray = require('isarray')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n *   === true    Use Uint8Array implementation (fastest)\n *   === false   Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n *   - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n *     See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n *   - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n *   - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n *     incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n  ? global.TYPED_ARRAY_SUPPORT\n  : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n  try {\n    var arr = new Uint8Array(1)\n    arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n    return arr.foo() === 42 && // typed array instances can be augmented\n        typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n        arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n  } catch (e) {\n    return false\n  }\n}\n\nfunction kMaxLength () {\n  return Buffer.TYPED_ARRAY_SUPPORT\n    ? 0x7fffffff\n    : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n  if (kMaxLength() < length) {\n    throw new RangeError('Invalid typed array length')\n  }\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    // Return an augmented `Uint8Array` instance, for best performance\n    that = new Uint8Array(length)\n    that.__proto__ = Buffer.prototype\n  } else {\n    // Fallback: Return an object instance of the Buffer class\n    if (that === null) {\n      that = new Buffer(length)\n    }\n    that.length = length\n  }\n\n  return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n  if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n    return new Buffer(arg, encodingOrOffset, length)\n  }\n\n  // Common case.\n  if (typeof arg === 'number') {\n    if (typeof encodingOrOffset === 'string') {\n      throw new Error(\n        'If encoding is specified then the first argument must be a string'\n      )\n    }\n    return allocUnsafe(this, arg)\n  }\n  return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n  arr.__proto__ = Buffer.prototype\n  return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n  if (typeof value === 'number') {\n    throw new TypeError('\"value\" argument must not be a number')\n  }\n\n  if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n    return fromArrayBuffer(that, value, encodingOrOffset, length)\n  }\n\n  if (typeof value === 'string') {\n    return fromString(that, value, encodingOrOffset)\n  }\n\n  return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n  return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n  Buffer.prototype.__proto__ = Uint8Array.prototype\n  Buffer.__proto__ = Uint8Array\n  if (typeof Symbol !== 'undefined' && Symbol.species &&\n      Buffer[Symbol.species] === Buffer) {\n    // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n    Object.defineProperty(Buffer, Symbol.species, {\n      value: null,\n      configurable: true\n    })\n  }\n}\n\nfunction assertSize (size) {\n  if (typeof size !== 'number') {\n    throw new TypeError('\"size\" argument must be a number')\n  } else if (size < 0) {\n    throw new RangeError('\"size\" argument must not be negative')\n  }\n}\n\nfunction alloc (that, size, fill, encoding) {\n  assertSize(size)\n  if (size <= 0) {\n    return createBuffer(that, size)\n  }\n  if (fill !== undefined) {\n    // Only pay attention to encoding if it's a string. This\n    // prevents accidentally sending in a number that would\n    // be interpretted as a start offset.\n    return typeof encoding === 'string'\n      ? createBuffer(that, size).fill(fill, encoding)\n      : createBuffer(that, size).fill(fill)\n  }\n  return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n  return alloc(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n  assertSize(size)\n  that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n  if (!Buffer.TYPED_ARRAY_SUPPORT) {\n    for (var i = 0; i < size; ++i) {\n      that[i] = 0\n    }\n  }\n  return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n  return allocUnsafe(null, size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n  return allocUnsafe(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n  if (typeof encoding !== 'string' || encoding === '') {\n    encoding = 'utf8'\n  }\n\n  if (!Buffer.isEncoding(encoding)) {\n    throw new TypeError('\"encoding\" must be a valid string encoding')\n  }\n\n  var length = byteLength(string, encoding) | 0\n  that = createBuffer(that, length)\n\n  var actual = that.write(string, encoding)\n\n  if (actual !== length) {\n    // Writing a hex string, for example, that contains invalid characters will\n    // cause everything after the first invalid character to be ignored. (e.g.\n    // 'abxxcd' will be treated as 'ab')\n    that = that.slice(0, actual)\n  }\n\n  return that\n}\n\nfunction fromArrayLike (that, array) {\n  var length = array.length < 0 ? 0 : checked(array.length) | 0\n  that = createBuffer(that, length)\n  for (var i = 0; i < length; i += 1) {\n    that[i] = array[i] & 255\n  }\n  return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n  array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n  if (byteOffset < 0 || array.byteLength < byteOffset) {\n    throw new RangeError('\\'offset\\' is out of bounds')\n  }\n\n  if (array.byteLength < byteOffset + (length || 0)) {\n    throw new RangeError('\\'length\\' is out of bounds')\n  }\n\n  if (byteOffset === undefined && length === undefined) {\n    array = new Uint8Array(array)\n  } else if (length === undefined) {\n    array = new Uint8Array(array, byteOffset)\n  } else {\n    array = new Uint8Array(array, byteOffset, length)\n  }\n\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    // Return an augmented `Uint8Array` instance, for best performance\n    that = array\n    that.__proto__ = Buffer.prototype\n  } else {\n    // Fallback: Return an object instance of the Buffer class\n    that = fromArrayLike(that, array)\n  }\n  return that\n}\n\nfunction fromObject (that, obj) {\n  if (Buffer.isBuffer(obj)) {\n    var len = checked(obj.length) | 0\n    that = createBuffer(that, len)\n\n    if (that.length === 0) {\n      return that\n    }\n\n    obj.copy(that, 0, 0, len)\n    return that\n  }\n\n  if (obj) {\n    if ((typeof ArrayBuffer !== 'undefined' &&\n        obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n      if (typeof obj.length !== 'number' || isnan(obj.length)) {\n        return createBuffer(that, 0)\n      }\n      return fromArrayLike(that, obj)\n    }\n\n    if (obj.type === 'Buffer' && isArray(obj.data)) {\n      return fromArrayLike(that, obj.data)\n    }\n  }\n\n  throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n  // Note: cannot use `length < kMaxLength()` here because that fails when\n  // length is NaN (which is otherwise coerced to zero.)\n  if (length >= kMaxLength()) {\n    throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n                         'size: 0x' + kMaxLength().toString(16) + ' bytes')\n  }\n  return length | 0\n}\n\nfunction SlowBuffer (length) {\n  if (+length != length) { // eslint-disable-line eqeqeq\n    length = 0\n  }\n  return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n  return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n  if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n    throw new TypeError('Arguments must be Buffers')\n  }\n\n  if (a === b) return 0\n\n  var x = a.length\n  var y = b.length\n\n  for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n    if (a[i] !== b[i]) {\n      x = a[i]\n      y = b[i]\n      break\n    }\n  }\n\n  if (x < y) return -1\n  if (y < x) return 1\n  return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n  switch (String(encoding).toLowerCase()) {\n    case 'hex':\n    case 'utf8':\n    case 'utf-8':\n    case 'ascii':\n    case 'latin1':\n    case 'binary':\n    case 'base64':\n    case 'ucs2':\n    case 'ucs-2':\n    case 'utf16le':\n    case 'utf-16le':\n      return true\n    default:\n      return false\n  }\n}\n\nBuffer.concat = function concat (list, length) {\n  if (!isArray(list)) {\n    throw new TypeError('\"list\" argument must be an Array of Buffers')\n  }\n\n  if (list.length === 0) {\n    return Buffer.alloc(0)\n  }\n\n  var i\n  if (length === undefined) {\n    length = 0\n    for (i = 0; i < list.length; ++i) {\n      length += list[i].length\n    }\n  }\n\n  var buffer = Buffer.allocUnsafe(length)\n  var pos = 0\n  for (i = 0; i < list.length; ++i) {\n    var buf = list[i]\n    if (!Buffer.isBuffer(buf)) {\n      throw new TypeError('\"list\" argument must be an Array of Buffers')\n    }\n    buf.copy(buffer, pos)\n    pos += buf.length\n  }\n  return buffer\n}\n\nfunction byteLength (string, encoding) {\n  if (Buffer.isBuffer(string)) {\n    return string.length\n  }\n  if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n      (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n    return string.byteLength\n  }\n  if (typeof string !== 'string') {\n    string = '' + string\n  }\n\n  var len = string.length\n  if (len === 0) return 0\n\n  // Use a for loop to avoid recursion\n  var loweredCase = false\n  for (;;) {\n    switch (encoding) {\n      case 'ascii':\n      case 'latin1':\n      case 'binary':\n        return len\n      case 'utf8':\n      case 'utf-8':\n      case undefined:\n        return utf8ToBytes(string).length\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return len * 2\n      case 'hex':\n        return len >>> 1\n      case 'base64':\n        return base64ToBytes(string).length\n      default:\n        if (loweredCase) return utf8ToBytes(string).length // assume utf8\n        encoding = ('' + encoding).toLowerCase()\n        loweredCase = true\n    }\n  }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n  var loweredCase = false\n\n  // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n  // property of a typed array.\n\n  // This behaves neither like String nor Uint8Array in that we set start/end\n  // to their upper/lower bounds if the value passed is out of range.\n  // undefined is handled specially as per ECMA-262 6th Edition,\n  // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n  if (start === undefined || start < 0) {\n    start = 0\n  }\n  // Return early if start > this.length. Done here to prevent potential uint32\n  // coercion fail below.\n  if (start > this.length) {\n    return ''\n  }\n\n  if (end === undefined || end > this.length) {\n    end = this.length\n  }\n\n  if (end <= 0) {\n    return ''\n  }\n\n  // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n  end >>>= 0\n  start >>>= 0\n\n  if (end <= start) {\n    return ''\n  }\n\n  if (!encoding) encoding = 'utf8'\n\n  while (true) {\n    switch (encoding) {\n      case 'hex':\n        return hexSlice(this, start, end)\n\n      case 'utf8':\n      case 'utf-8':\n        return utf8Slice(this, start, end)\n\n      case 'ascii':\n        return asciiSlice(this, start, end)\n\n      case 'latin1':\n      case 'binary':\n        return latin1Slice(this, start, end)\n\n      case 'base64':\n        return base64Slice(this, start, end)\n\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return utf16leSlice(this, start, end)\n\n      default:\n        if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n        encoding = (encoding + '').toLowerCase()\n        loweredCase = true\n    }\n  }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n  var i = b[n]\n  b[n] = b[m]\n  b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n  var len = this.length\n  if (len % 2 !== 0) {\n    throw new RangeError('Buffer size must be a multiple of 16-bits')\n  }\n  for (var i = 0; i < len; i += 2) {\n    swap(this, i, i + 1)\n  }\n  return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n  var len = this.length\n  if (len % 4 !== 0) {\n    throw new RangeError('Buffer size must be a multiple of 32-bits')\n  }\n  for (var i = 0; i < len; i += 4) {\n    swap(this, i, i + 3)\n    swap(this, i + 1, i + 2)\n  }\n  return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n  var len = this.length\n  if (len % 8 !== 0) {\n    throw new RangeError('Buffer size must be a multiple of 64-bits')\n  }\n  for (var i = 0; i < len; i += 8) {\n    swap(this, i, i + 7)\n    swap(this, i + 1, i + 6)\n    swap(this, i + 2, i + 5)\n    swap(this, i + 3, i + 4)\n  }\n  return this\n}\n\nBuffer.prototype.toString = function toString () {\n  var length = this.length | 0\n  if (length === 0) return ''\n  if (arguments.length === 0) return utf8Slice(this, 0, length)\n  return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n  if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n  if (this === b) return true\n  return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n  var str = ''\n  var max = exports.INSPECT_MAX_BYTES\n  if (this.length > 0) {\n    str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n    if (this.length > max) str += ' ... '\n  }\n  return '<Buffer ' + str + '>'\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n  if (!Buffer.isBuffer(target)) {\n    throw new TypeError('Argument must be a Buffer')\n  }\n\n  if (start === undefined) {\n    start = 0\n  }\n  if (end === undefined) {\n    end = target ? target.length : 0\n  }\n  if (thisStart === undefined) {\n    thisStart = 0\n  }\n  if (thisEnd === undefined) {\n    thisEnd = this.length\n  }\n\n  if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n    throw new RangeError('out of range index')\n  }\n\n  if (thisStart >= thisEnd && start >= end) {\n    return 0\n  }\n  if (thisStart >= thisEnd) {\n    return -1\n  }\n  if (start >= end) {\n    return 1\n  }\n\n  start >>>= 0\n  end >>>= 0\n  thisStart >>>= 0\n  thisEnd >>>= 0\n\n  if (this === target) return 0\n\n  var x = thisEnd - thisStart\n  var y = end - start\n  var len = Math.min(x, y)\n\n  var thisCopy = this.slice(thisStart, thisEnd)\n  var targetCopy = target.slice(start, end)\n\n  for (var i = 0; i < len; ++i) {\n    if (thisCopy[i] !== targetCopy[i]) {\n      x = thisCopy[i]\n      y = targetCopy[i]\n      break\n    }\n  }\n\n  if (x < y) return -1\n  if (y < x) return 1\n  return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n  // Empty buffer means no match\n  if (buffer.length === 0) return -1\n\n  // Normalize byteOffset\n  if (typeof byteOffset === 'string') {\n    encoding = byteOffset\n    byteOffset = 0\n  } else if (byteOffset > 0x7fffffff) {\n    byteOffset = 0x7fffffff\n  } else if (byteOffset < -0x80000000) {\n    byteOffset = -0x80000000\n  }\n  byteOffset = +byteOffset  // Coerce to Number.\n  if (isNaN(byteOffset)) {\n    // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n    byteOffset = dir ? 0 : (buffer.length - 1)\n  }\n\n  // Normalize byteOffset: negative offsets start from the end of the buffer\n  if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n  if (byteOffset >= buffer.length) {\n    if (dir) return -1\n    else byteOffset = buffer.length - 1\n  } else if (byteOffset < 0) {\n    if (dir) byteOffset = 0\n    else return -1\n  }\n\n  // Normalize val\n  if (typeof val === 'string') {\n    val = Buffer.from(val, encoding)\n  }\n\n  // Finally, search either indexOf (if dir is true) or lastIndexOf\n  if (Buffer.isBuffer(val)) {\n    // Special case: looking for empty string/buffer always fails\n    if (val.length === 0) {\n      return -1\n    }\n    return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n  } else if (typeof val === 'number') {\n    val = val & 0xFF // Search for a byte value [0-255]\n    if (Buffer.TYPED_ARRAY_SUPPORT &&\n        typeof Uint8Array.prototype.indexOf === 'function') {\n      if (dir) {\n        return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n      } else {\n        return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n      }\n    }\n    return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n  }\n\n  throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n  var indexSize = 1\n  var arrLength = arr.length\n  var valLength = val.length\n\n  if (encoding !== undefined) {\n    encoding = String(encoding).toLowerCase()\n    if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n        encoding === 'utf16le' || encoding === 'utf-16le') {\n      if (arr.length < 2 || val.length < 2) {\n        return -1\n      }\n      indexSize = 2\n      arrLength /= 2\n      valLength /= 2\n      byteOffset /= 2\n    }\n  }\n\n  function read (buf, i) {\n    if (indexSize === 1) {\n      return buf[i]\n    } else {\n      return buf.readUInt16BE(i * indexSize)\n    }\n  }\n\n  var i\n  if (dir) {\n    var foundIndex = -1\n    for (i = byteOffset; i < arrLength; i++) {\n      if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n        if (foundIndex === -1) foundIndex = i\n        if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n      } else {\n        if (foundIndex !== -1) i -= i - foundIndex\n        foundIndex = -1\n      }\n    }\n  } else {\n    if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n    for (i = byteOffset; i >= 0; i--) {\n      var found = true\n      for (var j = 0; j < valLength; j++) {\n        if (read(arr, i + j) !== read(val, j)) {\n          found = false\n          break\n        }\n      }\n      if (found) return i\n    }\n  }\n\n  return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n  return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n  return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n  return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n  offset = Number(offset) || 0\n  var remaining = buf.length - offset\n  if (!length) {\n    length = remaining\n  } else {\n    length = Number(length)\n    if (length > remaining) {\n      length = remaining\n    }\n  }\n\n  // must be an even number of digits\n  var strLen = string.length\n  if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n  if (length > strLen / 2) {\n    length = strLen / 2\n  }\n  for (var i = 0; i < length; ++i) {\n    var parsed = parseInt(string.substr(i * 2, 2), 16)\n    if (isNaN(parsed)) return i\n    buf[offset + i] = parsed\n  }\n  return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n  return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n  return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n  return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n  return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n  return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n  // Buffer#write(string)\n  if (offset === undefined) {\n    encoding = 'utf8'\n    length = this.length\n    offset = 0\n  // Buffer#write(string, encoding)\n  } else if (length === undefined && typeof offset === 'string') {\n    encoding = offset\n    length = this.length\n    offset = 0\n  // Buffer#write(string, offset[, length][, encoding])\n  } else if (isFinite(offset)) {\n    offset = offset | 0\n    if (isFinite(length)) {\n      length = length | 0\n      if (encoding === undefined) encoding = 'utf8'\n    } else {\n      encoding = length\n      length = undefined\n    }\n  // legacy write(string, encoding, offset, length) - remove in v0.13\n  } else {\n    throw new Error(\n      'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n    )\n  }\n\n  var remaining = this.length - offset\n  if (length === undefined || length > remaining) length = remaining\n\n  if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n    throw new RangeError('Attempt to write outside buffer bounds')\n  }\n\n  if (!encoding) encoding = 'utf8'\n\n  var loweredCase = false\n  for (;;) {\n    switch (encoding) {\n      case 'hex':\n        return hexWrite(this, string, offset, length)\n\n      case 'utf8':\n      case 'utf-8':\n        return utf8Write(this, string, offset, length)\n\n      case 'ascii':\n        return asciiWrite(this, string, offset, length)\n\n      case 'latin1':\n      case 'binary':\n        return latin1Write(this, string, offset, length)\n\n      case 'base64':\n        // Warning: maxLength not taken into account in base64Write\n        return base64Write(this, string, offset, length)\n\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return ucs2Write(this, string, offset, length)\n\n      default:\n        if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n        encoding = ('' + encoding).toLowerCase()\n        loweredCase = true\n    }\n  }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n  return {\n    type: 'Buffer',\n    data: Array.prototype.slice.call(this._arr || this, 0)\n  }\n}\n\nfunction base64Slice (buf, start, end) {\n  if (start === 0 && end === buf.length) {\n    return base64.fromByteArray(buf)\n  } else {\n    return base64.fromByteArray(buf.slice(start, end))\n  }\n}\n\nfunction utf8Slice (buf, start, end) {\n  end = Math.min(buf.length, end)\n  var res = []\n\n  var i = start\n  while (i < end) {\n    var firstByte = buf[i]\n    var codePoint = null\n    var bytesPerSequence = (firstByte > 0xEF) ? 4\n      : (firstByte > 0xDF) ? 3\n      : (firstByte > 0xBF) ? 2\n      : 1\n\n    if (i + bytesPerSequence <= end) {\n      var secondByte, thirdByte, fourthByte, tempCodePoint\n\n      switch (bytesPerSequence) {\n        case 1:\n          if (firstByte < 0x80) {\n            codePoint = firstByte\n          }\n          break\n        case 2:\n          secondByte = buf[i + 1]\n          if ((secondByte & 0xC0) === 0x80) {\n            tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n            if (tempCodePoint > 0x7F) {\n              codePoint = tempCodePoint\n            }\n          }\n          break\n        case 3:\n          secondByte = buf[i + 1]\n          thirdByte = buf[i + 2]\n          if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n            tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n            if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n              codePoint = tempCodePoint\n            }\n          }\n          break\n        case 4:\n          secondByte = buf[i + 1]\n          thirdByte = buf[i + 2]\n          fourthByte = buf[i + 3]\n          if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n            tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n            if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n              codePoint = tempCodePoint\n            }\n          }\n      }\n    }\n\n    if (codePoint === null) {\n      // we did not generate a valid codePoint so insert a\n      // replacement char (U+FFFD) and advance only 1 byte\n      codePoint = 0xFFFD\n      bytesPerSequence = 1\n    } else if (codePoint > 0xFFFF) {\n      // encode to utf16 (surrogate pair dance)\n      codePoint -= 0x10000\n      res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n      codePoint = 0xDC00 | codePoint & 0x3FF\n    }\n\n    res.push(codePoint)\n    i += bytesPerSequence\n  }\n\n  return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n  var len = codePoints.length\n  if (len <= MAX_ARGUMENTS_LENGTH) {\n    return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n  }\n\n  // Decode in chunks to avoid \"call stack size exceeded\".\n  var res = ''\n  var i = 0\n  while (i < len) {\n    res += String.fromCharCode.apply(\n      String,\n      codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n    )\n  }\n  return res\n}\n\nfunction asciiSlice (buf, start, end) {\n  var ret = ''\n  end = Math.min(buf.length, end)\n\n  for (var i = start; i < end; ++i) {\n    ret += String.fromCharCode(buf[i] & 0x7F)\n  }\n  return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n  var ret = ''\n  end = Math.min(buf.length, end)\n\n  for (var i = start; i < end; ++i) {\n    ret += String.fromCharCode(buf[i])\n  }\n  return ret\n}\n\nfunction hexSlice (buf, start, end) {\n  var len = buf.length\n\n  if (!start || start < 0) start = 0\n  if (!end || end < 0 || end > len) end = len\n\n  var out = ''\n  for (var i = start; i < end; ++i) {\n    out += toHex(buf[i])\n  }\n  return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n  var bytes = buf.slice(start, end)\n  var res = ''\n  for (var i = 0; i < bytes.length; i += 2) {\n    res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n  }\n  return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n  var len = this.length\n  start = ~~start\n  end = end === undefined ? len : ~~end\n\n  if (start < 0) {\n    start += len\n    if (start < 0) start = 0\n  } else if (start > len) {\n    start = len\n  }\n\n  if (end < 0) {\n    end += len\n    if (end < 0) end = 0\n  } else if (end > len) {\n    end = len\n  }\n\n  if (end < start) end = start\n\n  var newBuf\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    newBuf = this.subarray(start, end)\n    newBuf.__proto__ = Buffer.prototype\n  } else {\n    var sliceLen = end - start\n    newBuf = new Buffer(sliceLen, undefined)\n    for (var i = 0; i < sliceLen; ++i) {\n      newBuf[i] = this[i + start]\n    }\n  }\n\n  return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n  if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n  if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n  offset = offset | 0\n  byteLength = byteLength | 0\n  if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n  var val = this[offset]\n  var mul = 1\n  var i = 0\n  while (++i < byteLength && (mul *= 0x100)) {\n    val += this[offset + i] * mul\n  }\n\n  return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n  offset = offset | 0\n  byteLength = byteLength | 0\n  if (!noAssert) {\n    checkOffset(offset, byteLength, this.length)\n  }\n\n  var val = this[offset + --byteLength]\n  var mul = 1\n  while (byteLength > 0 && (mul *= 0x100)) {\n    val += this[offset + --byteLength] * mul\n  }\n\n  return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 1, this.length)\n  return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return ((this[offset]) |\n      (this[offset + 1] << 8) |\n      (this[offset + 2] << 16)) +\n      (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return (this[offset] * 0x1000000) +\n    ((this[offset + 1] << 16) |\n    (this[offset + 2] << 8) |\n    this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n  offset = offset | 0\n  byteLength = byteLength | 0\n  if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n  var val = this[offset]\n  var mul = 1\n  var i = 0\n  while (++i < byteLength && (mul *= 0x100)) {\n    val += this[offset + i] * mul\n  }\n  mul *= 0x80\n\n  if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n  return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n  offset = offset | 0\n  byteLength = byteLength | 0\n  if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n  var i = byteLength\n  var mul = 1\n  var val = this[offset + --i]\n  while (i > 0 && (mul *= 0x100)) {\n    val += this[offset + --i] * mul\n  }\n  mul *= 0x80\n\n  if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n  return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 1, this.length)\n  if (!(this[offset] & 0x80)) return (this[offset])\n  return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  var val = this[offset] | (this[offset + 1] << 8)\n  return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  var val = this[offset + 1] | (this[offset] << 8)\n  return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return (this[offset]) |\n    (this[offset + 1] << 8) |\n    (this[offset + 2] << 16) |\n    (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return (this[offset] << 24) |\n    (this[offset + 1] << 16) |\n    (this[offset + 2] << 8) |\n    (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 4, this.length)\n  return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 4, this.length)\n  return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 8, this.length)\n  return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 8, this.length)\n  return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n  if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n  if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n  if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset | 0\n  byteLength = byteLength | 0\n  if (!noAssert) {\n    var maxBytes = Math.pow(2, 8 * byteLength) - 1\n    checkInt(this, value, offset, byteLength, maxBytes, 0)\n  }\n\n  var mul = 1\n  var i = 0\n  this[offset] = value & 0xFF\n  while (++i < byteLength && (mul *= 0x100)) {\n    this[offset + i] = (value / mul) & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset | 0\n  byteLength = byteLength | 0\n  if (!noAssert) {\n    var maxBytes = Math.pow(2, 8 * byteLength) - 1\n    checkInt(this, value, offset, byteLength, maxBytes, 0)\n  }\n\n  var i = byteLength - 1\n  var mul = 1\n  this[offset + i] = value & 0xFF\n  while (--i >= 0 && (mul *= 0x100)) {\n    this[offset + i] = (value / mul) & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n  if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n  this[offset] = (value & 0xff)\n  return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n  if (value < 0) value = 0xffff + value + 1\n  for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n    buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n      (littleEndian ? i : 1 - i) * 8\n  }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value & 0xff)\n    this[offset + 1] = (value >>> 8)\n  } else {\n    objectWriteUInt16(this, value, offset, true)\n  }\n  return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value >>> 8)\n    this[offset + 1] = (value & 0xff)\n  } else {\n    objectWriteUInt16(this, value, offset, false)\n  }\n  return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n  if (value < 0) value = 0xffffffff + value + 1\n  for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n    buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n  }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset + 3] = (value >>> 24)\n    this[offset + 2] = (value >>> 16)\n    this[offset + 1] = (value >>> 8)\n    this[offset] = (value & 0xff)\n  } else {\n    objectWriteUInt32(this, value, offset, true)\n  }\n  return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value >>> 24)\n    this[offset + 1] = (value >>> 16)\n    this[offset + 2] = (value >>> 8)\n    this[offset + 3] = (value & 0xff)\n  } else {\n    objectWriteUInt32(this, value, offset, false)\n  }\n  return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) {\n    var limit = Math.pow(2, 8 * byteLength - 1)\n\n    checkInt(this, value, offset, byteLength, limit - 1, -limit)\n  }\n\n  var i = 0\n  var mul = 1\n  var sub = 0\n  this[offset] = value & 0xFF\n  while (++i < byteLength && (mul *= 0x100)) {\n    if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n      sub = 1\n    }\n    this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) {\n    var limit = Math.pow(2, 8 * byteLength - 1)\n\n    checkInt(this, value, offset, byteLength, limit - 1, -limit)\n  }\n\n  var i = byteLength - 1\n  var mul = 1\n  var sub = 0\n  this[offset + i] = value & 0xFF\n  while (--i >= 0 && (mul *= 0x100)) {\n    if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n      sub = 1\n    }\n    this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n  if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n  if (value < 0) value = 0xff + value + 1\n  this[offset] = (value & 0xff)\n  return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value & 0xff)\n    this[offset + 1] = (value >>> 8)\n  } else {\n    objectWriteUInt16(this, value, offset, true)\n  }\n  return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value >>> 8)\n    this[offset + 1] = (value & 0xff)\n  } else {\n    objectWriteUInt16(this, value, offset, false)\n  }\n  return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value & 0xff)\n    this[offset + 1] = (value >>> 8)\n    this[offset + 2] = (value >>> 16)\n    this[offset + 3] = (value >>> 24)\n  } else {\n    objectWriteUInt32(this, value, offset, true)\n  }\n  return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n  if (value < 0) value = 0xffffffff + value + 1\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value >>> 24)\n    this[offset + 1] = (value >>> 16)\n    this[offset + 2] = (value >>> 8)\n    this[offset + 3] = (value & 0xff)\n  } else {\n    objectWriteUInt32(this, value, offset, false)\n  }\n  return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n  if (offset + ext > buf.length) throw new RangeError('Index out of range')\n  if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n  if (!noAssert) {\n    checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n  }\n  ieee754.write(buf, value, offset, littleEndian, 23, 4)\n  return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n  return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n  return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n  if (!noAssert) {\n    checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n  }\n  ieee754.write(buf, value, offset, littleEndian, 52, 8)\n  return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n  return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n  return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n  if (!start) start = 0\n  if (!end && end !== 0) end = this.length\n  if (targetStart >= target.length) targetStart = target.length\n  if (!targetStart) targetStart = 0\n  if (end > 0 && end < start) end = start\n\n  // Copy 0 bytes; we're done\n  if (end === start) return 0\n  if (target.length === 0 || this.length === 0) return 0\n\n  // Fatal error conditions\n  if (targetStart < 0) {\n    throw new RangeError('targetStart out of bounds')\n  }\n  if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n  if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n  // Are we oob?\n  if (end > this.length) end = this.length\n  if (target.length - targetStart < end - start) {\n    end = target.length - targetStart + start\n  }\n\n  var len = end - start\n  var i\n\n  if (this === target && start < targetStart && targetStart < end) {\n    // descending copy from end\n    for (i = len - 1; i >= 0; --i) {\n      target[i + targetStart] = this[i + start]\n    }\n  } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n    // ascending copy from start\n    for (i = 0; i < len; ++i) {\n      target[i + targetStart] = this[i + start]\n    }\n  } else {\n    Uint8Array.prototype.set.call(\n      target,\n      this.subarray(start, start + len),\n      targetStart\n    )\n  }\n\n  return len\n}\n\n// Usage:\n//    buffer.fill(number[, offset[, end]])\n//    buffer.fill(buffer[, offset[, end]])\n//    buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n  // Handle string cases:\n  if (typeof val === 'string') {\n    if (typeof start === 'string') {\n      encoding = start\n      start = 0\n      end = this.length\n    } else if (typeof end === 'string') {\n      encoding = end\n      end = this.length\n    }\n    if (val.length === 1) {\n      var code = val.charCodeAt(0)\n      if (code < 256) {\n        val = code\n      }\n    }\n    if (encoding !== undefined && typeof encoding !== 'string') {\n      throw new TypeError('encoding must be a string')\n    }\n    if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n      throw new TypeError('Unknown encoding: ' + encoding)\n    }\n  } else if (typeof val === 'number') {\n    val = val & 255\n  }\n\n  // Invalid ranges are not set to a default, so can range check early.\n  if (start < 0 || this.length < start || this.length < end) {\n    throw new RangeError('Out of range index')\n  }\n\n  if (end <= start) {\n    return this\n  }\n\n  start = start >>> 0\n  end = end === undefined ? this.length : end >>> 0\n\n  if (!val) val = 0\n\n  var i\n  if (typeof val === 'number') {\n    for (i = start; i < end; ++i) {\n      this[i] = val\n    }\n  } else {\n    var bytes = Buffer.isBuffer(val)\n      ? val\n      : utf8ToBytes(new Buffer(val, encoding).toString())\n    var len = bytes.length\n    for (i = 0; i < end - start; ++i) {\n      this[i + start] = bytes[i % len]\n    }\n  }\n\n  return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n  // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n  str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n  // Node converts strings with length < 2 to ''\n  if (str.length < 2) return ''\n  // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n  while (str.length % 4 !== 0) {\n    str = str + '='\n  }\n  return str\n}\n\nfunction stringtrim (str) {\n  if (str.trim) return str.trim()\n  return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n  if (n < 16) return '0' + n.toString(16)\n  return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n  units = units || Infinity\n  var codePoint\n  var length = string.length\n  var leadSurrogate = null\n  var bytes = []\n\n  for (var i = 0; i < length; ++i) {\n    codePoint = string.charCodeAt(i)\n\n    // is surrogate component\n    if (codePoint > 0xD7FF && codePoint < 0xE000) {\n      // last char was a lead\n      if (!leadSurrogate) {\n        // no lead yet\n        if (codePoint > 0xDBFF) {\n          // unexpected trail\n          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n          continue\n        } else if (i + 1 === length) {\n          // unpaired lead\n          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n          continue\n        }\n\n        // valid lead\n        leadSurrogate = codePoint\n\n        continue\n      }\n\n      // 2 leads in a row\n      if (codePoint < 0xDC00) {\n        if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n        leadSurrogate = codePoint\n        continue\n      }\n\n      // valid surrogate pair\n      codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n    } else if (leadSurrogate) {\n      // valid bmp char, but last char was a lead\n      if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n    }\n\n    leadSurrogate = null\n\n    // encode utf8\n    if (codePoint < 0x80) {\n      if ((units -= 1) < 0) break\n      bytes.push(codePoint)\n    } else if (codePoint < 0x800) {\n      if ((units -= 2) < 0) break\n      bytes.push(\n        codePoint >> 0x6 | 0xC0,\n        codePoint & 0x3F | 0x80\n      )\n    } else if (codePoint < 0x10000) {\n      if ((units -= 3) < 0) break\n      bytes.push(\n        codePoint >> 0xC | 0xE0,\n        codePoint >> 0x6 & 0x3F | 0x80,\n        codePoint & 0x3F | 0x80\n      )\n    } else if (codePoint < 0x110000) {\n      if ((units -= 4) < 0) break\n      bytes.push(\n        codePoint >> 0x12 | 0xF0,\n        codePoint >> 0xC & 0x3F | 0x80,\n        codePoint >> 0x6 & 0x3F | 0x80,\n        codePoint & 0x3F | 0x80\n      )\n    } else {\n      throw new Error('Invalid code point')\n    }\n  }\n\n  return bytes\n}\n\nfunction asciiToBytes (str) {\n  var byteArray = []\n  for (var i = 0; i < str.length; ++i) {\n    // Node's code seems to be doing this and not & 0x7F..\n    byteArray.push(str.charCodeAt(i) & 0xFF)\n  }\n  return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n  var c, hi, lo\n  var byteArray = []\n  for (var i = 0; i < str.length; ++i) {\n    if ((units -= 2) < 0) break\n\n    c = str.charCodeAt(i)\n    hi = c >> 8\n    lo = c % 256\n    byteArray.push(lo)\n    byteArray.push(hi)\n  }\n\n  return byteArray\n}\n\nfunction base64ToBytes (str) {\n  return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n  for (var i = 0; i < length; ++i) {\n    if ((i + offset >= dst.length) || (i >= src.length)) break\n    dst[i + offset] = src[i]\n  }\n  return i\n}\n\nfunction isnan (val) {\n  return val !== val // eslint-disable-line no-self-compare\n}\n","// Styles\nimport \"../../../src/styles/components/_selection-controls.sass\";\nimport \"../../../src/components/VSwitch/VSwitch.sass\"; // Mixins\n\nimport Selectable from '../../mixins/selectable';\nimport VInput from '../VInput'; // Directives\n\nimport Touch from '../../directives/touch'; // Components\n\nimport { VFabTransition } from '../transitions';\nimport VProgressCircular from '../VProgressCircular/VProgressCircular'; // Helpers\n\nimport { keyCodes } from '../../util/helpers';\n/* @vue/component */\n\nexport default Selectable.extend({\n  name: 'v-switch',\n  directives: {\n    Touch\n  },\n  props: {\n    inset: Boolean,\n    loading: {\n      type: [Boolean, String],\n      default: false\n    },\n    flat: {\n      type: Boolean,\n      default: false\n    }\n  },\n  computed: {\n    classes() {\n      return { ...VInput.options.computed.classes.call(this),\n        'v-input--selection-controls v-input--switch': true,\n        'v-input--switch--flat': this.flat,\n        'v-input--switch--inset': this.inset\n      };\n    },\n\n    attrs() {\n      return {\n        'aria-checked': String(this.isActive),\n        'aria-disabled': String(this.isDisabled),\n        role: 'switch'\n      };\n    },\n\n    // Do not return undefined if disabled,\n    // according to spec, should still show\n    // a color when disabled and active\n    validationState() {\n      if (this.hasError && this.shouldValidate) return 'error';\n      if (this.hasSuccess) return 'success';\n      if (this.hasColor !== null) return this.computedColor;\n      return undefined;\n    },\n\n    switchData() {\n      return this.setTextColor(this.loading ? undefined : this.validationState, {\n        class: this.themeClasses\n      });\n    }\n\n  },\n  methods: {\n    genDefaultSlot() {\n      return [this.genSwitch(), this.genLabel()];\n    },\n\n    genSwitch() {\n      const {\n        title,\n        ...switchAttrs\n      } = this.attrs$;\n      return this.$createElement('div', {\n        staticClass: 'v-input--selection-controls__input'\n      }, [this.genInput('checkbox', { ...this.attrs,\n        ...switchAttrs\n      }), this.genRipple(this.setTextColor(this.validationState, {\n        directives: [{\n          name: 'touch',\n          value: {\n            left: this.onSwipeLeft,\n            right: this.onSwipeRight\n          }\n        }]\n      })), this.$createElement('div', {\n        staticClass: 'v-input--switch__track',\n        ...this.switchData\n      }), this.$createElement('div', {\n        staticClass: 'v-input--switch__thumb',\n        ...this.switchData\n      }, [this.genProgress()])]);\n    },\n\n    genProgress() {\n      return this.$createElement(VFabTransition, {}, [this.loading === false ? null : this.$slots.progress || this.$createElement(VProgressCircular, {\n        props: {\n          color: this.loading === true || this.loading === '' ? this.color || 'primary' : this.loading,\n          size: 16,\n          width: 2,\n          indeterminate: true\n        }\n      })]);\n    },\n\n    onSwipeLeft() {\n      if (this.isActive) this.onChange();\n    },\n\n    onSwipeRight() {\n      if (!this.isActive) this.onChange();\n    },\n\n    onKeydown(e) {\n      if (e.keyCode === keyCodes.left && this.isActive || e.keyCode === keyCodes.right && !this.isActive) this.onChange();\n    }\n\n  }\n});\n//# sourceMappingURL=VSwitch.js.map","var baseAssignValue = require('./_baseAssignValue'),\n    eq = require('./eq');\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\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 assignMergeValue(object, key, value) {\n  if ((value !== undefined && !eq(object[key], value)) ||\n      (value === undefined && !(key in object))) {\n    baseAssignValue(object, key, value);\n  }\n}\n\nmodule.exports = assignMergeValue;\n","var baseIndexOf = require('./_baseIndexOf');\n\n/**\n * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the first unmatched string symbol.\n */\nfunction charsStartIndex(strSymbols, chrSymbols) {\n  var index = -1,\n      length = strSymbols.length;\n\n  while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n  return index;\n}\n\nmodule.exports = charsStartIndex;\n","import VDivider from './VDivider';\nexport { VDivider };\nexport default VDivider;\n//# sourceMappingURL=index.js.map","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n *  - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function(val, options) {\n  options = options || {};\n  var type = typeof val;\n  if (type === 'string' && val.length > 0) {\n    return parse(val);\n  } else if (type === 'number' && isNaN(val) === false) {\n    return options.long ? fmtLong(val) : fmtShort(val);\n  }\n  throw new Error(\n    'val is not a non-empty string or a valid number. val=' +\n      JSON.stringify(val)\n  );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n  str = String(str);\n  if (str.length > 100) {\n    return;\n  }\n  var match = /^((?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(\n    str\n  );\n  if (!match) {\n    return;\n  }\n  var n = parseFloat(match[1]);\n  var type = (match[2] || 'ms').toLowerCase();\n  switch (type) {\n    case 'years':\n    case 'year':\n    case 'yrs':\n    case 'yr':\n    case 'y':\n      return n * y;\n    case 'days':\n    case 'day':\n    case 'd':\n      return n * d;\n    case 'hours':\n    case 'hour':\n    case 'hrs':\n    case 'hr':\n    case 'h':\n      return n * h;\n    case 'minutes':\n    case 'minute':\n    case 'mins':\n    case 'min':\n    case 'm':\n      return n * m;\n    case 'seconds':\n    case 'second':\n    case 'secs':\n    case 'sec':\n    case 's':\n      return n * s;\n    case 'milliseconds':\n    case 'millisecond':\n    case 'msecs':\n    case 'msec':\n    case 'ms':\n      return n;\n    default:\n      return undefined;\n  }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n  if (ms >= d) {\n    return Math.round(ms / d) + 'd';\n  }\n  if (ms >= h) {\n    return Math.round(ms / h) + 'h';\n  }\n  if (ms >= m) {\n    return Math.round(ms / m) + 'm';\n  }\n  if (ms >= s) {\n    return Math.round(ms / s) + 's';\n  }\n  return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n  return plural(ms, d, 'day') ||\n    plural(ms, h, 'hour') ||\n    plural(ms, m, 'minute') ||\n    plural(ms, s, 'second') ||\n    ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, n, name) {\n  if (ms < n) {\n    return;\n  }\n  if (ms < n * 1.5) {\n    return Math.floor(ms / n) + ' ' + name;\n  }\n  return Math.ceil(ms / n) + ' ' + name + 's';\n}\n","import mixins from '../../util/mixins';\n\nfunction searchChildren(children) {\n  const results = [];\n\n  for (let index = 0; index < children.length; index++) {\n    const child = children[index];\n\n    if (child.isActive && child.isDependent) {\n      results.push(child);\n    } else {\n      results.push(...searchChildren(child.$children));\n    }\n  }\n\n  return results;\n}\n/* @vue/component */\n\n\nexport default mixins().extend({\n  name: 'dependent',\n\n  data() {\n    return {\n      closeDependents: true,\n      isActive: false,\n      isDependent: true\n    };\n  },\n\n  watch: {\n    isActive(val) {\n      if (val) return;\n      const openDependents = this.getOpenDependents();\n\n      for (let index = 0; index < openDependents.length; index++) {\n        openDependents[index].isActive = false;\n      }\n    }\n\n  },\n  methods: {\n    getOpenDependents() {\n      if (this.closeDependents) return searchChildren(this.$children);\n      return [];\n    },\n\n    getOpenDependentElements() {\n      const result = [];\n      const openDependents = this.getOpenDependents();\n\n      for (let index = 0; index < openDependents.length; index++) {\n        result.push(...openDependents[index].getClickableDependentElements());\n      }\n\n      return result;\n    },\n\n    getClickableDependentElements() {\n      const result = [this.$el];\n      if (this.$refs.content) result.push(this.$refs.content);\n      if (this.overlay) result.push(this.overlay.$el);\n      result.push(...this.getOpenDependentElements());\n      return result;\n    }\n\n  }\n});\n//# sourceMappingURL=index.js.map","const debug = require('debug')('feathers:application');\nconst { stripSlashes } = require('@feathersjs/commons');\n\nconst Uberproto = require('uberproto');\nconst events = require('./events');\nconst hooks = require('./hooks');\nconst version = require('./version');\n\nconst Proto = Uberproto.extend({\n  create: null\n});\n\nconst application = {\n  init () {\n    Object.assign(this, {\n      version,\n      methods: [\n        'find', 'get', 'create', 'update', 'patch', 'remove'\n      ],\n      mixins: [],\n      services: {},\n      providers: [],\n      _setup: false,\n      settings: {}\n    });\n\n    this.configure(hooks());\n    this.configure(events());\n  },\n\n  get (name) {\n    return this.settings[name];\n  },\n\n  set (name, value) {\n    this.settings[name] = value;\n    return this;\n  },\n\n  disable (name) {\n    this.settings[name] = false;\n    return this;\n  },\n\n  disabled (name) {\n    return !this.settings[name];\n  },\n\n  enable (name) {\n    this.settings[name] = true;\n    return this;\n  },\n\n  enabled (name) {\n    return !!this.settings[name];\n  },\n\n  configure (fn) {\n    fn.call(this, this);\n\n    return this;\n  },\n\n  service (path, service) {\n    if (typeof service !== 'undefined') {\n      throw new Error('Registering a new service with `app.service(path, service)` is no longer supported. Use `app.use(path, service)` instead.');\n    }\n\n    const location = stripSlashes(path) || '/';\n    const current = this.services[location];\n\n    if (typeof current === 'undefined' && typeof this.defaultService === 'function') {\n      return this.use(location, this.defaultService(location))\n        .service(location);\n    }\n\n    return current;\n  },\n\n  use (path, service, options = {}) {\n    if (typeof path !== 'string') {\n      throw new Error(`'${path}' is not a valid service path.`);\n    }\n\n    const location = stripSlashes(path) || '/';\n    const isSubApp = typeof service.service === 'function' && service.services;\n    const isService = this.methods.concat('setup').some(name => typeof service[name] === 'function');\n\n    if (isSubApp) {\n      const subApp = service;\n\n      Object.keys(subApp.services).forEach(subPath =>\n        this.use(`${location}/${subPath}`, subApp.service(subPath))\n      );\n\n      return this;\n    }\n\n    if (!isService) {\n      throw new Error(`Invalid service object passed for path \\`${location}\\``);\n    }\n\n    // If the service is already Uberproto'd use it directly\n    const protoService = Proto.isPrototypeOf(service) ? service : Proto.extend(service);\n\n    debug(`Registering new service at \\`${location}\\``);\n\n    // Add all the mixins\n    this.mixins.forEach(fn => fn.call(this, protoService, location, options));\n\n    if (typeof protoService._setup === 'function') {\n      protoService._setup(this, location);\n    }\n\n    // Run the provider functions to register the service\n    this.providers.forEach(provider =>\n      provider.call(this, protoService, location, options)\n    );\n\n    // If we ran setup already, set this service up explicitly\n    if (this._isSetup && typeof protoService.setup === 'function') {\n      debug(`Setting up service for \\`${location}\\``);\n      protoService.setup(this, location);\n    }\n\n    this.services[location] = protoService;\n\n    return this;\n  },\n\n  setup () {\n    // Setup each service (pass the app so that they can look up other services etc.)\n    Object.keys(this.services).forEach(path => {\n      const service = this.services[path];\n\n      debug(`Setting up service for \\`${path}\\``);\n\n      if (typeof service.setup === 'function') {\n        service.setup(this, path);\n      }\n    });\n\n    this._isSetup = true;\n\n    return this;\n  }\n};\n\nmodule.exports = application;\n","var baseClone = require('./_baseClone');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\nfunction clone(value) {\n  return baseClone(value, CLONE_SYMBOLS_FLAG);\n}\n\nmodule.exports = clone;\n","// Components\nimport VSimpleCheckbox from '../VCheckbox/VSimpleCheckbox';\nimport VDivider from '../VDivider';\nimport VSubheader from '../VSubheader';\nimport { VList, VListItem, VListItemAction, VListItemContent, VListItemTitle } from '../VList'; // Directives\n\nimport ripple from '../../directives/ripple'; // Mixins\n\nimport Colorable from '../../mixins/colorable';\nimport Themeable from '../../mixins/themeable'; // Helpers\n\nimport { escapeHTML, getPropertyFromItem } from '../../util/helpers'; // Types\n\nimport mixins from '../../util/mixins';\n/* @vue/component */\n\nexport default mixins(Colorable, Themeable).extend({\n  name: 'v-select-list',\n  // https://github.com/vuejs/vue/issues/6872\n  directives: {\n    ripple\n  },\n  props: {\n    action: Boolean,\n    dense: Boolean,\n    hideSelected: Boolean,\n    items: {\n      type: Array,\n      default: () => []\n    },\n    itemDisabled: {\n      type: [String, Array, Function],\n      default: 'disabled'\n    },\n    itemText: {\n      type: [String, Array, Function],\n      default: 'text'\n    },\n    itemValue: {\n      type: [String, Array, Function],\n      default: 'value'\n    },\n    noDataText: String,\n    noFilter: Boolean,\n    searchInput: null,\n    selectedItems: {\n      type: Array,\n      default: () => []\n    }\n  },\n  computed: {\n    parsedItems() {\n      return this.selectedItems.map(item => this.getValue(item));\n    },\n\n    tileActiveClass() {\n      return Object.keys(this.setTextColor(this.color).class || {}).join(' ');\n    },\n\n    staticNoDataTile() {\n      const tile = {\n        attrs: {\n          role: undefined\n        },\n        on: {\n          mousedown: e => e.preventDefault()\n        }\n      };\n      return this.$createElement(VListItem, tile, [this.genTileContent(this.noDataText)]);\n    }\n\n  },\n  methods: {\n    genAction(item, inputValue) {\n      return this.$createElement(VListItemAction, [this.$createElement(VSimpleCheckbox, {\n        props: {\n          color: this.color,\n          value: inputValue,\n          ripple: false\n        },\n        on: {\n          input: () => this.$emit('select', item)\n        }\n      })]);\n    },\n\n    genDivider(props) {\n      return this.$createElement(VDivider, {\n        props\n      });\n    },\n\n    genFilteredText(text) {\n      text = text || '';\n      if (!this.searchInput || this.noFilter) return escapeHTML(text);\n      const {\n        start,\n        middle,\n        end\n      } = this.getMaskedCharacters(text);\n      return `${escapeHTML(start)}${this.genHighlight(middle)}${escapeHTML(end)}`;\n    },\n\n    genHeader(props) {\n      return this.$createElement(VSubheader, {\n        props\n      }, props.header);\n    },\n\n    genHighlight(text) {\n      return `<span class=\"v-list-item__mask\">${escapeHTML(text)}</span>`;\n    },\n\n    getMaskedCharacters(text) {\n      const searchInput = (this.searchInput || '').toString().toLocaleLowerCase();\n      const index = text.toLocaleLowerCase().indexOf(searchInput);\n      if (index < 0) return {\n        start: text,\n        middle: '',\n        end: ''\n      };\n      const start = text.slice(0, index);\n      const middle = text.slice(index, index + searchInput.length);\n      const end = text.slice(index + searchInput.length);\n      return {\n        start,\n        middle,\n        end\n      };\n    },\n\n    genTile({\n      item,\n      index,\n      disabled = null,\n      value = false\n    }) {\n      if (!value) value = this.hasItem(item);\n\n      if (item === Object(item)) {\n        disabled = disabled !== null ? disabled : this.getDisabled(item);\n      }\n\n      const tile = {\n        attrs: {\n          // Default behavior in list does not\n          // contain aria-selected by default\n          'aria-selected': String(value),\n          id: `list-item-${this._uid}-${index}`,\n          role: 'option'\n        },\n        on: {\n          mousedown: e => {\n            // Prevent onBlur from being called\n            e.preventDefault();\n          },\n          click: () => disabled || this.$emit('select', item)\n        },\n        props: {\n          activeClass: this.tileActiveClass,\n          disabled,\n          ripple: true,\n          inputValue: value\n        }\n      };\n\n      if (!this.$scopedSlots.item) {\n        return this.$createElement(VListItem, tile, [this.action && !this.hideSelected && this.items.length > 0 ? this.genAction(item, value) : null, this.genTileContent(item, index)]);\n      }\n\n      const parent = this;\n      const scopedSlot = this.$scopedSlots.item({\n        parent,\n        item,\n        attrs: { ...tile.attrs,\n          ...tile.props\n        },\n        on: tile.on\n      });\n      return this.needsTile(scopedSlot) ? this.$createElement(VListItem, tile, scopedSlot) : scopedSlot;\n    },\n\n    genTileContent(item, index = 0) {\n      const innerHTML = this.genFilteredText(this.getText(item));\n      return this.$createElement(VListItemContent, [this.$createElement(VListItemTitle, {\n        domProps: {\n          innerHTML\n        }\n      })]);\n    },\n\n    hasItem(item) {\n      return this.parsedItems.indexOf(this.getValue(item)) > -1;\n    },\n\n    needsTile(slot) {\n      return slot.length !== 1 || slot[0].componentOptions == null || slot[0].componentOptions.Ctor.options.name !== 'v-list-item';\n    },\n\n    getDisabled(item) {\n      return Boolean(getPropertyFromItem(item, this.itemDisabled, false));\n    },\n\n    getText(item) {\n      return String(getPropertyFromItem(item, this.itemText, item));\n    },\n\n    getValue(item) {\n      return getPropertyFromItem(item, this.itemValue, this.getText(item));\n    }\n\n  },\n\n  render() {\n    const children = [];\n    const itemsLength = this.items.length;\n\n    for (let index = 0; index < itemsLength; index++) {\n      const item = this.items[index];\n      if (this.hideSelected && this.hasItem(item)) continue;\n      if (item == null) children.push(this.genTile({\n        item,\n        index\n      }));else if (item.header) children.push(this.genHeader(item));else if (item.divider) children.push(this.genDivider(item));else children.push(this.genTile({\n        item,\n        index\n      }));\n    }\n\n    children.length || children.push(this.$slots['no-data'] || this.staticNoDataTile);\n    this.$slots['prepend-item'] && children.unshift(this.$slots['prepend-item']);\n    this.$slots['append-item'] && children.push(this.$slots['append-item']);\n    return this.$createElement(VList, {\n      staticClass: 'v-select-list',\n      class: this.themeClasses,\n      attrs: {\n        role: 'listbox',\n        tabindex: -1\n      },\n      props: {\n        dense: this.dense\n      }\n    }, children);\n  }\n\n});\n//# sourceMappingURL=VSelectList.js.map","import Vue from 'vue';\n/* @vue/component */\n\nexport default Vue.extend({\n  name: 'filterable',\n  props: {\n    noDataText: {\n      type: String,\n      default: '$vuetify.noDataText'\n    }\n  }\n});\n//# sourceMappingURL=index.js.map","// Styles\nimport \"../../../src/components/VTextField/VTextField.sass\";\nimport \"../../../src/components/VSelect/VSelect.sass\"; // Components\n\nimport VChip from '../VChip';\nimport VMenu from '../VMenu';\nimport VSelectList from './VSelectList'; // Extensions\n\nimport VInput from '../VInput';\nimport VTextField from '../VTextField/VTextField'; // Mixins\n\nimport Comparable from '../../mixins/comparable';\nimport Dependent from '../../mixins/dependent';\nimport Filterable from '../../mixins/filterable'; // Directives\n\nimport ClickOutside from '../../directives/click-outside'; // Utilities\n\nimport mergeData from '../../util/mergeData';\nimport { getPropertyFromItem, getObjectValueByPath, keyCodes } from '../../util/helpers';\nimport { consoleError } from '../../util/console'; // Types\n\nimport mixins from '../../util/mixins';\nexport const defaultMenuProps = {\n  closeOnClick: false,\n  closeOnContentClick: false,\n  disableKeys: true,\n  openOnClick: false,\n  maxHeight: 304\n}; // Types\n\nconst baseMixins = mixins(VTextField, Comparable, Dependent, Filterable);\n/* @vue/component */\n\nexport default baseMixins.extend().extend({\n  name: 'v-select',\n  directives: {\n    ClickOutside\n  },\n  props: {\n    appendIcon: {\n      type: String,\n      default: '$dropdown'\n    },\n    attach: {\n      type: null,\n      default: false\n    },\n    cacheItems: Boolean,\n    chips: Boolean,\n    clearable: Boolean,\n    deletableChips: Boolean,\n    disableLookup: Boolean,\n    eager: Boolean,\n    hideSelected: Boolean,\n    items: {\n      type: Array,\n      default: () => []\n    },\n    itemColor: {\n      type: String,\n      default: 'primary'\n    },\n    itemDisabled: {\n      type: [String, Array, Function],\n      default: 'disabled'\n    },\n    itemText: {\n      type: [String, Array, Function],\n      default: 'text'\n    },\n    itemValue: {\n      type: [String, Array, Function],\n      default: 'value'\n    },\n    menuProps: {\n      type: [String, Array, Object],\n      default: () => defaultMenuProps\n    },\n    multiple: Boolean,\n    openOnClear: Boolean,\n    returnObject: Boolean,\n    smallChips: Boolean\n  },\n\n  data() {\n    return {\n      cachedItems: this.cacheItems ? this.items : [],\n      menuIsBooted: false,\n      isMenuActive: false,\n      lastItem: 20,\n      // As long as a value is defined, show it\n      // Otherwise, check if multiple\n      // to determine which default to provide\n      lazyValue: this.value !== undefined ? this.value : this.multiple ? [] : undefined,\n      selectedIndex: -1,\n      selectedItems: [],\n      keyboardLookupPrefix: '',\n      keyboardLookupLastTime: 0\n    };\n  },\n\n  computed: {\n    /* All items that the select has */\n    allItems() {\n      return this.filterDuplicates(this.cachedItems.concat(this.items));\n    },\n\n    classes() {\n      return { ...VTextField.options.computed.classes.call(this),\n        'v-select': true,\n        'v-select--chips': this.hasChips,\n        'v-select--chips--small': this.smallChips,\n        'v-select--is-menu-active': this.isMenuActive,\n        'v-select--is-multi': this.multiple\n      };\n    },\n\n    /* Used by other components to overwrite */\n    computedItems() {\n      return this.allItems;\n    },\n\n    computedOwns() {\n      return `list-${this._uid}`;\n    },\n\n    computedCounterValue() {\n      const value = this.multiple ? this.selectedItems : (this.getText(this.selectedItems[0]) || '').toString();\n\n      if (typeof this.counterValue === 'function') {\n        return this.counterValue(value);\n      }\n\n      return value.length;\n    },\n\n    directives() {\n      return this.isFocused ? [{\n        name: 'click-outside',\n        value: {\n          handler: this.blur,\n          closeConditional: this.closeConditional,\n          include: () => this.getOpenDependentElements()\n        }\n      }] : undefined;\n    },\n\n    dynamicHeight() {\n      return 'auto';\n    },\n\n    hasChips() {\n      return this.chips || this.smallChips;\n    },\n\n    hasSlot() {\n      return Boolean(this.hasChips || this.$scopedSlots.selection);\n    },\n\n    isDirty() {\n      return this.selectedItems.length > 0;\n    },\n\n    listData() {\n      const scopeId = this.$vnode && this.$vnode.context.$options._scopeId;\n      const attrs = scopeId ? {\n        [scopeId]: true\n      } : {};\n      return {\n        attrs: { ...attrs,\n          id: this.computedOwns\n        },\n        props: {\n          action: this.multiple,\n          color: this.itemColor,\n          dense: this.dense,\n          hideSelected: this.hideSelected,\n          items: this.virtualizedItems,\n          itemDisabled: this.itemDisabled,\n          itemText: this.itemText,\n          itemValue: this.itemValue,\n          noDataText: this.$vuetify.lang.t(this.noDataText),\n          selectedItems: this.selectedItems\n        },\n        on: {\n          select: this.selectItem\n        },\n        scopedSlots: {\n          item: this.$scopedSlots.item\n        }\n      };\n    },\n\n    staticList() {\n      if (this.$slots['no-data'] || this.$slots['prepend-item'] || this.$slots['append-item']) {\n        consoleError('assert: staticList should not be called if slots are used');\n      }\n\n      return this.$createElement(VSelectList, this.listData);\n    },\n\n    virtualizedItems() {\n      return this.$_menuProps.auto ? this.computedItems : this.computedItems.slice(0, this.lastItem);\n    },\n\n    menuCanShow: () => true,\n\n    $_menuProps() {\n      let normalisedProps = typeof this.menuProps === 'string' ? this.menuProps.split(',') : this.menuProps;\n\n      if (Array.isArray(normalisedProps)) {\n        normalisedProps = normalisedProps.reduce((acc, p) => {\n          acc[p.trim()] = true;\n          return acc;\n        }, {});\n      }\n\n      return { ...defaultMenuProps,\n        eager: this.eager,\n        value: this.menuCanShow && this.isMenuActive,\n        nudgeBottom: normalisedProps.offsetY ? 1 : 0,\n        ...normalisedProps\n      };\n    }\n\n  },\n  watch: {\n    internalValue(val) {\n      this.initialValue = val;\n      this.setSelectedItems();\n    },\n\n    isMenuActive(val) {\n      window.setTimeout(() => this.onMenuActiveChange(val));\n    },\n\n    items: {\n      immediate: true,\n\n      handler(val) {\n        if (this.cacheItems) {\n          // Breaks vue-test-utils if\n          // this isn't calculated\n          // on the next tick\n          this.$nextTick(() => {\n            this.cachedItems = this.filterDuplicates(this.cachedItems.concat(val));\n          });\n        }\n\n        this.setSelectedItems();\n      }\n\n    }\n  },\n  methods: {\n    /** @public */\n    blur(e) {\n      VTextField.options.methods.blur.call(this, e);\n      this.isMenuActive = false;\n      this.isFocused = false;\n      this.selectedIndex = -1;\n      this.setMenuIndex(-1);\n    },\n\n    /** @public */\n    activateMenu() {\n      if (!this.isInteractive || this.isMenuActive) return;\n      this.isMenuActive = true;\n    },\n\n    clearableCallback() {\n      this.setValue(this.multiple ? [] : null);\n      this.setMenuIndex(-1);\n      this.$nextTick(() => this.$refs.input && this.$refs.input.focus());\n      if (this.openOnClear) this.isMenuActive = true;\n    },\n\n    closeConditional(e) {\n      if (!this.isMenuActive) return true;\n      return !this._isDestroyed && ( // Click originates from outside the menu content\n      // Multiple selects don't close when an item is clicked\n      !this.getContent() || !this.getContent().contains(e.target)) && // Click originates from outside the element\n      this.$el && !this.$el.contains(e.target) && e.target !== this.$el;\n    },\n\n    filterDuplicates(arr) {\n      const uniqueValues = new Map();\n\n      for (let index = 0; index < arr.length; ++index) {\n        const item = arr[index]; // Do not deduplicate headers or dividers (#12517)\n\n        if (item.header || item.divider) {\n          uniqueValues.set(item, item);\n          continue;\n        }\n\n        const val = this.getValue(item); // TODO: comparator\n\n        !uniqueValues.has(val) && uniqueValues.set(val, item);\n      }\n\n      return Array.from(uniqueValues.values());\n    },\n\n    findExistingIndex(item) {\n      const itemValue = this.getValue(item);\n      return (this.internalValue || []).findIndex(i => this.valueComparator(this.getValue(i), itemValue));\n    },\n\n    getContent() {\n      return this.$refs.menu && this.$refs.menu.$refs.content;\n    },\n\n    genChipSelection(item, index) {\n      const isDisabled = this.isDisabled || this.getDisabled(item);\n      const isInteractive = !isDisabled && this.isInteractive;\n      return this.$createElement(VChip, {\n        staticClass: 'v-chip--select',\n        attrs: {\n          tabindex: -1\n        },\n        props: {\n          close: this.deletableChips && isInteractive,\n          disabled: isDisabled,\n          inputValue: index === this.selectedIndex,\n          small: this.smallChips\n        },\n        on: {\n          click: e => {\n            if (!isInteractive) return;\n            e.stopPropagation();\n            this.selectedIndex = index;\n          },\n          'click:close': () => this.onChipInput(item)\n        },\n        key: JSON.stringify(this.getValue(item))\n      }, this.getText(item));\n    },\n\n    genCommaSelection(item, index, last) {\n      const color = index === this.selectedIndex && this.computedColor;\n      const isDisabled = this.isDisabled || this.getDisabled(item);\n      return this.$createElement('div', this.setTextColor(color, {\n        staticClass: 'v-select__selection v-select__selection--comma',\n        class: {\n          'v-select__selection--disabled': isDisabled\n        },\n        key: JSON.stringify(this.getValue(item))\n      }), `${this.getText(item)}${last ? '' : ', '}`);\n    },\n\n    genDefaultSlot() {\n      const selections = this.genSelections();\n      const input = this.genInput(); // If the return is an empty array\n      // push the input\n\n      if (Array.isArray(selections)) {\n        selections.push(input); // Otherwise push it into children\n      } else {\n        selections.children = selections.children || [];\n        selections.children.push(input);\n      }\n\n      return [this.genFieldset(), this.$createElement('div', {\n        staticClass: 'v-select__slot',\n        directives: this.directives\n      }, [this.genLabel(), this.prefix ? this.genAffix('prefix') : null, selections, this.suffix ? this.genAffix('suffix') : null, this.genClearIcon(), this.genIconSlot(), this.genHiddenInput()]), this.genMenu(), this.genProgress()];\n    },\n\n    genIcon(type, cb, extraData) {\n      const icon = VInput.options.methods.genIcon.call(this, type, cb, extraData);\n\n      if (type === 'append') {\n        // Don't allow the dropdown icon to be focused\n        icon.children[0].data = mergeData(icon.children[0].data, {\n          attrs: {\n            tabindex: icon.children[0].componentOptions.listeners && '-1',\n            'aria-hidden': 'true',\n            'aria-label': undefined\n          }\n        });\n      }\n\n      return icon;\n    },\n\n    genInput() {\n      const input = VTextField.options.methods.genInput.call(this);\n      delete input.data.attrs.name;\n      input.data = mergeData(input.data, {\n        domProps: {\n          value: null\n        },\n        attrs: {\n          readonly: true,\n          type: 'text',\n          'aria-readonly': String(this.isReadonly),\n          'aria-activedescendant': getObjectValueByPath(this.$refs.menu, 'activeTile.id'),\n          autocomplete: getObjectValueByPath(input.data, 'attrs.autocomplete', 'off'),\n          placeholder: !this.isDirty && (this.persistentPlaceholder || this.isFocused || !this.hasLabel) ? this.placeholder : undefined\n        },\n        on: {\n          keypress: this.onKeyPress\n        }\n      });\n      return input;\n    },\n\n    genHiddenInput() {\n      return this.$createElement('input', {\n        domProps: {\n          value: this.lazyValue\n        },\n        attrs: {\n          type: 'hidden',\n          name: this.attrs$.name\n        }\n      });\n    },\n\n    genInputSlot() {\n      const render = VTextField.options.methods.genInputSlot.call(this);\n      render.data.attrs = { ...render.data.attrs,\n        role: 'button',\n        'aria-haspopup': 'listbox',\n        'aria-expanded': String(this.isMenuActive),\n        'aria-owns': this.computedOwns\n      };\n      return render;\n    },\n\n    genList() {\n      // If there's no slots, we can use a cached VNode to improve performance\n      if (this.$slots['no-data'] || this.$slots['prepend-item'] || this.$slots['append-item']) {\n        return this.genListWithSlot();\n      } else {\n        return this.staticList;\n      }\n    },\n\n    genListWithSlot() {\n      const slots = ['prepend-item', 'no-data', 'append-item'].filter(slotName => this.$slots[slotName]).map(slotName => this.$createElement('template', {\n        slot: slotName\n      }, this.$slots[slotName])); // Requires destructuring due to Vue\n      // modifying the `on` property when passed\n      // as a referenced object\n\n      return this.$createElement(VSelectList, { ...this.listData\n      }, slots);\n    },\n\n    genMenu() {\n      const props = this.$_menuProps;\n      props.activator = this.$refs['input-slot']; // Attach to root el so that\n      // menu covers prepend/append icons\n\n      if ( // TODO: make this a computed property or helper or something\n      this.attach === '' || // If used as a boolean prop (<v-menu attach>)\n      this.attach === true || // If bound to a boolean (<v-menu :attach=\"true\">)\n      this.attach === 'attach' // If bound as boolean prop in pug (v-menu(attach))\n      ) {\n          props.attach = this.$el;\n        } else {\n        props.attach = this.attach;\n      }\n\n      return this.$createElement(VMenu, {\n        attrs: {\n          role: undefined\n        },\n        props,\n        on: {\n          input: val => {\n            this.isMenuActive = val;\n            this.isFocused = val;\n          },\n          scroll: this.onScroll\n        },\n        ref: 'menu'\n      }, [this.genList()]);\n    },\n\n    genSelections() {\n      let length = this.selectedItems.length;\n      const children = new Array(length);\n      let genSelection;\n\n      if (this.$scopedSlots.selection) {\n        genSelection = this.genSlotSelection;\n      } else if (this.hasChips) {\n        genSelection = this.genChipSelection;\n      } else {\n        genSelection = this.genCommaSelection;\n      }\n\n      while (length--) {\n        children[length] = genSelection(this.selectedItems[length], length, length === children.length - 1);\n      }\n\n      return this.$createElement('div', {\n        staticClass: 'v-select__selections'\n      }, children);\n    },\n\n    genSlotSelection(item, index) {\n      return this.$scopedSlots.selection({\n        attrs: {\n          class: 'v-chip--select'\n        },\n        parent: this,\n        item,\n        index,\n        select: e => {\n          e.stopPropagation();\n          this.selectedIndex = index;\n        },\n        selected: index === this.selectedIndex,\n        disabled: !this.isInteractive\n      });\n    },\n\n    getMenuIndex() {\n      return this.$refs.menu ? this.$refs.menu.listIndex : -1;\n    },\n\n    getDisabled(item) {\n      return getPropertyFromItem(item, this.itemDisabled, false);\n    },\n\n    getText(item) {\n      return getPropertyFromItem(item, this.itemText, item);\n    },\n\n    getValue(item) {\n      return getPropertyFromItem(item, this.itemValue, this.getText(item));\n    },\n\n    onBlur(e) {\n      e && this.$emit('blur', e);\n    },\n\n    onChipInput(item) {\n      if (this.multiple) this.selectItem(item);else this.setValue(null); // If all items have been deleted,\n      // open `v-menu`\n\n      if (this.selectedItems.length === 0) {\n        this.isMenuActive = true;\n      } else {\n        this.isMenuActive = false;\n      }\n\n      this.selectedIndex = -1;\n    },\n\n    onClick(e) {\n      if (!this.isInteractive) return;\n\n      if (!this.isAppendInner(e.target)) {\n        this.isMenuActive = true;\n      }\n\n      if (!this.isFocused) {\n        this.isFocused = true;\n        this.$emit('focus');\n      }\n\n      this.$emit('click', e);\n    },\n\n    onEscDown(e) {\n      e.preventDefault();\n\n      if (this.isMenuActive) {\n        e.stopPropagation();\n        this.isMenuActive = false;\n      }\n    },\n\n    onKeyPress(e) {\n      if (this.multiple || !this.isInteractive || this.disableLookup) return;\n      const KEYBOARD_LOOKUP_THRESHOLD = 1000; // milliseconds\n\n      const now = performance.now();\n\n      if (now - this.keyboardLookupLastTime > KEYBOARD_LOOKUP_THRESHOLD) {\n        this.keyboardLookupPrefix = '';\n      }\n\n      this.keyboardLookupPrefix += e.key.toLowerCase();\n      this.keyboardLookupLastTime = now;\n      const index = this.allItems.findIndex(item => {\n        const text = (this.getText(item) || '').toString();\n        return text.toLowerCase().startsWith(this.keyboardLookupPrefix);\n      });\n      const item = this.allItems[index];\n\n      if (index !== -1) {\n        this.lastItem = Math.max(this.lastItem, index + 5);\n        this.setValue(this.returnObject ? item : this.getValue(item));\n        this.$nextTick(() => this.$refs.menu.getTiles());\n        setTimeout(() => this.setMenuIndex(index));\n      }\n    },\n\n    onKeyDown(e) {\n      if (this.isReadonly && e.keyCode !== keyCodes.tab) return;\n      const keyCode = e.keyCode;\n      const menu = this.$refs.menu;\n      this.$emit('keydown', e);\n      if (!menu) return; // If menu is active, allow default\n      // listIndex change from menu\n\n      if (this.isMenuActive && [keyCodes.up, keyCodes.down, keyCodes.home, keyCodes.end, keyCodes.enter].includes(keyCode)) {\n        this.$nextTick(() => {\n          menu.changeListIndex(e);\n          this.$emit('update:list-index', menu.listIndex);\n        });\n      } // If enter, space, open menu\n\n\n      if ([keyCodes.enter, keyCodes.space].includes(keyCode)) this.activateMenu(); // If menu is not active, up/down/home/end can do\n      // one of 2 things. If multiple, opens the\n      // menu, if not, will cycle through all\n      // available options\n\n      if (!this.isMenuActive && [keyCodes.up, keyCodes.down, keyCodes.home, keyCodes.end].includes(keyCode)) return this.onUpDown(e); // If escape deactivate the menu\n\n      if (keyCode === keyCodes.esc) return this.onEscDown(e); // If tab - select item or close menu\n\n      if (keyCode === keyCodes.tab) return this.onTabDown(e); // If space preventDefault\n\n      if (keyCode === keyCodes.space) return this.onSpaceDown(e);\n    },\n\n    onMenuActiveChange(val) {\n      // If menu is closing and mulitple\n      // or menuIndex is already set\n      // skip menu index recalculation\n      if (this.multiple && !val || this.getMenuIndex() > -1) return;\n      const menu = this.$refs.menu;\n      if (!menu || !this.isDirty) return; // When menu opens, set index of first active item\n\n      this.$refs.menu.getTiles();\n\n      for (let i = 0; i < menu.tiles.length; i++) {\n        if (menu.tiles[i].getAttribute('aria-selected') === 'true') {\n          this.setMenuIndex(i);\n          break;\n        }\n      }\n    },\n\n    onMouseUp(e) {\n      // eslint-disable-next-line sonarjs/no-collapsible-if\n      if (this.hasMouseDown && e.which !== 3 && this.isInteractive) {\n        // If append inner is present\n        // and the target is itself\n        // or inside, toggle menu\n        if (this.isAppendInner(e.target)) {\n          this.$nextTick(() => this.isMenuActive = !this.isMenuActive);\n        }\n      }\n\n      VTextField.options.methods.onMouseUp.call(this, e);\n    },\n\n    onScroll() {\n      if (!this.isMenuActive) {\n        requestAnimationFrame(() => this.getContent().scrollTop = 0);\n      } else {\n        if (this.lastItem > this.computedItems.length) return;\n        const showMoreItems = this.getContent().scrollHeight - (this.getContent().scrollTop + this.getContent().clientHeight) < 200;\n\n        if (showMoreItems) {\n          this.lastItem += 20;\n        }\n      }\n    },\n\n    onSpaceDown(e) {\n      e.preventDefault();\n    },\n\n    onTabDown(e) {\n      const menu = this.$refs.menu;\n      if (!menu) return;\n      const activeTile = menu.activeTile; // An item that is selected by\n      // menu-index should toggled\n\n      if (!this.multiple && activeTile && this.isMenuActive) {\n        e.preventDefault();\n        e.stopPropagation();\n        activeTile.click();\n      } else {\n        // If we make it here,\n        // the user has no selected indexes\n        // and is probably tabbing out\n        this.blur(e);\n      }\n    },\n\n    onUpDown(e) {\n      const menu = this.$refs.menu;\n      if (!menu) return;\n      e.preventDefault(); // Multiple selects do not cycle their value\n      // when pressing up or down, instead activate\n      // the menu\n\n      if (this.multiple) return this.activateMenu();\n      const keyCode = e.keyCode; // Cycle through available values to achieve\n      // select native behavior\n\n      menu.isBooted = true;\n      window.requestAnimationFrame(() => {\n        menu.getTiles();\n        if (!menu.hasClickableTiles) return this.activateMenu();\n\n        switch (keyCode) {\n          case keyCodes.up:\n            menu.prevTile();\n            break;\n\n          case keyCodes.down:\n            menu.nextTile();\n            break;\n\n          case keyCodes.home:\n            menu.firstTile();\n            break;\n\n          case keyCodes.end:\n            menu.lastTile();\n            break;\n        }\n\n        this.selectItem(this.allItems[this.getMenuIndex()]);\n      });\n    },\n\n    selectItem(item) {\n      if (!this.multiple) {\n        this.setValue(this.returnObject ? item : this.getValue(item));\n        this.isMenuActive = false;\n      } else {\n        const internalValue = (this.internalValue || []).slice();\n        const i = this.findExistingIndex(item);\n        i !== -1 ? internalValue.splice(i, 1) : internalValue.push(item);\n        this.setValue(internalValue.map(i => {\n          return this.returnObject ? i : this.getValue(i);\n        })); // When selecting multiple\n        // adjust menu after each\n        // selection\n\n        this.$nextTick(() => {\n          this.$refs.menu && this.$refs.menu.updateDimensions();\n        }); // There is no item to re-highlight\n        // when selections are hidden\n\n        if (this.hideSelected) {\n          this.setMenuIndex(-1);\n        } else {\n          const index = this.allItems.indexOf(item);\n\n          if (~index) {\n            this.$nextTick(() => this.$refs.menu.getTiles());\n            setTimeout(() => this.setMenuIndex(index));\n          }\n        }\n      }\n    },\n\n    setMenuIndex(index) {\n      this.$refs.menu && (this.$refs.menu.listIndex = index);\n    },\n\n    setSelectedItems() {\n      const selectedItems = [];\n      const values = !this.multiple || !Array.isArray(this.internalValue) ? [this.internalValue] : this.internalValue;\n\n      for (const value of values) {\n        const index = this.allItems.findIndex(v => this.valueComparator(this.getValue(v), this.getValue(value)));\n\n        if (index > -1) {\n          selectedItems.push(this.allItems[index]);\n        }\n      }\n\n      this.selectedItems = selectedItems;\n    },\n\n    setValue(value) {\n      if (!this.valueComparator(value, this.internalValue)) {\n        this.internalValue = value;\n        this.$emit('change', value);\n      }\n    },\n\n    isAppendInner(target) {\n      // return true if append inner is present\n      // and the target is itself or inside\n      const appendInner = this.$refs['append-inner'];\n      return appendInner && (appendInner === target || appendInner.contains(target));\n    }\n\n  }\n});\n//# sourceMappingURL=VSelect.js.map","'use strict';\nvar $export = require('./_export');\nvar toObject = require('./_to-object');\nvar toPrimitive = require('./_to-primitive');\nvar getPrototypeOf = require('./_object-gpo');\nvar getOwnPropertyDescriptor = require('./_object-gopd').f;\n\n// B.2.2.4 Object.prototype.__lookupGetter__(P)\nrequire('./_descriptors') && $export($export.P + require('./_object-forced-pam'), 'Object', {\n  __lookupGetter__: function __lookupGetter__(P) {\n    var O = toObject(this);\n    var K = toPrimitive(P, true);\n    var D;\n    do {\n      if (D = getOwnPropertyDescriptor(O, K)) return D.get;\n    } while (O = getPrototypeOf(O));\n  }\n});\n","// Styles\nimport \"../../../src/components/VLabel/VLabel.sass\"; // Mixins\n\nimport Colorable from '../../mixins/colorable';\nimport Themeable, { functionalThemeClasses } from '../../mixins/themeable';\nimport mixins from '../../util/mixins'; // Helpers\n\nimport { convertToUnit } from '../../util/helpers';\n/* @vue/component */\n\nexport default mixins(Themeable).extend({\n  name: 'v-label',\n  functional: true,\n  props: {\n    absolute: Boolean,\n    color: {\n      type: String,\n      default: 'primary'\n    },\n    disabled: Boolean,\n    focused: Boolean,\n    for: String,\n    left: {\n      type: [Number, String],\n      default: 0\n    },\n    right: {\n      type: [Number, String],\n      default: 'auto'\n    },\n    value: Boolean\n  },\n\n  render(h, ctx) {\n    const {\n      children,\n      listeners,\n      props\n    } = ctx;\n    const data = {\n      staticClass: 'v-label',\n      class: {\n        'v-label--active': props.value,\n        'v-label--is-disabled': props.disabled,\n        ...functionalThemeClasses(ctx)\n      },\n      attrs: {\n        for: props.for,\n        'aria-hidden': !props.for\n      },\n      on: listeners,\n      style: {\n        left: convertToUnit(props.left),\n        right: convertToUnit(props.right),\n        position: props.absolute ? 'absolute' : 'relative'\n      },\n      ref: 'label'\n    };\n    return h('label', Colorable.options.methods.setTextColor(props.focused && props.color, data), children);\n  }\n\n});\n//# sourceMappingURL=VLabel.js.map","import VLabel from './VLabel';\nexport { VLabel };\nexport default VLabel;\n//# sourceMappingURL=index.js.map","var baseMatches = require('./_baseMatches'),\n    baseMatchesProperty = require('./_baseMatchesProperty'),\n    identity = require('./identity'),\n    isArray = require('./isArray'),\n    property = require('./property');\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n  // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n  // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n  if (typeof value == 'function') {\n    return value;\n  }\n  if (value == null) {\n    return identity;\n  }\n  if (typeof value == 'object') {\n    return isArray(value)\n      ? baseMatchesProperty(value[0], value[1])\n      : baseMatches(value);\n  }\n  return property(value);\n}\n\nmodule.exports = baseIteratee;\n","var capitalize = require('./capitalize'),\n    createCompounder = require('./_createCompounder');\n\n/**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\nvar camelCase = createCompounder(function(result, word, index) {\n  word = word.toLowerCase();\n  return result + (index ? capitalize(word) : word);\n});\n\nmodule.exports = camelCase;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\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 * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n  var data = this.__data__;\n  if (nativeCreate) {\n    var result = data[key];\n    return result === HASH_UNDEFINED ? undefined : result;\n  }\n  return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","const VersionCheck = require('./version-check')\nconst Regex = require('./regex')\n\n/**\n * Numeric mode encodes data from the decimal digit set (0 - 9)\n * (byte values 30HEX to 39HEX).\n * Normally, 3 data characters are represented by 10 bits.\n *\n * @type {Object}\n */\nexports.NUMERIC = {\n  id: 'Numeric',\n  bit: 1 << 0,\n  ccBits: [10, 12, 14]\n}\n\n/**\n * Alphanumeric mode encodes data from a set of 45 characters,\n * i.e. 10 numeric digits (0 - 9),\n *      26 alphabetic characters (A - Z),\n *   and 9 symbols (SP, $, %, *, +, -, ., /, :).\n * Normally, two input characters are represented by 11 bits.\n *\n * @type {Object}\n */\nexports.ALPHANUMERIC = {\n  id: 'Alphanumeric',\n  bit: 1 << 1,\n  ccBits: [9, 11, 13]\n}\n\n/**\n * In byte mode, data is encoded at 8 bits per character.\n *\n * @type {Object}\n */\nexports.BYTE = {\n  id: 'Byte',\n  bit: 1 << 2,\n  ccBits: [8, 16, 16]\n}\n\n/**\n * The Kanji mode efficiently encodes Kanji characters in accordance with\n * the Shift JIS system based on JIS X 0208.\n * The Shift JIS values are shifted from the JIS X 0208 values.\n * JIS X 0208 gives details of the shift coded representation.\n * Each two-byte character value is compacted to a 13-bit binary codeword.\n *\n * @type {Object}\n */\nexports.KANJI = {\n  id: 'Kanji',\n  bit: 1 << 3,\n  ccBits: [8, 10, 12]\n}\n\n/**\n * Mixed mode will contain a sequences of data in a combination of any of\n * the modes described above\n *\n * @type {Object}\n */\nexports.MIXED = {\n  bit: -1\n}\n\n/**\n * Returns the number of bits needed to store the data length\n * according to QR Code specifications.\n *\n * @param  {Mode}   mode    Data mode\n * @param  {Number} version QR Code version\n * @return {Number}         Number of bits\n */\nexports.getCharCountIndicator = function getCharCountIndicator (mode, version) {\n  if (!mode.ccBits) throw new Error('Invalid mode: ' + mode)\n\n  if (!VersionCheck.isValid(version)) {\n    throw new Error('Invalid version: ' + version)\n  }\n\n  if (version >= 1 && version < 10) return mode.ccBits[0]\n  else if (version < 27) return mode.ccBits[1]\n  return mode.ccBits[2]\n}\n\n/**\n * Returns the most efficient mode to store the specified data\n *\n * @param  {String} dataStr Input data string\n * @return {Mode}           Best mode\n */\nexports.getBestModeForData = function getBestModeForData (dataStr) {\n  if (Regex.testNumeric(dataStr)) return exports.NUMERIC\n  else if (Regex.testAlphanumeric(dataStr)) return exports.ALPHANUMERIC\n  else if (Regex.testKanji(dataStr)) return exports.KANJI\n  else return exports.BYTE\n}\n\n/**\n * Return mode name as string\n *\n * @param {Mode} mode Mode object\n * @returns {String}  Mode name\n */\nexports.toString = function toString (mode) {\n  if (mode && mode.id) return mode.id\n  throw new Error('Invalid mode')\n}\n\n/**\n * Check if input param is a valid mode object\n *\n * @param   {Mode}    mode Mode object\n * @returns {Boolean} True if valid mode, false otherwise\n */\nexports.isValid = function isValid (mode) {\n  return mode && mode.bit && mode.ccBits\n}\n\n/**\n * Get mode object from its name\n *\n * @param   {String} string Mode name\n * @returns {Mode}          Mode object\n */\nfunction fromString (string) {\n  if (typeof string !== 'string') {\n    throw new Error('Param is not a string')\n  }\n\n  const lcStr = string.toLowerCase()\n\n  switch (lcStr) {\n    case 'numeric':\n      return exports.NUMERIC\n    case 'alphanumeric':\n      return exports.ALPHANUMERIC\n    case 'kanji':\n      return exports.KANJI\n    case 'byte':\n      return exports.BYTE\n    default:\n      throw new Error('Unknown mode: ' + string)\n  }\n}\n\n/**\n * Returns mode from a value.\n * If value is not a valid mode, returns defaultValue\n *\n * @param  {Mode|String} value        Encoding mode\n * @param  {Mode}        defaultValue Fallback value\n * @return {Mode}                     Encoding mode\n */\nexports.from = function from (value, defaultValue) {\n  if (exports.isValid(value)) {\n    return value\n  }\n\n  try {\n    return fromString(value)\n  } catch (e) {\n    return defaultValue\n  }\n}\n","var anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar newPromiseCapability = require('./_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","/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop() {\n  // No operation performed.\n}\n\nmodule.exports = noop;\n","// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n  if (it == undefined) throw TypeError(\"Can't call method on  \" + it);\n  return it;\n};\n","const Mode = require('./mode')\nconst NumericData = require('./numeric-data')\nconst AlphanumericData = require('./alphanumeric-data')\nconst ByteData = require('./byte-data')\nconst KanjiData = require('./kanji-data')\nconst Regex = require('./regex')\nconst Utils = require('./utils')\nconst dijkstra = require('dijkstrajs')\n\n/**\n * Returns UTF8 byte length\n *\n * @param  {String} str Input string\n * @return {Number}     Number of byte\n */\nfunction getStringByteLength (str) {\n  return unescape(encodeURIComponent(str)).length\n}\n\n/**\n * Get a list of segments of the specified mode\n * from a string\n *\n * @param  {Mode}   mode Segment mode\n * @param  {String} str  String to process\n * @return {Array}       Array of object with segments data\n */\nfunction getSegments (regex, mode, str) {\n  const segments = []\n  let result\n\n  while ((result = regex.exec(str)) !== null) {\n    segments.push({\n      data: result[0],\n      index: result.index,\n      mode: mode,\n      length: result[0].length\n    })\n  }\n\n  return segments\n}\n\n/**\n * Extracts a series of segments with the appropriate\n * modes from a string\n *\n * @param  {String} dataStr Input string\n * @return {Array}          Array of object with segments data\n */\nfunction getSegmentsFromString (dataStr) {\n  const numSegs = getSegments(Regex.NUMERIC, Mode.NUMERIC, dataStr)\n  const alphaNumSegs = getSegments(Regex.ALPHANUMERIC, Mode.ALPHANUMERIC, dataStr)\n  let byteSegs\n  let kanjiSegs\n\n  if (Utils.isKanjiModeEnabled()) {\n    byteSegs = getSegments(Regex.BYTE, Mode.BYTE, dataStr)\n    kanjiSegs = getSegments(Regex.KANJI, Mode.KANJI, dataStr)\n  } else {\n    byteSegs = getSegments(Regex.BYTE_KANJI, Mode.BYTE, dataStr)\n    kanjiSegs = []\n  }\n\n  const segs = numSegs.concat(alphaNumSegs, byteSegs, kanjiSegs)\n\n  return segs\n    .sort(function (s1, s2) {\n      return s1.index - s2.index\n    })\n    .map(function (obj) {\n      return {\n        data: obj.data,\n        mode: obj.mode,\n        length: obj.length\n      }\n    })\n}\n\n/**\n * Returns how many bits are needed to encode a string of\n * specified length with the specified mode\n *\n * @param  {Number} length String length\n * @param  {Mode} mode     Segment mode\n * @return {Number}        Bit length\n */\nfunction getSegmentBitsLength (length, mode) {\n  switch (mode) {\n    case Mode.NUMERIC:\n      return NumericData.getBitsLength(length)\n    case Mode.ALPHANUMERIC:\n      return AlphanumericData.getBitsLength(length)\n    case Mode.KANJI:\n      return KanjiData.getBitsLength(length)\n    case Mode.BYTE:\n      return ByteData.getBitsLength(length)\n  }\n}\n\n/**\n * Merges adjacent segments which have the same mode\n *\n * @param  {Array} segs Array of object with segments data\n * @return {Array}      Array of object with segments data\n */\nfunction mergeSegments (segs) {\n  return segs.reduce(function (acc, curr) {\n    const prevSeg = acc.length - 1 >= 0 ? acc[acc.length - 1] : null\n    if (prevSeg && prevSeg.mode === curr.mode) {\n      acc[acc.length - 1].data += curr.data\n      return acc\n    }\n\n    acc.push(curr)\n    return acc\n  }, [])\n}\n\n/**\n * Generates a list of all possible nodes combination which\n * will be used to build a segments graph.\n *\n * Nodes are divided by groups. Each group will contain a list of all the modes\n * in which is possible to encode the given text.\n *\n * For example the text '12345' can be encoded as Numeric, Alphanumeric or Byte.\n * The group for '12345' will contain then 3 objects, one for each\n * possible encoding mode.\n *\n * Each node represents a possible segment.\n *\n * @param  {Array} segs Array of object with segments data\n * @return {Array}      Array of object with segments data\n */\nfunction buildNodes (segs) {\n  const nodes = []\n  for (let i = 0; i < segs.length; i++) {\n    const seg = segs[i]\n\n    switch (seg.mode) {\n      case Mode.NUMERIC:\n        nodes.push([seg,\n          { data: seg.data, mode: Mode.ALPHANUMERIC, length: seg.length },\n          { data: seg.data, mode: Mode.BYTE, length: seg.length }\n        ])\n        break\n      case Mode.ALPHANUMERIC:\n        nodes.push([seg,\n          { data: seg.data, mode: Mode.BYTE, length: seg.length }\n        ])\n        break\n      case Mode.KANJI:\n        nodes.push([seg,\n          { data: seg.data, mode: Mode.BYTE, length: getStringByteLength(seg.data) }\n        ])\n        break\n      case Mode.BYTE:\n        nodes.push([\n          { data: seg.data, mode: Mode.BYTE, length: getStringByteLength(seg.data) }\n        ])\n    }\n  }\n\n  return nodes\n}\n\n/**\n * Builds a graph from a list of nodes.\n * All segments in each node group will be connected with all the segments of\n * the next group and so on.\n *\n * At each connection will be assigned a weight depending on the\n * segment's byte length.\n *\n * @param  {Array} nodes    Array of object with segments data\n * @param  {Number} version QR Code version\n * @return {Object}         Graph of all possible segments\n */\nfunction buildGraph (nodes, version) {\n  const table = {}\n  const graph = { start: {} }\n  let prevNodeIds = ['start']\n\n  for (let i = 0; i < nodes.length; i++) {\n    const nodeGroup = nodes[i]\n    const currentNodeIds = []\n\n    for (let j = 0; j < nodeGroup.length; j++) {\n      const node = nodeGroup[j]\n      const key = '' + i + j\n\n      currentNodeIds.push(key)\n      table[key] = { node: node, lastCount: 0 }\n      graph[key] = {}\n\n      for (let n = 0; n < prevNodeIds.length; n++) {\n        const prevNodeId = prevNodeIds[n]\n\n        if (table[prevNodeId] && table[prevNodeId].node.mode === node.mode) {\n          graph[prevNodeId][key] =\n            getSegmentBitsLength(table[prevNodeId].lastCount + node.length, node.mode) -\n            getSegmentBitsLength(table[prevNodeId].lastCount, node.mode)\n\n          table[prevNodeId].lastCount += node.length\n        } else {\n          if (table[prevNodeId]) table[prevNodeId].lastCount = node.length\n\n          graph[prevNodeId][key] = getSegmentBitsLength(node.length, node.mode) +\n            4 + Mode.getCharCountIndicator(node.mode, version) // switch cost\n        }\n      }\n    }\n\n    prevNodeIds = currentNodeIds\n  }\n\n  for (let n = 0; n < prevNodeIds.length; n++) {\n    graph[prevNodeIds[n]].end = 0\n  }\n\n  return { map: graph, table: table }\n}\n\n/**\n * Builds a segment from a specified data and mode.\n * If a mode is not specified, the more suitable will be used.\n *\n * @param  {String} data             Input data\n * @param  {Mode | String} modesHint Data mode\n * @return {Segment}                 Segment\n */\nfunction buildSingleSegment (data, modesHint) {\n  let mode\n  const bestMode = Mode.getBestModeForData(data)\n\n  mode = Mode.from(modesHint, bestMode)\n\n  // Make sure data can be encoded\n  if (mode !== Mode.BYTE && mode.bit < bestMode.bit) {\n    throw new Error('\"' + data + '\"' +\n      ' cannot be encoded with mode ' + Mode.toString(mode) +\n      '.\\n Suggested mode is: ' + Mode.toString(bestMode))\n  }\n\n  // Use Mode.BYTE if Kanji support is disabled\n  if (mode === Mode.KANJI && !Utils.isKanjiModeEnabled()) {\n    mode = Mode.BYTE\n  }\n\n  switch (mode) {\n    case Mode.NUMERIC:\n      return new NumericData(data)\n\n    case Mode.ALPHANUMERIC:\n      return new AlphanumericData(data)\n\n    case Mode.KANJI:\n      return new KanjiData(data)\n\n    case Mode.BYTE:\n      return new ByteData(data)\n  }\n}\n\n/**\n * Builds a list of segments from an array.\n * Array can contain Strings or Objects with segment's info.\n *\n * For each item which is a string, will be generated a segment with the given\n * string and the more appropriate encoding mode.\n *\n * For each item which is an object, will be generated a segment with the given\n * data and mode.\n * Objects must contain at least the property \"data\".\n * If property \"mode\" is not present, the more suitable mode will be used.\n *\n * @param  {Array} array Array of objects with segments data\n * @return {Array}       Array of Segments\n */\nexports.fromArray = function fromArray (array) {\n  return array.reduce(function (acc, seg) {\n    if (typeof seg === 'string') {\n      acc.push(buildSingleSegment(seg, null))\n    } else if (seg.data) {\n      acc.push(buildSingleSegment(seg.data, seg.mode))\n    }\n\n    return acc\n  }, [])\n}\n\n/**\n * Builds an optimized sequence of segments from a string,\n * which will produce the shortest possible bitstream.\n *\n * @param  {String} data    Input string\n * @param  {Number} version QR Code version\n * @return {Array}          Array of segments\n */\nexports.fromString = function fromString (data, version) {\n  const segs = getSegmentsFromString(data, Utils.isKanjiModeEnabled())\n\n  const nodes = buildNodes(segs)\n  const graph = buildGraph(nodes, version)\n  const path = dijkstra.find_path(graph.map, 'start', 'end')\n\n  const optimizedSegs = []\n  for (let i = 1; i < path.length - 1; i++) {\n    optimizedSegs.push(graph.table[path[i]].node)\n  }\n\n  return exports.fromArray(mergeSegments(optimizedSegs))\n}\n\n/**\n * Splits a string in various segments with the modes which\n * best represent their content.\n * The produced segments are far from being optimized.\n * The output of this function is only used to estimate a QR Code version\n * which may contain the data.\n *\n * @param  {string} data Input string\n * @return {Array}       Array of segments\n */\nexports.rawSplit = function rawSplit (data) {\n  return exports.fromArray(\n    getSegmentsFromString(data, Utils.isKanjiModeEnabled())\n  )\n}\n","var baseIteratee = require('./_baseIteratee'),\n    basePullAt = require('./_basePullAt');\n\n/**\n * Removes all elements from `array` that `predicate` returns truthy for\n * and returns an array of the removed elements. The predicate is invoked\n * with three arguments: (value, index, array).\n *\n * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`\n * to pull elements from an array by value.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = [1, 2, 3, 4];\n * var evens = _.remove(array, function(n) {\n *   return n % 2 == 0;\n * });\n *\n * console.log(array);\n * // => [1, 3]\n *\n * console.log(evens);\n * // => [2, 4]\n */\nfunction remove(array, predicate) {\n  var result = [];\n  if (!(array && array.length)) {\n    return result;\n  }\n  var index = -1,\n      indexes = [],\n      length = array.length;\n\n  predicate = baseIteratee(predicate, 3);\n  while (++index < length) {\n    var value = array[index];\n    if (predicate(value, index, array)) {\n      result.push(value);\n      indexes.push(index);\n    }\n  }\n  basePullAt(array, indexes);\n  return result;\n}\n\nmodule.exports = remove;\n","var baseIsEqualDeep = require('./_baseIsEqualDeep'),\n    isObjectLike = require('./isObjectLike');\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n *  1 - Unordered comparison\n *  2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n  if (value === other) {\n    return true;\n  }\n  if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n    return value !== value && other !== other;\n  }\n  return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nmodule.exports = baseIsEqual;\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","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AuthenticationClient = void 0;\nconst errors_1 = require(\"@feathersjs/errors\");\nconst storage_1 = require(\"./storage\");\nconst getMatch = (location, key) => {\n    const regex = new RegExp(`(?:\\&?)${key}=([^&]*)`);\n    const match = location.hash ? location.hash.match(regex) : null;\n    if (match !== null) {\n        const [, value] = match;\n        return [value, regex];\n    }\n    return [null, regex];\n};\nclass AuthenticationClient {\n    constructor(app, options) {\n        const socket = app.io || app.primus;\n        const storage = new storage_1.StorageWrapper(app.get('storage') || options.storage);\n        this.app = app;\n        this.options = options;\n        this.authenticated = false;\n        this.app.set('storage', storage);\n        if (socket) {\n            this.handleSocket(socket);\n        }\n    }\n    get service() {\n        return this.app.service(this.options.path);\n    }\n    get storage() {\n        return this.app.get('storage');\n    }\n    handleSocket(socket) {\n        // Connection events happen on every reconnect\n        const connected = this.app.io ? 'connect' : 'open';\n        const disconnected = this.app.io ? 'disconnect' : 'disconnection';\n        socket.on(disconnected, () => {\n            const authPromise = new Promise(resolve => socket.once(connected, (data) => resolve(data)))\n                // Only reconnect when `reAuthenticate()` or `authenticate()`\n                // has been called explicitly first\n                // Force reauthentication with the server\n                .then(() => this.authenticated ? this.reAuthenticate(true) : null);\n            this.app.set('authentication', authPromise);\n        });\n    }\n    getFromLocation(location) {\n        const [accessToken, tokenRegex] = getMatch(location, this.options.locationKey);\n        if (accessToken !== null) {\n            location.hash = location.hash.replace(tokenRegex, '');\n            return Promise.resolve(accessToken);\n        }\n        const [message, errorRegex] = getMatch(location, this.options.locationErrorKey);\n        if (message !== null) {\n            location.hash = location.hash.replace(errorRegex, '');\n            return Promise.reject(new errors_1.NotAuthenticated(decodeURIComponent(message)));\n        }\n        return Promise.resolve(null);\n    }\n    setAccessToken(accessToken) {\n        return this.storage.setItem(this.options.storageKey, accessToken);\n    }\n    getAccessToken() {\n        return this.storage.getItem(this.options.storageKey)\n            .then((accessToken) => {\n            if (!accessToken && typeof window !== 'undefined' && window.location) {\n                return this.getFromLocation(window.location);\n            }\n            return accessToken || null;\n        });\n    }\n    removeAccessToken() {\n        return this.storage.removeItem(this.options.storageKey);\n    }\n    reset() {\n        this.app.set('authentication', null);\n        this.authenticated = false;\n        return Promise.resolve(null);\n    }\n    handleError(error, type) {\n        if (error.code === 401 || error.code === 403) {\n            const promise = this.removeAccessToken().then(() => this.reset());\n            return type === 'logout' ? promise : promise.then(() => Promise.reject(error));\n        }\n        return Promise.reject(error);\n    }\n    reAuthenticate(force = false, strategy) {\n        // Either returns the authentication state or\n        // tries to re-authenticate with the stored JWT and strategy\n        const authPromise = this.app.get('authentication');\n        if (!authPromise || force === true) {\n            return this.getAccessToken().then(accessToken => {\n                if (!accessToken) {\n                    throw new errors_1.NotAuthenticated('No accessToken found in storage');\n                }\n                return this.authenticate({\n                    strategy: strategy || this.options.jwtStrategy,\n                    accessToken\n                });\n            });\n        }\n        return authPromise;\n    }\n    authenticate(authentication, params) {\n        if (!authentication) {\n            return this.reAuthenticate();\n        }\n        const promise = this.service.create(authentication, params)\n            .then((authResult) => {\n            const { accessToken } = authResult;\n            this.authenticated = true;\n            this.app.emit('login', authResult);\n            this.app.emit('authenticated', authResult);\n            return this.setAccessToken(accessToken).then(() => authResult);\n        }).catch((error) => this.handleError(error, 'authenticate'));\n        this.app.set('authentication', promise);\n        return promise;\n    }\n    logout() {\n        return Promise.resolve(this.app.get('authentication'))\n            .then(() => this.service.remove(null)\n            .then((authResult) => this.removeAccessToken()\n            .then(() => this.reset())\n            .then(() => {\n            this.app.emit('logout', authResult);\n            return authResult;\n        })))\n            .catch((error) => this.handleError(error, 'logout'));\n    }\n}\nexports.AuthenticationClient = AuthenticationClient;\n//# sourceMappingURL=core.js.map","var baseSetToString = require('./_baseSetToString'),\n    shortOut = require('./_shortOut');\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nmodule.exports = setToString;\n","/**\n * Creates an array with all falsey values removed. The values `false`, `null`,\n * `0`, `\"\"`, `undefined`, and `NaN` are falsey.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to compact.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.compact([0, 1, false, 2, '', 3]);\n * // => [1, 2, 3]\n */\nfunction compact(array) {\n  var index = -1,\n      length = array == null ? 0 : array.length,\n      resIndex = 0,\n      result = [];\n\n  while (++index < length) {\n    var value = array[index];\n    if (value) {\n      result[resIndex++] = value;\n    }\n  }\n  return result;\n}\n\nmodule.exports = compact;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer'),\n    cloneDataView = require('./_cloneDataView'),\n    cloneRegExp = require('./_cloneRegExp'),\n    cloneSymbol = require('./_cloneSymbol'),\n    cloneTypedArray = require('./_cloneTypedArray');\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]',\n    float32Tag = '[object Float32Array]',\n    float64Tag = '[object Float64Array]',\n    int8Tag = '[object Int8Array]',\n    int16Tag = '[object Int16Array]',\n    int32Tag = '[object Int32Array]',\n    uint8Tag = '[object Uint8Array]',\n    uint8ClampedTag = '[object Uint8ClampedArray]',\n    uint16Tag = '[object Uint16Array]',\n    uint32Tag = '[object Uint32Array]';\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, isDeep) {\n  var Ctor = object.constructor;\n  switch (tag) {\n    case arrayBufferTag:\n      return cloneArrayBuffer(object);\n\n    case boolTag:\n    case dateTag:\n      return new Ctor(+object);\n\n    case dataViewTag:\n      return cloneDataView(object, isDeep);\n\n    case float32Tag: case float64Tag:\n    case int8Tag: case int16Tag: case int32Tag:\n    case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n      return cloneTypedArray(object, isDeep);\n\n    case mapTag:\n      return new Ctor;\n\n    case numberTag:\n    case stringTag:\n      return new Ctor(object);\n\n    case regexpTag:\n      return cloneRegExp(object);\n\n    case setTag:\n      return new Ctor;\n\n    case symbolTag:\n      return cloneSymbol(object);\n  }\n}\n\nmodule.exports = initCloneByTag;\n","var baseSlice = require('./_baseSlice');\n\n/**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\nfunction castSlice(array, start, end) {\n  var length = array.length;\n  end = end === undefined ? length : end;\n  return (!start && end >= length) ? array : baseSlice(array, start, end);\n}\n\nmodule.exports = castSlice;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.populateHeader = void 0;\nconst populateHeader = () => {\n    return (context) => {\n        const { app, params: { accessToken } } = context;\n        const authentication = app.authentication;\n        // Set REST header if necessary\n        if (app.rest && accessToken) {\n            const { scheme, header } = authentication.options;\n            const authHeader = `${scheme} ${accessToken}`;\n            context.params.headers = Object.assign({}, {\n                [header]: authHeader\n            }, context.params.headers);\n        }\n        return context;\n    };\n};\nexports.populateHeader = populateHeader;\n//# sourceMappingURL=populate-header.js.map","// false -> Array#indexOf\n// true  -> Array#includes\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nmodule.exports = function (IS_INCLUDES) {\n  return function ($this, el, fromIndex) {\n    var O = toIObject($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++) if (IS_INCLUDES || index in O) {\n      if (O[index] === el) return IS_INCLUDES || index || 0;\n    } return !IS_INCLUDES && -1;\n  };\n};\n","// Components\nimport { VData } from '../VData';\nimport VDataFooter from './VDataFooter'; // Mixins\n\nimport Mobile from '../../mixins/mobile';\nimport Themeable from '../../mixins/themeable'; // Helpers\n\nimport mixins from '../../util/mixins';\nimport { deepEqual, getObjectValueByPath, getPrefixedScopedSlots, getSlot, camelizeObjectKeys, keyCodes } from '../../util/helpers';\nimport { breaking, removed } from '../../util/console';\n/* @vue/component */\n\nexport default mixins(Mobile, Themeable).extend({\n  name: 'v-data-iterator',\n  props: { ...VData.options.props,\n    itemKey: {\n      type: String,\n      default: 'id'\n    },\n    value: {\n      type: Array,\n      default: () => []\n    },\n    singleSelect: Boolean,\n    expanded: {\n      type: Array,\n      default: () => []\n    },\n    mobileBreakpoint: { ...Mobile.options.props.mobileBreakpoint,\n      default: 600\n    },\n    singleExpand: Boolean,\n    loading: [Boolean, String],\n    noResultsText: {\n      type: String,\n      default: '$vuetify.dataIterator.noResultsText'\n    },\n    noDataText: {\n      type: String,\n      default: '$vuetify.noDataText'\n    },\n    loadingText: {\n      type: String,\n      default: '$vuetify.dataIterator.loadingText'\n    },\n    hideDefaultFooter: Boolean,\n    footerProps: Object,\n    selectableKey: {\n      type: String,\n      default: 'isSelectable'\n    }\n  },\n  data: () => ({\n    selection: {},\n    expansion: {},\n    internalCurrentItems: [],\n    shiftKeyDown: false,\n    lastEntry: -1\n  }),\n  computed: {\n    everyItem() {\n      return !!this.selectableItems.length && this.selectableItems.every(i => this.isSelected(i));\n    },\n\n    someItems() {\n      return this.selectableItems.some(i => this.isSelected(i));\n    },\n\n    sanitizedFooterProps() {\n      return camelizeObjectKeys(this.footerProps);\n    },\n\n    selectableItems() {\n      return this.internalCurrentItems.filter(item => this.isSelectable(item));\n    }\n\n  },\n  watch: {\n    value: {\n      handler(value) {\n        this.selection = value.reduce((selection, item) => {\n          selection[getObjectValueByPath(item, this.itemKey)] = item;\n          return selection;\n        }, {});\n      },\n\n      immediate: true\n    },\n\n    selection(value, old) {\n      if (deepEqual(Object.keys(value), Object.keys(old))) return;\n      this.$emit('input', Object.values(value));\n    },\n\n    expanded: {\n      handler(value) {\n        this.expansion = value.reduce((expansion, item) => {\n          expansion[getObjectValueByPath(item, this.itemKey)] = true;\n          return expansion;\n        }, {});\n      },\n\n      immediate: true\n    },\n\n    expansion(value, old) {\n      if (deepEqual(value, old)) return;\n      const keys = Object.keys(value).filter(k => value[k]);\n      const expanded = !keys.length ? [] : this.items.filter(i => keys.includes(String(getObjectValueByPath(i, this.itemKey))));\n      this.$emit('update:expanded', expanded);\n    }\n\n  },\n\n  created() {\n    const breakingProps = [['disable-initial-sort', 'sort-by'], ['filter', 'custom-filter'], ['pagination', 'options'], ['total-items', 'server-items-length'], ['hide-actions', 'hide-default-footer'], ['rows-per-page-items', 'footer-props.items-per-page-options'], ['rows-per-page-text', 'footer-props.items-per-page-text'], ['prev-icon', 'footer-props.prev-icon'], ['next-icon', 'footer-props.next-icon']];\n    /* istanbul ignore next */\n\n    breakingProps.forEach(([original, replacement]) => {\n      if (this.$attrs.hasOwnProperty(original)) breaking(original, replacement, this);\n    });\n    const removedProps = ['expand', 'content-class', 'content-props', 'content-tag'];\n    /* istanbul ignore next */\n\n    removedProps.forEach(prop => {\n      if (this.$attrs.hasOwnProperty(prop)) removed(prop);\n    });\n  },\n\n  mounted() {\n    window.addEventListener('keydown', this.onKeyDown);\n    window.addEventListener('keyup', this.onKeyUp);\n  },\n\n  beforeDestroy() {\n    window.removeEventListener('keydown', this.onKeyDown);\n    window.removeEventListener('keyup', this.onKeyUp);\n  },\n\n  methods: {\n    onKeyDown(e) {\n      if (e.keyCode !== keyCodes.shift) return;\n      this.shiftKeyDown = true;\n    },\n\n    onKeyUp(e) {\n      if (e.keyCode !== keyCodes.shift) return;\n      this.shiftKeyDown = false;\n    },\n\n    toggleSelectAll(value) {\n      const selection = Object.assign({}, this.selection);\n\n      for (let i = 0; i < this.selectableItems.length; i++) {\n        const item = this.selectableItems[i];\n        if (!this.isSelectable(item)) continue;\n        const key = getObjectValueByPath(item, this.itemKey);\n        if (value) selection[key] = item;else delete selection[key];\n      }\n\n      this.selection = selection;\n      this.$emit('toggle-select-all', {\n        items: this.internalCurrentItems,\n        value\n      });\n    },\n\n    isSelectable(item) {\n      return getObjectValueByPath(item, this.selectableKey) !== false;\n    },\n\n    isSelected(item) {\n      return !!this.selection[getObjectValueByPath(item, this.itemKey)] || false;\n    },\n\n    select(item, value = true, emit = true) {\n      if (!this.isSelectable(item)) return;\n      const selection = this.singleSelect ? {} : Object.assign({}, this.selection);\n      const key = getObjectValueByPath(item, this.itemKey);\n      if (value) selection[key] = item;else delete selection[key];\n      const index = this.selectableItems.findIndex(x => getObjectValueByPath(x, this.itemKey) === key);\n      if (this.lastEntry === -1) this.lastEntry = index;else if (this.shiftKeyDown && !this.singleSelect && emit) {\n        const lastEntryKey = getObjectValueByPath(this.selectableItems[this.lastEntry], this.itemKey);\n        const lastEntryKeySelected = Object.keys(this.selection).includes(String(lastEntryKey));\n        this.multipleSelect(lastEntryKeySelected, emit, selection, index);\n      }\n      this.lastEntry = index;\n\n      if (this.singleSelect && emit) {\n        const keys = Object.keys(this.selection);\n        const old = keys.length && getObjectValueByPath(this.selection[keys[0]], this.itemKey);\n        old && old !== key && this.$emit('item-selected', {\n          item: this.selection[old],\n          value: false\n        });\n      }\n\n      this.selection = selection;\n      emit && this.$emit('item-selected', {\n        item,\n        value\n      });\n    },\n\n    multipleSelect(value = true, emit = true, selection, index) {\n      const start = index < this.lastEntry ? index : this.lastEntry;\n      const end = index < this.lastEntry ? this.lastEntry : index;\n\n      for (let i = start; i <= end; i++) {\n        const currentItem = this.selectableItems[i];\n        const key = getObjectValueByPath(currentItem, this.itemKey);\n        if (value) selection[key] = currentItem;else delete selection[key];\n        emit && this.$emit('item-selected', {\n          currentItem,\n          value\n        });\n      }\n    },\n\n    isExpanded(item) {\n      return this.expansion[getObjectValueByPath(item, this.itemKey)] || false;\n    },\n\n    expand(item, value = true) {\n      const expansion = this.singleExpand ? {} : Object.assign({}, this.expansion);\n      const key = getObjectValueByPath(item, this.itemKey);\n      if (value) expansion[key] = true;else delete expansion[key];\n      this.expansion = expansion;\n      this.$emit('item-expanded', {\n        item,\n        value\n      });\n    },\n\n    createItemProps(item, index) {\n      return {\n        item,\n        index,\n        select: v => this.select(item, v),\n        isSelected: this.isSelected(item),\n        expand: v => this.expand(item, v),\n        isExpanded: this.isExpanded(item),\n        isMobile: this.isMobile\n      };\n    },\n\n    genEmptyWrapper(content) {\n      return this.$createElement('div', content);\n    },\n\n    genEmpty(originalItemsLength, filteredItemsLength) {\n      if (originalItemsLength === 0 && this.loading) {\n        const loading = this.$slots.loading || this.$vuetify.lang.t(this.loadingText);\n        return this.genEmptyWrapper(loading);\n      } else if (originalItemsLength === 0) {\n        const noData = this.$slots['no-data'] || this.$vuetify.lang.t(this.noDataText);\n        return this.genEmptyWrapper(noData);\n      } else if (filteredItemsLength === 0) {\n        const noResults = this.$slots['no-results'] || this.$vuetify.lang.t(this.noResultsText);\n        return this.genEmptyWrapper(noResults);\n      }\n\n      return null;\n    },\n\n    genItems(props) {\n      const empty = this.genEmpty(props.originalItemsLength, props.pagination.itemsLength);\n      if (empty) return [empty];\n\n      if (this.$scopedSlots.default) {\n        return this.$scopedSlots.default({ ...props,\n          isSelected: this.isSelected,\n          select: this.select,\n          isExpanded: this.isExpanded,\n          isMobile: this.isMobile,\n          expand: this.expand\n        });\n      }\n\n      if (this.$scopedSlots.item) {\n        return props.items.map((item, index) => this.$scopedSlots.item(this.createItemProps(item, index)));\n      }\n\n      return [];\n    },\n\n    genFooter(props) {\n      if (this.hideDefaultFooter) return null;\n      const data = {\n        props: { ...this.sanitizedFooterProps,\n          options: props.options,\n          pagination: props.pagination\n        },\n        on: {\n          'update:options': value => props.updateOptions(value)\n        }\n      };\n      const scopedSlots = getPrefixedScopedSlots('footer.', this.$scopedSlots);\n      return this.$createElement(VDataFooter, {\n        scopedSlots,\n        ...data\n      });\n    },\n\n    genDefaultScopedSlot(props) {\n      const outerProps = { ...props,\n        someItems: this.someItems,\n        everyItem: this.everyItem,\n        toggleSelectAll: this.toggleSelectAll\n      };\n      return this.$createElement('div', {\n        staticClass: 'v-data-iterator'\n      }, [getSlot(this, 'header', outerProps, true), this.genItems(props), this.genFooter(props), getSlot(this, 'footer', outerProps, true)]);\n    }\n\n  },\n\n  render() {\n    return this.$createElement(VData, {\n      props: this.$props,\n      on: {\n        'update:options': (v, old) => !deepEqual(v, old) && this.$emit('update:options', v),\n        'update:page': v => this.$emit('update:page', v),\n        'update:items-per-page': v => this.$emit('update:items-per-page', v),\n        'update:sort-by': v => this.$emit('update:sort-by', v),\n        'update:sort-desc': v => this.$emit('update:sort-desc', v),\n        'update:group-by': v => this.$emit('update:group-by', v),\n        'update:group-desc': v => this.$emit('update:group-desc', v),\n        pagination: (v, old) => !deepEqual(v, old) && this.$emit('pagination', v),\n        'current-items': v => {\n          this.internalCurrentItems = v;\n          this.$emit('current-items', v);\n        },\n        'page-count': v => this.$emit('page-count', v)\n      },\n      scopedSlots: {\n        default: this.genDefaultScopedSlot\n      }\n    });\n  }\n\n});\n//# sourceMappingURL=VDataIterator.js.map","// Styles\nimport \"../../../src/components/VMessages/VMessages.sass\"; // Mixins\n\nimport Colorable from '../../mixins/colorable';\nimport Themeable from '../../mixins/themeable';\nimport mixins from '../../util/mixins'; // Utilities\n\nimport { getSlot } from '../../util/helpers';\n/* @vue/component */\n\nexport default mixins(Colorable, Themeable).extend({\n  name: 'v-messages',\n  props: {\n    value: {\n      type: Array,\n      default: () => []\n    }\n  },\n  methods: {\n    genChildren() {\n      return this.$createElement('transition-group', {\n        staticClass: 'v-messages__wrapper',\n        attrs: {\n          name: 'message-transition',\n          tag: 'div'\n        }\n      }, this.value.map(this.genMessage));\n    },\n\n    genMessage(message, key) {\n      return this.$createElement('div', {\n        staticClass: 'v-messages__message',\n        key\n      }, getSlot(this, 'default', {\n        message,\n        key\n      }) || [message]);\n    }\n\n  },\n\n  render(h) {\n    return h('div', this.setTextColor(this.color, {\n      staticClass: 'v-messages',\n      class: this.themeClasses\n    }), [this.genChildren()]);\n  }\n\n});\n//# sourceMappingURL=VMessages.js.map","import VMessages from './VMessages';\nexport { VMessages };\nexport default VMessages;\n//# sourceMappingURL=index.js.map","// Styles\nimport \"../../../src/components/VInput/VInput.sass\"; // Components\n\nimport VIcon from '../VIcon';\nimport VLabel from '../VLabel';\nimport VMessages from '../VMessages'; // Mixins\n\nimport BindsAttrs from '../../mixins/binds-attrs';\nimport Validatable from '../../mixins/validatable'; // Utilities\n\nimport { convertToUnit, getSlot, kebabCase } from '../../util/helpers';\nimport mergeData from '../../util/mergeData';\nimport mixins from '../../util/mixins';\nconst baseMixins = mixins(BindsAttrs, Validatable);\n/* @vue/component */\n\nexport default baseMixins.extend().extend({\n  name: 'v-input',\n  inheritAttrs: false,\n  props: {\n    appendIcon: String,\n    backgroundColor: {\n      type: String,\n      default: ''\n    },\n    dense: Boolean,\n    height: [Number, String],\n    hideDetails: [Boolean, String],\n    hideSpinButtons: Boolean,\n    hint: String,\n    id: String,\n    label: String,\n    loading: Boolean,\n    persistentHint: Boolean,\n    prependIcon: String,\n    value: null\n  },\n\n  data() {\n    return {\n      lazyValue: this.value,\n      hasMouseDown: false\n    };\n  },\n\n  computed: {\n    classes() {\n      return {\n        'v-input--has-state': this.hasState,\n        'v-input--hide-details': !this.showDetails,\n        'v-input--is-label-active': this.isLabelActive,\n        'v-input--is-dirty': this.isDirty,\n        'v-input--is-disabled': this.isDisabled,\n        'v-input--is-focused': this.isFocused,\n        // <v-switch loading>.loading === '' so we can't just cast to boolean\n        'v-input--is-loading': this.loading !== false && this.loading != null,\n        'v-input--is-readonly': this.isReadonly,\n        'v-input--dense': this.dense,\n        'v-input--hide-spin-buttons': this.hideSpinButtons,\n        ...this.themeClasses\n      };\n    },\n\n    computedId() {\n      return this.id || `input-${this._uid}`;\n    },\n\n    hasDetails() {\n      return this.messagesToDisplay.length > 0;\n    },\n\n    hasHint() {\n      return !this.hasMessages && !!this.hint && (this.persistentHint || this.isFocused);\n    },\n\n    hasLabel() {\n      return !!(this.$slots.label || this.label);\n    },\n\n    // Proxy for `lazyValue`\n    // This allows an input\n    // to function without\n    // a provided model\n    internalValue: {\n      get() {\n        return this.lazyValue;\n      },\n\n      set(val) {\n        this.lazyValue = val;\n        this.$emit(this.$_modelEvent, val);\n      }\n\n    },\n\n    isDirty() {\n      return !!this.lazyValue;\n    },\n\n    isLabelActive() {\n      return this.isDirty;\n    },\n\n    messagesToDisplay() {\n      if (this.hasHint) return [this.hint];\n      if (!this.hasMessages) return [];\n      return this.validations.map(validation => {\n        if (typeof validation === 'string') return validation;\n        const validationResult = validation(this.internalValue);\n        return typeof validationResult === 'string' ? validationResult : '';\n      }).filter(message => message !== '');\n    },\n\n    showDetails() {\n      return this.hideDetails === false || this.hideDetails === 'auto' && this.hasDetails;\n    }\n\n  },\n  watch: {\n    value(val) {\n      this.lazyValue = val;\n    }\n\n  },\n\n  beforeCreate() {\n    // v-radio-group needs to emit a different event\n    // https://github.com/vuetifyjs/vuetify/issues/4752\n    this.$_modelEvent = this.$options.model && this.$options.model.event || 'input';\n  },\n\n  methods: {\n    genContent() {\n      return [this.genPrependSlot(), this.genControl(), this.genAppendSlot()];\n    },\n\n    genControl() {\n      return this.$createElement('div', {\n        staticClass: 'v-input__control',\n        attrs: {\n          title: this.attrs$.title\n        }\n      }, [this.genInputSlot(), this.genMessages()]);\n    },\n\n    genDefaultSlot() {\n      return [this.genLabel(), this.$slots.default];\n    },\n\n    genIcon(type, cb, extraData = {}) {\n      const icon = this[`${type}Icon`];\n      const eventName = `click:${kebabCase(type)}`;\n      const hasListener = !!(this.listeners$[eventName] || cb);\n      const data = mergeData({\n        attrs: {\n          'aria-label': hasListener ? kebabCase(type).split('-')[0] + ' icon' : undefined,\n          color: this.validationState,\n          dark: this.dark,\n          disabled: this.isDisabled,\n          light: this.light\n        },\n        on: !hasListener ? undefined : {\n          click: e => {\n            e.preventDefault();\n            e.stopPropagation();\n            this.$emit(eventName, e);\n            cb && cb(e);\n          },\n          // Container has g event that will\n          // trigger menu open if enclosed\n          mouseup: e => {\n            e.preventDefault();\n            e.stopPropagation();\n          }\n        }\n      }, extraData);\n      return this.$createElement('div', {\n        staticClass: `v-input__icon`,\n        class: type ? `v-input__icon--${kebabCase(type)}` : undefined\n      }, [this.$createElement(VIcon, data, icon)]);\n    },\n\n    genInputSlot() {\n      return this.$createElement('div', this.setBackgroundColor(this.backgroundColor, {\n        staticClass: 'v-input__slot',\n        style: {\n          height: convertToUnit(this.height)\n        },\n        on: {\n          click: this.onClick,\n          mousedown: this.onMouseDown,\n          mouseup: this.onMouseUp\n        },\n        ref: 'input-slot'\n      }), [this.genDefaultSlot()]);\n    },\n\n    genLabel() {\n      if (!this.hasLabel) return null;\n      return this.$createElement(VLabel, {\n        props: {\n          color: this.validationState,\n          dark: this.dark,\n          disabled: this.isDisabled,\n          focused: this.hasState,\n          for: this.computedId,\n          light: this.light\n        }\n      }, this.$slots.label || this.label);\n    },\n\n    genMessages() {\n      if (!this.showDetails) return null;\n      return this.$createElement(VMessages, {\n        props: {\n          color: this.hasHint ? '' : this.validationState,\n          dark: this.dark,\n          light: this.light,\n          value: this.messagesToDisplay\n        },\n        attrs: {\n          role: this.hasMessages ? 'alert' : null\n        },\n        scopedSlots: {\n          default: props => getSlot(this, 'message', props)\n        }\n      });\n    },\n\n    genSlot(type, location, slot) {\n      if (!slot.length) return null;\n      const ref = `${type}-${location}`;\n      return this.$createElement('div', {\n        staticClass: `v-input__${ref}`,\n        ref\n      }, slot);\n    },\n\n    genPrependSlot() {\n      const slot = [];\n\n      if (this.$slots.prepend) {\n        slot.push(this.$slots.prepend);\n      } else if (this.prependIcon) {\n        slot.push(this.genIcon('prepend'));\n      }\n\n      return this.genSlot('prepend', 'outer', slot);\n    },\n\n    genAppendSlot() {\n      const slot = []; // Append icon for text field was really\n      // an appended inner icon, v-text-field\n      // will overwrite this method in order to obtain\n      // backwards compat\n\n      if (this.$slots.append) {\n        slot.push(this.$slots.append);\n      } else if (this.appendIcon) {\n        slot.push(this.genIcon('append'));\n      }\n\n      return this.genSlot('append', 'outer', slot);\n    },\n\n    onClick(e) {\n      this.$emit('click', e);\n    },\n\n    onMouseDown(e) {\n      this.hasMouseDown = true;\n      this.$emit('mousedown', e);\n    },\n\n    onMouseUp(e) {\n      this.hasMouseDown = false;\n      this.$emit('mouseup', e);\n    }\n\n  },\n\n  render(h) {\n    return h('div', this.setTextColor(this.validationState, {\n      staticClass: 'v-input',\n      class: this.classes\n    }), this.genContent());\n  }\n\n});\n//# sourceMappingURL=VInput.js.map","import VInput from './VInput';\nexport { VInput };\nexport default VInput;\n//# sourceMappingURL=index.js.map","import { keys } from '../../util/helpers';\n\nconst handleGesture = wrapper => {\n  const {\n    touchstartX,\n    touchendX,\n    touchstartY,\n    touchendY\n  } = wrapper;\n  const dirRatio = 0.5;\n  const minDistance = 16;\n  wrapper.offsetX = touchendX - touchstartX;\n  wrapper.offsetY = touchendY - touchstartY;\n\n  if (Math.abs(wrapper.offsetY) < dirRatio * Math.abs(wrapper.offsetX)) {\n    wrapper.left && touchendX < touchstartX - minDistance && wrapper.left(wrapper);\n    wrapper.right && touchendX > touchstartX + minDistance && wrapper.right(wrapper);\n  }\n\n  if (Math.abs(wrapper.offsetX) < dirRatio * Math.abs(wrapper.offsetY)) {\n    wrapper.up && touchendY < touchstartY - minDistance && wrapper.up(wrapper);\n    wrapper.down && touchendY > touchstartY + minDistance && wrapper.down(wrapper);\n  }\n};\n\nfunction touchstart(event, wrapper) {\n  const touch = event.changedTouches[0];\n  wrapper.touchstartX = touch.clientX;\n  wrapper.touchstartY = touch.clientY;\n  wrapper.start && wrapper.start(Object.assign(event, wrapper));\n}\n\nfunction touchend(event, wrapper) {\n  const touch = event.changedTouches[0];\n  wrapper.touchendX = touch.clientX;\n  wrapper.touchendY = touch.clientY;\n  wrapper.end && wrapper.end(Object.assign(event, wrapper));\n  handleGesture(wrapper);\n}\n\nfunction touchmove(event, wrapper) {\n  const touch = event.changedTouches[0];\n  wrapper.touchmoveX = touch.clientX;\n  wrapper.touchmoveY = touch.clientY;\n  wrapper.move && wrapper.move(Object.assign(event, wrapper));\n}\n\nfunction createHandlers(value) {\n  const wrapper = {\n    touchstartX: 0,\n    touchstartY: 0,\n    touchendX: 0,\n    touchendY: 0,\n    touchmoveX: 0,\n    touchmoveY: 0,\n    offsetX: 0,\n    offsetY: 0,\n    left: value.left,\n    right: value.right,\n    up: value.up,\n    down: value.down,\n    start: value.start,\n    move: value.move,\n    end: value.end\n  };\n  return {\n    touchstart: e => touchstart(e, wrapper),\n    touchend: e => touchend(e, wrapper),\n    touchmove: e => touchmove(e, wrapper)\n  };\n}\n\nfunction inserted(el, binding, vnode) {\n  const value = binding.value;\n  const target = value.parent ? el.parentElement : el;\n  const options = value.options || {\n    passive: true\n  }; // Needed to pass unit tests\n\n  if (!target) return;\n  const handlers = createHandlers(binding.value);\n  target._touchHandlers = Object(target._touchHandlers);\n  target._touchHandlers[vnode.context._uid] = handlers;\n  keys(handlers).forEach(eventName => {\n    target.addEventListener(eventName, handlers[eventName], options);\n  });\n}\n\nfunction unbind(el, binding, vnode) {\n  const target = binding.value.parent ? el.parentElement : el;\n  if (!target || !target._touchHandlers) return;\n  const handlers = target._touchHandlers[vnode.context._uid];\n  keys(handlers).forEach(eventName => {\n    target.removeEventListener(eventName, handlers[eventName]);\n  });\n  delete target._touchHandlers[vnode.context._uid];\n}\n\nexport const Touch = {\n  inserted,\n  unbind\n};\nexport default Touch;\n//# sourceMappingURL=index.js.map","var getTag = require('./_getTag'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar setTag = '[object Set]';\n\n/**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\nfunction baseIsSet(value) {\n  return isObjectLike(value) && getTag(value) == setTag;\n}\n\nmodule.exports = baseIsSet;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n  return cache.has(key);\n}\n\nmodule.exports = cacheHas;\n","'use strict';\n// Forced replacement prototype accessors methods\nmodule.exports = require('./_library') || !require('./_fails')(function () {\n  var K = Math.random();\n  // In FF throws only define methods\n  // eslint-disable-next-line no-undef, no-useless-call\n  __defineSetter__.call(null, K, function () { /* empty */ });\n  delete require('./_global')[K];\n});\n","// Extensions\nimport VWindowItem from '../VWindow/VWindowItem';\n/* @vue/component */\n\nexport default VWindowItem.extend({\n  name: 'v-tab-item',\n  props: {\n    id: String\n  },\n  methods: {\n    genWindowItem() {\n      const item = VWindowItem.options.methods.genWindowItem.call(this);\n      item.data.domProps = item.data.domProps || {};\n      item.data.domProps.id = this.id || this.value;\n      return item;\n    }\n\n  }\n});\n//# sourceMappingURL=VTabItem.js.map","module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n  return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n","var flatten = require('./flatten'),\n    overRest = require('./_overRest'),\n    setToString = require('./_setToString');\n\n/**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\nfunction flatRest(func) {\n  return setToString(overRest(func, undefined, flatten), func + '');\n}\n\nmodule.exports = flatRest;\n","var baseFlatten = require('./_baseFlatten'),\n    baseOrderBy = require('./_baseOrderBy'),\n    baseRest = require('./_baseRest'),\n    isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n *  The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n *   { 'user': 'fred',   'age': 48 },\n *   { 'user': 'barney', 'age': 36 },\n *   { 'user': 'fred',   'age': 30 },\n *   { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]\n */\nvar sortBy = baseRest(function(collection, iteratees) {\n  if (collection == null) {\n    return [];\n  }\n  var length = iteratees.length;\n  if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n    iteratees = [];\n  } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n    iteratees = [iteratees[0]];\n  }\n  return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n});\n\nmodule.exports = sortBy;\n","/**\n * This is the web browser implementation of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = require('./debug');\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = 'undefined' != typeof chrome\n               && 'undefined' != typeof chrome.storage\n                  ? chrome.storage.local\n                  : localstorage();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n  '#0000CC', '#0000FF', '#0033CC', '#0033FF', '#0066CC', '#0066FF', '#0099CC',\n  '#0099FF', '#00CC00', '#00CC33', '#00CC66', '#00CC99', '#00CCCC', '#00CCFF',\n  '#3300CC', '#3300FF', '#3333CC', '#3333FF', '#3366CC', '#3366FF', '#3399CC',\n  '#3399FF', '#33CC00', '#33CC33', '#33CC66', '#33CC99', '#33CCCC', '#33CCFF',\n  '#6600CC', '#6600FF', '#6633CC', '#6633FF', '#66CC00', '#66CC33', '#9900CC',\n  '#9900FF', '#9933CC', '#9933FF', '#99CC00', '#99CC33', '#CC0000', '#CC0033',\n  '#CC0066', '#CC0099', '#CC00CC', '#CC00FF', '#CC3300', '#CC3333', '#CC3366',\n  '#CC3399', '#CC33CC', '#CC33FF', '#CC6600', '#CC6633', '#CC9900', '#CC9933',\n  '#CCCC00', '#CCCC33', '#FF0000', '#FF0033', '#FF0066', '#FF0099', '#FF00CC',\n  '#FF00FF', '#FF3300', '#FF3333', '#FF3366', '#FF3399', '#FF33CC', '#FF33FF',\n  '#FF6600', '#FF6633', '#FF9900', '#FF9933', '#FFCC00', '#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\nfunction useColors() {\n  // NB: In an Electron preload script, document will be defined but not fully\n  // initialized. Since we know we're in Chrome, we'll just detect this case\n  // explicitly\n  if (typeof window !== 'undefined' && window.process && window.process.type === 'renderer') {\n    return true;\n  }\n\n  // Internet Explorer and Edge do not support colors.\n  if (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n    return false;\n  }\n\n  // is webkit? http://stackoverflow.com/a/16459606/376773\n  // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n  return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n    // is firebug? http://stackoverflow.com/a/398120/376773\n    (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n    // is firefox >= v31?\n    // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n    (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||\n    // double check webkit in userAgent just in case we are in a worker\n    (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nexports.formatters.j = function(v) {\n  try {\n    return JSON.stringify(v);\n  } catch (err) {\n    return '[UnexpectedJSONParseError]: ' + err.message;\n  }\n};\n\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n  var useColors = this.useColors;\n\n  args[0] = (useColors ? '%c' : '')\n    + this.namespace\n    + (useColors ? ' %c' : ' ')\n    + args[0]\n    + (useColors ? '%c ' : ' ')\n    + '+' + exports.humanize(this.diff);\n\n  if (!useColors) return;\n\n  var c = 'color: ' + this.color;\n  args.splice(1, 0, c, 'color: inherit')\n\n  // the final \"%c\" is somewhat tricky, because there could be other\n  // arguments passed either before or after the %c, so we need to\n  // figure out the correct index to insert the CSS into\n  var index = 0;\n  var lastC = 0;\n  args[0].replace(/%[a-zA-Z%]/g, function(match) {\n    if ('%%' === match) return;\n    index++;\n    if ('%c' === match) {\n      // we only are interested in the *last* %c\n      // (the user may have provided their own)\n      lastC = index;\n    }\n  });\n\n  args.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.log()` when available.\n * No-op when `console.log` is not a \"function\".\n *\n * @api public\n */\n\nfunction log() {\n  // this hackery is required for IE8/9, where\n  // the `console.log` function doesn't have 'apply'\n  return 'object' === typeof console\n    && console.log\n    && Function.prototype.apply.call(console.log, console, arguments);\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\n\nfunction save(namespaces) {\n  try {\n    if (null == namespaces) {\n      exports.storage.removeItem('debug');\n    } else {\n      exports.storage.debug = namespaces;\n    }\n  } catch(e) {}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n  var r;\n  try {\n    r = exports.storage.debug;\n  } catch(e) {}\n\n  // If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n  if (!r && typeof process !== 'undefined' && 'env' in process) {\n    r = process.env.DEBUG;\n  }\n\n  return r;\n}\n\n/**\n * Enable namespaces listed in `localStorage.debug` initially.\n */\n\nexports.enable(load());\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n  try {\n    return window.localStorage;\n  } catch (e) {}\n}\n","// Components\nimport { VFadeTransition } from '../transitions';\nimport VIcon from '../VIcon'; // Mixins\n\nimport Colorable from '../../mixins/colorable';\nimport { inject as RegistrableInject } from '../../mixins/registrable'; // Directives\n\nimport ripple from '../../directives/ripple'; // Utilities\n\nimport { getSlot } from '../../util/helpers';\nimport mixins from '../../util/mixins';\nconst baseMixins = mixins(Colorable, RegistrableInject('expansionPanel', 'v-expansion-panel-header', 'v-expansion-panel'));\nexport default baseMixins.extend().extend({\n  name: 'v-expansion-panel-header',\n  directives: {\n    ripple\n  },\n  props: {\n    disableIconRotate: Boolean,\n    expandIcon: {\n      type: String,\n      default: '$expand'\n    },\n    hideActions: Boolean,\n    ripple: {\n      type: [Boolean, Object],\n      default: false\n    }\n  },\n  data: () => ({\n    hasMousedown: false\n  }),\n  computed: {\n    classes() {\n      return {\n        'v-expansion-panel-header--active': this.isActive,\n        'v-expansion-panel-header--mousedown': this.hasMousedown\n      };\n    },\n\n    isActive() {\n      return this.expansionPanel.isActive;\n    },\n\n    isDisabled() {\n      return this.expansionPanel.isDisabled;\n    },\n\n    isReadonly() {\n      return this.expansionPanel.isReadonly;\n    }\n\n  },\n\n  created() {\n    this.expansionPanel.registerHeader(this);\n  },\n\n  beforeDestroy() {\n    this.expansionPanel.unregisterHeader();\n  },\n\n  methods: {\n    onClick(e) {\n      this.$emit('click', e);\n    },\n\n    genIcon() {\n      const icon = getSlot(this, 'actions') || [this.$createElement(VIcon, this.expandIcon)];\n      return this.$createElement(VFadeTransition, [this.$createElement('div', {\n        staticClass: 'v-expansion-panel-header__icon',\n        class: {\n          'v-expansion-panel-header__icon--disable-rotate': this.disableIconRotate\n        },\n        directives: [{\n          name: 'show',\n          value: !this.isDisabled\n        }]\n      }, icon)]);\n    }\n\n  },\n\n  render(h) {\n    return h('button', this.setBackgroundColor(this.color, {\n      staticClass: 'v-expansion-panel-header',\n      class: this.classes,\n      attrs: {\n        tabindex: this.isDisabled ? -1 : null,\n        type: 'button',\n        'aria-expanded': this.isActive\n      },\n      directives: [{\n        name: 'ripple',\n        value: this.ripple\n      }],\n      on: { ...this.$listeners,\n        click: this.onClick,\n        mousedown: () => this.hasMousedown = true,\n        mouseup: () => this.hasMousedown = false\n      }\n    }), [getSlot(this, 'default', {\n      open: this.isActive\n    }, true), this.hideActions || this.genIcon()]);\n  }\n\n});\n//# sourceMappingURL=VExpansionPanelHeader.js.map","var getNative = require('./_getNative'),\n    root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\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 * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n  var length = array.length,\n      result = new array.constructor(length);\n\n  // Add properties assigned by `RegExp#exec`.\n  if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n    result.index = array.index;\n    result.input = array.input;\n  }\n  return result;\n}\n\nmodule.exports = initCloneArray;\n","const Utils = require('./utils')\nconst ECCode = require('./error-correction-code')\nconst ECLevel = require('./error-correction-level')\nconst Mode = require('./mode')\nconst VersionCheck = require('./version-check')\n\n// Generator polynomial used to encode version information\nconst G18 = (1 << 12) | (1 << 11) | (1 << 10) | (1 << 9) | (1 << 8) | (1 << 5) | (1 << 2) | (1 << 0)\nconst G18_BCH = Utils.getBCHDigit(G18)\n\nfunction getBestVersionForDataLength (mode, length, errorCorrectionLevel) {\n  for (let currentVersion = 1; currentVersion <= 40; currentVersion++) {\n    if (length <= exports.getCapacity(currentVersion, errorCorrectionLevel, mode)) {\n      return currentVersion\n    }\n  }\n\n  return undefined\n}\n\nfunction getReservedBitsCount (mode, version) {\n  // Character count indicator + mode indicator bits\n  return Mode.getCharCountIndicator(mode, version) + 4\n}\n\nfunction getTotalBitsFromDataArray (segments, version) {\n  let totalBits = 0\n\n  segments.forEach(function (data) {\n    const reservedBits = getReservedBitsCount(data.mode, version)\n    totalBits += reservedBits + data.getBitsLength()\n  })\n\n  return totalBits\n}\n\nfunction getBestVersionForMixedData (segments, errorCorrectionLevel) {\n  for (let currentVersion = 1; currentVersion <= 40; currentVersion++) {\n    const length = getTotalBitsFromDataArray(segments, currentVersion)\n    if (length <= exports.getCapacity(currentVersion, errorCorrectionLevel, Mode.MIXED)) {\n      return currentVersion\n    }\n  }\n\n  return undefined\n}\n\n/**\n * Returns version number from a value.\n * If value is not a valid version, returns defaultValue\n *\n * @param  {Number|String} value        QR Code version\n * @param  {Number}        defaultValue Fallback value\n * @return {Number}                     QR Code version number\n */\nexports.from = function from (value, defaultValue) {\n  if (VersionCheck.isValid(value)) {\n    return parseInt(value, 10)\n  }\n\n  return defaultValue\n}\n\n/**\n * Returns how much data can be stored with the specified QR code version\n * and error correction level\n *\n * @param  {Number} version              QR Code version (1-40)\n * @param  {Number} errorCorrectionLevel Error correction level\n * @param  {Mode}   mode                 Data mode\n * @return {Number}                      Quantity of storable data\n */\nexports.getCapacity = function getCapacity (version, errorCorrectionLevel, mode) {\n  if (!VersionCheck.isValid(version)) {\n    throw new Error('Invalid QR Code version')\n  }\n\n  // Use Byte mode as default\n  if (typeof mode === 'undefined') mode = Mode.BYTE\n\n  // Total codewords for this QR code version (Data + Error correction)\n  const totalCodewords = Utils.getSymbolTotalCodewords(version)\n\n  // Total number of error correction codewords\n  const ecTotalCodewords = ECCode.getTotalCodewordsCount(version, errorCorrectionLevel)\n\n  // Total number of data codewords\n  const dataTotalCodewordsBits = (totalCodewords - ecTotalCodewords) * 8\n\n  if (mode === Mode.MIXED) return dataTotalCodewordsBits\n\n  const usableBits = dataTotalCodewordsBits - getReservedBitsCount(mode, version)\n\n  // Return max number of storable codewords\n  switch (mode) {\n    case Mode.NUMERIC:\n      return Math.floor((usableBits / 10) * 3)\n\n    case Mode.ALPHANUMERIC:\n      return Math.floor((usableBits / 11) * 2)\n\n    case Mode.KANJI:\n      return Math.floor(usableBits / 13)\n\n    case Mode.BYTE:\n    default:\n      return Math.floor(usableBits / 8)\n  }\n}\n\n/**\n * Returns the minimum version needed to contain the amount of data\n *\n * @param  {Segment} data                    Segment of data\n * @param  {Number} [errorCorrectionLevel=H] Error correction level\n * @param  {Mode} mode                       Data mode\n * @return {Number}                          QR Code version\n */\nexports.getBestVersionForData = function getBestVersionForData (data, errorCorrectionLevel) {\n  let seg\n\n  const ecl = ECLevel.from(errorCorrectionLevel, ECLevel.M)\n\n  if (Array.isArray(data)) {\n    if (data.length > 1) {\n      return getBestVersionForMixedData(data, ecl)\n    }\n\n    if (data.length === 0) {\n      return 1\n    }\n\n    seg = data[0]\n  } else {\n    seg = data\n  }\n\n  return getBestVersionForDataLength(seg.mode, seg.getLength(), ecl)\n}\n\n/**\n * Returns version information with relative error correction bits\n *\n * The version information is included in QR Code symbols of version 7 or larger.\n * It consists of an 18-bit sequence containing 6 data bits,\n * with 12 error correction bits calculated using the (18, 6) Golay code.\n *\n * @param  {Number} version QR Code version\n * @return {Number}         Encoded version info bits\n */\nexports.getEncodedBits = function getEncodedBits (version) {\n  if (!VersionCheck.isValid(version) || version < 7) {\n    throw new Error('Invalid QR Code version')\n  }\n\n  let d = version << 12\n\n  while (Utils.getBCHDigit(d) - G18_BCH >= 0) {\n    d ^= (G18 << (Utils.getBCHDigit(d) - G18_BCH))\n  }\n\n  return (version << 12) | d\n}\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 cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n  var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n  return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nmodule.exports = cloneTypedArray;\n","// Mixins\nimport Colorable from '../colorable'; // Utilities\n\nimport mixins from '../../util/mixins';\nimport { kebabCase } from '../../util/helpers';\n/* @vue/component */\n\nexport default mixins(Colorable).extend({\n  methods: {\n    genPickerButton(prop, value, content, readonly = false, staticClass = '') {\n      const active = this[prop] === value;\n\n      const click = event => {\n        event.stopPropagation();\n        this.$emit(`update:${kebabCase(prop)}`, value);\n      };\n\n      return this.$createElement('div', {\n        staticClass: `v-picker__title__btn ${staticClass}`.trim(),\n        class: {\n          'v-picker__title__btn--active': active,\n          'v-picker__title__btn--readonly': readonly\n        },\n        on: active || readonly ? undefined : {\n          click\n        }\n      }, Array.isArray(content) ? content : [content]);\n    }\n\n  }\n});\n//# sourceMappingURL=index.js.map","const padStart = (string, targetLength, padString) => {\n  targetLength = targetLength >> 0;\n  string = String(string);\n  padString = String(padString);\n\n  if (string.length > targetLength) {\n    return String(string);\n  }\n\n  targetLength = targetLength - string.length;\n\n  if (targetLength > padString.length) {\n    padString += padString.repeat(targetLength / padString.length);\n  }\n\n  return padString.slice(0, targetLength) + String(string);\n};\n\nexport default ((n, length = 2) => padStart(n, length, '0'));\n//# sourceMappingURL=pad.js.map","var SelectingTimes;\n\n(function (SelectingTimes) {\n  SelectingTimes[SelectingTimes[\"Hour\"] = 1] = \"Hour\";\n  SelectingTimes[SelectingTimes[\"Minute\"] = 2] = \"Minute\";\n  SelectingTimes[SelectingTimes[\"Second\"] = 3] = \"Second\";\n})(SelectingTimes || (SelectingTimes = {}));\n\nexport { SelectingTimes };\n//# sourceMappingURL=SelectingTimes.js.map","import \"../../../src/components/VTimePicker/VTimePickerTitle.sass\"; // Mixins\n\nimport PickerButton from '../../mixins/picker-button'; // Utils\n\nimport { pad } from '../VDatePicker/util';\nimport mixins from '../../util/mixins';\nimport { SelectingTimes } from './SelectingTimes';\nexport default mixins(PickerButton\n/* @vue/component */\n).extend({\n  name: 'v-time-picker-title',\n  props: {\n    ampm: Boolean,\n    ampmReadonly: Boolean,\n    disabled: Boolean,\n    hour: Number,\n    minute: Number,\n    second: Number,\n    period: {\n      type: String,\n      validator: period => period === 'am' || period === 'pm'\n    },\n    readonly: Boolean,\n    useSeconds: Boolean,\n    selecting: Number\n  },\n  methods: {\n    genTime() {\n      let hour = this.hour;\n\n      if (this.ampm) {\n        hour = hour ? (hour - 1) % 12 + 1 : 12;\n      }\n\n      const displayedHour = this.hour == null ? '--' : this.ampm ? String(hour) : pad(hour);\n      const displayedMinute = this.minute == null ? '--' : pad(this.minute);\n      const titleContent = [this.genPickerButton('selecting', SelectingTimes.Hour, displayedHour, this.disabled), this.$createElement('span', ':'), this.genPickerButton('selecting', SelectingTimes.Minute, displayedMinute, this.disabled)];\n\n      if (this.useSeconds) {\n        const displayedSecond = this.second == null ? '--' : pad(this.second);\n        titleContent.push(this.$createElement('span', ':'));\n        titleContent.push(this.genPickerButton('selecting', SelectingTimes.Second, displayedSecond, this.disabled));\n      }\n\n      return this.$createElement('div', {\n        class: 'v-time-picker-title__time'\n      }, titleContent);\n    },\n\n    genAmPm() {\n      return this.$createElement('div', {\n        staticClass: 'v-time-picker-title__ampm',\n        class: {\n          'v-time-picker-title__ampm--readonly': this.ampmReadonly\n        }\n      }, [!this.ampmReadonly || this.period === 'am' ? this.genPickerButton('period', 'am', this.$vuetify.lang.t('$vuetify.timePicker.am'), this.disabled || this.readonly) : null, !this.ampmReadonly || this.period === 'pm' ? this.genPickerButton('period', 'pm', this.$vuetify.lang.t('$vuetify.timePicker.pm'), this.disabled || this.readonly) : null]);\n    }\n\n  },\n\n  render(h) {\n    const children = [this.genTime()];\n    this.ampm && children.push(this.genAmPm());\n    return h('div', {\n      staticClass: 'v-time-picker-title'\n    }, children);\n  }\n\n});\n//# sourceMappingURL=VTimePickerTitle.js.map","import \"../../../src/components/VTimePicker/VTimePickerClock.sass\"; // Mixins\n\nimport Colorable from '../../mixins/colorable';\nimport Themeable from '../../mixins/themeable'; // Types\n\nimport mixins from '../../util/mixins';\nexport default mixins(Colorable, Themeable\n/* @vue/component */\n).extend({\n  name: 'v-time-picker-clock',\n  props: {\n    allowedValues: Function,\n    ampm: Boolean,\n    disabled: Boolean,\n    double: Boolean,\n    format: {\n      type: Function,\n      default: val => val\n    },\n    max: {\n      type: Number,\n      required: true\n    },\n    min: {\n      type: Number,\n      required: true\n    },\n    scrollable: Boolean,\n    readonly: Boolean,\n    rotate: {\n      type: Number,\n      default: 0\n    },\n    step: {\n      type: Number,\n      default: 1\n    },\n    value: Number\n  },\n\n  data() {\n    return {\n      inputValue: this.value,\n      isDragging: false,\n      valueOnMouseDown: null,\n      valueOnMouseUp: null\n    };\n  },\n\n  computed: {\n    count() {\n      return this.max - this.min + 1;\n    },\n\n    degreesPerUnit() {\n      return 360 / this.roundCount;\n    },\n\n    degrees() {\n      return this.degreesPerUnit * Math.PI / 180;\n    },\n\n    displayedValue() {\n      return this.value == null ? this.min : this.value;\n    },\n\n    innerRadiusScale() {\n      return 0.62;\n    },\n\n    roundCount() {\n      return this.double ? this.count / 2 : this.count;\n    }\n\n  },\n  watch: {\n    value(value) {\n      this.inputValue = value;\n    }\n\n  },\n  methods: {\n    wheel(e) {\n      e.preventDefault();\n      const delta = Math.sign(-e.deltaY || 1);\n      let value = this.displayedValue;\n\n      do {\n        value = value + delta;\n        value = (value - this.min + this.count) % this.count + this.min;\n      } while (!this.isAllowed(value) && value !== this.displayedValue);\n\n      if (value !== this.displayedValue) {\n        this.update(value);\n      }\n    },\n\n    isInner(value) {\n      return this.double && value - this.min >= this.roundCount;\n    },\n\n    handScale(value) {\n      return this.isInner(value) ? this.innerRadiusScale : 1;\n    },\n\n    isAllowed(value) {\n      return !this.allowedValues || this.allowedValues(value);\n    },\n\n    genValues() {\n      const children = [];\n\n      for (let value = this.min; value <= this.max; value = value + this.step) {\n        const color = value === this.value && (this.color || 'accent');\n        children.push(this.$createElement('span', this.setBackgroundColor(color, {\n          staticClass: 'v-time-picker-clock__item',\n          class: {\n            'v-time-picker-clock__item--active': value === this.displayedValue,\n            'v-time-picker-clock__item--disabled': this.disabled || !this.isAllowed(value)\n          },\n          style: this.getTransform(value),\n          domProps: {\n            innerHTML: `<span>${this.format(value)}</span>`\n          }\n        })));\n      }\n\n      return children;\n    },\n\n    genHand() {\n      const scale = `scaleY(${this.handScale(this.displayedValue)})`;\n      const angle = this.rotate + this.degreesPerUnit * (this.displayedValue - this.min);\n      const color = this.value != null && (this.color || 'accent');\n      return this.$createElement('div', this.setBackgroundColor(color, {\n        staticClass: 'v-time-picker-clock__hand',\n        class: {\n          'v-time-picker-clock__hand--inner': this.isInner(this.value)\n        },\n        style: {\n          transform: `rotate(${angle}deg) ${scale}`\n        }\n      }));\n    },\n\n    getTransform(i) {\n      const {\n        x,\n        y\n      } = this.getPosition(i);\n      return {\n        left: `${50 + x * 50}%`,\n        top: `${50 + y * 50}%`\n      };\n    },\n\n    getPosition(value) {\n      const rotateRadians = this.rotate * Math.PI / 180;\n      return {\n        x: Math.sin((value - this.min) * this.degrees + rotateRadians) * this.handScale(value),\n        y: -Math.cos((value - this.min) * this.degrees + rotateRadians) * this.handScale(value)\n      };\n    },\n\n    onMouseDown(e) {\n      e.preventDefault();\n      this.valueOnMouseDown = null;\n      this.valueOnMouseUp = null;\n      this.isDragging = true;\n      this.onDragMove(e);\n    },\n\n    onMouseUp(e) {\n      e.stopPropagation();\n      this.isDragging = false;\n\n      if (this.valueOnMouseUp !== null && this.isAllowed(this.valueOnMouseUp)) {\n        this.$emit('change', this.valueOnMouseUp);\n      }\n    },\n\n    onDragMove(e) {\n      e.preventDefault();\n      if (!this.isDragging && e.type !== 'click' || !this.$refs.clock) return;\n      const {\n        width,\n        top,\n        left\n      } = this.$refs.clock.getBoundingClientRect();\n      const {\n        width: innerWidth\n      } = this.$refs.innerClock.getBoundingClientRect();\n      const {\n        clientX,\n        clientY\n      } = 'touches' in e ? e.touches[0] : e;\n      const center = {\n        x: width / 2,\n        y: -width / 2\n      };\n      const coords = {\n        x: clientX - left,\n        y: top - clientY\n      };\n      const handAngle = Math.round(this.angle(center, coords) - this.rotate + 360) % 360;\n      const insideClick = this.double && this.euclidean(center, coords) < (innerWidth + innerWidth * this.innerRadiusScale) / 4;\n      const checksCount = Math.ceil(15 / this.degreesPerUnit);\n      let value;\n\n      for (let i = 0; i < checksCount; i++) {\n        value = this.angleToValue(handAngle + i * this.degreesPerUnit, insideClick);\n        if (this.isAllowed(value)) return this.setMouseDownValue(value);\n        value = this.angleToValue(handAngle - i * this.degreesPerUnit, insideClick);\n        if (this.isAllowed(value)) return this.setMouseDownValue(value);\n      }\n    },\n\n    angleToValue(angle, insideClick) {\n      const value = (Math.round(angle / this.degreesPerUnit) + (insideClick ? this.roundCount : 0)) % this.count + this.min; // Necessary to fix edge case when selecting left part of the value(s) at 12 o'clock\n\n      if (angle < 360 - this.degreesPerUnit / 2) return value;\n      return insideClick ? this.max - this.roundCount + 1 : this.min;\n    },\n\n    setMouseDownValue(value) {\n      if (this.valueOnMouseDown === null) {\n        this.valueOnMouseDown = value;\n      }\n\n      this.valueOnMouseUp = value;\n      this.update(value);\n    },\n\n    update(value) {\n      if (this.inputValue !== value) {\n        this.inputValue = value;\n        this.$emit('input', value);\n      }\n    },\n\n    euclidean(p0, p1) {\n      const dx = p1.x - p0.x;\n      const dy = p1.y - p0.y;\n      return Math.sqrt(dx * dx + dy * dy);\n    },\n\n    angle(center, p1) {\n      const value = 2 * Math.atan2(p1.y - center.y - this.euclidean(center, p1), p1.x - center.x);\n      return Math.abs(value * 180 / Math.PI);\n    }\n\n  },\n\n  render(h) {\n    const data = {\n      staticClass: 'v-time-picker-clock',\n      class: {\n        'v-time-picker-clock--indeterminate': this.value == null,\n        ...this.themeClasses\n      },\n      on: this.readonly || this.disabled ? undefined : {\n        mousedown: this.onMouseDown,\n        mouseup: this.onMouseUp,\n        mouseleave: e => this.isDragging && this.onMouseUp(e),\n        touchstart: this.onMouseDown,\n        touchend: this.onMouseUp,\n        mousemove: this.onDragMove,\n        touchmove: this.onDragMove\n      },\n      ref: 'clock'\n    };\n\n    if (this.scrollable && data.on) {\n      data.on.wheel = this.wheel;\n    }\n\n    return h('div', data, [h('div', {\n      staticClass: 'v-time-picker-clock__inner',\n      ref: 'innerClock'\n    }, [this.genHand(), this.genValues()])]);\n  }\n\n});\n//# sourceMappingURL=VTimePickerClock.js.map","import \"../../../src/components/VPicker/VPicker.sass\";\nimport \"../../../src/components/VCard/VCard.sass\"; // Mixins\n\nimport Colorable from '../../mixins/colorable';\nimport Elevatable from '../../mixins/elevatable';\nimport Themeable from '../../mixins/themeable'; // Helpers\n\nimport { convertToUnit } from '../../util/helpers';\nimport mixins from '../../util/mixins';\n/* @vue/component */\n\nexport default mixins(Colorable, Elevatable, Themeable).extend({\n  name: 'v-picker',\n  props: {\n    flat: Boolean,\n    fullWidth: Boolean,\n    landscape: Boolean,\n    noTitle: Boolean,\n    transition: {\n      type: String,\n      default: 'fade-transition'\n    },\n    width: {\n      type: [Number, String],\n      default: 290\n    }\n  },\n  computed: {\n    computedTitleColor() {\n      const defaultTitleColor = this.isDark ? false : this.color || 'primary';\n      return this.color || defaultTitleColor;\n    }\n\n  },\n  methods: {\n    genTitle() {\n      return this.$createElement('div', this.setBackgroundColor(this.computedTitleColor, {\n        staticClass: 'v-picker__title',\n        class: {\n          'v-picker__title--landscape': this.landscape\n        }\n      }), this.$slots.title);\n    },\n\n    genBodyTransition() {\n      return this.$createElement('transition', {\n        props: {\n          name: this.transition\n        }\n      }, this.$slots.default);\n    },\n\n    genBody() {\n      return this.$createElement('div', {\n        staticClass: 'v-picker__body',\n        class: {\n          'v-picker__body--no-title': this.noTitle,\n          ...this.themeClasses\n        },\n        style: this.fullWidth ? undefined : {\n          width: convertToUnit(this.width)\n        }\n      }, [this.genBodyTransition()]);\n    },\n\n    genActions() {\n      return this.$createElement('div', {\n        staticClass: 'v-picker__actions v-card__actions',\n        class: {\n          'v-picker__actions--no-title': this.noTitle\n        }\n      }, this.$slots.actions);\n    }\n\n  },\n\n  render(h) {\n    return h('div', {\n      staticClass: 'v-picker v-card',\n      class: {\n        'v-picker--flat': this.flat,\n        'v-picker--landscape': this.landscape,\n        'v-picker--full-width': this.fullWidth,\n        ...this.themeClasses,\n        ...this.elevationClasses\n      }\n    }, [this.$slots.title ? this.genTitle() : null, this.genBody(), this.$slots.actions ? this.genActions() : null]);\n  }\n\n});\n//# sourceMappingURL=VPicker.js.map","import VPicker from './VPicker';\nexport { VPicker };\nexport default VPicker;\n//# sourceMappingURL=index.js.map","// Components\nimport VPicker from '../../components/VPicker'; // Mixins\n\nimport Colorable from '../colorable';\nimport Elevatable from '../../mixins/elevatable';\nimport Themeable from '../themeable'; // Utils\n\nimport mixins from '../../util/mixins';\nexport default mixins(Colorable, Elevatable, Themeable\n/* @vue/component */\n).extend({\n  name: 'picker',\n  props: {\n    flat: Boolean,\n    fullWidth: Boolean,\n    headerColor: String,\n    landscape: Boolean,\n    noTitle: Boolean,\n    width: {\n      type: [Number, String],\n      default: 290\n    }\n  },\n  methods: {\n    genPickerTitle() {\n      return null;\n    },\n\n    genPickerBody() {\n      return null;\n    },\n\n    genPickerActionsSlot() {\n      return this.$scopedSlots.default ? this.$scopedSlots.default({\n        save: this.save,\n        cancel: this.cancel\n      }) : this.$slots.default;\n    },\n\n    genPicker(staticClass) {\n      const children = [];\n\n      if (!this.noTitle) {\n        const title = this.genPickerTitle();\n        title && children.push(title);\n      }\n\n      const body = this.genPickerBody();\n      body && children.push(body);\n      children.push(this.$createElement('template', {\n        slot: 'actions'\n      }, [this.genPickerActionsSlot()]));\n      return this.$createElement(VPicker, {\n        staticClass,\n        props: {\n          color: this.headerColor || this.color,\n          dark: this.dark,\n          elevation: this.elevation,\n          flat: this.flat,\n          fullWidth: this.fullWidth,\n          landscape: this.landscape,\n          light: this.light,\n          width: this.width,\n          noTitle: this.noTitle\n        }\n      }, children);\n    }\n\n  }\n});\n//# sourceMappingURL=index.js.map","// Components\nimport VTimePickerTitle from './VTimePickerTitle';\nimport VTimePickerClock from './VTimePickerClock'; // Mixins\n\nimport Picker from '../../mixins/picker';\nimport PickerButton from '../../mixins/picker-button'; // Utils\n\nimport { createRange } from '../../util/helpers';\nimport pad from '../VDatePicker/util/pad';\nimport mixins from '../../util/mixins';\nimport { SelectingTimes } from './SelectingTimes';\nconst rangeHours24 = createRange(24);\nconst rangeHours12am = createRange(12);\nconst rangeHours12pm = rangeHours12am.map(v => v + 12);\nconst range60 = createRange(60);\nconst selectingNames = {\n  1: 'hour',\n  2: 'minute',\n  3: 'second'\n};\nexport { SelectingTimes };\nexport default mixins(Picker, PickerButton\n/* @vue/component */\n).extend({\n  name: 'v-time-picker',\n  props: {\n    allowedHours: [Function, Array],\n    allowedMinutes: [Function, Array],\n    allowedSeconds: [Function, Array],\n    disabled: Boolean,\n    format: {\n      type: String,\n      default: 'ampm',\n\n      validator(val) {\n        return ['ampm', '24hr'].includes(val);\n      }\n\n    },\n    min: String,\n    max: String,\n    readonly: Boolean,\n    scrollable: Boolean,\n    useSeconds: Boolean,\n    value: null,\n    ampmInTitle: Boolean\n  },\n\n  data() {\n    return {\n      inputHour: null,\n      inputMinute: null,\n      inputSecond: null,\n      lazyInputHour: null,\n      lazyInputMinute: null,\n      lazyInputSecond: null,\n      period: 'am',\n      selecting: SelectingTimes.Hour\n    };\n  },\n\n  computed: {\n    selectingHour: {\n      get() {\n        return this.selecting === SelectingTimes.Hour;\n      },\n\n      set(v) {\n        this.selecting = SelectingTimes.Hour;\n      }\n\n    },\n    selectingMinute: {\n      get() {\n        return this.selecting === SelectingTimes.Minute;\n      },\n\n      set(v) {\n        this.selecting = SelectingTimes.Minute;\n      }\n\n    },\n    selectingSecond: {\n      get() {\n        return this.selecting === SelectingTimes.Second;\n      },\n\n      set(v) {\n        this.selecting = SelectingTimes.Second;\n      }\n\n    },\n\n    isAllowedHourCb() {\n      let cb;\n\n      if (this.allowedHours instanceof Array) {\n        cb = val => this.allowedHours.includes(val);\n      } else {\n        cb = this.allowedHours;\n      }\n\n      if (!this.min && !this.max) return cb;\n      const minHour = this.min ? Number(this.min.split(':')[0]) : 0;\n      const maxHour = this.max ? Number(this.max.split(':')[0]) : 23;\n      return val => {\n        return val >= minHour * 1 && val <= maxHour * 1 && (!cb || cb(val));\n      };\n    },\n\n    isAllowedMinuteCb() {\n      let cb;\n      const isHourAllowed = !this.isAllowedHourCb || this.inputHour === null || this.isAllowedHourCb(this.inputHour);\n\n      if (this.allowedMinutes instanceof Array) {\n        cb = val => this.allowedMinutes.includes(val);\n      } else {\n        cb = this.allowedMinutes;\n      }\n\n      if (!this.min && !this.max) {\n        return isHourAllowed ? cb : () => false;\n      }\n\n      const [minHour, minMinute] = this.min ? this.min.split(':').map(Number) : [0, 0];\n      const [maxHour, maxMinute] = this.max ? this.max.split(':').map(Number) : [23, 59];\n      const minTime = minHour * 60 + minMinute * 1;\n      const maxTime = maxHour * 60 + maxMinute * 1;\n      return val => {\n        const time = 60 * this.inputHour + val;\n        return time >= minTime && time <= maxTime && isHourAllowed && (!cb || cb(val));\n      };\n    },\n\n    isAllowedSecondCb() {\n      let cb;\n      const isHourAllowed = !this.isAllowedHourCb || this.inputHour === null || this.isAllowedHourCb(this.inputHour);\n      const isMinuteAllowed = isHourAllowed && (!this.isAllowedMinuteCb || this.inputMinute === null || this.isAllowedMinuteCb(this.inputMinute));\n\n      if (this.allowedSeconds instanceof Array) {\n        cb = val => this.allowedSeconds.includes(val);\n      } else {\n        cb = this.allowedSeconds;\n      }\n\n      if (!this.min && !this.max) {\n        return isMinuteAllowed ? cb : () => false;\n      }\n\n      const [minHour, minMinute, minSecond] = this.min ? this.min.split(':').map(Number) : [0, 0, 0];\n      const [maxHour, maxMinute, maxSecond] = this.max ? this.max.split(':').map(Number) : [23, 59, 59];\n      const minTime = minHour * 3600 + minMinute * 60 + (minSecond || 0) * 1;\n      const maxTime = maxHour * 3600 + maxMinute * 60 + (maxSecond || 0) * 1;\n      return val => {\n        const time = 3600 * this.inputHour + 60 * this.inputMinute + val;\n        return time >= minTime && time <= maxTime && isMinuteAllowed && (!cb || cb(val));\n      };\n    },\n\n    isAmPm() {\n      return this.format === 'ampm';\n    }\n\n  },\n  watch: {\n    value: 'setInputData'\n  },\n\n  mounted() {\n    this.setInputData(this.value);\n    this.$on('update:period', this.setPeriod);\n  },\n\n  methods: {\n    genValue() {\n      if (this.inputHour != null && this.inputMinute != null && (!this.useSeconds || this.inputSecond != null)) {\n        return `${pad(this.inputHour)}:${pad(this.inputMinute)}` + (this.useSeconds ? `:${pad(this.inputSecond)}` : '');\n      }\n\n      return null;\n    },\n\n    emitValue() {\n      const value = this.genValue();\n      if (value !== null) this.$emit('input', value);\n    },\n\n    setPeriod(period) {\n      this.period = period;\n\n      if (this.inputHour != null) {\n        const newHour = this.inputHour + (period === 'am' ? -12 : 12);\n        this.inputHour = this.firstAllowed('hour', newHour);\n        this.emitValue();\n      }\n    },\n\n    setInputData(value) {\n      if (value == null || value === '') {\n        this.inputHour = null;\n        this.inputMinute = null;\n        this.inputSecond = null;\n      } else if (value instanceof Date) {\n        this.inputHour = value.getHours();\n        this.inputMinute = value.getMinutes();\n        this.inputSecond = value.getSeconds();\n      } else {\n        const [, hour, minute,, second, period] = value.trim().toLowerCase().match(/^(\\d+):(\\d+)(:(\\d+))?([ap]m)?$/) || new Array(6);\n        this.inputHour = period ? this.convert12to24(parseInt(hour, 10), period) : parseInt(hour, 10);\n        this.inputMinute = parseInt(minute, 10);\n        this.inputSecond = parseInt(second || 0, 10);\n      }\n\n      this.period = this.inputHour == null || this.inputHour < 12 ? 'am' : 'pm';\n    },\n\n    convert24to12(hour) {\n      return hour ? (hour - 1) % 12 + 1 : 12;\n    },\n\n    convert12to24(hour, period) {\n      return hour % 12 + (period === 'pm' ? 12 : 0);\n    },\n\n    onInput(value) {\n      if (this.selecting === SelectingTimes.Hour) {\n        this.inputHour = this.isAmPm ? this.convert12to24(value, this.period) : value;\n      } else if (this.selecting === SelectingTimes.Minute) {\n        this.inputMinute = value;\n      } else {\n        this.inputSecond = value;\n      }\n\n      this.emitValue();\n    },\n\n    onChange(value) {\n      this.$emit(`click:${selectingNames[this.selecting]}`, value);\n      const emitChange = this.selecting === (this.useSeconds ? SelectingTimes.Second : SelectingTimes.Minute);\n\n      if (this.selecting === SelectingTimes.Hour) {\n        this.selecting = SelectingTimes.Minute;\n      } else if (this.useSeconds && this.selecting === SelectingTimes.Minute) {\n        this.selecting = SelectingTimes.Second;\n      }\n\n      if (this.inputHour === this.lazyInputHour && this.inputMinute === this.lazyInputMinute && (!this.useSeconds || this.inputSecond === this.lazyInputSecond)) return;\n      const time = this.genValue();\n      if (time === null) return;\n      this.lazyInputHour = this.inputHour;\n      this.lazyInputMinute = this.inputMinute;\n      this.useSeconds && (this.lazyInputSecond = this.inputSecond);\n      emitChange && this.$emit('change', time);\n    },\n\n    firstAllowed(type, value) {\n      const allowedFn = type === 'hour' ? this.isAllowedHourCb : type === 'minute' ? this.isAllowedMinuteCb : this.isAllowedSecondCb;\n      if (!allowedFn) return value; // TODO: clean up\n\n      const range = type === 'minute' ? range60 : type === 'second' ? range60 : this.isAmPm ? value < 12 ? rangeHours12am : rangeHours12pm : rangeHours24;\n      const first = range.find(v => allowedFn((v + value) % range.length + range[0]));\n      return ((first || 0) + value) % range.length + range[0];\n    },\n\n    genClock() {\n      return this.$createElement(VTimePickerClock, {\n        props: {\n          allowedValues: this.selecting === SelectingTimes.Hour ? this.isAllowedHourCb : this.selecting === SelectingTimes.Minute ? this.isAllowedMinuteCb : this.isAllowedSecondCb,\n          color: this.color,\n          dark: this.dark,\n          disabled: this.disabled,\n          double: this.selecting === SelectingTimes.Hour && !this.isAmPm,\n          format: this.selecting === SelectingTimes.Hour ? this.isAmPm ? this.convert24to12 : val => val : val => pad(val, 2),\n          light: this.light,\n          max: this.selecting === SelectingTimes.Hour ? this.isAmPm && this.period === 'am' ? 11 : 23 : 59,\n          min: this.selecting === SelectingTimes.Hour && this.isAmPm && this.period === 'pm' ? 12 : 0,\n          readonly: this.readonly,\n          scrollable: this.scrollable,\n          size: Number(this.width) - (!this.fullWidth && this.landscape ? 80 : 20),\n          step: this.selecting === SelectingTimes.Hour ? 1 : 5,\n          value: this.selecting === SelectingTimes.Hour ? this.inputHour : this.selecting === SelectingTimes.Minute ? this.inputMinute : this.inputSecond\n        },\n        on: {\n          input: this.onInput,\n          change: this.onChange\n        },\n        ref: 'clock'\n      });\n    },\n\n    genClockAmPm() {\n      return this.$createElement('div', this.setTextColor(this.color || 'primary', {\n        staticClass: 'v-time-picker-clock__ampm'\n      }), [this.genPickerButton('period', 'am', this.$vuetify.lang.t('$vuetify.timePicker.am'), this.disabled || this.readonly), this.genPickerButton('period', 'pm', this.$vuetify.lang.t('$vuetify.timePicker.pm'), this.disabled || this.readonly)]);\n    },\n\n    genPickerBody() {\n      return this.$createElement('div', {\n        staticClass: 'v-time-picker-clock__container',\n        key: this.selecting\n      }, [!this.ampmInTitle && this.isAmPm && this.genClockAmPm(), this.genClock()]);\n    },\n\n    genPickerTitle() {\n      return this.$createElement(VTimePickerTitle, {\n        props: {\n          ampm: this.isAmPm,\n          ampmReadonly: this.isAmPm && !this.ampmInTitle,\n          disabled: this.disabled,\n          hour: this.inputHour,\n          minute: this.inputMinute,\n          second: this.inputSecond,\n          period: this.period,\n          readonly: this.readonly,\n          useSeconds: this.useSeconds,\n          selecting: this.selecting\n        },\n        on: {\n          'update:selecting': value => this.selecting = value,\n          'update:period': period => this.$emit('update:period', period)\n        },\n        ref: 'title',\n        slot: 'title'\n      });\n    }\n\n  },\n\n  render() {\n    return this.genPicker('v-picker--time');\n  }\n\n});\n//# sourceMappingURL=VTimePicker.js.map","import Vue from 'vue';\nexport default Vue.extend({\n  name: 'elevatable',\n  props: {\n    elevation: [Number, String]\n  },\n  computed: {\n    computedElevation() {\n      return this.elevation;\n    },\n\n    elevationClasses() {\n      const elevation = this.computedElevation;\n      if (elevation == null) return {};\n      if (isNaN(parseInt(elevation))) return {};\n      return {\n        [`elevation-${this.elevation}`]: true\n      };\n    }\n\n  }\n});\n//# sourceMappingURL=index.js.map","\n/**\n * Module exports.\n *\n * Logic borrowed from Modernizr:\n *\n *   - https://github.com/Modernizr/Modernizr/blob/master/feature-detects/cors.js\n */\n\ntry {\n  module.exports = typeof XMLHttpRequest !== 'undefined' &&\n    'withCredentials' in new XMLHttpRequest();\n} catch (err) {\n  // if XMLHttp support is disabled in IE then it will throw\n  // when trying to create\n  module.exports = false;\n}\n","(function(){/*\n\n Copyright The Closure Library Authors.\n SPDX-License-Identifier: Apache-2.0\n*/\nvar aa=this||self;function h(a,b){function c(){}c.prototype=b.prototype;a.Ca=b.prototype;a.prototype=new c;a.prototype.constructor=a;a.Ia=function(d,e,f){for(var g=Array(arguments.length-2),l=2;l<arguments.length;l++)g[l-2]=arguments[l];return b.prototype[e].apply(d,g)}};function ba(a){var b=[];let c=0;for(var d in a)b[c++]=a[d];return b};function ca(a,b){this.h=a;this.g={};for(a=0;a<b.length;a++){var c=b[a];this.g[c.g]=c}}function da(a){a=ba(a.g);a.sort(function(b,c){return b.g-c.g});return a};function ea(a,b){this.g=a;this.l=!!b.fa;this.h=b.i;this.s=b.type;this.o=!1;switch(this.h){case fa:case ha:case ia:case ja:case ka:case la:case ma:this.o=!0}this.j=b.defaultValue}var ma=1,la=2,fa=3,ha=4,ia=6,ja=16,ka=18;function k(){this.h={};this.j=this.m().g;this.g=this.l=null}k.prototype.has=function(a){return m(this,a.g)};k.prototype.get=function(a,b){return n(this,a.g,b)};k.prototype.set=function(a,b){p(this,a.g,b)};k.prototype.add=function(a,b){na(this,a.g,b)};\nfunction oa(a,b){for(var c=da(a.m()),d=0;d<c.length;d++){var e=c[d],f=e.g;if(m(b,f)){a.g&&delete a.g[e.g];var g=11==e.h||10==e.h;if(e.l){e=r(b,f);for(var l=0;l<e.length;l++)na(a,f,g?e[l].clone():e[l])}else e=t(b,f),g?(g=t(a,f))?oa(g,e):p(a,f,e.clone()):p(a,f,e)}}}k.prototype.clone=function(){var a=new this.constructor;a!=this&&(a.h={},a.g&&(a.g={}),oa(a,this));return a};function m(a,b){return null!=a.h[b]}\nfunction t(a,b){var c=a.h[b];if(null==c)return null;if(a.l){if(!(b in a.g)){var d=a.l,e=a.j[b];if(null!=c)if(e.l){for(var f=[],g=0;g<c.length;g++)f[g]=d.h(e,c[g]);c=f}else c=d.h(e,c);return a.g[b]=c}return a.g[b]}return c}function n(a,b,c){var d=t(a,b);return a.j[b].l?d[c||0]:d}function u(a,b){if(m(a,b))a=n(a,b,void 0);else a:{a=a.j[b];if(void 0===a.j)if(b=a.s,b===Boolean)a.j=!1;else if(b===Number)a.j=0;else if(b===String)a.j=a.o?\"0\":\"\";else{a=new b;break a}a=a.j}return a}\nfunction r(a,b){return t(a,b)||[]}function v(a,b){return a.j[b].l?m(a,b)?a.h[b].length:0:m(a,b)?1:0}function p(a,b,c){a.h[b]=c;a.g&&(a.g[b]=c)}function na(a,b,c){a.h[b]||(a.h[b]=[]);a.h[b].push(c);a.g&&delete a.g[b]}function w(a,b){var c=[],d;for(d in b)0!=d&&c.push(new ea(d,b[d]));return new ca(a,c)};function x(){}x.prototype.g=function(a){new a.h;throw Error(\"Unimplemented\");};x.prototype.h=function(a,b){if(11==a.h||10==a.h)return b instanceof k?b:this.g(a.s.prototype.m(),b);if(14==a.h)return\"string\"===typeof b&&pa.test(b)&&(a=Number(b),0<a)?a:b;if(!a.o)return b;a=a.s;if(a===String){if(\"number\"===typeof b)return String(b)}else if(a===Number&&\"string\"===typeof b&&(\"Infinity\"===b||\"-Infinity\"===b||\"NaN\"===b||pa.test(b)))return Number(b);return b};var pa=/^-?[0-9]+$/;function qa(){}h(qa,x);qa.prototype.g=function(a,b){a=new a.h;a.l=this;a.h=b;a.g={};return a};function y(){}h(y,qa);y.prototype.h=function(a,b){return 8==a.h?!!b:x.prototype.h.apply(this,arguments)};y.prototype.g=function(a,b){return y.Ca.g.call(this,a,b)};function z(a,b){null!=a&&this.g.apply(this,arguments)}z.prototype.h=\"\";z.prototype.set=function(a){this.h=\"\"+a};z.prototype.g=function(a,b,c){this.h+=String(a);if(null!=b)for(let d=1;d<arguments.length;d++)this.h+=arguments[d];return this};function A(a){a.h=\"\"}z.prototype.toString=function(){return this.h};/*\n\n Protocol Buffer 2 Copyright 2008 Google Inc.\n All other code copyright its respective owners.\n Copyright (C) 2010 The Libphonenumber Authors\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n*/\nfunction B(){k.call(this)}h(B,k);var ra=null;function C(){k.call(this)}h(C,k);var sa=null;function D(){k.call(this)}h(D,k);var ta=null;D.prototype.ha=function(){return n(this,10)};\nB.prototype.m=function(){var a=ra;a||(ra=a=w(B,{0:{name:\"NumberFormat\",ma:\"i18n.phonenumbers.NumberFormat\"},1:{name:\"pattern\",required:!0,i:9,type:String},2:{name:\"format\",required:!0,i:9,type:String},3:{name:\"leading_digits_pattern\",fa:!0,i:9,type:String},4:{name:\"national_prefix_formatting_rule\",i:9,type:String},6:{name:\"national_prefix_optional_when_formatting\",i:8,defaultValue:!1,type:Boolean},5:{name:\"domestic_carrier_code_formatting_rule\",i:9,type:String}}));return a};B.m=B.prototype.m;\nC.prototype.m=function(){var a=sa;a||(sa=a=w(C,{0:{name:\"PhoneNumberDesc\",ma:\"i18n.phonenumbers.PhoneNumberDesc\"},2:{name:\"national_number_pattern\",i:9,type:String},9:{name:\"possible_length\",fa:!0,i:5,type:Number},10:{name:\"possible_length_local_only\",fa:!0,i:5,type:Number},6:{name:\"example_number\",i:9,type:String}}));return a};C.m=C.prototype.m;\nD.prototype.m=function(){var a=ta;a||(ta=a=w(D,{0:{name:\"PhoneMetadata\",ma:\"i18n.phonenumbers.PhoneMetadata\"},1:{name:\"general_desc\",i:11,type:C},2:{name:\"fixed_line\",i:11,type:C},3:{name:\"mobile\",i:11,type:C},4:{name:\"toll_free\",i:11,type:C},5:{name:\"premium_rate\",i:11,type:C},6:{name:\"shared_cost\",i:11,type:C},7:{name:\"personal_number\",i:11,type:C},8:{name:\"voip\",i:11,type:C},21:{name:\"pager\",i:11,type:C},25:{name:\"uan\",i:11,type:C},27:{name:\"emergency\",i:11,type:C},28:{name:\"voicemail\",i:11,type:C},\n29:{name:\"short_code\",i:11,type:C},30:{name:\"standard_rate\",i:11,type:C},31:{name:\"carrier_specific\",i:11,type:C},33:{name:\"sms_services\",i:11,type:C},24:{name:\"no_international_dialling\",i:11,type:C},9:{name:\"id\",required:!0,i:9,type:String},10:{name:\"country_code\",i:5,type:Number},11:{name:\"international_prefix\",i:9,type:String},17:{name:\"preferred_international_prefix\",i:9,type:String},12:{name:\"national_prefix\",i:9,type:String},13:{name:\"preferred_extn_prefix\",i:9,type:String},15:{name:\"national_prefix_for_parsing\",\ni:9,type:String},16:{name:\"national_prefix_transform_rule\",i:9,type:String},18:{name:\"same_mobile_and_fixed_line_pattern\",i:8,defaultValue:!1,type:Boolean},19:{name:\"number_format\",fa:!0,i:11,type:B},20:{name:\"intl_number_format\",fa:!0,i:11,type:B},22:{name:\"main_country_for_code\",i:8,defaultValue:!1,type:Boolean},23:{name:\"leading_digits\",i:9,type:String},26:{name:\"leading_zero_possible\",i:8,defaultValue:!1,type:Boolean}}));return a};D.m=D.prototype.m;function E(){k.call(this)}h(E,k);var ua=null;E.prototype.ha=function(){return n(this,1)};var va={Ha:0,Ga:1,Fa:5,Ea:10,Da:20};\nE.prototype.m=function(){var a=ua;a||(ua=a=w(E,{0:{name:\"PhoneNumber\",ma:\"i18n.phonenumbers.PhoneNumber\"},1:{name:\"country_code\",required:!0,i:5,type:Number},2:{name:\"national_number\",required:!0,i:4,type:Number},3:{name:\"extension\",i:9,type:String},4:{name:\"italian_leading_zero\",i:8,type:Boolean},8:{name:\"number_of_leading_zeros\",i:5,defaultValue:1,type:Number},5:{name:\"raw_input\",i:9,type:String},6:{name:\"country_code_source\",i:14,defaultValue:0,type:va},7:{name:\"preferred_domestic_carrier_code\",\ni:9,type:String}}));return a};E.ctor=E;E.ctor.m=E.prototype.m;/*\n\n Copyright (C) 2010 The Libphonenumber Authors\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n*/\nvar F={1:\"US AG AI AS BB BM BS CA DM DO GD GU JM KN KY LC MP MS PR SX TC TT VC VG VI\".split(\" \"),7:[\"RU\",\"KZ\"],20:[\"EG\"],27:[\"ZA\"],30:[\"GR\"],31:[\"NL\"],32:[\"BE\"],33:[\"FR\"],34:[\"ES\"],36:[\"HU\"],39:[\"IT\",\"VA\"],40:[\"RO\"],41:[\"CH\"],43:[\"AT\"],44:[\"GB\",\"GG\",\"IM\",\"JE\"],45:[\"DK\"],46:[\"SE\"],47:[\"NO\",\"SJ\"],48:[\"PL\"],49:[\"DE\"],51:[\"PE\"],52:[\"MX\"],53:[\"CU\"],54:[\"AR\"],55:[\"BR\"],56:[\"CL\"],57:[\"CO\"],58:[\"VE\"],60:[\"MY\"],61:[\"AU\",\"CC\",\"CX\"],62:[\"ID\"],63:[\"PH\"],64:[\"NZ\"],65:[\"SG\"],66:[\"TH\"],81:[\"JP\"],82:[\"KR\"],84:[\"VN\"],\n86:[\"CN\"],90:[\"TR\"],91:[\"IN\"],92:[\"PK\"],93:[\"AF\"],94:[\"LK\"],95:[\"MM\"],98:[\"IR\"],211:[\"SS\"],212:[\"MA\",\"EH\"],213:[\"DZ\"],216:[\"TN\"],218:[\"LY\"],220:[\"GM\"],221:[\"SN\"],222:[\"MR\"],223:[\"ML\"],224:[\"GN\"],225:[\"CI\"],226:[\"BF\"],227:[\"NE\"],228:[\"TG\"],229:[\"BJ\"],230:[\"MU\"],231:[\"LR\"],232:[\"SL\"],233:[\"GH\"],234:[\"NG\"],235:[\"TD\"],236:[\"CF\"],237:[\"CM\"],238:[\"CV\"],239:[\"ST\"],240:[\"GQ\"],241:[\"GA\"],242:[\"CG\"],243:[\"CD\"],244:[\"AO\"],245:[\"GW\"],246:[\"IO\"],247:[\"AC\"],248:[\"SC\"],249:[\"SD\"],250:[\"RW\"],251:[\"ET\"],252:[\"SO\"],\n253:[\"DJ\"],254:[\"KE\"],255:[\"TZ\"],256:[\"UG\"],257:[\"BI\"],258:[\"MZ\"],260:[\"ZM\"],261:[\"MG\"],262:[\"RE\",\"YT\"],263:[\"ZW\"],264:[\"NA\"],265:[\"MW\"],266:[\"LS\"],267:[\"BW\"],268:[\"SZ\"],269:[\"KM\"],290:[\"SH\",\"TA\"],291:[\"ER\"],297:[\"AW\"],298:[\"FO\"],299:[\"GL\"],350:[\"GI\"],351:[\"PT\"],352:[\"LU\"],353:[\"IE\"],354:[\"IS\"],355:[\"AL\"],356:[\"MT\"],357:[\"CY\"],358:[\"FI\",\"AX\"],359:[\"BG\"],370:[\"LT\"],371:[\"LV\"],372:[\"EE\"],373:[\"MD\"],374:[\"AM\"],375:[\"BY\"],376:[\"AD\"],377:[\"MC\"],378:[\"SM\"],380:[\"UA\"],381:[\"RS\"],382:[\"ME\"],383:[\"XK\"],385:[\"HR\"],\n386:[\"SI\"],387:[\"BA\"],389:[\"MK\"],420:[\"CZ\"],421:[\"SK\"],423:[\"LI\"],500:[\"FK\"],501:[\"BZ\"],502:[\"GT\"],503:[\"SV\"],504:[\"HN\"],505:[\"NI\"],506:[\"CR\"],507:[\"PA\"],508:[\"PM\"],509:[\"HT\"],590:[\"GP\",\"BL\",\"MF\"],591:[\"BO\"],592:[\"GY\"],593:[\"EC\"],594:[\"GF\"],595:[\"PY\"],596:[\"MQ\"],597:[\"SR\"],598:[\"UY\"],599:[\"CW\",\"BQ\"],670:[\"TL\"],672:[\"NF\"],673:[\"BN\"],674:[\"NR\"],675:[\"PG\"],676:[\"TO\"],677:[\"SB\"],678:[\"VU\"],679:[\"FJ\"],680:[\"PW\"],681:[\"WF\"],682:[\"CK\"],683:[\"NU\"],685:[\"WS\"],686:[\"KI\"],687:[\"NC\"],688:[\"TV\"],689:[\"PF\"],690:[\"TK\"],\n691:[\"FM\"],692:[\"MH\"],800:[\"001\"],808:[\"001\"],850:[\"KP\"],852:[\"HK\"],853:[\"MO\"],855:[\"KH\"],856:[\"LA\"],870:[\"001\"],878:[\"001\"],880:[\"BD\"],881:[\"001\"],882:[\"001\"],883:[\"001\"],886:[\"TW\"],888:[\"001\"],960:[\"MV\"],961:[\"LB\"],962:[\"JO\"],963:[\"SY\"],964:[\"IQ\"],965:[\"KW\"],966:[\"SA\"],967:[\"YE\"],968:[\"OM\"],970:[\"PS\"],971:[\"AE\"],972:[\"IL\"],973:[\"BH\"],974:[\"QA\"],975:[\"BT\"],976:[\"MN\"],977:[\"NP\"],979:[\"001\"],992:[\"TJ\"],993:[\"TM\"],994:[\"AZ\"],995:[\"GE\"],996:[\"KG\"],998:[\"UZ\"]},G={AC:[,[,,\"(?:[01589]\\\\d|[46])\\\\d{4}\",,\n,,,,,[5,6]],[,,\"6[2-467]\\\\d{3}\",,,,\"62889\",,,[5]],[,,\"4\\\\d{4}\",,,,\"40123\",,,[5]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"AC\",247,\"00\",,,,,,,,,,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"(?:0[1-9]|[1589]\\\\d)\\\\d{4}\",,,,\"542011\",,,[6]],,,[,,,,,,,,,[-1]]],AD:[,[,,\"(?:1|6\\\\d)\\\\d{7}|[135-9]\\\\d{5}\",,,,,,,[6,8,9]],[,,\"[78]\\\\d{5}\",,,,\"712345\",,,[6]],[,,\"690\\\\d{6}|[356]\\\\d{5}\",,,,\"312345\",,,[6,9]],[,,\"180[02]\\\\d{4}\",,,,\"18001234\",,,[8]],[,,\"[19]\\\\d{5}\",,,,\"912345\",,,[6]],\n[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"AD\",376,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{3})\",\"$1 $2\",[\"[135-9]\"]],[,\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"1\"]],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"6\"]]],,[,,,,,,,,,[-1]],,,[,,\"1800\\\\d{4}\",,,,,,,[8]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],AE:[,[,,\"(?:[4-7]\\\\d|9[0-689])\\\\d{7}|800\\\\d{2,9}|[2-4679]\\\\d{7}\",,,,,,,[5,6,7,8,9,10,11,12]],[,,\"[2-4679][2-8]\\\\d{6}\",,,,\"22345678\",,,[8],[7]],[,,\"5[024-68]\\\\d{7}\",,,,\"501234567\",,,[9]],[,,\"400\\\\d{6}|800\\\\d{2,9}\",,,,\"800123456\"],\n[,,\"900[02]\\\\d{5}\",,,,\"900234567\",,,[9]],[,,\"700[05]\\\\d{5}\",,,,\"700012345\",,,[9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"AE\",971,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{3})(\\\\d{2,9})\",\"$1 $2\",[\"60|8\"]],[,\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[236]|[479][2-8]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d)(\\\\d{5})\",\"$1 $2 $3\",[\"[479]\"]],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"5\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"600[25]\\\\d{5}\",,,,\"600212345\",,,[9]],,,[,,,,,,,,,[-1]]],AF:[,[,,\"[2-7]\\\\d{8}\",,,,,,,[9],[7]],[,,\"(?:[25][0-8]|[34][0-4]|6[0-5])[2-9]\\\\d{6}\",\n,,,\"234567890\",,,,[7]],[,,\"7\\\\d{8}\",,,,\"701234567\",,,,[7]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"AF\",93,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[1-9]\"]],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2-7]\"],\"0$1\"]],[[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2-7]\"],\"0$1\"]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],AG:[,[,,\"(?:268|[58]\\\\d\\\\d|900)\\\\d{7}\",,,,,,,[10],[7]],[,,\"268(?:4(?:6[0-38]|84)|56[0-2])\\\\d{4}\",,,,\"2684601234\",\n,,,[7]],[,,\"268(?:464|7(?:1[3-9]|[28]\\\\d|3[0246]|64|7[0-689]))\\\\d{4}\",,,,\"2684641234\",,,,[7]],[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",,,,\"8002123456\"],[,,\"900[2-9]\\\\d{6}\",,,,\"9002123456\"],[,,,,,,,,,[-1]],[,,\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\\\d{6}\",,,,\"5002345678\"],[,,\"26848[01]\\\\d{4}\",,,,\"2684801234\",,,,[7]],\n\"AG\",1,\"011\",\"1\",,,\"1|([457]\\\\d{6})$\",\"268$1\",,,,,[,,\"26840[69]\\\\d{4}\",,,,\"2684061234\",,,,[7]],,\"268\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],AI:[,[,,\"(?:264|[58]\\\\d\\\\d|900)\\\\d{7}\",,,,,,,[10],[7]],[,,\"264(?:292|4(?:6[12]|9[78]))\\\\d{4}\",,,,\"2644612345\",,,,[7]],[,,\"264(?:235|4(?:69|76)|5(?:3[6-9]|8[1-4])|7(?:29|72))\\\\d{4}\",,,,\"2642351234\",,,,[7]],[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",,,,\"8002123456\"],[,,\"900[2-9]\\\\d{6}\",,,,\"9002123456\"],[,,,,,,,,,[-1]],[,,\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\\\d{6}\",\n,,,\"5002345678\"],[,,,,,,,,,[-1]],\"AI\",1,\"011\",\"1\",,,\"1|([2457]\\\\d{6})$\",\"264$1\",,,,,[,,\"264724\\\\d{4}\",,,,\"2647241234\",,,,[7]],,\"264\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],AL:[,[,,\"(?:700\\\\d\\\\d|900)\\\\d{3}|8\\\\d{5,7}|(?:[2-5]|6\\\\d)\\\\d{7}\",,,,,,,[6,7,8,9],[5]],[,,\"4505[0-2]\\\\d{3}|(?:[2358][16-9]\\\\d[2-9]|4410)\\\\d{4}|(?:[2358][2-5][2-9]|4(?:[2-57-9][2-9]|6\\\\d))\\\\d{5}\",,,,\"22345678\",,,[8],[5,6,7]],[,,\"6(?:[78][2-9]|9\\\\d)\\\\d{6}\",,,,\"672123456\",,,[9]],[,,\"800\\\\d{4}\",,,,\"8001234\",,,[7]],[,,\"900[1-9]\\\\d\\\\d\",\n,,,\"900123\",,,[6]],[,,\"808[1-9]\\\\d\\\\d\",,,,\"808123\",,,[6]],[,,\"700[2-9]\\\\d{4}\",,,,\"70021234\",,,[8]],[,,,,,,,,,[-1]],\"AL\",355,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{3})(\\\\d{3,4})\",\"$1 $2\",[\"80|9\"],\"0$1\"],[,\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"4[2-6]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2358][2-5]|4\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[23578]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"6\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],AM:[,[,,\"(?:[1-489]\\\\d|55|60|77)\\\\d{6}\",\n,,,,,,[8],[5,6]],[,,\"(?:(?:1[0-25]|47)\\\\d|2(?:2[2-46]|3[1-8]|4[2-69]|5[2-7]|6[1-9]|8[1-7])|3[12]2)\\\\d{5}\",,,,\"10123456\",,,,[5,6]],[,,\"(?:33|4[1349]|55|77|88|9[13-9])\\\\d{6}\",,,,\"77123456\"],[,,\"800\\\\d{5}\",,,,\"80012345\"],[,,\"90[016]\\\\d{5}\",,,,\"90012345\"],[,,\"80[1-4]\\\\d{5}\",,,,\"80112345\"],[,,,,,,,,,[-1]],[,,\"60(?:2[78]|3[5-9]|4[02-9]|5[0-46-9]|[6-8]\\\\d|9[01])\\\\d{4}\",,,,\"60271234\"],\"AM\",374,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"[89]0\"],\"0 $1\"],[,\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"2|3[12]\"],\n\"(0$1)\"],[,\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"1|47\"],\"(0$1)\"],[,\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"[3-9]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],AO:[,[,,\"[29]\\\\d{8}\",,,,,,,[9]],[,,\"2\\\\d(?:[0134][25-9]|[25-9]\\\\d)\\\\d{5}\",,,,\"222123456\"],[,,\"9[1-59]\\\\d{7}\",,,,\"923123456\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"AO\",244,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[29]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\n,,[,,,,,,,,,[-1]]],AR:[,[,,\"(?:11|[89]\\\\d\\\\d)\\\\d{8}|[2368]\\\\d{9}\",,,,,,,[10,11],[6,7,8]],[,,\"3888[013-9]\\\\d{5}|(?:29(?:54|66)|3(?:777|865))[2-8]\\\\d{5}|3(?:7(?:1[15]|81)|8(?:21|4[16]|69|9[12]))[46]\\\\d{5}|(?:2(?:2(?:2[59]|44|52)|3(?:26|44)|473|9(?:[07]2|2[26]|34|46))|3327)[45]\\\\d{5}|(?:2(?:284|302|657|920)|3(?:4(?:8[27]|92)|541|755|878))[2-7]\\\\d{5}|(?:2(?:(?:26|62)2|32[03]|477|9(?:42|83))|3(?:329|4(?:[47]6|62|89)|564))[2-6]\\\\d{5}|(?:(?:11[1-8]|670)\\\\d|2(?:2(?:0[45]|1[2-6]|3[3-6])|3(?:[06]4|7[45])|494|6(?:04|1[2-8]|[36][45]|4[3-6])|80[45]|9(?:[17][4-6]|[48][45]|9[3-6]))|3(?:364|4(?:1[2-7]|[235][4-6]|84)|5(?:1[2-8]|[38][4-6])|6(?:2[45]|44)|7[069][45]|8(?:[03][45]|[17][2-6]|[58][3-6])))\\\\d{6}|2(?:2(?:21|4[23]|6[145]|7[1-4]|8[356]|9[267])|3(?:16|3[13-8]|43|5[346-8]|9[3-5])|475|6(?:2[46]|4[78]|5[1568])|9(?:03|2[1457-9]|3[1356]|4[08]|[56][23]|82))4\\\\d{5}|(?:2(?:2(?:57|81)|3(?:24|46|92)|9(?:01|23|64))|3(?:4(?:42|71)|5(?:25|37|4[347]|71)|7(?:18|5[17])))[3-6]\\\\d{5}|(?:2(?:2(?:02|2[3467]|4[156]|5[45]|6[6-8]|91)|3(?:1[47]|25|[45][25]|96)|47[48]|625|932)|3(?:38[2578]|4(?:0[0-24-9]|3[78]|4[457]|58|6[03-9]|72|83|9[136-8])|5(?:2[124]|[368][23]|4[2689]|7[2-6])|7(?:16|2[15]|3[145]|4[13]|5[468]|7[2-5]|8[26])|8(?:2[5-7]|3[278]|4[3-5]|5[78]|6[1-378]|[78]7|94)))[4-6]\\\\d{5}\",\n,,,\"1123456789\",,,[10],[6,7,8]],[,,\"93888[013-9]\\\\d{5}|9(?:29(?:54|66)|3(?:777|865))[2-8]\\\\d{5}|93(?:7(?:1[15]|81)|8(?:21|4[16]|69|9[12]))[46]\\\\d{5}|9(?:2(?:2(?:2[59]|44|52)|3(?:26|44)|473|9(?:[07]2|2[26]|34|46))|3327)[45]\\\\d{5}|9(?:2(?:284|302|657|920)|3(?:4(?:8[27]|92)|541|755|878))[2-7]\\\\d{5}|9(?:2(?:(?:26|62)2|32[03]|477|9(?:42|83))|3(?:329|4(?:[47]6|62|89)|564))[2-6]\\\\d{5}|(?:675\\\\d|9(?:11[1-8]\\\\d|2(?:2(?:0[45]|1[2-6]|3[3-6])|3(?:[06]4|7[45])|494|6(?:04|1[2-8]|[36][45]|4[3-6])|80[45]|9(?:[17][4-6]|[48][45]|9[3-6]))|3(?:364|4(?:1[2-7]|[235][4-6]|84)|5(?:1[2-8]|[38][4-6])|6(?:2[45]|44)|7[069][45]|8(?:[03][45]|[17][2-6]|[58][3-6]))))\\\\d{6}|92(?:2(?:21|4[23]|6[145]|7[1-4]|8[356]|9[267])|3(?:16|3[13-8]|43|5[346-8]|9[3-5])|475|6(?:2[46]|4[78]|5[1568])|9(?:03|2[1457-9]|3[1356]|4[08]|[56][23]|82))4\\\\d{5}|9(?:2(?:2(?:57|81)|3(?:24|46|92)|9(?:01|23|64))|3(?:4(?:42|71)|5(?:25|37|4[347]|71)|7(?:18|5[17])))[3-6]\\\\d{5}|9(?:2(?:2(?:02|2[3467]|4[156]|5[45]|6[6-8]|91)|3(?:1[47]|25|[45][25]|96)|47[48]|625|932)|3(?:38[2578]|4(?:0[0-24-9]|3[78]|4[457]|58|6[03-9]|72|83|9[136-8])|5(?:2[124]|[368][23]|4[2689]|7[2-6])|7(?:16|2[15]|3[145]|4[13]|5[468]|7[2-5]|8[26])|8(?:2[5-7]|3[278]|4[3-5]|5[78]|6[1-378]|[78]7|94)))[4-6]\\\\d{5}\",\n,,,\"91123456789\",,,,[6,7,8]],[,,\"800\\\\d{7,8}\",,,,\"8001234567\"],[,,\"60[04579]\\\\d{7}\",,,,\"6001234567\",,,[10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"AR\",54,\"00\",\"0\",,,\"0?(?:(11|2(?:2(?:02?|[13]|2[13-79]|4[1-6]|5[2457]|6[124-8]|7[1-4]|8[13-6]|9[1267])|3(?:02?|1[467]|2[03-6]|3[13-8]|[49][2-6]|5[2-8]|[67])|4(?:7[3-578]|9)|6(?:[0136]|2[24-6]|4[6-8]?|5[15-8])|80|9(?:0[1-3]|[19]|2\\\\d|3[1-6]|4[02568]?|5[2-4]|6[2-46]|72?|8[23]?))|3(?:3(?:2[79]|6|8[2578])|4(?:0[0-24-9]|[12]|3[5-8]?|4[24-7]|5[4-68]?|6[02-9]|7[126]|8[2379]?|9[1-36-8])|5(?:1|2[1245]|3[237]?|4[1-46-9]|6[2-4]|7[1-6]|8[2-5]?)|6[24]|7(?:[069]|1[1568]|2[15]|3[145]|4[13]|5[14-8]|7[2-57]|8[126])|8(?:[01]|2[15-7]|3[2578]?|4[13-6]|5[4-8]?|6[1-357-9]|7[36-8]?|8[5-8]?|9[124])))15)?\",\n\"9$1\",,,[[,\"(\\\\d{3})\",\"$1\",[\"0|1(?:0[0-35-7]|1[02-5]|2[015]|3[47]|4[478])|911\"]],[,\"(\\\\d{2})(\\\\d{4})\",\"$1-$2\",[\"[1-9]\"]],[,\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[2-8]\"]],[,\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"[1-8]\"]],[,\"(\\\\d{4})(\\\\d{2})(\\\\d{4})\",\"$1 $2-$3\",[\"2(?:2[024-9]|3[0-59]|47|6[245]|9[02-8])|3(?:3[28]|4[03-9]|5[2-46-8]|7[1-578]|8[2-9])\",\"2(?:[23]02|6(?:[25]|4[6-8])|9(?:[02356]|4[02568]|72|8[23]))|3(?:3[28]|4(?:[04679]|3[5-8]|5[4-68]|8[2379])|5(?:[2467]|3[237]|8[2-5])|7[1-578]|8(?:[2469]|3[2578]|5[4-8]|7[36-8]|8[5-8]))|2(?:2[24-9]|3[1-59]|47)\",\n\"2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3[78]|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8[23])|7[1-578]|8(?:[2469]|3[278]|5[56][46]|86[3-6]))|2(?:2[24-9]|3[1-59]|47)|38(?:[58][78]|7[378])|3(?:4[35][56]|58[45]|8(?:[38]5|54|76))[4-6]\",\"2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3(?:5(?:4[0-25689]|[56])|[78])|58|8[2379])|5(?:[2467]|3[237]|8(?:[23]|4(?:[45]|60)|5(?:4[0-39]|5|64)))|7[1-578]|8(?:[2469]|3[278]|54(?:4|5[13-7]|6[89])|86[3-6]))|2(?:2[24-9]|3[1-59]|47)|38(?:[58][78]|7[378])|3(?:454|85[56])[46]|3(?:4(?:36|5[56])|8(?:[38]5|76))[4-6]\"],\n\"0$1\",,1],[,\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2-$3\",[\"1\"],\"0$1\",,1],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"[68]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2-$3\",[\"[23]\"],\"0$1\",,1],[,\"(\\\\d)(\\\\d{4})(\\\\d{2})(\\\\d{4})\",\"$2 15-$3-$4\",[\"9(?:2[2-469]|3[3-578])\",\"9(?:2(?:2[024-9]|3[0-59]|47|6[245]|9[02-8])|3(?:3[28]|4[03-9]|5[2-46-8]|7[1-578]|8[2-9]))\",\"9(?:2(?:[23]02|6(?:[25]|4[6-8])|9(?:[02356]|4[02568]|72|8[23]))|3(?:3[28]|4(?:[04679]|3[5-8]|5[4-68]|8[2379])|5(?:[2467]|3[237]|8[2-5])|7[1-578]|8(?:[2469]|3[2578]|5[4-8]|7[36-8]|8[5-8])))|92(?:2[24-9]|3[1-59]|47)\",\n\"9(?:2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3[78]|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8[23])|7[1-578]|8(?:[2469]|3[278]|5(?:[56][46]|[78])|7[378]|8(?:6[3-6]|[78]))))|92(?:2[24-9]|3[1-59]|47)|93(?:4[35][56]|58[45]|8(?:[38]5|54|76))[4-6]\",\"9(?:2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3(?:5(?:4[0-25689]|[56])|[78])|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8(?:[23]|4(?:[45]|60)|5(?:4[0-39]|5|64)))|7[1-578]|8(?:[2469]|3[278]|5(?:4(?:4|5[13-7]|6[89])|[56][46]|[78])|7[378]|8(?:6[3-6]|[78]))))|92(?:2[24-9]|3[1-59]|47)|93(?:4(?:36|5[56])|8(?:[38]5|76))[4-6]\"],\n\"0$1\"],[,\"(\\\\d)(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$2 15-$3-$4\",[\"91\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{5})\",\"$1-$2-$3\",[\"8\"],\"0$1\"],[,\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$2 15-$3-$4\",[\"9\"],\"0$1\"]],[[,\"(\\\\d{4})(\\\\d{2})(\\\\d{4})\",\"$1 $2-$3\",[\"2(?:2[024-9]|3[0-59]|47|6[245]|9[02-8])|3(?:3[28]|4[03-9]|5[2-46-8]|7[1-578]|8[2-9])\",\"2(?:[23]02|6(?:[25]|4[6-8])|9(?:[02356]|4[02568]|72|8[23]))|3(?:3[28]|4(?:[04679]|3[5-8]|5[4-68]|8[2379])|5(?:[2467]|3[237]|8[2-5])|7[1-578]|8(?:[2469]|3[2578]|5[4-8]|7[36-8]|8[5-8]))|2(?:2[24-9]|3[1-59]|47)\",\n\"2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3[78]|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8[23])|7[1-578]|8(?:[2469]|3[278]|5[56][46]|86[3-6]))|2(?:2[24-9]|3[1-59]|47)|38(?:[58][78]|7[378])|3(?:4[35][56]|58[45]|8(?:[38]5|54|76))[4-6]\",\"2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3(?:5(?:4[0-25689]|[56])|[78])|58|8[2379])|5(?:[2467]|3[237]|8(?:[23]|4(?:[45]|60)|5(?:4[0-39]|5|64)))|7[1-578]|8(?:[2469]|3[278]|54(?:4|5[13-7]|6[89])|86[3-6]))|2(?:2[24-9]|3[1-59]|47)|38(?:[58][78]|7[378])|3(?:454|85[56])[46]|3(?:4(?:36|5[56])|8(?:[38]5|76))[4-6]\"],\n\"0$1\",,1],[,\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2-$3\",[\"1\"],\"0$1\",,1],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"[68]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2-$3\",[\"[23]\"],\"0$1\",,1],[,\"(\\\\d)(\\\\d{4})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3-$4\",[\"9(?:2[2-469]|3[3-578])\",\"9(?:2(?:2[024-9]|3[0-59]|47|6[245]|9[02-8])|3(?:3[28]|4[03-9]|5[2-46-8]|7[1-578]|8[2-9]))\",\"9(?:2(?:[23]02|6(?:[25]|4[6-8])|9(?:[02356]|4[02568]|72|8[23]))|3(?:3[28]|4(?:[04679]|3[5-8]|5[4-68]|8[2379])|5(?:[2467]|3[237]|8[2-5])|7[1-578]|8(?:[2469]|3[2578]|5[4-8]|7[36-8]|8[5-8])))|92(?:2[24-9]|3[1-59]|47)\",\n\"9(?:2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3[78]|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8[23])|7[1-578]|8(?:[2469]|3[278]|5(?:[56][46]|[78])|7[378]|8(?:6[3-6]|[78]))))|92(?:2[24-9]|3[1-59]|47)|93(?:4[35][56]|58[45]|8(?:[38]5|54|76))[4-6]\",\"9(?:2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3(?:5(?:4[0-25689]|[56])|[78])|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8(?:[23]|4(?:[45]|60)|5(?:4[0-39]|5|64)))|7[1-578]|8(?:[2469]|3[278]|5(?:4(?:4|5[13-7]|6[89])|[56][46]|[78])|7[378]|8(?:6[3-6]|[78]))))|92(?:2[24-9]|3[1-59]|47)|93(?:4(?:36|5[56])|8(?:[38]5|76))[4-6]\"]],\n[,\"(\\\\d)(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3-$4\",[\"91\"]],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{5})\",\"$1-$2-$3\",[\"8\"],\"0$1\"],[,\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3-$4\",[\"9\"]]],[,,,,,,,,,[-1]],,,[,,\"810\\\\d{7}\",,,,,,,[10]],[,,\"810\\\\d{7}\",,,,\"8101234567\",,,[10]],,,[,,,,,,,,,[-1]]],AS:[,[,,\"(?:[58]\\\\d\\\\d|684|900)\\\\d{7}\",,,,,,,[10],[7]],[,,\"6846(?:22|33|44|55|77|88|9[19])\\\\d{4}\",,,,\"6846221234\",,,,[7]],[,,\"684(?:2(?:48|5[2468]|72)|7(?:3[13]|70|82))\\\\d{4}\",,,,\"6847331234\",,,,[7]],[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",\n,,,\"8002123456\"],[,,\"900[2-9]\\\\d{6}\",,,,\"9002123456\"],[,,,,,,,,,[-1]],[,,\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\\\d{6}\",,,,\"5002345678\"],[,,,,,,,,,[-1]],\"AS\",1,\"011\",\"1\",,,\"1|([267]\\\\d{6})$\",\"684$1\",,,,,[,,,,,,,,,[-1]],,\"684\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],AT:[,[,,\"1\\\\d{3,12}|2\\\\d{6,12}|43(?:(?:0\\\\d|5[02-9])\\\\d{3,9}|2\\\\d{4,5}|[3467]\\\\d{4}|8\\\\d{4,6}|9\\\\d{4,7})|5\\\\d{4,12}|8\\\\d{7,12}|9\\\\d{8,12}|(?:[367]\\\\d|4[0-24-9])\\\\d{4,11}\",\n,,,,,,[4,5,6,7,8,9,10,11,12,13],[3]],[,,\"1(?:11\\\\d|[2-9]\\\\d{3,11})|(?:316|463|(?:51|66|73)2)\\\\d{3,10}|(?:2(?:1[467]|2[13-8]|5[2357]|6[1-46-8]|7[1-8]|8[124-7]|9[1458])|3(?:1[1-578]|3[23568]|4[5-7]|5[1378]|6[1-38]|8[3-68])|4(?:2[1-8]|35|7[1368]|8[2457])|5(?:2[1-8]|3[357]|4[147]|5[12578]|6[37])|6(?:13|2[1-47]|4[135-8]|5[468])|7(?:2[1-8]|35|4[13478]|5[68]|6[16-8]|7[1-6]|9[45]))\\\\d{4,10}\",,,,\"1234567890\",,,,[3]],[,,\"6(?:5[0-3579]|6[013-9]|[7-9]\\\\d)\\\\d{4,10}\",,,,\"664123456\",,,[7,8,9,10,11,12,13]],[,,\"800\\\\d{6,10}\",\n,,,\"800123456\",,,[9,10,11,12,13]],[,,\"(?:8[69][2-68]|9(?:0[01]|3[019]))\\\\d{6,10}\",,,,\"900123456\",,,[9,10,11,12,13]],[,,\"8(?:10|2[018])\\\\d{6,10}|828\\\\d{5}\",,,,\"810123456\",,,[8,9,10,11,12,13]],[,,,,,,,,,[-1]],[,,\"5(?:0[1-9]|17|[79]\\\\d)\\\\d{2,10}|7[28]0\\\\d{6,10}\",,,,\"780123456\",,,[5,6,7,8,9,10,11,12,13]],\"AT\",43,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d)(\\\\d{3,12})\",\"$1 $2\",[\"1(?:11|[2-9])\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{2})\",\"$1 $2\",[\"517\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3,5})\",\"$1 $2\",[\"5[079]\"],\"0$1\"],[,\"(\\\\d{6})\",\"$1\",[\"1\"]],\n[,\"(\\\\d{3})(\\\\d{3,10})\",\"$1 $2\",[\"(?:31|4)6|51|6(?:5[0-3579]|[6-9])|7(?:20|32|8)|[89]\"],\"0$1\"],[,\"(\\\\d{4})(\\\\d{3,9})\",\"$1 $2\",[\"[2-467]|5[2-6]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"5\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{4})(\\\\d{4,7})\",\"$1 $2 $3\",[\"5\"],\"0$1\"]],[[,\"(\\\\d)(\\\\d{3,12})\",\"$1 $2\",[\"1(?:11|[2-9])\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{2})\",\"$1 $2\",[\"517\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3,5})\",\"$1 $2\",[\"5[079]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3,10})\",\"$1 $2\",[\"(?:31|4)6|51|6(?:5[0-3579]|[6-9])|7(?:20|32|8)|[89]\"],\"0$1\"],\n[,\"(\\\\d{4})(\\\\d{3,9})\",\"$1 $2\",[\"[2-467]|5[2-6]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"5\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{4})(\\\\d{4,7})\",\"$1 $2 $3\",[\"5\"],\"0$1\"]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],AU:[,[,,\"1(?:[0-79]\\\\d{7}(?:\\\\d(?:\\\\d{2})?)?|8[0-24-9]\\\\d{7})|[2-478]\\\\d{8}|1\\\\d{4,7}\",,,,,,,[5,6,7,8,9,10,12]],[,,\"(?:(?:2(?:[0-26-9]\\\\d|3[0-8]|4[02-9]|5[0135-9])|3(?:[0-3589]\\\\d|4[0-578]|6[1-9]|7[0-35-9])|7(?:[013-57-9]\\\\d|2[0-8]))\\\\d{3}|8(?:51(?:0(?:0[03-9]|[12479]\\\\d|3[2-9]|5[0-8]|6[1-9]|8[0-7])|1(?:[0235689]\\\\d|1[0-69]|4[0-589]|7[0-47-9])|2(?:0[0-79]|[18][13579]|2[14-9]|3[0-46-9]|[4-6]\\\\d|7[89]|9[0-4]))|(?:6[0-8]|[78]\\\\d)\\\\d{3}|9(?:[02-9]\\\\d{3}|1(?:(?:[0-58]\\\\d|6[0135-9])\\\\d|7(?:0[0-24-9]|[1-9]\\\\d)|9(?:[0-46-9]\\\\d|5[0-79])))))\\\\d{3}\",\n,,,\"212345678\",,,[9],[8]],[,,\"4(?:83[0-38]|93[0-6])\\\\d{5}|4(?:[0-3]\\\\d|4[047-9]|5[0-25-9]|6[06-9]|7[02-9]|8[0-24-9]|9[0-27-9])\\\\d{6}\",,,,\"412345678\",,,[9]],[,,\"180(?:0\\\\d{3}|2)\\\\d{3}\",,,,\"1800123456\",,,[7,10]],[,,\"190[0-26]\\\\d{6}\",,,,\"1900123456\",,,[10]],[,,\"13(?:00\\\\d{6}(?:\\\\d{2})?|45[0-4]\\\\d{3})|13\\\\d{4}\",,,,\"1300123456\",,,[6,8,10,12]],[,,,,,,,,,[-1]],[,,\"14(?:5(?:1[0458]|[23][458])|71\\\\d)\\\\d{4}\",,,,\"147101234\",,,[9]],\"AU\",61,\"001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011\",\"0\",,,\"0|(183[12])\",\n,\"0011\",,[[,\"(\\\\d{2})(\\\\d{3,4})\",\"$1 $2\",[\"16\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"13\"]],[,\"(\\\\d{3})(\\\\d{3})\",\"$1 $2\",[\"19\"]],[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"180\",\"1802\"]],[,\"(\\\\d{4})(\\\\d{3,4})\",\"$1 $2\",[\"19\"]],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{2,4})\",\"$1 $2 $3\",[\"16\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"14|4\"],\"0$1\"],[,\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[2378]\"],\"(0$1)\",\"$CC ($1)\"],[,\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1(?:30|[89])\"]],[,\"(\\\\d{4})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",\n[\"130\"]]],[[,\"(\\\\d{2})(\\\\d{3,4})\",\"$1 $2\",[\"16\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{2,4})\",\"$1 $2 $3\",[\"16\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"14|4\"],\"0$1\"],[,\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[2378]\"],\"(0$1)\",\"$CC ($1)\"],[,\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1(?:30|[89])\"]]],[,,\"163\\\\d{2,6}\",,,,\"1631234\",,,[5,6,7,8,9]],1,,[,,\"1(?:3(?:00\\\\d{5}|45[0-4])|802)\\\\d{3}|1[38]00\\\\d{6}|13\\\\d{4}\",,,,,,,[6,7,8,10,12]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],AW:[,[,,\"(?:[25-79]\\\\d\\\\d|800)\\\\d{4}\",\n,,,,,,[7]],[,,\"5(?:2\\\\d|8[1-9])\\\\d{4}\",,,,\"5212345\"],[,,\"(?:290|5[69]\\\\d|6(?:[03]0|22|4[0-2]|[69]\\\\d)|7(?:[34]\\\\d|7[07])|9(?:6[45]|9[4-8]))\\\\d{4}\",,,,\"5601234\"],[,,\"800\\\\d{4}\",,,,\"8001234\"],[,,\"900\\\\d{4}\",,,,\"9001234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"(?:28\\\\d|501)\\\\d{4}\",,,,\"5011234\"],\"AW\",297,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[25-9]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],AX:[,[,,\"2\\\\d{4,9}|35\\\\d{4,5}|(?:60\\\\d\\\\d|800)\\\\d{4,6}|7\\\\d{5,11}|(?:[14]\\\\d|3[0-46-9]|50)\\\\d{4,8}\",\n,,,,,,[5,6,7,8,9,10,11,12]],[,,\"18[1-8]\\\\d{3,6}\",,,,\"181234567\",,,[6,7,8,9]],[,,\"4946\\\\d{2,6}|(?:4[0-8]|50)\\\\d{4,8}\",,,,\"412345678\",,,[6,7,8,9,10]],[,,\"800\\\\d{4,6}\",,,,\"800123456\",,,[7,8,9]],[,,\"[67]00\\\\d{5,6}\",,,,\"600123456\",,,[8,9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"AX\",358,\"00|99(?:[01469]|5(?:[14]1|3[23]|5[59]|77|88|9[09]))\",\"0\",,,\"0\",,\"00\",,,,[,,,,,,,,,[-1]],,\"18\",[,,,,,,,,,[-1]],[,,\"20\\\\d{4,8}|60[12]\\\\d{5,6}|7(?:099\\\\d{4,5}|5[03-9]\\\\d{3,7})|20[2-59]\\\\d\\\\d|(?:606|7(?:0[78]|1|3\\\\d))\\\\d{7}|(?:10|29|3[09]|70[1-5]\\\\d)\\\\d{4,8}\",\n,,,\"10112345\"],,,[,,,,,,,,,[-1]]],AZ:[,[,,\"365\\\\d{6}|(?:[124579]\\\\d|60|88)\\\\d{7}\",,,,,,,[9],[7]],[,,\"(?:2[12]428|3655[02])\\\\d{4}|(?:2(?:22[0-79]|63[0-28])|3654)\\\\d{5}|(?:(?:1[28]|46)\\\\d|2(?:[014-6]2|[23]3))\\\\d{6}\",,,,\"123123456\",,,,[7]],[,,\"36554\\\\d{4}|(?:[16]0|4[04]|5[015]|7[07]|99)\\\\d{7}\",,,,\"401234567\"],[,,\"88\\\\d{7}\",,,,\"881234567\"],[,,\"900200\\\\d{3}\",,,,\"900200123\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"AZ\",994,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"[1-9]\"]],[,\n\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"90\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"1[28]|2|365|46\",\"1[28]|2|365[45]|46\",\"1[28]|2|365(?:4|5[02])|46\"],\"(0$1)\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[13-9]\"],\"0$1\"]],[[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"90\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"1[28]|2|365|46\",\"1[28]|2|365[45]|46\",\"1[28]|2|365(?:4|5[02])|46\"],\"(0$1)\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",\n[\"[13-9]\"],\"0$1\"]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],BA:[,[,,\"6\\\\d{8}|(?:[35689]\\\\d|49|70)\\\\d{6}\",,,,,,,[8,9],[6]],[,,\"(?:3(?:[05-79][2-9]|1[4579]|[23][24-9]|4[2-4689]|8[2457-9])|49[2-579]|5(?:0[2-49]|[13][2-9]|[268][2-4679]|4[4689]|5[2-79]|7[2-69]|9[2-4689]))\\\\d{5}\",,,,\"30212345\",,,[8],[6]],[,,\"6040\\\\d{5}|6(?:03|[1-356]|44|7\\\\d)\\\\d{6}\",,,,\"61123456\"],[,,\"8[08]\\\\d{6}\",,,,\"80123456\",,,[8]],[,,\"9[0246]\\\\d{6}\",,,,\"90123456\",,,[8]],[,,\"8[12]\\\\d{6}\",,,,\"82123456\",,,[8]],\n[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"BA\",387,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{3})(\\\\d{3})\",\"$1-$2\",[\"[2-9]\"]],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"6[1-3]|[7-9]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2-$3\",[\"[3-5]|6[56]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"6\"],\"0$1\"]],[[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"6[1-3]|[7-9]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2-$3\",[\"[3-5]|6[56]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"6\"],\"0$1\"]],[,,,,,,,,,[-1]],\n,,[,,,,,,,,,[-1]],[,,\"703[235]0\\\\d{3}|70(?:2[0-5]|3[0146]|[56]0)\\\\d{4}\",,,,\"70341234\",,,[8]],,,[,,,,,,,,,[-1]]],BB:[,[,,\"(?:246|[58]\\\\d\\\\d|900)\\\\d{7}\",,,,,,,[10],[7]],[,,\"246521[0369]\\\\d{3}|246(?:2(?:2[78]|7[0-4])|4(?:1[024-6]|2\\\\d|3[2-9])|5(?:20|[34]\\\\d|54|7[1-3])|6(?:2\\\\d|38)|7[35]7|9(?:1[89]|63))\\\\d{4}\",,,,\"2464123456\",,,,[7]],[,,\"246(?:(?:2(?:[3568]\\\\d|4[0-57-9])|3(?:5[2-9]|6[0-6])|4(?:46|5\\\\d)|69[5-7]|8(?:[2-5]\\\\d|83))\\\\d|52(?:1[147]|20))\\\\d{3}\",,,,\"2462501234\",,,,[7]],[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",\n,,,\"8002123456\"],[,,\"(?:246976|900[2-9]\\\\d\\\\d)\\\\d{4}\",,,,\"9002123456\",,,,[7]],[,,,,,,,,,[-1]],[,,\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\\\d{6}\",,,,\"5002345678\"],[,,\"24631\\\\d{5}\",,,,\"2463101234\",,,,[7]],\"BB\",1,\"011\",\"1\",,,\"1|([2-9]\\\\d{6})$\",\"246$1\",,,,,[,,,,,,,,,[-1]],,\"246\",[,,,,,,,,,[-1]],[,,\"246(?:292|367|4(?:1[7-9]|3[01]|4[47-9]|67)|7(?:1[2-9]|2\\\\d|3[016]|53))\\\\d{4}\",\n,,,\"2464301234\",,,,[7]],,,[,,,,,,,,,[-1]]],BD:[,[,,\"[1-469]\\\\d{9}|8[0-79]\\\\d{7,8}|[2-79]\\\\d{8}|[2-9]\\\\d{7}|[3-9]\\\\d{6}|[57-9]\\\\d{5}\",,,,,,,[6,7,8,9,10]],[,,\"(?:4(?:31\\\\d\\\\d|423)|5222)\\\\d{3}(?:\\\\d{2})?|8332[6-9]\\\\d\\\\d|(?:3(?:03[56]|224)|4(?:22[25]|653))\\\\d{3,4}|(?:3(?:42[47]|529|823)|4(?:027|525|65(?:28|8))|562|6257|7(?:1(?:5[3-5]|6[12]|7[156]|89)|22[589]56|32|42675|52(?:[25689](?:56|8)|[347]8)|71(?:6[1267]|75|89)|92374)|82(?:2[59]|32)56|9(?:03[23]56|23(?:256|373)|31|5(?:1|2[4589]56)))\\\\d{3}|(?:3(?:02[348]|22[35]|324|422)|4(?:22[67]|32[236-9]|6(?:2[46]|5[57])|953)|5526|6(?:024|6655)|81)\\\\d{4,5}|(?:2(?:7(?:1[0-267]|2[0-289]|3[0-29]|4[01]|5[1-3]|6[013]|7[0178]|91)|8(?:0[125]|1[1-6]|2[0157-9]|3[1-69]|41|6[1-35]|7[1-5]|8[1-8]|9[0-6])|9(?:0[0-2]|1[0-4]|2[568]|3[3-6]|5[5-7]|6[0136-9]|7[0-7]|8[014-9]))|3(?:0(?:2[025-79]|3[2-4])|181|22[12]|32[2356]|824)|4(?:02[09]|22[348]|32[045]|523|6(?:27|54))|666(?:22|53)|7(?:22[57-9]|42[56]|82[35])8|8(?:0[124-9]|2(?:181|2[02-4679]8)|4[12]|[5-7]2)|9(?:[04]2|2(?:2|328)|81))\\\\d{4}|(?:2(?:222|[45]\\\\d)\\\\d|3(?:1(?:2[5-7]|[5-7])|425|822)|4(?:033|1\\\\d|[257]1|332|4(?:2[246]|5[25])|6(?:2[35]|56|62)|8(?:23|54)|92[2-5])|5(?:02[03489]|22[457]|32[35-79]|42[46]|6(?:[18]|53)|724|826)|6(?:023|2(?:2[2-5]|5[3-5]|8)|32[3478]|42[34]|52[47]|6(?:[18]|6(?:2[34]|5[24]))|[78]2[2-5]|92[2-6])|7(?:02|21\\\\d|[3-589]1|6[12]|72[24])|8(?:217|3[12]|[5-7]1)|9[24]1)\\\\d{5}|(?:(?:3[2-8]|5[2-57-9]|6[03-589])1|4[4689][18])\\\\d{5}|[59]1\\\\d{5}\",\n,,,\"27111234\"],[,,\"(?:1[13-9]\\\\d|644)\\\\d{7}|(?:3[78]|44|66)[02-9]\\\\d{7}\",,,,\"1812345678\",,,[10]],[,,\"80[03]\\\\d{7}\",,,,\"8001234567\",,,[10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"96(?:0[469]|1[0-47]|3[389]|6[69]|7[78])\\\\d{6}\",,,,\"9604123456\",,,[10]],\"BD\",880,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{2})(\\\\d{4,6})\",\"$1-$2\",[\"31[5-8]|[459]1\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3,7})\",\"$1-$2\",[\"3(?:[67]|8[013-9])|4(?:6[168]|7|[89][18])|5(?:6[128]|9)|6(?:28|4[14]|5)|7[2-589]|8(?:0[014-9]|[12])|9[358]|(?:3[2-5]|4[235]|5[2-578]|6[0389]|76|8[3-7]|9[24])1|(?:44|66)[01346-9]\"],\n\"0$1\"],[,\"(\\\\d{4})(\\\\d{3,6})\",\"$1-$2\",[\"[13-9]|22\"],\"0$1\"],[,\"(\\\\d)(\\\\d{7,8})\",\"$1-$2\",[\"2\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],BE:[,[,,\"4\\\\d{8}|[1-9]\\\\d{7}\",,,,,,,[8,9]],[,,\"80[2-8]\\\\d{5}|(?:1[0-69]|[23][2-8]|4[23]|5\\\\d|6[013-57-9]|71|8[1-79]|9[2-4])\\\\d{6}\",,,,\"12345678\",,,[8]],[,,\"4[5-9]\\\\d{7}\",,,,\"470123456\",,,[9]],[,,\"800[1-9]\\\\d{4}\",,,,\"80012345\",,,[8]],[,,\"(?:70(?:2[0-57]|3[04-7]|44|69|7[0579])|90(?:0[0-8]|1[36]|2[0-3568]|3[013-689]|[47][2-68]|5[1-68]|6[0-378]|9[34679]))\\\\d{4}\",\n,,,\"90012345\",,,[8]],[,,\"7879\\\\d{4}\",,,,\"78791234\",,,[8]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"BE\",32,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"(?:80|9)0\"],\"0$1\"],[,\"(\\\\d)(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[239]|4[23]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[15-8]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"4\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"78(?:0[57]|1[0458]|2[25]|3[15-8]|48|[56]0|7[078]|9\\\\d)\\\\d{4}\",,,,\"78102345\",,,[8]],\n,,[,,,,,,,,,[-1]]],BF:[,[,,\"[025-7]\\\\d{7}\",,,,,,,[8]],[,,\"2(?:0(?:49|5[23]|6[5-7]|9[016-9])|4(?:4[569]|5[4-6]|6[5-7]|7[0179])|5(?:[34]\\\\d|50|6[5-7]))\\\\d{4}\",,,,\"20491234\"],[,,\"(?:0[125-7]|5[1-8]|[67]\\\\d)\\\\d{6}\",,,,\"70123456\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"BF\",226,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[025-7]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],BG:[,[,,\"[2-7]\\\\d{6,7}|[89]\\\\d{6,8}|2\\\\d{5}\",\n,,,,,,[6,7,8,9],[4,5]],[,,\"2\\\\d{5,7}|(?:43[1-6]|70[1-9])\\\\d{4,5}|(?:[36]\\\\d|4[124-7]|[57][1-9]|8[1-6]|9[1-7])\\\\d{5,6}\",,,,\"2123456\",,,[6,7,8],[4,5]],[,,\"(?:43[07-9]|99[69]\\\\d)\\\\d{5}|(?:8[7-9]|98)\\\\d{7}\",,,,\"43012345\",,,[8,9]],[,,\"800\\\\d{5}\",,,,\"80012345\",,,[8]],[,,\"90\\\\d{6}\",,,,\"90123456\",,,[8]],[,,\"700\\\\d{5}\",,,,\"70012345\",,,[8]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"BG\",359,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{6})\",\"$1\",[\"1\"]],[,\"(\\\\d)(\\\\d)(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"2\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",\n[\"43[1-6]|70[1-9]\"],\"0$1\"],[,\"(\\\\d)(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{2,3})\",\"$1 $2 $3\",[\"[356]|4[124-7]|7[1-9]|8[1-6]|9[1-7]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"(?:70|8)0\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{2})\",\"$1 $2 $3\",[\"43[1-7]|7\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[48]|9[08]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"9\"],\"0$1\"]],[[,\"(\\\\d)(\\\\d)(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"2\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"43[1-6]|70[1-9]\"],\n\"0$1\"],[,\"(\\\\d)(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{2,3})\",\"$1 $2 $3\",[\"[356]|4[124-7]|7[1-9]|8[1-6]|9[1-7]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"(?:70|8)0\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{2})\",\"$1 $2 $3\",[\"43[1-7]|7\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[48]|9[08]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"9\"],\"0$1\"]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],BH:[,[,,\"[136-9]\\\\d{7}\",,,,,,,[8]],[,,\"(?:1(?:3[1356]|6[0156]|7\\\\d)\\\\d|6(?:1[16]\\\\d|500|6(?:0\\\\d|3[12]|44|7[7-9]|88)|9[69][69])|7(?:1(?:11|78)|7\\\\d\\\\d))\\\\d{4}\",\n,,,\"17001234\"],[,,\"(?:3(?:[1-79]\\\\d|8[0-47-9])\\\\d|6(?:3(?:00|33|6[16])|6(?:3[03-9]|[69]\\\\d|7[0-6])))\\\\d{4}\",,,,\"36001234\"],[,,\"80\\\\d{6}\",,,,\"80123456\"],[,,\"(?:87|9[014578])\\\\d{6}\",,,,\"90123456\"],[,,\"84\\\\d{6}\",,,,\"84123456\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"BH\",973,\"00\",,,,,,,,[[,\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[13679]|8[047]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],BI:[,[,,\"(?:[267]\\\\d|31)\\\\d{6}\",,,,,,,[8]],[,,\"(?:22|31)\\\\d{6}\",,,,\"22201234\"],[,,\"(?:29|6[1257-9]|7[125-9])\\\\d{6}\",\n,,,\"79561234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"BI\",257,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2367]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],BJ:[,[,,\"(?:[25689]\\\\d|40)\\\\d{6}\",,,,,,,[8]],[,,\"2(?:02|1[037]|2[45]|3[68])\\\\d{5}\",,,,\"20211234\"],[,,\"(?:40|5[1-8]|6\\\\d|9[013-9])\\\\d{6}\",,,,\"90011234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"857[58]\\\\d{4}\",,,,\"85751234\"],\n\"BJ\",229,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[24-689]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"81\\\\d{6}\",,,,\"81123456\"],,,[,,,,,,,,,[-1]]],BL:[,[,,\"(?:590|(?:69|80)\\\\d|976)\\\\d{6}\",,,,,,,[9]],[,,\"590(?:2[7-9]|5[12]|87)\\\\d{4}\",,,,\"590271234\"],[,,\"69(?:0\\\\d\\\\d|1(?:2[2-9]|3[0-5]))\\\\d{4}\",,,,\"690001234\"],[,,\"80[0-5]\\\\d{6}\",,,,\"800012345\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"976[01]\\\\d{5}\",,,,\"976012345\"],\"BL\",590,\"00\",\"0\",,,\"0\",,,,,,[,,,,,,,,,[-1]],,,[,,\n,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],BM:[,[,,\"(?:441|[58]\\\\d\\\\d|900)\\\\d{7}\",,,,,,,[10],[7]],[,,\"441(?:[46]\\\\d\\\\d|5(?:4\\\\d|60|89))\\\\d{4}\",,,,\"4414123456\",,,,[7]],[,,\"441(?:[2378]\\\\d|5[0-39])\\\\d{5}\",,,,\"4413701234\",,,,[7]],[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",,,,\"8002123456\"],[,,\"900[2-9]\\\\d{6}\",,,,\"9002123456\"],[,,,,,,,,,[-1]],[,,\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\\\d{6}\",\n,,,\"5002345678\"],[,,,,,,,,,[-1]],\"BM\",1,\"011\",\"1\",,,\"1|([2-8]\\\\d{6})$\",\"441$1\",,,,,[,,,,,,,,,[-1]],,\"441\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],BN:[,[,,\"[2-578]\\\\d{6}\",,,,,,,[7]],[,,\"22[0-7]\\\\d{4}|(?:2[013-9]|[34]\\\\d|5[0-25-9])\\\\d{5}\",,,,\"2345678\"],[,,\"(?:22[89]|[78]\\\\d\\\\d)\\\\d{4}\",,,,\"7123456\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"5[34]\\\\d{5}\",,,,\"5345678\"],\"BN\",673,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-578]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],\n[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],BO:[,[,,\"(?:[2-467]\\\\d\\\\d|8001)\\\\d{5}\",,,,,,,[8,9],[7]],[,,\"(?:2(?:2\\\\d\\\\d|5(?:11|[258]\\\\d|9[67])|6(?:12|2\\\\d|9[34])|8(?:2[34]|39|62))|3(?:3\\\\d\\\\d|4(?:6\\\\d|8[24])|8(?:25|42|5[257]|86|9[25])|9(?:[27]\\\\d|3[2-4]|4[248]|5[24]|6[2-6]))|4(?:4\\\\d\\\\d|6(?:11|[24689]\\\\d|72)))\\\\d{4}\",,,,\"22123456\",,,[8],[7]],[,,\"[67]\\\\d{7}\",,,,\"71234567\",,,[8]],[,,\"8001[07]\\\\d{4}\",,,,\"800171234\",,,[9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"BO\",591,\"00(?:1\\\\d)?\",\"0\",\n,,\"0(1\\\\d)?\",,,,[[,\"(\\\\d)(\\\\d{7})\",\"$1 $2\",[\"[23]|4[46]\"],,\"0$CC $1\"],[,\"(\\\\d{8})\",\"$1\",[\"[67]\"],,\"0$CC $1\"],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"],,\"0$CC $1\"]],,[,,,,,,,,,[-1]],,,[,,\"8001[07]\\\\d{4}\",,,,,,,[9]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],BQ:[,[,,\"(?:[34]1|7\\\\d)\\\\d{5}\",,,,,,,[7]],[,,\"(?:318[023]|41(?:6[023]|70)|7(?:1[578]|2[05]|50)\\\\d)\\\\d{3}\",,,,\"7151234\"],[,,\"(?:31(?:8[14-8]|9[14578])|416[14-9]|7(?:0[01]|7[07]|8\\\\d|9[056])\\\\d)\\\\d{3}\",,,,\"3181234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,\n,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"BQ\",599,\"00\",,,,,,,,,,[,,,,,,,,,[-1]],,\"[347]\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],BR:[,[,,\"(?:[1-46-9]\\\\d\\\\d|5(?:[0-46-9]\\\\d|5[0-24679]))\\\\d{8}|[1-9]\\\\d{9}|[3589]\\\\d{8}|[34]\\\\d{7}\",,,,,,,[8,9,10,11]],[,,\"(?:[14689][1-9]|2[12478]|3[1-578]|5[13-5]|7[13-579])[2-5]\\\\d{7}\",,,,\"1123456789\",,,[10],[8]],[,,\"(?:[14689][1-9]|2[12478]|3[1-578]|5[13-5]|7[13-579])(?:7|9\\\\d)\\\\d{7}\",,,,\"11961234567\",,,[10,11],[8,9]],[,,\"800\\\\d{6,7}\",,,,\"800123456\",,\n,[9,10]],[,,\"300\\\\d{6}|[59]00\\\\d{6,7}\",,,,\"300123456\",,,[9,10]],[,,\"(?:30[03]\\\\d{3}|4(?:0(?:0\\\\d|20)|370))\\\\d{4}|300\\\\d{5}\",,,,\"40041234\",,,[8,10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"BR\",55,\"00(?:1[245]|2[1-35]|31|4[13]|[56]5|99)\",\"0\",,,\"(?:0|90)(?:(1[245]|2[1-35]|31|4[13]|[56]5|99)(\\\\d{10,11}))?\",\"$2\",,,[[,\"(\\\\d{3,6})\",\"$1\",[\"1(?:1[25-8]|2[357-9]|3[02-68]|4[12568]|5|6[0-8]|8[015]|9[0-47-9])|321|610\"]],[,\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"300|4(?:0[02]|37)\",\"4(?:02|37)0|[34]00\"]],[,\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",\n[\"[2-57]\",\"[2357]|4(?:[0-24-9]|3(?:[0-689]|7[1-9]))\"]],[,\"(\\\\d{3})(\\\\d{2,3})(\\\\d{4})\",\"$1 $2 $3\",[\"(?:[358]|90)0\"],\"0$1\"],[,\"(\\\\d{5})(\\\\d{4})\",\"$1-$2\",[\"9\"]],[,\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2-$3\",[\"(?:[14689][1-9]|2[12478]|3[1-578]|5[13-5]|7[13-579])[2-57]\"],\"($1)\",\"0 $CC ($1)\"],[,\"(\\\\d{2})(\\\\d{5})(\\\\d{4})\",\"$1 $2-$3\",[\"[16][1-9]|[2-57-9]\"],\"($1)\",\"0 $CC ($1)\"]],[[,\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"300|4(?:0[02]|37)\",\"4(?:02|37)0|[34]00\"]],[,\"(\\\\d{3})(\\\\d{2,3})(\\\\d{4})\",\"$1 $2 $3\",[\"(?:[358]|90)0\"],\n\"0$1\"],[,\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2-$3\",[\"(?:[14689][1-9]|2[12478]|3[1-578]|5[13-5]|7[13-579])[2-57]\"],\"($1)\",\"0 $CC ($1)\"],[,\"(\\\\d{2})(\\\\d{5})(\\\\d{4})\",\"$1 $2-$3\",[\"[16][1-9]|[2-57-9]\"],\"($1)\",\"0 $CC ($1)\"]],[,,,,,,,,,[-1]],,,[,,\"4020\\\\d{4}|[34]00\\\\d{5}\",,,,,,,[8]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],BS:[,[,,\"(?:242|[58]\\\\d\\\\d|900)\\\\d{7}\",,,,,,,[10],[7]],[,,\"242(?:3(?:02|[236][1-9]|4[0-24-9]|5[0-68]|7[347]|8[0-4]|9[2-467])|461|502|6(?:0[1-4]|12|2[013]|[45]0|7[67]|8[78]|9[89])|7(?:02|88))\\\\d{4}\",\n,,,\"2423456789\",,,,[7]],[,,\"242(?:3(?:5[79]|7[56]|95)|4(?:[23][1-9]|4[1-35-9]|5[1-8]|6[2-8]|7\\\\d|81)|5(?:2[45]|3[35]|44|5[1-46-9]|65|77)|6[34]6|7(?:27|38)|8(?:0[1-9]|1[02-9]|2\\\\d|[89]9))\\\\d{4}\",,,,\"2423591234\",,,,[7]],[,,\"242300\\\\d{4}|8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",,,,\"8002123456\",,,,[7]],[,,\"900[2-9]\\\\d{6}\",,,,\"9002123456\"],[,,,,,,,,,[-1]],[,,\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\\\d{6}\",\n,,,\"5002345678\"],[,,,,,,,,,[-1]],\"BS\",1,\"011\",\"1\",,,\"1|([3-8]\\\\d{6})$\",\"242$1\",,,,,[,,,,,,,,,[-1]],,\"242\",[,,,,,,,,,[-1]],[,,\"242225\\\\d{4}\",,,,\"2422250123\"],,,[,,,,,,,,,[-1]]],BT:[,[,,\"[17]\\\\d{7}|[2-8]\\\\d{6}\",,,,,,,[7,8],[6]],[,,\"(?:2[3-6]|[34][5-7]|5[236]|6[2-46]|7[246]|8[2-4])\\\\d{5}\",,,,\"2345678\",,,[7],[6]],[,,\"(?:1[67]|77)\\\\d{6}\",,,,\"17123456\",,,[8]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"BT\",975,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{3})\",\"$1 $2\",[\"[2-7]\"]],[,\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\n\"$1 $2 $3\",[\"[2-68]|7[246]\"]],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"1[67]|7\"]]],[[,\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2-68]|7[246]\"]],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"1[67]|7\"]]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],BW:[,[,,\"(?:0800|(?:[37]|800)\\\\d)\\\\d{6}|(?:[2-6]\\\\d|90)\\\\d{5}\",,,,,,,[7,8,10]],[,,\"(?:2(?:4[0-48]|6[0-24]|9[0578])|3(?:1[0-35-9]|55|[69]\\\\d|7[013])|4(?:6[03]|7[1267]|9[0-5])|5(?:3[03489]|4[0489]|7[1-47]|88|9[0-49])|6(?:2[1-35]|5[149]|8[067]))\\\\d{4}\",\n,,,\"2401234\",,,[7]],[,,\"(?:321|7(?:[1-7]\\\\d|8[01]))\\\\d{5}\",,,,\"71123456\",,,[8]],[,,\"(?:0800|800\\\\d)\\\\d{6}\",,,,\"0800012345\",,,[10]],[,,\"90\\\\d{5}\",,,,\"9012345\",,,[7]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"79(?:1(?:[01]\\\\d|20)|2[0-25-7]\\\\d)\\\\d{3}\",,,,\"79101234\",,,[8]],\"BW\",267,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"90\"]],[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[24-6]|3[15-79]\"]],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[37]\"]],[,\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"0\"]],[,\"(\\\\d{3})(\\\\d{4})(\\\\d{3})\",\"$1 $2 $3\",\n[\"8\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],BY:[,[,,\"(?:[12]\\\\d|33|44|902)\\\\d{7}|8(?:0[0-79]\\\\d{5,7}|[1-7]\\\\d{9})|8(?:1[0-489]|[5-79]\\\\d)\\\\d{7}|8[1-79]\\\\d{6,7}|8[0-79]\\\\d{5}|8\\\\d{5}\",,,,,,,[6,7,8,9,10,11],[5]],[,,\"(?:1(?:5(?:1[1-5]|[24]\\\\d|6[2-4]|9[1-7])|6(?:[235]\\\\d|4[1-7])|7\\\\d\\\\d)|2(?:1(?:[246]\\\\d|3[0-35-9]|5[1-9])|2(?:[235]\\\\d|4[0-8])|3(?:[26]\\\\d|3[02-79]|4[024-7]|5[03-7])))\\\\d{5}\",,,,\"152450911\",,,[9],[5,6,7]],[,,\"(?:2(?:5[5-79]|9[1-9])|(?:33|44)\\\\d)\\\\d{6}\",\n,,,\"294911911\",,,[9]],[,,\"800\\\\d{3,7}|8(?:0[13]|20\\\\d)\\\\d{7}\",,,,\"8011234567\"],[,,\"(?:810|902)\\\\d{7}\",,,,\"9021234567\",,,[10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"249\\\\d{6}\",,,,\"249123456\",,,[9]],\"BY\",375,\"810\",\"8\",,,\"0|80?\",,\"8~10\",,[[,\"(\\\\d{3})(\\\\d{3})\",\"$1 $2\",[\"800\"],\"8 $1\"],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2,4})\",\"$1 $2 $3\",[\"800\"],\"8 $1\"],[,\"(\\\\d{4})(\\\\d{2})(\\\\d{3})\",\"$1 $2-$3\",[\"1(?:5[169]|6[3-5]|7[179])|2(?:1[35]|2[34]|3[3-5])\",\"1(?:5[169]|6(?:3[1-3]|4|5[125])|7(?:1[3-9]|7[0-24-6]|9[2-7]))|2(?:1[35]|2[34]|3[3-5])\"],\n\"8 0$1\"],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2-$3-$4\",[\"1(?:[56]|7[467])|2[1-3]\"],\"8 0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2-$3-$4\",[\"[1-4]\"],\"8 0$1\"],[,\"(\\\\d{3})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"[89]\"],\"8 $1\"]],,[,,,,,,,,,[-1]],,,[,,\"800\\\\d{3,7}|(?:8(?:0[13]|10|20\\\\d)|902)\\\\d{7}\"],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],BZ:[,[,,\"(?:0800\\\\d|[2-8])\\\\d{6}\",,,,,,,[7,11]],[,,\"(?:2(?:[02]\\\\d|36|[68]0)|[3-58](?:[02]\\\\d|[68]0)|7(?:[02]\\\\d|32|[68]0))\\\\d{4}\",,,,\"2221234\",,,[7]],[,,\"6[0-35-7]\\\\d{5}\",\n,,,\"6221234\",,,[7]],[,,\"0800\\\\d{7}\",,,,\"08001234123\",,,[11]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"BZ\",501,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[2-8]\"]],[,\"(\\\\d)(\\\\d{3})(\\\\d{4})(\\\\d{3})\",\"$1-$2-$3-$4\",[\"0\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],CA:[,[,,\"(?:[2-8]\\\\d|90)\\\\d{8}\",,,,,,,[10],[7]],[,,\"(?:2(?:04|[23]6|[48]9|50|63)|3(?:06|43|6[578])|4(?:03|1[68]|3[178]|50|68|74)|5(?:06|1[49]|48|79|8[147])|6(?:04|13|39|47|72)|7(?:0[59]|78|8[02])|8(?:[06]7|19|25|73)|90[25])[2-9]\\\\d{6}\",\n,,,\"5062345678\",,,,[7]],[,,\"(?:2(?:04|[23]6|[48]9|50|63)|3(?:06|43|6[578])|4(?:03|1[68]|3[178]|50|68|74)|5(?:06|1[49]|48|79|8[147])|6(?:04|13|39|47|72)|7(?:0[59]|78|8[02])|8(?:[06]7|19|25|73)|90[25])[2-9]\\\\d{6}\",,,,\"5062345678\",,,,[7]],[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",,,,\"8002123456\"],[,,\"900[2-9]\\\\d{6}\",,,,\"9002123456\"],[,,,,,,,,,[-1]],[,,\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|(?:5(?:00|2[125-7]|33|44|66|77|88)|622)[2-9]\\\\d{6}\",\n,,,\"5002345678\"],[,,\"600[2-9]\\\\d{6}\",,,,\"6002012345\"],\"CA\",1,\"011\",\"1\",,,\"1\",,,1,,,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],CC:[,[,,\"1(?:[0-79]\\\\d{8}(?:\\\\d{2})?|8[0-24-9]\\\\d{7})|[148]\\\\d{8}|1\\\\d{5,7}\",,,,,,,[6,7,8,9,10,12]],[,,\"8(?:51(?:0(?:02|31|60|89)|1(?:18|76)|223)|91(?:0(?:1[0-2]|29)|1(?:[28]2|50|79)|2(?:10|64)|3(?:[06]8|22)|4[29]8|62\\\\d|70[23]|959))\\\\d{3}\",,,,\"891621234\",,,[9],[8]],[,,\"4(?:83[0-38]|93[0-6])\\\\d{5}|4(?:[0-3]\\\\d|4[047-9]|5[0-25-9]|6[06-9]|7[02-9]|8[0-24-9]|9[0-27-9])\\\\d{6}\",\n,,,\"412345678\",,,[9]],[,,\"180(?:0\\\\d{3}|2)\\\\d{3}\",,,,\"1800123456\",,,[7,10]],[,,\"190[0-26]\\\\d{6}\",,,,\"1900123456\",,,[10]],[,,\"13(?:00\\\\d{6}(?:\\\\d{2})?|45[0-4]\\\\d{3})|13\\\\d{4}\",,,,\"1300123456\",,,[6,8,10,12]],[,,,,,,,,,[-1]],[,,\"14(?:5(?:1[0458]|[23][458])|71\\\\d)\\\\d{4}\",,,,\"147101234\",,,[9]],\"CC\",61,\"001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011\",\"0\",,,\"0|([59]\\\\d{7})$\",\"8$1\",\"0011\",,,,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],CD:[,[,,\"[189]\\\\d{8}|[1-68]\\\\d{6}\",,,,,,\n,[7,9]],[,,\"12\\\\d{7}|[1-6]\\\\d{6}\",,,,\"1234567\"],[,,\"88\\\\d{5}|(?:8[0-59]|9[017-9])\\\\d{7}\",,,,\"991234567\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"CD\",243,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"88\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"[1-6]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[89]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],CF:[,[,,\n\"(?:[27]\\\\d{3}|8776)\\\\d{4}\",,,,,,,[8]],[,,\"2[12]\\\\d{6}\",,,,\"21612345\"],[,,\"7[02457]\\\\d{6}\",,,,\"70012345\"],[,,,,,,,,,[-1]],[,,\"8776\\\\d{4}\",,,,\"87761234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"CF\",236,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[278]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],CG:[,[,,\"222\\\\d{6}|(?:0\\\\d|80)\\\\d{7}\",,,,,,,[9]],[,,\"222[1-589]\\\\d{5}\",,,,\"222123456\"],[,,\"026(?:1[0-5]|6[6-9])\\\\d{4}|0(?:[14-6]\\\\d\\\\d|2(?:40|5[5-8]|6[07-9]))\\\\d{5}\",\n,,,\"061234567\"],[,,,,,,,,,[-1]],[,,\"80(?:0\\\\d\\\\d|120)\\\\d{4}\",,,,\"800123456\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"CG\",242,\"00\",,,,,,,,[[,\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"]],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[02]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],CH:[,[,,\"8\\\\d{11}|[2-9]\\\\d{8}\",,,,,,,[9,12]],[,,\"(?:2[12467]|3[1-4]|4[134]|5[256]|6[12]|[7-9]1)\\\\d{7}\",,,,\"212345678\",,,[9]],[,,\"7[35-9]\\\\d{7}\",,,,\"781234567\",,,[9]],[,,\"800\\\\d{6}\",,,,\"800123456\",\n,,[9]],[,,\"90[016]\\\\d{6}\",,,,\"900123456\",,,[9]],[,,\"84[0248]\\\\d{6}\",,,,\"840123456\",,,[9]],[,,\"878\\\\d{6}\",,,,\"878123456\",,,[9]],[,,,,,,,,,[-1]],\"CH\",41,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8[047]|90\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2-79]|81\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4 $5\",[\"8\"],\"0$1\"]],,[,,\"74[0248]\\\\d{6}\",,,,\"740123456\",,,[9]],,,[,,,,,,,,,[-1]],[,,\"5[18]\\\\d{7}\",,,,\"581234567\",,,[9]],,,[,,\"860\\\\d{9}\",,,,\"860123456789\",\n,,[12]]],CI:[,[,,\"[02]\\\\d{9}\",,,,,,,[10]],[,,\"2(?:[15]\\\\d{3}|7(?:2(?:0[23]|1[2357]|[23][45]|4[3-5])|3(?:06|1[69]|[2-6]7)))\\\\d{5}\",,,,\"2123456789\"],[,,\"0704[0-7]\\\\d{5}|0(?:[15]\\\\d\\\\d|7(?:0[0-37-9]|[4-9][7-9]))\\\\d{6}\",,,,\"0123456789\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"CI\",225,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d)(\\\\d{5})\",\"$1 $2 $3 $4\",[\"2\"]],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3 $4\",[\"0\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,\n,[,,,,,,,,,[-1]]],CK:[,[,,\"[2-578]\\\\d{4}\",,,,,,,[5]],[,,\"(?:2\\\\d|3[13-7]|4[1-5])\\\\d{3}\",,,,\"21234\"],[,,\"[578]\\\\d{4}\",,,,\"71234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"CK\",682,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{3})\",\"$1 $2\",[\"[2-578]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],CL:[,[,,\"12300\\\\d{6}|6\\\\d{9,10}|[2-9]\\\\d{8}\",,,,,,,[9,10,11]],[,,\"2(?:1982[0-6]|3314[05-9])\\\\d{3}|(?:2(?:1(?:160|962)|3(?:2\\\\d\\\\d|3(?:[034]\\\\d|1[0-35-9]|2[1-9]|5[0-2])|600)|6469)|80[1-9]\\\\d\\\\d|9(?:3(?:[0-57-9]\\\\d\\\\d|6(?:0[02-9]|[1-9]\\\\d))|6(?:[0-8]\\\\d\\\\d|9(?:[02-79]\\\\d|1[05-9]))|7[1-9]\\\\d\\\\d|9(?:[03-9]\\\\d\\\\d|1(?:[0235-9]\\\\d|4[0-24-9])|2(?:[0-79]\\\\d|8[0-46-9]))))\\\\d{4}|(?:22|3[2-5]|[47][1-35]|5[1-3578]|6[13-57]|8[1-9]|9[2458])\\\\d{7}\",\n,,,\"221234567\",,,[9]],[,,\"2(?:1982[0-6]|3314[05-9])\\\\d{3}|(?:2(?:1(?:160|962)|3(?:2\\\\d\\\\d|3(?:[034]\\\\d|1[0-35-9]|2[1-9]|5[0-2])|600)|6469)|80[1-9]\\\\d\\\\d|9(?:3(?:[0-57-9]\\\\d\\\\d|6(?:0[02-9]|[1-9]\\\\d))|6(?:[0-8]\\\\d\\\\d|9(?:[02-79]\\\\d|1[05-9]))|7[1-9]\\\\d\\\\d|9(?:[03-9]\\\\d\\\\d|1(?:[0235-9]\\\\d|4[0-24-9])|2(?:[0-79]\\\\d|8[0-46-9]))))\\\\d{4}|(?:22|3[2-5]|[47][1-35]|5[1-3578]|6[13-57]|8[1-9]|9[2458])\\\\d{7}\",,,,\"221234567\",,,[9]],[,,\"(?:123|8)00\\\\d{6}\",,,,\"800123456\",,,[9,11]],[,,,,,,,,,[-1]],[,,\"600\\\\d{7,8}\",,\n,,\"6001234567\",,,[10,11]],[,,,,,,,,,[-1]],[,,\"44\\\\d{7}\",,,,\"441234567\",,,[9]],\"CL\",56,\"(?:0|1(?:1[0-69]|2[02-5]|5[13-58]|69|7[0167]|8[018]))0\",,,,,,,1,[[,\"(\\\\d{4})\",\"$1\",[\"1(?:[03-589]|21)|[29]0|78\"]],[,\"(\\\\d{5})(\\\\d{4})\",\"$1 $2\",[\"219\",\"2196\"],\"($1)\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"44\"]],[,\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"2[1-36]\"],\"($1)\"],[,\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"9[2-9]\"]],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"3[2-5]|[47]|5[1-3578]|6[13-57]|8(?:0[1-9]|[1-9])\"],\"($1)\"],\n[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"60|8\"]],[,\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"]],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"60\"]]],[[,\"(\\\\d{5})(\\\\d{4})\",\"$1 $2\",[\"219\",\"2196\"],\"($1)\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"44\"]],[,\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"2[1-36]\"],\"($1)\"],[,\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"9[2-9]\"]],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"3[2-5]|[47]|5[1-3578]|6[13-57]|8(?:0[1-9]|[1-9])\"],\"($1)\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",\n[\"60|8\"]],[,\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"]],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"60\"]]],[,,,,,,,,,[-1]],,,[,,\"600\\\\d{7,8}\",,,,,,,[10,11]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],CM:[,[,,\"[26]\\\\d{8}|88\\\\d{6,7}\",,,,,,,[8,9]],[,,\"2(?:22|33)\\\\d{6}\",,,,\"222123456\",,,[9]],[,,\"(?:24[23]|6[5-9]\\\\d)\\\\d{6}\",,,,\"671234567\",,,[9]],[,,\"88\\\\d{6,7}\",,,,\"88012345\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"CM\",237,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",\n[\"88\"]],[,\"(\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4 $5\",[\"[26]|88\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],CN:[,[,,\"1[127]\\\\d{8,9}|2\\\\d{9}(?:\\\\d{2})?|[12]\\\\d{6,7}|86\\\\d{6}|(?:1[03-689]\\\\d|6)\\\\d{7,9}|(?:[3-579]\\\\d|8[0-57-9])\\\\d{6,9}\",,,,,,,[7,8,9,10,11,12],[5,6]],[,,\"(?:10(?:[02-79]\\\\d\\\\d|[18](?:0[1-9]|[1-9]\\\\d))|21(?:[18](?:0[1-9]|[1-9]\\\\d)|[2-79]\\\\d\\\\d))\\\\d{5}|(?:43[35]|754)\\\\d{7,8}|8(?:078\\\\d{7}|51\\\\d{7,8})|(?:10|(?:2|85)1|43[35]|754)(?:100\\\\d\\\\d|95\\\\d{3,4})|(?:2[02-57-9]|3(?:11|7[179])|4(?:[15]1|3[12])|5(?:1\\\\d|2[37]|3[12]|51|7[13-79]|9[15])|7(?:[39]1|5[57]|6[09])|8(?:71|98))(?:[02-8]\\\\d{7}|1(?:0(?:0\\\\d\\\\d(?:\\\\d{3})?|[1-9]\\\\d{5})|[1-9]\\\\d{6})|9(?:[0-46-9]\\\\d{6}|5\\\\d{3}(?:\\\\d(?:\\\\d{2})?)?))|(?:3(?:1[02-9]|35|49|5\\\\d|7[02-68]|9[1-68])|4(?:1[02-9]|2[179]|3[46-9]|5[2-9]|6[47-9]|7\\\\d|8[23])|5(?:3[03-9]|4[36]|5[02-9]|6[1-46]|7[028]|80|9[2-46-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[17]\\\\d|2[248]|3[04-9]|4[3-6]|5[0-3689]|6[2368]|9[02-9])|8(?:1[236-8]|2[5-7]|3\\\\d|5[2-9]|7[02-9]|8[36-8]|9[1-7])|9(?:0[1-3689]|1[1-79]|[379]\\\\d|4[13]|5[1-5]))(?:[02-8]\\\\d{6}|1(?:0(?:0\\\\d\\\\d(?:\\\\d{2})?|[1-9]\\\\d{4})|[1-9]\\\\d{5})|9(?:[0-46-9]\\\\d{5}|5\\\\d{3,5}))\",\n,,,\"1012345678\",,,[7,8,9,10,11],[5,6]],[,,\"1740[0-5]\\\\d{6}|1(?:[38]\\\\d|4[57]|5[0-35-9]|6[25-7]|7[0-35-8]|9[0135-9])\\\\d{8}\",,,,\"13123456789\",,,[11]],[,,\"(?:(?:10|21)8|8)00\\\\d{7}\",,,,\"8001234567\",,,[10,12]],[,,\"16[08]\\\\d{5}\",,,,\"16812345\",,,[8]],[,,\"400\\\\d{7}|950\\\\d{7,8}|(?:10|2[0-57-9]|3(?:[157]\\\\d|35|49|9[1-68])|4(?:[17]\\\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\\\d|4[13]|5[1-5]))96\\\\d{3,4}\",\n,,,\"4001234567\",,,[7,8,9,10,11],[5,6]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"CN\",86,\"00|1(?:[12]\\\\d|79)\\\\d\\\\d00\",\"0\",,,\"0|(1(?:[12]\\\\d|79)\\\\d\\\\d)\",,\"00\",,[[,\"(\\\\d{5,6})\",\"$1\",[\"96\"]],[,\"(\\\\d{2})(\\\\d{5,6})\",\"$1 $2\",[\"(?:10|2[0-57-9])[19]\",\"(?:10|2[0-57-9])(?:10|9[56])\",\"(?:10|2[0-57-9])(?:100|9[56])\"],\"0$1\",\"$CC $1\"],[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[1-9]\",\"1[1-9]|26|[3-9]|(?:10|2[0-57-9])(?:[0-8]|9[0-47-9])\",\"1[1-9]|26|[3-9]|(?:10|2[0-57-9])(?:[02-8]|1(?:0[1-9]|[1-9])|9[0-47-9])\"]],[,\"(\\\\d{4})(\\\\d{4})\",\n\"$1 $2\",[\"16[08]\"]],[,\"(\\\\d{3})(\\\\d{5,6})\",\"$1 $2\",[\"3(?:[157]|35|49|9[1-68])|4(?:[17]|2[179]|6[47-9]|8[23])|5(?:[1357]|2[37]|4[36]|6[1-46]|80)|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]|4[13]|5[1-5])|(?:4[35]|59|85)[1-9]\",\"(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:[17]\\\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\\\d|4[13]|5[1-5]))[19]\",\n\"85[23](?:10|95)|(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:[17]\\\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\\\d|4[13]|5[1-5]))(?:10|9[56])\",\"85[23](?:100|95)|(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:[17]\\\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\\\d|4[13]|5[1-5]))(?:100|9[56])\"],\n\"0$1\",\"$CC $1\"],[,\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[1-9]\",\"1[1-9]|26|[3-9]|(?:10|2[0-57-9])(?:[0-8]|9[0-47-9])\",\"26|3(?:[0268]|9[079])|4(?:[049]|2[02-68]|[35]0|6[0-356]|8[014-9])|5(?:0|2[0-24-689]|4[0-2457-9]|6[057-9]|90)|6(?:[0-24578]|6[14-79]|9[03-9])|7(?:0[02-9]|2[0135-79]|3[23]|4[0-27-9]|6[1457]|8)|8(?:[046]|1[01459]|2[0-489]|50|8[0-2459]|9[09])|9(?:0[0457]|1[08]|[268]|4[024-9])|(?:34|85[23])[0-8]|(?:1|58)[1-9]|(?:63|95)[06-9]|(?:33|85[23]9)[0-46-9]|(?:10|2[0-57-9]|3(?:[157]\\\\d|35|49|9[1-68])|4(?:[17]\\\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\\\d|4[13]|5[1-5]))(?:[0-8]|9[0-47-9])\",\n\"26|3(?:[0268]|3[0-46-9]|4[0-8]|9[079])|4(?:[049]|2[02-68]|[35]0|6[0-356]|8[014-9])|5(?:0|2[0-24-689]|4[0-2457-9]|6[057-9]|90)|6(?:[0-24578]|3[06-9]|6[14-79]|9[03-9])|7(?:0[02-9]|2[0135-79]|3[23]|4[0-27-9]|6[1457]|8)|8(?:[046]|1[01459]|2[0-489]|5(?:0|[23](?:[02-8]|1[1-9]|9[0-46-9]))|8[0-2459]|9[09])|9(?:0[0457]|1[08]|[268]|4[024-9]|5[06-9])|(?:1|58|85[23]10)[1-9]|(?:10|2[0-57-9])(?:[0-8]|9[0-47-9])|(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:[17]\\\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\\\d|4[13]|5[1-5]))(?:[02-8]|1(?:0[1-9]|[1-9])|9[0-47-9])\"]],\n[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"(?:4|80)0\"]],[,\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"10|2(?:[02-57-9]|1[1-9])\",\"10|2(?:[02-57-9]|1[1-9])\",\"10[0-79]|2(?:[02-57-9]|1[1-79])|(?:10|21)8(?:0[1-9]|[1-9])\"],\"0$1\",\"$CC $1\",1],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"3(?:[3-59]|7[02-68])|4(?:[26-8]|3[3-9]|5[2-9])|5(?:3[03-9]|[468]|7[028]|9[2-46-9])|6|7(?:[0-247]|3[04-9]|5[0-4689]|6[2368])|8(?:[1-358]|9[1-7])|9(?:[013479]|5[1-5])|(?:[34]1|55|79|87)[02-9]\"],\"0$1\",\"$CC $1\",1],[,\"(\\\\d{3})(\\\\d{7,8})\",\n\"$1 $2\",[\"9\"]],[,\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"80\"],\"0$1\",\"$CC $1\",1],[,\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[3-578]\"],\"0$1\",\"$CC $1\",1],[,\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"1[3-9]\"],,\"$CC $1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3 $4\",[\"[12]\"],\"0$1\",,1]],[[,\"(\\\\d{2})(\\\\d{5,6})\",\"$1 $2\",[\"(?:10|2[0-57-9])[19]\",\"(?:10|2[0-57-9])(?:10|9[56])\",\"(?:10|2[0-57-9])(?:100|9[56])\"],\"0$1\",\"$CC $1\"],[,\"(\\\\d{3})(\\\\d{5,6})\",\"$1 $2\",[\"3(?:[157]|35|49|9[1-68])|4(?:[17]|2[179]|6[47-9]|8[23])|5(?:[1357]|2[37]|4[36]|6[1-46]|80)|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]|4[13]|5[1-5])|(?:4[35]|59|85)[1-9]\",\n\"(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:[17]\\\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\\\d|4[13]|5[1-5]))[19]\",\"85[23](?:10|95)|(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:[17]\\\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\\\d|4[13]|5[1-5]))(?:10|9[56])\",\n\"85[23](?:100|95)|(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:[17]\\\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\\\d|4[13]|5[1-5]))(?:100|9[56])\"],\"0$1\",\"$CC $1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"(?:4|80)0\"]],[,\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"10|2(?:[02-57-9]|1[1-9])\",\"10|2(?:[02-57-9]|1[1-9])\",\"10[0-79]|2(?:[02-57-9]|1[1-79])|(?:10|21)8(?:0[1-9]|[1-9])\"],\n\"0$1\",\"$CC $1\",1],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"3(?:[3-59]|7[02-68])|4(?:[26-8]|3[3-9]|5[2-9])|5(?:3[03-9]|[468]|7[028]|9[2-46-9])|6|7(?:[0-247]|3[04-9]|5[0-4689]|6[2368])|8(?:[1-358]|9[1-7])|9(?:[013479]|5[1-5])|(?:[34]1|55|79|87)[02-9]\"],\"0$1\",\"$CC $1\",1],[,\"(\\\\d{3})(\\\\d{7,8})\",\"$1 $2\",[\"9\"]],[,\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"80\"],\"0$1\",\"$CC $1\",1],[,\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[3-578]\"],\"0$1\",\"$CC $1\",1],[,\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"1[3-9]\"],,\"$CC $1\"],\n[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3 $4\",[\"[12]\"],\"0$1\",,1]],[,,,,,,,,,[-1]],,,[,,\"(?:(?:10|21)8|[48])00\\\\d{7}|950\\\\d{7,8}\",,,,,,,[10,11,12]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],CO:[,[,,\"(?:(?:1\\\\d|[36])\\\\d{3}|9101)\\\\d{6}|[124-8]\\\\d{7}\",,,,,,,[8,10,11],[7]],[,,\"60[124-8][2-9]\\\\d{6}|[124-8][2-9]\\\\d{6}\",,,,\"12345678\",,,[8,10],[7]],[,,\"3333(?:0(?:0\\\\d|1[0-5])|[4-9]\\\\d\\\\d)\\\\d{3}|(?:3(?:24[1-9]|3(?:00|3[0-24-9]))|9101)\\\\d{6}|3(?:0[0-5]|1\\\\d|2[0-3]|5[01]|70)\\\\d{7}\",,,,\"3211234567\",,,[10]],[,,\"1800\\\\d{7}\",\n,,,\"18001234567\",,,[11]],[,,\"19(?:0[01]|4[78])\\\\d{7}\",,,,\"19001234567\",,,[11]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"CO\",57,\"00(?:4(?:[14]4|56)|[579])\",\"0\",,,\"0([3579]|4(?:[14]4|56))?\",,,,[[,\"(\\\\d)(\\\\d{7})\",\"$1 $2\",[\"[146][2-9]|[2578]\"],\"($1)\",\"0$CC $1\"],[,\"(\\\\d{3})(\\\\d{7})\",\"$1 $2\",[\"6\"],\"($1)\"],[,\"(\\\\d{3})(\\\\d{7})\",\"$1 $2\",[\"[39]\"],,\"0$CC $1\"],[,\"(\\\\d)(\\\\d{3})(\\\\d{7})\",\"$1-$2-$3\",[\"1\"],\"0$1\"]],[[,\"(\\\\d)(\\\\d{7})\",\"$1 $2\",[\"[146][2-9]|[2578]\"],\"($1)\",\"0$CC $1\"],[,\"(\\\\d{3})(\\\\d{7})\",\"$1 $2\",\n[\"6\"],\"($1)\"],[,\"(\\\\d{3})(\\\\d{7})\",\"$1 $2\",[\"[39]\"],,\"0$CC $1\"],[,\"(\\\\d)(\\\\d{3})(\\\\d{7})\",\"$1 $2 $3\",[\"1\"]]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],CR:[,[,,\"(?:8\\\\d|90)\\\\d{8}|(?:[24-8]\\\\d{3}|3005)\\\\d{4}\",,,,,,,[8,10]],[,,\"210[7-9]\\\\d{4}|2(?:[024-7]\\\\d|1[1-9])\\\\d{5}\",,,,\"22123456\",,,[8]],[,,\"(?:3005\\\\d|6500[01])\\\\d{3}|(?:5[07]|6[0-4]|7[0-3]|8[3-9])\\\\d{6}\",,,,\"83123456\",,,[8]],[,,\"800\\\\d{7}\",,,,\"8001234567\",,,[10]],[,,\"90[059]\\\\d{7}\",,,,\"9001234567\",,,[10]],[,,,,,,,,,[-1]],\n[,,,,,,,,,[-1]],[,,\"(?:210[0-6]|4\\\\d{3}|5100)\\\\d{4}\",,,,\"40001234\",,,[8]],\"CR\",506,\"00\",,,,\"(19(?:0[0-2468]|1[09]|20|66|77|99))\",,,,[[,\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[2-7]|8[3-9]\"],,\"$CC $1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"[89]\"],,\"$CC $1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],CU:[,[,,\"[27]\\\\d{6,7}|[34]\\\\d{5,7}|(?:5|8\\\\d\\\\d)\\\\d{7}\",,,,,,,[6,7,8,10],[4,5]],[,,\"(?:3[23]|48)\\\\d{4,6}|(?:31|4[36]|8(?:0[25]|78)\\\\d)\\\\d{6}|(?:2[1-4]|4[1257]|7\\\\d)\\\\d{5,6}\",,,,\"71234567\",\n,,,[4,5]],[,,\"5\\\\d{7}\",,,,\"51234567\",,,[8]],[,,\"800\\\\d{7}\",,,,\"8001234567\",,,[10]],[,,,,,,,,,[-1]],[,,\"807\\\\d{7}\",,,,\"8071234567\",,,[10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"CU\",53,\"119\",\"0\",,,\"0\",,,,[[,\"(\\\\d{2})(\\\\d{4,6})\",\"$1 $2\",[\"2[1-4]|[34]\"],\"(0$1)\"],[,\"(\\\\d)(\\\\d{6,7})\",\"$1 $2\",[\"7\"],\"(0$1)\"],[,\"(\\\\d)(\\\\d{7})\",\"$1 $2\",[\"5\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{7})\",\"$1 $2\",[\"8\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],CV:[,[,,\"(?:[2-59]\\\\d\\\\d|800)\\\\d{4}\",,,,,,,[7]],[,,\"2(?:2[1-7]|3[0-8]|4[12]|5[1256]|6\\\\d|7[1-3]|8[1-5])\\\\d{4}\",\n,,,\"2211234\"],[,,\"(?:36|5[1-389]|9\\\\d)\\\\d{5}\",,,,\"9911234\"],[,,\"800\\\\d{4}\",,,,\"8001234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"(?:3[3-5]|4[356])\\\\d{5}\",,,,\"3401234\"],\"CV\",238,\"0\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"[2-589]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],CW:[,[,,\"(?:[34]1|60|(?:7|9\\\\d)\\\\d)\\\\d{5}\",,,,,,,[7,8]],[,,\"9(?:4(?:3[0-5]|4[14]|6\\\\d)|50\\\\d|7(?:2[014]|3[02-9]|4[4-9]|6[357]|77|8[7-9])|8(?:3[39]|[46]\\\\d|7[01]|8[57-9]))\\\\d{4}\",\n,,,\"94351234\"],[,,\"953[01]\\\\d{4}|9(?:5[12467]|6[5-9])\\\\d{5}\",,,,\"95181234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"60[0-2]\\\\d{4}\",,,,\"6001234\",,,[7]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"CW\",599,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[3467]\"]],[,\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"9[4-8]\"]]],,[,,\"955\\\\d{5}\",,,,\"95581234\",,,[8]],1,\"[69]\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],CX:[,[,,\"1(?:[0-79]\\\\d{8}(?:\\\\d{2})?|8[0-24-9]\\\\d{7})|[148]\\\\d{8}|1\\\\d{5,7}\",,,,,,,[6,7,8,9,10,12]],[,,\"8(?:51(?:0(?:01|30|59|88)|1(?:17|46|75)|2(?:22|35))|91(?:00[6-9]|1(?:[28]1|49|78)|2(?:09|63)|3(?:12|26|75)|4(?:56|97)|64\\\\d|7(?:0[01]|1[0-2])|958))\\\\d{3}\",\n,,,\"891641234\",,,[9],[8]],[,,\"4(?:83[0-38]|93[0-6])\\\\d{5}|4(?:[0-3]\\\\d|4[047-9]|5[0-25-9]|6[06-9]|7[02-9]|8[0-24-9]|9[0-27-9])\\\\d{6}\",,,,\"412345678\",,,[9]],[,,\"180(?:0\\\\d{3}|2)\\\\d{3}\",,,,\"1800123456\",,,[7,10]],[,,\"190[0-26]\\\\d{6}\",,,,\"1900123456\",,,[10]],[,,\"13(?:00\\\\d{6}(?:\\\\d{2})?|45[0-4]\\\\d{3})|13\\\\d{4}\",,,,\"1300123456\",,,[6,8,10,12]],[,,,,,,,,,[-1]],[,,\"14(?:5(?:1[0458]|[23][458])|71\\\\d)\\\\d{4}\",,,,\"147101234\",,,[9]],\"CX\",61,\"001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011\",\"0\",,,\"0|([59]\\\\d{7})$\",\n\"8$1\",\"0011\",,,,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],CY:[,[,,\"(?:[279]\\\\d|[58]0)\\\\d{6}\",,,,,,,[8]],[,,\"2[2-6]\\\\d{6}\",,,,\"22345678\"],[,,\"9[4-79]\\\\d{6}\",,,,\"96123456\"],[,,\"800\\\\d{5}\",,,,\"80001234\"],[,,\"90[09]\\\\d{5}\",,,,\"90012345\"],[,,\"80[1-9]\\\\d{5}\",,,,\"80112345\"],[,,\"700\\\\d{5}\",,,,\"70012345\"],[,,,,,,,,,[-1]],\"CY\",357,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"[257-9]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"(?:50|77)\\\\d{6}\",,,,\"77123456\"],,,[,,,,,,,,,[-1]]],CZ:[,\n[,,\"(?:[2-578]\\\\d|60)\\\\d{7}|9\\\\d{8,11}\",,,,,,,[9,10,11,12]],[,,\"(?:2\\\\d|3[1257-9]|4[16-9]|5[13-9])\\\\d{7}\",,,,\"212345678\",,,[9]],[,,\"(?:60[1-8]|7(?:0[2-5]|[2379]\\\\d))\\\\d{6}\",,,,\"601123456\",,,[9]],[,,\"800\\\\d{6}\",,,,\"800123456\",,,[9]],[,,\"9(?:0[05689]|76)\\\\d{6}\",,,,\"900123456\",,,[9]],[,,\"8[134]\\\\d{7}\",,,,\"811234567\",,,[9]],[,,\"70[01]\\\\d{6}\",,,,\"700123456\",,,[9]],[,,\"9[17]0\\\\d{6}\",,,,\"910123456\",,,[9]],\"CZ\",420,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2-8]|9[015-7]\"]],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3})(\\\\d{2})\",\n\"$1 $2 $3 $4\",[\"96\"]],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"9\"]],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"9\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"9(?:5\\\\d|7[2-4])\\\\d{6}\",,,,\"972123456\",,,[9]],,,[,,\"9(?:3\\\\d{9}|6\\\\d{7,10})\",,,,\"93123456789\"]],DE:[,[,,\"[2579]\\\\d{5,14}|49(?:[34]0|69|8\\\\d)\\\\d\\\\d?|49(?:37|49|60|7[089]|9\\\\d)\\\\d{1,3}|49(?:1\\\\d|2[02-9]|3[2-689]|7[1-7])\\\\d{1,8}|(?:1|[368]\\\\d|4[0-8])\\\\d{3,13}|49(?:[05]\\\\d|[23]1|[46][1-8])\\\\d{1,9}\",,,,,,,[4,5,6,7,8,9,10,11,12,\n13,14,15],[2,3]],[,,\"32\\\\d{9,11}|49[2-6]\\\\d{10}|49[0-7]\\\\d{3,9}|(?:[34]0|[68]9)\\\\d{3,13}|(?:2(?:0[1-689]|[1-3569]\\\\d|4[0-8]|7[1-7]|8[0-7])|3(?:[3569]\\\\d|4[0-79]|7[1-7]|8[1-8])|4(?:1[02-9]|[2-48]\\\\d|5[0-6]|6[0-8]|7[0-79])|5(?:0[2-8]|[124-6]\\\\d|[38][0-8]|[79][0-7])|6(?:0[02-9]|[1-358]\\\\d|[47][0-8]|6[1-9])|7(?:0[2-8]|1[1-9]|[27][0-7]|3\\\\d|[4-6][0-8]|8[0-5]|9[013-7])|8(?:0[2-9]|1[0-79]|2\\\\d|3[0-46-9]|4[0-6]|5[013-9]|6[1-8]|7[0-8]|8[0-24-6])|9(?:0[6-9]|[1-4]\\\\d|[589][0-7]|6[0-8]|7[0-467]))\\\\d{3,12}\",,\n,,\"30123456\",,,[5,6,7,8,9,10,11,12,13,14,15],[2,3,4]],[,,\"15[0-25-9]\\\\d{8}|1(?:6[023]|7\\\\d)\\\\d{7,8}\",,,,\"15123456789\",,,[10,11]],[,,\"800\\\\d{7,12}\",,,,\"8001234567890\",,,[10,11,12,13,14,15]],[,,\"(?:137[7-9]|900(?:[135]|9\\\\d))\\\\d{6}\",,,,\"9001234567\",,,[10,11]],[,,\"180\\\\d{5,11}|13(?:7[1-6]\\\\d\\\\d|8)\\\\d{4}\",,,,\"18012345\",,,[7,8,9,10,11,12,13,14]],[,,\"700\\\\d{8}\",,,,\"70012345678\",,,[11]],[,,,,,,,,,[-1]],\"DE\",49,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{2})(\\\\d{3,13})\",\"$1 $2\",[\"3[02]|40|[68]9\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3,12})\",\n\"$1 $2\",[\"2(?:0[1-389]|1[124]|2[18]|3[14])|3(?:[35-9][15]|4[015])|906|(?:2[4-9]|4[2-9]|[579][1-9]|[68][1-8])1\",\"2(?:0[1-389]|12[0-8])|3(?:[35-9][15]|4[015])|906|2(?:[13][14]|2[18])|(?:2[4-9]|4[2-9]|[579][1-9]|[68][1-8])1\"],\"0$1\"],[,\"(\\\\d{4})(\\\\d{2,11})\",\"$1 $2\",[\"[24-6]|3(?:[3569][02-46-9]|4[2-4679]|7[2-467]|8[2-46-8])|70[2-8]|8(?:0[2-9]|[1-8])|90[7-9]|[79][1-9]\",\"[24-6]|3(?:3(?:0[1-467]|2[127-9]|3[124578]|7[1257-9]|8[1256]|9[145])|4(?:2[135]|4[13578]|9[1346])|5(?:0[14]|2[1-3589]|6[1-4]|7[13468]|8[13568])|6(?:2[1-489]|3[124-6]|6[13]|7[12579]|8[1-356]|9[135])|7(?:2[1-7]|4[145]|6[1-5]|7[1-4])|8(?:21|3[1468]|6|7[1467]|8[136])|9(?:0[12479]|2[1358]|4[134679]|6[1-9]|7[136]|8[147]|9[1468]))|70[2-8]|8(?:0[2-9]|[1-8])|90[7-9]|[79][1-9]|3[68]4[1347]|3(?:47|60)[1356]|3(?:3[46]|46|5[49])[1246]|3[4579]3[1357]\"],\n\"0$1\"],[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"138\"],\"0$1\"],[,\"(\\\\d{5})(\\\\d{2,10})\",\"$1 $2\",[\"3\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{5,11})\",\"$1 $2\",[\"181\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d)(\\\\d{4,10})\",\"$1 $2 $3\",[\"1(?:3|80)|9\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{7,8})\",\"$1 $2\",[\"1[67]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{7,12})\",\"$1 $2\",[\"8\"],\"0$1\"],[,\"(\\\\d{5})(\\\\d{6})\",\"$1 $2\",[\"185\",\"1850\",\"18500\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"0$1\"],[,\"(\\\\d{4})(\\\\d{7})\",\"$1 $2\",[\"18[68]\"],\"0$1\"],[,\"(\\\\d{5})(\\\\d{6})\",\"$1 $2\",[\"15[0568]\"],\"0$1\"],\n[,\"(\\\\d{4})(\\\\d{7})\",\"$1 $2\",[\"15[1279]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{8})\",\"$1 $2\",[\"18\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{7,8})\",\"$1 $2 $3\",[\"1(?:6[023]|7)\"],\"0$1\"],[,\"(\\\\d{4})(\\\\d{2})(\\\\d{7})\",\"$1 $2 $3\",[\"15[279]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{8})\",\"$1 $2 $3\",[\"15\"],\"0$1\"]],,[,,\"16(?:4\\\\d{1,10}|[89]\\\\d{1,11})\",,,,\"16412345\",,,[4,5,6,7,8,9,10,11,12,13,14]],,,[,,,,,,,,,[-1]],[,,\"18(?:1\\\\d{5,11}|[2-9]\\\\d{8})\",,,,\"18500123456\",,,[8,9,10,11,12,13,14]],,,[,,\"1(?:6(?:013|255|399)|7(?:(?:[015]1|[69]3)3|[2-4]55|[78]99))\\\\d{7,8}|15(?:(?:[03-68]00|113)\\\\d|2\\\\d55|7\\\\d99|9\\\\d33)\\\\d{7}\",\n,,,\"177991234567\",,,[12,13]]],DJ:[,[,,\"(?:2\\\\d|77)\\\\d{6}\",,,,,,,[8]],[,,\"2(?:1[2-5]|7[45])\\\\d{5}\",,,,\"21360003\"],[,,\"77\\\\d{6}\",,,,\"77831001\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"DJ\",253,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[27]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],DK:[,[,,\"[2-9]\\\\d{7}\",,,,,,,[8]],[,,\"(?:[2-7]\\\\d|8[126-9]|9[1-46-9])\\\\d{6}\",,,,\"32123456\"],[,,\"(?:[2-7]\\\\d|8[126-9]|9[1-46-9])\\\\d{6}\",\n,,,\"32123456\"],[,,\"80\\\\d{6}\",,,,\"80123456\"],[,,\"90\\\\d{6}\",,,,\"90123456\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"DK\",45,\"00\",,,,,,,1,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2-9]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],DM:[,[,,\"(?:[58]\\\\d\\\\d|767|900)\\\\d{7}\",,,,,,,[10],[7]],[,,\"767(?:2(?:55|66)|4(?:2[01]|4[0-25-9])|50[0-4])\\\\d{4}\",,,,\"7674201234\",,,,[7]],[,,\"767(?:2(?:[2-4689]5|7[5-7])|31[5-7]|61[1-8]|70[1-6])\\\\d{4}\",,,,\"7672251234\",,,,[7]],\n[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",,,,\"8002123456\"],[,,\"900[2-9]\\\\d{6}\",,,,\"9002123456\"],[,,,,,,,,,[-1]],[,,\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\\\d{6}\",,,,\"5002345678\"],[,,,,,,,,,[-1]],\"DM\",1,\"011\",\"1\",,,\"1|([2-7]\\\\d{6})$\",\"767$1\",,,,,[,,,,,,,,,[-1]],,\"767\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],\nDO:[,[,,\"(?:[58]\\\\d\\\\d|900)\\\\d{7}\",,,,,,,[10],[7]],[,,\"8(?:[04]9[2-9]\\\\d\\\\d|29(?:2(?:[0-59]\\\\d|6[04-9]|7[0-27]|8[0237-9])|3(?:[0-35-9]\\\\d|4[7-9])|[45]\\\\d\\\\d|6(?:[0-27-9]\\\\d|[3-5][1-9]|6[0135-8])|7(?:0[013-9]|[1-37]\\\\d|4[1-35689]|5[1-4689]|6[1-57-9]|8[1-79]|9[1-8])|8(?:0[146-9]|1[0-48]|[248]\\\\d|3[1-79]|5[01589]|6[013-68]|7[124-8]|9[0-8])|9(?:[0-24]\\\\d|3[02-46-9]|5[0-79]|60|7[0169]|8[57-9]|9[02-9])))\\\\d{4}\",,,,\"8092345678\",,,,[7]],[,,\"8[024]9[2-9]\\\\d{6}\",,,,\"8092345678\",,,,[7]],[,,\"8(?:00(?:14|[2-9]\\\\d)|(?:33|44|55|66|77|88)[2-9]\\\\d)\\\\d{5}\",\n,,,\"8002123456\"],[,,\"900[2-9]\\\\d{6}\",,,,\"9002123456\"],[,,,,,,,,,[-1]],[,,\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\\\d{6}\",,,,\"5002345678\"],[,,,,,,,,,[-1]],\"DO\",1,\"011\",\"1\",,,\"1\",,,,,,[,,,,,,,,,[-1]],,\"8001|8[024]9\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],DZ:[,[,,\"(?:[1-4]|[5-79]\\\\d|80)\\\\d{7}\",,,,,,,[8,9]],\n[,,\"9619\\\\d{5}|(?:1\\\\d|2[013-79]|3[0-8]|4[013-689])\\\\d{6}\",,,,\"12345678\"],[,,\"(?:5(?:4[0-29]|5\\\\d|6[0-2])|6(?:[569]\\\\d|7[0-6])|7[7-9]\\\\d)\\\\d{6}\",,,,\"551234567\",,,[9]],[,,\"800\\\\d{6}\",,,,\"800123456\",,,[9]],[,,\"80[3-689]1\\\\d{5}\",,,,\"808123456\",,,[9]],[,,\"80[12]1\\\\d{5}\",,,,\"801123456\",,,[9]],[,,,,,,,,,[-1]],[,,\"98[23]\\\\d{6}\",,,,\"983123456\",,,[9]],\"DZ\",213,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[1-4]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"9\"],\"0$1\"],\n[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[5-8]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],EC:[,[,,\"1\\\\d{9,10}|(?:[2-7]|9\\\\d)\\\\d{7}\",,,,,,,[8,9,10,11],[7]],[,,\"[2-7][2-7]\\\\d{6}\",,,,\"22123456\",,,[8],[7]],[,,\"964[0-2]\\\\d{5}|9(?:39|[57][89]|6[0-36-9]|[89]\\\\d)\\\\d{6}\",,,,\"991234567\",,,[9]],[,,\"1800\\\\d{7}|1[78]00\\\\d{6}\",,,,\"18001234567\",,,[10,11]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"[2-7]890\\\\d{4}\",,,,\"28901234\",,,[8]],\"EC\",593,\"00\",\"0\",,,\n\"0\",,,,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[2-7]\"]],[,\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2-$3\",[\"[2-7]\"],\"(0$1)\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"9\"],\"0$1\"],[,\"(\\\\d{4})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"1\"]]],[[,\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"[2-7]\"]],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"9\"],\"0$1\"],[,\"(\\\\d{4})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"1\"]]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],EE:[,[,,\"8\\\\d{9}|[4578]\\\\d{7}|(?:[3-8]\\\\d|90)\\\\d{5}\",,,,,,,[7,8,10]],[,,\"(?:3[23589]|4[3-8]|6\\\\d|7[1-9]|88)\\\\d{5}\",\n,,,\"3212345\",,,[7]],[,,\"(?:5\\\\d{5}|8(?:1(?:0(?:000|[3-9]\\\\d\\\\d)|(?:1(?:0[236]|1\\\\d)|(?:23|[3-79]\\\\d)\\\\d)\\\\d)|2(?:0(?:000|(?:19|[2-7]\\\\d)\\\\d)|(?:(?:[124-6]\\\\d|3[5-9])\\\\d|7(?:[3679]\\\\d|8[13-9])|8(?:[2-6]\\\\d|7[01]))\\\\d)|[349]\\\\d{4}))\\\\d\\\\d|5(?:(?:[02]\\\\d|5[0-478])\\\\d|1(?:[0-8]\\\\d|95)|6(?:4[0-4]|5[1-589]))\\\\d{3}\",,,,\"51234567\",,,[7,8]],[,,\"800(?:(?:0\\\\d\\\\d|1)\\\\d|[2-9])\\\\d{3}\",,,,\"80012345\"],[,,\"(?:40\\\\d\\\\d|900)\\\\d{4}\",,,,\"9001234\",,,[7,8]],[,,,,,,,,,[-1]],[,,\"70[0-2]\\\\d{5}\",,,,\"70012345\",,,[8]],[,,,,\n,,,,,[-1]],\"EE\",372,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[369]|4[3-8]|5(?:[0-2]|5[0-478]|6[45])|7[1-9]|88\",\"[369]|4[3-8]|5(?:[02]|1(?:[0-8]|95)|5[0-478]|6(?:4[0-4]|5[1-589]))|7[1-9]|88\"]],[,\"(\\\\d{4})(\\\\d{3,4})\",\"$1 $2\",[\"[45]|8(?:00|[1-49])\",\"[45]|8(?:00[1-9]|[1-49])\"]],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"]],[,\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"]]],,[,,,,,,,,,[-1]],,,[,,\"800[2-9]\\\\d{3}\",,,,,,,[7]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],EG:[,[,,\"[189]\\\\d{8,9}|[24-6]\\\\d{8}|[135]\\\\d{7}\",\n,,,,,,[8,9,10],[6,7]],[,,\"13[23]\\\\d{6}|(?:15|57)\\\\d{6,7}|(?:2[2-4]|3|4[05-8]|5[05]|6[24-689]|8[2468]|9[235-7])\\\\d{7}\",,,,\"234567890\",,,[8,9],[6,7]],[,,\"1[0-25]\\\\d{8}\",,,,\"1001234567\",,,[10]],[,,\"800\\\\d{7}\",,,,\"8001234567\",,,[10]],[,,\"900\\\\d{7}\",,,,\"9001234567\",,,[10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"EG\",20,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d)(\\\\d{7,8})\",\"$1 $2\",[\"[23]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{6,7})\",\"$1 $2\",[\"1[35]|[4-6]|8[2468]|9[235-7]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[189]\"],\n\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],EH:[,[,,\"[5-8]\\\\d{8}\",,,,,,,[9]],[,,\"528[89]\\\\d{5}\",,,,\"528812345\"],[,,\"(?:6(?:[0-79]\\\\d|8[0-247-9])|7(?:[017]\\\\d|6[0-367]))\\\\d{6}\",,,,\"650123456\"],[,,\"80\\\\d{7}\",,,,\"801234567\"],[,,\"89\\\\d{7}\",,,,\"891234567\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"592(?:4[0-2]|93)\\\\d{4}\",,,,\"592401234\"],\"EH\",212,\"00\",\"0\",,,\"0\",,,,,,[,,,,,,,,,[-1]],,\"528[89]\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],ER:[,[,,\"[178]\\\\d{6}\",,,,,,,[7],\n[6]],[,,\"(?:1(?:1[12568]|[24]0|55|6[146])|8\\\\d\\\\d)\\\\d{4}\",,,,\"8370362\",,,,[6]],[,,\"(?:17[1-3]|7\\\\d\\\\d)\\\\d{4}\",,,,\"7123456\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"ER\",291,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[178]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],ES:[,[,,\"[5-9]\\\\d{8}\",,,,,,,[9]],[,,\"96906(?:0[0-8]|1[1-9]|[2-9]\\\\d)\\\\d\\\\d|9(?:69(?:0[0-57-9]|[1-9]\\\\d)|73(?:[0-8]\\\\d|9[1-9]))\\\\d{4}|(?:8(?:[1356]\\\\d|[28][0-8]|[47][1-9])|9(?:[135]\\\\d|[268][0-8]|4[1-9]|7[124-9]))\\\\d{6}\",\n,,,\"810123456\"],[,,\"(?:590[16]00\\\\d|9(?:6906(?:09|10)|7390\\\\d\\\\d))\\\\d\\\\d|(?:6\\\\d|7[1-48])\\\\d{7}\",,,,\"612345678\"],[,,\"[89]00\\\\d{6}\",,,,\"800123456\"],[,,\"80[367]\\\\d{6}\",,,,\"803123456\"],[,,\"90[12]\\\\d{6}\",,,,\"901123456\"],[,,\"70\\\\d{7}\",,,,\"701234567\"],[,,,,,,,,,[-1]],\"ES\",34,\"00\",,,,,,,,[[,\"(\\\\d{4})\",\"$1\",[\"905\"]],[,\"(\\\\d{6})\",\"$1\",[\"[79]9\"]],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[89]00\"]],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[5-9]\"]]],[[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[89]00\"]],\n[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[5-9]\"]]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"51\\\\d{7}\",,,,\"511234567\"],,,[,,,,,,,,,[-1]]],ET:[,[,,\"(?:11|[2-59]\\\\d)\\\\d{7}\",,,,,,,[9],[7]],[,,\"11667[01]\\\\d{3}|(?:11(?:1(?:1[124]|2[2-7]|3[1-5]|5[5-8]|8[6-8])|2(?:13|3[6-8]|5[89]|7[05-9]|8[2-6])|3(?:2[01]|3[0-289]|4[1289]|7[1-4]|87)|4(?:1[69]|3[2-49]|4[0-3]|6[5-8])|5(?:1[578]|44|5[0-4])|6(?:1[78]|2[69]|39|4[5-7]|5[1-5]|6[0-59]|8[015-8]))|2(?:2(?:11[1-9]|22[0-7]|33\\\\d|44[1467]|66[1-68])|5(?:11[124-6]|33[2-8]|44[1467]|55[14]|66[1-3679]|77[124-79]|880))|3(?:3(?:11[0-46-8]|(?:22|55)[0-6]|33[0134689]|44[04]|66[01467])|4(?:44[0-8]|55[0-69]|66[0-3]|77[1-5]))|4(?:6(?:119|22[0-24-7]|33[1-5]|44[13-69]|55[14-689]|660|88[1-4])|7(?:(?:11|22)[1-9]|33[13-7]|44[13-6]|55[1-689]))|5(?:7(?:227|55[05]|(?:66|77)[14-8])|8(?:11[149]|22[013-79]|33[0-68]|44[013-8]|550|66[1-5]|77\\\\d)))\\\\d{4}\",\n,,,\"111112345\",,,,[7]],[,,\"9\\\\d{8}\",,,,\"911234567\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"ET\",251,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[1-59]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],FI:[,[,,\"[1-35689]\\\\d{4}|7\\\\d{10,11}|(?:[124-7]\\\\d|3[0-46-9])\\\\d{8}|[1-9]\\\\d{5,8}\",,,,,,,[5,6,7,8,9,10,11,12]],[,,\"(?:1[3-79][1-8]|[235689][1-8]\\\\d)\\\\d{2,6}\",,,,\"131234567\",,,[5,6,7,8,9]],[,,\"4946\\\\d{2,6}|(?:4[0-8]|50)\\\\d{4,8}\",\n,,,\"412345678\",,,[6,7,8,9,10]],[,,\"800\\\\d{4,6}\",,,,\"800123456\",,,[7,8,9]],[,,\"[67]00\\\\d{5,6}\",,,,\"600123456\",,,[8,9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"FI\",358,\"00|99(?:[01469]|5(?:[14]1|3[23]|5[59]|77|88|9[09]))\",\"0\",,,\"0\",,\"00\",,[[,\"(\\\\d{5})\",\"$1\",[\"75[12]\"],\"0$1\"],[,\"(\\\\d)(\\\\d{4,9})\",\"$1 $2\",[\"[2568][1-8]|3(?:0[1-9]|[1-9])|9\"],\"0$1\"],[,\"(\\\\d{6})\",\"$1\",[\"11\"]],[,\"(\\\\d{3})(\\\\d{3,7})\",\"$1 $2\",[\"[12]00|[368]|70[07-9]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{4,8})\",\"$1 $2\",[\"[1245]|7[135]\"],\"0$1\"],[,\n\"(\\\\d{2})(\\\\d{6,10})\",\"$1 $2\",[\"7\"],\"0$1\"]],[[,\"(\\\\d)(\\\\d{4,9})\",\"$1 $2\",[\"[2568][1-8]|3(?:0[1-9]|[1-9])|9\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3,7})\",\"$1 $2\",[\"[12]00|[368]|70[07-9]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{4,8})\",\"$1 $2\",[\"[1245]|7[135]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{6,10})\",\"$1 $2\",[\"7\"],\"0$1\"]],[,,,,,,,,,[-1]],1,\"1[03-79]|[2-9]\",[,,\"20(?:2[023]|9[89])\\\\d{1,6}|(?:60[12]\\\\d|7099)\\\\d{4,5}|(?:606|7(?:0[78]|1|3\\\\d))\\\\d{7}|(?:[1-3]00|7(?:0[1-5]\\\\d\\\\d|5[03-9]))\\\\d{3,7}\"],[,,\"20\\\\d{4,8}|60[12]\\\\d{5,6}|7(?:099\\\\d{4,5}|5[03-9]\\\\d{3,7})|20[2-59]\\\\d\\\\d|(?:606|7(?:0[78]|1|3\\\\d))\\\\d{7}|(?:10|29|3[09]|70[1-5]\\\\d)\\\\d{4,8}\",\n,,,\"10112345\"],,,[,,,,,,,,,[-1]]],FJ:[,[,,\"45\\\\d{5}|(?:0800\\\\d|[235-9])\\\\d{6}\",,,,,,,[7,11]],[,,\"603\\\\d{4}|(?:3[0-5]|6[25-7]|8[58])\\\\d{5}\",,,,\"3212345\",,,[7]],[,,\"(?:[279]\\\\d|45|5[01568]|8[034679])\\\\d{5}\",,,,\"7012345\",,,[7]],[,,\"0800\\\\d{7}\",,,,\"08001234567\",,,[11]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"FJ\",679,\"0(?:0|52)\",,,,,,\"00\",,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[235-9]|45\"]],[,\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"0\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,\n[-1]],,,[,,,,,,,,,[-1]]],FK:[,[,,\"[2-7]\\\\d{4}\",,,,,,,[5]],[,,\"[2-47]\\\\d{4}\",,,,\"31234\"],[,,\"[56]\\\\d{4}\",,,,\"51234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"FK\",500,\"00\",,,,,,,,,,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],FM:[,[,,\"(?:[39]\\\\d\\\\d|820)\\\\d{4}\",,,,,,,[7]],[,,\"31(?:00[67]|208|309)\\\\d\\\\d|(?:3(?:[2357]0[1-9]|602|804|905)|(?:820|9[2-6]\\\\d)\\\\d)\\\\d{3}\",,,,\"3201234\"],[,,\"31(?:00[67]|208|309)\\\\d\\\\d|(?:3(?:[2357]0[1-9]|602|804|905)|(?:820|9[2-7]\\\\d)\\\\d)\\\\d{3}\",\n,,,\"3501234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"FM\",691,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[389]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],FO:[,[,,\"[2-9]\\\\d{5}\",,,,,,,[6]],[,,\"(?:20|[34]\\\\d|8[19])\\\\d{4}\",,,,\"201234\"],[,,\"(?:[27][1-9]|5\\\\d|91)\\\\d{4}\",,,,\"211234\"],[,,\"80[257-9]\\\\d{3}\",,,,\"802123\"],[,,\"90(?:[13-5][15-7]|2[125-7]|9\\\\d)\\\\d\\\\d\",,,,\"901123\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"(?:6[0-36]|88)\\\\d{4}\",,\n,,\"601234\"],\"FO\",298,\"00\",,,,\"(10(?:01|[12]0|88))\",,,,[[,\"(\\\\d{6})\",\"$1\",[\"[2-9]\"],,\"$CC $1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],FR:[,[,,\"[1-9]\\\\d{8}\",,,,,,,[9]],[,,\"(?:[1-35]\\\\d|4[1-9])\\\\d{7}\",,,,\"123456789\"],[,,\"(?:6(?:[0-24-8]\\\\d|3[0-8]|9[589])|7(?:00|[3-9]\\\\d))\\\\d{6}\",,,,\"612345678\"],[,,\"80[0-5]\\\\d{6}\",,,,\"801234567\"],[,,\"836(?:0[0-36-9]|[1-9]\\\\d)\\\\d{4}|8(?:1[2-9]|2[2-47-9]|3[0-57-9]|[569]\\\\d|8[0-35-9])\\\\d{6}\",,,,\"891123456\"],[,,\"8(?:1[01]|2[0156]|4[02]|84)\\\\d{6}\",\n,,,\"884012345\"],[,,,,,,,,,[-1]],[,,\"9\\\\d{8}\",,,,\"912345678\"],\"FR\",33,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{4})\",\"$1\",[\"10\"]],[,\"(\\\\d{3})(\\\\d{3})\",\"$1 $2\",[\"1\"]],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"],\"0 $1\"],[,\"(\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4 $5\",[\"[1-79]\"],\"0$1\"]],[[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"],\"0 $1\"],[,\"(\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4 $5\",[\"[1-79]\"],\"0$1\"]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"80[6-9]\\\\d{6}\",,,,\"806123456\"],\n,,[,,,,,,,,,[-1]]],GA:[,[,,\"(?:[067]\\\\d|11)\\\\d{6}|[2-7]\\\\d{6}\",,,,,,,[7,8]],[,,\"[01]1\\\\d{6}\",,,,\"01441234\",,,[8]],[,,\"(?:(?:0[2-7]|7[467])\\\\d|6(?:0[0-4]|10|[256]\\\\d))\\\\d{5}|[2-7]\\\\d{6}\",,,,\"06031234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"GA\",241,\"00\",,,,\"0(11\\\\d{6}|60\\\\d{6}|61\\\\d{6}|6[256]\\\\d{6}|7[467]\\\\d{6})\",\"$1\",,,[[,\"(\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2-7]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"0\"]],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\n\"$1 $2 $3 $4\",[\"11|[67]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],GB:[,[,,\"[1-357-9]\\\\d{9}|[18]\\\\d{8}|8\\\\d{6}\",,,,,,,[7,9,10],[4,5,6,8]],[,,\"(?:1(?:1(?:3(?:[0-58]\\\\d\\\\d|73[0235])|4(?:[0-5]\\\\d\\\\d|69[7-9]|70[0359])|(?:5[0-26-9]|[78][0-49])\\\\d\\\\d|6(?:[0-4]\\\\d\\\\d|50[0-24-69]))|2(?:(?:0[024-9]|2[3-9]|3[3-79]|4[1-689]|[58][02-9]|6[0-47-9]|7[013-9]|9\\\\d)\\\\d\\\\d|1(?:[0-7]\\\\d\\\\d|8(?:[02]\\\\d|1[0-27-9])))|(?:3(?:0\\\\d|1[0-8]|[25][02-9]|3[02-579]|[468][0-46-9]|7[1-35-79]|9[2-578])|4(?:0[03-9]|[137]\\\\d|[28][02-57-9]|4[02-69]|5[0-8]|[69][0-79])|5(?:0[1-35-9]|[16]\\\\d|2[024-9]|3[015689]|4[02-9]|5[03-9]|7[0-35-9]|8[0-468]|9[0-57-9])|6(?:0[034689]|1\\\\d|2[0-35689]|[38][013-9]|4[1-467]|5[0-69]|6[13-9]|7[0-8]|9[0-24578])|7(?:0[0246-9]|2\\\\d|3[0236-8]|4[03-9]|5[0-46-9]|6[013-9]|7[0-35-9]|8[024-9]|9[02-9])|8(?:0[35-9]|2[1-57-9]|3[02-578]|4[0-578]|5[124-9]|6[2-69]|7\\\\d|8[02-9]|9[02569])|9(?:0[02-589]|[18]\\\\d|2[02-689]|3[1-57-9]|4[2-9]|5[0-579]|6[2-47-9]|7[0-24578]|9[2-57]))\\\\d\\\\d)|2(?:0[013478]|3[0189]|4[017]|8[0-46-9]|9[0-2])\\\\d{3})\\\\d{4}|1(?:2(?:0(?:46[1-4]|87[2-9])|545[1-79]|76(?:2\\\\d|3[1-8]|6[1-6])|9(?:7(?:2[0-4]|3[2-5])|8(?:2[2-8]|7[0-47-9]|8[3-5])))|3(?:6(?:38[2-5]|47[23])|8(?:47[04-9]|64[0157-9]))|4(?:044[1-7]|20(?:2[23]|8\\\\d)|6(?:0(?:30|5[2-57]|6[1-8]|7[2-8])|140)|8(?:052|87[1-3]))|5(?:2(?:4(?:3[2-79]|6\\\\d)|76\\\\d)|6(?:26[06-9]|686))|6(?:06(?:4\\\\d|7[4-79])|295[5-7]|35[34]\\\\d|47(?:24|61)|59(?:5[08]|6[67]|74)|9(?:55[0-4]|77[23]))|7(?:26(?:6[13-9]|7[0-7])|(?:442|688)\\\\d|50(?:2[0-3]|[3-68]2|76))|8(?:27[56]\\\\d|37(?:5[2-5]|8[239])|843[2-58])|9(?:0(?:0(?:6[1-8]|85)|52\\\\d)|3583|4(?:66[1-8]|9(?:2[01]|81))|63(?:23|3[1-4])|9561))\\\\d{3}\",\n,,,\"1212345678\",,,[9,10],[4,5,6,7,8]],[,,\"7(?:457[0-57-9]|700[01]|911[028])\\\\d{5}|7(?:[1-3]\\\\d\\\\d|4(?:[0-46-9]\\\\d|5[0-689])|5(?:0[0-8]|[13-9]\\\\d|2[0-35-9])|7(?:0[1-9]|[1-7]\\\\d|8[02-9]|9[0-689])|8(?:[014-9]\\\\d|[23][0-8])|9(?:[024-9]\\\\d|1[02-9]|3[0-689]))\\\\d{6}\",,,,\"7400123456\",,,[10]],[,,\"80[08]\\\\d{7}|800\\\\d{6}|8001111\",,,,\"8001234567\"],[,,\"(?:8(?:4[2-5]|7[0-3])|9(?:[01]\\\\d|8[2-49]))\\\\d{7}|845464\\\\d\",,,,\"9012345678\",,,[7,10]],[,,,,,,,,,[-1]],[,,\"70\\\\d{8}\",,,,\"7012345678\",,,[10]],[,,\"56\\\\d{8}\",,,,\"5612345678\",\n,,[10]],\"GB\",44,\"00\",\"0\",\" x\",,\"0\",,,,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"800\",\"8001\",\"80011\",\"800111\",\"8001111\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"845\",\"8454\",\"84546\",\"845464\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"800\"],\"0$1\"],[,\"(\\\\d{5})(\\\\d{4,5})\",\"$1 $2\",[\"1(?:38|5[23]|69|76|94)\",\"1(?:(?:38|69)7|5(?:24|39)|768|946)\",\"1(?:3873|5(?:242|39[4-6])|(?:697|768)[347]|9467)\"],\"0$1\"],[,\"(\\\\d{4})(\\\\d{5,6})\",\"$1 $2\",[\"1(?:[2-69][02-9]|[78])\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[25]|7(?:0|6[02-9])\",\n\"[25]|7(?:0|6(?:[03-9]|2[356]))\"],\"0$1\"],[,\"(\\\\d{4})(\\\\d{6})\",\"$1 $2\",[\"7\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[1389]\"],\"0$1\"]],,[,,\"76(?:464|652)\\\\d{5}|76(?:0[0-2]|2[356]|34|4[01347]|5[49]|6[0-369]|77|8[14]|9[139])\\\\d{6}\",,,,\"7640123456\",,,[10]],1,,[,,,,,,,,,[-1]],[,,\"(?:3[0347]|55)\\\\d{8}\",,,,\"5512345678\",,,[10]],,,[,,,,,,,,,[-1]]],GD:[,[,,\"(?:473|[58]\\\\d\\\\d|900)\\\\d{7}\",,,,,,,[10],[7]],[,,\"473(?:2(?:3[0-2]|69)|3(?:2[89]|86)|4(?:[06]8|3[5-9]|4[0-49]|5[5-79]|73|90)|63[68]|7(?:58|84)|800|938)\\\\d{4}\",\n,,,\"4732691234\",,,,[7]],[,,\"473(?:4(?:0[2-79]|1[04-9]|2[0-5]|58)|5(?:2[01]|3[3-8])|901)\\\\d{4}\",,,,\"4734031234\",,,,[7]],[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",,,,\"8002123456\"],[,,\"900[2-9]\\\\d{6}\",,,,\"9002123456\"],[,,,,,,,,,[-1]],[,,\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\\\d{6}\",,,,\"5002345678\"],[,,,,,,,,,[-1]],\n\"GD\",1,\"011\",\"1\",,,\"1|([2-9]\\\\d{6})$\",\"473$1\",,,,,[,,,,,,,,,[-1]],,\"473\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],GE:[,[,,\"(?:[3-57]\\\\d\\\\d|800)\\\\d{6}\",,,,,,,[9],[6,7]],[,,\"(?:3(?:[256]\\\\d|4[124-9]|7[0-4])|4(?:1\\\\d|2[2-7]|3[1-79]|4[2-8]|7[239]|9[1-7]))\\\\d{6}\",,,,\"322123456\",,,,[6,7]],[,,\"5(?:(?:0555|1177)[5-9]|757(?:7[7-9]|8[01]))\\\\d{3}|5(?:00(?:0\\\\d|50)|11(?:00|1\\\\d|2[0-4]|3[01])|5200|75(?:00|[57]5)|8(?:0(?:[01]\\\\d|2[0-4])|58[89]|8(?:55|88)))\\\\d{4}|5(?:0070|11(?:33|51)|[25]222|3333)[0-4]\\\\d{3}|(?:5(?:[14]4|5[0157-9]|68|7[0147-9]|9[1-35-9])|790)\\\\d{6}\",\n,,,\"555123456\"],[,,\"800\\\\d{6}\",,,,\"800123456\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"70[67]\\\\d{6}\",,,,\"706123456\"],\"GE\",995,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"70\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"32\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[57]\"]],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[348]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,\"70[67]\\\\d{6}\"],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],GF:[,[,,\"(?:[56]94|80\\\\d|976)\\\\d{6}\",\n,,,,,,[9]],[,,\"594(?:[023]\\\\d|1[01]|4[03-9]|5[6-9]|6[0-3]|80|9[0-8])\\\\d{4}\",,,,\"594101234\"],[,,\"694(?:[0-249]\\\\d|3[0-48])\\\\d{4}\",,,,\"694201234\"],[,,\"80[0-5]\\\\d{6}\",,,,\"800012345\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"976\\\\d{6}\",,,,\"976012345\"],\"GF\",594,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[569]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],GG:[,[,,\"(?:1481|[357-9]\\\\d{3})\\\\d{6}|8\\\\d{6}(?:\\\\d{2})?\",\n,,,,,,[7,9,10],[6]],[,,\"1481[25-9]\\\\d{5}\",,,,\"1481256789\",,,[10],[6]],[,,\"7(?:(?:781|839)\\\\d|911[17])\\\\d{5}\",,,,\"7781123456\",,,[10]],[,,\"80[08]\\\\d{7}|800\\\\d{6}|8001111\",,,,\"8001234567\"],[,,\"(?:8(?:4[2-5]|7[0-3])|9(?:[01]\\\\d|8[0-3]))\\\\d{7}|845464\\\\d\",,,,\"9012345678\",,,[7,10]],[,,,,,,,,,[-1]],[,,\"70\\\\d{8}\",,,,\"7012345678\",,,[10]],[,,\"56\\\\d{8}\",,,,\"5612345678\",,,[10]],\"GG\",44,\"00\",\"0\",,,\"0|([25-9]\\\\d{5})$\",\"1481$1\",,,,,[,,\"76(?:464|652)\\\\d{5}|76(?:0[0-2]|2[356]|34|4[01347]|5[49]|6[0-369]|77|8[14]|9[139])\\\\d{6}\",\n,,,\"7640123456\",,,[10]],,,[,,,,,,,,,[-1]],[,,\"(?:3[0347]|55)\\\\d{8}\",,,,\"5512345678\",,,[10]],,,[,,,,,,,,,[-1]]],GH:[,[,,\"(?:[235]\\\\d{3}|800)\\\\d{5}\",,,,,,,[8,9],[7]],[,,\"3082[0-5]\\\\d{4}|3(?:0(?:[237]\\\\d|8[01])|[167](?:2[0-6]|7\\\\d|80)|2(?:2[0-5]|7\\\\d|80)|3(?:2[0-3]|7\\\\d|80)|4(?:2[013-9]|3[01]|7\\\\d|80)|5(?:2[0-7]|7\\\\d|80)|8(?:2[0-2]|7\\\\d|80)|9(?:[28]0|7\\\\d))\\\\d{5}\",,,,\"302345678\",,,[9],[7]],[,,\"(?:2(?:[0346-8]\\\\d|5[67])|5(?:[0457]\\\\d|6[01]|9[1-9]))\\\\d{6}\",,,,\"231234567\",,,[9]],[,,\"800\\\\d{5}\",,,,\"80012345\",\n,,[8]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"GH\",233,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[237]|8[0-2]\"]],[,\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"8\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[235]\"],\"0$1\"]],[[,\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"8\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[235]\"],\"0$1\"]],[,,,,,,,,,[-1]],,,[,,\"800\\\\d{5}\",,,,,,,[8]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],GI:[,[,,\"(?:[25]\\\\d\\\\d|606)\\\\d{5}\",,,,,,,[8]],[,,\"21(?:6[24-7]\\\\d|90[0-2])\\\\d{3}|2(?:00|2[25])\\\\d{5}\",\n,,,\"20012345\"],[,,\"(?:5[146-8]\\\\d|606)\\\\d{5}\",,,,\"57123456\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"GI\",350,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"2\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],GL:[,[,,\"(?:19|[2-689]\\\\d|70)\\\\d{4}\",,,,,,,[6]],[,,\"(?:19|3[1-7]|6[14689]|70|8[14-79]|9\\\\d)\\\\d{4}\",,,,\"321000\"],[,,\"[245]\\\\d{5}\",,,,\"221234\"],[,,\"80\\\\d{4}\",,,,\"801234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"3[89]\\\\d{4}\",\n,,,\"381234\"],\"GL\",299,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"19|[2-9]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],GM:[,[,,\"[2-9]\\\\d{6}\",,,,,,,[7]],[,,\"(?:4(?:[23]\\\\d\\\\d|4(?:1[024679]|[6-9]\\\\d))|5(?:5(?:3\\\\d|4[0-7])|6[67]\\\\d|7(?:1[04]|2[035]|3[58]|48))|8\\\\d{3})\\\\d{3}\",,,,\"5661234\"],[,,\"(?:[23679]\\\\d|5[0-389])\\\\d{5}\",,,,\"3012345\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"GM\",220,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",\n[\"[2-9]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],GN:[,[,,\"722\\\\d{6}|(?:3|6\\\\d)\\\\d{7}\",,,,,,,[8,9]],[,,\"3(?:0(?:24|3[12]|4[1-35-7]|5[13]|6[189]|[78]1|9[1478])|1\\\\d\\\\d)\\\\d{4}\",,,,\"30241234\",,,[8]],[,,\"6[0-356]\\\\d{7}\",,,,\"601123456\",,,[9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"722\\\\d{6}\",,,,\"722123456\",,,[9]],\"GN\",224,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"3\"]],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",\n[\"[67]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],GP:[,[,,\"(?:590|(?:69|80)\\\\d|976)\\\\d{6}\",,,,,,,[9]],[,,\"590(?:0[1-68]|[14][0-24-9]|2[0-68]|3[1289]|5[3-579]|6[0189]|7[08]|8[0-689]|9\\\\d)\\\\d{4}\",,,,\"590201234\"],[,,\"69(?:0\\\\d\\\\d|1(?:2[2-9]|3[0-5]))\\\\d{4}\",,,,\"690001234\"],[,,\"80[0-5]\\\\d{6}\",,,,\"800012345\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"976[01]\\\\d{5}\",,,,\"976012345\"],\"GP\",590,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[569]\"],\n\"0$1\"],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"],\"0$1\"]],,[,,,,,,,,,[-1]],1,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],GQ:[,[,,\"222\\\\d{6}|(?:3\\\\d|55|[89]0)\\\\d{7}\",,,,,,,[9]],[,,\"33[0-24-9]\\\\d[46]\\\\d{4}|3(?:33|5\\\\d)\\\\d[7-9]\\\\d{4}\",,,,\"333091234\"],[,,\"(?:222|55\\\\d)\\\\d{6}\",,,,\"222123456\"],[,,\"80\\\\d[1-9]\\\\d{5}\",,,,\"800123456\"],[,,\"90\\\\d[1-9]\\\\d{5}\",,,,\"900123456\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"GQ\",240,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[235]\"]],\n[,\"(\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"[89]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],GR:[,[,,\"5005000\\\\d{3}|8\\\\d{9,11}|(?:[269]\\\\d|70)\\\\d{8}\",,,,,,,[10,11,12]],[,,\"2(?:1\\\\d\\\\d|2(?:2[1-46-9]|[36][1-8]|4[1-7]|5[1-4]|7[1-5]|[89][1-9])|3(?:1\\\\d|2[1-57]|[35][1-3]|4[13]|7[1-7]|8[124-6]|9[1-79])|4(?:1\\\\d|2[1-8]|3[1-4]|4[13-5]|6[1-578]|9[1-5])|5(?:1\\\\d|[29][1-4]|3[1-5]|4[124]|5[1-6])|6(?:1\\\\d|[269][1-6]|3[1245]|4[1-7]|5[13-9]|7[14]|8[1-5])|7(?:1\\\\d|2[1-5]|3[1-6]|4[1-7]|5[1-57]|6[135]|9[125-7])|8(?:1\\\\d|2[1-5]|[34][1-4]|9[1-57]))\\\\d{6}\",\n,,,\"2123456789\",,,[10]],[,,\"68[57-9]\\\\d{7}|(?:69|94)\\\\d{8}\",,,,\"6912345678\",,,[10]],[,,\"800\\\\d{7,9}\",,,,\"8001234567\"],[,,\"90[19]\\\\d{7}\",,,,\"9091234567\",,,[10]],[,,\"8(?:0[16]|12|[27]5|50)\\\\d{7}\",,,,\"8011234567\",,,[10]],[,,\"70\\\\d{8}\",,,,\"7012345678\",,,[10]],[,,,,,,,,,[-1]],\"GR\",30,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"21|7\"]],[,\"(\\\\d{4})(\\\\d{6})\",\"$1 $2\",[\"2(?:2|3[2-57-9]|4[2-469]|5[2-59]|6[2-9]|7[2-69]|8[2-49])|5\"]],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2689]\"]],[,\"(\\\\d{3})(\\\\d{3,4})(\\\\d{5})\",\n\"$1 $2 $3\",[\"8\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"5005000\\\\d{3}\",,,,\"5005000123\",,,[10]],,,[,,,,,,,,,[-1]]],GT:[,[,,\"(?:1\\\\d{3}|[2-7])\\\\d{7}\",,,,,,,[8,11]],[,,\"[267][2-9]\\\\d{6}\",,,,\"22456789\",,,[8]],[,,\"[3-5]\\\\d{7}\",,,,\"51234567\",,,[8]],[,,\"18[01]\\\\d{8}\",,,,\"18001112222\",,,[11]],[,,\"19\\\\d{9}\",,,,\"19001112222\",,,[11]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"GT\",502,\"00\",,,,,,,,[[,\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[2-7]\"]],[,\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"]]],,[,,,,,,,,,[-1]],\n,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],GU:[,[,,\"(?:[58]\\\\d\\\\d|671|900)\\\\d{7}\",,,,,,,[10],[7]],[,,\"671(?:3(?:00|3[39]|4[349]|55|6[26])|4(?:00|56|7[1-9]|8[0236-9])|5(?:55|6[2-5]|88)|6(?:3[2-578]|4[24-9]|5[34]|78|8[235-9])|7(?:[0479]7|2[0167]|3[45]|8[7-9])|8(?:[2-57-9]8|6[48])|9(?:2[29]|6[79]|7[1279]|8[7-9]|9[78]))\\\\d{4}\",,,,\"6713001234\",,,,[7]],[,,\"671(?:3(?:00|3[39]|4[349]|55|6[26])|4(?:00|56|7[1-9]|8[0236-9])|5(?:55|6[2-5]|88)|6(?:3[2-578]|4[24-9]|5[34]|78|8[235-9])|7(?:[0479]7|2[0167]|3[45]|8[7-9])|8(?:[2-57-9]8|6[48])|9(?:2[29]|6[79]|7[1279]|8[7-9]|9[78]))\\\\d{4}\",\n,,,\"6713001234\",,,,[7]],[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",,,,\"8002123456\"],[,,\"900[2-9]\\\\d{6}\",,,,\"9002123456\"],[,,,,,,,,,[-1]],[,,\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\\\d{6}\",,,,\"5002345678\"],[,,,,,,,,,[-1]],\"GU\",1,\"011\",\"1\",,,\"1|([3-9]\\\\d{6})$\",\"671$1\",,1,,,[,,,,,,,,,[-1]],,\"671\",[,,,,,,,,,[-1]],[,,,,\n,,,,,[-1]],,,[,,,,,,,,,[-1]]],GW:[,[,,\"[49]\\\\d{8}|4\\\\d{6}\",,,,,,,[7,9]],[,,\"443\\\\d{6}\",,,,\"443201234\",,,[9]],[,,\"9(?:5\\\\d|6[569]|77)\\\\d{6}\",,,,\"955012345\",,,[9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"40\\\\d{5}\",,,,\"4012345\",,,[7]],\"GW\",245,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"40\"]],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[49]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],GY:[,[,,\"9008\\\\d{3}|(?:[2-467]\\\\d\\\\d|862)\\\\d{4}\",,,,,,,[7]],[,\n,\"(?:2(?:1[6-9]|2[0-35-9]|3[1-4]|5[3-9]|6\\\\d|7[0-24-79])|3(?:2[25-9]|3\\\\d)|4(?:4[0-24]|5[56])|77[1-57])\\\\d{4}\",,,,\"2201234\"],[,,\"(?:6\\\\d\\\\d|70[015-7])\\\\d{4}\",,,,\"6091234\"],[,,\"(?:289|862)\\\\d{4}\",,,,\"2891234\"],[,,\"9008\\\\d{3}\",,,,\"9008123\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"GY\",592,\"001\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-46-9]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],HK:[,[,,\"8[0-46-9]\\\\d{6,7}|9\\\\d{4,7}|(?:[2-7]|9\\\\d{3})\\\\d{7}\",,,,,,,[5,6,7,8,\n9,11]],[,,\"(?:2(?:[13-9]\\\\d|2[013-9])\\\\d|3(?:(?:[1569][0-24-9]|4[0-246-9]|7[0-24-69])\\\\d|8(?:4[0-8]|5[0-5]|9\\\\d))|58(?:0[1-8]|1[2-9]))\\\\d{4}\",,,,\"21234567\",,,[8]],[,,\"(?:46(?:0[0-7]|1[0-6]|4[0-57-9]|6[0-4]|7[0-8])|573[0-6]|6(?:26[013-8]|66[0-3])|70(?:7[1-5]|8[0-4])|848[015-9]|929[013-9])\\\\d{4}|(?:4(?:40|6[2358])|5(?:[1-59][0-46-9]|6[0-4689]|7[0-24679])|6(?:0[1-9]|[13-59]\\\\d|[268][0-57-9]|7[0-79])|84[09]|9(?:0[1-9]|1[02-9]|[2358][0-8]|[467]\\\\d))\\\\d{5}\",,,,\"51234567\",,,[8]],[,,\"800\\\\d{6}\",,,,\"800123456\",\n,,[9]],[,,\"900(?:[0-24-9]\\\\d{7}|3\\\\d{1,4})\",,,,\"90012345678\",,,[5,6,7,8,11]],[,,,,,,,,,[-1]],[,,\"8(?:1[0-4679]\\\\d|2(?:[0-36]\\\\d|7[0-4])|3(?:[034]\\\\d|2[09]|70))\\\\d{4}\",,,,\"81123456\",,,[8]],[,,,,,,,,,[-1]],\"HK\",852,\"00(?:30|5[09]|[126-9]?)\",,,,,,\"00\",,[[,\"(\\\\d{3})(\\\\d{2,5})\",\"$1 $2\",[\"900\",\"9003\"]],[,\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[2-7]|8[1-4]|9(?:0[1-9]|[1-8])\"]],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"]],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"9\"]]],,[,,\"7(?:1(?:0[0-38]|1[0-3679]|3[013]|69|9[0136])|2(?:[02389]\\\\d|1[18]|7[27-9])|3(?:[0-38]\\\\d|7[0-369]|9[2357-9])|47\\\\d|5(?:[178]\\\\d|5[0-5])|6(?:0[0-7]|2[236-9]|[35]\\\\d)|7(?:[27]\\\\d|8[7-9])|8(?:[23689]\\\\d|7[1-9])|9(?:[025]\\\\d|6[0-246-8]|7[0-36-9]|8[238]))\\\\d{4}\",\n,,,\"71123456\",,,[8]],,,[,,,,,,,,,[-1]],[,,\"30(?:0[1-9]|[15-7]\\\\d|2[047]|89)\\\\d{4}\",,,,\"30161234\",,,[8]],,,[,,,,,,,,,[-1]]],HN:[,[,,\"8\\\\d{10}|[237-9]\\\\d{7}\",,,,,,,[8,11]],[,,\"2(?:2(?:0[0-39]|1[1-367]|[23]\\\\d|4[03-6]|5[57]|6[245]|7[0135689]|8[01346-9]|9[0-2])|4(?:0[78]|2[3-59]|3[13-9]|4[0-68]|5[1-35])|5(?:0[7-9]|16|4[03-5]|5\\\\d|6[014-6]|7[04]|80)|6(?:[056]\\\\d|17|2[067]|3[04]|4[0-378]|[78][0-8]|9[01])|7(?:6[46-9]|7[02-9]|8[034]|91)|8(?:79|8[0-357-9]|9[1-57-9]))\\\\d{4}\",,,,\"22123456\",,,[8]],[,,\"[37-9]\\\\d{7}\",\n,,,\"91234567\",,,[8]],[,,\"8002\\\\d{7}\",,,,\"80021234567\",,,[11]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"HN\",504,\"00\",,,,,,,,[[,\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"[237-9]\"]],[,\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"]]],[[,\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"[237-9]\"]]],[,,,,,,,,,[-1]],,,[,,\"8002\\\\d{7}\",,,,,,,[11]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],HR:[,[,,\"(?:[24-69]\\\\d|3[0-79])\\\\d{7}|80\\\\d{5,7}|[1-79]\\\\d{7}|6\\\\d{5,6}\",,,,,,,[6,7,8,9]],[,,\"1\\\\d{7}|(?:2[0-3]|3[1-5]|4[02-47-9]|5[1-3])\\\\d{6,7}\",\n,,,\"12345678\",,,[8,9],[6,7]],[,,\"98\\\\d{6,7}|975(?:1\\\\d|96)\\\\d{4}|9(?:0[1-9]|[1259]\\\\d|7[0679])\\\\d{6}\",,,,\"921234567\",,,[8,9]],[,,\"80[01]\\\\d{4,6}\",,,,\"800123456\",,,[7,8,9]],[,,\"6[01459]\\\\d{6}|6[01]\\\\d{4,5}\",,,,\"611234\",,,[6,7,8]],[,,,,,,,,,[-1]],[,,\"7[45]\\\\d{6}\",,,,\"74123456\",,,[8]],[,,,,,,,,,[-1]],\"HR\",385,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2,3})\",\"$1 $2 $3\",[\"6[01]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2,3})\",\"$1 $2 $3\",[\"8\"],\"0$1\"],[,\"(\\\\d)(\\\\d{4})(\\\\d{3})\",\"$1 $2 $3\",[\"1\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\n\"$1 $2 $3\",[\"[67]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"9\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[2-5]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"62\\\\d{6,7}|72\\\\d{6}\",,,,\"62123456\",,,[8,9]],,,[,,,,,,,,,[-1]]],HT:[,[,,\"[2-489]\\\\d{7}\",,,,,,,[8]],[,,\"2(?:2\\\\d|5[1-5]|81|9[149])\\\\d{5}\",,,,\"22453300\"],[,,\"[34]\\\\d{7}\",,,,\"34101234\"],[,,\"8\\\\d{7}\",,,,\"80012345\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"9(?:[67][0-4]|8[0-3589]|9\\\\d)\\\\d{5}\",\n,,,\"98901234\"],\"HT\",509,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"[2-489]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],HU:[,[,,\"[235-7]\\\\d{8}|[1-9]\\\\d{7}\",,,,,,,[8,9],[6,7]],[,,\"(?:1\\\\d|[27][2-9]|3[2-7]|4[24-9]|5[2-79]|6[23689]|8[2-57-9]|9[2-69])\\\\d{6}\",,,,\"12345678\",,,[8],[6,7]],[,,\"(?:[257]0|3[01])\\\\d{7}\",,,,\"201234567\",,,[9]],[,,\"(?:[48]0\\\\d|680[29])\\\\d{5}\",,,,\"80123456\"],[,,\"9[01]\\\\d{6}\",,,,\"90123456\",,,[8]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"21\\\\d{7}\",\n,,,\"211234567\",,,[9]],\"HU\",36,\"00\",\"06\",,,\"06\",,,,[[,\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"(06 $1)\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[27][2-9]|3[2-7]|4[24-9]|5[2-79]|6|8[2-57-9]|9[2-69]\"],\"(06 $1)\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[2-9]\"],\"06 $1\"]],,[,,,,,,,,,[-1]],,,[,,\"(?:[48]0\\\\d|680[29])\\\\d{5}\"],[,,\"38\\\\d{7}\",,,,\"381234567\",,,[9]],,,[,,,,,,,,,[-1]]],ID:[,[,,\"(?:(?:00[1-9]|8\\\\d)\\\\d{4}|[1-36])\\\\d{6}|00\\\\d{10}|[1-9]\\\\d{8,10}|[2-9]\\\\d{7}\",,,,,,,[7,8,9,10,11,12,13],[5,6]],\n[,,\"2[124]\\\\d{7,8}|619\\\\d{8}|2(?:1(?:14|500)|2\\\\d{3})\\\\d{3}|61\\\\d{5,8}|(?:2(?:[35][1-4]|6[0-8]|7[1-6]|8\\\\d|9[1-8])|3(?:1|[25][1-8]|3[1-68]|4[1-3]|6[1-3568]|7[0-469]|8\\\\d)|4(?:0[1-589]|1[01347-9]|2[0-36-8]|3[0-24-68]|43|5[1-378]|6[1-5]|7[134]|8[1245])|5(?:1[1-35-9]|2[25-8]|3[124-9]|4[1-3589]|5[1-46]|6[1-8])|6(?:[25]\\\\d|3[1-69]|4[1-6])|7(?:02|[125][1-9]|[36]\\\\d|4[1-8]|7[0-36-9])|9(?:0[12]|1[013-8]|2[0-479]|5[125-8]|6[23679]|7[159]|8[01346]))\\\\d{5,8}\",,,,\"218350123\",,,[7,8,9,10,11],[5,6]],[,,\"8[1-35-9]\\\\d{7,10}\",\n,,,\"812345678\",,,[9,10,11,12]],[,,\"00[17]803\\\\d{7}|(?:177\\\\d|800)\\\\d{5,7}|001803\\\\d{6}\",,,,\"8001234567\",,,[8,9,10,11,12,13]],[,,\"809\\\\d{7}\",,,,\"8091234567\",,,[10]],[,,\"804\\\\d{7}\",,,,\"8041234567\",,,[10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"ID\",62,\"00[89]\",\"0\",,,\"0\",,,,[[,\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"15\"]],[,\"(\\\\d{2})(\\\\d{5,9})\",\"$1 $2\",[\"2[124]|[36]1\"],\"(0$1)\"],[,\"(\\\\d{3})(\\\\d{5,7})\",\"$1 $2\",[\"800\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{5,8})\",\"$1 $2\",[\"[2-79]\"],\"(0$1)\"],[,\"(\\\\d{3})(\\\\d{3,4})(\\\\d{3})\",\"$1-$2-$3\",\n[\"8[1-35-9]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{6,8})\",\"$1 $2\",[\"1\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"804\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"80\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{4})(\\\\d{4,5})\",\"$1-$2-$3\",[\"8\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"001\"]],[,\"(\\\\d{2})(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3 $4\",[\"0\"]]],[[,\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"15\"]],[,\"(\\\\d{2})(\\\\d{5,9})\",\"$1 $2\",[\"2[124]|[36]1\"],\"(0$1)\"],[,\"(\\\\d{3})(\\\\d{5,7})\",\"$1 $2\",[\"800\"],\"0$1\"],\n[,\"(\\\\d{3})(\\\\d{5,8})\",\"$1 $2\",[\"[2-79]\"],\"(0$1)\"],[,\"(\\\\d{3})(\\\\d{3,4})(\\\\d{3})\",\"$1-$2-$3\",[\"8[1-35-9]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{6,8})\",\"$1 $2\",[\"1\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"804\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"80\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{4})(\\\\d{4,5})\",\"$1-$2-$3\",[\"8\"],\"0$1\"]],[,,,,,,,,,[-1]],,,[,,\"001803\\\\d{6,7}|(?:007803\\\\d|8071)\\\\d{6}\",,,,,,,[10,12,13]],[,,\"(?:1500|8071\\\\d{3})\\\\d{3}\",,,,\"8071123456\",,,[7,10]],,,[,,,,,,,,,[-1]]],IE:[,[,,\"(?:1\\\\d|[2569])\\\\d{6,8}|4\\\\d{6,9}|7\\\\d{8}|8\\\\d{8,9}\",\n,,,,,,[7,8,9,10],[5,6]],[,,\"(?:1\\\\d|21)\\\\d{6,7}|(?:2[24-9]|4(?:0[24]|5\\\\d|7)|5(?:0[45]|1\\\\d|8)|6(?:1\\\\d|[237-9])|9(?:1\\\\d|[35-9]))\\\\d{5}|(?:23|4(?:[1-469]|8\\\\d)|5[23679]|6[4-6]|7[14]|9[04])\\\\d{7}\",,,,\"2212345\",,,,[5,6]],[,,\"8(?:22|[35-9]\\\\d)\\\\d{6}\",,,,\"850123456\",,,[9]],[,,\"1800\\\\d{6}\",,,,\"1800123456\",,,[10]],[,,\"15(?:1[2-8]|[2-8]0|9[089])\\\\d{6}\",,,,\"1520123456\",,,[10]],[,,\"18[59]0\\\\d{6}\",,,,\"1850123456\",,,[10]],[,,\"700\\\\d{6}\",,,,\"700123456\",,,[9]],[,,\"76\\\\d{7}\",,,,\"761234567\",,,[9]],\"IE\",353,\"00\",\n\"0\",,,\"0\",,,,[[,\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"2[24-9]|47|58|6[237-9]|9[35-9]\"],\"(0$1)\"],[,\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[45]0\"],\"(0$1)\"],[,\"(\\\\d)(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"(0$1)\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[2569]|4[1-69]|7[14]\"],\"(0$1)\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"70\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"81\"],\"(0$1)\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[78]\"],\"0$1\"],[,\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1\"]],[,\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\n\"$1 $2 $3\",[\"4\"],\"(0$1)\"],[,\"(\\\\d{2})(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3 $4\",[\"8\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,\"18[59]0\\\\d{6}\",,,,,,,[10]],[,,\"818\\\\d{6}\",,,,\"818123456\",,,[9]],,,[,,\"88210[1-9]\\\\d{4}|8(?:[35-79]5\\\\d\\\\d|8(?:[013-9]\\\\d\\\\d|2(?:[01][1-9]|[2-9]\\\\d)))\\\\d{5}\",,,,\"8551234567\",,,[10]]],IL:[,[,,\"1\\\\d{6}(?:\\\\d{3,5})?|[57]\\\\d{8}|[1-489]\\\\d{7}\",,,,,,,[7,8,9,10,11,12]],[,,\"153\\\\d{8,9}|29[1-9]\\\\d{5}|(?:2[0-8]|[3489]\\\\d)\\\\d{6}\",,,,\"21234567\",,,[8,11,12],[7]],[,,\"5(?:(?:[02368]\\\\d|[19][2-9]|4[1-9])\\\\d|5(?:01|1[79]|2[2-9]|3[0-3]|4[34]|5[015689]|6[6-8]|7[0-267]|8[7-9]|9[1-9]))\\\\d{5}\",\n,,,\"502345678\",,,[9]],[,,\"1(?:255|80[019]\\\\d{3})\\\\d{3}\",,,,\"1800123456\",,,[7,10]],[,,\"1212\\\\d{4}|1(?:200|9(?:0[0-2]|19))\\\\d{6}\",,,,\"1919123456\",,,[8,10]],[,,\"1700\\\\d{6}\",,,,\"1700123456\",,,[10]],[,,,,,,,,,[-1]],[,,\"7(?:380|8(?:33|55|77|81))\\\\d{5}|7(?:18|2[23]|3[237]|47|6[58]|7\\\\d|82|9[235-9])\\\\d{6}\",,,,\"771234567\",,,[9]],\"IL\",972,\"0(?:0|1[2-9])\",\"0\",,,\"0\",,,,[[,\"(\\\\d{4})(\\\\d{3})\",\"$1-$2\",[\"125\"]],[,\"(\\\\d{4})(\\\\d{2})(\\\\d{2})\",\"$1-$2-$3\",[\"121\"]],[,\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"[2-489]\"],\"0$1\"],\n[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"[57]\"],\"0$1\"],[,\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1-$2-$3\",[\"12\"]],[,\"(\\\\d{4})(\\\\d{6})\",\"$1-$2\",[\"159\"]],[,\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1-$2-$3-$4\",[\"1[7-9]\"]],[,\"(\\\\d{3})(\\\\d{1,2})(\\\\d{3})(\\\\d{4})\",\"$1-$2 $3-$4\",[\"15\"]]],,[,,,,,,,,,[-1]],,,[,,\"1700\\\\d{6}\",,,,,,,[10]],[,,\"1599\\\\d{6}\",,,,\"1599123456\",,,[10]],,,[,,\"151\\\\d{8,9}\",,,,\"15112340000\",,,[11,12]]],IM:[,[,,\"1624\\\\d{6}|(?:[3578]\\\\d|90)\\\\d{8}\",,,,,,,[10],[6]],[,,\"1624(?:230|[5-8]\\\\d\\\\d)\\\\d{3}\",,,,\"1624756789\",\n,,,[6]],[,,\"76245[06]\\\\d{4}|7(?:4576|[59]24\\\\d|624[0-4689])\\\\d{5}\",,,,\"7924123456\"],[,,\"808162\\\\d{4}\",,,,\"8081624567\"],[,,\"8(?:440[49]06|72299\\\\d)\\\\d{3}|(?:8(?:45|70)|90[0167])624\\\\d{4}\",,,,\"9016247890\"],[,,,,,,,,,[-1]],[,,\"70\\\\d{8}\",,,,\"7012345678\"],[,,\"56\\\\d{8}\",,,,\"5612345678\"],\"IM\",44,\"00\",\"0\",,,\"0|([25-8]\\\\d{5})$\",\"1624$1\",,,,,[,,,,,,,,,[-1]],,\"74576|(?:16|7[56])24\",[,,,,,,,,,[-1]],[,,\"3440[49]06\\\\d{3}|(?:3(?:08162|3\\\\d{4}|45624|7(?:0624|2299))|55\\\\d{4})\\\\d{4}\",,,,\"5512345678\"],,,[,,,,,,,,,[-1]]],\nIN:[,[,,\"(?:000800|[2-9]\\\\d\\\\d)\\\\d{7}|1\\\\d{7,12}\",,,,,,,[8,9,10,11,12,13],[6,7]],[,,\"2717(?:[2-7]\\\\d|95)\\\\d{4}|(?:271[0-689]|782[0-6])[2-7]\\\\d{5}|(?:170[24]|2(?:(?:[02][2-79]|90)\\\\d|80[13468])|(?:3(?:23|80)|683|79[1-7])\\\\d|4(?:20[24]|72[2-8])|552[1-7])\\\\d{6}|(?:11|33|4[04]|80)[2-7]\\\\d{7}|(?:342|674|788)(?:[0189][2-7]|[2-7]\\\\d)\\\\d{5}|(?:1(?:2[0-249]|3[0-25]|4[145]|[59][14]|6[014]|7[1257]|8[01346])|2(?:1[257]|3[013]|4[01]|5[0137]|6[0158]|78|8[1568]|9[14])|3(?:26|4[13]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|3[15]|5[12]|6[0-26-9]|7[014-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|[578]1|9[15])|6(?:12|[2-47]1|5[17]|6[13]|80)|7(?:12|2[14]|3[134]|4[47]|5[15]|[67]1)|8(?:16|2[014]|3[126]|6[136]|7[078]|8[34]|91))[2-7]\\\\d{6}|(?:1(?:2[35-8]|3[346-9]|4[236-9]|[59][0235-9]|6[235-9]|7[34689]|8[257-9])|2(?:1[134689]|3[24-8]|4[2-8]|5[25689]|6[2-4679]|7[3-79]|8[2-479]|9[235-9])|3(?:01|1[79]|2[1245]|4[5-8]|5[125689]|6[235-7]|7[157-9]|8[2-46-8])|4(?:1[14578]|2[5689]|3[2-467]|5[4-7]|6[35]|73|8[2689]|9[2389])|5(?:[16][146-9]|2[14-8]|3[1346]|4[14-69]|5[46]|7[2-4]|8[2-8]|9[246])|6(?:1[1358]|2[2457]|3[2-4]|4[235-7]|5[2-689]|6[24578]|7[235689]|8[124-6])|7(?:1[013-9]|2[0235-9]|3[2679]|4[1-35689]|5[2-46-9]|[67][02-9]|8[013-7]|9[089])|8(?:1[1357-9]|2[235-8]|3[03-57-9]|4[0-24-9]|5\\\\d|6[2457-9]|7[1-6]|8[1256]|9[2-4]))\\\\d[2-7]\\\\d{5}\",\n,,,\"7410410123\",,,[10],[6,7,8]],[,,\"(?:61279|7(?:887[02-9]|9(?:313|79[07-9]))|8(?:079[04-9]|(?:84|91)7[02-8]))\\\\d{5}|(?:6(?:12|[2-47]1|5[17]|6[13]|80)[0189]|7(?:1(?:2[0189]|9[0-5])|2(?:[14][017-9]|8[0-59])|3(?:2[5-8]|[34][017-9]|9[016-9])|4(?:1[015-9]|[29][89]|39|8[389])|5(?:[15][017-9]|2[04-9]|9[7-9])|6(?:0[0-47]|1[0-257-9]|2[0-4]|3[19]|5[4589])|70[0289]|88[089]|97[02-8])|8(?:0(?:6[67]|7[02-8])|70[017-9]|84[01489]|91[0-289]))\\\\d{6}|(?:7(?:31|4[47])|8(?:16|2[014]|3[126]|6[136]|7[78]|83))(?:[0189]\\\\d|7[02-8])\\\\d{5}|(?:6(?:[09]\\\\d|1[04679]|2[03689]|3[05-9]|4[0489]|50|6[069]|7[07]|8[7-9])|7(?:0\\\\d|2[0235-79]|3[05-8]|40|5[0346-8]|6[6-9]|7[1-9]|8[0-79]|9[089])|8(?:0[01589]|1[0-57-9]|2[235-9]|3[03-57-9]|[45]\\\\d|6[02457-9]|7[1-69]|8[0-25-9]|9[02-9])|9\\\\d\\\\d)\\\\d{7}|(?:6(?:(?:1[1358]|2[2457]|3[2-4]|4[235-7]|5[2-689]|6[24578]|8[124-6])\\\\d|7(?:[235689]\\\\d|4[0189]))|7(?:1(?:[013-8]\\\\d|9[6-9])|28[6-8]|3(?:2[0-49]|9[2-5])|4(?:1[2-4]|[29][0-7]|3[0-8]|[56]\\\\d|8[0-24-7])|5(?:2[1-3]|9[0-6])|6(?:0[5689]|2[5-9]|3[02-8]|4\\\\d|5[0-367])|70[13-7]|881))[0189]\\\\d{5}\",\n,,,\"8123456789\",,,[10]],[,,\"000800\\\\d{7}|1(?:600\\\\d{6}|80(?:0\\\\d{4,9}|3\\\\d{9}))\",,,,\"1800123456\"],[,,\"186[12]\\\\d{9}\",,,,\"1861123456789\",,,[13]],[,,\"1860\\\\d{7}\",,,,\"18603451234\",,,[11]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"IN\",91,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{7})\",\"$1\",[\"575\"]],[,\"(\\\\d{8})\",\"$1\",[\"5(?:0|2[23]|3[03]|[67]1|88)\",\"5(?:0|2(?:21|3)|3(?:0|3[23])|616|717|888)\",\"5(?:0|2(?:21|3)|3(?:0|3[23])|616|717|8888)\"],,,1],[,\"(\\\\d{4})(\\\\d{4,5})\",\"$1 $2\",[\"180\",\"1800\"],,,1],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",\n[\"140\"],,,1],[,\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"11|2[02]|33|4[04]|79[1-7]|80[2-46]\",\"11|2[02]|33|4[04]|79(?:[1-6]|7[19])|80(?:[2-4]|6[0-589])\",\"11|2[02]|33|4[04]|79(?:[124-6]|3(?:[02-9]|1[0-24-9])|7(?:1|9[1-6]))|80(?:[2-4]|6[0-589])\"],\"0$1\",,1],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1(?:2[0-249]|3[0-25]|4[145]|[68]|7[1257])|2(?:1[257]|3[013]|4[01]|5[0137]|6[0158]|78|8[1568])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|5[12]|[78]1)|6(?:12|[2-4]1|5[17]|6[13]|80)|7(?:12|3[134]|4[47]|61|88)|8(?:16|2[014]|3[126]|6[136]|7[078]|8[34]|91)|(?:43|59|75)[15]|(?:1[59]|29|67|72)[14]\",\n\"1(?:2[0-24]|3[0-25]|4[145]|[59][14]|6[1-9]|7[1257]|8[1-57-9])|2(?:1[257]|3[013]|4[01]|5[0137]|6[058]|78|8[1568]|9[14])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|3[15]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|[578]1|9[15])|674|7(?:(?:2[14]|3[34]|5[15])[2-6]|61[346]|88[0-8])|8(?:70[2-6]|84[235-7]|91[3-7])|(?:1(?:29|60|8[06])|261|552|6(?:12|[2-47]1|5[17]|6[13]|80)|7(?:12|31|4[47])|8(?:16|2[014]|3[126]|6[136]|7[78]|83))[2-7]\",\"1(?:2[0-24]|3[0-25]|4[145]|[59][14]|6[1-9]|7[1257]|8[1-57-9])|2(?:1[257]|3[013]|4[01]|5[0137]|6[058]|78|8[1568]|9[14])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|3[15]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|[578]1|9[15])|6(?:12(?:[2-6]|7[0-8])|74[2-7])|7(?:(?:2[14]|5[15])[2-6]|3171|61[346]|88(?:[2-7]|82))|8(?:70[2-6]|84(?:[2356]|7[19])|91(?:[3-6]|7[19]))|73[134][2-6]|(?:74[47]|8(?:16|2[014]|3[126]|6[136]|7[78]|83))(?:[2-6]|7[19])|(?:1(?:29|60|8[06])|261|552|6(?:[2-4]1|5[17]|6[13]|7(?:1|4[0189])|80)|7(?:12|88[01]))[2-7]\"],\n\"0$1\",,1],[,\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1(?:[2-479]|5[0235-9])|[2-5]|6(?:1[1358]|2[2457-9]|3[2-5]|4[235-7]|5[2-689]|6[24578]|7[235689]|8[1-6])|7(?:1[013-9]|28|3[129]|4[1-35689]|5[29]|6[02-5]|70)|807\",\"1(?:[2-479]|5[0235-9])|[2-5]|6(?:1[1358]|2(?:[2457]|84|95)|3(?:[2-4]|55)|4[235-7]|5[2-689]|6[24578]|7[235689]|8[1-6])|7(?:1(?:[013-8]|9[6-9])|28[6-8]|3(?:17|2[0-49]|9[2-57])|4(?:1[2-4]|[29][0-7]|3[0-8]|[56]|8[0-24-7])|5(?:2[1-3]|9[0-6])|6(?:0[5689]|2[5-9]|3[02-8]|4|5[0-367])|70[13-7])|807[19]\",\n\"1(?:[2-479]|5(?:[0236-9]|5[013-9]))|[2-5]|6(?:2(?:84|95)|355|83)|73179|807(?:1|9[1-3])|(?:1552|6(?:1[1358]|2[2457]|3[2-4]|4[235-7]|5[2-689]|6[24578]|7[235689]|8[124-6])\\\\d|7(?:1(?:[013-8]\\\\d|9[6-9])|28[6-8]|3(?:2[0-49]|9[2-57])|4(?:1[2-4]|[29][0-7]|3[0-8]|[56]\\\\d|8[0-24-7])|5(?:2[1-3]|9[0-6])|6(?:0[5689]|2[5-9]|3[02-8]|4\\\\d|5[0-367])|70[13-7]))[2-7]\"],\"0$1\",,1],[,\"(\\\\d{5})(\\\\d{5})\",\"$1 $2\",[\"[6-9]\"],\"0$1\",,1],[,\"(\\\\d{4})(\\\\d{2,4})(\\\\d{4})\",\"$1 $2 $3\",[\"1(?:6|8[06])\",\"1(?:6|8[06]0)\"],,,1],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\n\"$1 $2 $3 $4\",[\"0\"]],[,\"(\\\\d{4})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"18\"],,,1]],[[,\"(\\\\d{8})\",\"$1\",[\"5(?:0|2[23]|3[03]|[67]1|88)\",\"5(?:0|2(?:21|3)|3(?:0|3[23])|616|717|888)\",\"5(?:0|2(?:21|3)|3(?:0|3[23])|616|717|8888)\"],,,1],[,\"(\\\\d{4})(\\\\d{4,5})\",\"$1 $2\",[\"180\",\"1800\"],,,1],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"140\"],,,1],[,\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"11|2[02]|33|4[04]|79[1-7]|80[2-46]\",\"11|2[02]|33|4[04]|79(?:[1-6]|7[19])|80(?:[2-4]|6[0-589])\",\"11|2[02]|33|4[04]|79(?:[124-6]|3(?:[02-9]|1[0-24-9])|7(?:1|9[1-6]))|80(?:[2-4]|6[0-589])\"],\n\"0$1\",,1],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1(?:2[0-249]|3[0-25]|4[145]|[68]|7[1257])|2(?:1[257]|3[013]|4[01]|5[0137]|6[0158]|78|8[1568])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|5[12]|[78]1)|6(?:12|[2-4]1|5[17]|6[13]|80)|7(?:12|3[134]|4[47]|61|88)|8(?:16|2[014]|3[126]|6[136]|7[078]|8[34]|91)|(?:43|59|75)[15]|(?:1[59]|29|67|72)[14]\",\"1(?:2[0-24]|3[0-25]|4[145]|[59][14]|6[1-9]|7[1257]|8[1-57-9])|2(?:1[257]|3[013]|4[01]|5[0137]|6[058]|78|8[1568]|9[14])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|3[15]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|[578]1|9[15])|674|7(?:(?:2[14]|3[34]|5[15])[2-6]|61[346]|88[0-8])|8(?:70[2-6]|84[235-7]|91[3-7])|(?:1(?:29|60|8[06])|261|552|6(?:12|[2-47]1|5[17]|6[13]|80)|7(?:12|31|4[47])|8(?:16|2[014]|3[126]|6[136]|7[78]|83))[2-7]\",\n\"1(?:2[0-24]|3[0-25]|4[145]|[59][14]|6[1-9]|7[1257]|8[1-57-9])|2(?:1[257]|3[013]|4[01]|5[0137]|6[058]|78|8[1568]|9[14])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|3[15]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|[578]1|9[15])|6(?:12(?:[2-6]|7[0-8])|74[2-7])|7(?:(?:2[14]|5[15])[2-6]|3171|61[346]|88(?:[2-7]|82))|8(?:70[2-6]|84(?:[2356]|7[19])|91(?:[3-6]|7[19]))|73[134][2-6]|(?:74[47]|8(?:16|2[014]|3[126]|6[136]|7[78]|83))(?:[2-6]|7[19])|(?:1(?:29|60|8[06])|261|552|6(?:[2-4]1|5[17]|6[13]|7(?:1|4[0189])|80)|7(?:12|88[01]))[2-7]\"],\n\"0$1\",,1],[,\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1(?:[2-479]|5[0235-9])|[2-5]|6(?:1[1358]|2[2457-9]|3[2-5]|4[235-7]|5[2-689]|6[24578]|7[235689]|8[1-6])|7(?:1[013-9]|28|3[129]|4[1-35689]|5[29]|6[02-5]|70)|807\",\"1(?:[2-479]|5[0235-9])|[2-5]|6(?:1[1358]|2(?:[2457]|84|95)|3(?:[2-4]|55)|4[235-7]|5[2-689]|6[24578]|7[235689]|8[1-6])|7(?:1(?:[013-8]|9[6-9])|28[6-8]|3(?:17|2[0-49]|9[2-57])|4(?:1[2-4]|[29][0-7]|3[0-8]|[56]|8[0-24-7])|5(?:2[1-3]|9[0-6])|6(?:0[5689]|2[5-9]|3[02-8]|4|5[0-367])|70[13-7])|807[19]\",\n\"1(?:[2-479]|5(?:[0236-9]|5[013-9]))|[2-5]|6(?:2(?:84|95)|355|83)|73179|807(?:1|9[1-3])|(?:1552|6(?:1[1358]|2[2457]|3[2-4]|4[235-7]|5[2-689]|6[24578]|7[235689]|8[124-6])\\\\d|7(?:1(?:[013-8]\\\\d|9[6-9])|28[6-8]|3(?:2[0-49]|9[2-57])|4(?:1[2-4]|[29][0-7]|3[0-8]|[56]\\\\d|8[0-24-7])|5(?:2[1-3]|9[0-6])|6(?:0[5689]|2[5-9]|3[02-8]|4\\\\d|5[0-367])|70[13-7]))[2-7]\"],\"0$1\",,1],[,\"(\\\\d{5})(\\\\d{5})\",\"$1 $2\",[\"[6-9]\"],\"0$1\",,1],[,\"(\\\\d{4})(\\\\d{2,4})(\\\\d{4})\",\"$1 $2 $3\",[\"1(?:6|8[06])\",\"1(?:6|8[06]0)\"],,,1],[,\"(\\\\d{4})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\n\"$1 $2 $3 $4\",[\"18\"],,,1]],[,,,,,,,,,[-1]],,,[,,\"1(?:600\\\\d{6}|800\\\\d{4,9})|(?:000800|18(?:03\\\\d\\\\d|6(?:0|[12]\\\\d\\\\d)))\\\\d{7}\"],[,,\"140\\\\d{7}\",,,,\"1409305260\",,,[10]],,,[,,,,,,,,,[-1]]],IO:[,[,,\"3\\\\d{6}\",,,,,,,[7]],[,,\"37\\\\d{5}\",,,,\"3709100\"],[,,\"38\\\\d{5}\",,,,\"3801234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"IO\",246,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"3\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],IQ:[,[,,\"(?:1|7\\\\d\\\\d)\\\\d{7}|[2-6]\\\\d{7,8}\",\n,,,,,,[8,9,10],[6,7]],[,,\"1\\\\d{7}|(?:2[13-5]|3[02367]|4[023]|5[03]|6[026])\\\\d{6,7}\",,,,\"12345678\",,,[8,9],[6,7]],[,,\"7[3-9]\\\\d{8}\",,,,\"7912345678\",,,[10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"IQ\",964,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[2-6]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],IR:[,\n[,,\"[1-9]\\\\d{9}|(?:[1-8]\\\\d\\\\d|9)\\\\d{3,4}\",,,,,,,[4,5,6,7,10],[8]],[,,\"(?:1[137]|2[13-68]|3[1458]|4[145]|5[1468]|6[16]|7[1467]|8[13467])(?:[03-57]\\\\d{7}|[16]\\\\d{3}(?:\\\\d{4})?|[289]\\\\d{3}(?:\\\\d(?:\\\\d{3})?)?)|94(?:000[09]|2(?:121|[2689]0\\\\d)|30[0-2]\\\\d|4(?:111|40\\\\d))\\\\d{4}\",,,,\"2123456789\",,,[6,7,10],[4,5,8]],[,,\"9(?:(?:0(?:[0-35]\\\\d|4[4-6])|(?:[13]\\\\d|2[0-3])\\\\d)\\\\d|9(?:[0-46]\\\\d\\\\d|5[15]0|8(?:1\\\\d|88)|9(?:0[013]|[19]\\\\d|21|77|8[7-9])))\\\\d{5}\",,,,\"9123456789\",,,[10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\n[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"IR\",98,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{4,5})\",\"$1\",[\"96\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{4,5})\",\"$1 $2\",[\"(?:1[137]|2[13-68]|3[1458]|4[145]|5[1468]|6[16]|7[1467]|8[13467])[12689]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"9\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[1-8]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,\"9(?:4440\\\\d{5}|6(?:0[12]|2[16-8]|3(?:08|[14]5|[23]|66)|4(?:0|80)|5[01]|6[89]|86|9[19]))\",,,,,,,[4,5,10]],[,,\"96(?:0[12]|2[16-8]|3(?:08|[14]5|[23]|66)|4(?:0|80)|5[01]|6[89]|86|9[19])\",\n,,,\"9601\",,,[4,5]],,,[,,,,,,,,,[-1]]],IS:[,[,,\"(?:38\\\\d|[4-9])\\\\d{6}\",,,,,,,[7,9]],[,,\"(?:4(?:1[0-24-69]|2[0-7]|[37][0-8]|4[0-24589]|5[0-68]|6\\\\d|8[0-36-8])|5(?:05|[156]\\\\d|2[02578]|3[0-579]|4[03-7]|7[0-2578]|8[0-35-9]|9[013-689])|872)\\\\d{4}\",,,,\"4101234\",,,[7]],[,,\"(?:38[589]\\\\d\\\\d|6(?:1[1-8]|2[0-6]|3[026-9]|4[014679]|5[0159]|6[0-69]|70|8[06-8]|9\\\\d)|7(?:5[057]|[6-9]\\\\d)|8(?:2[0-59]|[3-69]\\\\d|8[238]))\\\\d{4}\",,,,\"6111234\"],[,,\"80[0-8]\\\\d{4}\",,,,\"8001234\",,,[7]],[,,\"90(?:0\\\\d|1[5-79]|2[015-79]|3[135-79]|4[125-7]|5[25-79]|7[1-37]|8[0-35-7])\\\\d{3}\",\n,,,\"9001234\",,,[7]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"49[0-24-79]\\\\d{4}\",,,,\"4921234\",,,[7]],\"IS\",354,\"00|1(?:0(?:01|[12]0)|100)\",,,,,,\"00\",,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[4-9]\"]],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"3\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"809\\\\d{4}\",,,,\"8091234\",,,[7]],,,[,,\"(?:689|8(?:7[18]|80)|95[48])\\\\d{4}\",,,,\"6891234\",,,[7]]],IT:[,[,,\"0\\\\d{5,10}|1\\\\d{8,10}|3(?:[0-8]\\\\d{7,10}|9\\\\d{7,8})|55\\\\d{8}|8\\\\d{5}(?:\\\\d{2,4})?\",,,,,,,[6,7,8,9,10,11,12]],[,,\"0669[0-79]\\\\d{1,6}|0(?:1(?:[0159]\\\\d|[27][1-5]|31|4[1-4]|6[1356]|8[2-57])|2\\\\d\\\\d|3(?:[0159]\\\\d|2[1-4]|3[12]|[48][1-6]|6[2-59]|7[1-7])|4(?:[0159]\\\\d|[23][1-9]|4[245]|6[1-5]|7[1-4]|81)|5(?:[0159]\\\\d|2[1-5]|3[2-6]|4[1-79]|6[4-6]|7[1-578]|8[3-8])|6(?:[0-57-9]\\\\d|6[0-8])|7(?:[0159]\\\\d|2[12]|3[1-7]|4[2-46]|6[13569]|7[13-6]|8[1-59])|8(?:[0159]\\\\d|2[3-578]|3[1-356]|[6-8][1-5])|9(?:[0159]\\\\d|[238][1-5]|4[12]|6[1-8]|7[1-6]))\\\\d{2,7}\",\n,,,\"0212345678\",,,[6,7,8,9,10,11]],[,,\"3[1-9]\\\\d{8}|3[2-9]\\\\d{7}\",,,,\"3123456789\",,,[9,10]],[,,\"80(?:0\\\\d{3}|3)\\\\d{3}\",,,,\"800123456\",,,[6,9]],[,,\"(?:0878\\\\d{3}|89(?:2\\\\d|3[04]|4(?:[0-4]|[5-9]\\\\d\\\\d)|5[0-4]))\\\\d\\\\d|(?:1(?:44|6[346])|89(?:38|5[5-9]|9))\\\\d{6}\",,,,\"899123456\",,,[6,8,9,10]],[,,\"84(?:[08]\\\\d{3}|[17])\\\\d{3}\",,,,\"848123456\",,,[6,9]],[,,\"1(?:78\\\\d|99)\\\\d{6}\",,,,\"1781234567\",,,[9,10]],[,,\"55\\\\d{8}\",,,,\"5512345678\",,,[10]],\"IT\",39,\"00\",,,,,,,,[[,\"(\\\\d{4,5})\",\"$1\",[\"1(?:0|9[246])\",\"1(?:0|9(?:2[2-9]|[46]))\"]],\n[,\"(\\\\d{6})\",\"$1\",[\"1(?:1|92)\"]],[,\"(\\\\d{2})(\\\\d{4,6})\",\"$1 $2\",[\"0[26]\"]],[,\"(\\\\d{3})(\\\\d{3,6})\",\"$1 $2\",[\"0[13-57-9][0159]|8(?:03|4[17]|9[2-5])\",\"0[13-57-9][0159]|8(?:03|4[17]|9(?:2|3[04]|[45][0-4]))\"]],[,\"(\\\\d{4})(\\\\d{2,6})\",\"$1 $2\",[\"0(?:[13-579][2-46-8]|8[236-8])\"]],[,\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"894\"]],[,\"(\\\\d{2})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"0[26]|5\"]],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"1(?:44|[679])|[38]\"]],[,\"(\\\\d{3})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"0[13-57-9][0159]|14\"]],[,\"(\\\\d{2})(\\\\d{4})(\\\\d{5})\",\n\"$1 $2 $3\",[\"0[26]\"]],[,\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"0\"]],[,\"(\\\\d{3})(\\\\d{4})(\\\\d{4,5})\",\"$1 $2 $3\",[\"3\"]]],[[,\"(\\\\d{2})(\\\\d{4,6})\",\"$1 $2\",[\"0[26]\"]],[,\"(\\\\d{3})(\\\\d{3,6})\",\"$1 $2\",[\"0[13-57-9][0159]|8(?:03|4[17]|9[2-5])\",\"0[13-57-9][0159]|8(?:03|4[17]|9(?:2|3[04]|[45][0-4]))\"]],[,\"(\\\\d{4})(\\\\d{2,6})\",\"$1 $2\",[\"0(?:[13-579][2-46-8]|8[236-8])\"]],[,\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"894\"]],[,\"(\\\\d{2})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"0[26]|5\"]],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"1(?:44|[679])|[38]\"]],\n[,\"(\\\\d{3})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"0[13-57-9][0159]|14\"]],[,\"(\\\\d{2})(\\\\d{4})(\\\\d{5})\",\"$1 $2 $3\",[\"0[26]\"]],[,\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"0\"]],[,\"(\\\\d{3})(\\\\d{4})(\\\\d{4,5})\",\"$1 $2 $3\",[\"3\"]]],[,,,,,,,,,[-1]],1,,[,,\"848\\\\d{6}\",,,,,,,[9]],[,,,,,,,,,[-1]],,,[,,\"3[2-8]\\\\d{9,10}\",,,,\"33101234501\",,,[11,12]]],JE:[,[,,\"1534\\\\d{6}|(?:[3578]\\\\d|90)\\\\d{8}\",,,,,,,[10],[6]],[,,\"1534[0-24-8]\\\\d{5}\",,,,\"1534456789\",,,,[6]],[,,\"7(?:(?:(?:50|82)9|937)\\\\d|7(?:00[378]|97[7-9]))\\\\d{5}\",,,,\"7797712345\"],\n[,,\"80(?:07(?:35|81)|8901)\\\\d{4}\",,,,\"8007354567\"],[,,\"(?:8(?:4(?:4(?:4(?:05|42|69)|703)|5(?:041|800))|7(?:0002|1206))|90(?:066[59]|1810|71(?:07|55)))\\\\d{4}\",,,,\"9018105678\"],[,,,,,,,,,[-1]],[,,\"701511\\\\d{4}\",,,,\"7015115678\"],[,,\"56\\\\d{8}\",,,,\"5612345678\"],\"JE\",44,\"00\",\"0\",,,\"0|([0-24-8]\\\\d{5})$\",\"1534$1\",,,,,[,,\"76(?:464|652)\\\\d{5}|76(?:0[0-2]|2[356]|34|4[01347]|5[49]|6[0-369]|77|8[14]|9[139])\\\\d{6}\",,,,\"7640123456\"],,,[,,,,,,,,,[-1]],[,,\"(?:3(?:0(?:07(?:35|81)|8901)|3\\\\d{4}|4(?:4(?:4(?:05|42|69)|703)|5(?:041|800))|7(?:0002|1206))|55\\\\d{4})\\\\d{4}\",\n,,,\"5512345678\"],,,[,,,,,,,,,[-1]]],JM:[,[,,\"(?:[58]\\\\d\\\\d|658|900)\\\\d{7}\",,,,,,,[10],[7]],[,,\"8766060\\\\d{3}|(?:658(?:2(?:[0-8]\\\\d|9[0-46-9])|[3-9]\\\\d\\\\d)|876(?:52[35]|6(?:0[1-3579]|1[02357-9]|[23]\\\\d|40|5[06]|6[2-589]|7[0257]|8[04]|9[4-9])|7(?:0[2-689]|[1-6]\\\\d|8[056]|9[45])|9(?:0[1-8]|1[02378]|[2-8]\\\\d|9[2-468])))\\\\d{4}\",,,,\"8765230123\",,,,[7]],[,,\"(?:658295|876(?:2(?:0[2-9]|[14-9]\\\\d|2[013-9]|3[3-9])|[348]\\\\d\\\\d|5(?:0[1-9]|[1-9]\\\\d)|6(?:4[89]|6[67])|7(?:0[07]|7\\\\d|8[1-47-9]|9[0-36-9])|9(?:[01]9|9[0579])))\\\\d{4}\",\n,,,\"8762101234\",,,,[7]],[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",,,,\"8002123456\"],[,,\"900[2-9]\\\\d{6}\",,,,\"9002123456\"],[,,,,,,,,,[-1]],[,,\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\\\d{6}\",,,,\"5002345678\"],[,,,,,,,,,[-1]],\"JM\",1,\"011\",\"1\",,,\"1\",,,,,,[,,,,,,,,,[-1]],,\"658|876\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,\n,,,,[-1]]],JO:[,[,,\"(?:(?:[2689]|7\\\\d)\\\\d|32|53)\\\\d{6}\",,,,,,,[8,9]],[,,\"87(?:000|90[01])\\\\d{3}|(?:2(?:6(?:2[0-35-9]|3[0-578]|4[24-7]|5[0-24-8]|[6-8][023]|9[0-3])|7(?:0[1-79]|10|2[014-7]|3[0-689]|4[019]|5[0-3578]))|32(?:0[1-69]|1[1-35-7]|2[024-7]|3\\\\d|4[0-3]|[5-7][023])|53(?:0[0-3]|[13][023]|2[0-59]|49|5[0-35-9]|6[15]|7[45]|8[1-6]|9[0-36-9])|6(?:2(?:[05]0|22)|3(?:00|33)|4(?:0[0-25]|1[2-7]|2[0569]|[38][07-9]|4[025689]|6[0-589]|7\\\\d|9[0-2])|5(?:[01][056]|2[034]|3[0-57-9]|4[178]|5[0-69]|6[0-35-9]|7[1-379]|8[0-68]|9[0239]))|87(?:20|7[078]|99))\\\\d{4}\",\n,,,\"62001234\",,,[8]],[,,\"7(?:[78][0-25-9]|9\\\\d)\\\\d{6}\",,,,\"790123456\",,,[9]],[,,\"80\\\\d{6}\",,,,\"80012345\",,,[8]],[,,\"9\\\\d{7}\",,,,\"90012345\",,,[8]],[,,\"85\\\\d{6}\",,,,\"85012345\",,,[8]],[,,\"70\\\\d{7}\",,,,\"700123456\",,,[9]],[,,,,,,,,,[-1]],\"JO\",962,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2356]|87\"],\"(0$1)\"],[,\"(\\\\d{3})(\\\\d{5,6})\",\"$1 $2\",[\"[89]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"70\"],\"0$1\"],[,\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"0$1\"]],,[,,\"74(?:66|77)\\\\d{5}\",,,,\"746612345\",\n,,[9]],,,[,,,,,,,,,[-1]],[,,\"8(?:10|8\\\\d)\\\\d{5}\",,,,\"88101234\",,,[8]],,,[,,,,,,,,,[-1]]],JP:[,[,,\"00[1-9]\\\\d{6,14}|[257-9]\\\\d{9}|(?:00|[1-9]\\\\d\\\\d)\\\\d{6}\",,,,,,,[8,9,10,11,12,13,14,15,16,17]],[,,\"(?:1(?:1[235-8]|2[3-6]|3[3-9]|4[2-6]|[58][2-8]|6[2-7]|7[2-9]|9[1-9])|(?:2[2-9]|[36][1-9])\\\\d|4(?:[2-578]\\\\d|6[02-8]|9[2-59])|5(?:[2-589]\\\\d|6[1-9]|7[2-8])|7(?:[25-9]\\\\d|3[4-9]|4[02-9])|8(?:[2679]\\\\d|3[2-9]|4[5-9]|5[1-9]|8[03-9])|9(?:[2-58]\\\\d|[679][1-9]))\\\\d{6}\",,,,\"312345678\",,,[9]],[,,\"[7-9]0[1-9]\\\\d{7}\",\n,,,\"9012345678\",,,[10]],[,,\"00777(?:[01]|5\\\\d)\\\\d\\\\d|(?:00(?:7778|882[1245])|(?:120|800\\\\d)\\\\d\\\\d)\\\\d{4}|00(?:37|66|78)\\\\d{6,13}\",,,,\"120123456\"],[,,\"990\\\\d{6}\",,,,\"990123456\",,,[9]],[,,,,,,,,,[-1]],[,,\"60\\\\d{7}\",,,,\"601234567\",,,[9]],[,,\"50[1-9]\\\\d{7}\",,,,\"5012345678\",,,[10]],\"JP\",81,\"010\",\"0\",,,\"0\",,,,[[,\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"007\",\"0077\",\"00777\",\"00777[01]\"]],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1-$2-$3\",[\"(?:12|57|99)0\"],\"0$1\"],[,\"(\\\\d{4})(\\\\d)(\\\\d{4})\",\"$1-$2-$3\",[\"1(?:26|3[79]|4[56]|5[4-68]|6[3-5])|499|5(?:76|97)|746|8(?:3[89]|47|51|63)|9(?:49|80|9[16])\",\n\"1(?:267|3(?:7[247]|9[278])|466|5(?:47|58|64)|6(?:3[245]|48|5[4-68]))|499[2468]|5(?:76|97)9|7468|8(?:3(?:8[7-9]|96)|477|51[2-9]|636)|9(?:496|802|9(?:1[23]|69))|1(?:45|58)[67]\",\"1(?:267|3(?:7[247]|9[278])|466|5(?:47|58|64)|6(?:3[245]|48|5[4-68]))|499[2468]|5(?:769|979[2-69])|7468|8(?:3(?:8[7-9]|96[2457-9])|477|51[2-9]|636[457-9])|9(?:496|802|9(?:1[23]|69))|1(?:45|58)[67]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"60\"],\"0$1\"],[,\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1-$2-$3\",[\"[36]|4(?:2[09]|7[01])\",\"[36]|4(?:2(?:0|9[02-69])|7(?:0[019]|1))\"],\n\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"1(?:1|5[45]|77|88|9[69])|2(?:2[1-37]|3[0-269]|4[59]|5|6[24]|7[1-358]|8[1369]|9[0-38])|4(?:[28][1-9]|3[0-57]|[45]|6[248]|7[2-579]|9[29])|5(?:2|3[045]|4[0-369]|5[29]|8[02389]|9[0-389])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9[2-6])|8(?:2[124589]|3[27-9]|49|51|6|7[0-468]|8[68]|9[019])|9(?:[23][1-9]|4[15]|5[138]|6[1-3]|7[156]|8[189]|9[1-489])\",\"1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:2(?:[127]|3[014-9])|3[0-269]|4[59]|5(?:[1-3]|5[0-69]|9[19])|62|7(?:[1-35]|8[0189])|8(?:[16]|3[0134]|9[0-5])|9(?:[028]|17))|4(?:2(?:[13-79]|8[014-6])|3[0-57]|[45]|6[248]|7[2-47]|8[1-9])|5(?:2|3[045]|4[0-369]|8[02389]|9[0-3])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9(?:[23]|4[0-59]|5[01569]|6[0167]))|8(?:2(?:[1258]|4[0-39]|9[0-2469])|49|51|6(?:[0-24]|36|5[0-3589]|72|9[01459])|7[0-468]|8[68])|9(?:[23][1-9]|4[15]|5[138]|6[1-3]|7[156]|8[189]|9(?:[1289]|3[34]|4[0178]))|(?:49|55|83)[29]|(?:264|837)[016-9]|2(?:57|93)[015-9]|(?:25[0468]|422|838)[01]|(?:47[59]|59[89]|8(?:6[68]|9))[019]\",\n\"1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:2[127]|3[0-269]|4[59]|5(?:[1-3]|5[0-69]|9(?:17|99))|6(?:2|4[016-9])|7(?:[1-35]|8[0189])|8(?:[16]|3[0134]|9[0-5])|9(?:[028]|17))|4(?:2(?:[13-79]|8[014-6])|3[0-57]|[45]|6[248]|7[2-47]|9[29])|5(?:2|3[045]|4[0-369]|5[29]|8[02389]|9[0-3])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9(?:[23]|4[0-59]|5[01569]|6[0167]))|8(?:2(?:[1258]|4[0-39]|9[0169])|3(?:[29]|7(?:[017-9]|6[6-8]))|49|51|6(?:[0-24]|36[23]|5(?:[0-389]|5[23])|6(?:[01]|9[178])|72|9[0145])|7[0-468]|8[68])|9(?:4[15]|5[138]|7[156]|8[189]|9(?:[1289]|3(?:31|4[357])|4[0178]))|(?:8294|96)[1-3]|2(?:57|93)[015-9]|(?:223|8699)[014-9]|(?:25[0468]|422|838)[01]|(?:48|8292|9[23])[1-9]|(?:47[59]|59[89]|8(?:68|9))[019]\",\n\"1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:2[127]|3[0-269]|4[59]|5(?:[1-3]|5[0-69]|7[015-9]|9(?:17|99))|6(?:2|4[016-9])|7(?:[1-35]|8[0189])|8(?:[16]|3[0134]|9[0-5])|9(?:[028]|17|3[015-9]))|4(?:2(?:[13-79]|8[014-6])|3[0-57]|[45]|6[248]|7[2-47]|9[29])|5(?:2|3[045]|4[0-369]|5[29]|8[02389]|9[0-3])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9(?:[23]|4[0-59]|5[01569]|6[0167]))|8(?:2(?:[1258]|4[0-39]|9(?:[019]|4[1-3]|6(?:[0-47-9]|5[01346-9])))|3(?:[29]|7(?:[017-9]|6[6-8]))|49|51|6(?:[0-24]|36[23]|5(?:[0-389]|5[23])|6(?:[01]|9[178])|72|9[0145])|7[0-468]|8[68])|9(?:4[15]|5[138]|6[1-3]|7[156]|8[189]|9(?:[1289]|3(?:31|4[357])|4[0178]))|(?:223|8699)[014-9]|(?:25[0468]|422|838)[01]|(?:48|829(?:2|66)|9[23])[1-9]|(?:47[59]|59[89]|8(?:68|9))[019]\"],\n\"0$1\"],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{4})\",\"$1-$2-$3\",[\"[14]|[289][2-9]|5[3-9]|7[2-4679]\"],\"0$1\"],[,\"(\\\\d{4})(\\\\d{2})(\\\\d{3,4})\",\"$1-$2-$3\",[\"007\",\"0077\"]],[,\"(\\\\d{4})(\\\\d{2})(\\\\d{4})\",\"$1-$2-$3\",[\"008\"]],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"800\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1-$2-$3\",[\"[257-9]\"],\"0$1\"],[,\"(\\\\d{4})(\\\\d{3})(\\\\d{3,4})\",\"$1-$2-$3\",[\"0\"]],[,\"(\\\\d{4})(\\\\d{4})(\\\\d{4,5})\",\"$1-$2-$3\",[\"0\"]],[,\"(\\\\d{4})(\\\\d{5})(\\\\d{5,6})\",\"$1-$2-$3\",[\"0\"]],[,\"(\\\\d{4})(\\\\d{6})(\\\\d{6,7})\",\"$1-$2-$3\",\n[\"0\"]]],[[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1-$2-$3\",[\"(?:12|57|99)0\"],\"0$1\"],[,\"(\\\\d{4})(\\\\d)(\\\\d{4})\",\"$1-$2-$3\",[\"1(?:26|3[79]|4[56]|5[4-68]|6[3-5])|499|5(?:76|97)|746|8(?:3[89]|47|51|63)|9(?:49|80|9[16])\",\"1(?:267|3(?:7[247]|9[278])|466|5(?:47|58|64)|6(?:3[245]|48|5[4-68]))|499[2468]|5(?:76|97)9|7468|8(?:3(?:8[7-9]|96)|477|51[2-9]|636)|9(?:496|802|9(?:1[23]|69))|1(?:45|58)[67]\",\"1(?:267|3(?:7[247]|9[278])|466|5(?:47|58|64)|6(?:3[245]|48|5[4-68]))|499[2468]|5(?:769|979[2-69])|7468|8(?:3(?:8[7-9]|96[2457-9])|477|51[2-9]|636[457-9])|9(?:496|802|9(?:1[23]|69))|1(?:45|58)[67]\"],\n\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"60\"],\"0$1\"],[,\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1-$2-$3\",[\"[36]|4(?:2[09]|7[01])\",\"[36]|4(?:2(?:0|9[02-69])|7(?:0[019]|1))\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"1(?:1|5[45]|77|88|9[69])|2(?:2[1-37]|3[0-269]|4[59]|5|6[24]|7[1-358]|8[1369]|9[0-38])|4(?:[28][1-9]|3[0-57]|[45]|6[248]|7[2-579]|9[29])|5(?:2|3[045]|4[0-369]|5[29]|8[02389]|9[0-389])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9[2-6])|8(?:2[124589]|3[27-9]|49|51|6|7[0-468]|8[68]|9[019])|9(?:[23][1-9]|4[15]|5[138]|6[1-3]|7[156]|8[189]|9[1-489])\",\n\"1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:2(?:[127]|3[014-9])|3[0-269]|4[59]|5(?:[1-3]|5[0-69]|9[19])|62|7(?:[1-35]|8[0189])|8(?:[16]|3[0134]|9[0-5])|9(?:[028]|17))|4(?:2(?:[13-79]|8[014-6])|3[0-57]|[45]|6[248]|7[2-47]|8[1-9])|5(?:2|3[045]|4[0-369]|8[02389]|9[0-3])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9(?:[23]|4[0-59]|5[01569]|6[0167]))|8(?:2(?:[1258]|4[0-39]|9[0-2469])|49|51|6(?:[0-24]|36|5[0-3589]|72|9[01459])|7[0-468]|8[68])|9(?:[23][1-9]|4[15]|5[138]|6[1-3]|7[156]|8[189]|9(?:[1289]|3[34]|4[0178]))|(?:49|55|83)[29]|(?:264|837)[016-9]|2(?:57|93)[015-9]|(?:25[0468]|422|838)[01]|(?:47[59]|59[89]|8(?:6[68]|9))[019]\",\n\"1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:2[127]|3[0-269]|4[59]|5(?:[1-3]|5[0-69]|9(?:17|99))|6(?:2|4[016-9])|7(?:[1-35]|8[0189])|8(?:[16]|3[0134]|9[0-5])|9(?:[028]|17))|4(?:2(?:[13-79]|8[014-6])|3[0-57]|[45]|6[248]|7[2-47]|9[29])|5(?:2|3[045]|4[0-369]|5[29]|8[02389]|9[0-3])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9(?:[23]|4[0-59]|5[01569]|6[0167]))|8(?:2(?:[1258]|4[0-39]|9[0169])|3(?:[29]|7(?:[017-9]|6[6-8]))|49|51|6(?:[0-24]|36[23]|5(?:[0-389]|5[23])|6(?:[01]|9[178])|72|9[0145])|7[0-468]|8[68])|9(?:4[15]|5[138]|7[156]|8[189]|9(?:[1289]|3(?:31|4[357])|4[0178]))|(?:8294|96)[1-3]|2(?:57|93)[015-9]|(?:223|8699)[014-9]|(?:25[0468]|422|838)[01]|(?:48|8292|9[23])[1-9]|(?:47[59]|59[89]|8(?:68|9))[019]\",\n\"1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:2[127]|3[0-269]|4[59]|5(?:[1-3]|5[0-69]|7[015-9]|9(?:17|99))|6(?:2|4[016-9])|7(?:[1-35]|8[0189])|8(?:[16]|3[0134]|9[0-5])|9(?:[028]|17|3[015-9]))|4(?:2(?:[13-79]|8[014-6])|3[0-57]|[45]|6[248]|7[2-47]|9[29])|5(?:2|3[045]|4[0-369]|5[29]|8[02389]|9[0-3])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9(?:[23]|4[0-59]|5[01569]|6[0167]))|8(?:2(?:[1258]|4[0-39]|9(?:[019]|4[1-3]|6(?:[0-47-9]|5[01346-9])))|3(?:[29]|7(?:[017-9]|6[6-8]))|49|51|6(?:[0-24]|36[23]|5(?:[0-389]|5[23])|6(?:[01]|9[178])|72|9[0145])|7[0-468]|8[68])|9(?:4[15]|5[138]|6[1-3]|7[156]|8[189]|9(?:[1289]|3(?:31|4[357])|4[0178]))|(?:223|8699)[014-9]|(?:25[0468]|422|838)[01]|(?:48|829(?:2|66)|9[23])[1-9]|(?:47[59]|59[89]|8(?:68|9))[019]\"],\n\"0$1\"],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{4})\",\"$1-$2-$3\",[\"[14]|[289][2-9]|5[3-9]|7[2-4679]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"800\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1-$2-$3\",[\"[257-9]\"],\"0$1\"]],[,,\"20\\\\d{8}\",,,,\"2012345678\",,,[10]],,,[,,\"00(?:777(?:[01]|(?:5|8\\\\d)\\\\d)|882[1245]\\\\d\\\\d)\\\\d\\\\d|00(?:37|66|78)\\\\d{6,13}\"],[,,\"570\\\\d{6}\",,,,\"570123456\",,,[9]],,,[,,,,,,,,,[-1]]],KE:[,[,,\"(?:[17]\\\\d\\\\d|900)\\\\d{6}|(?:2|80)0\\\\d{6,7}|[4-6]\\\\d{6,8}\",,,,,,,[7,8,9,10]],[,,\"(?:4[245]|5[1-79]|6[01457-9])\\\\d{5,7}|(?:4[136]|5[08]|62)\\\\d{7}|(?:[24]0|66)\\\\d{6,7}\",\n,,,\"202012345\",,,[7,8,9]],[,,\"(?:1(?:0[0-6]|1[0-5]|2[014])|7\\\\d\\\\d)\\\\d{6}\",,,,\"712123456\",,,[9]],[,,\"800[2-8]\\\\d{5,6}\",,,,\"800223456\",,,[9,10]],[,,\"900[02-9]\\\\d{5}\",,,,\"900223456\",,,[9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"KE\",254,\"000\",\"0\",,,\"0\",,,,[[,\"(\\\\d{2})(\\\\d{5,7})\",\"$1 $2\",[\"[24-6]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"[17]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[89]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],KG:[,[,,\"8\\\\d{9}|(?:[235-8]\\\\d|99)\\\\d{7}\",\n,,,,,,[9,10],[5,6]],[,,\"312(?:5[0-79]\\\\d|9(?:[0-689]\\\\d|7[0-24-9]))\\\\d{3}|(?:3(?:1(?:2[0-46-8]|3[1-9]|47|[56]\\\\d)|2(?:22|3[0-479]|6[0-7])|4(?:22|5[6-9]|6\\\\d)|5(?:22|3[4-7]|59|6\\\\d)|6(?:22|5[35-7]|6\\\\d)|7(?:22|3[468]|4[1-9]|59|[67]\\\\d)|9(?:22|4[1-8]|6\\\\d))|6(?:09|12|2[2-4])\\\\d)\\\\d{5}\",,,,\"312123456\",,,[9],[5,6]],[,,\"312(?:58\\\\d|973)\\\\d{3}|(?:2(?:0[0-35]|2\\\\d)|5[0-24-7]\\\\d|7(?:[07]\\\\d|55)|880|99[05-9])\\\\d{6}\",,,,\"700123456\",,,[9]],[,,\"800\\\\d{6,7}\",,,,\"800123456\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\n,,,,,,,[-1]],[,,,,,,,,,[-1]],\"KG\",996,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{4})(\\\\d{5})\",\"$1 $2\",[\"3(?:1[346]|[24-79])\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[235-79]|88\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d)(\\\\d{2,3})\",\"$1 $2 $3 $4\",[\"8\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],KH:[,[,,\"1\\\\d{9}|[1-9]\\\\d{7,8}\",,,,,,,[8,9,10],[6,7]],[,,\"23(?:4(?:[2-4]|[56]\\\\d)|[568]\\\\d\\\\d)\\\\d{4}|23[236-9]\\\\d{5}|(?:2[4-6]|3[2-6]|4[2-4]|[5-7][2-5])(?:(?:[237-9]|4[56]|5\\\\d)\\\\d{5}|6\\\\d{5,6})\",\n,,,\"23756789\",,,[8,9],[6,7]],[,,\"(?:(?:1[28]|3[18]|9[67])\\\\d|6[016-9]|7(?:[07-9]|[16]\\\\d)|8(?:[013-79]|8\\\\d))\\\\d{6}|(?:1\\\\d|9[0-57-9])\\\\d{6}|(?:2[3-6]|3[2-6]|4[2-4]|[5-7][2-5])48\\\\d{5}\",,,,\"91234567\",,,[8,9]],[,,\"1800(?:1\\\\d|2[019])\\\\d{4}\",,,,\"1800123456\",,,[10]],[,,\"1900(?:1\\\\d|2[09])\\\\d{4}\",,,,\"1900123456\",,,[10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"KH\",855,\"00[14-9]\",\"0\",,,\"0\",,,,[[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[1-9]\"],\"0$1\"],[,\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1\"]]],\n,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],KI:[,[,,\"(?:[37]\\\\d|6[0-79])\\\\d{6}|(?:[2-48]\\\\d|50)\\\\d{3}\",,,,,,,[5,8]],[,,\"(?:[24]\\\\d|3[1-9]|50|65(?:02[12]|12[56]|22[89]|[3-5]00)|7(?:27\\\\d\\\\d|3100|5(?:02[12]|12[56]|22[89]|[34](?:00|81)|500))|8[0-5])\\\\d{3}\",,,,\"31234\"],[,,\"(?:63\\\\d{3}|73(?:0[0-5]\\\\d|140))\\\\d{3}|[67]200[01]\\\\d{3}\",,,,\"72001234\",,,[8]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"30(?:0[01]\\\\d\\\\d|12(?:11|20))\\\\d\\\\d\",,,,\"30010000\",,,[8]],\n\"KI\",686,\"00\",\"0\",,,\"0\",,,,,,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],KM:[,[,,\"[3478]\\\\d{6}\",,,,,,,[7],[4]],[,,\"7[4-7]\\\\d{5}\",,,,\"7712345\",,,,[4]],[,,\"[34]\\\\d{6}\",,,,\"3212345\"],[,,,,,,,,,[-1]],[,,\"8\\\\d{6}\",,,,\"8001234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"KM\",269,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"[3478]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],KN:[,[,,\"(?:[58]\\\\d\\\\d|900)\\\\d{7}\",,,,,,,[10],[7]],[,,\"869(?:2(?:29|36)|302|4(?:6[015-9]|70)|56[5-7])\\\\d{4}\",\n,,,\"8692361234\",,,,[7]],[,,\"869(?:48[89]|55[6-8]|66\\\\d|76[02-7])\\\\d{4}\",,,,\"8697652917\",,,,[7]],[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",,,,\"8002123456\"],[,,\"900[2-9]\\\\d{6}\",,,,\"9002123456\"],[,,,,,,,,,[-1]],[,,\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\\\d{6}\",,,,\"5002345678\"],[,,,,,,,,,[-1]],\"KN\",1,\"011\",\"1\",,,\"1|([2-7]\\\\d{6})$\",\n\"869$1\",,,,,[,,,,,,,,,[-1]],,\"869\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],KP:[,[,,\"85\\\\d{6}|(?:19\\\\d|[2-7])\\\\d{7}\",,,,,,,[8,10],[6,7]],[,,\"(?:(?:195|2)\\\\d|3[19]|4[159]|5[37]|6[17]|7[39]|85)\\\\d{6}\",,,,\"21234567\",,,,[6,7]],[,,\"19[1-3]\\\\d{7}\",,,,\"1921234567\",,,[10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"KP\",850,\"00|99\",\"0\",,,\"0\",,,,[[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"],\"0$1\"],[,\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2-7]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\n\"$1 $2 $3\",[\"1\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,\"238[02-9]\\\\d{4}|2(?:[0-24-9]\\\\d|3[0-79])\\\\d{5}\",,,,,,,[8]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],KR:[,[,,\"00[1-9]\\\\d{8,11}|(?:[12]|5\\\\d{3})\\\\d{7}|[13-6]\\\\d{9}|(?:[1-6]\\\\d|80)\\\\d{7}|[3-6]\\\\d{4,5}|(?:00|7)0\\\\d{8}\",,,,,,,[5,6,8,9,10,11,12,13,14],[3,4,7]],[,,\"(?:2|3[1-3]|[46][1-4]|5[1-5])[1-9]\\\\d{6,7}|(?:3[1-3]|[46][1-4]|5[1-5])1\\\\d{2,3}\",,,,\"22123456\",,,[5,6,8,9,10],[3,4,7]],[,,\"1(?:05(?:[0-8]\\\\d|9[0-6])|22[13]\\\\d)\\\\d{4,5}|1(?:0[1-46-9]|[16-9]\\\\d|2[013-9])\\\\d{6,7}\",\n,,,\"1020000000\",,,[9,10]],[,,\"00(?:308\\\\d{6,7}|798\\\\d{7,9})|(?:00368|80)\\\\d{7}\",,,,\"801234567\",,,[9,11,12,13,14]],[,,\"60[2-9]\\\\d{6}\",,,,\"602345678\",,,[9]],[,,,,,,,,,[-1]],[,,\"50\\\\d{8,9}\",,,,\"5012345678\",,,[10,11]],[,,\"70\\\\d{8}\",,,,\"7012345678\",,,[10]],\"KR\",82,\"00(?:[125689]|3(?:[46]5|91)|7(?:00|27|3|55|6[126]))\",\"0\",,,\"0(8(?:[1-46-8]|5\\\\d\\\\d))?\",,,,[[,\"(\\\\d{5})\",\"$1\",[\"1[016-9]1\",\"1[016-9]11\",\"1[016-9]114\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3,4})\",\"$1-$2\",[\"(?:3[1-3]|[46][1-4]|5[1-5])1\"],\"0$1\",\"0$CC-$1\"],[,\n\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"1\"]],[,\"(\\\\d)(\\\\d{3,4})(\\\\d{4})\",\"$1-$2-$3\",[\"2\"],\"0$1\",\"0$CC-$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"60|8\"],\"0$1\",\"0$CC-$1\"],[,\"(\\\\d{2})(\\\\d{3,4})(\\\\d{4})\",\"$1-$2-$3\",[\"[1346]|5[1-5]\"],\"0$1\",\"0$CC-$1\"],[,\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1-$2-$3\",[\"[57]\"],\"0$1\",\"0$CC-$1\"],[,\"(\\\\d{5})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"003\",\"0030\"]],[,\"(\\\\d{2})(\\\\d{5})(\\\\d{4})\",\"$1-$2-$3\",[\"5\"],\"0$1\",\"0$CC-$1\"],[,\"(\\\\d{5})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"0\"]],[,\"(\\\\d{5})(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\n\"$1 $2 $3 $4\",[\"0\"]]],[[,\"(\\\\d{2})(\\\\d{3,4})\",\"$1-$2\",[\"(?:3[1-3]|[46][1-4]|5[1-5])1\"],\"0$1\",\"0$CC-$1\"],[,\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"1\"]],[,\"(\\\\d)(\\\\d{3,4})(\\\\d{4})\",\"$1-$2-$3\",[\"2\"],\"0$1\",\"0$CC-$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"60|8\"],\"0$1\",\"0$CC-$1\"],[,\"(\\\\d{2})(\\\\d{3,4})(\\\\d{4})\",\"$1-$2-$3\",[\"[1346]|5[1-5]\"],\"0$1\",\"0$CC-$1\"],[,\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1-$2-$3\",[\"[57]\"],\"0$1\",\"0$CC-$1\"],[,\"(\\\\d{2})(\\\\d{5})(\\\\d{4})\",\"$1-$2-$3\",[\"5\"],\"0$1\",\"0$CC-$1\"]],[,,\"15\\\\d{7,8}\",,,,\"1523456789\",\n,,[9,10]],,,[,,\"00(?:3(?:08\\\\d{6,7}|68\\\\d{7})|798\\\\d{7,9})\",,,,,,,[11,12,13,14]],[,,\"1(?:5(?:22|33|44|66|77|88|99)|6(?:[07]0|44|6[168]|88)|8(?:00|33|55|77|99))\\\\d{4}\",,,,\"15441234\",,,[8]],,,[,,,,,,,,,[-1]]],KW:[,[,,\"18\\\\d{5}|(?:[2569]\\\\d|41)\\\\d{6}\",,,,,,,[7,8]],[,,\"2(?:[23]\\\\d\\\\d|4(?:[1-35-9]\\\\d|44)|5(?:0[034]|[2-46]\\\\d|5[1-3]|7[1-7]))\\\\d{4}\",,,,\"22345678\",,,[8]],[,,\"(?:41\\\\d\\\\d|5(?:(?:[05]\\\\d|1[0-7]|6[56])\\\\d|2(?:22|5[25])|7(?:55|77)|88[58])|6(?:(?:0[034679]|5[015-9]|6\\\\d)\\\\d|111|222|333|444|7(?:0[013-9]|[67]\\\\d)|888|9(?:[069]\\\\d|3[039]))|9(?:(?:0[09]|22|[4679]\\\\d|8[057-9])\\\\d|1(?:1[01]|99)|3(?:00|33)|5(?:00|5\\\\d)))\\\\d{4}\",\n,,,\"50012345\",,,[8]],[,,\"18\\\\d{5}\",,,,\"1801234\",,,[7]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"KW\",965,\"00\",,,,,,,,[[,\"(\\\\d{4})(\\\\d{3,4})\",\"$1 $2\",[\"[169]|2(?:[235]|4[1-35-9])|52\"]],[,\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[245]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],KY:[,[,,\"(?:345|[58]\\\\d\\\\d|900)\\\\d{7}\",,,,,,,[10],[7]],[,,\"345(?:2(?:22|3[23]|44|66)|333|444|6(?:23|38|40)|7(?:30|4[35-79]|6[6-9]|77)|8(?:00|1[45]|[48]8)|9(?:14|4[035-9]))\\\\d{4}\",,,,\"3452221234\",\n,,,[7]],[,,\"345(?:32[1-9]|42[0-4]|5(?:1[67]|2[5-79]|4[6-9]|50|76)|649|82[56]|9(?:1[679]|2[2-9]|3[06-9]|90))\\\\d{4}\",,,,\"3453231234\",,,,[7]],[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",,,,\"8002345678\"],[,,\"(?:345976|900[2-9]\\\\d\\\\d)\\\\d{4}\",,,,\"9002345678\"],[,,,,,,,,,[-1]],[,,\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\\\d{6}\",\n,,,\"5002345678\"],[,,,,,,,,,[-1]],\"KY\",1,\"011\",\"1\",,,\"1|([2-9]\\\\d{6})$\",\"345$1\",,,,,[,,\"345849\\\\d{4}\",,,,\"3458491234\"],,\"345\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],KZ:[,[,,\"(?:33622|8\\\\d{8})\\\\d{5}|[78]\\\\d{9}\",,,,,,,[10,14],[5,6,7]],[,,\"(?:33622|7(?:1(?:0(?:[23]\\\\d|4[0-3]|59|63)|1(?:[23]\\\\d|4[0-79]|59)|2(?:[23]\\\\d|59)|3(?:2\\\\d|3[0-79]|4[0-35-9]|59)|4(?:[24]\\\\d|3[013-9]|5[1-9])|5(?:2\\\\d|3[1-9]|4[0-7]|59)|6(?:[2-4]\\\\d|5[19]|61)|72\\\\d|8(?:[27]\\\\d|3[1-46-9]|4[0-5]))|2(?:1(?:[23]\\\\d|4[46-9]|5[3469])|2(?:2\\\\d|3[0679]|46|5[12679])|3(?:[2-4]\\\\d|5[139])|4(?:2\\\\d|3[1-35-9]|59)|5(?:[23]\\\\d|4[0-246-8]|59|61)|6(?:2\\\\d|3[1-9]|4[0-4]|59)|7(?:[2379]\\\\d|40|5[279])|8(?:[23]\\\\d|4[0-3]|59)|9(?:2\\\\d|3[124578]|59))))\\\\d{5}\",\n,,,\"7123456789\",,,[10],[5,6,7]],[,,\"7(?:0[0-25-8]|47|6[0-4]|7[15-8]|85)\\\\d{7}\",,,,\"7710009998\",,,[10]],[,,\"8(?:00|108\\\\d{3})\\\\d{7}\",,,,\"8001234567\"],[,,\"809\\\\d{7}\",,,,\"8091234567\",,,[10]],[,,,,,,,,,[-1]],[,,\"808\\\\d{7}\",,,,\"8081234567\",,,[10]],[,,\"751\\\\d{7}\",,,,\"7511234567\",,,[10]],\"KZ\",7,\"810\",\"8\",,,\"8\",,\"8~10\",,,,[,,,,,,,,,[-1]],,\"33|7\",[,,\"751\\\\d{7}\",,,,,,,[10]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],LA:[,[,,\"[23]\\\\d{9}|3\\\\d{8}|(?:[235-8]\\\\d|41)\\\\d{6}\",,,,,,,[8,9,10],[6]],[,,\"(?:2[13]|[35-7][14]|41|8[1468])\\\\d{6}\",\n,,,\"21212862\",,,[8],[6]],[,,\"(?:20(?:[239]\\\\d|5[24-9]|7[6-8]|88)|302\\\\d)\\\\d{6}\",,,,\"2023123456\",,,[10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"LA\",856,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"2[13]|3[14]|[4-8]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"30[013-9]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"[23]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"30[013-9]\\\\d{6}\",,,,\"301234567\",,,[9]],,,\n[,,,,,,,,,[-1]]],LB:[,[,,\"[27-9]\\\\d{7}|[13-9]\\\\d{6}\",,,,,,,[7,8]],[,,\"7(?:62|8[0-7]|9[04-9])\\\\d{4}|(?:[14-69]\\\\d|2(?:[14-69]\\\\d|[78][1-9])|7[2-57]|8[02-9])\\\\d{5}\",,,,\"1123456\"],[,,\"793(?:[01]\\\\d|2[0-4])\\\\d{3}|(?:(?:3|81)\\\\d|7(?:[01]\\\\d|6[013-9]|8[89]|9[12]))\\\\d{5}\",,,,\"71123456\"],[,,,,,,,,,[-1]],[,,\"9[01]\\\\d{6}\",,,,\"90123456\",,,[8]],[,,\"80\\\\d{6}\",,,,\"80123456\",,,[8]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"LB\",961,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[13-69]|7(?:[2-57]|62|8[0-7]|9[04-9])|8[02-9]\"],\n\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[27-9]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],LC:[,[,,\"(?:[58]\\\\d\\\\d|758|900)\\\\d{7}\",,,,,,,[10],[7]],[,,\"758(?:234|4(?:30|5\\\\d|6[2-9]|8[0-2])|57[0-2]|(?:63|75)8)\\\\d{4}\",,,,\"7584305678\",,,,[7]],[,,\"758(?:28[4-7]|384|4(?:6[01]|8[4-9])|5(?:1[89]|20|84)|7(?:1[2-9]|2\\\\d|3[0-3])|812)\\\\d{4}\",,,,\"7582845678\",,,,[7]],[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",,,,\"8002123456\"],[,,\"900[2-9]\\\\d{6}\",,,,\"9002123456\"],[,,,,,,,,,[-1]],\n[,,\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\\\d{6}\",,,,\"5002345678\"],[,,,,,,,,,[-1]],\"LC\",1,\"011\",\"1\",,,\"1|([2-8]\\\\d{6})$\",\"758$1\",,,,,[,,,,,,,,,[-1]],,\"758\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],LI:[,[,,\"[68]\\\\d{8}|(?:[2378]\\\\d|90)\\\\d{5}\",,,,,,,[7,9]],[,,\"(?:2(?:01|1[27]|2[02]|3\\\\d|6[02-578]|96)|3(?:[24]0|33|7[0135-7]|8[048]|9[0269]))\\\\d{4}\",\n,,,\"2345678\",,,[7]],[,,\"(?:6(?:(?:4[5-9]|5[0-4])\\\\d|6(?:[0245]\\\\d|[17]0|3[7-9]))\\\\d|7(?:[37-9]\\\\d|42|56))\\\\d{4}\",,,,\"660234567\"],[,,\"8002[28]\\\\d\\\\d|80(?:05\\\\d|9)\\\\d{4}\",,,,\"8002222\"],[,,\"90(?:02[258]|1(?:23|3[14])|66[136])\\\\d\\\\d\",,,,\"9002222\",,,[7]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"LI\",423,\"00\",\"0\",,,\"0|(1001)\",,,,[[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"[2379]|8(?:0[09]|7)\",\"[2379]|8(?:0(?:02|9)|7)\"],,\"$CC $1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"]],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\n\"$1 $2 $3\",[\"69\"],,\"$CC $1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"6\"],,\"$CC $1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"870(?:28|87)\\\\d\\\\d\",,,,\"8702812\",,,[7]],,,[,,\"697(?:42|56|[78]\\\\d)\\\\d{4}\",,,,\"697861234\",,,[9]]],LK:[,[,,\"[1-9]\\\\d{8}\",,,,,,,[9],[7]],[,,\"(?:12[2-9]|602|8[12]\\\\d|9(?:1\\\\d|22|9[245]))\\\\d{6}|(?:11|2[13-7]|3[1-8]|4[157]|5[12457]|6[35-7])[2-57]\\\\d{6}\",,,,\"112345678\",,,,[7]],[,,\"7(?:[0-25-8]\\\\d|4[0-4])\\\\d{6}\",,,,\"712345678\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,\n,,,,,[-1]],[,,,,,,,,,[-1]],\"LK\",94,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[1-689]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"1973\\\\d{5}\",,,,\"197312345\"],,,[,,,,,,,,,[-1]]],LR:[,[,,\"(?:2|33|5\\\\d|77|88)\\\\d{7}|[4-6]\\\\d{6}\",,,,,,,[7,8,9]],[,,\"(?:2\\\\d{3}|33333)\\\\d{4}\",,,,\"21234567\",,,[8,9]],[,,\"(?:(?:330|555|(?:77|88)\\\\d)\\\\d|4[67])\\\\d{5}|[56]\\\\d{6}\",,,,\"770123456\",,,[7,9]],[,,,,,,,,,[-1]],[,,\"332(?:02|[34]\\\\d)\\\\d{4}\",,,,\"332021234\",\n,,[9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"LR\",231,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[4-6]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[3578]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],LS:[,[,,\"(?:[256]\\\\d\\\\d|800)\\\\d{5}\",,,,,,,[8]],[,,\"2\\\\d{7}\",,,,\"22123456\"],[,,\"[56]\\\\d{7}\",,,,\"50123456\"],[,,\"800[256]\\\\d{4}\",,,,\"80021234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,\n,[-1]],[,,,,,,,,,[-1]],\"LS\",266,\"00\",,,,,,,,[[,\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[2568]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],LT:[,[,,\"(?:[3469]\\\\d|52|[78]0)\\\\d{6}\",,,,,,,[8]],[,,\"(?:3[1478]|4[124-6]|52)\\\\d{6}\",,,,\"31234567\"],[,,\"6\\\\d{7}\",,,,\"61234567\"],[,,\"80[02]\\\\d{5}\",,,,\"80012345\"],[,,\"9(?:0[0239]|10)\\\\d{5}\",,,,\"90012345\"],[,,\"808\\\\d{5}\",,,,\"80812345\"],[,,\"70[05]\\\\d{5}\",,,,\"70012345\"],[,,\"[89]01\\\\d{5}\",,,,\"80123456\"],\"LT\",370,\"00\",\"8\",,,\"[08]\",,,,[[,\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\n\"$1 $2 $3\",[\"52[0-7]\"],\"(8-$1)\",,1],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"[7-9]\"],\"8 $1\",,1],[,\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"37|4(?:[15]|6[1-8])\"],\"(8-$1)\",,1],[,\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[3-6]\"],\"(8-$1)\",,1]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"70[67]\\\\d{5}\",,,,\"70712345\"],,,[,,,,,,,,,[-1]]],LU:[,[,,\"35[013-9]\\\\d{4,8}|6\\\\d{8}|35\\\\d{2,4}|(?:[2457-9]\\\\d|3[0-46-9])\\\\d{2,9}\",,,,,,,[4,5,6,7,8,9,10,11]],[,,\"(?:35[013-9]|80[2-9]|90[89])\\\\d{1,8}|(?:2[2-9]|3[0-46-9]|[457]\\\\d|8[13-9]|9[2-579])\\\\d{2,9}\",\n,,,\"27123456\"],[,,\"6(?:[269][18]|5[1568]|7[189]|81)\\\\d{6}\",,,,\"628123456\",,,[9]],[,,\"800\\\\d{5}\",,,,\"80012345\",,,[8]],[,,\"90[015]\\\\d{5}\",,,,\"90012345\",,,[8]],[,,\"801\\\\d{5}\",,,,\"80112345\",,,[8]],[,,,,,,,,,[-1]],[,,\"20(?:1\\\\d{5}|[2-689]\\\\d{1,7})\",,,,\"20201234\",,,[4,5,6,7,8,9,10]],\"LU\",352,\"00\",,,,\"(15(?:0[06]|1[12]|[35]5|4[04]|6[26]|77|88|99)\\\\d)\",,,,[[,\"(\\\\d{2})(\\\\d{3})\",\"$1 $2\",[\"2(?:0[2-689]|[2-9])|[3-57]|8(?:0[2-9]|[13-9])|9(?:0[89]|[2-579])\"],,\"$CC $1\"],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"2(?:0[2-689]|[2-9])|[3-57]|8(?:0[2-9]|[13-9])|9(?:0[89]|[2-579])\"],\n,\"$CC $1\"],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"20[2-689]\"],,\"$CC $1\"],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{1,2})\",\"$1 $2 $3 $4\",[\"2(?:[0367]|4[3-8])\"],,\"$CC $1\"],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"80[01]|90[015]\"],,\"$CC $1\"],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"20\"],,\"$CC $1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"6\"],,\"$CC $1\"],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{1,2})\",\"$1 $2 $3 $4 $5\",[\"2(?:[0367]|4[3-8])\"],,\"$CC $1\"],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{1,5})\",\"$1 $2 $3 $4\",\n[\"[3-57]|8[13-9]|9(?:0[89]|[2-579])|(?:2|80)[2-9]\"],,\"$CC $1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],LV:[,[,,\"(?:[268]\\\\d|90)\\\\d{6}\",,,,,,,[8]],[,,\"6\\\\d{7}\",,,,\"63123456\"],[,,\"2\\\\d{7}\",,,,\"21234567\"],[,,\"80\\\\d{6}\",,,,\"80123456\"],[,,\"90\\\\d{6}\",,,,\"90123456\"],[,,\"81\\\\d{6}\",,,,\"81123456\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"LV\",371,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[269]|8[01]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],\nLY:[,[,,\"[2-9]\\\\d{8}\",,,,,,,[9],[7]],[,,\"(?:2(?:0[56]|[1-6]\\\\d|7[124579]|8[124])|3(?:1\\\\d|2[2356])|4(?:[17]\\\\d|2[1-357]|5[2-4]|8[124])|5(?:[1347]\\\\d|2[1-469]|5[13-5]|8[1-4])|6(?:[1-479]\\\\d|5[2-57]|8[1-5])|7(?:[13]\\\\d|2[13-79])|8(?:[124]\\\\d|5[124]|84))\\\\d{6}\",,,,\"212345678\",,,,[7]],[,,\"9[1-6]\\\\d{7}\",,,,\"912345678\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"LY\",218,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{2})(\\\\d{7})\",\"$1-$2\",[\"[2-9]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],\n[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],MA:[,[,,\"[5-8]\\\\d{8}\",,,,,,,[9]],[,,\"5(?:29(?:[189][05]|2[29]|3[01])|38(?:8[057]|9[05]))\\\\d{4}|5(?:2(?:[0-25-7]\\\\d|3[1-578]|4[02-46-8]|8[0235-7]|90)|3(?:[0-47]\\\\d|5[02-9]|6[02-8]|80|9[3-9])|(?:4[067]|5[03])\\\\d)\\\\d{5}\",,,,\"520123456\"],[,,\"(?:6(?:[0-79]\\\\d|8[0-247-9])|7(?:[017]\\\\d|6[0-367]))\\\\d{6}\",,,,\"650123456\"],[,,\"80\\\\d{7}\",,,,\"801234567\"],[,,\"89\\\\d{7}\",,,,\"891234567\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"592(?:4[0-2]|93)\\\\d{4}\",,,,\"592401234\"],\"MA\",212,\"00\",\"0\",\n,,\"0\",,,,[[,\"(\\\\d{5})(\\\\d{4})\",\"$1-$2\",[\"5(?:29|38)\",\"5(?:29|38)[89]\",\"5(?:29|38)[89]0\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"5[45]\"],\"0$1\"],[,\"(\\\\d{4})(\\\\d{5})\",\"$1-$2\",[\"5(?:2[2-489]|3[5-9]|9)|892\",\"5(?:2(?:[2-49]|8[235-9])|3[5-9]|9)|892\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{7})\",\"$1-$2\",[\"8\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{6})\",\"$1-$2\",[\"[5-7]\"],\"0$1\"]],,[,,,,,,,,,[-1]],1,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],MC:[,[,,\"(?:[3489]|6\\\\d)\\\\d{7}\",,,,,,,[8,9]],[,,\"(?:870|9[2-47-9]\\\\d)\\\\d{5}\",\n,,,\"99123456\",,,[8]],[,,\"4(?:[46]\\\\d|5[1-9])\\\\d{5}|(?:3|6\\\\d)\\\\d{7}\",,,,\"612345678\"],[,,\"(?:800|90\\\\d)\\\\d{5}\",,,,\"90123456\",,,[8]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"MC\",377,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{3})(\\\\d{3})(\\\\d{2})\",\"$1 $2 $3\",[\"87\"]],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"4\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[389]\"]],[,\"(\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4 $5\",[\"6\"],\"0$1\"]],[[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"4\"],\n\"0$1\"],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[389]\"]],[,\"(\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4 $5\",[\"6\"],\"0$1\"]],[,,,,,,,,,[-1]],,,[,,\"8[07]0\\\\d{5}\",,,,,,,[8]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],MD:[,[,,\"(?:[235-7]\\\\d|[89]0)\\\\d{6}\",,,,,,,[8]],[,,\"(?:(?:2[1-9]|3[1-79])\\\\d|5(?:33|5[257]))\\\\d{5}\",,,,\"22212345\"],[,,\"562\\\\d{5}|(?:6\\\\d|7[16-9])\\\\d{6}\",,,,\"62112345\"],[,,\"800\\\\d{5}\",,,,\"80012345\"],[,,\"90[056]\\\\d{5}\",,,,\"90012345\"],[,,\"808\\\\d{5}\",,,,\"80812345\"],[,,,,,,,,,[-1]],\n[,,\"3[08]\\\\d{6}\",,,,\"30123456\"],\"MD\",373,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[89]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"22|3\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"[25-7]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"803\\\\d{5}\",,,,\"80312345\"],,,[,,,,,,,,,[-1]]],ME:[,[,,\"(?:20|[3-79]\\\\d)\\\\d{6}|80\\\\d{6,7}\",,,,,,,[8,9],[6]],[,,\"(?:20[2-8]|3(?:[0-2][2-7]|3[24-7])|4(?:0[2-467]|1[2467])|5(?:0[2467]|1[24-7]|2[2-467]))\\\\d{5}\",,,,\"30234567\",,,[8],[6]],[,,\"6(?:[07-9]\\\\d|3[024]|6[0-25])\\\\d{5}\",\n,,,\"67622901\",,,[8]],[,,\"80(?:[0-2578]|9\\\\d)\\\\d{5}\",,,,\"80080002\"],[,,\"9(?:4[1568]|5[178])\\\\d{5}\",,,,\"94515151\",,,[8]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"78[1-49]\\\\d{5}\",,,,\"78108780\",,,[8]],\"ME\",382,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[2-9]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"77[1-9]\\\\d{5}\",,,,\"77273012\",,,[8]],,,[,,,,,,,,,[-1]]],MF:[,[,,\"(?:590|(?:69|80)\\\\d|976)\\\\d{6}\",,,,,,,[9]],[,,\"590(?:0[079]|[14]3|[27][79]|30|5[0-268]|87)\\\\d{4}\",,,,\"590271234\"],[,,\"69(?:0\\\\d\\\\d|1(?:2[2-9]|3[0-5]))\\\\d{4}\",\n,,,\"690001234\"],[,,\"80[0-5]\\\\d{6}\",,,,\"800012345\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"976[01]\\\\d{5}\",,,,\"976012345\"],\"MF\",590,\"00\",\"0\",,,\"0\",,,,,,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],MG:[,[,,\"[23]\\\\d{8}\",,,,,,,[9],[7]],[,,\"2072[29]\\\\d{4}|20(?:2\\\\d|4[47]|5[3467]|6[279]|7[35]|8[268]|9[245])\\\\d{5}\",,,,\"202123456\",,,,[7]],[,,\"3[2-489]\\\\d{7}\",,,,\"321234567\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"22\\\\d{7}\",,,,\"221234567\"],\"MG\",\n261,\"00\",\"0\",,,\"0|([24-9]\\\\d{6})$\",\"20$1\",,,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{3})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[23]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],MH:[,[,,\"329\\\\d{4}|(?:[256]\\\\d|45)\\\\d{5}\",,,,,,,[7]],[,,\"(?:247|528|625)\\\\d{4}\",,,,\"2471234\"],[,,\"(?:(?:23|54)5|329|45[56])\\\\d{4}\",,,,\"2351234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"635\\\\d{4}\",,,,\"6351234\"],\"MH\",692,\"011\",\"1\",,,\"1\",,,,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[2-6]\"]]],,[,,,,,,,,\n,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],MK:[,[,,\"[2-578]\\\\d{7}\",,,,,,,[8],[6,7]],[,,\"(?:(?:2(?:62|77)0|3444)\\\\d|4[56]440)\\\\d{3}|(?:34|4[357])700\\\\d{3}|(?:2(?:[23]\\\\d|5[0-578]|6[01]|82)|3(?:1[3-68]|[23][2-68]|4[23568])|4(?:[23][2-68]|4[3-68]|5[2568]|6[25-8]|7[24-68]|8[4-68]))\\\\d{5}\",,,,\"22012345\",,,,[6,7]],[,,\"7(?:3555|4(?:60\\\\d|747)|94(?:[01]\\\\d|2[0-4]))\\\\d{3}|7(?:[0-25-8]\\\\d|3[1-4]|42|9[23])\\\\d{5}\",,,,\"72345678\"],[,,\"800\\\\d{5}\",,,,\"80012345\"],[,,\"5[02-9]\\\\d{6}\",,,,\"50012345\"],\n[,,\"8(?:0[1-9]|[1-9]\\\\d)\\\\d{5}\",,,,\"80123456\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"MK\",389,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"2|34[47]|4(?:[37]7|5[47]|64)\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[347]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d)(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[58]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],ML:[,[,,\"[24-9]\\\\d{7}\",,,,,,,[8]],[,,\"2(?:07[0-8]|12[67])\\\\d{4}|(?:2(?:02|1[4-689])|4(?:0[0-4]|4[1-39]))\\\\d{5}\",,,,\"20212345\"],\n[,,\"2(?:0(?:01|79)|17\\\\d)\\\\d{4}|(?:5[01]|[679]\\\\d|8[239])\\\\d{6}\",,,,\"65012345\"],[,,\"80\\\\d{6}\",,,,\"80012345\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"ML\",223,\"00\",,,,,,,,[[,\"(\\\\d{4})\",\"$1\",[\"67[057-9]|74[045]\",\"67(?:0[09]|[59]9|77|8[89])|74(?:0[02]|44|55)\"]],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[24-9]\"]]],[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[24-9]\"]]],[,,,,,,,,,[-1]],,,[,,\"80\\\\d{6}\"],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],MM:[,[,,\"1\\\\d{5,7}|95\\\\d{6}|(?:[4-7]|9[0-46-9])\\\\d{6,8}|(?:2|8\\\\d)\\\\d{5,8}\",\n,,,,,,[6,7,8,9,10],[5]],[,,\"(?:1(?:(?:2\\\\d|3[56]|[89][0-6])\\\\d|4(?:2[2-469]|39|46|6[25]|7[0-3]|83)|6)|2(?:2(?:00|8[34])|4(?:0\\\\d|2[246]|39|46|62|7[0-3]|83)|51\\\\d\\\\d)|4(?:2(?:2\\\\d\\\\d|48[0-3])|3(?:20\\\\d|4(?:70|83)|56)|420\\\\d|5470)|6(?:0(?:[23]|88\\\\d)|(?:124|[56]2\\\\d)\\\\d|247[23]|3(?:20\\\\d|470)|4(?:2[04]\\\\d|47[23])|7(?:(?:3\\\\d|8[01459])\\\\d|4(?:39|60|7[013]))))\\\\d{4}|5(?:2(?:2\\\\d{5,6}|47[023]\\\\d{4})|(?:347[23]|4(?:2(?:1|86)|470)|522\\\\d|6(?:20\\\\d|483)|7(?:20\\\\d|48[0-2])|8(?:20\\\\d|47[02])|9(?:20\\\\d|47[01]))\\\\d{4})|7(?:(?:0470|4(?:25\\\\d|470)|5(?:202|470|96\\\\d))\\\\d{4}|1(?:20\\\\d{4,5}|4(?:70|83)\\\\d{4}))|8(?:1(?:2\\\\d{5,6}|4(?:10|7[01]\\\\d)\\\\d{3})|2(?:2\\\\d{5,6}|(?:320|490\\\\d)\\\\d{3})|(?:3(?:2\\\\d\\\\d|470)|4[24-7]|5(?:2\\\\d|4[1-9]|51)\\\\d|6[23])\\\\d{4})|(?:1[2-6]\\\\d|4(?:2[24-8]|3[2-7]|[46][2-6]|5[3-5])|5(?:[27][2-8]|3[2-68]|4[24-8]|5[23]|6[2-4]|8[24-7]|9[2-7])|6(?:[19]20|42[03-6]|(?:52|7[45])\\\\d)|7(?:[04][24-8]|[15][2-7]|22|3[2-4])|8(?:1[2-689]|2[2-8]|[35]2\\\\d))\\\\d{4}|25\\\\d{5,6}|(?:2[2-9]|6(?:1[2356]|[24][2-6]|3[24-6]|5[2-4]|6[2-8]|7[235-7]|8[245]|9[24])|8(?:3[24]|5[245]))\\\\d{4}\",\n,,,\"1234567\",,,[6,7,8,9],[5]],[,,\"(?:17[01]|9(?:2(?:[0-4]|[56]\\\\d\\\\d)|(?:3(?:[0-36]|4\\\\d)|(?:6\\\\d|8[89]|9[4-8])\\\\d|7(?:3|40|[5-9]\\\\d))\\\\d|4(?:(?:[0245]\\\\d|[1379])\\\\d|88)|5[0-6])\\\\d)\\\\d{4}|9[69]1\\\\d{6}|9(?:[68]\\\\d|9[089])\\\\d{5}\",,,,\"92123456\",,,[7,8,9,10]],[,,\"80080(?:[01][1-9]|2\\\\d)\\\\d{3}\",,,,\"8008001234\",,,[10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"1333\\\\d{4}|[12]468\\\\d{4}\",,,,\"13331234\",,,[8]],\"MM\",95,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d)(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"16|2\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\n\"$1 $2 $3\",[\"[45]|6(?:0[23]|[1-689]|7[235-7])|7(?:[0-4]|5[2-7])|8[1-6]\"],\"0$1\"],[,\"(\\\\d)(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[12]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[4-7]|8[1-35]\"],\"0$1\"],[,\"(\\\\d)(\\\\d{3})(\\\\d{4,6})\",\"$1 $2 $3\",[\"9(?:2[0-4]|[35-9]|4[137-9])\"],\"0$1\"],[,\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"],\"0$1\"],[,\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"92\"],\"0$1\"],[,\"(\\\\d)(\\\\d{5})(\\\\d{4})\",\"$1 $2 $3\",[\"9\"],\"0$1\"]],,[,,,\n,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],MN:[,[,,\"[12]\\\\d{7,9}|[57-9]\\\\d{7}\",,,,,,,[8,9,10],[4,5,6]],[,,\"[12]2[1-3]\\\\d{5,6}|7(?:0[0-5]\\\\d|128)\\\\d{4}|(?:[12](?:1|27)|5[368])\\\\d{6}|[12](?:3[2-8]|4[2-68]|5[1-4689])\\\\d{6,7}\",,,,\"53123456\",,,,[4,5,6]],[,,\"(?:83[01]|920)\\\\d{5}|(?:5[05]|8[05689]|9[013-9])\\\\d{6}\",,,,\"88123456\",,,[8]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"712[0-79]\\\\d{4}|7(?:1[013-9]|[25-8]\\\\d)\\\\d{5}\",,,,\"75123456\",,,[8]],\"MN\",976,\"001\",\n\"0\",,,\"0\",,,,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"[12]1\"],\"0$1\"],[,\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[57-9]\"]],[,\"(\\\\d{3})(\\\\d{5,6})\",\"$1 $2\",[\"[12]2[1-3]\"],\"0$1\"],[,\"(\\\\d{4})(\\\\d{5,6})\",\"$1 $2\",[\"[12](?:27|3[2-8]|4[2-68]|5[1-4689])\",\"[12](?:27|3[2-8]|4[2-68]|5[1-4689])[0-3]\"],\"0$1\"],[,\"(\\\\d{5})(\\\\d{4,5})\",\"$1 $2\",[\"[12]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],MO:[,[,,\"0800\\\\d{3}|(?:28|[68]\\\\d)\\\\d{6}\",,,,,,,[7,8]],[,,\"(?:28[2-9]|8(?:11|[2-57-9]\\\\d))\\\\d{5}\",\n,,,\"28212345\",,,[8]],[,,\"6800[0-79]\\\\d{3}|6(?:[235]\\\\d\\\\d|6(?:0[0-5]|[1-9]\\\\d)|8(?:0[1-9]|[14-8]\\\\d|2[5-9]|[39][0-4]))\\\\d{4}\",,,,\"66123456\",,,[8]],[,,\"0800\\\\d{3}\",,,,\"0800501\",,,[7]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"MO\",853,\"00\",,,,,,,,[[,\"(\\\\d{4})(\\\\d{3})\",\"$1 $2\",[\"0\"]],[,\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[268]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],MP:[,[,,\"[58]\\\\d{9}|(?:67|90)0\\\\d{7}\",,,,,,,[10],[7]],[,,\"670(?:2(?:3[3-7]|56|8[4-8])|32[1-38]|4(?:33|8[348])|5(?:32|55|88)|6(?:64|70|82)|78[3589]|8[3-9]8|989)\\\\d{4}\",\n,,,\"6702345678\",,,,[7]],[,,\"670(?:2(?:3[3-7]|56|8[4-8])|32[1-38]|4(?:33|8[348])|5(?:32|55|88)|6(?:64|70|82)|78[3589]|8[3-9]8|989)\\\\d{4}\",,,,\"6702345678\",,,,[7]],[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",,,,\"8002123456\"],[,,\"900[2-9]\\\\d{6}\",,,,\"9002123456\"],[,,,,,,,,,[-1]],[,,\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\\\d{6}\",\n,,,\"5002345678\"],[,,,,,,,,,[-1]],\"MP\",1,\"011\",\"1\",,,\"1|([2-9]\\\\d{6})$\",\"670$1\",,1,,,[,,,,,,,,,[-1]],,\"670\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],MQ:[,[,,\"(?:69|80)\\\\d{7}|(?:59|97)6\\\\d{6}\",,,,,,,[9]],[,,\"596(?:[04-7]\\\\d|10|2[7-9]|3[014-9]|8[09]|9[4-9])\\\\d{4}\",,,,\"596301234\"],[,,\"69(?:6(?:[0-46-9]\\\\d|5[0-6])|727)\\\\d{4}\",,,,\"696201234\"],[,,\"80[0-5]\\\\d{6}\",,,,\"800012345\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"976(?:6\\\\d|7[0-367])\\\\d{4}\",,,,\"976612345\"],\"MQ\",596,\"00\",\"0\",,,\"0\",\n,,,[[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[569]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],MR:[,[,,\"(?:[2-4]\\\\d\\\\d|800)\\\\d{5}\",,,,,,,[8]],[,,\"(?:25[08]|35\\\\d|45[1-7])\\\\d{5}\",,,,\"35123456\"],[,,\"[2-4][0-46-9]\\\\d{6}\",,,,\"22123456\"],[,,\"800\\\\d{5}\",,,,\"80012345\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"MR\",222,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",\n[\"[2-48]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],MS:[,[,,\"(?:[58]\\\\d\\\\d|664|900)\\\\d{7}\",,,,,,,[10],[7]],[,,\"6644(?:1[0-3]|91)\\\\d{4}\",,,,\"6644912345\",,,,[7]],[,,\"664(?:3(?:49|9[1-6])|49[2-6])\\\\d{4}\",,,,\"6644923456\",,,,[7]],[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",,,,\"8002123456\"],[,,\"900[2-9]\\\\d{6}\",,,,\"9002123456\"],[,,,,,,,,,[-1]],[,,\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\\\d{6}\",\n,,,\"5002345678\"],[,,,,,,,,,[-1]],\"MS\",1,\"011\",\"1\",,,\"1|([34]\\\\d{6})$\",\"664$1\",,,,,[,,,,,,,,,[-1]],,\"664\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],MT:[,[,,\"3550\\\\d{4}|(?:[2579]\\\\d\\\\d|800)\\\\d{5}\",,,,,,,[8]],[,,\"20(?:3[1-4]|6[059])\\\\d{4}|2(?:0[19]|[1-357]\\\\d|60)\\\\d{5}\",,,,\"21001234\"],[,,\"(?:7(?:210|[79]\\\\d\\\\d)|9(?:[29]\\\\d\\\\d|69[67]|8(?:1[1-3]|89|97)))\\\\d{4}\",,,,\"96961234\"],[,,\"800(?:02|[3467]\\\\d)\\\\d{3}\",,,,\"80071234\"],[,,\"5(?:0(?:0(?:37|43)|(?:6\\\\d|70|9[0168])\\\\d)|[12]\\\\d0[1-5])\\\\d{3}\",,,,\n\"50037123\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"3550\\\\d{4}\",,,,\"35501234\"],\"MT\",356,\"00\",,,,,,,,[[,\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[2357-9]\"]]],,[,,\"7117\\\\d{4}\",,,,\"71171234\"],,,[,,,,,,,,,[-1]],[,,\"501\\\\d{5}\",,,,\"50112345\"],,,[,,,,,,,,,[-1]]],MU:[,[,,\"(?:5|8\\\\d\\\\d)\\\\d{7}|[2-468]\\\\d{6}\",,,,,,,[7,8,10]],[,,\"(?:2(?:[0346-8]\\\\d|1[0-7])|4(?:[013568]\\\\d|2[4-7])|54(?:[3-5]\\\\d|71)|6\\\\d\\\\d|8(?:14|3[129]))\\\\d{4}\",,,,\"54480123\",,,[7,8]],[,,\"5(?:4(?:2[1-389]|7[1-9])|87[15-8])\\\\d{4}|5(?:2[5-9]|4[3-689]|[57]\\\\d|8[0-689]|9[0-8])\\\\d{5}\",\n,,,\"52512345\",,,[8]],[,,\"802\\\\d{7}|80[0-2]\\\\d{4}\",,,,\"8001234\",,,[7,10]],[,,\"30\\\\d{5}\",,,,\"3012345\",,,[7]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"3(?:20|9\\\\d)\\\\d{4}\",,,,\"3201234\",,,[7]],\"MU\",230,\"0(?:0|[24-7]0|3[03])\",,,,,,\"020\",,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-46]|8[013]\"]],[,\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"5\"]],[,\"(\\\\d{5})(\\\\d{5})\",\"$1 $2\",[\"8\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],MV:[,[,,\"(?:800|9[0-57-9]\\\\d)\\\\d{7}|[34679]\\\\d{6}\",,,,,,,[7,10]],[,,\"(?:3(?:0[0-3]|3[0-59])|6(?:[57][02468]|6[024-68]|8[024689]))\\\\d{4}\",\n,,,\"6701234\",,,[7]],[,,\"46[46]\\\\d{4}|(?:7\\\\d|9[13-9])\\\\d{5}\",,,,\"7712345\",,,[7]],[,,\"800\\\\d{7}\",,,,\"8001234567\",,,[10]],[,,\"900\\\\d{7}\",,,,\"9001234567\",,,[10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"MV\",960,\"0(?:0|19)\",,,,,,\"00\",,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[3467]|9[13-9]\"]],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[89]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"4[05]0\\\\d{4}\",,,,\"4001234\",,,[7]],,,[,,,,,,,,,[-1]]],MW:[,[,,\"(?:[129]\\\\d|31|77|88)\\\\d{7}|1\\\\d{6}\",,,,,,,[7,9]],[,,\"(?:1[2-9]|2[12]\\\\d\\\\d)\\\\d{5}\",\n,,,\"1234567\"],[,,\"111\\\\d{6}|(?:31|77|88|9[89])\\\\d{7}\",,,,\"991234567\",,,[9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"MW\",265,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1[2-9]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[137-9]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],MX:[,[,,\"1(?:(?:44|99)[1-9]|65[0-689])\\\\d{7}|(?:1(?:[017]\\\\d|[235][1-9]|4[0-35-9]|6[0-46-9]|8[1-79]|9[1-8])|[2-9]\\\\d)\\\\d{8}\",\n,,,,,,[10,11],[7,8]],[,,\"6571\\\\d{6}|(?:2(?:0[01]|2[1-9]|3[1-35-8]|4[13-9]|7[1-689]|8[1-578]|9[467])|3(?:1[1-79]|[2458][1-9]|3\\\\d|7[1-8]|9[1-5])|4(?:1[1-57-9]|[25-7][1-9]|3[1-8]|4\\\\d|8[1-35-9]|9[2-689])|5(?:[56]\\\\d|88|9[1-79])|6(?:1[2-68]|[2-4][1-9]|5[1-3689]|6[1-57-9]|7[1-7]|8[67]|9[4-8])|7(?:[1-467][1-9]|5[13-9]|8[1-69]|9[17])|8(?:1\\\\d|2[13-689]|3[1-6]|4[124-6]|6[1246-9]|7[1-378]|9[12479])|9(?:1[346-9]|2[1-4]|3[2-46-8]|5[1348]|6[1-9]|7[12]|8[1-8]|9\\\\d))\\\\d{7}\",,,,\"2001234567\",,,[10],[7,8]],[,,\"6571\\\\d{6}|(?:1(?:2(?:2[1-9]|3[1-35-8]|4[13-9]|7[1-689]|8[1-578]|9[467])|3(?:1[1-79]|[2458][1-9]|3\\\\d|7[1-8]|9[1-5])|4(?:1[1-57-9]|[24-7][1-9]|3[1-8]|8[1-35-9]|9[2-689])|5(?:[56]\\\\d|88|9[1-79])|6(?:1[2-68]|[2-4][1-9]|5[1-3689]|6[1-57-9]|7[1-7]|8[67]|9[4-8])|7(?:[1-467][1-9]|5[13-9]|8[1-69]|9[17])|8(?:1\\\\d|2[13-689]|3[1-6]|4[124-6]|6[1246-9]|7[1-378]|9[12479])|9(?:1[346-9]|2[1-4]|3[2-46-8]|5[1348]|[69][1-9]|7[12]|8[1-8]))|2(?:2[1-9]|3[1-35-8]|4[13-9]|7[1-689]|8[1-578]|9[467])|3(?:1[1-79]|[2458][1-9]|3\\\\d|7[1-8]|9[1-5])|4(?:1[1-57-9]|[25-7][1-9]|3[1-8]|4\\\\d|8[1-35-9]|9[2-689])|5(?:[56]\\\\d|88|9[1-79])|6(?:1[2-68]|[2-4][1-9]|5[1-3689]|6[1-57-9]|7[1-7]|8[67]|9[4-8])|7(?:[1-467][1-9]|5[13-9]|8[1-69]|9[17])|8(?:1\\\\d|2[13-689]|3[1-6]|4[124-6]|6[1246-9]|7[1-378]|9[12479])|9(?:1[346-9]|2[1-4]|3[2-46-8]|5[1348]|6[1-9]|7[12]|8[1-8]|9\\\\d))\\\\d{7}\",\n,,,\"12221234567\",,,,[7,8]],[,,\"8(?:00|88)\\\\d{7}\",,,,\"8001234567\",,,[10]],[,,\"900\\\\d{7}\",,,,\"9001234567\",,,[10]],[,,\"300\\\\d{7}\",,,,\"3001234567\",,,[10]],[,,\"500\\\\d{7}\",,,,\"5001234567\",,,[10]],[,,,,,,,,,[-1]],\"MX\",52,\"0[09]\",\"01\",,,\"0(?:[12]|4[45])|1\",,\"00\",,[[,\"(\\\\d{5})\",\"$1\",[\"53\"]],[,\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"33|5[56]|81\"],,,1],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2-9]\"],,,1],[,\"(\\\\d)(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$2 $3 $4\",[\"1(?:33|5[56]|81)\"],,,1],[,\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\n\"$2 $3 $4\",[\"1\"],,,1]],[[,\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"33|5[56]|81\"],,,1],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2-9]\"],,,1],[,\"(\\\\d)(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$2 $3 $4\",[\"1(?:33|5[56]|81)\"],,,1],[,\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$2 $3 $4\",[\"1\"],,,1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],MY:[,[,,\"1\\\\d{8,9}|(?:3\\\\d|[4-9])\\\\d{7}\",,,,,,,[8,9,10],[6,7]],[,,\"(?:3(?:2[0-36-9]|3[0-368]|4[0-278]|5[0-24-8]|6[0-467]|7[1246-9]|8\\\\d|9[0-57])\\\\d|4(?:2[0-689]|[3-79]\\\\d|8[1-35689])|5(?:2[0-589]|[3468]\\\\d|5[0-489]|7[1-9]|9[23])|6(?:2[2-9]|3[1357-9]|[46]\\\\d|5[0-6]|7[0-35-9]|85|9[015-8])|7(?:[2579]\\\\d|3[03-68]|4[0-8]|6[5-9]|8[0-35-9])|8(?:[24][2-8]|3[2-5]|5[2-7]|6[2-589]|7[2-578]|[89][2-9])|9(?:0[57]|13|[25-7]\\\\d|[3489][0-8]))\\\\d{5}\",\n,,,\"323856789\",,,[8,9],[6,7]],[,,\"1(?:1888[69]|4400|8(?:47|8[27])[0-4])\\\\d{4}|1(?:0(?:[23568]\\\\d|4[0-6]|7[016-9]|9[0-8])|1(?:[1-5]\\\\d\\\\d|6(?:0[5-9]|[1-9]\\\\d)|7(?:[0134]\\\\d|2[1-9]|5[0-6]))|(?:(?:[269]|59)\\\\d|[37][1-9]|4[235-9])\\\\d|8(?:1[23]|[236]\\\\d|4[06]|5[7-9]|7[016-9]|8[01]|9[0-8]))\\\\d{5}\",,,,\"123456789\",,,[9,10]],[,,\"1[378]00\\\\d{6}\",,,,\"1300123456\",,,[10]],[,,\"1600\\\\d{6}\",,,,\"1600123456\",,,[10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"15(?:4(?:6[0-4]\\\\d|8(?:0[125]|[17]\\\\d|21|3[01]|4[01589]|5[014]|6[02]))|6(?:32[0-6]|78\\\\d))\\\\d{4}\",\n,,,\"1546012345\",,,[10]],\"MY\",60,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1-$2 $3\",[\"[4-79]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1-$2 $3\",[\"1(?:[02469]|[378][1-9])|8\"],\"0$1\"],[,\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1-$2 $3\",[\"3\"],\"0$1\"],[,\"(\\\\d)(\\\\d{3})(\\\\d{2})(\\\\d{4})\",\"$1-$2-$3-$4\",[\"1[36-8]\"]],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1-$2 $3\",[\"15\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1-$2 $3\",[\"1\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],MZ:[,[,,\"(?:2|8\\\\d)\\\\d{7}\",\n,,,,,,[8,9]],[,,\"2(?:[1346]\\\\d|5[0-2]|[78][12]|93)\\\\d{5}\",,,,\"21123456\",,,[8]],[,,\"8[2-79]\\\\d{7}\",,,,\"821234567\",,,[9]],[,,\"800\\\\d{6}\",,,,\"800123456\",,,[9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"MZ\",258,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"2|8[2-79]\"]],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],NA:[,[,,\"[68]\\\\d{7,8}\",,,,,,,[8,9]],[,,\"64426\\\\d{3}|6(?:1(?:2[2-7]|3[01378]|4[0-4])|254|32[0237]|4(?:27|41|5[25])|52[236-8]|626|7(?:2[2-4]|30))\\\\d{4,5}|6(?:1(?:(?:0\\\\d|2[0189]|3[24-69]|4[5-9])\\\\d|17|69|7[014])|2(?:17|5[0-36-8]|69|70)|3(?:17|2[14-689]|34|6[289]|7[01]|81)|4(?:17|2[0-2]|4[06]|5[0137]|69|7[01])|5(?:17|2[0459]|69|7[01])|6(?:17|25|38|42|69|7[01])|7(?:17|2[569]|3[13]|6[89]|7[01]))\\\\d{4}\",\n,,,\"61221234\"],[,,\"(?:60|8[1245])\\\\d{7}\",,,,\"811234567\",,,[9]],[,,\"80\\\\d{7}\",,,,\"800123456\",,,[9]],[,,\"8701\\\\d{5}\",,,,\"870123456\",,,[9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"8(?:3\\\\d\\\\d|86)\\\\d{5}\",,,,\"88612345\"],\"NA\",264,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"88\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"6\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"87\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,\n[-1]],,,[,,,,,,,,,[-1]]],NC:[,[,,\"(?:050|[2-57-9]\\\\d\\\\d)\\\\d{3}\",,,,,,,[6]],[,,\"(?:2[03-9]|3[0-5]|4[1-7]|88)\\\\d{4}\",,,,\"201234\"],[,,\"(?:5[0-4]|[79]\\\\d|8[0-79])\\\\d{4}\",,,,\"751234\"],[,,\"050\\\\d{3}\",,,,\"050012\"],[,,\"36\\\\d{4}\",,,,\"366711\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"NC\",687,\"00\",,,,,,,,[[,\"(\\\\d{3})\",\"$1\",[\"5[6-8]\"]],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1.$2.$3\",[\"[02-57-9]\"]]],[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1.$2.$3\",[\"[02-57-9]\"]]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,\n,,,,,,,,[-1]]],NE:[,[,,\"[027-9]\\\\d{7}\",,,,,,,[8]],[,,\"2(?:0(?:20|3[1-8]|4[13-5]|5[14]|6[14578]|7[1-578])|1(?:4[145]|5[14]|6[14-68]|7[169]|88))\\\\d{4}\",,,,\"20201234\"],[,,\"(?:23|7[04]|[89]\\\\d)\\\\d{6}\",,,,\"93123456\"],[,,\"08\\\\d{6}\",,,,\"08123456\"],[,,\"09\\\\d{6}\",,,,\"09123456\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"NE\",227,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"08\"]],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[089]|2[013]|7[04]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,\n,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],NF:[,[,,\"[13]\\\\d{5}\",,,,,,,[6],[5]],[,,\"(?:1(?:06|17|28|39)|3[0-2]\\\\d)\\\\d{3}\",,,,\"106609\",,,,[5]],[,,\"(?:14|3[58])\\\\d{4}\",,,,\"381234\",,,,[5]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"NF\",672,\"00\",,,,\"([0-258]\\\\d{4})$\",\"3$1\",,,[[,\"(\\\\d{2})(\\\\d{4})\",\"$1 $2\",[\"1[0-3]\"]],[,\"(\\\\d)(\\\\d{5})\",\"$1 $2\",[\"[13]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],NG:[,[,,\"(?:[124-7]|9\\\\d{3})\\\\d{6}|[1-9]\\\\d{7}|[78]\\\\d{9,13}\",\n,,,,,,[7,8,10,11,12,13,14],[5,6]],[,,\"(?:(?:[1-356]\\\\d|4[02-8]|8[2-9])\\\\d|9(?:0[3-9]|[1-9]\\\\d))\\\\d{5}|7(?:0(?:[013-689]\\\\d|2[0-24-9])\\\\d{3,4}|[1-79]\\\\d{6})|(?:[12]\\\\d|4[147]|5[14579]|6[1578]|7[1-3578])\\\\d{5}\",,,,\"18040123\",,,[7,8],[5,6]],[,,\"(?:702[0-24-9]|8(?:01|19)[01])\\\\d{6}|(?:70[13-689]|8(?:0[2-9]|1[0-8])|9(?:0[1-9]|1[2356]))\\\\d{7}\",,,,\"8021234567\",,,[10]],[,,\"800\\\\d{7,11}\",,,,\"80017591759\",,,[10,11,12,13,14]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"NG\",234,\"009\",\"0\",\n,,\"0\",,,,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"78\"],\"0$1\"],[,\"(\\\\d)(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[12]|9(?:0[3-9]|[1-9])\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{2,3})\",\"$1 $2 $3\",[\"[3-7]|8[2-9]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[7-9]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{4})(\\\\d{4,5})\",\"$1 $2 $3\",[\"[78]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{5})(\\\\d{5,6})\",\"$1 $2 $3\",[\"[78]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"700\\\\d{7,11}\",,,,\"7001234567\",,,[10,11,12,13,14]],,,[,,,,,,,,,[-1]]],NI:[,[,,\"(?:1800|[25-8]\\\\d{3})\\\\d{4}\",\n,,,,,,[8]],[,,\"2\\\\d{7}\",,,,\"21234567\"],[,,\"(?:5(?:5[0-7]|[78]\\\\d)|6(?:20|3[035]|4[045]|5[05]|77|8[1-9]|9[059])|(?:7[5-8]|8\\\\d)\\\\d)\\\\d{5}\",,,,\"81234567\"],[,,\"1800\\\\d{4}\",,,,\"18001234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"NI\",505,\"00\",,,,,,,,[[,\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[125-8]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],NL:[,[,,\"(?:[124-7]\\\\d\\\\d|3(?:[02-9]\\\\d|1[0-8]))\\\\d{6}|8\\\\d{6,9}|9\\\\d{6,10}|1\\\\d{4,5}\",,,,,,,[5,6,7,8,9,10,11]],[,,\"(?:1(?:[035]\\\\d|1[13-578]|6[124-8]|7[24]|8[0-467])|2(?:[0346]\\\\d|2[2-46-9]|5[125]|9[479])|3(?:[03568]\\\\d|1[3-8]|2[01]|4[1-8])|4(?:[0356]\\\\d|1[1-368]|7[58]|8[15-8]|9[23579])|5(?:[0358]\\\\d|[19][1-9]|2[1-57-9]|4[13-8]|6[126]|7[0-3578])|7\\\\d\\\\d)\\\\d{6}\",\n,,,\"101234567\",,,[9]],[,,\"(?:6[1-58]|970\\\\d)\\\\d{7}\",,,,\"612345678\",,,[9,11]],[,,\"800\\\\d{4,7}\",,,,\"8001234\",,,[7,8,9,10]],[,,\"90[069]\\\\d{4,7}\",,,,\"9061234\",,,[7,8,9,10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"(?:85|91)\\\\d{7}\",,,,\"851234567\",,,[9]],\"NL\",31,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{4})\",\"$1\",[\"1[238]|[34]\"]],[,\"(\\\\d{2})(\\\\d{3,4})\",\"$1 $2\",[\"14\"]],[,\"(\\\\d{6})\",\"$1\",[\"1\"]],[,\"(\\\\d{3})(\\\\d{4,7})\",\"$1 $2\",[\"[89]0\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"66\"],\"0$1\"],[,\"(\\\\d)(\\\\d{8})\",\"$1 $2\",[\"6\"],\"0$1\"],[,\n\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1[16-8]|2[259]|3[124]|4[17-9]|5[124679]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[1-578]|91\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{5})\",\"$1 $2 $3\",[\"9\"],\"0$1\"]],[[,\"(\\\\d{3})(\\\\d{4,7})\",\"$1 $2\",[\"[89]0\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"66\"],\"0$1\"],[,\"(\\\\d)(\\\\d{8})\",\"$1 $2\",[\"6\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1[16-8]|2[259]|3[124]|4[17-9]|5[124679]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[1-578]|91\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{5})\",\n\"$1 $2 $3\",[\"9\"],\"0$1\"]],[,,\"66\\\\d{7}\",,,,\"662345678\",,,[9]],,,[,,\"140(?:1[035]|2[0346]|3[03568]|4[0356]|5[0358]|8[458])|140(?:1[16-8]|2[259]|3[124]|4[17-9]|5[124679]|7)\\\\d\",,,,,,,[5,6]],[,,\"140(?:1[035]|2[0346]|3[03568]|4[0356]|5[0358]|8[458])|(?:140(?:1[16-8]|2[259]|3[124]|4[17-9]|5[124679]|7)|8[478]\\\\d{6})\\\\d\",,,,\"14020\",,,[5,6,9]],,,[,,,,,,,,,[-1]]],NO:[,[,,\"(?:0|[2-9]\\\\d{3})\\\\d{4}\",,,,,,,[5,8]],[,,\"(?:2[1-4]|3[1-3578]|5[1-35-7]|6[1-4679]|7[0-8])\\\\d{6}\",,,,\"21234567\",,,[8]],[,,\"(?:4[015-8]|59|9\\\\d)\\\\d{6}\",\n,,,\"40612345\",,,[8]],[,,\"80[01]\\\\d{5}\",,,,\"80012345\",,,[8]],[,,\"82[09]\\\\d{5}\",,,,\"82012345\",,,[8]],[,,\"810(?:0[0-6]|[2-8]\\\\d)\\\\d{3}\",,,,\"81021234\",,,[8]],[,,\"880\\\\d{5}\",,,,\"88012345\",,,[8]],[,,\"85[0-5]\\\\d{5}\",,,,\"85012345\",,,[8]],\"NO\",47,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"[489]|59\"]],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[235-7]\"]]],,[,,,,,,,,,[-1]],1,\"[02-689]|7[0-8]\",[,,,,,,,,,[-1]],[,,\"(?:0[2-9]|81(?:0(?:0[7-9]|1\\\\d)|5\\\\d\\\\d))\\\\d{3}\",,,,\"02000\"],,,[,,\"81[23]\\\\d{5}\",\n,,,\"81212345\",,,[8]]],NP:[,[,,\"(?:1\\\\d|9)\\\\d{9}|[1-9]\\\\d{7}\",,,,,,,[8,10,11],[6,7]],[,,\"(?:1[0-6]\\\\d|99[02-6])\\\\d{5}|(?:2[13-79]|3[135-8]|4[146-9]|5[135-7]|6[13-9]|7[15-9]|8[1-46-9]|9[1-7])[2-6]\\\\d{5}\",,,,\"14567890\",,,[8],[6,7]],[,,\"9(?:6[0-3]|7[24-6]|8[0-24-68])\\\\d{7}\",,,,\"9841234567\",,,[10]],[,,\"1(?:66001|800\\\\d\\\\d)\\\\d{5}\",,,,\"16600101234\",,,[11]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"NP\",977,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d)(\\\\d{7})\",\"$1-$2\",[\"1[2-6]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{6})\",\n\"$1-$2\",[\"1[01]|[2-8]|9(?:[1-579]|6[2-6])\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{7})\",\"$1-$2\",[\"9\"]],[,\"(\\\\d{4})(\\\\d{2})(\\\\d{5})\",\"$1-$2-$3\",[\"1\"]]],[[,\"(\\\\d)(\\\\d{7})\",\"$1-$2\",[\"1[2-6]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{6})\",\"$1-$2\",[\"1[01]|[2-8]|9(?:[1-579]|6[2-6])\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{7})\",\"$1-$2\",[\"9\"]]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],NR:[,[,,\"(?:444|(?:55|8\\\\d)\\\\d|666)\\\\d{4}\",,,,,,,[7]],[,,\"444\\\\d{4}\",,,,\"4441234\"],[,,\"(?:55[3-9]|666|8\\\\d\\\\d)\\\\d{4}\",,,,\"5551234\"],[,,,,,,,,,[-1]],\n[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"NR\",674,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[4-68]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],NU:[,[,,\"(?:[47]|888\\\\d)\\\\d{3}\",,,,,,,[4,7]],[,,\"[47]\\\\d{3}\",,,,\"7012\",,,[4]],[,,\"888[4-9]\\\\d{3}\",,,,\"8884012\",,,[7]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"NU\",683,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"8\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\n,,[,,,,,,,,,[-1]]],NZ:[,[,,\"[29]\\\\d{7,9}|50\\\\d{5}(?:\\\\d{2,3})?|6[0-35-9]\\\\d{6}|7\\\\d{7,8}|8\\\\d{4,9}|(?:11\\\\d|[34])\\\\d{7}\",,,,,,,[5,6,7,8,9,10]],[,,\"24099\\\\d{3}|(?:3[2-79]|[49][2-9]|6[235-9]|7[2-57-9])\\\\d{6}\",,,,\"32345678\",,,[8],[7]],[,,\"2[0-27-9]\\\\d{7,8}|21\\\\d{6}\",,,,\"211234567\",,,[8,9,10]],[,,\"508\\\\d{6,7}|80\\\\d{6,8}\",,,,\"800123456\",,,[8,9,10]],[,,\"(?:11\\\\d{5}|50(?:0[08]|30|66|77|88))\\\\d{3}|90\\\\d{6,8}\",,,,\"900123456\",,,[7,8,9,10]],[,,,,,,,,,[-1]],[,,\"70\\\\d{7}\",,,,\"701234567\",,,[9]],[,,,,,,,,,[-1]],\n\"NZ\",64,\"0(?:0|161)\",\"0\",,,\"0\",,\"00\",,[[,\"(\\\\d{2})(\\\\d{3,8})\",\"$1 $2\",[\"8[1-579]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2,3})\",\"$1 $2 $3\",[\"50[036-8]|[89]0\",\"50(?:[0367]|88)|[89]0\"],\"0$1\"],[,\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1-$2 $3\",[\"24|[346]|7[2-57-9]|9[2-9]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"2(?:10|74)|[59]|80\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"1|2[028]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3,5})\",\"$1 $2 $3\",[\"2(?:[169]|7[0-35-9])|7|86\"],\"0$1\"]],,[,,\"[28]6\\\\d{6,7}\",,,,\"26123456\",\n,,[8,9]],,,[,,,,,,,,,[-1]],[,,\"8(?:1[6-9]|22|3\\\\d|4[045]|5[459]|7[0-3579]|90)\\\\d{2,7}\",,,,\"83012378\"],,,[,,,,,,,,,[-1]]],OM:[,[,,\"(?:1505|[279]\\\\d{3}|500)\\\\d{4}|800\\\\d{5,6}\",,,,,,,[7,8,9]],[,,\"2[2-6]\\\\d{6}\",,,,\"23123456\",,,[8]],[,,\"1505\\\\d{4}|(?:7(?:[1289]\\\\d|7[0-4])|9(?:0[1-9]|[1-9]\\\\d))\\\\d{5}\",,,,\"92123456\",,,[8]],[,,\"8007\\\\d{4,5}|(?:500|800[05])\\\\d{4}\",,,,\"80071234\"],[,,\"900\\\\d{5}\",,,,\"90012345\",,,[8]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"OM\",968,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{4,6})\",\n\"$1 $2\",[\"[58]\"]],[,\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"2\"]],[,\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[179]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],PA:[,[,,\"(?:00800|8\\\\d{3})\\\\d{6}|[68]\\\\d{7}|[1-57-9]\\\\d{6}\",,,,,,,[7,8,10,11]],[,,\"(?:1(?:0\\\\d|1[479]|2[37]|3[0137]|4[17]|5[05]|6[58]|7[0167]|8[258]|9[1389])|2(?:[0235-79]\\\\d|1[0-7]|4[013-9]|8[02-9])|3(?:[089]\\\\d|1[0-7]|2[0-5]|33|4[0-79]|5[0-35]|6[068]|7[0-8])|4(?:00|3[0-579]|4\\\\d|7[0-57-9])|5(?:[01]\\\\d|2[0-7]|[56]0|79)|7(?:0[09]|2[0-26-8]|3[03]|4[04]|5[05-9]|6[056]|7[0-24-9]|8[5-9]|90)|8(?:09|2[89]|3\\\\d|4[0-24-689]|5[014]|8[02])|9(?:0[5-9]|1[0135-8]|2[036-9]|3[35-79]|40|5[0457-9]|6[05-9]|7[04-9]|8[35-8]|9\\\\d))\\\\d{4}\",\n,,,\"2001234\",,,[7]],[,,\"(?:1[16]1|21[89]|6\\\\d{3}|8(?:1[01]|7[23]))\\\\d{4}\",,,,\"61234567\",,,[7,8]],[,,\"800\\\\d{4,5}|(?:00800|800\\\\d)\\\\d{6}\",,,,\"8001234\"],[,,\"(?:8(?:22|55|60|7[78]|86)|9(?:00|81))\\\\d{4}\",,,,\"8601234\",,,[7]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"PA\",507,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[1-57-9]\"]],[,\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"[68]\"]],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],PE:[,[,,\"(?:[14-8]|9\\\\d)\\\\d{7}\",\n,,,,,,[8,9],[6,7]],[,,\"(?:(?:4[34]|5[14])[0-8]\\\\d|7(?:173|3[0-8]\\\\d)|8(?:10[05689]|6(?:0[06-9]|1[6-9]|29)|7(?:0[569]|[56]0)))\\\\d{4}|(?:1[0-8]|4[12]|5[236]|6[1-7]|7[246]|8[2-4])\\\\d{6}\",,,,\"11234567\",,,[8],[6,7]],[,,\"9\\\\d{8}\",,,,\"912345678\",,,[9]],[,,\"800\\\\d{5}\",,,,\"80012345\",,,[8]],[,,\"805\\\\d{5}\",,,,\"80512345\",,,[8]],[,,\"801\\\\d{5}\",,,,\"80112345\",,,[8]],[,,\"80[24]\\\\d{5}\",,,,\"80212345\",,,[8]],[,,,,,,,,,[-1]],\"PE\",51,\"19(?:1[124]|77|90)00\",\"0\",\" Anexo \",,\"0\",,,,[[,\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"80\"],\"(0$1)\"],\n[,\"(\\\\d)(\\\\d{7})\",\"$1 $2\",[\"1\"],\"(0$1)\"],[,\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"[4-8]\"],\"(0$1)\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"9\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],PF:[,[,,\"4\\\\d{5}(?:\\\\d{2})?|8\\\\d{7,8}\",,,,,,,[6,8,9]],[,,\"4(?:0[4-689]|9[4-68])\\\\d{5}\",,,,\"40412345\",,,[8]],[,,\"8[7-9]\\\\d{6}\",,,,\"87123456\",,,[8]],[,,\"80[0-5]\\\\d{6}\",,,,\"800012345\",,,[9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"499\\\\d{5}\",,,,\"49901234\",,,[8]],\"PF\",689,\"00\",,,,,,,,[[,\n\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"44\"]],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"4|8[7-9]\"]],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"]]],,[,,,,,,,,,[-1]],,,[,,\"44\\\\d{4}\",,,,,,,[6]],[,,\"44\\\\d{4}\",,,,\"440123\",,,[6]],,,[,,,,,,,,,[-1]]],PG:[,[,,\"(?:180|[78]\\\\d{3})\\\\d{4}|(?:[2-589]\\\\d|64)\\\\d{5}\",,,,,,,[7,8]],[,,\"(?:(?:3[0-2]|4[257]|5[34]|9[78])\\\\d|64[1-9]|85[02-46-9])\\\\d{4}\",,,,\"3123456\",,,[7]],[,,\"(?:7\\\\d|8[18])\\\\d{6}\",,,,\"70123456\",,,[8]],[,,\"180\\\\d{4}\",,,,\"1801234\",\n,,[7]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"2(?:0[0-47]|7[568])\\\\d{4}\",,,,\"2751234\",,,[7]],\"PG\",675,\"00|140[1-3]\",,,,,,\"00\",,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"18|[2-69]|85\"]],[,\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[78]\"]]],,[,,\"27[01]\\\\d{4}\",,,,\"2700123\",,,[7]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],PH:[,[,,\"(?:[2-7]|9\\\\d)\\\\d{8}|2\\\\d{5}|(?:1800|8)\\\\d{7,9}\",,,,,,,[6,8,9,10,11,12,13],[4,5,7]],[,,\"(?:(?:2[3-8]|3[2-68]|4[2-9]|5[2-6]|6[2-58]|7[24578])\\\\d{3}|88(?:22\\\\d\\\\d|42))\\\\d{4}|(?:2|8[2-8]\\\\d\\\\d)\\\\d{5}\",\n,,,\"232345678\",,,[6,8,9,10],[4,5,7]],[,,\"(?:8(?:1[37]|9[5-8])|9(?:0[5-9]|1[0-24-9]|[235-7]\\\\d|4[2-9]|8[135-9]|9[1-9]))\\\\d{7}\",,,,\"9051234567\",,,[10]],[,,\"1800\\\\d{7,9}\",,,,\"180012345678\",,,[11,12,13]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"PH\",63,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d)(\\\\d{5})\",\"$1 $2\",[\"2\"],\"(0$1)\"],[,\"(\\\\d{4})(\\\\d{4,6})\",\"$1 $2\",[\"3(?:23|39|46)|4(?:2[3-6]|[35]9|4[26]|76)|544|88[245]|(?:52|64|86)2\",\"3(?:230|397|461)|4(?:2(?:35|[46]4|51)|396|4(?:22|63)|59[347]|76[15])|5(?:221|446)|642[23]|8(?:622|8(?:[24]2|5[13]))\"],\n\"(0$1)\"],[,\"(\\\\d{5})(\\\\d{4})\",\"$1 $2\",[\"346|4(?:27|9[35])|883\",\"3469|4(?:279|9(?:30|56))|8834\"],\"(0$1)\"],[,\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"2\"],\"(0$1)\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[3-7]|8[2-8]\"],\"(0$1)\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[89]\"],\"0$1\"],[,\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"]],[,\"(\\\\d{4})(\\\\d{1,2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3 $4\",[\"1\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],PK:[,[,,\"122\\\\d{6}|[24-8]\\\\d{10,11}|9(?:[013-9]\\\\d{8,10}|2(?:[01]\\\\d\\\\d|2(?:[06-8]\\\\d|1[01]))\\\\d{7})|(?:[2-8]\\\\d{3}|92(?:[0-7]\\\\d|8[1-9]))\\\\d{6}|[24-9]\\\\d{8}|[89]\\\\d{7}\",\n,,,,,,[8,9,10,11,12],[5,6,7]],[,,\"(?:(?:21|42)[2-9]|58[126])\\\\d{7}|(?:2[25]|4[0146-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91)[2-9]\\\\d{6,7}|(?:2(?:3[2358]|4[2-4]|9[2-8])|45[3479]|54[2-467]|60[468]|72[236]|8(?:2[2-689]|3[23578]|4[3478]|5[2356])|9(?:2[2-8]|3[27-9]|4[2-6]|6[3569]|9[25-8]))[2-9]\\\\d{5,6}\",,,,\"2123456789\",,,[9,10],[5,6,7,8]],[,,\"3(?:[0-24]\\\\d|3[0-7]|55|64)\\\\d{7}\",,,,\"3012345678\",,,[10]],[,,\"800\\\\d{5}(?:\\\\d{3})?\",,,,\"80012345\",,,[8,11]],[,,\"900\\\\d{5}\",,,,\"90012345\",,,[8]],[,,,,,,,,,[-1]],[,,\"122\\\\d{6}\",\n,,,\"122044444\",,,[9]],[,,,,,,,,,[-1]],\"PK\",92,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{3})(\\\\d{3})(\\\\d{2,7})\",\"$1 $2 $3\",[\"[89]0\"],\"0$1\"],[,\"(\\\\d{4})(\\\\d{5})\",\"$1 $2\",[\"1\"]],[,\"(\\\\d{3})(\\\\d{6,7})\",\"$1 $2\",[\"2(?:3[2358]|4[2-4]|9[2-8])|45[3479]|54[2-467]|60[468]|72[236]|8(?:2[2-689]|3[23578]|4[3478]|5[2356])|9(?:2[2-8]|3[27-9]|4[2-6]|6[3569]|9[25-8])\",\"9(?:2[3-8]|98)|(?:2(?:3[2358]|4[2-4]|9[2-8])|45[3479]|54[2-467]|60[468]|72[236]|8(?:2[2-689]|3[23578]|4[3478]|5[2356])|9(?:22|3[27-9]|4[2-6]|6[3569]|9[25-7]))[2-9]\"],\n\"(0$1)\"],[,\"(\\\\d{2})(\\\\d{7,8})\",\"$1 $2\",[\"(?:2[125]|4[0-246-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91)[2-9]\"],\"(0$1)\"],[,\"(\\\\d{5})(\\\\d{5})\",\"$1 $2\",[\"58\"],\"(0$1)\"],[,\"(\\\\d{3})(\\\\d{7})\",\"$1 $2\",[\"3\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"2[125]|4[0-246-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91\"],\"(0$1)\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"[24-9]\"],\"(0$1)\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"(?:2(?:[125]|3[2358]|4[2-4]|9[2-8])|4(?:[0-246-9]|5[3479])|5(?:[1-35-7]|4[2-467])|6(?:0[468]|[1-8])|7(?:[14]|2[236])|8(?:[16]|2[2-689]|3[23578]|4[3478]|5[2356])|9(?:1|22|3[27-9]|4[2-6]|6[3569]|9[2-7]))111\\\\d{6}\",\n,,,\"21111825888\",,,[11,12]],,,[,,,,,,,,,[-1]]],PL:[,[,,\"6\\\\d{5}(?:\\\\d{2})?|8\\\\d{9}|[1-9]\\\\d{6}(?:\\\\d{2})?\",,,,,,,[6,7,8,9,10]],[,,\"47\\\\d{7}|(?:1[2-8]|2[2-69]|3[2-4]|4[1-468]|5[24-689]|6[1-3578]|7[14-7]|8[1-79]|9[145])(?:[02-9]\\\\d{6}|1(?:[0-8]\\\\d{5}|9\\\\d{3}(?:\\\\d{2})?))\",,,,\"123456789\",,,[7,9]],[,,\"21(?:1(?:[145]\\\\d|3[1-5])|2[0-4]\\\\d)\\\\d{4}|(?:45|5[0137]|6[069]|7[2389]|88)\\\\d{7}\",,,,\"512345678\",,,[9]],[,,\"800\\\\d{6,7}\",,,,\"800123456\",,,[9,10]],[,,\"70[01346-8]\\\\d{6}\",,,,\"701234567\",,,[9]],[,,\"801\\\\d{6}\",\n,,,\"801234567\",,,[9]],[,,,,,,,,,[-1]],[,,\"39\\\\d{7}\",,,,\"391234567\",,,[9]],\"PL\",48,\"00\",,,,,,,,[[,\"(\\\\d{5})\",\"$1\",[\"19\"]],[,\"(\\\\d{3})(\\\\d{3})\",\"$1 $2\",[\"11|64\"]],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"(?:1[2-8]|2[2-69]|3[2-4]|4[1-468]|5[24-689]|6[1-3578]|7[14-7]|8[1-79]|9[145])1\",\"(?:1[2-8]|2[2-69]|3[2-4]|4[1-468]|5[24-689]|6[1-3578]|7[14-7]|8[1-79]|9[145])19\"]],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2,3})\",\"$1 $2 $3\",[\"64\"]],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"21|39|45|5[0137]|6[0469]|7[02389]|8(?:0[14]|8)\"]],\n[,\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"1[2-8]|[2-7]|8[1-79]|9[145]\"]],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"8\"]]],,[,,\"64\\\\d{4,7}\",,,,\"641234567\",,,[6,7,8,9]],,,[,,,,,,,,,[-1]],[,,\"804\\\\d{6}\",,,,\"804123456\",,,[9]],,,[,,,,,,,,,[-1]]],PM:[,[,,\"(?:[45]|80\\\\d\\\\d)\\\\d{5}\",,,,,,,[6,9]],[,,\"(?:4[1-356]|50)\\\\d{4}\",,,,\"430123\",,,[6]],[,,\"(?:4[02-4]|5[056])\\\\d{4}\",,,,\"551234\",,,[6]],[,,\"80[0-5]\\\\d{6}\",,,,\"800012345\",,,[9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"PM\",\n508,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"[45]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],PR:[,[,,\"(?:[589]\\\\d\\\\d|787)\\\\d{7}\",,,,,,,[10],[7]],[,,\"(?:787|939)[2-9]\\\\d{6}\",,,,\"7872345678\",,,,[7]],[,,\"(?:787|939)[2-9]\\\\d{6}\",,,,\"7872345678\",,,,[7]],[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",,,,\"8002345678\"],[,,\"900[2-9]\\\\d{6}\",,,,\"9002345678\"],[,,,,,,,,,[-1]],[,,\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\\\d{6}\",\n,,,\"5002345678\"],[,,,,,,,,,[-1]],\"PR\",1,\"011\",\"1\",,,\"1\",,,1,,,[,,,,,,,,,[-1]],,\"787|939\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],PS:[,[,,\"[2489]2\\\\d{6}|(?:1\\\\d|5)\\\\d{8}\",,,,,,,[8,9,10],[7]],[,,\"(?:22[2-47-9]|42[45]|82[014-68]|92[3569])\\\\d{5}\",,,,\"22234567\",,,[8],[7]],[,,\"5[69]\\\\d{7}\",,,,\"599123456\",,,[9]],[,,\"1800\\\\d{6}\",,,,\"1800123456\",,,[10]],[,,,,,,,,,[-1]],[,,\"1700\\\\d{6}\",,,,\"1700123456\",,,[10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"PS\",970,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",\n[\"[2489]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"5\"],\"0$1\"],[,\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],PT:[,[,,\"1693\\\\d{5}|(?:[26-9]\\\\d|30)\\\\d{7}\",,,,,,,[9]],[,,\"2(?:[12]\\\\d|[35][1-689]|4[1-59]|6[1-35689]|7[1-9]|8[1-69]|9[1256])\\\\d{6}\",,,,\"212345678\"],[,,\"6[0356]92(?:30|9\\\\d)\\\\d{3}|(?:(?:16|6[0356])93|9(?:[1-36]\\\\d\\\\d|480))\\\\d{5}\",,,,\"912345678\"],[,,\"80[02]\\\\d{6}\",,,,\"800123456\"],[,,\"(?:6(?:0[178]|4[68])\\\\d|76(?:0[1-57]|1[2-47]|2[237]))\\\\d{5}\",\n,,,\"760123456\"],[,,\"80(?:8\\\\d|9[1579])\\\\d{5}\",,,,\"808123456\"],[,,\"884[0-4689]\\\\d{5}\",,,,\"884123456\"],[,,\"30\\\\d{7}\",,,,\"301234567\"],\"PT\",351,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"2[12]\"]],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"16|[236-9]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"70(?:7\\\\d|8[17])\\\\d{5}\",,,,\"707123456\"],,,[,,\"600\\\\d{6}\",,,,\"600110000\"]],PW:[,[,,\"(?:[24-8]\\\\d\\\\d|345|900)\\\\d{4}\",,,,,,,[7]],[,,\"(?:2(?:55|77)|345|488|5(?:35|44|87)|6(?:22|54|79)|7(?:33|47)|8(?:24|55|76)|900)\\\\d{4}\",\n,,,\"2771234\"],[,,\"(?:(?:46|83)[0-5]|6[2-4689]0)\\\\d{4}|(?:45|77|88)\\\\d{5}\",,,,\"6201234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"PW\",680,\"01[12]\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-9]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],PY:[,[,,\"59\\\\d{4,6}|9\\\\d{5,10}|(?:[2-46-8]\\\\d|5[0-8])\\\\d{4,7}\",,,,,,,[6,7,8,9,10,11],[5]],[,,\"(?:[26]1|3[289]|4[1246-8]|7[1-3]|8[1-36])\\\\d{5,7}|(?:2(?:2[4-68]|[4-68]\\\\d|7[15]|9[1-5])|3(?:18|3[167]|4[2357]|51|[67]\\\\d)|4(?:3[12]|5[13]|9[1-47])|5(?:[1-4]\\\\d|5[02-4])|6(?:3[1-3]|44|7[1-8])|7(?:4[0-4]|5\\\\d|6[1-578]|75|8[0-8])|858)\\\\d{5,6}\",\n,,,\"212345678\",,,[7,8,9],[5,6]],[,,\"9(?:51|6[129]|[78][1-6]|9[1-5])\\\\d{6}\",,,,\"961456789\",,,[9]],[,,\"9800\\\\d{5,7}\",,,,\"98000123456\",,,[9,10,11]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"8700[0-4]\\\\d{4}\",,,,\"870012345\",,,[9]],\"PY\",595,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{3})(\\\\d{3,6})\",\"$1 $2\",[\"[2-9]0\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"[26]1|3[289]|4[1246-8]|7[1-3]|8[1-36]\"],\"(0$1)\"],[,\"(\\\\d{3})(\\\\d{4,5})\",\"$1 $2\",[\"2[279]|3[13-5]|4[359]|5|6(?:[34]|7[1-46-8])|7[46-8]|85\"],\"(0$1)\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\n\"$1 $2 $3\",[\"2[14-68]|3[26-9]|4[1246-8]|6(?:1|75)|7[1-35]|8[1-36]\"],\"(0$1)\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"87\"]],[,\"(\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"9(?:[5-79]|8[1-6])\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2-8]\"],\"0$1\"],[,\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"9\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"[2-9]0\\\\d{4,7}\",,,,\"201234567\",,,[6,7,8,9]],,,[,,,,,,,,,[-1]]],QA:[,[,,\"[2-7]\\\\d{7}|800\\\\d{4}(?:\\\\d{2})?|2\\\\d{6}\",,,,,,,[7,8,9]],[,,\"4141\\\\d{4}|(?:23|4[04])\\\\d{6}\",,,,\"44123456\",\n,,[8]],[,,\"(?:2[89]|[35-7]\\\\d)\\\\d{6}\",,,,\"33123456\",,,[8]],[,,\"800\\\\d{4}(?:\\\\d{2})?\",,,,\"8001234\",,,[7,9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"QA\",974,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"2[126]|8\"]],[,\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[2-7]\"]]],,[,,\"2(?:[12]\\\\d|61)\\\\d{4}\",,,,\"2123456\",,,[7]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],RE:[,[,,\"9769\\\\d{5}|(?:26|[68]\\\\d)\\\\d{7}\",,,,,,,[9]],[,,\"26(?:2\\\\d\\\\d|30[0-5])\\\\d{4}\",,,,\"262161234\"],[,,\"(?:69(?:2\\\\d\\\\d|3(?:0[0-46]|1[013]|2[0-2]|3[0-39]|4\\\\d|5[0-5]|6[0-6]|7[0-27]|8[0-8]|9[0-479]))|9769\\\\d)\\\\d{4}\",\n,,,\"692123456\"],[,,\"80\\\\d{7}\",,,,\"801234567\"],[,,\"89[1-37-9]\\\\d{6}\",,,,\"891123456\"],[,,\"8(?:1[019]|2[0156]|84|90)\\\\d{6}\",,,,\"810123456\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"RE\",262,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2689]\"],\"0$1\"]],,[,,,,,,,,,[-1]],1,\"26[23]|69|[89]\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],RO:[,[,,\"(?:[2378]\\\\d|90)\\\\d{7}|[23]\\\\d{5}\",,,,,,,[6,9]],[,,\"[23][13-6]\\\\d{7}|(?:2(?:19\\\\d|[3-6]\\\\d9)|31\\\\d\\\\d)\\\\d\\\\d\",,,,\"211234567\"],[,,\"7020\\\\d{5}|7(?:0[013-9]|1[0-3]|[2-7]\\\\d|8[03-8]|9[019])\\\\d{6}\",\n,,,\"712034567\",,,[9]],[,,\"800\\\\d{6}\",,,,\"800123456\",,,[9]],[,,\"90[0136]\\\\d{6}\",,,,\"900123456\",,,[9]],[,,\"801\\\\d{6}\",,,,\"801123456\",,,[9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"RO\",40,\"00\",\"0\",\" int \",,\"0\",,,,[[,\"(\\\\d{3})(\\\\d{3})\",\"$1 $2\",[\"2[3-6]\",\"2[3-6]\\\\d9\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{4})\",\"$1 $2\",[\"219|31\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[23]1\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[237-9]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"(?:37\\\\d|80[578])\\\\d{6}\",,,,\"372123456\",\n,,[9]],,,[,,,,,,,,,[-1]]],RS:[,[,,\"38[02-9]\\\\d{6,9}|6\\\\d{7,9}|90\\\\d{4,8}|38\\\\d{5,6}|(?:7\\\\d\\\\d|800)\\\\d{3,9}|(?:[12]\\\\d|3[0-79])\\\\d{5,10}\",,,,,,,[6,7,8,9,10,11,12],[4,5]],[,,\"(?:11[1-9]\\\\d|(?:2[389]|39)(?:0[2-9]|[2-9]\\\\d))\\\\d{3,8}|(?:1[02-9]|2[0-24-7]|3[0-8])[2-9]\\\\d{4,9}\",,,,\"10234567\",,,[7,8,9,10,11,12],[4,5,6]],[,,\"6(?:[0-689]|7\\\\d)\\\\d{6,7}\",,,,\"601234567\",,,[8,9,10]],[,,\"800\\\\d{3,9}\",,,,\"80012345\"],[,,\"(?:78\\\\d|90[0169])\\\\d{3,7}\",,,,\"90012345\",,,[6,7,8,9,10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,\n,,,,,,,,[-1]],\"RS\",381,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{3})(\\\\d{3,9})\",\"$1 $2\",[\"(?:2[389]|39)0|[7-9]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{5,10})\",\"$1 $2\",[\"[1-36]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"7[06]\\\\d{4,10}\",,,,\"700123456\"],,,[,,,,,,,,,[-1]]],RU:[,[,,\"8\\\\d{13}|[347-9]\\\\d{9}\",,,,,,,[10,14],[7]],[,,\"(?:3(?:0[12]|4[1-35-79]|5[1-3]|65|8[1-58]|9[0145])|4(?:01|1[1356]|2[13467]|7[1-5]|8[1-7]|9[1-689])|8(?:1[1-8]|2[01]|3[13-6]|4[0-8]|5[15]|6[1-35-79]|7[1-37-9]))\\\\d{7}\",,,,\"3011234567\",,,[10],[7]],[,,\"9\\\\d{9}\",\n,,,\"9123456789\",,,[10]],[,,\"8(?:0[04]|108\\\\d{3})\\\\d{7}\",,,,\"8001234567\"],[,,\"80[39]\\\\d{7}\",,,,\"8091234567\",,,[10]],[,,,,,,,,,[-1]],[,,\"808\\\\d{7}\",,,,\"8081234567\",,,[10]],[,,,,,,,,,[-1]],\"RU\",7,\"810\",\"8\",,,\"8\",,\"8~10\",,[[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1-$2-$3\",[\"[0-79]\"]],[,\"(\\\\d{4})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"7(?:1[0-8]|2[1-9])\",\"7(?:1(?:[0-6]2|7|8[27])|2(?:1[23]|[2-9]2))\",\"7(?:1(?:[0-6]2|7|8[27])|2(?:13[03-69]|62[013-9]))|72[1-57-9]2\"],\"8 ($1)\",,1],[,\"(\\\\d{5})(\\\\d)(\\\\d{2})(\\\\d{2})\",\n\"$1 $2 $3 $4\",[\"7(?:1[0-68]|2[1-9])\",\"7(?:1(?:[06][3-6]|[18]|2[35]|[3-5][3-5])|2(?:[13][3-5]|[24-689]|7[457]))\",\"7(?:1(?:0(?:[356]|4[023])|[18]|2(?:3[013-9]|5)|3[45]|43[013-79]|5(?:3[1-8]|4[1-7]|5)|6(?:3[0-35-9]|[4-6]))|2(?:1(?:3[178]|[45])|[24-689]|3[35]|7[457]))|7(?:14|23)4[0-8]|71(?:33|45)[1-79]\"],\"8 ($1)\",,1],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"8 ($1)\",,1],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2-$3-$4\",[\"[349]|8(?:[02-7]|1[1-8])\"],\"8 ($1)\",,1],[,\"(\\\\d{4})(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\n\"$1 $2 $3 $4\",[\"8\"],\"8 ($1)\"]],[[,\"(\\\\d{4})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"7(?:1[0-8]|2[1-9])\",\"7(?:1(?:[0-6]2|7|8[27])|2(?:1[23]|[2-9]2))\",\"7(?:1(?:[0-6]2|7|8[27])|2(?:13[03-69]|62[013-9]))|72[1-57-9]2\"],\"8 ($1)\",,1],[,\"(\\\\d{5})(\\\\d)(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"7(?:1[0-68]|2[1-9])\",\"7(?:1(?:[06][3-6]|[18]|2[35]|[3-5][3-5])|2(?:[13][3-5]|[24-689]|7[457]))\",\"7(?:1(?:0(?:[356]|4[023])|[18]|2(?:3[013-9]|5)|3[45]|43[013-79]|5(?:3[1-8]|4[1-7]|5)|6(?:3[0-35-9]|[4-6]))|2(?:1(?:3[178]|[45])|[24-689]|3[35]|7[457]))|7(?:14|23)4[0-8]|71(?:33|45)[1-79]\"],\n\"8 ($1)\",,1],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"8 ($1)\",,1],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2-$3-$4\",[\"[349]|8(?:[02-7]|1[1-8])\"],\"8 ($1)\",,1],[,\"(\\\\d{4})(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"8\"],\"8 ($1)\"]],[,,,,,,,,,[-1]],1,\"3[04-689]|[489]\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],RW:[,[,,\"(?:06|[27]\\\\d\\\\d|[89]00)\\\\d{6}\",,,,,,,[8,9]],[,,\"(?:06|2[23568]\\\\d)\\\\d{6}\",,,,\"250123456\"],[,,\"7[2389]\\\\d{7}\",,,,\"720123456\",,,[9]],[,,\"800\\\\d{6}\",,,,\"800123456\",,,[9]],[,,\n\"900\\\\d{6}\",,,,\"900123456\",,,[9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"RW\",250,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"0\"]],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[7-9]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"2\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],SA:[,[,,\"92\\\\d{7}|(?:[15]|8\\\\d)\\\\d{8}\",,,,,,,[9,10],[7]],[,,\"1(?:1\\\\d|2[24-8]|3[35-8]|4[3-68]|6[2-5]|7[235-7])\\\\d{6}\",,,,\"112345678\",,,[9],[7]],[,,\"579[01]\\\\d{5}|5(?:[013-689]\\\\d|7[0-35-8])\\\\d{6}\",\n,,,\"512345678\",,,[9]],[,,\"800\\\\d{7}\",,,,\"8001234567\",,,[10]],[,,\"925\\\\d{6}\",,,,\"925012345\",,,[9]],[,,\"920\\\\d{6}\",,,,\"920012345\",,,[9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"SA\",966,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{4})(\\\\d{5})\",\"$1 $2\",[\"9\"]],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"5\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"81\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"811\\\\d{7}\",,,,\"8110123456\",\n,,[10]],,,[,,,,,,,,,[-1]]],SB:[,[,,\"(?:[1-6]|[7-9]\\\\d\\\\d)\\\\d{4}\",,,,,,,[5,7]],[,,\"(?:1[4-79]|[23]\\\\d|4[0-2]|5[03]|6[0-37])\\\\d{3}\",,,,\"40123\",,,[5]],[,,\"48\\\\d{3}|(?:(?:7[1-9]|8[4-9])\\\\d|9(?:1[2-9]|2[013-9]|3[0-2]|[46]\\\\d|5[0-46-9]|7[0-689]|8[0-79]|9[0-8]))\\\\d{4}\",,,,\"7421234\"],[,,\"1[38]\\\\d{3}\",,,,\"18123\",,,[5]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"5[12]\\\\d{3}\",,,,\"51123\",,,[5]],\"SB\",677,\"0[01]\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"7|8[4-9]|9(?:[1-8]|9[0-8])\"]]],,[,,,,,,,,,[-1]],,,\n[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],SC:[,[,,\"800\\\\d{4}|(?:[249]\\\\d|64)\\\\d{5}\",,,,,,,[7]],[,,\"4[2-46]\\\\d{5}\",,,,\"4217123\"],[,,\"2[125-8]\\\\d{5}\",,,,\"2510123\"],[,,\"800[08]\\\\d{3}\",,,,\"8000000\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"971\\\\d{4}|(?:64|95)\\\\d{5}\",,,,\"6412345\"],\"SC\",248,\"010|0[0-2]\",,,,,,\"00\",,[[,\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[246]|9[57]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],SD:[,[,,\"[19]\\\\d{8}\",,,,,,,[9]],[,,\"1(?:5\\\\d|8[35-7])\\\\d{6}\",\n,,,\"153123456\"],[,,\"(?:1[0-2]|9[0-3569])\\\\d{7}\",,,,\"911231234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"SD\",249,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[19]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],SE:[,[,,\"(?:[26]\\\\d\\\\d|9)\\\\d{9}|[1-9]\\\\d{8}|[1-689]\\\\d{7}|[1-4689]\\\\d{6}|2\\\\d{5}\",,,,,,,[6,7,8,9,10,12]],[,,\"(?:(?:[12][136]|3[356]|4[0246]|6[03]|8\\\\d)\\\\d|90[1-9])\\\\d{4,6}|(?:1(?:2[0-35]|4[0-4]|5[0-25-9]|7[13-6]|[89]\\\\d)|2(?:2[0-7]|4[0136-8]|5[0138]|7[018]|8[01]|9[0-57])|3(?:0[0-4]|1\\\\d|2[0-25]|4[056]|7[0-2]|8[0-3]|9[023])|4(?:1[013-8]|3[0135]|5[14-79]|7[0-246-9]|8[0156]|9[0-689])|5(?:0[0-6]|[15][0-5]|2[0-68]|3[0-4]|4\\\\d|6[03-5]|7[013]|8[0-79]|9[01])|6(?:1[1-3]|2[0-4]|4[02-57]|5[0-37]|6[0-3]|7[0-2]|8[0247]|9[0-356])|9(?:1[0-68]|2\\\\d|3[02-5]|4[0-3]|5[0-4]|[68][01]|7[0135-8]))\\\\d{5,6}\",\n,,,\"8123456\",,,[7,8,9]],[,,\"7[02369]\\\\d{7}\",,,,\"701234567\",,,[9]],[,,\"20\\\\d{4,7}\",,,,\"20123456\",,,[6,7,8,9]],[,,\"649\\\\d{6}|99[1-59]\\\\d{4}(?:\\\\d{3})?|9(?:00|39|44)[1-8]\\\\d{3,6}\",,,,\"9001234567\",,,[7,8,9,10]],[,,\"77[0-7]\\\\d{6}\",,,,\"771234567\",,,[9]],[,,\"75[1-8]\\\\d{6}\",,,,\"751234567\",,,[9]],[,,,,,,,,,[-1]],\"SE\",46,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{2})(\\\\d{2,3})(\\\\d{2})\",\"$1-$2 $3\",[\"20\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"9(?:00|39|44|9)\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{2})\",\"$1-$2 $3\",[\"[12][136]|3[356]|4[0246]|6[03]|90[1-9]\"],\n\"0$1\"],[,\"(\\\\d)(\\\\d{2,3})(\\\\d{2})(\\\\d{2})\",\"$1-$2 $3 $4\",[\"8\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{2,3})(\\\\d{2})\",\"$1-$2 $3\",[\"1[2457]|2(?:[247-9]|5[0138])|3[0247-9]|4[1357-9]|5[0-35-9]|6(?:[125689]|4[02-57]|7[0-2])|9(?:[125-8]|3[02-5]|4[0-3])\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{2,3})(\\\\d{3})\",\"$1-$2 $3\",[\"9(?:00|39|44)\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{2,3})(\\\\d{2})(\\\\d{2})\",\"$1-$2 $3 $4\",[\"1[13689]|2[0136]|3[1356]|4[0246]|54|6[03]|90[1-9]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1-$2 $3 $4\",[\"10|7\"],\"0$1\"],[,\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{2})\",\n\"$1-$2 $3 $4\",[\"8\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1-$2 $3 $4\",[\"[13-5]|2(?:[247-9]|5[0138])|6(?:[124-689]|7[0-2])|9(?:[125-8]|3[02-5]|4[0-3])\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1-$2 $3 $4\",[\"9\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1-$2 $3 $4 $5\",[\"[26]\"],\"0$1\"]],[[,\"(\\\\d{2})(\\\\d{2,3})(\\\\d{2})\",\"$1 $2 $3\",[\"20\"]],[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"9(?:00|39|44|9)\"]],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{2})\",\"$1 $2 $3\",[\"[12][136]|3[356]|4[0246]|6[03]|90[1-9]\"]],[,\"(\\\\d)(\\\\d{2,3})(\\\\d{2})(\\\\d{2})\",\n\"$1 $2 $3 $4\",[\"8\"]],[,\"(\\\\d{3})(\\\\d{2,3})(\\\\d{2})\",\"$1 $2 $3\",[\"1[2457]|2(?:[247-9]|5[0138])|3[0247-9]|4[1357-9]|5[0-35-9]|6(?:[125689]|4[02-57]|7[0-2])|9(?:[125-8]|3[02-5]|4[0-3])\"]],[,\"(\\\\d{3})(\\\\d{2,3})(\\\\d{3})\",\"$1 $2 $3\",[\"9(?:00|39|44)\"]],[,\"(\\\\d{2})(\\\\d{2,3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"1[13689]|2[0136]|3[1356]|4[0246]|54|6[03]|90[1-9]\"]],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"10|7\"]],[,\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"]],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\n\"$1 $2 $3 $4\",[\"[13-5]|2(?:[247-9]|5[0138])|6(?:[124-689]|7[0-2])|9(?:[125-8]|3[02-5]|4[0-3])\"]],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"9\"]],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4 $5\",[\"[26]\"]]],[,,\"74[02-9]\\\\d{6}\",,,,\"740123456\",,,[9]],,,[,,,,,,,,,[-1]],[,,\"10[1-8]\\\\d{6}\",,,,\"102345678\",,,[9]],,,[,,\"(?:25[245]|67[3-68])\\\\d{9}\",,,,\"254123456789\",,,[12]]],SG:[,[,,\"(?:(?:1\\\\d|8)\\\\d\\\\d|7000)\\\\d{7}|[3689]\\\\d{7}\",,,,,,,[8,10,11]],[,,\"662[0-24-9]\\\\d{4}|6(?:[0-578]\\\\d|6[013-57-9]|9[0-35-9])\\\\d{5}\",\n,,,\"61234567\",,,[8]],[,,\"8(?:051|95[0-2])\\\\d{4}|(?:8(?:0[1-4]|[1-8]\\\\d|9[0-4])|9[0-8]\\\\d)\\\\d{5}\",,,,\"81234567\",,,[8]],[,,\"(?:18|8)00\\\\d{7}\",,,,\"18001234567\",,,[10,11]],[,,\"1900\\\\d{7}\",,,,\"19001234567\",,,[11]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"(?:3[12]\\\\d|666)\\\\d{5}\",,,,\"31234567\",,,[8]],\"SG\",65,\"0[0-3]\\\\d\",,,,,,,,[[,\"(\\\\d{4,5})\",\"$1\",[\"1[013-9]|77\",\"1(?:[013-8]|9(?:0[1-9]|[1-9]))|77\"]],[,\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[369]|8(?:0[1-5]|[1-9])\"]],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"]],[,\"(\\\\d{4})(\\\\d{4})(\\\\d{3})\",\n\"$1 $2 $3\",[\"7\"]],[,\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"]]],[[,\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[369]|8(?:0[1-5]|[1-9])\"]],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"]],[,\"(\\\\d{4})(\\\\d{4})(\\\\d{3})\",\"$1 $2 $3\",[\"7\"]],[,\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"]]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"7000\\\\d{7}\",,,,\"70001234567\",,,[11]],,,[,,,,,,,,,[-1]]],SH:[,[,,\"(?:[256]\\\\d|8)\\\\d{3}\",,,,,,,[4,5]],[,,\"2(?:[0-57-9]\\\\d|6[4-9])\\\\d\\\\d\",,,,\"22158\"],[,,\"[56]\\\\d{4}\",,,,\"51234\",,,[5]],[,,,,,,,,,[-1]],\n[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"262\\\\d\\\\d\",,,,\"26212\",,,[5]],\"SH\",290,\"00\",,,,,,,,,,[,,,,,,,,,[-1]],1,\"[256]\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],SI:[,[,,\"[1-7]\\\\d{7}|8\\\\d{4,7}|90\\\\d{4,6}\",,,,,,,[5,6,7,8]],[,,\"(?:[1-357][2-8]|4[24-8])\\\\d{6}\",,,,\"12345678\",,,[8],[7]],[,,\"65(?:1\\\\d|55|[67]0)\\\\d{4}|(?:[37][01]|4[0139]|51|6[489])\\\\d{6}\",,,,\"31234567\",,,[8]],[,,\"80\\\\d{4,6}\",,,,\"80123456\",,,[6,7,8]],[,,\"89[1-3]\\\\d{2,5}|90\\\\d{4,6}\",,,,\"90123456\"],[,,,,,,,,,[-1]],[,,,,,\n,,,,[-1]],[,,\"(?:59\\\\d\\\\d|8(?:1(?:[67]\\\\d|8[0-589])|2(?:0\\\\d|2[0-37-9]|8[0-2489])|3[389]\\\\d))\\\\d{4}\",,,,\"59012345\",,,[8]],\"SI\",386,\"00|10(?:22|66|88|99)\",\"0\",,,\"0\",,\"00\",,[[,\"(\\\\d{2})(\\\\d{3,6})\",\"$1 $2\",[\"8[09]|9\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"59|8\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[37][01]|4[0139]|51|6\"],\"0$1\"],[,\"(\\\\d)(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[1-57]\"],\"(0$1)\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],SJ:[,[,,\"0\\\\d{4}|(?:[489]\\\\d|[57]9)\\\\d{6}\",\n,,,,,,[5,8]],[,,\"79\\\\d{6}\",,,,\"79123456\",,,[8]],[,,\"(?:4[015-8]|59|9\\\\d)\\\\d{6}\",,,,\"41234567\",,,[8]],[,,\"80[01]\\\\d{5}\",,,,\"80012345\",,,[8]],[,,\"82[09]\\\\d{5}\",,,,\"82012345\",,,[8]],[,,\"810(?:0[0-6]|[2-8]\\\\d)\\\\d{3}\",,,,\"81021234\",,,[8]],[,,\"880\\\\d{5}\",,,,\"88012345\",,,[8]],[,,\"85[0-5]\\\\d{5}\",,,,\"85012345\",,,[8]],\"SJ\",47,\"00\",,,,,,,,,,[,,,,,,,,,[-1]],,\"79\",[,,,,,,,,,[-1]],[,,\"(?:0[2-9]|81(?:0(?:0[7-9]|1\\\\d)|5\\\\d\\\\d))\\\\d{3}\",,,,\"02000\"],,,[,,\"81[23]\\\\d{5}\",,,,\"81212345\",,,[8]]],SK:[,[,,\"[2-689]\\\\d{8}|[2-59]\\\\d{6}|[2-5]\\\\d{5}\",\n,,,,,,[6,7,9]],[,,\"(?:2(?:16|[2-9]\\\\d{3})|(?:(?:[3-5][1-8]\\\\d|819)\\\\d|601[1-5])\\\\d)\\\\d{4}|(?:2|[3-5][1-8])1[67]\\\\d{3}|[3-5][1-8]16\\\\d\\\\d\",,,,\"221234567\"],[,,\"909[1-9]\\\\d{5}|9(?:0[1-8]|1[0-24-9]|4[03-57-9]|5\\\\d)\\\\d{6}\",,,,\"912123456\",,,[9]],[,,\"800\\\\d{6}\",,,,\"800123456\",,,[9]],[,,\"9(?:00|[78]\\\\d)\\\\d{6}\",,,,\"900123456\",,,[9]],[,,\"8[5-9]\\\\d{7}\",,,,\"850123456\",,,[9]],[,,,,,,,,,[-1]],[,,\"6(?:02|5[0-4]|9[0-6])\\\\d{6}\",,,,\"690123456\",,,[9]],\"SK\",421,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d)(\\\\d{2})(\\\\d{3,4})\",\"$1 $2 $3\",\n[\"21\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2,3})\",\"$1 $2 $3\",[\"[3-5][1-8]1\",\"[3-5][1-8]1[67]\"],\"0$1\"],[,\"(\\\\d{4})(\\\\d{3})\",\"$1 $2\",[\"909\",\"9090\"],\"0$1\"],[,\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{2})\",\"$1/$2 $3 $4\",[\"2\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[689]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1/$2 $3 $4\",[\"[3-5]\"],\"0$1\"]],[[,\"(\\\\d)(\\\\d{2})(\\\\d{3,4})\",\"$1 $2 $3\",[\"21\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2,3})\",\"$1 $2 $3\",[\"[3-5][1-8]1\",\"[3-5][1-8]1[67]\"],\"0$1\"],[,\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{2})\",\n\"$1/$2 $3 $4\",[\"2\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[689]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1/$2 $3 $4\",[\"[3-5]\"],\"0$1\"]],[,,\"9090\\\\d{3}\",,,,\"9090123\",,,[7]],,,[,,\"9090\\\\d{3}|(?:602|8(?:00|[5-9]\\\\d)|9(?:00|[78]\\\\d))\\\\d{6}\",,,,,,,[7,9]],[,,\"96\\\\d{7}\",,,,\"961234567\",,,[9]],,,[,,,,,,,,,[-1]]],SL:[,[,,\"(?:[237-9]\\\\d|66)\\\\d{6}\",,,,,,,[8],[6]],[,,\"22[2-4][2-9]\\\\d{4}\",,,,\"22221234\",,,,[6]],[,,\"(?:25|3[0-5]|66|7[2-9]|8[08]|9[09])\\\\d{6}\",,,,\"25123456\"],[,,,,,,,,,[-1]],[,,,,,\n,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"SL\",232,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"[236-9]\"],\"(0$1)\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],SM:[,[,,\"(?:0549|[5-7]\\\\d)\\\\d{6}\",,,,,,,[8,10],[6]],[,,\"0549(?:8[0157-9]|9\\\\d)\\\\d{4}\",,,,\"0549886377\",,,[10],[6]],[,,\"6[16]\\\\d{6}\",,,,\"66661212\",,,[8]],[,,,,,,,,,[-1]],[,,\"7[178]\\\\d{6}\",,,,\"71123456\",,,[8]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"5[158]\\\\d{6}\",,,,\"58001110\",,,[8]],\"SM\",378,\"00\",,,\n,\"([89]\\\\d{5})$\",\"0549$1\",,,[[,\"(\\\\d{6})\",\"$1\",[\"[89]\"]],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[5-7]\"]],[,\"(\\\\d{4})(\\\\d{6})\",\"$1 $2\",[\"0\"]]],[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[5-7]\"]],[,\"(\\\\d{4})(\\\\d{6})\",\"$1 $2\",[\"0\"]]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],SN:[,[,,\"(?:[378]\\\\d|93)\\\\d{7}\",,,,,,,[9]],[,,\"3(?:0(?:1[0-2]|80)|282|3(?:8[1-9]|9[3-9])|611)\\\\d{5}\",,,,\"301012345\"],[,,\"75(?:01|[38]3)\\\\d{5}|7(?:[06-8]\\\\d|21|5[4-7]|90)\\\\d{6}\",\n,,,\"701234567\"],[,,\"800\\\\d{6}\",,,,\"800123456\"],[,,\"88[4689]\\\\d{6}\",,,,\"884123456\"],[,,\"81[02468]\\\\d{6}\",,,,\"810123456\"],[,,,,,,,,,[-1]],[,,\"(?:3(?:392|9[01]\\\\d)\\\\d|93(?:3[13]0|929))\\\\d{4}\",,,,\"933301234\"],\"SN\",221,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"]],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[379]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],SO:[,[,,\"[346-9]\\\\d{8}|[12679]\\\\d{7}|[1-5]\\\\d{6}|[1348]\\\\d{5}\",,,,,,,[6,7,8,9]],[,,\n\"(?:1\\\\d|2[0-79]|3[0-46-8]|4[0-7]|5[57-9])\\\\d{5}|(?:[134]\\\\d|8[125])\\\\d{4}\",,,,\"4012345\",,,[6,7]],[,,\"(?:(?:15|(?:3[59]|4[89]|79|8[08])\\\\d|6(?:0[5-7]|[1-9]\\\\d)|9(?:0\\\\d|[2-9]))\\\\d|2(?:4\\\\d|8))\\\\d{5}|(?:6\\\\d|7[1-9])\\\\d{6}\",,,,\"71123456\",,,[7,8,9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"SO\",252,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{2})(\\\\d{4})\",\"$1 $2\",[\"8[125]\"]],[,\"(\\\\d{6})\",\"$1\",[\"[134]\"]],[,\"(\\\\d)(\\\\d{6})\",\"$1 $2\",[\"[15]|2[0-79]|3[0-46-8]|4[0-7]\"]],[,\"(\\\\d)(\\\\d{7})\",\n\"$1 $2\",[\"24|[67]\"]],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[3478]|64|90\"]],[,\"(\\\\d{2})(\\\\d{5,7})\",\"$1 $2\",[\"1|28|6(?:0[5-7]|[1-35-9])|9[2-9]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],SR:[,[,,\"(?:[2-5]|68|[78]\\\\d)\\\\d{5}\",,,,,,,[6,7]],[,,\"(?:2[1-3]|3[0-7]|(?:4|68)\\\\d|5[2-58])\\\\d{4}\",,,,\"211234\"],[,,\"(?:7[124-7]|8[124-9])\\\\d{5}\",,,,\"7412345\",,,[7]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"56\\\\d{4}\",,,,\"561234\",,,[6]],\"SR\",597,\"00\",,,,,,,\n,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1-$2-$3\",[\"56\"]],[,\"(\\\\d{3})(\\\\d{3})\",\"$1-$2\",[\"[2-5]\"]],[,\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[6-8]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],SS:[,[,,\"[19]\\\\d{8}\",,,,,,,[9]],[,,\"1[89]\\\\d{7}\",,,,\"181234567\"],[,,\"(?:12|9[1257-9])\\\\d{7}\",,,,\"977123456\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"SS\",211,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[19]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,\n,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],ST:[,[,,\"(?:22|9\\\\d)\\\\d{5}\",,,,,,,[7]],[,,\"22\\\\d{5}\",,,,\"2221234\"],[,,\"900[5-9]\\\\d{3}|9(?:0[1-9]|[89]\\\\d)\\\\d{4}\",,,,\"9812345\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"ST\",239,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[29]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],SV:[,[,,\"[267]\\\\d{7}|[89]00\\\\d{4}(?:\\\\d{4})?\",,,,,,,[7,8,11]],[,,\"2(?:[1-6]\\\\d{3}|[79]90[034]|890[0245])\\\\d{3}\",,,,\"21234567\",\n,,[8]],[,,\"66(?:[02-9]\\\\d\\\\d|1(?:[02-9]\\\\d|16))\\\\d{3}|(?:6[0-57-9]|7\\\\d)\\\\d{6}\",,,,\"70123456\",,,[8]],[,,\"800\\\\d{4}(?:\\\\d{4})?\",,,,\"8001234\",,,[7,11]],[,,\"900\\\\d{4}(?:\\\\d{4})?\",,,,\"9001234\",,,[7,11]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"SV\",503,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[89]\"]],[,\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[267]\"]],[,\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[89]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],SX:[,[,,\"7215\\\\d{6}|(?:[58]\\\\d\\\\d|900)\\\\d{7}\",\n,,,,,,[10],[7]],[,,\"7215(?:4[2-8]|8[239]|9[056])\\\\d{4}\",,,,\"7215425678\",,,,[7]],[,,\"7215(?:1[02]|2\\\\d|5[034679]|8[014-8])\\\\d{4}\",,,,\"7215205678\",,,,[7]],[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",,,,\"8002123456\"],[,,\"900[2-9]\\\\d{6}\",,,,\"9002123456\"],[,,,,,,,,,[-1]],[,,\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\\\d{6}\",\n,,,\"5002345678\"],[,,,,,,,,,[-1]],\"SX\",1,\"011\",\"1\",,,\"1|(5\\\\d{6})$\",\"721$1\",,,,,[,,,,,,,,,[-1]],,\"721\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],SY:[,[,,\"[1-39]\\\\d{8}|[1-5]\\\\d{7}\",,,,,,,[8,9],[6,7]],[,,\"21\\\\d{6,7}|(?:1(?:[14]\\\\d|[2356])|2[235]|3(?:[13]\\\\d|4)|4[134]|5[1-3])\\\\d{6}\",,,,\"112345678\",,,,[6,7]],[,,\"9[1-689]\\\\d{7}\",,,,\"944567890\",,,[9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"SY\",963,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",\n[\"[1-5]\"],\"0$1\",,1],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"9\"],\"0$1\",,1]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],SZ:[,[,,\"0800\\\\d{4}|(?:[237]\\\\d|900)\\\\d{6}\",,,,,,,[8,9]],[,,\"[23][2-5]\\\\d{6}\",,,,\"22171234\",,,[8]],[,,\"7[6-9]\\\\d{6}\",,,,\"76123456\",,,[8]],[,,\"0800\\\\d{4}\",,,,\"08001234\",,,[8]],[,,\"900\\\\d{6}\",,,,\"900012345\",,,[9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"70\\\\d{6}\",,,,\"70012345\",,,[8]],\"SZ\",268,\"00\",,,,,,,,[[,\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[0237]\"]],[,\"(\\\\d{5})(\\\\d{4})\",\n\"$1 $2\",[\"9\"]]],,[,,,,,,,,,[-1]],,,[,,\"0800\\\\d{4}\",,,,,,,[8]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],TA:[,[,,\"8\\\\d{3}\",,,,,,,[4]],[,,\"8\\\\d{3}\",,,,\"8999\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"TA\",290,\"00\",,,,,,,,,,[,,,,,,,,,[-1]],,\"8\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],TC:[,[,,\"(?:[58]\\\\d\\\\d|649|900)\\\\d{7}\",,,,,,,[10],[7]],[,,\"649(?:266|712|9(?:4\\\\d|50))\\\\d{4}\",,,,\"6497121234\",,,,[7]],[,,\"649(?:2(?:3[129]|4[1-79])|3\\\\d\\\\d|4[34][1-3])\\\\d{4}\",\n,,,\"6492311234\",,,,[7]],[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",,,,\"8002345678\"],[,,\"900[2-9]\\\\d{6}\",,,,\"9002345678\"],[,,,,,,,,,[-1]],[,,\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\\\d{6}\",,,,\"5002345678\"],[,,\"649(?:71[01]|966)\\\\d{4}\",,,,\"6497101234\",,,,[7]],\"TC\",1,\"011\",\"1\",,,\"1|([2-479]\\\\d{6})$\",\"649$1\",,,,,[,,,,,\n,,,,[-1]],,\"649\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],TD:[,[,,\"(?:22|[69]\\\\d|77)\\\\d{6}\",,,,,,,[8]],[,,\"22(?:[37-9]0|5[0-5]|6[89])\\\\d{4}\",,,,\"22501234\"],[,,\"(?:6[023568]|77|9\\\\d)\\\\d{6}\",,,,\"63012345\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"TD\",235,\"00|16\",,,,,,\"00\",,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2679]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],TG:[,[,,\"[279]\\\\d{7}\",,,,,,,[8]],[,,\"2(?:2[2-7]|3[23]|4[45]|55|6[67]|77)\\\\d{5}\",\n,,,\"22212345\"],[,,\"(?:7[09]|9[0-36-9])\\\\d{6}\",,,,\"90112345\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"TG\",228,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[279]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],TH:[,[,,\"(?:001800|[2-57]|[689]\\\\d)\\\\d{7}|1\\\\d{7,9}\",,,,,,,[8,9,10,13]],[,,\"(?:1[0689]|2\\\\d|3[2-9]|4[2-5]|5[2-6]|7[3-7])\\\\d{6}\",,,,\"21234567\",,,[8]],[,,\"671[0-8]\\\\d{5}|(?:14|6[1-6]|[89]\\\\d)\\\\d{7}\",,,,\"812345678\",\n,,[9]],[,,\"(?:001800\\\\d|1800)\\\\d{6}\",,,,\"1800123456\",,,[10,13]],[,,\"1900\\\\d{6}\",,,,\"1900123456\",,,[10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"6[08]\\\\d{7}\",,,,\"601234567\",,,[9]],\"TH\",66,\"00[1-9]\",\"0\",,,\"0\",,,,[[,\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[13-9]\"],\"0$1\"],[,\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],TJ:[,[,,\"(?:00|[1-57-9]\\\\d)\\\\d{7}\",,,,,,,[9],[3,5,6,7]],[,,\"(?:3(?:1[3-5]|2[245]|3[12]|4[24-7]|5[25]|72)|4(?:46|74|87))\\\\d{6}\",\n,,,\"372123456\",,,,[3,5,6,7]],[,,\"41[18]\\\\d{6}|(?:[034]0|[17][017]|2[02]|5[05]|8[08]|9\\\\d)\\\\d{7}\",,,,\"917123456\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"TJ\",992,\"810\",,,,,,\"8~10\",,[[,\"(\\\\d{6})(\\\\d)(\\\\d{2})\",\"$1 $2 $3\",[\"331\",\"3317\"]],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"[34]7|91[78]\"]],[,\"(\\\\d{4})(\\\\d)(\\\\d{4})\",\"$1 $2 $3\",[\"3[1-5]\"]],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[0-57-9]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],\nTK:[,[,,\"[2-47]\\\\d{3,6}\",,,,,,,[4,5,6,7]],[,,\"(?:2[2-4]|[34]\\\\d)\\\\d{2,5}\",,,,\"3101\"],[,,\"7[2-4]\\\\d{2,5}\",,,,\"7290\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"TK\",690,\"00\",,,,,,,,,,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],TL:[,[,,\"7\\\\d{7}|(?:[2-47]\\\\d|[89]0)\\\\d{5}\",,,,,,,[7,8]],[,,\"(?:2[1-5]|3[1-9]|4[1-4])\\\\d{5}\",,,,\"2112345\",,,[7]],[,,\"7[2-8]\\\\d{6}\",,,,\"77212345\",,,[8]],[,,\"80\\\\d{5}\",,,,\"8012345\",,,[7]],[,,\"90\\\\d{5}\",,,,\"9012345\",\n,,[7]],[,,,,,,,,,[-1]],[,,\"70\\\\d{5}\",,,,\"7012345\",,,[7]],[,,,,,,,,,[-1]],\"TL\",670,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-489]|70\"]],[,\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"7\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],TM:[,[,,\"[1-6]\\\\d{7}\",,,,,,,[8]],[,,\"(?:1(?:2\\\\d|3[1-9])|2(?:22|4[0-35-8])|3(?:22|4[03-9])|4(?:22|3[128]|4\\\\d|6[15])|5(?:22|5[7-9]|6[014-689]))\\\\d{5}\",,,,\"12345678\"],[,,\"6\\\\d{7}\",,,,\"66123456\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\n[,,,,,,,,,[-1]],\"TM\",993,\"810\",\"8\",,,\"8\",,\"8~10\",,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2-$3-$4\",[\"12\"],\"(8 $1)\"],[,\"(\\\\d{3})(\\\\d)(\\\\d{2})(\\\\d{2})\",\"$1 $2-$3-$4\",[\"[1-5]\"],\"(8 $1)\"],[,\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"6\"],\"8 $1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],TN:[,[,,\"[2-57-9]\\\\d{7}\",,,,,,,[8]],[,,\"81200\\\\d{3}|(?:3[0-2]|7\\\\d)\\\\d{6}\",,,,\"30010123\"],[,,\"3(?:001|[12]40)\\\\d{4}|(?:(?:[259]\\\\d|4[0-7])\\\\d|3(?:1[1-35]|6[0-4]|91))\\\\d{5}\",,,,\"20123456\"],[,,\"8010\\\\d{4}\",\n,,,\"80101234\"],[,,\"88\\\\d{6}\",,,,\"88123456\"],[,,\"8[12]10\\\\d{4}\",,,,\"81101234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"TN\",216,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2-57-9]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],TO:[,[,,\"(?:0800|(?:[5-8]\\\\d\\\\d|999)\\\\d)\\\\d{3}|[2-8]\\\\d{4}\",,,,,,,[5,7]],[,,\"(?:2\\\\d|3[0-8]|4[0-4]|50|6[09]|7[0-24-69]|8[05])\\\\d{3}\",,,,\"20123\",,,[5]],[,,\"(?:55[4-6]|6(?:[09]\\\\d|3[02]|8[15-9])|(?:7\\\\d|8[46-9])\\\\d|999)\\\\d{4}\",,,,\"7715123\",,,[7]],\n[,,\"0800\\\\d{3}\",,,,\"0800222\",,,[7]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"55[0-37-9]\\\\d{4}\",,,,\"5510123\",,,[7]],\"TO\",676,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{3})\",\"$1-$2\",[\"[2-4]|50|6[09]|7[0-24-69]|8[05]\"]],[,\"(\\\\d{4})(\\\\d{3})\",\"$1 $2\",[\"0\"]],[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[5-9]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],TR:[,[,,\"4\\\\d{6}|8\\\\d{11,12}|(?:[2-58]\\\\d\\\\d|900)\\\\d{7}\",,,,,,,[7,10,12,13]],[,,\"(?:2(?:[13][26]|[28][2468]|[45][268]|[67][246])|3(?:[13][28]|[24-6][2468]|[78][02468]|92)|4(?:[16][246]|[23578][2468]|4[26]))\\\\d{7}\",\n,,,\"2123456789\",,,[10]],[,,\"56161\\\\d{5}|5(?:0[15-7]|1[06]|24|[34]\\\\d|5[1-59]|9[46])\\\\d{7}\",,,,\"5012345678\",,,[10]],[,,\"8(?:00\\\\d{7}(?:\\\\d{2,3})?|11\\\\d{7})\",,,,\"8001234567\",,,[10,12,13]],[,,\"(?:8[89]8|900)\\\\d{7}\",,,,\"9001234567\",,,[10]],[,,,,,,,,,[-1]],[,,\"592(?:21[12]|461)\\\\d{4}\",,,,\"5922121234\",,,[10]],[,,\"850\\\\d{7}\",,,,\"8500123456\",,,[10]],\"TR\",90,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{3})(\\\\d)(\\\\d{3})\",\"$1 $2 $3\",[\"444\"],,,1],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"512|8[01589]|90\"],\"0$1\",,1],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\n\"$1 $2 $3 $4\",[\"5(?:[0-59]|61)\",\"5(?:[0-59]|616)\",\"5(?:[0-59]|6161)\"],\"0$1\",,1],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[24][1-8]|3[1-9]\"],\"(0$1)\",,1],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{6,7})\",\"$1 $2 $3\",[\"80\"],\"0$1\",,1]],[[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"512|8[01589]|90\"],\"0$1\",,1],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"5(?:[0-59]|61)\",\"5(?:[0-59]|616)\",\"5(?:[0-59]|6161)\"],\"0$1\",,1],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[24][1-8]|3[1-9]\"],\"(0$1)\",,1],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{6,7})\",\n\"$1 $2 $3\",[\"80\"],\"0$1\",,1]],[,,\"512\\\\d{7}\",,,,\"5123456789\",,,[10]],,,[,,\"(?:444|811\\\\d{3})\\\\d{4}\",,,,,,,[7,10]],[,,\"444\\\\d{4}\",,,,\"4441444\",,,[7]],,,[,,,,,,,,,[-1]]],TT:[,[,,\"(?:[58]\\\\d\\\\d|900)\\\\d{7}\",,,,,,,[10],[7]],[,,\"868(?:2(?:0[13]|1[89]|[23]\\\\d|4[0-2])|6(?:0[7-9]|1[02-8]|2[1-9]|[3-69]\\\\d|7[0-79])|82[124])\\\\d{4}\",,,,\"8682211234\",,,,[7]],[,,\"868(?:(?:2[5-9]|3\\\\d)\\\\d|4(?:3[0-6]|[6-9]\\\\d)|6(?:20|78|8\\\\d)|7(?:0[1-9]|1[02-9]|[2-9]\\\\d))\\\\d{4}\",,,,\"8682911234\",,,,[7]],[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",\n,,,\"8002345678\"],[,,\"900[2-9]\\\\d{6}\",,,,\"9002345678\"],[,,,,,,,,,[-1]],[,,\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\\\d{6}\",,,,\"5002345678\"],[,,,,,,,,,[-1]],\"TT\",1,\"011\",\"1\",,,\"1|([2-46-8]\\\\d{6})$\",\"868$1\",,,,,[,,,,,,,,,[-1]],,\"868\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,\"868619\\\\d{4}\",,,,\"8686191234\",,,,[7]]],TV:[,[,,\n\"(?:2|7\\\\d\\\\d|90)\\\\d{4}\",,,,,,,[5,6,7]],[,,\"2[02-9]\\\\d{3}\",,,,\"20123\",,,[5]],[,,\"(?:7[01]\\\\d|90)\\\\d{4}\",,,,\"901234\",,,[6,7]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"TV\",688,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{3})\",\"$1 $2\",[\"2\"]],[,\"(\\\\d{2})(\\\\d{4})\",\"$1 $2\",[\"90\"]],[,\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"7\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],TW:[,[,,\"[2-689]\\\\d{8}|7\\\\d{9,10}|[2-8]\\\\d{7}|2\\\\d{6}\",,,,,,,[7,8,9,10,11]],[,,\"(?:2[2-8]\\\\d|370|55[01]|7[1-9])\\\\d{6}|4(?:(?:0(?:0[1-9]|[2-48]\\\\d)|1[023]\\\\d)\\\\d{4,5}|(?:[239]\\\\d\\\\d|4(?:0[56]|12|49))\\\\d{5})|6(?:[01]\\\\d{7}|4(?:0[56]|12|24|4[09])\\\\d{4,5})|8(?:(?:2(?:3\\\\d|4[0-269]|[578]0|66)|36[24-9]|90\\\\d\\\\d)\\\\d{4}|4(?:0[56]|12|24|4[09])\\\\d{4,5})|(?:2(?:2(?:0\\\\d\\\\d|4(?:0[68]|[249]0|3[0-467]|5[0-25-9]|6[0235689]))|(?:3(?:[09]\\\\d|1[0-4])|(?:4\\\\d|5[0-49]|6[0-29]|7[0-5])\\\\d)\\\\d)|(?:(?:3[2-9]|5[2-8]|6[0-35-79]|8[7-9])\\\\d\\\\d|4(?:2(?:[089]\\\\d|7[1-9])|(?:3[0-4]|[78]\\\\d|9[01])\\\\d))\\\\d)\\\\d{3}\",\n,,,\"221234567\",,,[8,9]],[,,\"(?:40001[0-2]|9[0-8]\\\\d{4})\\\\d{3}\",,,,\"912345678\",,,[9]],[,,\"80[0-79]\\\\d{6}|800\\\\d{5}\",,,,\"800123456\",,,[8,9]],[,,\"20(?:[013-9]\\\\d\\\\d|2)\\\\d{4}\",,,,\"203123456\",,,[7,9]],[,,,,,,,,,[-1]],[,,\"99\\\\d{7}\",,,,\"990123456\",,,[9]],[,,\"7010(?:[0-2679]\\\\d|3[0-7]|8[0-5])\\\\d{5}|70\\\\d{8}\",,,,\"7012345678\",,,[10,11]],\"TW\",886,\"0(?:0[25-79]|19)\",\"0\",\"#\",,\"0\",,,,[[,\"(\\\\d{2})(\\\\d)(\\\\d{4})\",\"$1 $2 $3\",[\"202\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[258]0\"],\"0$1\"],[,\"(\\\\d)(\\\\d{3,4})(\\\\d{4})\",\n\"$1 $2 $3\",[\"[23568]|4(?:0[02-48]|[1-47-9])|7[1-9]\",\"[23568]|4(?:0[2-48]|[1-47-9])|(?:400|7)[1-9]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[49]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{4})(\\\\d{4,5})\",\"$1 $2 $3\",[\"7\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"50[0-46-9]\\\\d{6}\",,,,\"500123456\",,,[9]],,,[,,,,,,,,,[-1]]],TZ:[,[,,\"(?:[26-8]\\\\d|41|90)\\\\d{7}\",,,,,,,[9]],[,,\"2[2-8]\\\\d{7}\",,,,\"222345678\"],[,,\"77[2-9]\\\\d{6}|(?:6[1-9]|7[1-689])\\\\d{7}\",,,,\"621234567\"],[,,\"80[08]\\\\d{6}\",,,,\"800123456\"],[,,\"90\\\\d{7}\",\n,,,\"900123456\"],[,,\"8(?:40|6[01])\\\\d{6}\",,,,\"840123456\"],[,,,,,,,,,[-1]],[,,\"41\\\\d{7}\",,,,\"412345678\"],\"TZ\",255,\"00[056]\",\"0\",,,\"0\",,,,[[,\"(\\\\d{3})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"[89]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[24]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[67]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,\"(?:8(?:[04]0|6[01])|90\\\\d)\\\\d{6}\"],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],UA:[,[,,\"[89]\\\\d{9}|[3-9]\\\\d{8}\",,,,,,,[9,10],[5,6,7]],[,,\"(?:3[1-8]|4[13-8]|5[1-7]|6[12459])\\\\d{7}\",,,\n,\"311234567\",,,[9],[5,6,7]],[,,\"(?:50|6[36-8]|7[1-3]|9[1-9])\\\\d{7}\",,,,\"501234567\",,,[9]],[,,\"800[1-8]\\\\d{5,6}\",,,,\"800123456\"],[,,\"900[239]\\\\d{5,6}\",,,,\"900212345\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"89[1-579]\\\\d{6}\",,,,\"891234567\",,,[9]],\"UA\",380,\"00\",\"0\",,,\"0\",,\"0~0\",,[[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"6[12][29]|(?:3[1-8]|4[136-8]|5[12457]|6[49])2|(?:56|65)[24]\",\"6[12][29]|(?:35|4[1378]|5[12457]|6[49])2|(?:56|65)[24]|(?:3[1-46-8]|46)2[013-9]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",\n[\"4[45][0-5]|5(?:0|6[37])|6(?:[12][018]|[36-8])|7|89|9[1-9]|(?:48|57)[0137-9]\",\"4[45][0-5]|5(?:0|6(?:3[14-7]|7))|6(?:[12][018]|[36-8])|7|89|9[1-9]|(?:48|57)[0137-9]\"],\"0$1\"],[,\"(\\\\d{4})(\\\\d{5})\",\"$1 $2\",[\"[3-6]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[89]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],UG:[,[,,\"800\\\\d{6}|(?:[29]0|[347]\\\\d)\\\\d{7}\",,,,,,,[9],[5,6,7]],[,,\"20(?:(?:(?:24|81)0|30[67])\\\\d|6(?:00[0-2]|30[0-4]))\\\\d{3}|(?:20(?:[017]\\\\d|2[5-9]|32|5[0-4]|6[15-9])|[34]\\\\d{3})\\\\d{5}\",\n,,,\"312345678\",,,,[5,6,7]],[,,\"726[01]\\\\d{5}|7(?:[01578]\\\\d|20|36|[46][0-4]|9[89])\\\\d{6}\",,,,\"712345678\"],[,,\"800[1-3]\\\\d{5}\",,,,\"800123456\"],[,,\"90[1-3]\\\\d{6}\",,,,\"901123456\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"UG\",256,\"00[057]\",\"0\",,,\"0\",,,,[[,\"(\\\\d{4})(\\\\d{5})\",\"$1 $2\",[\"202\",\"2024\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"[27-9]|4(?:6[45]|[7-9])\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"[34]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],US:[,[,,\"[2-9]\\\\d{9}\",\n,,,,,,[10],[7]],[,,\"5(?:05(?:[2-57-9]\\\\d\\\\d|6(?:[0-35-9]\\\\d|44))|82(?:2(?:0[0-3]|[268]2)|3(?:0[02]|22|33)|4(?:00|4[24]|65|82)|5(?:00|29|58|83)|6(?:00|66|82)|7(?:58|77)|8(?:00|42|88)|9(?:00|9[89])))\\\\d{4}|(?:2(?:0[1-35-9]|1[02-9]|2[03-589]|3[149]|4[08]|5[1-46]|6[0279]|7[0269]|8[13])|3(?:0[1-57-9]|1[02-9]|2[01356]|3[0-24679]|4[167]|5[12]|6[014]|8[056])|4(?:0[124-9]|1[02-579]|2[3-5]|3[0245]|4[023578]|58|6[349]|7[0589]|8[04])|5(?:0[1-47-9]|1[0235-8]|20|3[0149]|4[01]|5[19]|6[1-47]|7[0-5]|8[056])|6(?:0[1-35-9]|1[024-9]|2[03689]|[34][016]|5[01679]|6[0-279]|78|8[0-29])|7(?:0[1-46-8]|1[2-9]|2[04-7]|3[1247]|4[037]|5[47]|6[02359]|7[0-59]|8[156])|8(?:0[1-68]|1[02-8]|2[08]|3[0-289]|4[03578]|5[046-9]|6[02-5]|7[028])|9(?:0[1346-9]|1[02-9]|2[0589]|3[0146-8]|4[0157-9]|5[12469]|7[0-389]|8[04-69]))[2-9]\\\\d{6}\",\n,,,\"2015550123\",,,,[7]],[,,\"5(?:05(?:[2-57-9]\\\\d\\\\d|6(?:[0-35-9]\\\\d|44))|82(?:2(?:0[0-3]|[268]2)|3(?:0[02]|22|33)|4(?:00|4[24]|65|82)|5(?:00|29|58|83)|6(?:00|66|82)|7(?:58|77)|8(?:00|42|88)|9(?:00|9[89])))\\\\d{4}|(?:2(?:0[1-35-9]|1[02-9]|2[03-589]|3[149]|4[08]|5[1-46]|6[0279]|7[0269]|8[13])|3(?:0[1-57-9]|1[02-9]|2[01356]|3[0-24679]|4[167]|5[12]|6[014]|8[056])|4(?:0[124-9]|1[02-579]|2[3-5]|3[0245]|4[023578]|58|6[349]|7[0589]|8[04])|5(?:0[1-47-9]|1[0235-8]|20|3[0149]|4[01]|5[19]|6[1-47]|7[0-5]|8[056])|6(?:0[1-35-9]|1[024-9]|2[03689]|[34][016]|5[01679]|6[0-279]|78|8[0-29])|7(?:0[1-46-8]|1[2-9]|2[04-7]|3[1247]|4[037]|5[47]|6[02359]|7[0-59]|8[156])|8(?:0[1-68]|1[02-8]|2[08]|3[0-289]|4[03578]|5[046-9]|6[02-5]|7[028])|9(?:0[1346-9]|1[02-9]|2[0589]|3[0146-8]|4[0157-9]|5[12469]|7[0-389]|8[04-69]))[2-9]\\\\d{6}\",\n,,,\"2015550123\",,,,[7]],[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",,,,\"8002345678\"],[,,\"900[2-9]\\\\d{6}\",,,,\"9002345678\"],[,,,,,,,,,[-1]],[,,\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\\\d{6}\",,,,\"5002345678\"],[,,,,,,,,,[-1]],\"US\",1,\"011\",\"1\",,,\"1\",,,1,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[2-9]\"]],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\n\"($1) $2-$3\",[\"[2-9]\"],,,1]],[[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"[2-9]\"]]],[,,,,,,,,,[-1]],1,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],UY:[,[,,\"4\\\\d{9}|[1249]\\\\d{7}|(?:[49]\\\\d|80)\\\\d{5}\",,,,,,,[7,8,10]],[,,\"(?:1(?:770|987)|(?:2\\\\d|4[2-7])\\\\d\\\\d)\\\\d{4}\",,,,\"21231234\",,,[8],[7]],[,,\"9[1-9]\\\\d{6}\",,,,\"94231234\",,,[8]],[,,\"(?:4\\\\d{5}|80[05])\\\\d{4}|405\\\\d{4}\",,,,\"8001234\",,,[7,10]],[,,\"90[0-8]\\\\d{4}\",,,,\"9001234\",,,[7]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"UY\",598,\"0(?:0|1[3-9]\\\\d)\",\n\"0\",\" int. \",,\"0\",,\"00\",,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"405|8|90\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"9\"],\"0$1\"],[,\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[124]\"]],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"4\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],UZ:[,[,,\"(?:33|55|[679]\\\\d|88)\\\\d{7}\",,,,,,,[9]],[,,\"(?:6(?:1(?:22|3[124]|4[1-4]|5[1-3578]|64)|2(?:22|3[0-57-9]|41)|5(?:22|3[3-7]|5[024-8])|6\\\\d\\\\d|7(?:[23]\\\\d|7[69])|9(?:22|4[1-8]|6[135]))|7(?:0(?:5[4-9]|6[0146]|7[124-6]|9[135-8])|(?:1[12]|8\\\\d)\\\\d|2(?:22|3[13-57-9]|4[1-3579]|5[14])|3(?:2\\\\d|3[1578]|4[1-35-7]|5[1-57]|61)|4(?:2\\\\d|3[1-579]|7[1-79])|5(?:22|5[1-9]|6[1457])|6(?:22|3[12457]|4[13-8])|9(?:22|5[1-9])))\\\\d{5}\",\n,,,\"669050123\"],[,,\"(?:(?:33|88|9[0-57-9])\\\\d{3}|55(?:50[013]|90\\\\d)|6(?:1(?:2(?:2[01]|98)|35[0-4]|50\\\\d|61[23]|7(?:[01][017]|4\\\\d|55|9[5-9]))|2(?:(?:11|7\\\\d)\\\\d|2(?:[12]1|9[01379])|5(?:[126]\\\\d|3[0-4]))|5(?:19[01]|2(?:27|9[26])|(?:30|59|7\\\\d)\\\\d)|6(?:2(?:1[5-9]|2[0367]|38|41|52|60)|(?:3[79]|9[0-3])\\\\d|4(?:56|83)|7(?:[07]\\\\d|1[017]|3[07]|4[047]|5[057]|67|8[0178]|9[79]))|7(?:2(?:24|3[237]|4[5-9]|7[15-8])|5(?:7[12]|8[0589])|7(?:0\\\\d|[39][07])|9(?:0\\\\d|7[079]))|9(?:2(?:1[1267]|3[01]|5\\\\d|7[0-4])|(?:5[67]|7\\\\d)\\\\d|6(?:2[0-26]|8\\\\d)))|7(?:[07]\\\\d{3}|1(?:13[01]|6(?:0[47]|1[67]|66)|71[3-69]|98\\\\d)|2(?:2(?:2[79]|95)|3(?:2[5-9]|6[0-6])|57\\\\d|7(?:0\\\\d|1[17]|2[27]|3[37]|44|5[057]|66|88))|3(?:2(?:1[0-6]|21|3[469]|7[159])|(?:33|9[4-6])\\\\d|5(?:0[0-4]|5[579]|9\\\\d)|7(?:[0-3579]\\\\d|4[0467]|6[67]|8[078]))|4(?:2(?:29|5[0257]|6[0-7]|7[1-57])|5(?:1[0-4]|8\\\\d|9[5-9])|7(?:0\\\\d|1[024589]|2[0-27]|3[0137]|[46][07]|5[01]|7[5-9]|9[079])|9(?:7[015-9]|[89]\\\\d))|5(?:112|2(?:0\\\\d|2[29]|[49]4)|3[1568]\\\\d|52[6-9]|7(?:0[01578]|1[017]|[23]7|4[047]|[5-7]\\\\d|8[78]|9[079]))|6(?:2(?:2[1245]|4[2-4])|39\\\\d|41[179]|5(?:[349]\\\\d|5[0-2])|7(?:0[017]|[13]\\\\d|22|44|55|67|88))|9(?:22[128]|3(?:2[0-4]|7\\\\d)|57[02569]|7(?:2[05-9]|3[37]|4\\\\d|60|7[2579]|87|9[07]))))\\\\d{4}\",\n,,,\"912345678\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"UZ\",998,\"810\",\"8\",,,\"8\",,\"8~10\",,[[,\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[35-9]\"],\"8 $1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],VA:[,[,,\"0\\\\d{5,10}|3[0-8]\\\\d{7,10}|55\\\\d{8}|8\\\\d{5}(?:\\\\d{2,4})?|(?:1\\\\d|39)\\\\d{7,8}\",,,,,,,[6,7,8,9,10,11,12]],[,,\"06698\\\\d{1,6}\",,,,\"0669812345\",,,[6,7,8,9,10,11]],[,,\"3[1-9]\\\\d{8}|3[2-9]\\\\d{7}\",,,,\"3123456789\",,,[9,10]],[,,\"80(?:0\\\\d{3}|3)\\\\d{3}\",\n,,,\"800123456\",,,[6,9]],[,,\"(?:0878\\\\d{3}|89(?:2\\\\d|3[04]|4(?:[0-4]|[5-9]\\\\d\\\\d)|5[0-4]))\\\\d\\\\d|(?:1(?:44|6[346])|89(?:38|5[5-9]|9))\\\\d{6}\",,,,\"899123456\",,,[6,8,9,10]],[,,\"84(?:[08]\\\\d{3}|[17])\\\\d{3}\",,,,\"848123456\",,,[6,9]],[,,\"1(?:78\\\\d|99)\\\\d{6}\",,,,\"1781234567\",,,[9,10]],[,,\"55\\\\d{8}\",,,,\"5512345678\",,,[10]],\"VA\",39,\"00\",,,,,,,,,,[,,,,,,,,,[-1]],,\"06698\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,\"3[2-8]\\\\d{9,10}\",,,,\"33101234501\",,,[11,12]]],VC:[,[,,\"(?:[58]\\\\d\\\\d|784|900)\\\\d{7}\",,,,,,,[10],[7]],\n[,,\"784(?:266|3(?:6[6-9]|7\\\\d|8[0-6])|4(?:38|5[0-36-8]|8[0-8])|5(?:55|7[0-2]|93)|638|784)\\\\d{4}\",,,,\"7842661234\",,,,[7]],[,,\"784(?:4(?:3[0-5]|5[45]|89|9[0-8])|5(?:2[6-9]|3[0-4])|720)\\\\d{4}\",,,,\"7844301234\",,,,[7]],[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",,,,\"8002345678\"],[,,\"900[2-9]\\\\d{6}\",,,,\"9002345678\"],[,,,,,,,,,[-1]],[,,\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\\\d{6}\",\n,,,\"5002345678\"],[,,\"78451[0-2]\\\\d{4}\",,,,\"7845101234\",,,,[7]],\"VC\",1,\"011\",\"1\",,,\"1|([2-7]\\\\d{6})$\",\"784$1\",,,,,[,,,,,,,,,[-1]],,\"784\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],VE:[,[,,\"[68]00\\\\d{7}|(?:[24]\\\\d|[59]0)\\\\d{8}\",,,,,,,[10],[7]],[,,\"(?:2(?:12|3[457-9]|[467]\\\\d|[58][1-9]|9[1-6])|[4-6]00)\\\\d{7}\",,,,\"2121234567\",,,,[7]],[,,\"4(?:1[24-8]|2[46])\\\\d{7}\",,,,\"4121234567\"],[,,\"800\\\\d{7}\",,,,\"8001234567\"],[,,\"90[01]\\\\d{7}\",,,,\"9001234567\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\n\"VE\",58,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{3})(\\\\d{7})\",\"$1-$2\",[\"[24-689]\"],\"0$1\",\"$CC $1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"501\\\\d{7}\",,,,\"5010123456\",,,,[7]],,,[,,,,,,,,,[-1]]],VG:[,[,,\"(?:284|[58]\\\\d\\\\d|900)\\\\d{7}\",,,,,,,[10],[7]],[,,\"284496[0-5]\\\\d{3}|284(?:229|4(?:22|9[45])|774|8(?:52|6[459]))\\\\d{4}\",,,,\"2842291234\",,,,[7]],[,,\"284496[6-9]\\\\d{3}|284(?:245|3(?:0[0-3]|4[0-7]|68|9[34])|4(?:4[0-6]|68|99)|5(?:4[0-7]|68|9[69]))\\\\d{4}\",,,,\"2843001234\",,,,[7]],[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",\n,,,\"8002345678\"],[,,\"900[2-9]\\\\d{6}\",,,,\"9002345678\"],[,,,,,,,,,[-1]],[,,\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\\\d{6}\",,,,\"5002345678\"],[,,,,,,,,,[-1]],\"VG\",1,\"011\",\"1\",,,\"1|([2-578]\\\\d{6})$\",\"284$1\",,,,,[,,,,,,,,,[-1]],,\"284\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],VI:[,[,,\"[58]\\\\d{9}|(?:34|90)0\\\\d{7}\",\n,,,,,,[10],[7]],[,,\"340(?:2(?:0[0-38]|2[06-8]|4[49]|77)|3(?:32|44)|4(?:2[23]|44|7[34]|89)|5(?:1[34]|55)|6(?:2[56]|4[23]|77|9[023])|7(?:1[2-57-9]|2[57]|7\\\\d)|884|998)\\\\d{4}\",,,,\"3406421234\",,,,[7]],[,,\"340(?:2(?:0[0-38]|2[06-8]|4[49]|77)|3(?:32|44)|4(?:2[23]|44|7[34]|89)|5(?:1[34]|55)|6(?:2[56]|4[23]|77|9[023])|7(?:1[2-57-9]|2[57]|7\\\\d)|884|998)\\\\d{4}\",,,,\"3406421234\",,,,[7]],[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",,,,\"8002345678\"],[,,\"900[2-9]\\\\d{6}\",,,,\"9002345678\"],[,,,,,,,,,[-1]],[,,\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\\\d{6}\",\n,,,\"5002345678\"],[,,,,,,,,,[-1]],\"VI\",1,\"011\",\"1\",,,\"1|([2-9]\\\\d{6})$\",\"340$1\",,1,,,[,,,,,,,,,[-1]],,\"340\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],VN:[,[,,\"[12]\\\\d{9}|[135-9]\\\\d{8}|[16]\\\\d{7}|[16-8]\\\\d{6}\",,,,,,,[7,8,9,10]],[,,\"2(?:0[3-9]|1[0-689]|2[0-25-9]|3[2-9]|4[2-8]|5[124-9]|6[0-39]|7[0-7]|8[2-79]|9[0-4679])\\\\d{7}\",,,,\"2101234567\",,,[10]],[,,\"(?:5(?:2[238]|59)|89[689]|99[013-9])\\\\d{6}|(?:3\\\\d|5[689]|7[06-9]|8[1-8]|9[0-8])\\\\d{7}\",,,,\"912345678\",,,[9]],[,,\"1800\\\\d{4,6}|12(?:0[13]|28)\\\\d{4}\",\n,,,\"1800123456\",,,[8,9,10]],[,,\"1900\\\\d{4,6}\",,,,\"1900123456\",,,[8,9,10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"672\\\\d{6}\",,,,\"672012345\",,,[9]],\"VN\",84,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[17]99\"],\"0$1\",,1],[,\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"80\"],\"0$1\",,1],[,\"(\\\\d{3})(\\\\d{4,5})\",\"$1 $2\",[\"69\"],\"0$1\",,1],[,\"(\\\\d{4})(\\\\d{4,6})\",\"$1 $2\",[\"1\"],,,1],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[69]\"],\"0$1\",,1],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[3578]\"],\"0$1\",,1],[,\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\n\"$1 $2 $3\",[\"2[48]\"],\"0$1\",,1],[,\"(\\\\d{3})(\\\\d{4})(\\\\d{3})\",\"$1 $2 $3\",[\"2\"],\"0$1\",,1]],[[,\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"80\"],\"0$1\",,1],[,\"(\\\\d{4})(\\\\d{4,6})\",\"$1 $2\",[\"1\"],,,1],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[69]\"],\"0$1\",,1],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[3578]\"],\"0$1\",,1],[,\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"2[48]\"],\"0$1\",,1],[,\"(\\\\d{3})(\\\\d{4})(\\\\d{3})\",\"$1 $2 $3\",[\"2\"],\"0$1\",,1]],[,,,,,,,,,[-1]],,,[,,\"[17]99\\\\d{4}|69\\\\d{5,6}\",,,,,,,[7,8]],[,,\"(?:[17]99|80\\\\d)\\\\d{4}|69\\\\d{5,6}\",\n,,,\"1992000\",,,[7,8]],,,[,,,,,,,,,[-1]]],VU:[,[,,\"[57-9]\\\\d{6}|(?:[238]\\\\d|48)\\\\d{3}\",,,,,,,[5,7]],[,,\"(?:38[0-8]|48[4-9])\\\\d\\\\d|(?:2[02-9]|3[4-7]|88)\\\\d{3}\",,,,\"22123\",,,[5]],[,,\"(?:[58]\\\\d|7[013-7])\\\\d{5}\",,,,\"5912345\",,,[7]],[,,\"81[18]\\\\d\\\\d\",,,,\"81123\",,,[5]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"9(?:0[1-9]|1[01])\\\\d{4}\",,,,\"9010123\",,,[7]],\"VU\",678,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[57-9]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"(?:3[03]|900\\\\d)\\\\d{3}\",,,,\"30123\"],,\n,[,,,,,,,,,[-1]]],WF:[,[,,\"(?:40|72)\\\\d{4}|8\\\\d{5}(?:\\\\d{3})?\",,,,,,,[6,9]],[,,\"72\\\\d{4}\",,,,\"721234\",,,[6]],[,,\"(?:72|8[23])\\\\d{4}\",,,,\"821234\",,,[6]],[,,\"80[0-5]\\\\d{6}\",,,,\"800012345\",,,[9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"WF\",681,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"[478]\"]],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,\"[48]0\\\\d{4}\",,,,\"401234\",,,[6]]],WS:[,[,,\"(?:[2-6]|8\\\\d{5})\\\\d{4}|[78]\\\\d{6}|[68]\\\\d{5}\",\n,,,,,,[5,6,7,10]],[,,\"6[1-9]\\\\d{3}|(?:[2-5]|60)\\\\d{4}\",,,,\"22123\",,,[5,6]],[,,\"(?:7[1-35-7]|8(?:[3-7]|9\\\\d{3}))\\\\d{5}\",,,,\"7212345\",,,[7,10]],[,,\"800\\\\d{3}\",,,,\"800123\",,,[6]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"WS\",685,\"0\",,,,,,,,[[,\"(\\\\d{5})\",\"$1\",[\"[2-5]|6[1-9]\"]],[,\"(\\\\d{3})(\\\\d{3,7})\",\"$1 $2\",[\"[68]\"]],[,\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"7\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],XK:[,[,,\"[23]\\\\d{7,8}|(?:4\\\\d\\\\d|[89]00)\\\\d{5}\",,,,,,,[8,\n9]],[,,\"(?:2[89]|39)0\\\\d{6}|[23][89]\\\\d{6}\",,,,\"28012345\"],[,,\"4[3-9]\\\\d{6}\",,,,\"43201234\",,,[8]],[,,\"800\\\\d{5}\",,,,\"80001234\",,,[8]],[,,\"900\\\\d{5}\",,,,\"90001234\",,,[8]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"XK\",383,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[89]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2-4]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[23]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],YE:[,[,,\"(?:1|7\\\\d)\\\\d{7}|[1-7]\\\\d{6}\",\n,,,,,,[7,8,9],[6]],[,,\"78[0-7]\\\\d{4}|17\\\\d{6}|(?:[12][2-68]|3[2358]|4[2-58]|5[2-6]|6[3-58]|7[24-6])\\\\d{5}\",,,,\"1234567\",,,[7,8],[6]],[,,\"7[0137]\\\\d{7}\",,,,\"712345678\",,,[9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"YE\",967,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d)(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[1-6]|7[24-68]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"7\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],YT:[,[,,\"80\\\\d{7}|(?:26|63)9\\\\d{6}\",\n,,,,,,[9]],[,,\"269(?:0[0-367]|5[0-3]|6\\\\d|[78]0)\\\\d{4}\",,,,\"269601234\"],[,,\"639(?:0[0-79]|1[019]|[267]\\\\d|3[09]|40|5[05-9]|9[04-79])\\\\d{4}\",,,,\"639012345\"],[,,\"80\\\\d{7}\",,,,\"801234567\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"YT\",262,\"00\",\"0\",,,\"0\",,,,,,[,,,,,,,,,[-1]],,\"269|63\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],ZA:[,[,,\"[1-79]\\\\d{8}|8\\\\d{4,9}\",,,,,,,[5,6,7,8,9,10]],[,,\"(?:2(?:0330|4302)|52087)0\\\\d{3}|(?:1[0-8]|2[1-378]|3[1-69]|4\\\\d|5[1346-8])\\\\d{7}\",,,,\"101234567\",\n,,[9]],[,,\"(?:1(?:3492[0-25]|4495[0235]|549(?:20|5[01]))|4[34]492[01])\\\\d{3}|8[1-4]\\\\d{3,7}|(?:2[27]|47|54)4950\\\\d{3}|(?:1(?:049[2-4]|9[12]\\\\d\\\\d)|(?:6\\\\d|7[0-46-9])\\\\d{3}|8(?:5\\\\d{3}|7(?:08[67]|158|28[5-9]|310)))\\\\d{4}|(?:1[6-8]|28|3[2-69]|4[025689]|5[36-8])4920\\\\d{3}|(?:12|[2-5]1)492\\\\d{4}\",,,,\"711234567\",,,[5,6,7,8,9]],[,,\"80\\\\d{7}\",,,,\"801234567\",,,[9]],[,,\"(?:86[2-9]|9[0-2]\\\\d)\\\\d{6}\",,,,\"862345678\",,,[9]],[,,\"860\\\\d{6}\",,,,\"860123456\",,,[9]],[,,,,,,,,,[-1]],[,,\"87(?:08[0-589]|15[0-79]|28[0-4]|31[1-9])\\\\d{4}|87(?:[02][0-79]|1[0-46-9]|3[02-9]|[4-9]\\\\d)\\\\d{5}\",\n,,,\"871234567\",,,[9]],\"ZA\",27,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{2})(\\\\d{3,4})\",\"$1 $2\",[\"8[1-4]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{2,3})\",\"$1 $2 $3\",[\"8[1-4]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"860\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[1-9]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"861\\\\d{6,7}\",,,,\"861123456\",,,[9,10]],,,[,,,,,,,,,[-1]]],ZM:[,[,,\"800\\\\d{6}|(?:21|63|[79]\\\\d)\\\\d{7}\",,,,,,,[9],[6]],[,,\"21[1-8]\\\\d{6}\",,,,\n\"211234567\",,,,[6]],[,,\"(?:7[679]|9[5-8])\\\\d{7}\",,,,\"955123456\"],[,,\"800\\\\d{6}\",,,,\"800123456\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"63\\\\d{7}\",,,,\"630123456\"],\"ZM\",260,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{3})(\\\\d{3})\",\"$1 $2\",[\"[1-9]\"]],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[28]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"[79]\"],\"0$1\"]],[[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[28]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"[79]\"],\"0$1\"]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,\n,,,,,,,,[-1]]],ZW:[,[,,\"2(?:[0-57-9]\\\\d{6,8}|6[0-24-9]\\\\d{6,7})|[38]\\\\d{9}|[35-8]\\\\d{8}|[3-6]\\\\d{7}|[1-689]\\\\d{6}|[1-3569]\\\\d{5}|[1356]\\\\d{4}\",,,,,,,[5,6,7,8,9,10],[3,4]],[,,\"(?:1(?:(?:3\\\\d|9)\\\\d|[4-8])|2(?:(?:(?:0(?:2[014]|5)|(?:2[0157]|31|84|9)\\\\d\\\\d|[56](?:[14]\\\\d\\\\d|20)|7(?:[089]|2[03]|[35]\\\\d\\\\d))\\\\d|4(?:2\\\\d\\\\d|8))\\\\d|1(?:2|[39]\\\\d{4}))|3(?:(?:123|(?:29\\\\d|92)\\\\d)\\\\d\\\\d|7(?:[19]|[56]\\\\d))|5(?:0|1[2-478]|26|[37]2|4(?:2\\\\d{3}|83)|5(?:25\\\\d\\\\d|[78])|[689]\\\\d)|6(?:(?:[16-8]21|28|52[013])\\\\d\\\\d|[39])|8(?:[1349]28|523)\\\\d\\\\d)\\\\d{3}|(?:4\\\\d\\\\d|9[2-9])\\\\d{4,5}|(?:(?:2(?:(?:(?:0|8[146])\\\\d|7[1-7])\\\\d|2(?:[278]\\\\d|92)|58(?:2\\\\d|3))|3(?:[26]|9\\\\d{3})|5(?:4\\\\d|5)\\\\d\\\\d)\\\\d|6(?:(?:(?:[0-246]|[78]\\\\d)\\\\d|37)\\\\d|5[2-8]))\\\\d\\\\d|(?:2(?:[569]\\\\d|8[2-57-9])|3(?:[013-59]\\\\d|8[37])|6[89]8)\\\\d{3}\",\n,,,\"1312345\",,,,[3,4]],[,,\"7(?:[178]\\\\d|3[1-9])\\\\d{6}\",,,,\"712345678\",,,[9]],[,,\"80(?:[01]\\\\d|20|8[0-8])\\\\d{3}\",,,,\"8001234\",,,[7]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"86(?:1[12]|22|30|44|55|77|8[368])\\\\d{6}\",,,,\"8686123456\",,,[10]],\"ZW\",263,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{3})(\\\\d{3,5})\",\"$1 $2\",[\"2(?:0[45]|2[278]|[49]8)|3(?:[09]8|17)|6(?:[29]8|37|75)|[23][78]|(?:33|5[15]|6[68])[78]\"],\"0$1\"],[,\"(\\\\d)(\\\\d{3})(\\\\d{2,4})\",\"$1 $2 $3\",[\"[49]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"80\"],\"0$1\"],\n[,\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"24|8[13-59]|(?:2[05-79]|39|5[45]|6[15-8])2\",\"2(?:02[014]|4|[56]20|[79]2)|392|5(?:42|525)|6(?:[16-8]21|52[013])|8[13-59]\"],\"(0$1)\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"2(?:1[39]|2[0157]|[378]|[56][14])|3(?:12|29)\",\"2(?:1[39]|2[0157]|[378]|[56][14])|3(?:123|29)\"],\"0$1\"],[,\"(\\\\d{4})(\\\\d{6})\",\"$1 $2\",[\"8\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3,5})\",\"$1 $2\",[\"1|2(?:0[0-36-9]|12|29|[56])|3(?:1[0-689]|[24-6])|5(?:[0236-9]|1[2-4])|6(?:[013-59]|7[0-46-9])|(?:33|55|6[68])[0-69]|(?:29|3[09]|62)[0-79]\"],\n\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"29[013-9]|39|54\"],\"0$1\"],[,\"(\\\\d{4})(\\\\d{3,5})\",\"$1 $2\",[\"(?:25|54)8\",\"258|5483\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],800:[,[,,\"(?:005|[1-9]\\\\d\\\\d)\\\\d{5}\",,,,,,,[8]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"(?:005|[1-9]\\\\d\\\\d)\\\\d{5}\",,,,\"12345678\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"001\",800,,,,,,,,1,[[,\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"\\\\d\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,\n,,,,[-1]],,,[,,,,,,,,,[-1]]],808:[,[,,\"[1-9]\\\\d{7}\",,,,,,,[8]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"[1-9]\\\\d{7}\",,,,\"12345678\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"001\",808,,,,,,,,1,[[,\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[1-9]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],870:[,[,,\"7\\\\d{11}|[35-7]\\\\d{8}\",,,,,,,[9,12]],[,,,,,,,,,[-1]],[,,\"(?:[356]|774[45])\\\\d{8}|7[6-8]\\\\d{7}\",,,,\"301234567\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,\n[-1]],[,,,,,,,,,[-1]],\"001\",870,,,,,,,,,[[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[35-7]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],878:[,[,,\"10\\\\d{10}\",,,,,,,[12]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"10\\\\d{10}\",,,,\"101234567890\"],\"001\",878,,,,,,,,1,[[,\"(\\\\d{2})(\\\\d{5})(\\\\d{5})\",\"$1 $2 $3\",[\"1\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],881:[,[,,\"[0-36-9]\\\\d{8}\",,,,,,,[9]],\n[,,,,,,,,,[-1]],[,,\"[0-36-9]\\\\d{8}\",,,,\"612345678\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"001\",881,,,,,,,,,[[,\"(\\\\d)(\\\\d{3})(\\\\d{5})\",\"$1 $2 $3\",[\"[0-36-9]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],882:[,[,,\"[13]\\\\d{6}(?:\\\\d{2,5})?|285\\\\d{9}|(?:[19]\\\\d|49)\\\\d{6}\",,,,,,,[7,8,9,10,11,12]],[,,,,,,,,,[-1]],[,,\"342\\\\d{4}|(?:337|49)\\\\d{6}|3(?:2|47|7\\\\d{3})\\\\d{7}\",,,,\"3421234\",,,[7,8,9,10,12]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,\n,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"1(?:3(?:0[0347]|[13][0139]|2[035]|4[013568]|6[0459]|7[06]|8[15-8]|9[0689])\\\\d{4}|6\\\\d{5,10})|(?:(?:285\\\\d\\\\d|3(?:45|[69]\\\\d{3}))\\\\d|9[89])\\\\d{6}\",,,,\"390123456789\"],\"001\",882,,,,,,,,,[[,\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"16|342\"]],[,\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"4\"]],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"[19]\"]],[,\"(\\\\d{2})(\\\\d{4})(\\\\d{3})\",\"$1 $2 $3\",[\"3[23]\"]],[,\"(\\\\d{2})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"]],[,\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"34[57]\"]],[,\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\n\"$1 $2 $3\",[\"34\"]],[,\"(\\\\d{2})(\\\\d{4,5})(\\\\d{5})\",\"$1 $2 $3\",[\"[1-3]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,\"348[57]\\\\d{7}\",,,,\"34851234567\",,,[11]]],883:[,[,,\"(?:210|370\\\\d\\\\d)\\\\d{7}|51\\\\d{7}(?:\\\\d{3})?\",,,,,,,[9,10,12]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"(?:210|(?:370[1-9]|51[013]0)\\\\d)\\\\d{7}|5100\\\\d{5}\",,,,\"510012345\"],\"001\",883,,,,,,,,1,[[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"510\"]],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\n\"$1 $2 $3\",[\"2\"]],[,\"(\\\\d{4})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"51[13]\"]],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"[35]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],888:[,[,,\"\\\\d{11}\",,,,,,,[11]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"001\",888,,,,,,,,1,[[,\"(\\\\d{3})(\\\\d{3})(\\\\d{5})\",\"$1 $2 $3\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"\\\\d{11}\",,,,\"12345678901\"],,,[,,,,,,,,,[-1]]],979:[,[,,\n\"[1359]\\\\d{8}\",,,,,,,[9],[8]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"[1359]\\\\d{8}\",,,,\"123456789\",,,,[8]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"001\",979,,,,,,,,1,[[,\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[1359]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]]};/*\n\n Copyright (C) 2010 The Libphonenumber Authors.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n*/\nfunction H(){this.g={}}H.g=void 0;H.h=function(){return H.g?H.g:H.g=new H};\nvar wa={0:\"0\",1:\"1\",2:\"2\",3:\"3\",4:\"4\",5:\"5\",6:\"6\",7:\"7\",8:\"8\",9:\"9\",\"\\uff10\":\"0\",\"\\uff11\":\"1\",\"\\uff12\":\"2\",\"\\uff13\":\"3\",\"\\uff14\":\"4\",\"\\uff15\":\"5\",\"\\uff16\":\"6\",\"\\uff17\":\"7\",\"\\uff18\":\"8\",\"\\uff19\":\"9\",\"\\u0660\":\"0\",\"\\u0661\":\"1\",\"\\u0662\":\"2\",\"\\u0663\":\"3\",\"\\u0664\":\"4\",\"\\u0665\":\"5\",\"\\u0666\":\"6\",\"\\u0667\":\"7\",\"\\u0668\":\"8\",\"\\u0669\":\"9\",\"\\u06f0\":\"0\",\"\\u06f1\":\"1\",\"\\u06f2\":\"2\",\"\\u06f3\":\"3\",\"\\u06f4\":\"4\",\"\\u06f5\":\"5\",\"\\u06f6\":\"6\",\"\\u06f7\":\"7\",\"\\u06f8\":\"8\",\"\\u06f9\":\"9\"},xa={0:\"0\",1:\"1\",2:\"2\",3:\"3\",4:\"4\",5:\"5\",6:\"6\",\n7:\"7\",8:\"8\",9:\"9\",\"+\":\"+\",\"*\":\"*\",\"#\":\"#\"},ya={0:\"0\",1:\"1\",2:\"2\",3:\"3\",4:\"4\",5:\"5\",6:\"6\",7:\"7\",8:\"8\",9:\"9\",\"\\uff10\":\"0\",\"\\uff11\":\"1\",\"\\uff12\":\"2\",\"\\uff13\":\"3\",\"\\uff14\":\"4\",\"\\uff15\":\"5\",\"\\uff16\":\"6\",\"\\uff17\":\"7\",\"\\uff18\":\"8\",\"\\uff19\":\"9\",\"\\u0660\":\"0\",\"\\u0661\":\"1\",\"\\u0662\":\"2\",\"\\u0663\":\"3\",\"\\u0664\":\"4\",\"\\u0665\":\"5\",\"\\u0666\":\"6\",\"\\u0667\":\"7\",\"\\u0668\":\"8\",\"\\u0669\":\"9\",\"\\u06f0\":\"0\",\"\\u06f1\":\"1\",\"\\u06f2\":\"2\",\"\\u06f3\":\"3\",\"\\u06f4\":\"4\",\"\\u06f5\":\"5\",\"\\u06f6\":\"6\",\"\\u06f7\":\"7\",\"\\u06f8\":\"8\",\"\\u06f9\":\"9\",A:\"2\",\nB:\"2\",C:\"2\",D:\"3\",E:\"3\",F:\"3\",G:\"4\",H:\"4\",I:\"4\",J:\"5\",K:\"5\",L:\"5\",M:\"6\",N:\"6\",O:\"6\",P:\"7\",Q:\"7\",R:\"7\",S:\"7\",T:\"8\",U:\"8\",V:\"8\",W:\"9\",X:\"9\",Y:\"9\",Z:\"9\"},za=/[\\d]+(?:[~\\u2053\\u223C\\uFF5E][\\d]+)?/,Aa=RegExp(\"[+\\uff0b]+\"),I=RegExp(\"^[+\\uff0b]+\"),Ba=RegExp(\"([0-9\\uff10-\\uff19\\u0660-\\u0669\\u06f0-\\u06f9])\"),Ca=RegExp(\"[+\\uff0b0-9\\uff10-\\uff19\\u0660-\\u0669\\u06f0-\\u06f9]\"),Da=/[\\\\\\/] *x/,Ea=RegExp(\"[^0-9\\uff10-\\uff19\\u0660-\\u0669\\u06f0-\\u06f9A-Za-z#]+$\"),Fa=/(?:.*?[A-Za-z]){3}.*/;\nfunction J(a){return\"([0-9\\uff10-\\uff19\\u0660-\\u0669\\u06f0-\\u06f9]{1,\"+a+\"})\"}\nfunction Ga(){return\";ext=\"+J(\"20\")+\"|[ \\u00a0\\\\t,]*(?:e?xt(?:ensi(?:o\\u0301?|\\u00f3))?n?|\\uff45?\\uff58\\uff54\\uff4e?|\\u0434\\u043e\\u0431|anexo)[:\\\\.\\uff0e]?[ \\u00a0\\\\t,-]*\"+(J(\"20\")+\"#?|[ \\u00a0\\\\t,]*(?:[x\\uff58#\\uff03~\\uff5e]|int|\\uff49\\uff4e\\uff54)[:\\\\.\\uff0e]?[ \\u00a0\\\\t,-]*\")+(J(\"9\")+\"#?|[- ]+\")+(J(\"6\")+\"#|[ \\u00a0\\\\t]*(?:,{2}|;)[:\\\\.\\uff0e]?[ \\u00a0\\\\t,-]*\")+(J(\"15\")+\"#?|[ \\u00a0\\\\t]*(?:,)+[:\\\\.\\uff0e]?[ \\u00a0\\\\t,-]*\")+(J(\"9\")+\"#?\")}\nvar Ha=new RegExp(\"(?:\"+Ga()+\")$\",\"i\"),Ia=new RegExp(\"^[0-9\\uff10-\\uff19\\u0660-\\u0669\\u06f0-\\u06f9]{2}$|^[+\\uff0b]*(?:[-x\\u2010-\\u2015\\u2212\\u30fc\\uff0d-\\uff0f \\u00a0\\u00ad\\u200b\\u2060\\u3000()\\uff08\\uff09\\uff3b\\uff3d.\\\\[\\\\]/~\\u2053\\u223c\\uff5e*]*[0-9\\uff10-\\uff19\\u0660-\\u0669\\u06f0-\\u06f9]){3,}[-x\\u2010-\\u2015\\u2212\\u30fc\\uff0d-\\uff0f \\u00a0\\u00ad\\u200b\\u2060\\u3000()\\uff08\\uff09\\uff3b\\uff3d.\\\\[\\\\]/~\\u2053\\u223c\\uff5e*A-Za-z0-9\\uff10-\\uff19\\u0660-\\u0669\\u06f0-\\u06f9]*(?:\"+Ga()+\")?$\",\"i\"),Ja=/(\\$\\d)/,\nKa=/^\\(?\\$1\\)?$/;function La(a){return 2>a.length?!1:K(Ia,a)}function Ma(a){return K(Fa,a)?L(a,ya):L(a,wa)}function Na(a){var b=Ma(a.toString());A(a);a.g(b)}function Oa(){return Object.keys(G).filter(function(a){return isNaN(a)})}function Pa(){return Object.keys(G).filter(function(a){return!isNaN(a)}).map(function(a){return parseInt(a,10)})}function Qa(){var a=Object.keys(F);return[...Pa(),...a.map(function(b){return parseInt(b,10)})]}function Ra(a){return null!=a&&(1!=v(a,9)||-1!=r(a,9)[0])}\nfunction L(a,b){for(var c=new z,d,e=a.length,f=0;f<e;++f)d=a.charAt(f),d=b[d.toUpperCase()],null!=d&&c.g(d);return c.toString()}function Sa(a){return 0==a.length||Ka.test(a)}function M(a){return null!=a&&isNaN(a)&&a.toUpperCase()in G}function N(a,b,c){if(0==n(b,2)&&m(b,5)){var d=u(b,5);if(0<d.length)return d}d=u(b,1);var e=O(b);if(0==c)return Ta(d,0,e,\"\");if(!(d in F))return e;a=P(a,d,R(d));b=Ua(b,a,c);e=Va(e,a,c);return Ta(d,c,e,b)}function P(a,b,c){return\"001\"==c?S(a,\"\"+b):S(a,c)}\nfunction Wa(a,b){var c=T;if(!M(b))return N(c,a,1);var d=u(a,1),e=O(a);if(!(d in F))return e;if(1==d){if(null!=b&&F[1].includes(b.toUpperCase()))return d+\" \"+N(c,a,2)}else if(d==Xa(c,b))return N(c,a,2);var f=S(c,b),g=u(f,11);b=\"\";m(f,17)?b=u(f,17):K(za,g)&&(b=g);c=P(c,d,R(d));e=Va(e,c,1);a=Ua(a,c,1);return 0<b.length?b+\" \"+d+\" \"+e+a:Ta(d,1,e,a)}function O(a){if(!m(a,2))return\"\";var b=\"\"+n(a,2);return m(a,4)&&n(a,4)&&0<u(a,8)?Array(u(a,8)+1).join(\"0\")+b:b}\nfunction Ta(a,b,c,d){switch(b){case 0:return\"+\"+a+c+d;case 1:return\"+\"+a+\" \"+c+d;case 3:return\"tel:+\"+a+\"-\"+c+d;default:return c+d}}\nfunction Va(a,b,c){a:{b=0==r(b,20).length||2==c?r(b,19):r(b,20);for(var d,e=b.length,f=0;f<e;++f){d=b[f];var g=v(d,3);if(0==g||0==a.search(n(d,3,g-1)))if(g=new RegExp(n(d,1)),K(g,a)){b=d;break a}}b=null}null==b?c=a:(e=b,b=u(e,2),d=new RegExp(n(e,1)),u(e,5),e=u(e,4),a=2==c&&null!=e&&0<e.length?a.replace(d,b.replace(Ja,e)):a.replace(d,b),3==c&&(a=a.replace(RegExp(\"^[-x\\u2010-\\u2015\\u2212\\u30fc\\uff0d-\\uff0f \\u00a0\\u00ad\\u200b\\u2060\\u3000()\\uff08\\uff09\\uff3b\\uff3d.\\\\[\\\\]/~\\u2053\\u223c\\uff5e]+\"),\"\"),a=\na.replace(RegExp(\"[-x\\u2010-\\u2015\\u2212\\u30fc\\uff0d-\\uff0f \\u00a0\\u00ad\\u200b\\u2060\\u3000()\\uff08\\uff09\\uff3b\\uff3d.\\\\[\\\\]/~\\u2053\\u223c\\uff5e]+\",\"g\"),\"-\")),c=a);return c}function Ya(a,b){var c=T;if(!M(a))return null;b=Za(S(c,a),b);try{if(m(b,6)){var d=n(b,6);return $a(c,d,a)}}catch(e){}return null}function Ua(a,b,c){return m(a,3)&&0!=n(a,3).length?3==c?\";ext=\"+n(a,3):m(b,13)?n(b,13)+u(a,3):\" ext. \"+u(a,3):\"\"}\nfunction Za(a,b){switch(b){case 4:return n(a,5);case 3:return n(a,4);case 1:return n(a,3);case 0:case 2:return n(a,2);case 5:return n(a,6);case 6:return n(a,8);case 7:return n(a,7);case 8:return n(a,21);case 9:return n(a,25);case 10:return n(a,28);default:return n(a,1)}}function ab(a,b){return U(a,n(b,1))?U(a,n(b,5))?4:U(a,n(b,4))?3:U(a,n(b,6))?5:U(a,n(b,8))?6:U(a,n(b,7))?7:U(a,n(b,21))?8:U(a,n(b,25))?9:U(a,n(b,28))?10:U(a,n(b,2))?n(b,18)||U(a,n(b,3))?2:0:!n(b,18)&&U(a,n(b,3))?1:-1:-1}\nfunction S(a,b){if(null==b)return null;b=b.toUpperCase();var c=a.g[b];if(null==c){c=G[b];if(null==c)return null;c=(new y).g(D.m(),c);a.g[b]=c}return c}function U(a,b){var c=a.length;return 0<v(b,9)&&-1==r(b,9).indexOf(c)?!1:K(u(b,2),a)}function bb(a){var b=T,c=cb(b,a);var d=u(a,1);var e=P(b,d,c);null==e||\"001\"!=c&&d!=Xa(b,c)?e=!1:(a=O(a),e=-1!=ab(a,e));return e}\nfunction cb(a,b){if(null==b)return null;var c=u(b,1);c=F[c];if(null==c)a=null;else if(1==c.length)a=c[0];else a:{b=O(b);for(var d,e=c.length,f=0;f<e;f++){d=c[f];var g=S(a,d);if(m(g,23)){if(0==b.search(n(g,23))){a=d;break a}}else if(-1!=ab(b,g)){a=d;break a}}a=null}return a}function R(a){a=F[a];return null==a?\"ZZ\":a[0]}function Xa(a,b){a=S(a,b);if(null==a)throw Error(\"Invalid region code: \"+b);return u(a,10)}function db(a){a=eb(a);return 0==a||4==a}\nfunction fb(a,b,c,d){var e=Za(c,d),f=0==v(e,9)?r(n(c,1),9):r(e,9);e=r(e,10);if(2==d)if(Ra(Za(c,0)))a=Za(c,1),Ra(a)&&(f=f.concat(0==v(a,9)?r(n(c,1),9):r(a,9)),f.sort(),0==e.length?e=r(a,10):(e=e.concat(r(a,10)),e.sort()));else return fb(a,b,c,1);if(-1==f[0])return 5;b=b.length;if(-1<e.indexOf(b))return 4;c=f[0];return c==b?0:c>b?2:f[f.length-1]<b?3:-1<f.indexOf(b,1)?0:5}function eb(a){var b=T,c=O(a);a=u(a,1);if(!(a in F))return 1;a=P(b,a,R(a));return fb(b,c,a,-1)}\nfunction gb(a,b){a=a.toString();if(0==a.length||\"0\"==a.charAt(0))return 0;for(var c,d=a.length,e=1;3>=e&&e<=d;++e)if(c=parseInt(a.substring(0,e),10),c in F)return b.g(a.substring(e)),c;return 0}\nfunction hb(a,b,c,d,e){if(0==b.length)return 0;b=new z(b);var f;null!=c&&(f=n(c,11));null==f&&(f=\"NonMatch\");var g=b.toString();if(0==g.length)f=20;else if(I.test(g))g=g.replace(I,\"\"),A(b),b.g(Ma(g)),f=1;else{g=new RegExp(f);Na(b);f=b.toString();if(0==f.search(g)){g=f.match(g)[0].length;var l=f.substring(g).match(Ba);l&&null!=l[1]&&0<l[1].length&&\"0\"==L(l[1],wa)?f=!1:(A(b),b.g(f.substring(g)),f=!0)}else f=!1;f=f?5:20}if(20!=f){if(2>=b.h.length)throw Error(\"Phone number too short after IDD\");a=gb(b,\nd);if(0!=a)return p(e,1,a),a;throw Error(\"Invalid country calling code\");}if(null!=c&&(f=u(c,10),g=\"\"+f,l=b.toString(),0==l.lastIndexOf(g,0)&&(g=new z(l.substring(g.length)),l=n(c,1),l=new RegExp(u(l,2)),ib(g,c,null),g=g.toString(),!K(l,b.toString())&&K(l,g)||3==fb(a,b.toString(),c,-1))))return d.g(g),p(e,1,f),f;p(e,1,0);return 0}\nfunction ib(a,b,c){var d=a.toString(),e=d.length,f=n(b,15);if(0!=e&&null!=f&&0!=f.length){var g=new RegExp(\"^(?:\"+f+\")\");if(e=g.exec(d)){f=new RegExp(u(n(b,1),2));var l=K(f,d),q=e.length-1;b=n(b,16);if(null==b||0==b.length||null==e[q]||0==e[q].length){if(!l||K(f,d.substring(e[0].length)))null!=c&&0<q&&null!=e[q]&&c.g(e[1]),a.set(d.substring(e[0].length))}else if(d=d.replace(g,b),!l||K(f,d))null!=c&&0<q&&c.g(e[1]),a.set(d)}}}\nfunction $a(a,b,c){if(null==b)throw Error(\"The string supplied did not seem to be a phone number\");if(250<b.length)throw Error(\"The string supplied is too long to be a phone number\");var d=new z,e=b.indexOf(\";phone-context=\");if(0<=e){var f=e+15;if(\"+\"==b.charAt(f)){var g=b.indexOf(\";\",f);0<g?d.g(b.substring(f,g)):d.g(b.substring(f))}f=b.indexOf(\"tel:\");d.g(b.substring(0<=f?f+4:0,e))}else e=d.g,f=b.search(Ca),0<=f?(b=b.substring(f),b=b.replace(Ea,\"\"),f=b.search(Da),0<=f&&(b=b.substring(0,f))):b=\"\",\ne.call(d,b);b=d.toString();e=b.indexOf(\";isub=\");0<e&&(A(d),d.g(b.substring(0,e)));if(!La(d.toString()))throw Error(\"The string supplied did not seem to be a phone number\");b=d.toString();if(!(M(c)||null!=b&&0<b.length&&I.test(b)))throw Error(\"Invalid country calling code\");b=new E;a:{e=d.toString();f=e.search(Ha);if(0<=f&&La(e.substring(0,f))){g=e.match(Ha);for(var l=g.length,q=1;q<l;++q)if(null!=g[q]&&0<g[q].length){A(d);d.g(e.substring(0,f));e=g[q];break a}}e=\"\"}0<e.length&&p(b,3,e);f=S(a,c);e=\nnew z;g=0;l=d.toString();try{g=hb(a,l,f,e,b)}catch(Q){if(\"Invalid country calling code\"==Q.message&&I.test(l)){if(l=l.replace(I,\"\"),g=hb(a,l,f,e,b),0==g)throw Q;}else throw Q;}0!=g?(d=R(g),d!=c&&(f=P(a,g,d))):(Na(d),e.g(d.toString()),null!=c&&(g=u(f,10),p(b,1,g)));if(2>e.h.length)throw Error(\"The string supplied is too short to be a phone number\");null!=f&&(c=new z(e.toString()),ib(c,f,new z),a=fb(a,c.toString(),f,-1),2!=a&&4!=a&&5!=a&&(e=c));a=e.toString();c=a.length;if(2>c)throw Error(\"The string supplied is too short to be a phone number\");\nif(17<c)throw Error(\"The string supplied is too long to be a phone number\");if(1<a.length&&\"0\"==a.charAt(0)){p(b,4,!0);for(c=1;c<a.length-1&&\"0\"==a.charAt(c);)c++;1!=c&&p(b,8,c)}p(b,2,parseInt(a,10));return b}H.prototype.ia=function(a){var b=S(this,cb(this,a));if(null==b)return!0;a=O(a);return!U(a,n(b,24))};function K(a,b){return(a=\"string\"==typeof a?b.match(\"^(?:\"+a+\")$\"):b.match(a))&&a[0].length==b.length?!0:!1};function jb(a){this.ja=RegExp(\"\\u2008\");this.ka=\"\";this.v=new z;this.ca=\"\";this.s=new z;this.aa=new z;this.u=!0;this.da=this.ba=this.na=!1;this.oa=H.h();this.$=0;this.h=new z;this.ga=!1;this.o=\"\";this.g=new z;this.j=[];this.la=a;this.va=this.l=kb(this,this.la)}var lb=new D;p(lb,11,\"NA\");\nvar mb=RegExp(\"^[-x\\u2010-\\u2015\\u2212\\u30fc\\uff0d-\\uff0f \\u00a0\\u00ad\\u200b\\u2060\\u3000()\\uff08\\uff09\\uff3b\\uff3d.\\\\[\\\\]/~\\u2053\\u223c\\uff5e]*\\\\$1[-x\\u2010-\\u2015\\u2212\\u30fc\\uff0d-\\uff0f \\u00a0\\u00ad\\u200b\\u2060\\u3000()\\uff08\\uff09\\uff3b\\uff3d.\\\\[\\\\]/~\\u2053\\u223c\\uff5e]*(\\\\$\\\\d[-x\\u2010-\\u2015\\u2212\\u30fc\\uff0d-\\uff0f \\u00a0\\u00ad\\u200b\\u2060\\u3000()\\uff08\\uff09\\uff3b\\uff3d.\\\\[\\\\]/~\\u2053\\u223c\\uff5e]*)*$\"),nb=/[- ]/;\nfunction kb(a,b){var c=a.oa;b=M(b)?Xa(c,b):0;a=S(a.oa,R(b));return null!=a?a:lb}function ob(a){for(var b=a.j.length,c=0;c<b;++c){var d=a.j[c],e=u(d,1);if(a.ca==e)return!1;var f=a;var g=d,l=u(g,1);A(f.v);var q=f;g=u(g,2);var Q=\"999999999999999\".match(l)[0];Q.length<q.g.h.length?q=\"\":(q=Q.replace(new RegExp(l,\"g\"),g),q=q.replace(RegExp(\"9\",\"g\"),\"\\u2008\"));0<q.length?(f.v.g(q),f=!0):f=!1;if(f)return a.ca=e,a.ga=nb.test(n(d,4)),a.$=0,!0}return a.u=!1}\nfunction pb(a,b){for(var c=[],d=b.length-3,e=a.j.length,f=0;f<e;++f){var g=a.j[f];0==v(g,3)?c.push(a.j[f]):(g=n(g,3,Math.min(d,v(g,3)-1)),0==b.search(g)&&c.push(a.j[f]))}a.j=c}\nfunction qb(a,b){a.s.g(b);var c=b;Ba.test(c)||1==a.s.h.length&&Aa.test(c)?(\"+\"==b?(c=b,a.aa.g(b)):(c=wa[b],a.aa.g(c),a.g.g(c)),b=c):(a.u=!1,a.na=!0);if(!a.u){if(!a.na)if(rb(a)){if(sb(a))return tb(a)}else if(0<a.o.length&&(b=a.g.toString(),A(a.g),a.g.g(a.o),a.g.g(b),b=a.h.toString(),c=b.lastIndexOf(a.o),A(a.h),a.h.g(b.substring(0,c))),a.o!=ub(a))return a.h.g(\" \"),tb(a);return a.s.toString()}switch(a.aa.h.length){case 0:case 1:case 2:return a.s.toString();case 3:if(rb(a))a.da=!0;else return a.o=ub(a),\nvb(a);default:if(a.da)return sb(a)&&(a.da=!1),a.h.toString()+a.g.toString();if(0<a.j.length){b=wb(a,b);c=xb(a);if(0<c.length)return c;pb(a,a.g.toString());return ob(a)?yb(a):a.u?zb(a,b):a.s.toString()}return vb(a)}}function tb(a){a.u=!0;a.da=!1;a.j=[];a.$=0;A(a.v);a.ca=\"\";return vb(a)}\nfunction xb(a){for(var b=a.g.toString(),c=a.j.length,d=0;d<c;++d){var e=a.j[d],f=u(e,1);if((new RegExp(\"^(?:\"+f+\")$\")).test(b)&&(a.ga=nb.test(n(e,4)),e=b.replace(new RegExp(f,\"g\"),n(e,2)),e=zb(a,e),L(e,xa)==a.aa))return e}return\"\"}function zb(a,b){var c=a.h.h.length;return a.ga&&0<c&&\" \"!=a.h.toString().charAt(c-1)?a.h+\" \"+b:a.h+b}\nfunction vb(a){var b=a.g.toString();if(3<=b.length){for(var c=a.ba&&0==a.o.length&&0<v(a.l,20)?r(a.l,20):r(a.l,19),d=c.length,e=0;e<d;++e){var f=c[e];0<a.o.length&&Sa(u(f,4))&&!n(f,6)&&!m(f,5)||(0!=a.o.length||a.ba||Sa(u(f,4))||n(f,6))&&mb.test(u(f,2))&&a.j.push(f)}pb(a,b);b=xb(a);return 0<b.length?b:ob(a)?yb(a):a.s.toString()}return zb(a,b)}function yb(a){var b=a.g.toString(),c=b.length;if(0<c){for(var d=\"\",e=0;e<c;e++)d=wb(a,b.charAt(e));return a.u?zb(a,d):a.s.toString()}return a.h.toString()}\nfunction ub(a){var b=a.g.toString(),c=0;if(1!=a.l.ha())var d=!1;else d=a.g.toString(),d=\"1\"==d.charAt(0)&&\"0\"!=d.charAt(1)&&\"1\"!=d.charAt(1);d?(c=1,a.h.g(\"1\").g(\" \"),a.ba=!0):m(a.l,15)&&(d=new RegExp(\"^(?:\"+n(a.l,15)+\")\"),d=b.match(d),null!=d&&null!=d[0]&&0<d[0].length&&(a.ba=!0,c=d[0].length,a.h.g(b.substring(0,c))));A(a.g);a.g.g(b.substring(c));return b.substring(0,c)}\nfunction rb(a){var b=a.aa.toString(),c=new RegExp(\"^(?:\\\\+|\"+n(a.l,11)+\")\");c=b.match(c);return null!=c&&null!=c[0]&&0<c[0].length?(a.ba=!0,c=c[0].length,A(a.g),a.g.g(b.substring(c)),A(a.h),a.h.g(b.substring(0,c)),\"+\"!=b.charAt(0)&&a.h.g(\" \"),!0):!1}function sb(a){if(0==a.g.h.length)return!1;var b=new z,c=gb(a.g,b);if(0==c)return!1;A(a.g);a.g.g(b.toString());b=R(c);\"001\"==b?a.l=S(a.oa,\"\"+c):b!=a.la&&(a.l=kb(a,b));a.h.g(\"\"+c).g(\" \");a.o=\"\";return!0}\nfunction wb(a,b){var c=a.v.toString();if(0<=c.substring(a.$).search(a.ja)){var d=c.search(a.ja);b=c.replace(a.ja,b);A(a.v);a.v.g(b);a.$=d;return b.substring(0,a.$+1)}1==a.j.length&&(a.u=!1);a.ca=\"\";return a.s.toString()};/*\n\n Copyright (C) 2018 The Libphonenumber Authors.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n*/\nvar T=H.h();function Ab(a){var b=T,c=cb(b,a);b=P(b,u(a,1),c);null==b?a=-1:(a=O(a),a=ab(a,b));switch(a){case 0:return\"fixed-line\";case 2:return\"fixed-line-or-mobile\";case 1:return\"mobile\";case 8:return\"pager\";case 7:return\"personal-number\";case 4:return\"premium-rate\";case 5:return\"shared-cost\";case 3:return\"toll-free\";case 9:return\"uan\";case 6:return\"voip\";default:case -1:return\"unknown\"}}\nfunction Bb(a){switch(a){case \"fixed-line\":return 0;case \"fixed-line-or-mobile\":return 2;case \"mobile\":return 1;case \"pager\":return 8;case \"personal-number\":return 7;case \"premium-rate\":return 4;case \"shared-cost\":return 5;case \"toll-free\":return 3;case \"uan\":return 9;case \"voip\":return 6;default:case \"unknown\":return-1}}\nfunction Cb(a){try{switch(eb(a)){case 0:return\"is-possible\";case 1:return\"invalid-country-code\";case 3:return\"too-long\";case 2:return\"too-short\"}if(db(a))return\"is-possible\"}catch(b){}return\"unknown\"}function Db(a){if(\"+\"!==a.charAt(0))return{parsed:b,ea:c};try{var b=$a(T,a,void 0)}catch(e){}if(b){var c=cb(T,b);if(null!=c&&\"ZZ\"!==c)return{parsed:b,ea:c}}for(var d=1;4>d;++d){c=void 0;if(a.length<d+1)return{parsed:b,ea:c};c=R(a.substring(1,d+1));if(\"ZZ\"!==c)return{ea:c}}return{parsed:b,ea:void 0}}\nfunction V(a,b){if(!(this instanceof V))return new V(a,b);if(\"string\"===typeof a)var c=!1;else try{bb(a),c=!0}catch(e){c=!1}let d;if(!c&&\"string\"!==typeof a)throw Error(\"Invalid phone number, expected a string\");if(!c&&null!=b&&\"string\"!==typeof b)throw Error(\"Invalid region code, expected a string\");c||(a=a.trim(),b&&\"+\"===a.charAt(0)&&(b=null),b||({ea:b=null,parsed:d}=Db(a)));this.g={number:{},regionCode:b,valid:!1,possible:!1};if(c)this.h=a;else{this.h=null;this.g.number.input=a;if(!b){this.g.possibility=\n\"invalid-country-code\";return}if(0===Eb(b)){this.g.possibility=\"invalid-country-code\";return}try{this.h=d?d:$a(T,a,b)}catch(e){this.g.possibility=Cb(a);return}}this.g.number.international=N(T,this.h,1);this.g.number.national=N(T,this.h,2);this.g.number.e164=N(T,this.h,0);this.g.number.rfc3966=N(T,this.h,3);this.g.number.significant=O(this.h);this.g.canBeInternationallyDialled=T.ia(this.h);this.g.possible=db(this.h);this.g.valid=bb(this.h);this.g.type=Ab(this.h);this.g.possibility=Cb(this.h)}\nvar W=[\"PhoneNumber$$module$src$index\"],X=aa;W[0]in X||\"undefined\"==typeof X.execScript||X.execScript(\"var \"+W[0]);for(var Y;W.length&&(Y=W.shift());)W.length||void 0===V?X[Y]&&X[Y]!==Object.prototype[Y]?X=X[Y]:X=X[Y]={}:X[Y]=V;function Eb(a){return M(a)?Xa(T,a):0}V.getCountryCodeForRegionCode=Eb;V.getRegionCodeForCountryCode=function(a){return R(a)};function Fb(a){var b={};return a.filter(c=>{if(b.hasOwnProperty(c))return!1;b[c]=1;return!0})}V.getSupportedRegionCodes=function(){return Fb(Oa())};\nV.getSupportedCallingCodes=function(){return Fb(Qa())};V.getExample=function(a,b){var c;b?c=Ya(a,Bb(b)):c=Ya(a,0);return new V(c,a)};V.getAsYouType=function(a){return new Z(a)};V.prototype.toJSON=function(){return this.g};V.prototype.toJSON=V.prototype.toJSON;V.prototype.ia=function(){return this.g.canBeInternationallyDialled};V.prototype.canBeInternationallyDialled=V.prototype.ia;V.prototype.za=function(){return this.g.valid};V.prototype.isValid=V.prototype.za;V.prototype.ya=function(){return this.g.possible};\nV.prototype.isPossible=V.prototype.ya;V.prototype.ua=function(){return this.g.type};V.prototype.getType=V.prototype.ua;V.prototype.xa=function(){return\"mobile\"===this.g.type||\"fixed-line-or-mobile\"===this.g.type};V.prototype.isMobile=V.prototype.xa;V.prototype.wa=function(){return\"fixed-line\"===this.g.type||\"fixed-line-or-mobile\"===this.g.type};V.prototype.isFixedLine=V.prototype.wa;V.prototype.qa=function(a){return this.g.number[null==a?\"e164\":a]};V.prototype.getNumber=V.prototype.qa;\nV.prototype.ra=function(a){return Wa(this.h,a)};V.prototype.getNumberFrom=V.prototype.ra;V.prototype.ta=function(){return this.g.regionCode};V.prototype.getRegionCode=V.prototype.ta;V.prototype.ha=function(){return Eb(this.g.regionCode)};V.prototype.getCountryCode=V.prototype.ha;function Z(a){this.l=a;this.j=new jb(a);this.g=this.h=\"\"}Z.prototype.pa=function(a){this.h+=a;var b=this.j;b.ka=qb(b,a);return this.g=b.ka};Z.prototype.addChar=Z.prototype.pa;Z.prototype.Aa=function(){return this.g};\nZ.prototype.number=Z.prototype.Aa;Z.prototype.Ba=function(){return\"\"===this.h?this.g:this.reset(this.h.slice(0,this.h.length-1))};Z.prototype.removeChar=Z.prototype.Ba;Z.prototype.reset=function(a){var b=this.j;b.ka=\"\";A(b.s);A(b.aa);A(b.v);b.$=0;b.ca=\"\";A(b.h);b.o=\"\";A(b.g);b.u=!0;b.na=!1;b.ba=!1;b.da=!1;b.j=[];b.ga=!1;b.l!=b.va&&(b.l=kb(b,b.la));this.g=this.h=\"\";if(a){b=0;for(var c=a.length;b<c;++b)this.pa(a.charAt(b))}return this.g};Z.prototype.reset=Z.prototype.reset;\nZ.prototype.sa=function(){return new V(this.g,this.l)};Z.prototype.getPhoneNumber=Z.prototype.sa;}).call(\n\t(typeof module !== 'undefined' && typeof module.exports !== 'undefined' && module.exports)\n\t|| typeof globalThis !== 'undefined' && globalThis\n\t|| typeof global !== 'undefined' && global\n\t|| typeof window !== 'undefined' && window\n\t|| typeof self !== 'undefined' && self\n\t|| this\n);\n\n","var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n  return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n","/**\n * An abstraction for slicing an arraybuffer even when\n * ArrayBuffer.prototype.slice is not supported\n *\n * @api public\n */\n\nmodule.exports = function(arraybuffer, start, end) {\n  var bytes = arraybuffer.byteLength;\n  start = start || 0;\n  end = end || bytes;\n\n  if (arraybuffer.slice) { return arraybuffer.slice(start, end); }\n\n  if (start < 0) { start += bytes; }\n  if (end < 0) { end += bytes; }\n  if (end > bytes) { end = bytes; }\n\n  if (start >= bytes || start >= end || bytes === 0) {\n    return new ArrayBuffer(0);\n  }\n\n  var abv = new Uint8Array(arraybuffer);\n  var result = new Uint8Array(end - start);\n  for (var i = start, ii = 0; i < end; i++, ii++) {\n    result[ii] = abv[i];\n  }\n  return result.buffer;\n};\n","'use strict';\nvar addToUnscopables = require('./_add-to-unscopables');\nvar step = require('./_iter-step');\nvar Iterators = require('./_iterators');\nvar toIObject = require('./_to-iobject');\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = require('./_iter-define')(Array, 'Array', function (iterated, kind) {\n  this._t = toIObject(iterated); // target\n  this._i = 0;                   // next index\n  this._k = kind;                // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n  var O = this._t;\n  var kind = this._k;\n  var index = this._i++;\n  if (!O || index >= O.length) {\n    this._t = undefined;\n    return step(1);\n  }\n  if (kind == 'keys') return step(0, index);\n  if (kind == 'values') return step(0, O[index]);\n  return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n","var isSymbol = require('./isSymbol');\n\n/**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\nfunction compareAscending(value, other) {\n  if (value !== other) {\n    var valIsDefined = value !== undefined,\n        valIsNull = value === null,\n        valIsReflexive = value === value,\n        valIsSymbol = isSymbol(value);\n\n    var othIsDefined = other !== undefined,\n        othIsNull = other === null,\n        othIsReflexive = other === other,\n        othIsSymbol = isSymbol(other);\n\n    if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n        (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n        (valIsNull && othIsDefined && othIsReflexive) ||\n        (!valIsDefined && othIsReflexive) ||\n        !valIsReflexive) {\n      return 1;\n    }\n    if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n        (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n        (othIsNull && valIsDefined && valIsReflexive) ||\n        (!othIsDefined && valIsReflexive) ||\n        !othIsReflexive) {\n      return -1;\n    }\n  }\n  return 0;\n}\n\nmodule.exports = compareAscending;\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 isObject = require('./_is-object');\nmodule.exports = function (it) {\n  if (!isObject(it)) throw TypeError(it + ' is not an object!');\n  return it;\n};\n","// Styles\nimport \"../../../src/components/VChip/VChip.sass\";\nimport mixins from '../../util/mixins'; // Components\n\nimport { VExpandXTransition } from '../transitions';\nimport VIcon from '../VIcon'; // Mixins\n\nimport Colorable from '../../mixins/colorable';\nimport { factory as GroupableFactory } from '../../mixins/groupable';\nimport Themeable from '../../mixins/themeable';\nimport { factory as ToggleableFactory } from '../../mixins/toggleable';\nimport Routable from '../../mixins/routable';\nimport Sizeable from '../../mixins/sizeable'; // Utilities\n\nimport { breaking } from '../../util/console';\n/* @vue/component */\n\nexport default mixins(Colorable, Sizeable, Routable, Themeable, GroupableFactory('chipGroup'), ToggleableFactory('inputValue')).extend({\n  name: 'v-chip',\n  props: {\n    active: {\n      type: Boolean,\n      default: true\n    },\n    activeClass: {\n      type: String,\n\n      default() {\n        if (!this.chipGroup) return '';\n        return this.chipGroup.activeClass;\n      }\n\n    },\n    close: Boolean,\n    closeIcon: {\n      type: String,\n      default: '$delete'\n    },\n    closeLabel: {\n      type: String,\n      default: '$vuetify.close'\n    },\n    disabled: Boolean,\n    draggable: Boolean,\n    filter: Boolean,\n    filterIcon: {\n      type: String,\n      default: '$complete'\n    },\n    label: Boolean,\n    link: Boolean,\n    outlined: Boolean,\n    pill: Boolean,\n    tag: {\n      type: String,\n      default: 'span'\n    },\n    textColor: String,\n    value: null\n  },\n  data: () => ({\n    proxyClass: 'v-chip--active'\n  }),\n  computed: {\n    classes() {\n      return {\n        'v-chip': true,\n        ...Routable.options.computed.classes.call(this),\n        'v-chip--clickable': this.isClickable,\n        'v-chip--disabled': this.disabled,\n        'v-chip--draggable': this.draggable,\n        'v-chip--label': this.label,\n        'v-chip--link': this.isLink,\n        'v-chip--no-color': !this.color,\n        'v-chip--outlined': this.outlined,\n        'v-chip--pill': this.pill,\n        'v-chip--removable': this.hasClose,\n        ...this.themeClasses,\n        ...this.sizeableClasses,\n        ...this.groupClasses\n      };\n    },\n\n    hasClose() {\n      return Boolean(this.close);\n    },\n\n    isClickable() {\n      return Boolean(Routable.options.computed.isClickable.call(this) || this.chipGroup);\n    }\n\n  },\n\n  created() {\n    const breakingProps = [['outline', 'outlined'], ['selected', 'input-value'], ['value', 'active'], ['@input', '@active.sync']];\n    /* istanbul ignore next */\n\n    breakingProps.forEach(([original, replacement]) => {\n      if (this.$attrs.hasOwnProperty(original)) breaking(original, replacement, this);\n    });\n  },\n\n  methods: {\n    click(e) {\n      this.$emit('click', e);\n      this.chipGroup && this.toggle();\n    },\n\n    genFilter() {\n      const children = [];\n\n      if (this.isActive) {\n        children.push(this.$createElement(VIcon, {\n          staticClass: 'v-chip__filter',\n          props: {\n            left: true\n          }\n        }, this.filterIcon));\n      }\n\n      return this.$createElement(VExpandXTransition, children);\n    },\n\n    genClose() {\n      return this.$createElement(VIcon, {\n        staticClass: 'v-chip__close',\n        props: {\n          right: true,\n          size: 18\n        },\n        attrs: {\n          'aria-label': this.$vuetify.lang.t(this.closeLabel)\n        },\n        on: {\n          click: e => {\n            e.stopPropagation();\n            e.preventDefault();\n            this.$emit('click:close');\n            this.$emit('update:active', false);\n          }\n        }\n      }, this.closeIcon);\n    },\n\n    genContent() {\n      return this.$createElement('span', {\n        staticClass: 'v-chip__content'\n      }, [this.filter && this.genFilter(), this.$slots.default, this.hasClose && this.genClose()]);\n    }\n\n  },\n\n  render(h) {\n    const children = [this.genContent()];\n    let {\n      tag,\n      data\n    } = this.generateRouteLink();\n    data.attrs = { ...data.attrs,\n      draggable: this.draggable ? 'true' : undefined,\n      tabindex: this.chipGroup && !this.disabled ? 0 : data.attrs.tabindex\n    };\n    data.directives.push({\n      name: 'show',\n      value: this.active\n    });\n    data = this.setBackgroundColor(this.color, data);\n    const color = this.textColor || this.outlined && this.color;\n    return h(tag, this.setTextColor(color, data), children);\n  }\n\n});\n//# sourceMappingURL=VChip.js.map","var baseIsMap = require('./_baseIsMap'),\n    baseUnary = require('./_baseUnary'),\n    nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsMap = nodeUtil && nodeUtil.isMap;\n\n/**\n * Checks if `value` is classified as a `Map` object.\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 map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\nvar isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\nmodule.exports = isMap;\n","\n/**\n * Module dependencies.\n */\n\nvar parseuri = require('parseuri');\nvar debug = require('debug')('socket.io-client:url');\n\n/**\n * Module exports.\n */\n\nmodule.exports = url;\n\n/**\n * URL parser.\n *\n * @param {String} url\n * @param {Object} An object meant to mimic window.location.\n *                 Defaults to window.location.\n * @api public\n */\n\nfunction url (uri, loc) {\n  var obj = uri;\n\n  // default to window.location\n  loc = loc || (typeof location !== 'undefined' && location);\n  if (null == uri) uri = loc.protocol + '//' + loc.host;\n\n  // relative path support\n  if ('string' === typeof uri) {\n    if ('/' === uri.charAt(0)) {\n      if ('/' === uri.charAt(1)) {\n        uri = loc.protocol + uri;\n      } else {\n        uri = loc.host + uri;\n      }\n    }\n\n    if (!/^(https?|wss?):\\/\\//.test(uri)) {\n      debug('protocol-less url %s', uri);\n      if ('undefined' !== typeof loc) {\n        uri = loc.protocol + '//' + uri;\n      } else {\n        uri = 'https://' + uri;\n      }\n    }\n\n    // parse\n    debug('parse %s', uri);\n    obj = parseuri(uri);\n  }\n\n  // make sure we treat `localhost:80` and `localhost` equally\n  if (!obj.port) {\n    if (/^(http|ws)$/.test(obj.protocol)) {\n      obj.port = '80';\n    } else if (/^(http|ws)s$/.test(obj.protocol)) {\n      obj.port = '443';\n    }\n  }\n\n  obj.path = obj.path || '/';\n\n  var ipv6 = obj.host.indexOf(':') !== -1;\n  var host = ipv6 ? '[' + obj.host + ']' : obj.host;\n\n  // define unique id\n  obj.id = obj.protocol + '://' + host + ':' + obj.port;\n  // define href\n  obj.href = obj.protocol + '://' + host + (loc && loc.port === obj.port ? '' : (':' + obj.port));\n\n  return obj;\n}\n","module.exports = after\n\nfunction after(count, callback, err_cb) {\n    var bail = false\n    err_cb = err_cb || noop\n    proxy.count = count\n\n    return (count === 0) ? callback() : proxy\n\n    function proxy(err, result) {\n        if (proxy.count <= 0) {\n            throw new Error('after called too many times')\n        }\n        --proxy.count\n\n        // after first error, rest are passed to err_cb\n        if (err) {\n            bail = true\n            callback(err)\n            // future error callbacks will go to error handler\n            callback = err_cb\n        } else if (proxy.count === 0 && !bail) {\n            callback(null, result)\n        }\n    }\n}\n\nfunction noop() {}\n","// Mixins\nimport { factory as GroupableFactory } from '../../mixins/groupable';\nimport { provide as RegistrableProvide } from '../../mixins/registrable'; // Utilities\n\nimport { getSlot } from '../../util/helpers';\nimport mixins from '../../util/mixins';\nexport default mixins(GroupableFactory('expansionPanels', 'v-expansion-panel', 'v-expansion-panels'), RegistrableProvide('expansionPanel', true)\n/* @vue/component */\n).extend({\n  name: 'v-expansion-panel',\n  props: {\n    disabled: Boolean,\n    readonly: Boolean\n  },\n\n  data() {\n    return {\n      content: null,\n      header: null,\n      nextIsActive: false\n    };\n  },\n\n  computed: {\n    classes() {\n      return {\n        'v-expansion-panel--active': this.isActive,\n        'v-expansion-panel--next-active': this.nextIsActive,\n        'v-expansion-panel--disabled': this.isDisabled,\n        ...this.groupClasses\n      };\n    },\n\n    isDisabled() {\n      return this.expansionPanels.disabled || this.disabled;\n    },\n\n    isReadonly() {\n      return this.expansionPanels.readonly || this.readonly;\n    }\n\n  },\n  methods: {\n    registerContent(vm) {\n      this.content = vm;\n    },\n\n    unregisterContent() {\n      this.content = null;\n    },\n\n    registerHeader(vm) {\n      this.header = vm;\n      vm.$on('click', this.onClick);\n    },\n\n    unregisterHeader() {\n      this.header = null;\n    },\n\n    onClick(e) {\n      if (e.detail) this.header.$el.blur();\n      this.$emit('click', e);\n      this.isReadonly || this.isDisabled || this.toggle();\n    },\n\n    toggle() {\n      this.$nextTick(() => this.$emit('change'));\n    }\n\n  },\n\n  render(h) {\n    return h('div', {\n      staticClass: 'v-expansion-panel',\n      class: this.classes,\n      attrs: {\n        'aria-expanded': String(this.isActive)\n      }\n    }, getSlot(this));\n  }\n\n});\n//# sourceMappingURL=VExpansionPanel.js.map","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n  return value;\n}\n\nmodule.exports = identity;\n","var has = require('./_has');\nvar toIObject = require('./_to-iobject');\nvar arrayIndexOf = require('./_array-includes')(false);\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function (object, names) {\n  var O = toIObject(object);\n  var i = 0;\n  var result = [];\n  var key;\n  for (key in O) if (key != IE_PROTO) 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    ~arrayIndexOf(result, key) || result.push(key);\n  }\n  return result;\n};\n","// Styles\nimport \"../../../src/components/VDivider/VDivider.sass\"; // Mixins\n\nimport Themeable from '../../mixins/themeable';\nexport default Themeable.extend({\n  name: 'v-divider',\n  props: {\n    inset: Boolean,\n    vertical: Boolean\n  },\n\n  render(h) {\n    // WAI-ARIA attributes\n    let orientation;\n\n    if (!this.$attrs.role || this.$attrs.role === 'separator') {\n      orientation = this.vertical ? 'vertical' : 'horizontal';\n    }\n\n    return h('hr', {\n      class: {\n        'v-divider': true,\n        'v-divider--inset': this.inset,\n        'v-divider--vertical': this.vertical,\n        ...this.themeClasses\n      },\n      attrs: {\n        role: 'separator',\n        'aria-orientation': orientation,\n        ...this.$attrs\n      },\n      on: this.$listeners\n    });\n  }\n\n});\n//# sourceMappingURL=VDivider.js.map","var Symbol = require('./_Symbol'),\n    arrayMap = require('./_arrayMap'),\n    isArray = require('./isArray'),\n    isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n    symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n  // Exit early for strings to avoid a performance hit in some environments.\n  if (typeof value == 'string') {\n    return value;\n  }\n  if (isArray(value)) {\n    // Recursively convert values (susceptible to call stack limits).\n    return arrayMap(value, baseToString) + '';\n  }\n  if (isSymbol(value)) {\n    return symbolToString ? symbolToString.call(value) : '';\n  }\n  var result = (value + '');\n  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n","// Mixins\nimport Delayable from '../../mixins/delayable';\nimport Toggleable from '../../mixins/toggleable'; // Utilities\n\nimport mixins from '../../util/mixins';\nimport { consoleWarn } from '../../util/console';\nexport default mixins(Delayable, Toggleable\n/* @vue/component */\n).extend({\n  name: 'v-hover',\n  props: {\n    disabled: {\n      type: Boolean,\n      default: false\n    },\n    value: {\n      type: Boolean,\n      default: undefined\n    }\n  },\n  methods: {\n    onMouseEnter() {\n      this.runDelay('open');\n    },\n\n    onMouseLeave() {\n      this.runDelay('close');\n    }\n\n  },\n\n  render() {\n    if (!this.$scopedSlots.default && this.value === undefined) {\n      consoleWarn('v-hover is missing a default scopedSlot or bound value', this);\n      return null;\n    }\n\n    let element;\n    /* istanbul ignore else */\n\n    if (this.$scopedSlots.default) {\n      element = this.$scopedSlots.default({\n        hover: this.isActive\n      });\n    }\n\n    if (Array.isArray(element) && element.length === 1) {\n      element = element[0];\n    }\n\n    if (!element || Array.isArray(element) || !element.tag) {\n      consoleWarn('v-hover should only contain a single element', this);\n      return element;\n    }\n\n    if (!this.disabled) {\n      element.data = element.data || {};\n\n      this._g(element.data, {\n        mouseenter: this.onMouseEnter,\n        mouseleave: this.onMouseLeave\n      });\n    }\n\n    return element;\n  }\n\n});\n//# sourceMappingURL=VHover.js.map","var ListCache = require('./_ListCache'),\n    Map = require('./_Map'),\n    MapCache = require('./_MapCache');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n  var data = this.__data__;\n  if (data instanceof ListCache) {\n    var pairs = data.__data__;\n    if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n      pairs.push([key, value]);\n      this.size = ++data.size;\n      return this;\n    }\n    data = this.__data__ = new MapCache(pairs);\n  }\n  data.set(key, value);\n  this.size = data.size;\n  return this;\n}\n\nmodule.exports = stackSet;\n","\nconst canPromise = require('./can-promise')\n\nconst QRCode = require('./core/qrcode')\nconst CanvasRenderer = require('./renderer/canvas')\nconst SvgRenderer = require('./renderer/svg-tag.js')\n\nfunction renderCanvas (renderFunc, canvas, text, opts, cb) {\n  const args = [].slice.call(arguments, 1)\n  const argsNum = args.length\n  const isLastArgCb = typeof args[argsNum - 1] === 'function'\n\n  if (!isLastArgCb && !canPromise()) {\n    throw new Error('Callback required as last argument')\n  }\n\n  if (isLastArgCb) {\n    if (argsNum < 2) {\n      throw new Error('Too few arguments provided')\n    }\n\n    if (argsNum === 2) {\n      cb = text\n      text = canvas\n      canvas = opts = undefined\n    } else if (argsNum === 3) {\n      if (canvas.getContext && typeof cb === 'undefined') {\n        cb = opts\n        opts = undefined\n      } else {\n        cb = opts\n        opts = text\n        text = canvas\n        canvas = undefined\n      }\n    }\n  } else {\n    if (argsNum < 1) {\n      throw new Error('Too few arguments provided')\n    }\n\n    if (argsNum === 1) {\n      text = canvas\n      canvas = opts = undefined\n    } else if (argsNum === 2 && !canvas.getContext) {\n      opts = text\n      text = canvas\n      canvas = undefined\n    }\n\n    return new Promise(function (resolve, reject) {\n      try {\n        const data = QRCode.create(text, opts)\n        resolve(renderFunc(data, canvas, opts))\n      } catch (e) {\n        reject(e)\n      }\n    })\n  }\n\n  try {\n    const data = QRCode.create(text, opts)\n    cb(null, renderFunc(data, canvas, opts))\n  } catch (e) {\n    cb(e)\n  }\n}\n\nexports.create = QRCode.create\nexports.toCanvas = renderCanvas.bind(null, CanvasRenderer.render)\nexports.toDataURL = renderCanvas.bind(null, CanvasRenderer.renderToDataURL)\n\n// only svg for now.\nexports.toString = renderCanvas.bind(null, function (data, _, opts) {\n  return SvgRenderer.render(data, opts)\n})\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n    rsComboMarksRange = '\\\\u0300-\\\\u036f',\n    reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n    rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n    rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n    rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange + ']',\n    rsCombo = '[' + rsComboRange + ']',\n    rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n    rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n    rsNonAstral = '[^' + rsAstralRange + ']',\n    rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n    rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n    rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n    rsOptVar = '[' + rsVarRange + ']?',\n    rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n    rsSeq = rsOptVar + reOptMod + rsOptJoin,\n    rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction unicodeToArray(string) {\n  return string.match(reUnicode) || [];\n}\n\nmodule.exports = unicodeToArray;\n","'use strict';\n// B.2.3.9 String.prototype.italics()\nrequire('./_string-html')('italics', function (createHTML) {\n  return function italics() {\n    return createHTML(this, 'i', '', '');\n  };\n});\n","import Vue from 'vue';\n/**\n * SSRBootable\n *\n * @mixin\n *\n * Used in layout components (drawer, toolbar, content)\n * to avoid an entry animation when using SSR\n */\n\nexport default Vue.extend({\n  name: 'ssr-bootable',\n  data: () => ({\n    isBooted: false\n  }),\n\n  mounted() {\n    // Use setAttribute instead of dataset\n    // because dataset does not work well\n    // with unit tests\n    window.requestAnimationFrame(() => {\n      this.$el.setAttribute('data-booted', 'true');\n      this.isBooted = true;\n    });\n  }\n\n});\n//# sourceMappingURL=index.js.map","var arrayMap = require('./_arrayMap'),\n    baseIntersection = require('./_baseIntersection'),\n    baseRest = require('./_baseRest'),\n    castArrayLikeObject = require('./_castArrayLikeObject');\n\n/**\n * Creates an array of unique values that are included in all given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersection([2, 1], [2, 3]);\n * // => [2]\n */\nvar intersection = baseRest(function(arrays) {\n  var mapped = arrayMap(arrays, castArrayLikeObject);\n  return (mapped.length && mapped[0] === arrays[0])\n    ? baseIntersection(mapped)\n    : [];\n});\n\nmodule.exports = intersection;\n","var castSlice = require('./_castSlice'),\n    hasUnicode = require('./_hasUnicode'),\n    stringToArray = require('./_stringToArray'),\n    toString = require('./toString');\n\n/**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\nfunction createCaseFirst(methodName) {\n  return function(string) {\n    string = toString(string);\n\n    var strSymbols = hasUnicode(string)\n      ? stringToArray(string)\n      : undefined;\n\n    var chr = strSymbols\n      ? strSymbols[0]\n      : string.charAt(0);\n\n    var trailing = strSymbols\n      ? castSlice(strSymbols, 1).join('')\n      : string.slice(1);\n\n    return chr[methodName]() + trailing;\n  };\n}\n\nmodule.exports = createCaseFirst;\n","'use strict';\n// B.2.3.6 String.prototype.fixed()\nrequire('./_string-html')('fixed', function (createHTML) {\n  return function fixed() {\n    return createHTML(this, 'tt', '', '');\n  };\n});\n","// Array of country objects for the flag dropdown.\n\n// Here is the criteria for the plugin to support a given country/territory\n// - It has an iso2 code: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2\n// - It has it's own country calling code (it is not a sub-region of another country): https://en.wikipedia.org/wiki/List_of_country_calling_codes\n// - It has a flag in the region-flags project: https://github.com/behdad/region-flags/tree/gh-pages/png\n// - It is supported by libphonenumber (it must be listed on this page): https://github.com/googlei18n/libphonenumber/blob/master/resources/ShortNumberMetadata.xml\n\n// Each country array has the following information:\n// [\n//    Country name,\n//    iso2 code,\n//    International dial code,\n//    Order (if >1 country with same dial code),\n//    Area codes\n// ]\nconst allCountries = [\n  [\n    'Afghanistan (‫افغانستان‬‎)',\n    'af',\n    '93',\n  ],\n  [\n    'Albania (Shqipëri)',\n    'al',\n    '355',\n  ],\n  [\n    'Algeria (‫الجزائر‬‎)',\n    'dz',\n    '213',\n  ],\n  [\n    'American Samoa',\n    'as',\n    '1684',\n  ],\n  [\n    'Andorra',\n    'ad',\n    '376',\n  ],\n  [\n    'Angola',\n    'ao',\n    '244',\n  ],\n  [\n    'Anguilla',\n    'ai',\n    '1264',\n  ],\n  [\n    'Antigua and Barbuda',\n    'ag',\n    '1268',\n  ],\n  [\n    'Argentina',\n    'ar',\n    '54',\n  ],\n  [\n    'Armenia (Հայաստան)',\n    'am',\n    '374',\n  ],\n  [\n    'Aruba',\n    'aw',\n    '297',\n  ],\n  [\n    'Australia',\n    'au',\n    '61',\n    0,\n  ],\n  [\n    'Austria (Österreich)',\n    'at',\n    '43',\n  ],\n  [\n    'Azerbaijan (Azərbaycan)',\n    'az',\n    '994',\n  ],\n  [\n    'Bahamas',\n    'bs',\n    '1242',\n  ],\n  [\n    'Bahrain (‫البحرين‬‎)',\n    'bh',\n    '973',\n  ],\n  [\n    'Bangladesh (বাংলাদেশ)',\n    'bd',\n    '880',\n  ],\n  [\n    'Barbados',\n    'bb',\n    '1246',\n  ],\n  [\n    'Belarus (Беларусь)',\n    'by',\n    '375',\n  ],\n  [\n    'Belgium (België)',\n    'be',\n    '32',\n  ],\n  [\n    'Belize',\n    'bz',\n    '501',\n  ],\n  [\n    'Benin (Bénin)',\n    'bj',\n    '229',\n  ],\n  [\n    'Bermuda',\n    'bm',\n    '1441',\n  ],\n  [\n    'Bhutan (འབྲུག)',\n    'bt',\n    '975',\n  ],\n  [\n    'Bolivia',\n    'bo',\n    '591',\n  ],\n  [\n    'Bosnia and Herzegovina (Босна и Херцеговина)',\n    'ba',\n    '387',\n  ],\n  [\n    'Botswana',\n    'bw',\n    '267',\n  ],\n  [\n    'Brazil (Brasil)',\n    'br',\n    '55',\n  ],\n  [\n    'British Indian Ocean Territory',\n    'io',\n    '246',\n  ],\n  [\n    'British Virgin Islands',\n    'vg',\n    '1284',\n  ],\n  [\n    'Brunei',\n    'bn',\n    '673',\n  ],\n  [\n    'Bulgaria (България)',\n    'bg',\n    '359',\n  ],\n  [\n    'Burkina Faso',\n    'bf',\n    '226',\n  ],\n  [\n    'Burundi (Uburundi)',\n    'bi',\n    '257',\n  ],\n  [\n    'Cambodia (កម្ពុជា)',\n    'kh',\n    '855',\n  ],\n  [\n    'Cameroon (Cameroun)',\n    'cm',\n    '237',\n  ],\n  [\n    'Canada',\n    'ca',\n    '1',\n    1,\n    ['204', '226', '236', '249', '250', '289', '306', '343', '365', '387', '403', '416', '418', '431', '437', '438', '450', '506', '514', '519', '548', '579', '581', '587', '604', '613', '639', '647', '672', '705', '709', '742', '778', '780', '782', '807', '819', '825', '867', '873', '902', '905'],\n  ],\n  [\n    'Cape Verde (Kabu Verdi)',\n    'cv',\n    '238',\n  ],\n  [\n    'Caribbean Netherlands',\n    'bq',\n    '599',\n    1,\n  ],\n  [\n    'Cayman Islands',\n    'ky',\n    '1345',\n  ],\n  [\n    'Central African Republic (République centrafricaine)',\n    'cf',\n    '236',\n  ],\n  [\n    'Chad (Tchad)',\n    'td',\n    '235',\n  ],\n  [\n    'Chile',\n    'cl',\n    '56',\n  ],\n  [\n    'China (中国)',\n    'cn',\n    '86',\n  ],\n  [\n    'Christmas Island',\n    'cx',\n    '61',\n    2,\n  ],\n  [\n    'Cocos (Keeling) Islands',\n    'cc',\n    '61',\n    1,\n  ],\n  [\n    'Colombia',\n    'co',\n    '57',\n  ],\n  [\n    'Comoros (‫جزر القمر‬‎)',\n    'km',\n    '269',\n  ],\n  [\n    'Congo (DRC) (Jamhuri ya Kidemokrasia ya Kongo)',\n    'cd',\n    '243',\n  ],\n  [\n    'Congo (Republic) (Congo-Brazzaville)',\n    'cg',\n    '242',\n  ],\n  [\n    'Cook Islands',\n    'ck',\n    '682',\n  ],\n  [\n    'Costa Rica',\n    'cr',\n    '506',\n  ],\n  [\n    'Côte d’Ivoire',\n    'ci',\n    '225',\n  ],\n  [\n    'Croatia (Hrvatska)',\n    'hr',\n    '385',\n  ],\n  [\n    'Cuba',\n    'cu',\n    '53',\n  ],\n  [\n    'Curaçao',\n    'cw',\n    '599',\n    0,\n  ],\n  [\n    'Cyprus (Κύπρος)',\n    'cy',\n    '357',\n  ],\n  [\n    'Czech Republic (Česká republika)',\n    'cz',\n    '420',\n  ],\n  [\n    'Denmark (Danmark)',\n    'dk',\n    '45',\n  ],\n  [\n    'Djibouti',\n    'dj',\n    '253',\n  ],\n  [\n    'Dominica',\n    'dm',\n    '1767',\n  ],\n  [\n    'Dominican Republic (República Dominicana)',\n    'do',\n    '1',\n    2,\n    ['809', '829', '849'],\n  ],\n  [\n    'Ecuador',\n    'ec',\n    '593',\n  ],\n  [\n    'Egypt (‫مصر‬‎)',\n    'eg',\n    '20',\n  ],\n  [\n    'El Salvador',\n    'sv',\n    '503',\n  ],\n  [\n    'Equatorial Guinea (Guinea Ecuatorial)',\n    'gq',\n    '240',\n  ],\n  [\n    'Eritrea',\n    'er',\n    '291',\n  ],\n  [\n    'Estonia (Eesti)',\n    'ee',\n    '372',\n  ],\n  [\n    'Ethiopia',\n    'et',\n    '251',\n  ],\n  [\n    'Falkland Islands (Islas Malvinas)',\n    'fk',\n    '500',\n  ],\n  [\n    'Faroe Islands (Føroyar)',\n    'fo',\n    '298',\n  ],\n  [\n    'Fiji',\n    'fj',\n    '679',\n  ],\n  [\n    'Finland (Suomi)',\n    'fi',\n    '358',\n    0,\n  ],\n  [\n    'France',\n    'fr',\n    '33',\n  ],\n  [\n    'French Guiana (Guyane française)',\n    'gf',\n    '594',\n  ],\n  [\n    'French Polynesia (Polynésie française)',\n    'pf',\n    '689',\n  ],\n  [\n    'Gabon',\n    'ga',\n    '241',\n  ],\n  [\n    'Gambia',\n    'gm',\n    '220',\n  ],\n  [\n    'Georgia (საქართველო)',\n    'ge',\n    '995',\n  ],\n  [\n    'Germany (Deutschland)',\n    'de',\n    '49',\n  ],\n  [\n    'Ghana (Gaana)',\n    'gh',\n    '233',\n  ],\n  [\n    'Gibraltar',\n    'gi',\n    '350',\n  ],\n  [\n    'Greece (Ελλάδα)',\n    'gr',\n    '30',\n  ],\n  [\n    'Greenland (Kalaallit Nunaat)',\n    'gl',\n    '299',\n  ],\n  [\n    'Grenada',\n    'gd',\n    '1473',\n  ],\n  [\n    'Guadeloupe',\n    'gp',\n    '590',\n    0,\n  ],\n  [\n    'Guam',\n    'gu',\n    '1671',\n  ],\n  [\n    'Guatemala',\n    'gt',\n    '502',\n  ],\n  [\n    'Guernsey',\n    'gg',\n    '44',\n    1,\n  ],\n  [\n    'Guinea (Guinée)',\n    'gn',\n    '224',\n  ],\n  [\n    'Guinea-Bissau (Guiné Bissau)',\n    'gw',\n    '245',\n  ],\n  [\n    'Guyana',\n    'gy',\n    '592',\n  ],\n  [\n    'Haiti',\n    'ht',\n    '509',\n  ],\n  [\n    'Honduras',\n    'hn',\n    '504',\n  ],\n  [\n    'Hong Kong (香港)',\n    'hk',\n    '852',\n  ],\n  [\n    'Hungary (Magyarország)',\n    'hu',\n    '36',\n  ],\n  [\n    'Iceland (Ísland)',\n    'is',\n    '354',\n  ],\n  [\n    'India (भारत)',\n    'in',\n    '91',\n  ],\n  [\n    'Indonesia',\n    'id',\n    '62',\n  ],\n  [\n    'Iran (‫ایران‬‎)',\n    'ir',\n    '98',\n  ],\n  [\n    'Iraq (‫العراق‬‎)',\n    'iq',\n    '964',\n  ],\n  [\n    'Ireland',\n    'ie',\n    '353',\n  ],\n  [\n    'Isle of Man',\n    'im',\n    '44',\n    2,\n  ],\n  [\n    'Israel (‫ישראל‬‎)',\n    'il',\n    '972',\n  ],\n  [\n    'Italy (Italia)',\n    'it',\n    '39',\n    0,\n  ],\n  [\n    'Jamaica',\n    'jm',\n    '1876',\n  ],\n  [\n    'Japan (日本)',\n    'jp',\n    '81',\n  ],\n  [\n    'Jersey',\n    'je',\n    '44',\n    3,\n  ],\n  [\n    'Jordan (‫الأردن‬‎)',\n    'jo',\n    '962',\n  ],\n  [\n    'Kazakhstan (Казахстан)',\n    'kz',\n    '7',\n    1,\n  ],\n  [\n    'Kenya',\n    'ke',\n    '254',\n  ],\n  [\n    'Kiribati',\n    'ki',\n    '686',\n  ],\n  [\n    'Kosovo',\n    'xk',\n    '383',\n  ],\n  [\n    'Kuwait (‫الكويت‬‎)',\n    'kw',\n    '965',\n  ],\n  [\n    'Kyrgyzstan (Кыргызстан)',\n    'kg',\n    '996',\n  ],\n  [\n    'Laos (ລາວ)',\n    'la',\n    '856',\n  ],\n  [\n    'Latvia (Latvija)',\n    'lv',\n    '371',\n  ],\n  [\n    'Lebanon (‫لبنان‬‎)',\n    'lb',\n    '961',\n  ],\n  [\n    'Lesotho',\n    'ls',\n    '266',\n  ],\n  [\n    'Liberia',\n    'lr',\n    '231',\n  ],\n  [\n    'Libya (‫ليبيا‬‎)',\n    'ly',\n    '218',\n  ],\n  [\n    'Liechtenstein',\n    'li',\n    '423',\n  ],\n  [\n    'Lithuania (Lietuva)',\n    'lt',\n    '370',\n  ],\n  [\n    'Luxembourg',\n    'lu',\n    '352',\n  ],\n  [\n    'Macau (澳門)',\n    'mo',\n    '853',\n  ],\n  [\n    'Macedonia (FYROM) (Македонија)',\n    'mk',\n    '389',\n  ],\n  [\n    'Madagascar (Madagasikara)',\n    'mg',\n    '261',\n  ],\n  [\n    'Malawi',\n    'mw',\n    '265',\n  ],\n  [\n    'Malaysia',\n    'my',\n    '60',\n  ],\n  [\n    'Maldives',\n    'mv',\n    '960',\n  ],\n  [\n    'Mali',\n    'ml',\n    '223',\n  ],\n  [\n    'Malta',\n    'mt',\n    '356',\n  ],\n  [\n    'Marshall Islands',\n    'mh',\n    '692',\n  ],\n  [\n    'Martinique',\n    'mq',\n    '596',\n  ],\n  [\n    'Mauritania (‫موريتانيا‬‎)',\n    'mr',\n    '222',\n  ],\n  [\n    'Mauritius (Moris)',\n    'mu',\n    '230',\n  ],\n  [\n    'Mayotte',\n    'yt',\n    '262',\n    1,\n  ],\n  [\n    'Mexico (México)',\n    'mx',\n    '52',\n  ],\n  [\n    'Micronesia',\n    'fm',\n    '691',\n  ],\n  [\n    'Moldova (Republica Moldova)',\n    'md',\n    '373',\n  ],\n  [\n    'Monaco',\n    'mc',\n    '377',\n  ],\n  [\n    'Mongolia (Монгол)',\n    'mn',\n    '976',\n  ],\n  [\n    'Montenegro (Crna Gora)',\n    'me',\n    '382',\n  ],\n  [\n    'Montserrat',\n    'ms',\n    '1664',\n  ],\n  [\n    'Morocco (‫المغرب‬‎)',\n    'ma',\n    '212',\n    0,\n  ],\n  [\n    'Mozambique (Moçambique)',\n    'mz',\n    '258',\n  ],\n  [\n    'Myanmar (Burma) (မြန်မာ)',\n    'mm',\n    '95',\n  ],\n  [\n    'Namibia (Namibië)',\n    'na',\n    '264',\n  ],\n  [\n    'Nauru',\n    'nr',\n    '674',\n  ],\n  [\n    'Nepal (नेपाल)',\n    'np',\n    '977',\n  ],\n  [\n    'Netherlands (Nederland)',\n    'nl',\n    '31',\n  ],\n  [\n    'New Caledonia (Nouvelle-Calédonie)',\n    'nc',\n    '687',\n  ],\n  [\n    'New Zealand',\n    'nz',\n    '64',\n  ],\n  [\n    'Nicaragua',\n    'ni',\n    '505',\n  ],\n  [\n    'Niger (Nijar)',\n    'ne',\n    '227',\n  ],\n  [\n    'Nigeria',\n    'ng',\n    '234',\n  ],\n  [\n    'Niue',\n    'nu',\n    '683',\n  ],\n  [\n    'Norfolk Island',\n    'nf',\n    '672',\n  ],\n  [\n    'North Korea (조선 민주주의 인민 공화국)',\n    'kp',\n    '850',\n  ],\n  [\n    'Northern Mariana Islands',\n    'mp',\n    '1670',\n  ],\n  [\n    'Norway (Norge)',\n    'no',\n    '47',\n    0,\n  ],\n  [\n    'Oman (‫عُمان‬‎)',\n    'om',\n    '968',\n  ],\n  [\n    'Pakistan (‫پاکستان‬‎)',\n    'pk',\n    '92',\n  ],\n  [\n    'Palau',\n    'pw',\n    '680',\n  ],\n  [\n    'Palestine (‫فلسطين‬‎)',\n    'ps',\n    '970',\n  ],\n  [\n    'Panama (Panamá)',\n    'pa',\n    '507',\n  ],\n  [\n    'Papua New Guinea',\n    'pg',\n    '675',\n  ],\n  [\n    'Paraguay',\n    'py',\n    '595',\n  ],\n  [\n    'Peru (Perú)',\n    'pe',\n    '51',\n  ],\n  [\n    'Philippines',\n    'ph',\n    '63',\n  ],\n  [\n    'Poland (Polska)',\n    'pl',\n    '48',\n  ],\n  [\n    'Portugal',\n    'pt',\n    '351',\n  ],\n  [\n    'Puerto Rico',\n    'pr',\n    '1',\n    3,\n    ['787', '939'],\n  ],\n  [\n    'Qatar (‫قطر‬‎)',\n    'qa',\n    '974',\n  ],\n  [\n    'Réunion (La Réunion)',\n    're',\n    '262',\n    0,\n  ],\n  [\n    'Romania (România)',\n    'ro',\n    '40',\n  ],\n  [\n    'Russia (Россия)',\n    'ru',\n    '7',\n    0,\n  ],\n  [\n    'Rwanda',\n    'rw',\n    '250',\n  ],\n  [\n    'Saint Barthélemy',\n    'bl',\n    '590',\n    1,\n  ],\n  [\n    'Saint Helena',\n    'sh',\n    '290',\n  ],\n  [\n    'Saint Kitts and Nevis',\n    'kn',\n    '1869',\n  ],\n  [\n    'Saint Lucia',\n    'lc',\n    '1758',\n  ],\n  [\n    'Saint Martin (Saint-Martin (partie française))',\n    'mf',\n    '590',\n    2,\n  ],\n  [\n    'Saint Pierre and Miquelon (Saint-Pierre-et-Miquelon)',\n    'pm',\n    '508',\n  ],\n  [\n    'Saint Vincent and the Grenadines',\n    'vc',\n    '1784',\n  ],\n  [\n    'Samoa',\n    'ws',\n    '685',\n  ],\n  [\n    'San Marino',\n    'sm',\n    '378',\n  ],\n  [\n    'São Tomé and Príncipe (São Tomé e Príncipe)',\n    'st',\n    '239',\n  ],\n  [\n    'Saudi Arabia (‫المملكة العربية السعودية‬‎)',\n    'sa',\n    '966',\n  ],\n  [\n    'Senegal (Sénégal)',\n    'sn',\n    '221',\n  ],\n  [\n    'Serbia (Србија)',\n    'rs',\n    '381',\n  ],\n  [\n    'Seychelles',\n    'sc',\n    '248',\n  ],\n  [\n    'Sierra Leone',\n    'sl',\n    '232',\n  ],\n  [\n    'Singapore',\n    'sg',\n    '65',\n  ],\n  [\n    'Sint Maarten',\n    'sx',\n    '1721',\n  ],\n  [\n    'Slovakia (Slovensko)',\n    'sk',\n    '421',\n  ],\n  [\n    'Slovenia (Slovenija)',\n    'si',\n    '386',\n  ],\n  [\n    'Solomon Islands',\n    'sb',\n    '677',\n  ],\n  [\n    'Somalia (Soomaaliya)',\n    'so',\n    '252',\n  ],\n  [\n    'South Africa',\n    'za',\n    '27',\n  ],\n  [\n    'South Korea (대한민국)',\n    'kr',\n    '82',\n  ],\n  [\n    'South Sudan (‫جنوب السودان‬‎)',\n    'ss',\n    '211',\n  ],\n  [\n    'Spain (España)',\n    'es',\n    '34',\n  ],\n  [\n    'Sri Lanka (ශ්‍රී ලංකාව)',\n    'lk',\n    '94',\n  ],\n  [\n    'Sudan (‫السودان‬‎)',\n    'sd',\n    '249',\n  ],\n  [\n    'Suriname',\n    'sr',\n    '597',\n  ],\n  [\n    'Svalbard and Jan Mayen',\n    'sj',\n    '47',\n    1,\n  ],\n  [\n    'Swaziland',\n    'sz',\n    '268',\n  ],\n  [\n    'Sweden (Sverige)',\n    'se',\n    '46',\n  ],\n  [\n    'Switzerland (Schweiz)',\n    'ch',\n    '41',\n  ],\n  [\n    'Syria (‫سوريا‬‎)',\n    'sy',\n    '963',\n  ],\n  [\n    'Taiwan (台灣)',\n    'tw',\n    '886',\n  ],\n  [\n    'Tajikistan',\n    'tj',\n    '992',\n  ],\n  [\n    'Tanzania',\n    'tz',\n    '255',\n  ],\n  [\n    'Thailand (ไทย)',\n    'th',\n    '66',\n  ],\n  [\n    'Timor-Leste',\n    'tl',\n    '670',\n  ],\n  [\n    'Togo',\n    'tg',\n    '228',\n  ],\n  [\n    'Tokelau',\n    'tk',\n    '690',\n  ],\n  [\n    'Tonga',\n    'to',\n    '676',\n  ],\n  [\n    'Trinidad and Tobago',\n    'tt',\n    '1868',\n  ],\n  [\n    'Tunisia (‫تونس‬‎)',\n    'tn',\n    '216',\n  ],\n  [\n    'Turkey (Türkiye)',\n    'tr',\n    '90',\n  ],\n  [\n    'Turkmenistan',\n    'tm',\n    '993',\n  ],\n  [\n    'Turks and Caicos Islands',\n    'tc',\n    '1649',\n  ],\n  [\n    'Tuvalu',\n    'tv',\n    '688',\n  ],\n  [\n    'U.S. Virgin Islands',\n    'vi',\n    '1340',\n  ],\n  [\n    'Uganda',\n    'ug',\n    '256',\n  ],\n  [\n    'Ukraine (Україна)',\n    'ua',\n    '380',\n  ],\n  [\n    'United Arab Emirates (‫الإمارات العربية المتحدة‬‎)',\n    'ae',\n    '971',\n  ],\n  [\n    'United Kingdom',\n    'gb',\n    '44',\n    0,\n  ],\n  [\n    'United States',\n    'us',\n    '1',\n    0,\n  ],\n  [\n    'Uruguay',\n    'uy',\n    '598',\n  ],\n  [\n    'Uzbekistan (Oʻzbekiston)',\n    'uz',\n    '998',\n  ],\n  [\n    'Vanuatu',\n    'vu',\n    '678',\n  ],\n  [\n    'Vatican City (Città del Vaticano)',\n    'va',\n    '39',\n    1,\n  ],\n  [\n    'Venezuela',\n    've',\n    '58',\n  ],\n  [\n    'Vietnam (Việt Nam)',\n    'vn',\n    '84',\n  ],\n  [\n    'Wallis and Futuna (Wallis-et-Futuna)',\n    'wf',\n    '681',\n  ],\n  [\n    'Western Sahara (‫الصحراء الغربية‬‎)',\n    'eh',\n    '212',\n    1,\n  ],\n  [\n    'Yemen (‫اليمن‬‎)',\n    'ye',\n    '967',\n  ],\n  [\n    'Zambia',\n    'zm',\n    '260',\n  ],\n  [\n    'Zimbabwe',\n    'zw',\n    '263',\n  ],\n  [\n    'Åland Islands',\n    'ax',\n    '358',\n    1,\n  ],\n];\n\nexport default allCountries.map(country => ({\n  name: country[0],\n  iso2: country[1].toUpperCase(),\n  dialCode: country[2],\n  priority: country[3] || 0,\n  areaCodes: country[4] || null,\n}));\n","var global =\n  (typeof globalThis !== 'undefined' && globalThis) ||\n  (typeof self !== 'undefined' && self) ||\n  (typeof global !== 'undefined' && global)\n\nvar support = {\n  searchParams: 'URLSearchParams' in global,\n  iterable: 'Symbol' in global && 'iterator' in Symbol,\n  blob:\n    'FileReader' in global &&\n    'Blob' in global &&\n    (function() {\n      try {\n        new Blob()\n        return true\n      } catch (e) {\n        return false\n      }\n    })(),\n  formData: 'FormData' in global,\n  arrayBuffer: 'ArrayBuffer' in global\n}\n\nfunction isDataView(obj) {\n  return obj && DataView.prototype.isPrototypeOf(obj)\n}\n\nif (support.arrayBuffer) {\n  var viewClasses = [\n    '[object Int8Array]',\n    '[object Uint8Array]',\n    '[object Uint8ClampedArray]',\n    '[object Int16Array]',\n    '[object Uint16Array]',\n    '[object Int32Array]',\n    '[object Uint32Array]',\n    '[object Float32Array]',\n    '[object Float64Array]'\n  ]\n\n  var isArrayBufferView =\n    ArrayBuffer.isView ||\n    function(obj) {\n      return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n    }\n}\n\nfunction normalizeName(name) {\n  if (typeof name !== 'string') {\n    name = String(name)\n  }\n  if (/[^a-z0-9\\-#$%&'*+.^_`|~!]/i.test(name) || name === '') {\n    throw new TypeError('Invalid character in header field name: \"' + name + '\"')\n  }\n  return name.toLowerCase()\n}\n\nfunction normalizeValue(value) {\n  if (typeof value !== 'string') {\n    value = String(value)\n  }\n  return value\n}\n\n// Build a destructive iterator for the value list\nfunction iteratorFor(items) {\n  var iterator = {\n    next: function() {\n      var value = items.shift()\n      return {done: value === undefined, value: value}\n    }\n  }\n\n  if (support.iterable) {\n    iterator[Symbol.iterator] = function() {\n      return iterator\n    }\n  }\n\n  return iterator\n}\n\nexport function Headers(headers) {\n  this.map = {}\n\n  if (headers instanceof Headers) {\n    headers.forEach(function(value, name) {\n      this.append(name, value)\n    }, this)\n  } else if (Array.isArray(headers)) {\n    headers.forEach(function(header) {\n      this.append(header[0], header[1])\n    }, this)\n  } else if (headers) {\n    Object.getOwnPropertyNames(headers).forEach(function(name) {\n      this.append(name, headers[name])\n    }, this)\n  }\n}\n\nHeaders.prototype.append = function(name, value) {\n  name = normalizeName(name)\n  value = normalizeValue(value)\n  var oldValue = this.map[name]\n  this.map[name] = oldValue ? oldValue + ', ' + value : value\n}\n\nHeaders.prototype['delete'] = function(name) {\n  delete this.map[normalizeName(name)]\n}\n\nHeaders.prototype.get = function(name) {\n  name = normalizeName(name)\n  return this.has(name) ? this.map[name] : null\n}\n\nHeaders.prototype.has = function(name) {\n  return this.map.hasOwnProperty(normalizeName(name))\n}\n\nHeaders.prototype.set = function(name, value) {\n  this.map[normalizeName(name)] = normalizeValue(value)\n}\n\nHeaders.prototype.forEach = function(callback, thisArg) {\n  for (var name in this.map) {\n    if (this.map.hasOwnProperty(name)) {\n      callback.call(thisArg, this.map[name], name, this)\n    }\n  }\n}\n\nHeaders.prototype.keys = function() {\n  var items = []\n  this.forEach(function(value, name) {\n    items.push(name)\n  })\n  return iteratorFor(items)\n}\n\nHeaders.prototype.values = function() {\n  var items = []\n  this.forEach(function(value) {\n    items.push(value)\n  })\n  return iteratorFor(items)\n}\n\nHeaders.prototype.entries = function() {\n  var items = []\n  this.forEach(function(value, name) {\n    items.push([name, value])\n  })\n  return iteratorFor(items)\n}\n\nif (support.iterable) {\n  Headers.prototype[Symbol.iterator] = Headers.prototype.entries\n}\n\nfunction consumed(body) {\n  if (body.bodyUsed) {\n    return Promise.reject(new TypeError('Already read'))\n  }\n  body.bodyUsed = true\n}\n\nfunction fileReaderReady(reader) {\n  return new Promise(function(resolve, reject) {\n    reader.onload = function() {\n      resolve(reader.result)\n    }\n    reader.onerror = function() {\n      reject(reader.error)\n    }\n  })\n}\n\nfunction readBlobAsArrayBuffer(blob) {\n  var reader = new FileReader()\n  var promise = fileReaderReady(reader)\n  reader.readAsArrayBuffer(blob)\n  return promise\n}\n\nfunction readBlobAsText(blob) {\n  var reader = new FileReader()\n  var promise = fileReaderReady(reader)\n  reader.readAsText(blob)\n  return promise\n}\n\nfunction readArrayBufferAsText(buf) {\n  var view = new Uint8Array(buf)\n  var chars = new Array(view.length)\n\n  for (var i = 0; i < view.length; i++) {\n    chars[i] = String.fromCharCode(view[i])\n  }\n  return chars.join('')\n}\n\nfunction bufferClone(buf) {\n  if (buf.slice) {\n    return buf.slice(0)\n  } else {\n    var view = new Uint8Array(buf.byteLength)\n    view.set(new Uint8Array(buf))\n    return view.buffer\n  }\n}\n\nfunction Body() {\n  this.bodyUsed = false\n\n  this._initBody = function(body) {\n    /*\n      fetch-mock wraps the Response object in an ES6 Proxy to\n      provide useful test harness features such as flush. However, on\n      ES5 browsers without fetch or Proxy support pollyfills must be used;\n      the proxy-pollyfill is unable to proxy an attribute unless it exists\n      on the object before the Proxy is created. This change ensures\n      Response.bodyUsed exists on the instance, while maintaining the\n      semantic of setting Request.bodyUsed in the constructor before\n      _initBody is called.\n    */\n    this.bodyUsed = this.bodyUsed\n    this._bodyInit = body\n    if (!body) {\n      this._bodyText = ''\n    } else if (typeof body === 'string') {\n      this._bodyText = body\n    } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n      this._bodyBlob = body\n    } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n      this._bodyFormData = body\n    } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n      this._bodyText = body.toString()\n    } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n      this._bodyArrayBuffer = bufferClone(body.buffer)\n      // IE 10-11 can't handle a DataView body.\n      this._bodyInit = new Blob([this._bodyArrayBuffer])\n    } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n      this._bodyArrayBuffer = bufferClone(body)\n    } else {\n      this._bodyText = body = Object.prototype.toString.call(body)\n    }\n\n    if (!this.headers.get('content-type')) {\n      if (typeof body === 'string') {\n        this.headers.set('content-type', 'text/plain;charset=UTF-8')\n      } else if (this._bodyBlob && this._bodyBlob.type) {\n        this.headers.set('content-type', this._bodyBlob.type)\n      } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n        this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8')\n      }\n    }\n  }\n\n  if (support.blob) {\n    this.blob = function() {\n      var rejected = consumed(this)\n      if (rejected) {\n        return rejected\n      }\n\n      if (this._bodyBlob) {\n        return Promise.resolve(this._bodyBlob)\n      } else if (this._bodyArrayBuffer) {\n        return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n      } else if (this._bodyFormData) {\n        throw new Error('could not read FormData body as blob')\n      } else {\n        return Promise.resolve(new Blob([this._bodyText]))\n      }\n    }\n\n    this.arrayBuffer = function() {\n      if (this._bodyArrayBuffer) {\n        var isConsumed = consumed(this)\n        if (isConsumed) {\n          return isConsumed\n        }\n        if (ArrayBuffer.isView(this._bodyArrayBuffer)) {\n          return Promise.resolve(\n            this._bodyArrayBuffer.buffer.slice(\n              this._bodyArrayBuffer.byteOffset,\n              this._bodyArrayBuffer.byteOffset + this._bodyArrayBuffer.byteLength\n            )\n          )\n        } else {\n          return Promise.resolve(this._bodyArrayBuffer)\n        }\n      } else {\n        return this.blob().then(readBlobAsArrayBuffer)\n      }\n    }\n  }\n\n  this.text = function() {\n    var rejected = consumed(this)\n    if (rejected) {\n      return rejected\n    }\n\n    if (this._bodyBlob) {\n      return readBlobAsText(this._bodyBlob)\n    } else if (this._bodyArrayBuffer) {\n      return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n    } else if (this._bodyFormData) {\n      throw new Error('could not read FormData body as text')\n    } else {\n      return Promise.resolve(this._bodyText)\n    }\n  }\n\n  if (support.formData) {\n    this.formData = function() {\n      return this.text().then(decode)\n    }\n  }\n\n  this.json = function() {\n    return this.text().then(JSON.parse)\n  }\n\n  return this\n}\n\n// HTTP methods whose capitalization should be normalized\nvar methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT']\n\nfunction normalizeMethod(method) {\n  var upcased = method.toUpperCase()\n  return methods.indexOf(upcased) > -1 ? upcased : method\n}\n\nexport function Request(input, options) {\n  if (!(this instanceof Request)) {\n    throw new TypeError('Please use the \"new\" operator, this DOM object constructor cannot be called as a function.')\n  }\n\n  options = options || {}\n  var body = options.body\n\n  if (input instanceof Request) {\n    if (input.bodyUsed) {\n      throw new TypeError('Already read')\n    }\n    this.url = input.url\n    this.credentials = input.credentials\n    if (!options.headers) {\n      this.headers = new Headers(input.headers)\n    }\n    this.method = input.method\n    this.mode = input.mode\n    this.signal = input.signal\n    if (!body && input._bodyInit != null) {\n      body = input._bodyInit\n      input.bodyUsed = true\n    }\n  } else {\n    this.url = String(input)\n  }\n\n  this.credentials = options.credentials || this.credentials || 'same-origin'\n  if (options.headers || !this.headers) {\n    this.headers = new Headers(options.headers)\n  }\n  this.method = normalizeMethod(options.method || this.method || 'GET')\n  this.mode = options.mode || this.mode || null\n  this.signal = options.signal || this.signal\n  this.referrer = null\n\n  if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n    throw new TypeError('Body not allowed for GET or HEAD requests')\n  }\n  this._initBody(body)\n\n  if (this.method === 'GET' || this.method === 'HEAD') {\n    if (options.cache === 'no-store' || options.cache === 'no-cache') {\n      // Search for a '_' parameter in the query string\n      var reParamSearch = /([?&])_=[^&]*/\n      if (reParamSearch.test(this.url)) {\n        // If it already exists then set the value with the current time\n        this.url = this.url.replace(reParamSearch, '$1_=' + new Date().getTime())\n      } else {\n        // Otherwise add a new '_' parameter to the end with the current time\n        var reQueryString = /\\?/\n        this.url += (reQueryString.test(this.url) ? '&' : '?') + '_=' + new Date().getTime()\n      }\n    }\n  }\n}\n\nRequest.prototype.clone = function() {\n  return new Request(this, {body: this._bodyInit})\n}\n\nfunction decode(body) {\n  var form = new FormData()\n  body\n    .trim()\n    .split('&')\n    .forEach(function(bytes) {\n      if (bytes) {\n        var split = bytes.split('=')\n        var name = split.shift().replace(/\\+/g, ' ')\n        var value = split.join('=').replace(/\\+/g, ' ')\n        form.append(decodeURIComponent(name), decodeURIComponent(value))\n      }\n    })\n  return form\n}\n\nfunction parseHeaders(rawHeaders) {\n  var headers = new Headers()\n  // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n  // https://tools.ietf.org/html/rfc7230#section-3.2\n  var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ')\n  // Avoiding split via regex to work around a common IE11 bug with the core-js 3.6.0 regex polyfill\n  // https://github.com/github/fetch/issues/748\n  // https://github.com/zloirock/core-js/issues/751\n  preProcessedHeaders\n    .split('\\r')\n    .map(function(header) {\n      return header.indexOf('\\n') === 0 ? header.substr(1, header.length) : header\n    })\n    .forEach(function(line) {\n      var parts = line.split(':')\n      var key = parts.shift().trim()\n      if (key) {\n        var value = parts.join(':').trim()\n        headers.append(key, value)\n      }\n    })\n  return headers\n}\n\nBody.call(Request.prototype)\n\nexport function Response(bodyInit, options) {\n  if (!(this instanceof Response)) {\n    throw new TypeError('Please use the \"new\" operator, this DOM object constructor cannot be called as a function.')\n  }\n  if (!options) {\n    options = {}\n  }\n\n  this.type = 'default'\n  this.status = options.status === undefined ? 200 : options.status\n  this.ok = this.status >= 200 && this.status < 300\n  this.statusText = options.statusText === undefined ? '' : '' + options.statusText\n  this.headers = new Headers(options.headers)\n  this.url = options.url || ''\n  this._initBody(bodyInit)\n}\n\nBody.call(Response.prototype)\n\nResponse.prototype.clone = function() {\n  return new Response(this._bodyInit, {\n    status: this.status,\n    statusText: this.statusText,\n    headers: new Headers(this.headers),\n    url: this.url\n  })\n}\n\nResponse.error = function() {\n  var response = new Response(null, {status: 0, statusText: ''})\n  response.type = 'error'\n  return response\n}\n\nvar redirectStatuses = [301, 302, 303, 307, 308]\n\nResponse.redirect = function(url, status) {\n  if (redirectStatuses.indexOf(status) === -1) {\n    throw new RangeError('Invalid status code')\n  }\n\n  return new Response(null, {status: status, headers: {location: url}})\n}\n\nexport var DOMException = global.DOMException\ntry {\n  new DOMException()\n} catch (err) {\n  DOMException = function(message, name) {\n    this.message = message\n    this.name = name\n    var error = Error(message)\n    this.stack = error.stack\n  }\n  DOMException.prototype = Object.create(Error.prototype)\n  DOMException.prototype.constructor = DOMException\n}\n\nexport function fetch(input, init) {\n  return new Promise(function(resolve, reject) {\n    var request = new Request(input, init)\n\n    if (request.signal && request.signal.aborted) {\n      return reject(new DOMException('Aborted', 'AbortError'))\n    }\n\n    var xhr = new XMLHttpRequest()\n\n    function abortXhr() {\n      xhr.abort()\n    }\n\n    xhr.onload = function() {\n      var options = {\n        status: xhr.status,\n        statusText: xhr.statusText,\n        headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n      }\n      options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL')\n      var body = 'response' in xhr ? xhr.response : xhr.responseText\n      setTimeout(function() {\n        resolve(new Response(body, options))\n      }, 0)\n    }\n\n    xhr.onerror = function() {\n      setTimeout(function() {\n        reject(new TypeError('Network request failed'))\n      }, 0)\n    }\n\n    xhr.ontimeout = function() {\n      setTimeout(function() {\n        reject(new TypeError('Network request failed'))\n      }, 0)\n    }\n\n    xhr.onabort = function() {\n      setTimeout(function() {\n        reject(new DOMException('Aborted', 'AbortError'))\n      }, 0)\n    }\n\n    function fixUrl(url) {\n      try {\n        return url === '' && global.location.href ? global.location.href : url\n      } catch (e) {\n        return url\n      }\n    }\n\n    xhr.open(request.method, fixUrl(request.url), true)\n\n    if (request.credentials === 'include') {\n      xhr.withCredentials = true\n    } else if (request.credentials === 'omit') {\n      xhr.withCredentials = false\n    }\n\n    if ('responseType' in xhr) {\n      if (support.blob) {\n        xhr.responseType = 'blob'\n      } else if (\n        support.arrayBuffer &&\n        request.headers.get('Content-Type') &&\n        request.headers.get('Content-Type').indexOf('application/octet-stream') !== -1\n      ) {\n        xhr.responseType = 'arraybuffer'\n      }\n    }\n\n    if (init && typeof init.headers === 'object' && !(init.headers instanceof Headers)) {\n      Object.getOwnPropertyNames(init.headers).forEach(function(name) {\n        xhr.setRequestHeader(name, normalizeValue(init.headers[name]))\n      })\n    } else {\n      request.headers.forEach(function(value, name) {\n        xhr.setRequestHeader(name, value)\n      })\n    }\n\n    if (request.signal) {\n      request.signal.addEventListener('abort', abortXhr)\n\n      xhr.onreadystatechange = function() {\n        // DONE (success or failure)\n        if (xhr.readyState === 4) {\n          request.signal.removeEventListener('abort', abortXhr)\n        }\n      }\n    }\n\n    xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit)\n  })\n}\n\nfetch.polyfill = true\n\nif (!global.fetch) {\n  global.fetch = fetch\n  global.Headers = Headers\n  global.Request = Request\n  global.Response = Response\n}\n","import allCountries from './all-countries';\nimport 'whatwg-fetch';\n\nexport function getCountry() {\n  return fetch('https://ip2c.org/s')\n    .then(response => response.text())\n    .then((response) => {\n      const result = (response || '').toString();\n\n      if (!result || result[0] !== '1') {\n        throw new Error('unable to fetch the country');\n      }\n\n      return result.substr(2, 2);\n    });\n}\n\n// Credits: http://blog.vishalon.net/index.php/javascript-getting-and-setting-caret-position-in-textarea/\nexport function setCaretPosition(ctrl, pos) {\n  // Modern browsers\n  if (ctrl.setSelectionRange) {\n    ctrl.focus();\n    ctrl.setSelectionRange(pos, pos);\n\n  // IE8 and below\n  } else if (ctrl.createTextRange) {\n    const range = ctrl.createTextRange();\n    range.collapse(true);\n    range.moveEnd('character', pos);\n    range.moveStart('character', pos);\n    range.select();\n  }\n}\n\nexport const defaultOptions = {\n  placeholder: 'Enter a phone number',\n  label: 'Enter a Phone Number',\n  disabledFetchingCountry: false,\n  disabled: false,\n  disabledFormatting: false,\n  mode: '',\n  invalidMsg: '',\n  required: false,\n  allCountries,\n  defaultCountry: '',\n  enabledCountryCode: false,\n  enabledFlags: true,\n  preferredCountries: [],\n  onlyCountries: [],\n  ignoredCountries: [],\n  autofocus: false,\n  autocomplete: 'on',\n  name: 'telephone',\n  wrapperClasses: '',\n  inputClasses: '',\n  inputId: '',\n  dropdownOptions: {},\n  inputOptions: {},\n  maxLen: 25,\n  dynamicPlaceholder: false,\n};\n\nexport default {\n  options: { ...defaultOptions },\n};\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","/* global attachEvent */\n\n/**\n * Module requirements.\n */\n\nvar XMLHttpRequest = require('xmlhttprequest-ssl');\nvar Polling = require('./polling');\nvar Emitter = require('component-emitter');\nvar inherit = require('component-inherit');\nvar debug = require('debug')('engine.io-client:polling-xhr');\nvar globalThis = require('../globalThis');\n\n/**\n * Module exports.\n */\n\nmodule.exports = XHR;\nmodule.exports.Request = Request;\n\n/**\n * Empty function\n */\n\nfunction empty () {}\n\n/**\n * XHR Polling constructor.\n *\n * @param {Object} opts\n * @api public\n */\n\nfunction XHR (opts) {\n  Polling.call(this, opts);\n  this.requestTimeout = opts.requestTimeout;\n  this.extraHeaders = opts.extraHeaders;\n\n  if (typeof location !== 'undefined') {\n    var isSSL = 'https:' === location.protocol;\n    var port = location.port;\n\n    // some user agents have empty `location.port`\n    if (!port) {\n      port = isSSL ? 443 : 80;\n    }\n\n    this.xd = (typeof location !== 'undefined' && opts.hostname !== location.hostname) ||\n      port !== opts.port;\n    this.xs = opts.secure !== isSSL;\n  }\n}\n\n/**\n * Inherits from Polling.\n */\n\ninherit(XHR, Polling);\n\n/**\n * XHR supports binary\n */\n\nXHR.prototype.supportsBinary = true;\n\n/**\n * Creates a request.\n *\n * @param {String} method\n * @api private\n */\n\nXHR.prototype.request = function (opts) {\n  opts = opts || {};\n  opts.uri = this.uri();\n  opts.xd = this.xd;\n  opts.xs = this.xs;\n  opts.agent = this.agent || false;\n  opts.supportsBinary = this.supportsBinary;\n  opts.enablesXDR = this.enablesXDR;\n  opts.withCredentials = this.withCredentials;\n\n  // SSL options for Node.js client\n  opts.pfx = this.pfx;\n  opts.key = this.key;\n  opts.passphrase = this.passphrase;\n  opts.cert = this.cert;\n  opts.ca = this.ca;\n  opts.ciphers = this.ciphers;\n  opts.rejectUnauthorized = this.rejectUnauthorized;\n  opts.requestTimeout = this.requestTimeout;\n\n  // other options for Node.js client\n  opts.extraHeaders = this.extraHeaders;\n\n  return new Request(opts);\n};\n\n/**\n * Sends data.\n *\n * @param {String} data to send.\n * @param {Function} called upon flush.\n * @api private\n */\n\nXHR.prototype.doWrite = function (data, fn) {\n  var isBinary = typeof data !== 'string' && data !== undefined;\n  var req = this.request({ method: 'POST', data: data, isBinary: isBinary });\n  var self = this;\n  req.on('success', fn);\n  req.on('error', function (err) {\n    self.onError('xhr post error', err);\n  });\n  this.sendXhr = req;\n};\n\n/**\n * Starts a poll cycle.\n *\n * @api private\n */\n\nXHR.prototype.doPoll = function () {\n  debug('xhr poll');\n  var req = this.request();\n  var self = this;\n  req.on('data', function (data) {\n    self.onData(data);\n  });\n  req.on('error', function (err) {\n    self.onError('xhr poll error', err);\n  });\n  this.pollXhr = req;\n};\n\n/**\n * Request constructor\n *\n * @param {Object} options\n * @api public\n */\n\nfunction Request (opts) {\n  this.method = opts.method || 'GET';\n  this.uri = opts.uri;\n  this.xd = !!opts.xd;\n  this.xs = !!opts.xs;\n  this.async = false !== opts.async;\n  this.data = undefined !== opts.data ? opts.data : null;\n  this.agent = opts.agent;\n  this.isBinary = opts.isBinary;\n  this.supportsBinary = opts.supportsBinary;\n  this.enablesXDR = opts.enablesXDR;\n  this.withCredentials = opts.withCredentials;\n  this.requestTimeout = opts.requestTimeout;\n\n  // SSL options for Node.js client\n  this.pfx = opts.pfx;\n  this.key = opts.key;\n  this.passphrase = opts.passphrase;\n  this.cert = opts.cert;\n  this.ca = opts.ca;\n  this.ciphers = opts.ciphers;\n  this.rejectUnauthorized = opts.rejectUnauthorized;\n\n  // other options for Node.js client\n  this.extraHeaders = opts.extraHeaders;\n\n  this.create();\n}\n\n/**\n * Mix in `Emitter`.\n */\n\nEmitter(Request.prototype);\n\n/**\n * Creates the XHR object and sends the request.\n *\n * @api private\n */\n\nRequest.prototype.create = function () {\n  var opts = { agent: this.agent, xdomain: this.xd, xscheme: this.xs, enablesXDR: this.enablesXDR };\n\n  // SSL options for Node.js client\n  opts.pfx = this.pfx;\n  opts.key = this.key;\n  opts.passphrase = this.passphrase;\n  opts.cert = this.cert;\n  opts.ca = this.ca;\n  opts.ciphers = this.ciphers;\n  opts.rejectUnauthorized = this.rejectUnauthorized;\n\n  var xhr = this.xhr = new XMLHttpRequest(opts);\n  var self = this;\n\n  try {\n    debug('xhr open %s: %s', this.method, this.uri);\n    xhr.open(this.method, this.uri, this.async);\n    try {\n      if (this.extraHeaders) {\n        xhr.setDisableHeaderCheck && xhr.setDisableHeaderCheck(true);\n        for (var i in this.extraHeaders) {\n          if (this.extraHeaders.hasOwnProperty(i)) {\n            xhr.setRequestHeader(i, this.extraHeaders[i]);\n          }\n        }\n      }\n    } catch (e) {}\n\n    if ('POST' === this.method) {\n      try {\n        if (this.isBinary) {\n          xhr.setRequestHeader('Content-type', 'application/octet-stream');\n        } else {\n          xhr.setRequestHeader('Content-type', 'text/plain;charset=UTF-8');\n        }\n      } catch (e) {}\n    }\n\n    try {\n      xhr.setRequestHeader('Accept', '*/*');\n    } catch (e) {}\n\n    // ie6 check\n    if ('withCredentials' in xhr) {\n      xhr.withCredentials = this.withCredentials;\n    }\n\n    if (this.requestTimeout) {\n      xhr.timeout = this.requestTimeout;\n    }\n\n    if (this.hasXDR()) {\n      xhr.onload = function () {\n        self.onLoad();\n      };\n      xhr.onerror = function () {\n        self.onError(xhr.responseText);\n      };\n    } else {\n      xhr.onreadystatechange = function () {\n        if (xhr.readyState === 2) {\n          try {\n            var contentType = xhr.getResponseHeader('Content-Type');\n            if (self.supportsBinary && contentType === 'application/octet-stream' || contentType === 'application/octet-stream; charset=UTF-8') {\n              xhr.responseType = 'arraybuffer';\n            }\n          } catch (e) {}\n        }\n        if (4 !== xhr.readyState) return;\n        if (200 === xhr.status || 1223 === xhr.status) {\n          self.onLoad();\n        } else {\n          // make sure the `error` event handler that's user-set\n          // does not throw in the same tick and gets caught here\n          setTimeout(function () {\n            self.onError(typeof xhr.status === 'number' ? xhr.status : 0);\n          }, 0);\n        }\n      };\n    }\n\n    debug('xhr data %s', this.data);\n    xhr.send(this.data);\n  } catch (e) {\n    // Need to defer since .create() is called directly fhrom the constructor\n    // and thus the 'error' event can only be only bound *after* this exception\n    // occurs.  Therefore, also, we cannot throw here at all.\n    setTimeout(function () {\n      self.onError(e);\n    }, 0);\n    return;\n  }\n\n  if (typeof document !== 'undefined') {\n    this.index = Request.requestsCount++;\n    Request.requests[this.index] = this;\n  }\n};\n\n/**\n * Called upon successful response.\n *\n * @api private\n */\n\nRequest.prototype.onSuccess = function () {\n  this.emit('success');\n  this.cleanup();\n};\n\n/**\n * Called if we have data.\n *\n * @api private\n */\n\nRequest.prototype.onData = function (data) {\n  this.emit('data', data);\n  this.onSuccess();\n};\n\n/**\n * Called upon error.\n *\n * @api private\n */\n\nRequest.prototype.onError = function (err) {\n  this.emit('error', err);\n  this.cleanup(true);\n};\n\n/**\n * Cleans up house.\n *\n * @api private\n */\n\nRequest.prototype.cleanup = function (fromError) {\n  if ('undefined' === typeof this.xhr || null === this.xhr) {\n    return;\n  }\n  // xmlhttprequest\n  if (this.hasXDR()) {\n    this.xhr.onload = this.xhr.onerror = empty;\n  } else {\n    this.xhr.onreadystatechange = empty;\n  }\n\n  if (fromError) {\n    try {\n      this.xhr.abort();\n    } catch (e) {}\n  }\n\n  if (typeof document !== 'undefined') {\n    delete Request.requests[this.index];\n  }\n\n  this.xhr = null;\n};\n\n/**\n * Called upon load.\n *\n * @api private\n */\n\nRequest.prototype.onLoad = function () {\n  var data;\n  try {\n    var contentType;\n    try {\n      contentType = this.xhr.getResponseHeader('Content-Type');\n    } catch (e) {}\n    if (contentType === 'application/octet-stream' || contentType === 'application/octet-stream; charset=UTF-8') {\n      data = this.xhr.response || this.xhr.responseText;\n    } else {\n      data = this.xhr.responseText;\n    }\n  } catch (e) {\n    this.onError(e);\n  }\n  if (null != data) {\n    this.onData(data);\n  }\n};\n\n/**\n * Check if it has XDomainRequest.\n *\n * @api private\n */\n\nRequest.prototype.hasXDR = function () {\n  return typeof XDomainRequest !== 'undefined' && !this.xs && this.enablesXDR;\n};\n\n/**\n * Aborts the request.\n *\n * @api public\n */\n\nRequest.prototype.abort = function () {\n  this.cleanup();\n};\n\n/**\n * Aborts pending requests when unloading the window. This is needed to prevent\n * memory leaks (e.g. when using IE) and to ensure that no spurious error is\n * emitted.\n */\n\nRequest.requestsCount = 0;\nRequest.requests = {};\n\nif (typeof document !== 'undefined') {\n  if (typeof attachEvent === 'function') {\n    attachEvent('onunload', unloadHandler);\n  } else if (typeof addEventListener === 'function') {\n    var terminationEvent = 'onpagehide' in globalThis ? 'pagehide' : 'unload';\n    addEventListener(terminationEvent, unloadHandler, false);\n  }\n}\n\nfunction unloadHandler () {\n  for (var i in Request.requests) {\n    if (Request.requests.hasOwnProperty(i)) {\n      Request.requests[i].abort();\n    }\n  }\n}\n","var baseIsArguments = require('./_baseIsArguments'),\n    isObjectLike = require('./isObjectLike');\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/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` 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 `arguments` object,\n *  else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n  return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n    !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","module.exports = function (it) {\n  return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","/**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\nfunction baseSortBy(array, comparer) {\n  var length = array.length;\n\n  array.sort(comparer);\n  while (length--) {\n    array[length] = array[length].value;\n  }\n  return array;\n}\n\nmodule.exports = baseSortBy;\n","// all enumerable object keys, includes symbols\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nmodule.exports = function (it) {\n  var result = getKeys(it);\n  var getSymbols = gOPS.f;\n  if (getSymbols) {\n    var symbols = getSymbols(it);\n    var isEnum = pIE.f;\n    var i = 0;\n    var key;\n    while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key);\n  } return result;\n};\n","module.exports = function (done, value) {\n  return { value: value, done: !!done };\n};\n","module.exports = function isBuffer(arg) {\n  return arg && typeof arg === 'object'\n    && typeof arg.copy === 'function'\n    && typeof arg.fill === 'function'\n    && typeof arg.readUInt8 === 'function';\n}","var MapCache = require('./_MapCache'),\n    setCacheAdd = require('./_setCacheAdd'),\n    setCacheHas = require('./_setCacheHas');\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n  var index = -1,\n      length = values == null ? 0 : values.length;\n\n  this.__data__ = new MapCache;\n  while (++index < length) {\n    this.add(values[index]);\n  }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nmodule.exports = SetCache;\n","/**\n * Alignment pattern are fixed reference pattern in defined positions\n * in a matrix symbology, which enables the decode software to re-synchronise\n * the coordinate mapping of the image modules in the event of moderate amounts\n * of distortion of the image.\n *\n * Alignment patterns are present only in QR Code symbols of version 2 or larger\n * and their number depends on the symbol version.\n */\n\nconst getSymbolSize = require('./utils').getSymbolSize\n\n/**\n * Calculate the row/column coordinates of the center module of each alignment pattern\n * for the specified QR Code version.\n *\n * The alignment patterns are positioned symmetrically on either side of the diagonal\n * running from the top left corner of the symbol to the bottom right corner.\n *\n * Since positions are simmetrical only half of the coordinates are returned.\n * Each item of the array will represent in turn the x and y coordinate.\n * @see {@link getPositions}\n *\n * @param  {Number} version QR Code version\n * @return {Array}          Array of coordinate\n */\nexports.getRowColCoords = function getRowColCoords (version) {\n  if (version === 1) return []\n\n  const posCount = Math.floor(version / 7) + 2\n  const size = getSymbolSize(version)\n  const intervals = size === 145 ? 26 : Math.ceil((size - 13) / (2 * posCount - 2)) * 2\n  const positions = [size - 7] // Last coord is always (size - 7)\n\n  for (let i = 1; i < posCount - 1; i++) {\n    positions[i] = positions[i - 1] - intervals\n  }\n\n  positions.push(6) // First coord is always 6\n\n  return positions.reverse()\n}\n\n/**\n * Returns an array containing the positions of each alignment pattern.\n * Each array's element represent the center point of the pattern as (x, y) coordinates\n *\n * Coordinates are calculated expanding the row/column coordinates returned by {@link getRowColCoords}\n * and filtering out the items that overlaps with finder pattern\n *\n * @example\n * For a Version 7 symbol {@link getRowColCoords} returns values 6, 22 and 38.\n * The alignment patterns, therefore, are to be centered on (row, column)\n * positions (6,22), (22,6), (22,22), (22,38), (38,22), (38,38).\n * Note that the coordinates (6,6), (6,38), (38,6) are occupied by finder patterns\n * and are not therefore used for alignment patterns.\n *\n * let pos = getPositions(7)\n * // [[6,22], [22,6], [22,22], [22,38], [38,22], [38,38]]\n *\n * @param  {Number} version QR Code version\n * @return {Array}          Array of coordinates\n */\nexports.getPositions = function getPositions (version) {\n  const coords = []\n  const pos = exports.getRowColCoords(version)\n  const posLength = pos.length\n\n  for (let i = 0; i < posLength; i++) {\n    for (let j = 0; j < posLength; j++) {\n      // Skip if position is occupied by finder patterns\n      if ((i === 0 && j === 0) || // top-left\n          (i === 0 && j === posLength - 1) || // bottom-left\n          (i === posLength - 1 && j === 0)) { // top-right\n        continue\n      }\n\n      coords.push([pos[i], pos[j]])\n    }\n  }\n\n  return coords\n}\n","/**\r\n * Create a blob builder even when vendor prefixes exist\r\n */\r\n\r\nvar BlobBuilder = typeof BlobBuilder !== 'undefined' ? BlobBuilder :\r\n  typeof WebKitBlobBuilder !== 'undefined' ? WebKitBlobBuilder :\r\n  typeof MSBlobBuilder !== 'undefined' ? MSBlobBuilder :\r\n  typeof MozBlobBuilder !== 'undefined' ? MozBlobBuilder : \r\n  false;\r\n\r\n/**\r\n * Check if Blob constructor is supported\r\n */\r\n\r\nvar blobSupported = (function() {\r\n  try {\r\n    var a = new Blob(['hi']);\r\n    return a.size === 2;\r\n  } catch(e) {\r\n    return false;\r\n  }\r\n})();\r\n\r\n/**\r\n * Check if Blob constructor supports ArrayBufferViews\r\n * Fails in Safari 6, so we need to map to ArrayBuffers there.\r\n */\r\n\r\nvar blobSupportsArrayBufferView = blobSupported && (function() {\r\n  try {\r\n    var b = new Blob([new Uint8Array([1,2])]);\r\n    return b.size === 2;\r\n  } catch(e) {\r\n    return false;\r\n  }\r\n})();\r\n\r\n/**\r\n * Check if BlobBuilder is supported\r\n */\r\n\r\nvar blobBuilderSupported = BlobBuilder\r\n  && BlobBuilder.prototype.append\r\n  && BlobBuilder.prototype.getBlob;\r\n\r\n/**\r\n * Helper function that maps ArrayBufferViews to ArrayBuffers\r\n * Used by BlobBuilder constructor and old browsers that didn't\r\n * support it in the Blob constructor.\r\n */\r\n\r\nfunction mapArrayBufferViews(ary) {\r\n  return ary.map(function(chunk) {\r\n    if (chunk.buffer instanceof ArrayBuffer) {\r\n      var buf = chunk.buffer;\r\n\r\n      // if this is a subarray, make a copy so we only\r\n      // include the subarray region from the underlying buffer\r\n      if (chunk.byteLength !== buf.byteLength) {\r\n        var copy = new Uint8Array(chunk.byteLength);\r\n        copy.set(new Uint8Array(buf, chunk.byteOffset, chunk.byteLength));\r\n        buf = copy.buffer;\r\n      }\r\n\r\n      return buf;\r\n    }\r\n\r\n    return chunk;\r\n  });\r\n}\r\n\r\nfunction BlobBuilderConstructor(ary, options) {\r\n  options = options || {};\r\n\r\n  var bb = new BlobBuilder();\r\n  mapArrayBufferViews(ary).forEach(function(part) {\r\n    bb.append(part);\r\n  });\r\n\r\n  return (options.type) ? bb.getBlob(options.type) : bb.getBlob();\r\n};\r\n\r\nfunction BlobConstructor(ary, options) {\r\n  return new Blob(mapArrayBufferViews(ary), options || {});\r\n};\r\n\r\nif (typeof Blob !== 'undefined') {\r\n  BlobBuilderConstructor.prototype = Blob.prototype;\r\n  BlobConstructor.prototype = Blob.prototype;\r\n}\r\n\r\nmodule.exports = (function() {\r\n  if (blobSupported) {\r\n    return blobSupportsArrayBufferView ? Blob : BlobConstructor;\r\n  } else if (blobBuilderSupported) {\r\n    return BlobBuilderConstructor;\r\n  } else {\r\n    return undefined;\r\n  }\r\n})();\r\n","var baseIsSet = require('./_baseIsSet'),\n    baseUnary = require('./_baseUnary'),\n    nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsSet = nodeUtil && nodeUtil.isSet;\n\n/**\n * Checks if `value` is classified as a `Set` object.\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 set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\nvar isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\nmodule.exports = isSet;\n","\n/**\n * Module exports.\n */\n\nmodule.exports = on;\n\n/**\n * Helper for subscriptions.\n *\n * @param {Object|EventEmitter} obj with `Emitter` mixin or `EventEmitter`\n * @param {String} event name\n * @param {Function} callback\n * @api public\n */\n\nfunction on (obj, ev, fn) {\n  obj.on(ev, fn);\n  return {\n    destroy: function () {\n      obj.removeListener(ev, fn);\n    }\n  };\n}\n","module.exports = function (it) {\n  if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n  return it;\n};\n","module.exports = (function () {\n  if (typeof self !== 'undefined') {\n    return self;\n  } else if (typeof window !== 'undefined') {\n    return window;\n  } else {\n    return Function('return this')(); // eslint-disable-line no-new-func\n  }\n})();\n","/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n  return value !== value;\n}\n\nmodule.exports = baseIsNaN;\n","/* eslint-disable no-console */\nimport Vuetify from '../framework';\n\nfunction createMessage(message, vm, parent) {\n  if (Vuetify.config.silent) return;\n\n  if (parent) {\n    vm = {\n      _isVue: true,\n      $parent: parent,\n      $options: vm\n    };\n  }\n\n  if (vm) {\n    // Only show each message once per instance\n    vm.$_alreadyWarned = vm.$_alreadyWarned || [];\n    if (vm.$_alreadyWarned.includes(message)) return;\n    vm.$_alreadyWarned.push(message);\n  }\n\n  return `[Vuetify] ${message}` + (vm ? generateComponentTrace(vm) : '');\n}\n\nexport function consoleInfo(message, vm, parent) {\n  const newMessage = createMessage(message, vm, parent);\n  newMessage != null && console.info(newMessage);\n}\nexport function consoleWarn(message, vm, parent) {\n  const newMessage = createMessage(message, vm, parent);\n  newMessage != null && console.warn(newMessage);\n}\nexport function consoleError(message, vm, parent) {\n  const newMessage = createMessage(message, vm, parent);\n  newMessage != null && console.error(newMessage);\n}\nexport function deprecate(original, replacement, vm, parent) {\n  consoleWarn(`[UPGRADE] '${original}' is deprecated, use '${replacement}' instead.`, vm, parent);\n}\nexport function breaking(original, replacement, vm, parent) {\n  consoleError(`[BREAKING] '${original}' has been removed, use '${replacement}' instead. For more information, see the upgrade guide https://github.com/vuetifyjs/vuetify/releases/tag/v2.0.0#user-content-upgrade-guide`, vm, parent);\n}\nexport function removed(original, vm, parent) {\n  consoleWarn(`[REMOVED] '${original}' has been removed. You can safely omit it.`, vm, parent);\n}\n/**\n * Shamelessly stolen from vuejs/vue/blob/dev/src/core/util/debug.js\n */\n\nconst classifyRE = /(?:^|[-_])(\\w)/g;\n\nconst classify = str => str.replace(classifyRE, c => c.toUpperCase()).replace(/[-_]/g, '');\n\nfunction formatComponentName(vm, includeFile) {\n  if (vm.$root === vm) {\n    return '<Root>';\n  }\n\n  const options = typeof vm === 'function' && vm.cid != null ? vm.options : vm._isVue ? vm.$options || vm.constructor.options : vm || {};\n  let name = options.name || options._componentTag;\n  const file = options.__file;\n\n  if (!name && file) {\n    const match = file.match(/([^/\\\\]+)\\.vue$/);\n    name = match && match[1];\n  }\n\n  return (name ? `<${classify(name)}>` : `<Anonymous>`) + (file && includeFile !== false ? ` at ${file}` : '');\n}\n\nfunction generateComponentTrace(vm) {\n  if (vm._isVue && vm.$parent) {\n    const tree = [];\n    let currentRecursiveSequence = 0;\n\n    while (vm) {\n      if (tree.length > 0) {\n        const last = tree[tree.length - 1];\n\n        if (last.constructor === vm.constructor) {\n          currentRecursiveSequence++;\n          vm = vm.$parent;\n          continue;\n        } else if (currentRecursiveSequence > 0) {\n          tree[tree.length - 1] = [last, currentRecursiveSequence];\n          currentRecursiveSequence = 0;\n        }\n      }\n\n      tree.push(vm);\n      vm = vm.$parent;\n    }\n\n    return '\\n\\nfound in\\n\\n' + tree.map((vm, i) => `${i === 0 ? '---> ' : ' '.repeat(5 + i * 2)}${Array.isArray(vm) ? `${formatComponentName(vm[0])}... (${vm[1]} recursive calls)` : formatComponentName(vm)}`).join('\\n');\n  } else {\n    return `\\n\\n(found in ${formatComponentName(vm)})`;\n  }\n}\n//# sourceMappingURL=console.js.map","import { camelize, wrapInArray } from './helpers';\nconst pattern = {\n  styleList: /;(?![^(]*\\))/g,\n  styleProp: /:(.*)/\n};\n\nfunction parseStyle(style) {\n  const styleMap = {};\n\n  for (const s of style.split(pattern.styleList)) {\n    let [key, val] = s.split(pattern.styleProp);\n    key = key.trim();\n\n    if (!key) {\n      continue;\n    } // May be undefined if the `key: value` pair is incomplete.\n\n\n    if (typeof val === 'string') {\n      val = val.trim();\n    }\n\n    styleMap[camelize(key)] = val;\n  }\n\n  return styleMap;\n}\n\nexport default function mergeData() {\n  const mergeTarget = {};\n  let i = arguments.length;\n  let prop; // Allow for variadic argument length.\n\n  while (i--) {\n    // Iterate through the data properties and execute merge strategies\n    // Object.keys eliminates need for hasOwnProperty call\n    for (prop of Object.keys(arguments[i])) {\n      switch (prop) {\n        // Array merge strategy (array concatenation)\n        case 'class':\n        case 'directives':\n          if (arguments[i][prop]) {\n            mergeTarget[prop] = mergeClasses(mergeTarget[prop], arguments[i][prop]);\n          }\n\n          break;\n\n        case 'style':\n          if (arguments[i][prop]) {\n            mergeTarget[prop] = mergeStyles(mergeTarget[prop], arguments[i][prop]);\n          }\n\n          break;\n        // Space delimited string concatenation strategy\n\n        case 'staticClass':\n          if (!arguments[i][prop]) {\n            break;\n          }\n\n          if (mergeTarget[prop] === undefined) {\n            mergeTarget[prop] = '';\n          }\n\n          if (mergeTarget[prop]) {\n            // Not an empty string, so concatenate\n            mergeTarget[prop] += ' ';\n          }\n\n          mergeTarget[prop] += arguments[i][prop].trim();\n          break;\n        // Object, the properties of which to merge via array merge strategy (array concatenation).\n        // Callback merge strategy merges callbacks to the beginning of the array,\n        // so that the last defined callback will be invoked first.\n        // This is done since to mimic how Object.assign merging\n        // uses the last given value to assign.\n\n        case 'on':\n        case 'nativeOn':\n          if (arguments[i][prop]) {\n            mergeTarget[prop] = mergeListeners(mergeTarget[prop], arguments[i][prop]);\n          }\n\n          break;\n        // Object merge strategy\n\n        case 'attrs':\n        case 'props':\n        case 'domProps':\n        case 'scopedSlots':\n        case 'staticStyle':\n        case 'hook':\n        case 'transition':\n          if (!arguments[i][prop]) {\n            break;\n          }\n\n          if (!mergeTarget[prop]) {\n            mergeTarget[prop] = {};\n          }\n\n          mergeTarget[prop] = { ...arguments[i][prop],\n            ...mergeTarget[prop]\n          };\n          break;\n        // Reassignment strategy (no merge)\n\n        default:\n          // slot, key, ref, tag, show, keepAlive\n          if (!mergeTarget[prop]) {\n            mergeTarget[prop] = arguments[i][prop];\n          }\n\n      }\n    }\n  }\n\n  return mergeTarget;\n}\nexport function mergeStyles(target, source) {\n  if (!target) return source;\n  if (!source) return target;\n  target = wrapInArray(typeof target === 'string' ? parseStyle(target) : target);\n  return target.concat(typeof source === 'string' ? parseStyle(source) : source);\n}\nexport function mergeClasses(target, source) {\n  if (!source) return target;\n  if (!target) return source;\n  return target ? wrapInArray(target).concat(source) : source;\n}\nexport function mergeListeners(...args) {\n  if (!args[0]) return args[1];\n  if (!args[1]) return args[0];\n  const dest = {};\n\n  for (let i = 2; i--;) {\n    const arg = args[i];\n\n    for (const event in arg) {\n      if (!arg[event]) continue;\n\n      if (dest[event]) {\n        // Merge current listeners before (because we are iterating backwards).\n        // Note that neither \"target\" or \"source\" must be altered.\n        dest[event] = [].concat(arg[event], dest[event]);\n      } else {\n        // Straight assign.\n        dest[event] = arg[event];\n      }\n    }\n  }\n\n  return dest;\n}\n//# sourceMappingURL=mergeData.js.map","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","// Styles\nimport \"../../../src/components/VList/VListItem.sass\"; // Mixins\n\nimport Colorable from '../../mixins/colorable';\nimport Routable from '../../mixins/routable';\nimport { factory as GroupableFactory } from '../../mixins/groupable';\nimport Themeable from '../../mixins/themeable';\nimport { factory as ToggleableFactory } from '../../mixins/toggleable'; // Directives\n\nimport Ripple from '../../directives/ripple'; // Utilities\n\nimport { keyCodes } from './../../util/helpers';\nimport { removed } from '../../util/console'; // Types\n\nimport mixins from '../../util/mixins';\nconst baseMixins = mixins(Colorable, Routable, Themeable, GroupableFactory('listItemGroup'), ToggleableFactory('inputValue'));\n/* @vue/component */\n\nexport default baseMixins.extend().extend({\n  name: 'v-list-item',\n  directives: {\n    Ripple\n  },\n  inject: {\n    isInGroup: {\n      default: false\n    },\n    isInList: {\n      default: false\n    },\n    isInMenu: {\n      default: false\n    },\n    isInNav: {\n      default: false\n    }\n  },\n  inheritAttrs: false,\n  props: {\n    activeClass: {\n      type: String,\n\n      default() {\n        if (!this.listItemGroup) return '';\n        return this.listItemGroup.activeClass;\n      }\n\n    },\n    dense: Boolean,\n    inactive: Boolean,\n    link: Boolean,\n    selectable: {\n      type: Boolean\n    },\n    tag: {\n      type: String,\n      default: 'div'\n    },\n    threeLine: Boolean,\n    twoLine: Boolean,\n    value: null\n  },\n  data: () => ({\n    proxyClass: 'v-list-item--active'\n  }),\n  computed: {\n    classes() {\n      return {\n        'v-list-item': true,\n        ...Routable.options.computed.classes.call(this),\n        'v-list-item--dense': this.dense,\n        'v-list-item--disabled': this.disabled,\n        'v-list-item--link': this.isClickable && !this.inactive,\n        'v-list-item--selectable': this.selectable,\n        'v-list-item--three-line': this.threeLine,\n        'v-list-item--two-line': this.twoLine,\n        ...this.themeClasses\n      };\n    },\n\n    isClickable() {\n      return Boolean(Routable.options.computed.isClickable.call(this) || this.listItemGroup);\n    }\n\n  },\n\n  created() {\n    /* istanbul ignore next */\n    if (this.$attrs.hasOwnProperty('avatar')) {\n      removed('avatar', this);\n    }\n  },\n\n  methods: {\n    click(e) {\n      if (e.detail) this.$el.blur();\n      this.$emit('click', e);\n      this.to || this.toggle();\n    },\n\n    genAttrs() {\n      const attrs = {\n        'aria-disabled': this.disabled ? true : undefined,\n        tabindex: this.isClickable && !this.disabled ? 0 : -1,\n        ...this.$attrs\n      };\n\n      if (this.$attrs.hasOwnProperty('role')) {// do nothing, role already provided\n      } else if (this.isInNav) {// do nothing, role is inherit\n      } else if (this.isInGroup) {\n        attrs.role = 'option';\n        attrs['aria-selected'] = String(this.isActive);\n      } else if (this.isInMenu) {\n        attrs.role = this.isClickable ? 'menuitem' : undefined;\n        attrs.id = attrs.id || `list-item-${this._uid}`;\n      } else if (this.isInList) {\n        attrs.role = 'listitem';\n      }\n\n      return attrs;\n    },\n\n    toggle() {\n      if (this.to && this.inputValue === undefined) {\n        this.isActive = !this.isActive;\n      }\n\n      this.$emit('change');\n    }\n\n  },\n\n  render(h) {\n    let {\n      tag,\n      data\n    } = this.generateRouteLink();\n    data.attrs = { ...data.attrs,\n      ...this.genAttrs()\n    };\n    data[this.to ? 'nativeOn' : 'on'] = { ...data[this.to ? 'nativeOn' : 'on'],\n      keydown: e => {\n        /* istanbul ignore else */\n        if (e.keyCode === keyCodes.enter) this.click(e);\n        this.$emit('keydown', e);\n      }\n    };\n    if (this.inactive) tag = 'div';\n\n    if (this.inactive && this.to) {\n      data.on = data.nativeOn;\n      delete data.nativeOn;\n    }\n\n    const children = this.$scopedSlots.default ? this.$scopedSlots.default({\n      active: this.isActive,\n      toggle: this.toggle\n    }) : this.$slots.default;\n    return h(tag, this.isActive ? this.setTextColor(this.color, data) : data, children);\n  }\n\n});\n//# sourceMappingURL=VListItem.js.map","/**\n * Module dependencies.\n */\n\nvar transports = require('./transports/index');\nvar Emitter = require('component-emitter');\nvar debug = require('debug')('engine.io-client:socket');\nvar index = require('indexof');\nvar parser = require('engine.io-parser');\nvar parseuri = require('parseuri');\nvar parseqs = require('parseqs');\n\n/**\n * Module exports.\n */\n\nmodule.exports = Socket;\n\n/**\n * Socket constructor.\n *\n * @param {String|Object} uri or options\n * @param {Object} options\n * @api public\n */\n\nfunction Socket (uri, opts) {\n  if (!(this instanceof Socket)) return new Socket(uri, opts);\n\n  opts = opts || {};\n\n  if (uri && 'object' === typeof uri) {\n    opts = uri;\n    uri = null;\n  }\n\n  if (uri) {\n    uri = parseuri(uri);\n    opts.hostname = uri.host;\n    opts.secure = uri.protocol === 'https' || uri.protocol === 'wss';\n    opts.port = uri.port;\n    if (uri.query) opts.query = uri.query;\n  } else if (opts.host) {\n    opts.hostname = parseuri(opts.host).host;\n  }\n\n  this.secure = null != opts.secure ? opts.secure\n    : (typeof location !== 'undefined' && 'https:' === location.protocol);\n\n  if (opts.hostname && !opts.port) {\n    // if no port is specified manually, use the protocol default\n    opts.port = this.secure ? '443' : '80';\n  }\n\n  this.agent = opts.agent || false;\n  this.hostname = opts.hostname ||\n    (typeof location !== 'undefined' ? location.hostname : 'localhost');\n  this.port = opts.port || (typeof location !== 'undefined' && location.port\n      ? location.port\n      : (this.secure ? 443 : 80));\n  this.query = opts.query || {};\n  if ('string' === typeof this.query) this.query = parseqs.decode(this.query);\n  this.upgrade = false !== opts.upgrade;\n  this.path = (opts.path || '/engine.io').replace(/\\/$/, '') + '/';\n  this.forceJSONP = !!opts.forceJSONP;\n  this.jsonp = false !== opts.jsonp;\n  this.forceBase64 = !!opts.forceBase64;\n  this.enablesXDR = !!opts.enablesXDR;\n  this.withCredentials = false !== opts.withCredentials;\n  this.timestampParam = opts.timestampParam || 't';\n  this.timestampRequests = opts.timestampRequests;\n  this.transports = opts.transports || ['polling', 'websocket'];\n  this.transportOptions = opts.transportOptions || {};\n  this.readyState = '';\n  this.writeBuffer = [];\n  this.prevBufferLen = 0;\n  this.policyPort = opts.policyPort || 843;\n  this.rememberUpgrade = opts.rememberUpgrade || false;\n  this.binaryType = null;\n  this.onlyBinaryUpgrades = opts.onlyBinaryUpgrades;\n  this.perMessageDeflate = false !== opts.perMessageDeflate ? (opts.perMessageDeflate || {}) : false;\n\n  if (true === this.perMessageDeflate) this.perMessageDeflate = {};\n  if (this.perMessageDeflate && null == this.perMessageDeflate.threshold) {\n    this.perMessageDeflate.threshold = 1024;\n  }\n\n  // SSL options for Node.js client\n  this.pfx = opts.pfx || undefined;\n  this.key = opts.key || undefined;\n  this.passphrase = opts.passphrase || undefined;\n  this.cert = opts.cert || undefined;\n  this.ca = opts.ca || undefined;\n  this.ciphers = opts.ciphers || undefined;\n  this.rejectUnauthorized = opts.rejectUnauthorized === undefined ? true : opts.rejectUnauthorized;\n  this.forceNode = !!opts.forceNode;\n\n  // detect ReactNative environment\n  this.isReactNative = (typeof navigator !== 'undefined' && typeof navigator.product === 'string' && navigator.product.toLowerCase() === 'reactnative');\n\n  // other options for Node.js or ReactNative client\n  if (typeof self === 'undefined' || this.isReactNative) {\n    if (opts.extraHeaders && Object.keys(opts.extraHeaders).length > 0) {\n      this.extraHeaders = opts.extraHeaders;\n    }\n\n    if (opts.localAddress) {\n      this.localAddress = opts.localAddress;\n    }\n  }\n\n  // set on handshake\n  this.id = null;\n  this.upgrades = null;\n  this.pingInterval = null;\n  this.pingTimeout = null;\n\n  // set on heartbeat\n  this.pingIntervalTimer = null;\n  this.pingTimeoutTimer = null;\n\n  this.open();\n}\n\nSocket.priorWebsocketSuccess = false;\n\n/**\n * Mix in `Emitter`.\n */\n\nEmitter(Socket.prototype);\n\n/**\n * Protocol version.\n *\n * @api public\n */\n\nSocket.protocol = parser.protocol; // this is an int\n\n/**\n * Expose deps for legacy compatibility\n * and standalone browser access.\n */\n\nSocket.Socket = Socket;\nSocket.Transport = require('./transport');\nSocket.transports = require('./transports/index');\nSocket.parser = require('engine.io-parser');\n\n/**\n * Creates transport of the given type.\n *\n * @param {String} transport name\n * @return {Transport}\n * @api private\n */\n\nSocket.prototype.createTransport = function (name) {\n  debug('creating transport \"%s\"', name);\n  var query = clone(this.query);\n\n  // append engine.io protocol identifier\n  query.EIO = parser.protocol;\n\n  // transport name\n  query.transport = name;\n\n  // per-transport options\n  var options = this.transportOptions[name] || {};\n\n  // session id if we already have one\n  if (this.id) query.sid = this.id;\n\n  var transport = new transports[name]({\n    query: query,\n    socket: this,\n    agent: options.agent || this.agent,\n    hostname: options.hostname || this.hostname,\n    port: options.port || this.port,\n    secure: options.secure || this.secure,\n    path: options.path || this.path,\n    forceJSONP: options.forceJSONP || this.forceJSONP,\n    jsonp: options.jsonp || this.jsonp,\n    forceBase64: options.forceBase64 || this.forceBase64,\n    enablesXDR: options.enablesXDR || this.enablesXDR,\n    withCredentials: options.withCredentials || this.withCredentials,\n    timestampRequests: options.timestampRequests || this.timestampRequests,\n    timestampParam: options.timestampParam || this.timestampParam,\n    policyPort: options.policyPort || this.policyPort,\n    pfx: options.pfx || this.pfx,\n    key: options.key || this.key,\n    passphrase: options.passphrase || this.passphrase,\n    cert: options.cert || this.cert,\n    ca: options.ca || this.ca,\n    ciphers: options.ciphers || this.ciphers,\n    rejectUnauthorized: options.rejectUnauthorized || this.rejectUnauthorized,\n    perMessageDeflate: options.perMessageDeflate || this.perMessageDeflate,\n    extraHeaders: options.extraHeaders || this.extraHeaders,\n    forceNode: options.forceNode || this.forceNode,\n    localAddress: options.localAddress || this.localAddress,\n    requestTimeout: options.requestTimeout || this.requestTimeout,\n    protocols: options.protocols || void (0),\n    isReactNative: this.isReactNative\n  });\n\n  return transport;\n};\n\nfunction clone (obj) {\n  var o = {};\n  for (var i in obj) {\n    if (obj.hasOwnProperty(i)) {\n      o[i] = obj[i];\n    }\n  }\n  return o;\n}\n\n/**\n * Initializes transport to use and starts probe.\n *\n * @api private\n */\nSocket.prototype.open = function () {\n  var transport;\n  if (this.rememberUpgrade && Socket.priorWebsocketSuccess && this.transports.indexOf('websocket') !== -1) {\n    transport = 'websocket';\n  } else if (0 === this.transports.length) {\n    // Emit error on next tick so it can be listened to\n    var self = this;\n    setTimeout(function () {\n      self.emit('error', 'No transports available');\n    }, 0);\n    return;\n  } else {\n    transport = this.transports[0];\n  }\n  this.readyState = 'opening';\n\n  // Retry with the next transport if the transport is disabled (jsonp: false)\n  try {\n    transport = this.createTransport(transport);\n  } catch (e) {\n    this.transports.shift();\n    this.open();\n    return;\n  }\n\n  transport.open();\n  this.setTransport(transport);\n};\n\n/**\n * Sets the current transport. Disables the existing one (if any).\n *\n * @api private\n */\n\nSocket.prototype.setTransport = function (transport) {\n  debug('setting transport %s', transport.name);\n  var self = this;\n\n  if (this.transport) {\n    debug('clearing existing transport %s', this.transport.name);\n    this.transport.removeAllListeners();\n  }\n\n  // set up transport\n  this.transport = transport;\n\n  // set up transport listeners\n  transport\n  .on('drain', function () {\n    self.onDrain();\n  })\n  .on('packet', function (packet) {\n    self.onPacket(packet);\n  })\n  .on('error', function (e) {\n    self.onError(e);\n  })\n  .on('close', function () {\n    self.onClose('transport close');\n  });\n};\n\n/**\n * Probes a transport.\n *\n * @param {String} transport name\n * @api private\n */\n\nSocket.prototype.probe = function (name) {\n  debug('probing transport \"%s\"', name);\n  var transport = this.createTransport(name, { probe: 1 });\n  var failed = false;\n  var self = this;\n\n  Socket.priorWebsocketSuccess = false;\n\n  function onTransportOpen () {\n    if (self.onlyBinaryUpgrades) {\n      var upgradeLosesBinary = !this.supportsBinary && self.transport.supportsBinary;\n      failed = failed || upgradeLosesBinary;\n    }\n    if (failed) return;\n\n    debug('probe transport \"%s\" opened', name);\n    transport.send([{ type: 'ping', data: 'probe' }]);\n    transport.once('packet', function (msg) {\n      if (failed) return;\n      if ('pong' === msg.type && 'probe' === msg.data) {\n        debug('probe transport \"%s\" pong', name);\n        self.upgrading = true;\n        self.emit('upgrading', transport);\n        if (!transport) return;\n        Socket.priorWebsocketSuccess = 'websocket' === transport.name;\n\n        debug('pausing current transport \"%s\"', self.transport.name);\n        self.transport.pause(function () {\n          if (failed) return;\n          if ('closed' === self.readyState) return;\n          debug('changing transport and sending upgrade packet');\n\n          cleanup();\n\n          self.setTransport(transport);\n          transport.send([{ type: 'upgrade' }]);\n          self.emit('upgrade', transport);\n          transport = null;\n          self.upgrading = false;\n          self.flush();\n        });\n      } else {\n        debug('probe transport \"%s\" failed', name);\n        var err = new Error('probe error');\n        err.transport = transport.name;\n        self.emit('upgradeError', err);\n      }\n    });\n  }\n\n  function freezeTransport () {\n    if (failed) return;\n\n    // Any callback called by transport should be ignored since now\n    failed = true;\n\n    cleanup();\n\n    transport.close();\n    transport = null;\n  }\n\n  // Handle any error that happens while probing\n  function onerror (err) {\n    var error = new Error('probe error: ' + err);\n    error.transport = transport.name;\n\n    freezeTransport();\n\n    debug('probe transport \"%s\" failed because of error: %s', name, err);\n\n    self.emit('upgradeError', error);\n  }\n\n  function onTransportClose () {\n    onerror('transport closed');\n  }\n\n  // When the socket is closed while we're probing\n  function onclose () {\n    onerror('socket closed');\n  }\n\n  // When the socket is upgraded while we're probing\n  function onupgrade (to) {\n    if (transport && to.name !== transport.name) {\n      debug('\"%s\" works - aborting \"%s\"', to.name, transport.name);\n      freezeTransport();\n    }\n  }\n\n  // Remove all listeners on the transport and on self\n  function cleanup () {\n    transport.removeListener('open', onTransportOpen);\n    transport.removeListener('error', onerror);\n    transport.removeListener('close', onTransportClose);\n    self.removeListener('close', onclose);\n    self.removeListener('upgrading', onupgrade);\n  }\n\n  transport.once('open', onTransportOpen);\n  transport.once('error', onerror);\n  transport.once('close', onTransportClose);\n\n  this.once('close', onclose);\n  this.once('upgrading', onupgrade);\n\n  transport.open();\n};\n\n/**\n * Called when connection is deemed open.\n *\n * @api public\n */\n\nSocket.prototype.onOpen = function () {\n  debug('socket open');\n  this.readyState = 'open';\n  Socket.priorWebsocketSuccess = 'websocket' === this.transport.name;\n  this.emit('open');\n  this.flush();\n\n  // we check for `readyState` in case an `open`\n  // listener already closed the socket\n  if ('open' === this.readyState && this.upgrade && this.transport.pause) {\n    debug('starting upgrade probes');\n    for (var i = 0, l = this.upgrades.length; i < l; i++) {\n      this.probe(this.upgrades[i]);\n    }\n  }\n};\n\n/**\n * Handles a packet.\n *\n * @api private\n */\n\nSocket.prototype.onPacket = function (packet) {\n  if ('opening' === this.readyState || 'open' === this.readyState ||\n      'closing' === this.readyState) {\n    debug('socket receive: type \"%s\", data \"%s\"', packet.type, packet.data);\n\n    this.emit('packet', packet);\n\n    // Socket is live - any packet counts\n    this.emit('heartbeat');\n\n    switch (packet.type) {\n      case 'open':\n        this.onHandshake(JSON.parse(packet.data));\n        break;\n\n      case 'pong':\n        this.setPing();\n        this.emit('pong');\n        break;\n\n      case 'error':\n        var err = new Error('server error');\n        err.code = packet.data;\n        this.onError(err);\n        break;\n\n      case 'message':\n        this.emit('data', packet.data);\n        this.emit('message', packet.data);\n        break;\n    }\n  } else {\n    debug('packet received with socket readyState \"%s\"', this.readyState);\n  }\n};\n\n/**\n * Called upon handshake completion.\n *\n * @param {Object} handshake obj\n * @api private\n */\n\nSocket.prototype.onHandshake = function (data) {\n  this.emit('handshake', data);\n  this.id = data.sid;\n  this.transport.query.sid = data.sid;\n  this.upgrades = this.filterUpgrades(data.upgrades);\n  this.pingInterval = data.pingInterval;\n  this.pingTimeout = data.pingTimeout;\n  this.onOpen();\n  // In case open handler closes socket\n  if ('closed' === this.readyState) return;\n  this.setPing();\n\n  // Prolong liveness of socket on heartbeat\n  this.removeListener('heartbeat', this.onHeartbeat);\n  this.on('heartbeat', this.onHeartbeat);\n};\n\n/**\n * Resets ping timeout.\n *\n * @api private\n */\n\nSocket.prototype.onHeartbeat = function (timeout) {\n  clearTimeout(this.pingTimeoutTimer);\n  var self = this;\n  self.pingTimeoutTimer = setTimeout(function () {\n    if ('closed' === self.readyState) return;\n    self.onClose('ping timeout');\n  }, timeout || (self.pingInterval + self.pingTimeout));\n};\n\n/**\n * Pings server every `this.pingInterval` and expects response\n * within `this.pingTimeout` or closes connection.\n *\n * @api private\n */\n\nSocket.prototype.setPing = function () {\n  var self = this;\n  clearTimeout(self.pingIntervalTimer);\n  self.pingIntervalTimer = setTimeout(function () {\n    debug('writing ping packet - expecting pong within %sms', self.pingTimeout);\n    self.ping();\n    self.onHeartbeat(self.pingTimeout);\n  }, self.pingInterval);\n};\n\n/**\n* Sends a ping packet.\n*\n* @api private\n*/\n\nSocket.prototype.ping = function () {\n  var self = this;\n  this.sendPacket('ping', function () {\n    self.emit('ping');\n  });\n};\n\n/**\n * Called on `drain` event\n *\n * @api private\n */\n\nSocket.prototype.onDrain = function () {\n  this.writeBuffer.splice(0, this.prevBufferLen);\n\n  // setting prevBufferLen = 0 is very important\n  // for example, when upgrading, upgrade packet is sent over,\n  // and a nonzero prevBufferLen could cause problems on `drain`\n  this.prevBufferLen = 0;\n\n  if (0 === this.writeBuffer.length) {\n    this.emit('drain');\n  } else {\n    this.flush();\n  }\n};\n\n/**\n * Flush write buffers.\n *\n * @api private\n */\n\nSocket.prototype.flush = function () {\n  if ('closed' !== this.readyState && this.transport.writable &&\n    !this.upgrading && this.writeBuffer.length) {\n    debug('flushing %d packets in socket', this.writeBuffer.length);\n    this.transport.send(this.writeBuffer);\n    // keep track of current length of writeBuffer\n    // splice writeBuffer and callbackBuffer on `drain`\n    this.prevBufferLen = this.writeBuffer.length;\n    this.emit('flush');\n  }\n};\n\n/**\n * Sends a message.\n *\n * @param {String} message.\n * @param {Function} callback function.\n * @param {Object} options.\n * @return {Socket} for chaining.\n * @api public\n */\n\nSocket.prototype.write =\nSocket.prototype.send = function (msg, options, fn) {\n  this.sendPacket('message', msg, options, fn);\n  return this;\n};\n\n/**\n * Sends a packet.\n *\n * @param {String} packet type.\n * @param {String} data.\n * @param {Object} options.\n * @param {Function} callback function.\n * @api private\n */\n\nSocket.prototype.sendPacket = function (type, data, options, fn) {\n  if ('function' === typeof data) {\n    fn = data;\n    data = undefined;\n  }\n\n  if ('function' === typeof options) {\n    fn = options;\n    options = null;\n  }\n\n  if ('closing' === this.readyState || 'closed' === this.readyState) {\n    return;\n  }\n\n  options = options || {};\n  options.compress = false !== options.compress;\n\n  var packet = {\n    type: type,\n    data: data,\n    options: options\n  };\n  this.emit('packetCreate', packet);\n  this.writeBuffer.push(packet);\n  if (fn) this.once('flush', fn);\n  this.flush();\n};\n\n/**\n * Closes the connection.\n *\n * @api private\n */\n\nSocket.prototype.close = function () {\n  if ('opening' === this.readyState || 'open' === this.readyState) {\n    this.readyState = 'closing';\n\n    var self = this;\n\n    if (this.writeBuffer.length) {\n      this.once('drain', function () {\n        if (this.upgrading) {\n          waitForUpgrade();\n        } else {\n          close();\n        }\n      });\n    } else if (this.upgrading) {\n      waitForUpgrade();\n    } else {\n      close();\n    }\n  }\n\n  function close () {\n    self.onClose('forced close');\n    debug('socket closing - telling transport to close');\n    self.transport.close();\n  }\n\n  function cleanupAndClose () {\n    self.removeListener('upgrade', cleanupAndClose);\n    self.removeListener('upgradeError', cleanupAndClose);\n    close();\n  }\n\n  function waitForUpgrade () {\n    // wait for upgrade to finish since we can't send packets while pausing a transport\n    self.once('upgrade', cleanupAndClose);\n    self.once('upgradeError', cleanupAndClose);\n  }\n\n  return this;\n};\n\n/**\n * Called upon transport error\n *\n * @api private\n */\n\nSocket.prototype.onError = function (err) {\n  debug('socket error %j', err);\n  Socket.priorWebsocketSuccess = false;\n  this.emit('error', err);\n  this.onClose('transport error', err);\n};\n\n/**\n * Called upon transport close.\n *\n * @api private\n */\n\nSocket.prototype.onClose = function (reason, desc) {\n  if ('opening' === this.readyState || 'open' === this.readyState || 'closing' === this.readyState) {\n    debug('socket close with reason: \"%s\"', reason);\n    var self = this;\n\n    // clear timers\n    clearTimeout(this.pingIntervalTimer);\n    clearTimeout(this.pingTimeoutTimer);\n\n    // stop event from firing again for transport\n    this.transport.removeAllListeners('close');\n\n    // ensure transport won't stay open\n    this.transport.close();\n\n    // ignore further transport communication\n    this.transport.removeAllListeners();\n\n    // set ready state\n    this.readyState = 'closed';\n\n    // clear session id\n    this.id = null;\n\n    // emit close event\n    this.emit('close', reason, desc);\n\n    // clean buffers after, so users can still\n    // grab the buffers on `close` event\n    self.writeBuffer = [];\n    self.prevBufferLen = 0;\n  }\n};\n\n/**\n * Filters upgrades, returning only those matching client transports.\n *\n * @param {Array} server upgrades\n * @api private\n *\n */\n\nSocket.prototype.filterUpgrades = function (upgrades) {\n  var filteredUpgrades = [];\n  for (var i = 0, j = upgrades.length; i < j; i++) {\n    if (~index(this.transports, upgrades[i])) filteredUpgrades.push(upgrades[i]);\n  }\n  return filteredUpgrades;\n};\n","// 19.1.3.10 Object.is(value1, value2)\nvar $export = require('./_export');\n$export($export.S, 'Object', { is: require('./_same-value') });\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n  return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\n","function inserted(el, binding, vnode) {\n  const callback = binding.value;\n  const options = binding.options || {\n    passive: true\n  };\n  window.addEventListener('resize', callback, options);\n  el._onResize = Object(el._onResize);\n  el._onResize[vnode.context._uid] = {\n    callback,\n    options\n  };\n\n  if (!binding.modifiers || !binding.modifiers.quiet) {\n    callback();\n  }\n}\n\nfunction unbind(el, binding, vnode) {\n  var _el$_onResize;\n\n  if (!((_el$_onResize = el._onResize) != null && _el$_onResize[vnode.context._uid])) return;\n  const {\n    callback,\n    options\n  } = el._onResize[vnode.context._uid];\n  window.removeEventListener('resize', callback, options);\n  delete el._onResize[vnode.context._uid];\n}\n\nexport const Resize = {\n  inserted,\n  unbind\n};\nexport default Resize;\n//# sourceMappingURL=index.js.map","/** 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/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\n\nfunction setup(env) {\n\tcreateDebug.debug = createDebug;\n\tcreateDebug.default = createDebug;\n\tcreateDebug.coerce = coerce;\n\tcreateDebug.disable = disable;\n\tcreateDebug.enable = enable;\n\tcreateDebug.enabled = enabled;\n\tcreateDebug.humanize = require('ms');\n\tcreateDebug.destroy = destroy;\n\n\tObject.keys(env).forEach(key => {\n\t\tcreateDebug[key] = env[key];\n\t});\n\n\t/**\n\t* The currently active debug mode names, and names to skip.\n\t*/\n\n\tcreateDebug.names = [];\n\tcreateDebug.skips = [];\n\n\t/**\n\t* Map of special \"%n\" handling functions, for the debug \"format\" argument.\n\t*\n\t* Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n\t*/\n\tcreateDebug.formatters = {};\n\n\t/**\n\t* Selects a color for a debug namespace\n\t* @param {String} namespace The namespace string for the debug instance to be colored\n\t* @return {Number|String} An ANSI color code for the given namespace\n\t* @api private\n\t*/\n\tfunction selectColor(namespace) {\n\t\tlet hash = 0;\n\n\t\tfor (let i = 0; i < namespace.length; i++) {\n\t\t\thash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n\t\t\thash |= 0; // Convert to 32bit integer\n\t\t}\n\n\t\treturn createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n\t}\n\tcreateDebug.selectColor = selectColor;\n\n\t/**\n\t* Create a debugger with the given `namespace`.\n\t*\n\t* @param {String} namespace\n\t* @return {Function}\n\t* @api public\n\t*/\n\tfunction createDebug(namespace) {\n\t\tlet prevTime;\n\t\tlet enableOverride = null;\n\t\tlet namespacesCache;\n\t\tlet enabledCache;\n\n\t\tfunction debug(...args) {\n\t\t\t// Disabled?\n\t\t\tif (!debug.enabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst self = debug;\n\n\t\t\t// Set `diff` timestamp\n\t\t\tconst curr = Number(new Date());\n\t\t\tconst ms = curr - (prevTime || curr);\n\t\t\tself.diff = ms;\n\t\t\tself.prev = prevTime;\n\t\t\tself.curr = curr;\n\t\t\tprevTime = curr;\n\n\t\t\targs[0] = createDebug.coerce(args[0]);\n\n\t\t\tif (typeof args[0] !== 'string') {\n\t\t\t\t// Anything else let's inspect with %O\n\t\t\t\targs.unshift('%O');\n\t\t\t}\n\n\t\t\t// Apply any `formatters` transformations\n\t\t\tlet index = 0;\n\t\t\targs[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {\n\t\t\t\t// If we encounter an escaped % then don't increase the array index\n\t\t\t\tif (match === '%%') {\n\t\t\t\t\treturn '%';\n\t\t\t\t}\n\t\t\t\tindex++;\n\t\t\t\tconst formatter = createDebug.formatters[format];\n\t\t\t\tif (typeof formatter === 'function') {\n\t\t\t\t\tconst val = args[index];\n\t\t\t\t\tmatch = formatter.call(self, val);\n\n\t\t\t\t\t// Now we need to remove `args[index]` since it's inlined in the `format`\n\t\t\t\t\targs.splice(index, 1);\n\t\t\t\t\tindex--;\n\t\t\t\t}\n\t\t\t\treturn match;\n\t\t\t});\n\n\t\t\t// Apply env-specific formatting (colors, etc.)\n\t\t\tcreateDebug.formatArgs.call(self, args);\n\n\t\t\tconst logFn = self.log || createDebug.log;\n\t\t\tlogFn.apply(self, args);\n\t\t}\n\n\t\tdebug.namespace = namespace;\n\t\tdebug.useColors = createDebug.useColors();\n\t\tdebug.color = createDebug.selectColor(namespace);\n\t\tdebug.extend = extend;\n\t\tdebug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release.\n\n\t\tObject.defineProperty(debug, 'enabled', {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: false,\n\t\t\tget: () => {\n\t\t\t\tif (enableOverride !== null) {\n\t\t\t\t\treturn enableOverride;\n\t\t\t\t}\n\t\t\t\tif (namespacesCache !== createDebug.namespaces) {\n\t\t\t\t\tnamespacesCache = createDebug.namespaces;\n\t\t\t\t\tenabledCache = createDebug.enabled(namespace);\n\t\t\t\t}\n\n\t\t\t\treturn enabledCache;\n\t\t\t},\n\t\t\tset: v => {\n\t\t\t\tenableOverride = v;\n\t\t\t}\n\t\t});\n\n\t\t// Env-specific initialization logic for debug instances\n\t\tif (typeof createDebug.init === 'function') {\n\t\t\tcreateDebug.init(debug);\n\t\t}\n\n\t\treturn debug;\n\t}\n\n\tfunction extend(namespace, delimiter) {\n\t\tconst newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n\t\tnewDebug.log = this.log;\n\t\treturn newDebug;\n\t}\n\n\t/**\n\t* Enables a debug mode by namespaces. This can include modes\n\t* separated by a colon and wildcards.\n\t*\n\t* @param {String} namespaces\n\t* @api public\n\t*/\n\tfunction enable(namespaces) {\n\t\tcreateDebug.save(namespaces);\n\t\tcreateDebug.namespaces = namespaces;\n\n\t\tcreateDebug.names = [];\n\t\tcreateDebug.skips = [];\n\n\t\tlet i;\n\t\tconst split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n\t\tconst len = split.length;\n\n\t\tfor (i = 0; i < len; i++) {\n\t\t\tif (!split[i]) {\n\t\t\t\t// ignore empty strings\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tnamespaces = split[i].replace(/\\*/g, '.*?');\n\n\t\t\tif (namespaces[0] === '-') {\n\t\t\t\tcreateDebug.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));\n\t\t\t} else {\n\t\t\t\tcreateDebug.names.push(new RegExp('^' + namespaces + '$'));\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t* Disable debug output.\n\t*\n\t* @return {String} namespaces\n\t* @api public\n\t*/\n\tfunction disable() {\n\t\tconst namespaces = [\n\t\t\t...createDebug.names.map(toNamespace),\n\t\t\t...createDebug.skips.map(toNamespace).map(namespace => '-' + namespace)\n\t\t].join(',');\n\t\tcreateDebug.enable('');\n\t\treturn namespaces;\n\t}\n\n\t/**\n\t* Returns true if the given mode name is enabled, false otherwise.\n\t*\n\t* @param {String} name\n\t* @return {Boolean}\n\t* @api public\n\t*/\n\tfunction enabled(name) {\n\t\tif (name[name.length - 1] === '*') {\n\t\t\treturn true;\n\t\t}\n\n\t\tlet i;\n\t\tlet len;\n\n\t\tfor (i = 0, len = createDebug.skips.length; i < len; i++) {\n\t\t\tif (createDebug.skips[i].test(name)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tfor (i = 0, len = createDebug.names.length; i < len; i++) {\n\t\t\tif (createDebug.names[i].test(name)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t* Convert regexp to namespace\n\t*\n\t* @param {RegExp} regxep\n\t* @return {String} namespace\n\t* @api private\n\t*/\n\tfunction toNamespace(regexp) {\n\t\treturn regexp.toString()\n\t\t\t.substring(2, regexp.toString().length - 2)\n\t\t\t.replace(/\\.\\*\\?$/, '*');\n\t}\n\n\t/**\n\t* Coerce `val`.\n\t*\n\t* @param {Mixed} val\n\t* @return {Mixed}\n\t* @api private\n\t*/\n\tfunction coerce(val) {\n\t\tif (val instanceof Error) {\n\t\t\treturn val.stack || val.message;\n\t\t}\n\t\treturn val;\n\t}\n\n\t/**\n\t* XXX DO NOT USE. This is a temporary stub function.\n\t* XXX It WILL be removed in the next major release.\n\t*/\n\tfunction destroy() {\n\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t}\n\n\tcreateDebug.enable(createDebug.load());\n\n\treturn createDebug;\n}\n\nmodule.exports = setup;\n","var isArrayLike = require('./isArrayLike'),\n    isObjectLike = require('./isObjectLike');\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an 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 an array-like object,\n *  else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n  return isObjectLike(value) && isArrayLike(value);\n}\n\nmodule.exports = isArrayLikeObject;\n","const Mode = require('./mode')\n\nfunction NumericData (data) {\n  this.mode = Mode.NUMERIC\n  this.data = data.toString()\n}\n\nNumericData.getBitsLength = function getBitsLength (length) {\n  return 10 * Math.floor(length / 3) + ((length % 3) ? ((length % 3) * 3 + 1) : 0)\n}\n\nNumericData.prototype.getLength = function getLength () {\n  return this.data.length\n}\n\nNumericData.prototype.getBitsLength = function getBitsLength () {\n  return NumericData.getBitsLength(this.data.length)\n}\n\nNumericData.prototype.write = function write (bitBuffer) {\n  let i, group, value\n\n  // The input data string is divided into groups of three digits,\n  // and each group is converted to its 10-bit binary equivalent.\n  for (i = 0; i + 3 <= this.data.length; i += 3) {\n    group = this.data.substr(i, 3)\n    value = parseInt(group, 10)\n\n    bitBuffer.put(value, 10)\n  }\n\n  // If the number of input digits is not an exact multiple of three,\n  // the final one or two digits are converted to 4 or 7 bits respectively.\n  const remainingNum = this.data.length - i\n  if (remainingNum > 0) {\n    group = this.data.substr(i)\n    value = parseInt(group, 10)\n\n    bitBuffer.put(value, remainingNum * 3 + 1)\n  }\n}\n\nmodule.exports = NumericData\n","/**\n * Returns:\n *  - 'null' if the node is not attached to the DOM\n *  - the root node (HTMLDocument | ShadowRoot) otherwise\n */\nexport function attachedRoot(node) {\n  /* istanbul ignore next */\n  if (typeof node.getRootNode !== 'function') {\n    // Shadow DOM not supported (IE11), lets find the root of this node\n    while (node.parentNode) node = node.parentNode; // The root parent is the document if the node is attached to the DOM\n\n\n    if (node !== document) return null;\n    return document;\n  }\n\n  const root = node.getRootNode(); // The composed root node is the document if the node is attached to the DOM\n\n  if (root !== document && root.getRootNode({\n    composed: true\n  }) !== document) return null;\n  return root;\n}\n//# sourceMappingURL=dom.js.map","/**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyOf(object) {\n  return function(key) {\n    return object == null ? undefined : object[key];\n  };\n}\n\nmodule.exports = basePropertyOf;\n","// .dirname, .basename, and .extname methods are extracted from Node.js v8.11.1,\n// backported and transplited with Babel, with backwards-compat fixes\n\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// resolves . and .. elements in a path array with directory names there\n// must be no slashes, empty elements, or device names (c:\\) in the array\n// (so also no leading and trailing slashes - it does not distinguish\n// relative and absolute paths)\nfunction normalizeArray(parts, allowAboveRoot) {\n  // if the path tries to go above the root, `up` ends up > 0\n  var up = 0;\n  for (var i = parts.length - 1; i >= 0; i--) {\n    var last = parts[i];\n    if (last === '.') {\n      parts.splice(i, 1);\n    } else if (last === '..') {\n      parts.splice(i, 1);\n      up++;\n    } else if (up) {\n      parts.splice(i, 1);\n      up--;\n    }\n  }\n\n  // if the path is allowed to go above the root, restore leading ..s\n  if (allowAboveRoot) {\n    for (; up--; up) {\n      parts.unshift('..');\n    }\n  }\n\n  return parts;\n}\n\n// path.resolve([from ...], to)\n// posix version\nexports.resolve = function() {\n  var resolvedPath = '',\n      resolvedAbsolute = false;\n\n  for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n    var path = (i >= 0) ? arguments[i] : process.cwd();\n\n    // Skip empty and invalid entries\n    if (typeof path !== 'string') {\n      throw new TypeError('Arguments to path.resolve must be strings');\n    } else if (!path) {\n      continue;\n    }\n\n    resolvedPath = path + '/' + resolvedPath;\n    resolvedAbsolute = path.charAt(0) === '/';\n  }\n\n  // At this point the path should be resolved to a full absolute path, but\n  // handle relative paths to be safe (might happen when process.cwd() fails)\n\n  // Normalize the path\n  resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) {\n    return !!p;\n  }), !resolvedAbsolute).join('/');\n\n  return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';\n};\n\n// path.normalize(path)\n// posix version\nexports.normalize = function(path) {\n  var isAbsolute = exports.isAbsolute(path),\n      trailingSlash = substr(path, -1) === '/';\n\n  // Normalize the path\n  path = normalizeArray(filter(path.split('/'), function(p) {\n    return !!p;\n  }), !isAbsolute).join('/');\n\n  if (!path && !isAbsolute) {\n    path = '.';\n  }\n  if (path && trailingSlash) {\n    path += '/';\n  }\n\n  return (isAbsolute ? '/' : '') + path;\n};\n\n// posix version\nexports.isAbsolute = function(path) {\n  return path.charAt(0) === '/';\n};\n\n// posix version\nexports.join = function() {\n  var paths = Array.prototype.slice.call(arguments, 0);\n  return exports.normalize(filter(paths, function(p, index) {\n    if (typeof p !== 'string') {\n      throw new TypeError('Arguments to path.join must be strings');\n    }\n    return p;\n  }).join('/'));\n};\n\n\n// path.relative(from, to)\n// posix version\nexports.relative = function(from, to) {\n  from = exports.resolve(from).substr(1);\n  to = exports.resolve(to).substr(1);\n\n  function trim(arr) {\n    var start = 0;\n    for (; start < arr.length; start++) {\n      if (arr[start] !== '') break;\n    }\n\n    var end = arr.length - 1;\n    for (; end >= 0; end--) {\n      if (arr[end] !== '') break;\n    }\n\n    if (start > end) return [];\n    return arr.slice(start, end - start + 1);\n  }\n\n  var fromParts = trim(from.split('/'));\n  var toParts = trim(to.split('/'));\n\n  var length = Math.min(fromParts.length, toParts.length);\n  var samePartsLength = length;\n  for (var i = 0; i < length; i++) {\n    if (fromParts[i] !== toParts[i]) {\n      samePartsLength = i;\n      break;\n    }\n  }\n\n  var outputParts = [];\n  for (var i = samePartsLength; i < fromParts.length; i++) {\n    outputParts.push('..');\n  }\n\n  outputParts = outputParts.concat(toParts.slice(samePartsLength));\n\n  return outputParts.join('/');\n};\n\nexports.sep = '/';\nexports.delimiter = ':';\n\nexports.dirname = function (path) {\n  if (typeof path !== 'string') path = path + '';\n  if (path.length === 0) return '.';\n  var code = path.charCodeAt(0);\n  var hasRoot = code === 47 /*/*/;\n  var end = -1;\n  var matchedSlash = true;\n  for (var i = path.length - 1; i >= 1; --i) {\n    code = path.charCodeAt(i);\n    if (code === 47 /*/*/) {\n        if (!matchedSlash) {\n          end = i;\n          break;\n        }\n      } else {\n      // We saw the first non-path separator\n      matchedSlash = false;\n    }\n  }\n\n  if (end === -1) return hasRoot ? '/' : '.';\n  if (hasRoot && end === 1) {\n    // return '//';\n    // Backwards-compat fix:\n    return '/';\n  }\n  return path.slice(0, end);\n};\n\nfunction basename(path) {\n  if (typeof path !== 'string') path = path + '';\n\n  var start = 0;\n  var end = -1;\n  var matchedSlash = true;\n  var i;\n\n  for (i = path.length - 1; i >= 0; --i) {\n    if (path.charCodeAt(i) === 47 /*/*/) {\n        // If we reached a path separator that was not part of a set of path\n        // separators at the end of the string, stop now\n        if (!matchedSlash) {\n          start = i + 1;\n          break;\n        }\n      } else if (end === -1) {\n      // We saw the first non-path separator, mark this as the end of our\n      // path component\n      matchedSlash = false;\n      end = i + 1;\n    }\n  }\n\n  if (end === -1) return '';\n  return path.slice(start, end);\n}\n\n// Uses a mixed approach for backwards-compatibility, as ext behavior changed\n// in new Node.js versions, so only basename() above is backported here\nexports.basename = function (path, ext) {\n  var f = basename(path);\n  if (ext && f.substr(-1 * ext.length) === ext) {\n    f = f.substr(0, f.length - ext.length);\n  }\n  return f;\n};\n\nexports.extname = function (path) {\n  if (typeof path !== 'string') path = path + '';\n  var startDot = -1;\n  var startPart = 0;\n  var end = -1;\n  var matchedSlash = true;\n  // Track the state of characters (if any) we see before our first dot and\n  // after any path separator we find\n  var preDotState = 0;\n  for (var i = path.length - 1; i >= 0; --i) {\n    var code = path.charCodeAt(i);\n    if (code === 47 /*/*/) {\n        // If we reached a path separator that was not part of a set of path\n        // separators at the end of the string, stop now\n        if (!matchedSlash) {\n          startPart = i + 1;\n          break;\n        }\n        continue;\n      }\n    if (end === -1) {\n      // We saw the first non-path separator, mark this as the end of our\n      // extension\n      matchedSlash = false;\n      end = i + 1;\n    }\n    if (code === 46 /*.*/) {\n        // If this is our first dot, mark it as the start of our extension\n        if (startDot === -1)\n          startDot = i;\n        else if (preDotState !== 1)\n          preDotState = 1;\n    } else if (startDot !== -1) {\n      // We saw a non-dot and non-path separator before our dot, so we should\n      // have a good chance at having a non-empty extension\n      preDotState = -1;\n    }\n  }\n\n  if (startDot === -1 || end === -1 ||\n      // We saw a non-dot character immediately before the dot\n      preDotState === 0 ||\n      // The (right-most) trimmed path component is exactly '..'\n      preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n    return '';\n  }\n  return path.slice(startDot, end);\n};\n\nfunction filter (xs, f) {\n    if (xs.filter) return xs.filter(f);\n    var res = [];\n    for (var i = 0; i < xs.length; i++) {\n        if (f(xs[i], i, xs)) res.push(xs[i]);\n    }\n    return res;\n}\n\n// String.prototype.substr - negative index don't work in IE8\nvar substr = 'ab'.substr(-1) === 'b'\n    ? function (str, start, len) { return str.substr(start, len) }\n    : function (str, start, len) {\n        if (start < 0) start = str.length + start;\n        return str.substr(start, len);\n    }\n;\n","var baseMerge = require('./_baseMerge'),\n    isObject = require('./isObject');\n\n/**\n * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source\n * objects into destination objects that are passed thru.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to merge.\n * @param {Object} object The parent object of `objValue`.\n * @param {Object} source The parent object of `srcValue`.\n * @param {Object} [stack] Tracks traversed source values and their merged\n *  counterparts.\n * @returns {*} Returns the value to assign.\n */\nfunction customDefaultsMerge(objValue, srcValue, key, object, source, stack) {\n  if (isObject(objValue) && isObject(srcValue)) {\n    // Recursively merge objects and arrays (susceptible to call stack limits).\n    stack.set(srcValue, objValue);\n    baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack);\n    stack['delete'](srcValue);\n  }\n  return objValue;\n}\n\nmodule.exports = customDefaultsMerge;\n","// Styles\nimport \"../../../src/components/VSubheader/VSubheader.sass\"; // Mixins\n\nimport Themeable from '../../mixins/themeable';\nimport mixins from '../../util/mixins';\nexport default mixins(Themeable\n/* @vue/component */\n).extend({\n  name: 'v-subheader',\n  props: {\n    inset: Boolean\n  },\n\n  render(h) {\n    return h('div', {\n      staticClass: 'v-subheader',\n      class: {\n        'v-subheader--inset': this.inset,\n        ...this.themeClasses\n      },\n      attrs: this.$attrs,\n      on: this.$listeners\n    }, this.$slots.default);\n  }\n\n});\n//# sourceMappingURL=VSubheader.js.map","var isPlainObject = require('./isPlainObject');\n\n/**\n * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain\n * objects.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {string} key The key of the property to inspect.\n * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.\n */\nfunction customOmitClone(value) {\n  return isPlainObject(value) ? undefined : value;\n}\n\nmodule.exports = customOmitClone;\n","// IE 8- don't enum bug keys\nmodule.exports = (\n  'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n","var hashClear = require('./_hashClear'),\n    hashDelete = require('./_hashDelete'),\n    hashGet = require('./_hashGet'),\n    hashHas = require('./_hashHas'),\n    hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(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 `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","var baseGetTag = require('./_baseGetTag'),\n    isArray = require('./isArray'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n  return typeof value == 'string' ||\n    (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n}\n\nmodule.exports = isString;\n","var castPath = require('./_castPath'),\n    isArguments = require('./isArguments'),\n    isArray = require('./isArray'),\n    isIndex = require('./_isIndex'),\n    isLength = require('./isLength'),\n    toKey = require('./_toKey');\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n  path = castPath(path, object);\n\n  var index = -1,\n      length = path.length,\n      result = false;\n\n  while (++index < length) {\n    var key = toKey(path[index]);\n    if (!(result = object != null && hasFunc(object, key))) {\n      break;\n    }\n    object = object[key];\n  }\n  if (result || ++index != length) {\n    return result;\n  }\n  length = object == null ? 0 : object.length;\n  return !!length && isLength(length) && isIndex(key, length) &&\n    (isArray(object) || isArguments(object));\n}\n\nmodule.exports = hasPath;\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","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.enableHooks = exports.processHooks = exports.getHooks = exports.isHookObject = exports.convertHookData = exports.makeArguments = exports.defaultMakeArguments = exports.createHookObject = exports.ACTIVATE_HOOKS = void 0;\nconst utils_1 = require(\"./utils\");\nconst { each, pick } = utils_1._;\nexports.ACTIVATE_HOOKS = utils_1.createSymbol('__feathersActivateHooks');\nfunction createHookObject(method, data = {}) {\n    const hook = {};\n    Object.defineProperty(hook, 'toJSON', {\n        value() {\n            return pick(this, 'type', 'method', 'path', 'params', 'id', 'data', 'result', 'error');\n        }\n    });\n    return Object.assign(hook, data, {\n        method,\n        // A dynamic getter that returns the path of the service\n        get path() {\n            const { app, service } = data;\n            if (!service || !app || !app.services) {\n                return null;\n            }\n            return Object.keys(app.services)\n                .find(path => app.services[path] === service);\n        }\n    });\n}\nexports.createHookObject = createHookObject;\n// Fallback used by `makeArguments` which usually won't be used\nfunction defaultMakeArguments(hook) {\n    const result = [];\n    if (typeof hook.id !== 'undefined') {\n        result.push(hook.id);\n    }\n    if (hook.data) {\n        result.push(hook.data);\n    }\n    result.push(hook.params || {});\n    return result;\n}\nexports.defaultMakeArguments = defaultMakeArguments;\n// Turns a hook object back into a list of arguments\n// to call a service method with\nfunction makeArguments(hook) {\n    switch (hook.method) {\n        case 'find':\n            return [hook.params];\n        case 'get':\n        case 'remove':\n            return [hook.id, hook.params];\n        case 'update':\n        case 'patch':\n            return [hook.id, hook.data, hook.params];\n        case 'create':\n            return [hook.data, hook.params];\n    }\n    return defaultMakeArguments(hook);\n}\nexports.makeArguments = makeArguments;\n// Converts different hook registration formats into the\n// same internal format\nfunction convertHookData(obj) {\n    let hook = {};\n    if (Array.isArray(obj)) {\n        hook = { all: obj };\n    }\n    else if (typeof obj !== 'object') {\n        hook = { all: [obj] };\n    }\n    else {\n        each(obj, function (value, key) {\n            hook[key] = !Array.isArray(value) ? [value] : value;\n        });\n    }\n    return hook;\n}\nexports.convertHookData = convertHookData;\n// Duck-checks a given object to be a hook object\n// A valid hook object has `type` and `method`\nfunction isHookObject(hookObject) {\n    return typeof hookObject === 'object' &&\n        typeof hookObject.method === 'string' &&\n        typeof hookObject.type === 'string';\n}\nexports.isHookObject = isHookObject;\n// Returns all service and application hooks combined\n// for a given method and type `appLast` sets if the hooks\n// from `app` should be added last (or first by default)\nfunction getHooks(app, service, type, method, appLast = false) {\n    const appHooks = app.__hooks[type][method] || [];\n    const serviceHooks = service.__hooks[type][method] || [];\n    if (appLast) {\n        // Run hooks in the order of service -> app -> finally\n        return serviceHooks.concat(appHooks);\n    }\n    return appHooks.concat(serviceHooks);\n}\nexports.getHooks = getHooks;\nfunction processHooks(hooks, initialHookObject) {\n    let hookObject = initialHookObject;\n    const updateCurrentHook = (current) => {\n        // Either use the returned hook object or the current\n        // hook object from the chain if the hook returned undefined\n        if (current) {\n            if (!isHookObject(current)) {\n                throw new Error(`${hookObject.type} hook for '${hookObject.method}' method returned invalid hook object`);\n            }\n            hookObject = current;\n        }\n        return hookObject;\n    };\n    // Go through all hooks and chain them into our promise\n    const promise = hooks.reduce((current, fn) => {\n        // @ts-ignore\n        const hook = fn.bind(this);\n        // Use the returned hook object or the old one\n        return current.then((currentHook) => hook(currentHook)).then(updateCurrentHook);\n    }, Promise.resolve(hookObject));\n    return promise.then(() => hookObject).catch(error => {\n        // Add the hook information to any errors\n        error.hook = hookObject;\n        throw error;\n    });\n}\nexports.processHooks = processHooks;\n// Add `.hooks` functionality to an object\nfunction enableHooks(obj, methods, types) {\n    if (typeof obj.hooks === 'function') {\n        return obj;\n    }\n    const hookData = {};\n    types.forEach(type => {\n        // Initialize properties where hook functions are stored\n        hookData[type] = {};\n    });\n    // Add non-enumerable `__hooks` property to the object\n    Object.defineProperty(obj, '__hooks', {\n        configurable: true,\n        value: hookData,\n        writable: true\n    });\n    return Object.assign(obj, {\n        hooks(allHooks) {\n            each(allHooks, (current, type) => {\n                // @ts-ignore\n                if (!this.__hooks[type]) {\n                    throw new Error(`'${type}' is not a valid hook type`);\n                }\n                const hooks = convertHookData(current);\n                each(hooks, (_value, method) => {\n                    if (method !== 'all' && methods.indexOf(method) === -1) {\n                        throw new Error(`'${method}' is not a valid hook method`);\n                    }\n                });\n                methods.forEach(method => {\n                    // @ts-ignore\n                    const myHooks = this.__hooks[type][method] || (this.__hooks[type][method] = []);\n                    if (hooks.all) {\n                        myHooks.push.apply(myHooks, hooks.all);\n                    }\n                    if (hooks[method]) {\n                        myHooks.push.apply(myHooks, hooks[method]);\n                    }\n                });\n            });\n            return this;\n        }\n    });\n}\nexports.enableHooks = enableHooks;\n//# sourceMappingURL=hooks.js.map","var MapCache = require('./_MapCache');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n  if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  var memoized = function() {\n    var args = arguments,\n        key = resolver ? resolver.apply(this, args) : args[0],\n        cache = memoized.cache;\n\n    if (cache.has(key)) {\n      return cache.get(key);\n    }\n    var result = func.apply(this, args);\n    memoized.cache = cache.set(key, result) || cache;\n    return result;\n  };\n  memoized.cache = new (memoize.Cache || MapCache);\n  return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nmodule.exports = memoize;\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n  return toString.call(arr) == '[object Array]';\n};\n","var baseGet = require('./_baseGet');\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n  return function(object) {\n    return baseGet(object, path);\n  };\n}\n\nmodule.exports = basePropertyDeep;\n","// Styles\nimport \"../../../src/components/VMenu/VMenu.sass\"; // Components\n\nimport { VThemeProvider } from '../VThemeProvider'; // Mixins\n\nimport Activatable from '../../mixins/activatable';\nimport Delayable from '../../mixins/delayable';\nimport Dependent from '../../mixins/dependent';\nimport Menuable from '../../mixins/menuable';\nimport Returnable from '../../mixins/returnable';\nimport Roundable from '../../mixins/roundable';\nimport Toggleable from '../../mixins/toggleable';\nimport Themeable from '../../mixins/themeable'; // Directives\n\nimport ClickOutside from '../../directives/click-outside';\nimport Resize from '../../directives/resize'; // Utilities\n\nimport mixins from '../../util/mixins';\nimport { removed } from '../../util/console';\nimport { convertToUnit, keyCodes } from '../../util/helpers';\nimport goTo from '../../services/goto';\nconst baseMixins = mixins(Dependent, Delayable, Menuable, Returnable, Roundable, Toggleable, Themeable);\n/* @vue/component */\n\nexport default baseMixins.extend({\n  name: 'v-menu',\n  directives: {\n    ClickOutside,\n    Resize\n  },\n\n  provide() {\n    return {\n      isInMenu: true,\n      // Pass theme through to default slot\n      theme: this.theme\n    };\n  },\n\n  props: {\n    auto: Boolean,\n    closeOnClick: {\n      type: Boolean,\n      default: true\n    },\n    closeOnContentClick: {\n      type: Boolean,\n      default: true\n    },\n    disabled: Boolean,\n    disableKeys: Boolean,\n    maxHeight: {\n      type: [Number, String],\n      default: 'auto'\n    },\n    offsetX: Boolean,\n    offsetY: Boolean,\n    openOnClick: {\n      type: Boolean,\n      default: true\n    },\n    openOnHover: Boolean,\n    origin: {\n      type: String,\n      default: 'top left'\n    },\n    transition: {\n      type: [Boolean, String],\n      default: 'v-menu-transition'\n    }\n  },\n\n  data() {\n    return {\n      calculatedTopAuto: 0,\n      defaultOffset: 8,\n      hasJustFocused: false,\n      listIndex: -1,\n      resizeTimeout: 0,\n      selectedIndex: null,\n      tiles: []\n    };\n  },\n\n  computed: {\n    activeTile() {\n      return this.tiles[this.listIndex];\n    },\n\n    calculatedLeft() {\n      const menuWidth = Math.max(this.dimensions.content.width, parseFloat(this.calculatedMinWidth));\n      if (!this.auto) return this.calcLeft(menuWidth) || '0';\n      return convertToUnit(this.calcXOverflow(this.calcLeftAuto(), menuWidth)) || '0';\n    },\n\n    calculatedMaxHeight() {\n      const height = this.auto ? '200px' : convertToUnit(this.maxHeight);\n      return height || '0';\n    },\n\n    calculatedMaxWidth() {\n      return convertToUnit(this.maxWidth) || '0';\n    },\n\n    calculatedMinWidth() {\n      if (this.minWidth) {\n        return convertToUnit(this.minWidth) || '0';\n      }\n\n      const minWidth = Math.min(this.dimensions.activator.width + Number(this.nudgeWidth) + (this.auto ? 16 : 0), Math.max(this.pageWidth - 24, 0));\n      const calculatedMaxWidth = isNaN(parseInt(this.calculatedMaxWidth)) ? minWidth : parseInt(this.calculatedMaxWidth);\n      return convertToUnit(Math.min(calculatedMaxWidth, minWidth)) || '0';\n    },\n\n    calculatedTop() {\n      const top = !this.auto ? this.calcTop() : convertToUnit(this.calcYOverflow(this.calculatedTopAuto));\n      return top || '0';\n    },\n\n    hasClickableTiles() {\n      return Boolean(this.tiles.find(tile => tile.tabIndex > -1));\n    },\n\n    styles() {\n      return {\n        maxHeight: this.calculatedMaxHeight,\n        minWidth: this.calculatedMinWidth,\n        maxWidth: this.calculatedMaxWidth,\n        top: this.calculatedTop,\n        left: this.calculatedLeft,\n        transformOrigin: this.origin,\n        zIndex: this.zIndex || this.activeZIndex\n      };\n    }\n\n  },\n  watch: {\n    isActive(val) {\n      if (!val) this.listIndex = -1;\n    },\n\n    isContentActive(val) {\n      this.hasJustFocused = val;\n    },\n\n    listIndex(next, prev) {\n      if (next in this.tiles) {\n        const tile = this.tiles[next];\n        tile.classList.add('v-list-item--highlighted');\n        const scrollTop = this.$refs.content.scrollTop;\n        const contentHeight = this.$refs.content.clientHeight;\n\n        if (scrollTop > tile.offsetTop - 8) {\n          goTo(tile.offsetTop - tile.clientHeight, {\n            appOffset: false,\n            duration: 300,\n            container: this.$refs.content\n          });\n        } else if (scrollTop + contentHeight < tile.offsetTop + tile.clientHeight + 8) {\n          goTo(tile.offsetTop - contentHeight + tile.clientHeight * 2, {\n            appOffset: false,\n            duration: 300,\n            container: this.$refs.content\n          });\n        }\n      }\n\n      prev in this.tiles && this.tiles[prev].classList.remove('v-list-item--highlighted');\n    }\n\n  },\n\n  created() {\n    /* istanbul ignore next */\n    if (this.$attrs.hasOwnProperty('full-width')) {\n      removed('full-width', this);\n    }\n  },\n\n  mounted() {\n    this.isActive && this.callActivate();\n  },\n\n  methods: {\n    activate() {\n      // Update coordinates and dimensions of menu\n      // and its activator\n      this.updateDimensions(); // Start the transition\n\n      requestAnimationFrame(() => {\n        // Once transitioning, calculate scroll and top position\n        this.startTransition().then(() => {\n          if (this.$refs.content) {\n            this.calculatedTopAuto = this.calcTopAuto();\n            this.auto && (this.$refs.content.scrollTop = this.calcScrollPosition());\n          }\n        });\n      });\n    },\n\n    calcScrollPosition() {\n      const $el = this.$refs.content;\n      const activeTile = $el.querySelector('.v-list-item--active');\n      const maxScrollTop = $el.scrollHeight - $el.offsetHeight;\n      return activeTile ? Math.min(maxScrollTop, Math.max(0, activeTile.offsetTop - $el.offsetHeight / 2 + activeTile.offsetHeight / 2)) : $el.scrollTop;\n    },\n\n    calcLeftAuto() {\n      return parseInt(this.dimensions.activator.left - this.defaultOffset * 2);\n    },\n\n    calcTopAuto() {\n      const $el = this.$refs.content;\n      const activeTile = $el.querySelector('.v-list-item--active');\n\n      if (!activeTile) {\n        this.selectedIndex = null;\n      }\n\n      if (this.offsetY || !activeTile) {\n        return this.computedTop;\n      }\n\n      this.selectedIndex = Array.from(this.tiles).indexOf(activeTile);\n      const tileDistanceFromMenuTop = activeTile.offsetTop - this.calcScrollPosition();\n      const firstTileOffsetTop = $el.querySelector('.v-list-item').offsetTop;\n      return this.computedTop - tileDistanceFromMenuTop - firstTileOffsetTop - 1;\n    },\n\n    changeListIndex(e) {\n      // For infinite scroll and autocomplete, re-evaluate children\n      this.getTiles();\n\n      if (!this.isActive || !this.hasClickableTiles) {\n        return;\n      } else if (e.keyCode === keyCodes.tab) {\n        this.isActive = false;\n        return;\n      } else if (e.keyCode === keyCodes.down) {\n        this.nextTile();\n      } else if (e.keyCode === keyCodes.up) {\n        this.prevTile();\n      } else if (e.keyCode === keyCodes.end) {\n        this.lastTile();\n      } else if (e.keyCode === keyCodes.home) {\n        this.firstTile();\n      } else if (e.keyCode === keyCodes.enter && this.listIndex !== -1) {\n        this.tiles[this.listIndex].click();\n      } else {\n        return;\n      } // One of the conditions was met, prevent default action (#2988)\n\n\n      e.preventDefault();\n    },\n\n    closeConditional(e) {\n      const target = e.target;\n      return this.isActive && !this._isDestroyed && this.closeOnClick && !this.$refs.content.contains(target);\n    },\n\n    genActivatorAttributes() {\n      const attributes = Activatable.options.methods.genActivatorAttributes.call(this);\n\n      if (this.activeTile && this.activeTile.id) {\n        return { ...attributes,\n          'aria-activedescendant': this.activeTile.id\n        };\n      }\n\n      return attributes;\n    },\n\n    genActivatorListeners() {\n      const listeners = Menuable.options.methods.genActivatorListeners.call(this);\n\n      if (!this.disableKeys) {\n        listeners.keydown = this.onKeyDown;\n      }\n\n      return listeners;\n    },\n\n    genTransition() {\n      const content = this.genContent();\n      if (!this.transition) return content;\n      return this.$createElement('transition', {\n        props: {\n          name: this.transition\n        }\n      }, [content]);\n    },\n\n    genDirectives() {\n      const directives = [{\n        name: 'show',\n        value: this.isContentActive\n      }]; // Do not add click outside for hover menu\n\n      if (!this.openOnHover && this.closeOnClick) {\n        directives.push({\n          name: 'click-outside',\n          value: {\n            handler: () => {\n              this.isActive = false;\n            },\n            closeConditional: this.closeConditional,\n            include: () => [this.$el, ...this.getOpenDependentElements()]\n          }\n        });\n      }\n\n      return directives;\n    },\n\n    genContent() {\n      const options = {\n        attrs: { ...this.getScopeIdAttrs(),\n          role: 'role' in this.$attrs ? this.$attrs.role : 'menu'\n        },\n        staticClass: 'v-menu__content',\n        class: { ...this.rootThemeClasses,\n          ...this.roundedClasses,\n          'v-menu__content--auto': this.auto,\n          'v-menu__content--fixed': this.activatorFixed,\n          menuable__content__active: this.isActive,\n          [this.contentClass.trim()]: true\n        },\n        style: this.styles,\n        directives: this.genDirectives(),\n        ref: 'content',\n        on: {\n          click: e => {\n            const target = e.target;\n            if (target.getAttribute('disabled')) return;\n            if (this.closeOnContentClick) this.isActive = false;\n          },\n          keydown: this.onKeyDown\n        }\n      };\n\n      if (this.$listeners.scroll) {\n        options.on = options.on || {};\n        options.on.scroll = this.$listeners.scroll;\n      }\n\n      if (!this.disabled && this.openOnHover) {\n        options.on = options.on || {};\n        options.on.mouseenter = this.mouseEnterHandler;\n      }\n\n      if (this.openOnHover) {\n        options.on = options.on || {};\n        options.on.mouseleave = this.mouseLeaveHandler;\n      }\n\n      return this.$createElement('div', options, this.getContentSlot());\n    },\n\n    getTiles() {\n      if (!this.$refs.content) return;\n      this.tiles = Array.from(this.$refs.content.querySelectorAll('.v-list-item, .v-divider, .v-subheader'));\n    },\n\n    mouseEnterHandler() {\n      this.runDelay('open', () => {\n        if (this.hasJustFocused) return;\n        this.hasJustFocused = true;\n      });\n    },\n\n    mouseLeaveHandler(e) {\n      // Prevent accidental re-activation\n      this.runDelay('close', () => {\n        if (this.$refs.content.contains(e.relatedTarget)) return;\n        requestAnimationFrame(() => {\n          this.isActive = false;\n          this.callDeactivate();\n        });\n      });\n    },\n\n    nextTile() {\n      const tile = this.tiles[this.listIndex + 1];\n\n      if (!tile) {\n        if (!this.tiles.length) return;\n        this.listIndex = -1;\n        this.nextTile();\n        return;\n      }\n\n      this.listIndex++;\n      if (tile.tabIndex === -1) this.nextTile();\n    },\n\n    prevTile() {\n      const tile = this.tiles[this.listIndex - 1];\n\n      if (!tile) {\n        if (!this.tiles.length) return;\n        this.listIndex = this.tiles.length;\n        this.prevTile();\n        return;\n      }\n\n      this.listIndex--;\n      if (tile.tabIndex === -1) this.prevTile();\n    },\n\n    lastTile() {\n      const tile = this.tiles[this.tiles.length - 1];\n      if (!tile) return;\n      this.listIndex = this.tiles.length - 1;\n      if (tile.tabIndex === -1) this.prevTile();\n    },\n\n    firstTile() {\n      const tile = this.tiles[0];\n      if (!tile) return;\n      this.listIndex = 0;\n      if (tile.tabIndex === -1) this.nextTile();\n    },\n\n    onKeyDown(e) {\n      if (e.keyCode === keyCodes.esc) {\n        // Wait for dependent elements to close first\n        setTimeout(() => {\n          this.isActive = false;\n        });\n        const activator = this.getActivator();\n        this.$nextTick(() => activator && activator.focus());\n      } else if (!this.isActive && [keyCodes.up, keyCodes.down].includes(e.keyCode)) {\n        this.isActive = true;\n      } // Allow for isActive watcher to generate tile list\n\n\n      this.$nextTick(() => this.changeListIndex(e));\n    },\n\n    onResize() {\n      if (!this.isActive) return; // Account for screen resize\n      // and orientation change\n      // eslint-disable-next-line no-unused-expressions\n\n      this.$refs.content.offsetWidth;\n      this.updateDimensions(); // When resizing to a smaller width\n      // content width is evaluated before\n      // the new activator width has been\n      // set, causing it to not size properly\n      // hacky but will revisit in the future\n\n      clearTimeout(this.resizeTimeout);\n      this.resizeTimeout = window.setTimeout(this.updateDimensions, 100);\n    }\n\n  },\n\n  render(h) {\n    const data = {\n      staticClass: 'v-menu',\n      class: {\n        'v-menu--attached': this.attach === '' || this.attach === true || this.attach === 'attach'\n      },\n      directives: [{\n        arg: '500',\n        name: 'resize',\n        value: this.onResize\n      }]\n    };\n    return h('div', data, [!this.activator && this.genActivator(), this.showLazyContent(() => [this.$createElement(VThemeProvider, {\n      props: {\n        root: true,\n        light: this.light,\n        dark: this.dark\n      }\n    }, [this.genTransition()])])]);\n  }\n\n});\n//# sourceMappingURL=VMenu.js.map","module.exports = require('./lib/client').Service;\n","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n *  - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function(val, options) {\n  options = options || {};\n  var type = typeof val;\n  if (type === 'string' && val.length > 0) {\n    return parse(val);\n  } else if (type === 'number' && isNaN(val) === false) {\n    return options.long ? fmtLong(val) : fmtShort(val);\n  }\n  throw new Error(\n    'val is not a non-empty string or a valid number. val=' +\n      JSON.stringify(val)\n  );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n  str = String(str);\n  if (str.length > 100) {\n    return;\n  }\n  var match = /^((?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(\n    str\n  );\n  if (!match) {\n    return;\n  }\n  var n = parseFloat(match[1]);\n  var type = (match[2] || 'ms').toLowerCase();\n  switch (type) {\n    case 'years':\n    case 'year':\n    case 'yrs':\n    case 'yr':\n    case 'y':\n      return n * y;\n    case 'days':\n    case 'day':\n    case 'd':\n      return n * d;\n    case 'hours':\n    case 'hour':\n    case 'hrs':\n    case 'hr':\n    case 'h':\n      return n * h;\n    case 'minutes':\n    case 'minute':\n    case 'mins':\n    case 'min':\n    case 'm':\n      return n * m;\n    case 'seconds':\n    case 'second':\n    case 'secs':\n    case 'sec':\n    case 's':\n      return n * s;\n    case 'milliseconds':\n    case 'millisecond':\n    case 'msecs':\n    case 'msec':\n    case 'ms':\n      return n;\n    default:\n      return undefined;\n  }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n  if (ms >= d) {\n    return Math.round(ms / d) + 'd';\n  }\n  if (ms >= h) {\n    return Math.round(ms / h) + 'h';\n  }\n  if (ms >= m) {\n    return Math.round(ms / m) + 'm';\n  }\n  if (ms >= s) {\n    return Math.round(ms / s) + 's';\n  }\n  return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n  return plural(ms, d, 'day') ||\n    plural(ms, h, 'hour') ||\n    plural(ms, m, 'minute') ||\n    plural(ms, s, 'second') ||\n    ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, n, name) {\n  if (ms < n) {\n    return;\n  }\n  if (ms < n * 1.5) {\n    return Math.floor(ms / n) + ' ' + name;\n  }\n  return Math.ceil(ms / n) + ' ' + name + 's';\n}\n","import { deprecate } from '../../util/console';\nimport Vue from 'vue';\n/* @vue/component */\n\nexport default Vue.extend({\n  name: 'mobile',\n  props: {\n    mobileBreakpoint: {\n      type: [Number, String],\n\n      default() {\n        // Avoid destroying unit\n        // tests for users\n        return this.$vuetify ? this.$vuetify.breakpoint.mobileBreakpoint : undefined;\n      },\n\n      validator: v => !isNaN(Number(v)) || ['xs', 'sm', 'md', 'lg', 'xl'].includes(String(v))\n    }\n  },\n  computed: {\n    isMobile() {\n      const {\n        mobile,\n        width,\n        name,\n        mobileBreakpoint\n      } = this.$vuetify.breakpoint; // Check if local mobileBreakpoint matches\n      // the application's mobileBreakpoint\n\n      if (mobileBreakpoint === this.mobileBreakpoint) return mobile;\n      const mobileWidth = parseInt(this.mobileBreakpoint, 10);\n      const isNumber = !isNaN(mobileWidth);\n      return isNumber ? width < mobileWidth : name === this.mobileBreakpoint;\n    }\n\n  },\n\n  created() {\n    /* istanbul ignore next */\n    if (this.$attrs.hasOwnProperty('mobile-break-point')) {\n      deprecate('mobile-break-point', 'mobile-breakpoint', this);\n    }\n  }\n\n});\n//# sourceMappingURL=index.js.map","/**\n * This is the web browser implementation of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = require('./debug');\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = 'undefined' != typeof chrome\n               && 'undefined' != typeof chrome.storage\n                  ? chrome.storage.local\n                  : localstorage();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n  '#0000CC', '#0000FF', '#0033CC', '#0033FF', '#0066CC', '#0066FF', '#0099CC',\n  '#0099FF', '#00CC00', '#00CC33', '#00CC66', '#00CC99', '#00CCCC', '#00CCFF',\n  '#3300CC', '#3300FF', '#3333CC', '#3333FF', '#3366CC', '#3366FF', '#3399CC',\n  '#3399FF', '#33CC00', '#33CC33', '#33CC66', '#33CC99', '#33CCCC', '#33CCFF',\n  '#6600CC', '#6600FF', '#6633CC', '#6633FF', '#66CC00', '#66CC33', '#9900CC',\n  '#9900FF', '#9933CC', '#9933FF', '#99CC00', '#99CC33', '#CC0000', '#CC0033',\n  '#CC0066', '#CC0099', '#CC00CC', '#CC00FF', '#CC3300', '#CC3333', '#CC3366',\n  '#CC3399', '#CC33CC', '#CC33FF', '#CC6600', '#CC6633', '#CC9900', '#CC9933',\n  '#CCCC00', '#CCCC33', '#FF0000', '#FF0033', '#FF0066', '#FF0099', '#FF00CC',\n  '#FF00FF', '#FF3300', '#FF3333', '#FF3366', '#FF3399', '#FF33CC', '#FF33FF',\n  '#FF6600', '#FF6633', '#FF9900', '#FF9933', '#FFCC00', '#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\nfunction useColors() {\n  // NB: In an Electron preload script, document will be defined but not fully\n  // initialized. Since we know we're in Chrome, we'll just detect this case\n  // explicitly\n  if (typeof window !== 'undefined' && window.process && window.process.type === 'renderer') {\n    return true;\n  }\n\n  // Internet Explorer and Edge do not support colors.\n  if (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n    return false;\n  }\n\n  // is webkit? http://stackoverflow.com/a/16459606/376773\n  // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n  return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n    // is firebug? http://stackoverflow.com/a/398120/376773\n    (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n    // is firefox >= v31?\n    // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n    (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||\n    // double check webkit in userAgent just in case we are in a worker\n    (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nexports.formatters.j = function(v) {\n  try {\n    return JSON.stringify(v);\n  } catch (err) {\n    return '[UnexpectedJSONParseError]: ' + err.message;\n  }\n};\n\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n  var useColors = this.useColors;\n\n  args[0] = (useColors ? '%c' : '')\n    + this.namespace\n    + (useColors ? ' %c' : ' ')\n    + args[0]\n    + (useColors ? '%c ' : ' ')\n    + '+' + exports.humanize(this.diff);\n\n  if (!useColors) return;\n\n  var c = 'color: ' + this.color;\n  args.splice(1, 0, c, 'color: inherit')\n\n  // the final \"%c\" is somewhat tricky, because there could be other\n  // arguments passed either before or after the %c, so we need to\n  // figure out the correct index to insert the CSS into\n  var index = 0;\n  var lastC = 0;\n  args[0].replace(/%[a-zA-Z%]/g, function(match) {\n    if ('%%' === match) return;\n    index++;\n    if ('%c' === match) {\n      // we only are interested in the *last* %c\n      // (the user may have provided their own)\n      lastC = index;\n    }\n  });\n\n  args.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.log()` when available.\n * No-op when `console.log` is not a \"function\".\n *\n * @api public\n */\n\nfunction log() {\n  // this hackery is required for IE8/9, where\n  // the `console.log` function doesn't have 'apply'\n  return 'object' === typeof console\n    && console.log\n    && Function.prototype.apply.call(console.log, console, arguments);\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\n\nfunction save(namespaces) {\n  try {\n    if (null == namespaces) {\n      exports.storage.removeItem('debug');\n    } else {\n      exports.storage.debug = namespaces;\n    }\n  } catch(e) {}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n  var r;\n  try {\n    r = exports.storage.debug;\n  } catch(e) {}\n\n  // If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n  if (!r && typeof process !== 'undefined' && 'env' in process) {\n    r = process.env.DEBUG;\n  }\n\n  return r;\n}\n\n/**\n * Enable namespaces listed in `localStorage.debug` initially.\n */\n\nexports.enable(load());\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n  try {\n    return window.localStorage;\n  } catch (e) {}\n}\n","import Vue from 'vue';\n/* @vue/component */\n\nexport default Vue.extend({\n  name: 'returnable',\n  props: {\n    returnValue: null\n  },\n  data: () => ({\n    isActive: false,\n    originalValue: null\n  }),\n  watch: {\n    isActive(val) {\n      if (val) {\n        this.originalValue = this.returnValue;\n      } else {\n        this.$emit('update:return-value', this.originalValue);\n      }\n    }\n\n  },\n  methods: {\n    save(value) {\n      this.originalValue = value;\n      setTimeout(() => {\n        this.isActive = false;\n      });\n    }\n\n  }\n});\n//# sourceMappingURL=index.js.map","(function (global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('vue')) :\n  typeof define === 'function' && define.amd ? define(['exports', 'vue'], factory) :\n  (global = global || self, factory(global.vueCompositionApi = {}, global.Vue));\n}(this, (function (exports, Vue) { 'use strict';\n\n  Vue = Vue && Object.prototype.hasOwnProperty.call(Vue, 'default') ? Vue['default'] : Vue;\n\n  var toString = function (x) { return Object.prototype.toString.call(x); };\r\n  function isNative(Ctor) {\r\n      return typeof Ctor === 'function' && /native code/.test(Ctor.toString());\r\n  }\r\n  var hasSymbol = typeof Symbol !== 'undefined' &&\r\n      isNative(Symbol) &&\r\n      typeof Reflect !== 'undefined' &&\r\n      isNative(Reflect.ownKeys);\r\n  var noopFn = function (_) { return _; };\r\n  var sharedPropertyDefinition = {\r\n      enumerable: true,\r\n      configurable: true,\r\n      get: noopFn,\r\n      set: noopFn,\r\n  };\r\n  function proxy(target, key, _a) {\r\n      var get = _a.get, set = _a.set;\r\n      sharedPropertyDefinition.get = get || noopFn;\r\n      sharedPropertyDefinition.set = set || noopFn;\r\n      Object.defineProperty(target, key, sharedPropertyDefinition);\r\n  }\r\n  function def(obj, key, val, enumerable) {\r\n      Object.defineProperty(obj, key, {\r\n          value: val,\r\n          enumerable: !!enumerable,\r\n          writable: true,\r\n          configurable: true,\r\n      });\r\n  }\r\n  function hasOwn(obj, key) {\r\n      return Object.hasOwnProperty.call(obj, key);\r\n  }\r\n  function assert(condition, msg) {\r\n      if (!condition)\r\n          throw new Error(\"[vue-composition-api] \" + msg);\r\n  }\r\n  function isArray(x) {\r\n      return Array.isArray(x);\r\n  }\r\n  function isPlainObject(x) {\r\n      return toString(x) === '[object Object]';\r\n  }\r\n  function isFunction(x) {\r\n      return typeof x === 'function';\r\n  }\r\n  function warn(msg, vm) {\r\n      Vue.util.warn(msg, vm);\r\n  }\r\n  function logError(err, vm, info) {\r\n      {\r\n          warn(\"Error in \" + info + \": \\\"\" + err.toString() + \"\\\"\", vm);\r\n      }\r\n      if (typeof window !== 'undefined' && typeof console !== 'undefined') {\r\n          console.error(err);\r\n      }\r\n      else {\r\n          throw err;\r\n      }\r\n  }\n\n  /*! *****************************************************************************\r\n  Copyright (c) Microsoft Corporation.\r\n\r\n  Permission to use, copy, modify, and/or distribute this software for any\r\n  purpose with or without fee is hereby granted.\r\n\r\n  THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\n  REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\n  AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\n  INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\n  LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\n  OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\n  PERFORMANCE OF THIS SOFTWARE.\r\n  ***************************************************************************** */\r\n\r\n  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\n  function __values(o) {\r\n      var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n      if (m) return m.call(o);\r\n      if (o && typeof o.length === \"number\") 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      throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n  }\r\n\r\n  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\n  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  }\n\n  var currentVue = null;\r\n  var currentVM = null;\r\n  function getCurrentVue() {\r\n      {\r\n          assert(currentVue, \"must call Vue.use(plugin) before using any function.\");\r\n      }\r\n      return currentVue;\r\n  }\r\n  function setCurrentVue(vue) {\r\n      currentVue = vue;\r\n  }\r\n  function getCurrentVM() {\r\n      return currentVM;\r\n  }\r\n  function setCurrentVM(vm) {\r\n      currentVM = vm;\r\n  }\n\n  function currentVMInFn(hook) {\r\n      var vm = getCurrentVM();\r\n      if ( !vm) {\r\n          warn(hook + \" is called when there is no active component instance to be \" +\r\n              \"associated with. \" +\r\n              \"Lifecycle injection APIs can only be used during execution of setup().\");\r\n      }\r\n      return vm;\r\n  }\r\n  function defineComponentInstance(Ctor, options) {\r\n      if (options === void 0) { options = {}; }\r\n      var silent = Ctor.config.silent;\r\n      Ctor.config.silent = true;\r\n      var vm = new Ctor(options);\r\n      Ctor.config.silent = silent;\r\n      return vm;\r\n  }\r\n  function isComponentInstance(obj) {\r\n      return currentVue && obj instanceof currentVue;\r\n  }\r\n  function createSlotProxy(vm, slotName) {\r\n      return function () {\r\n          var args = [];\r\n          for (var _i = 0; _i < arguments.length; _i++) {\r\n              args[_i] = arguments[_i];\r\n          }\r\n          if (!vm.$scopedSlots[slotName]) {\r\n              return warn(\"slots.\" + slotName + \"() got called outside of the \\\"render()\\\" scope\", vm);\r\n          }\r\n          return vm.$scopedSlots[slotName].apply(vm, args);\r\n      };\r\n  }\r\n  function resolveSlots(slots, normalSlots) {\r\n      var res;\r\n      if (!slots) {\r\n          res = {};\r\n      }\r\n      else if (slots._normalized) {\r\n          // fast path 1: child component re-render only, parent did not change\r\n          return slots._normalized;\r\n      }\r\n      else {\r\n          res = {};\r\n          for (var key in slots) {\r\n              if (slots[key] && key[0] !== '$') {\r\n                  res[key] = true;\r\n              }\r\n          }\r\n      }\r\n      // expose normal slots on scopedSlots\r\n      for (var key in normalSlots) {\r\n          if (!(key in res)) {\r\n              res[key] = true;\r\n          }\r\n      }\r\n      return res;\r\n  }\n\n  function createSymbol(name) {\r\n      return hasSymbol ? Symbol.for(name) : name;\r\n  }\r\n  var WatcherPreFlushQueueKey = createSymbol('vfa.key.preFlushQueue');\r\n  var WatcherPostFlushQueueKey = createSymbol('vfa.key.postFlushQueue');\r\n  var AccessControlIdentifierKey = createSymbol('vfa.key.accessControlIdentifier');\r\n  var ReactiveIdentifierKey = createSymbol('vfa.key.reactiveIdentifier');\r\n  var RawIdentifierKey = createSymbol('vfa.key.rawIdentifierKey');\r\n  // must be a string, symbol key is ignored in reactive\r\n  var RefKey = 'vfa.key.refKey';\n\n  var RefImpl = /** @class */ (function () {\r\n      function RefImpl(_a) {\r\n          var get = _a.get, set = _a.set;\r\n          proxy(this, 'value', {\r\n              get: get,\r\n              set: set,\r\n          });\r\n      }\r\n      return RefImpl;\r\n  }());\r\n  function createRef(options) {\r\n      // seal the ref, this could prevent ref from being observed\r\n      // It's safe to seal the ref, since we really shouldn't extend it.\r\n      // related issues: #79\r\n      return Object.seal(new RefImpl(options));\r\n  }\r\n  function ref(raw) {\r\n      var _a;\r\n      if (isRef(raw)) {\r\n          return raw;\r\n      }\r\n      var value = reactive((_a = {}, _a[RefKey] = raw, _a));\r\n      return createRef({\r\n          get: function () { return value[RefKey]; },\r\n          set: function (v) { return (value[RefKey] = v); },\r\n      });\r\n  }\r\n  function isRef(value) {\r\n      return value instanceof RefImpl;\r\n  }\r\n  function unref(ref) {\r\n      return isRef(ref) ? ref.value : ref;\r\n  }\r\n  function toRefs(obj) {\r\n      if (!isPlainObject(obj))\r\n          return obj;\r\n      if ( !isReactive(obj)) {\r\n          warn(\"toRefs() expects a reactive object but received a plain one.\");\r\n      }\r\n      var ret = {};\r\n      for (var key in obj) {\r\n          ret[key] = toRef(obj, key);\r\n      }\r\n      return ret;\r\n  }\r\n  function toRef(object, key) {\r\n      var v = object[key];\r\n      if (isRef(v))\r\n          return v;\r\n      return createRef({\r\n          get: function () { return object[key]; },\r\n          set: function (v) { return (object[key] = v); },\r\n      });\r\n  }\r\n  function shallowRef(raw) {\r\n      var _a;\r\n      if (isRef(raw)) {\r\n          return raw;\r\n      }\r\n      var value = shallowReactive((_a = {}, _a[RefKey] = raw, _a));\r\n      return createRef({\r\n          get: function () { return value[RefKey]; },\r\n          set: function (v) { return (value[RefKey] = v); },\r\n      });\r\n  }\r\n  function triggerRef(value) {\r\n      if (!isRef(value))\r\n          return;\r\n      value.value = value.value;\r\n  }\n\n  var AccessControlIdentifier = {};\r\n  var ReactiveIdentifier = {};\r\n  var RawIdentifier = {};\r\n  function isRaw(obj) {\r\n      return (hasOwn(obj, RawIdentifierKey) && obj[RawIdentifierKey] === RawIdentifier);\r\n  }\r\n  function isReactive(obj) {\r\n      return (Object.isExtensible(obj) &&\r\n          hasOwn(obj, ReactiveIdentifierKey) &&\r\n          obj[ReactiveIdentifierKey] === ReactiveIdentifier);\r\n  }\r\n  /**\r\n   * Proxing property access of target.\r\n   * We can do unwrapping and other things here.\r\n   */\r\n  function setupAccessControl(target) {\r\n      if (!isPlainObject(target) ||\r\n          isRaw(target) ||\r\n          Array.isArray(target) ||\r\n          isRef(target) ||\r\n          isComponentInstance(target)) {\r\n          return;\r\n      }\r\n      if (hasOwn(target, AccessControlIdentifierKey) &&\r\n          target[AccessControlIdentifierKey] === AccessControlIdentifier) {\r\n          return;\r\n      }\r\n      if (Object.isExtensible(target)) {\r\n          def(target, AccessControlIdentifierKey, AccessControlIdentifier);\r\n      }\r\n      var keys = Object.keys(target);\r\n      for (var i = 0; i < keys.length; i++) {\r\n          defineAccessControl(target, keys[i]);\r\n      }\r\n  }\r\n  /**\r\n   * Auto unwrapping when access property\r\n   */\r\n  function defineAccessControl(target, key, val) {\r\n      if (key === '__ob__')\r\n          return;\r\n      var getter;\r\n      var setter;\r\n      var property = Object.getOwnPropertyDescriptor(target, key);\r\n      if (property) {\r\n          if (property.configurable === false) {\r\n              return;\r\n          }\r\n          getter = property.get;\r\n          setter = property.set;\r\n          if ((!getter || setter) /* not only have getter */ &&\r\n              arguments.length === 2) {\r\n              val = target[key];\r\n          }\r\n      }\r\n      setupAccessControl(val);\r\n      Object.defineProperty(target, key, {\r\n          enumerable: true,\r\n          configurable: true,\r\n          get: function getterHandler() {\r\n              var value = getter ? getter.call(target) : val;\r\n              // if the key is equal to RefKey, skip the unwrap logic\r\n              if (key !== RefKey && isRef(value)) {\r\n                  return value.value;\r\n              }\r\n              else {\r\n                  return value;\r\n              }\r\n          },\r\n          set: function setterHandler(newVal) {\r\n              if (getter && !setter)\r\n                  return;\r\n              var value = getter ? getter.call(target) : val;\r\n              // If the key is equal to RefKey, skip the unwrap logic\r\n              // If and only if \"value\" is ref and \"newVal\" is not a ref,\r\n              // the assignment should be proxied to \"value\" ref.\r\n              if (key !== RefKey && isRef(value) && !isRef(newVal)) {\r\n                  value.value = newVal;\r\n              }\r\n              else if (setter) {\r\n                  setter.call(target, newVal);\r\n              }\r\n              else {\r\n                  val = newVal;\r\n              }\r\n              setupAccessControl(newVal);\r\n          },\r\n      });\r\n  }\r\n  function observe(obj) {\r\n      var Vue = getCurrentVue();\r\n      var observed;\r\n      if (Vue.observable) {\r\n          observed = Vue.observable(obj);\r\n      }\r\n      else {\r\n          var vm = defineComponentInstance(Vue, {\r\n              data: {\r\n                  $$state: obj,\r\n              },\r\n          });\r\n          observed = vm._data.$$state;\r\n      }\r\n      return observed;\r\n  }\r\n  function shallowReactive(obj) {\r\n      var e_1, _a;\r\n      if ( !obj) {\r\n          warn('\"shallowReactive()\" is called without provide an \"object\".');\r\n          // @ts-ignore\r\n          return;\r\n      }\r\n      if (!isPlainObject(obj) ||\r\n          isReactive(obj) ||\r\n          isRaw(obj) ||\r\n          !Object.isExtensible(obj)) {\r\n          return obj;\r\n      }\r\n      var observed = observe({});\r\n      markReactive(observed, true);\r\n      setupAccessControl(observed);\r\n      var ob = observed.__ob__;\r\n      var _loop_1 = function (key) {\r\n          var val = obj[key];\r\n          var getter;\r\n          var setter;\r\n          var property = Object.getOwnPropertyDescriptor(obj, key);\r\n          if (property) {\r\n              if (property.configurable === false) {\r\n                  return \"continue\";\r\n              }\r\n              getter = property.get;\r\n              setter = property.set;\r\n              if ((!getter || setter) /* not only have getter */ &&\r\n                  arguments_1.length === 2) {\r\n                  val = obj[key];\r\n              }\r\n          }\r\n          // setupAccessControl(val);\r\n          Object.defineProperty(observed, key, {\r\n              enumerable: true,\r\n              configurable: true,\r\n              get: function getterHandler() {\r\n                  var value = getter ? getter.call(obj) : val;\r\n                  ob.dep.depend();\r\n                  return value;\r\n              },\r\n              set: function setterHandler(newVal) {\r\n                  if (getter && !setter)\r\n                      return;\r\n                  if (setter) {\r\n                      setter.call(obj, newVal);\r\n                  }\r\n                  else {\r\n                      val = newVal;\r\n                  }\r\n                  ob.dep.notify();\r\n              },\r\n          });\r\n      };\r\n      var arguments_1 = arguments;\r\n      try {\r\n          for (var _b = __values(Object.keys(obj)), _c = _b.next(); !_c.done; _c = _b.next()) {\r\n              var key = _c.value;\r\n              _loop_1(key);\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 (_c && !_c.done && (_a = _b.return)) _a.call(_b);\r\n          }\r\n          finally { if (e_1) throw e_1.error; }\r\n      }\r\n      return observed;\r\n  }\r\n  function markReactive(target, shallow) {\r\n      if (shallow === void 0) { shallow = false; }\r\n      if (!isPlainObject(target) ||\r\n          isRaw(target) ||\r\n          Array.isArray(target) ||\r\n          isRef(target) ||\r\n          isComponentInstance(target)) {\r\n          return;\r\n      }\r\n      if (hasOwn(target, ReactiveIdentifierKey) &&\r\n          target[ReactiveIdentifierKey] === ReactiveIdentifier) {\r\n          return;\r\n      }\r\n      if (Object.isExtensible(target)) {\r\n          def(target, ReactiveIdentifierKey, ReactiveIdentifier);\r\n      }\r\n      if (shallow) {\r\n          return;\r\n      }\r\n      var keys = Object.keys(target);\r\n      for (var i = 0; i < keys.length; i++) {\r\n          markReactive(target[keys[i]]);\r\n      }\r\n  }\r\n  /**\r\n   * Make obj reactivity\r\n   */\r\n  function reactive(obj) {\r\n      if ( !obj) {\r\n          warn('\"reactive()\" is called without provide an \"object\".');\r\n          // @ts-ignore\r\n          return;\r\n      }\r\n      if (!isPlainObject(obj) ||\r\n          isReactive(obj) ||\r\n          isRaw(obj) ||\r\n          !Object.isExtensible(obj)) {\r\n          return obj;\r\n      }\r\n      var observed = observe(obj);\r\n      // def(obj, ReactiveIdentifierKey, ReactiveIdentifier);\r\n      markReactive(obj);\r\n      setupAccessControl(observed);\r\n      return observed;\r\n  }\r\n  /**\r\n   * Make sure obj can't be a reactive\r\n   */\r\n  function markRaw(obj) {\r\n      if (!isPlainObject(obj) || !Object.isExtensible(obj)) {\r\n          return obj;\r\n      }\r\n      // set the vue observable flag at obj\r\n      def(obj, '__ob__', observe({}).__ob__);\r\n      // mark as Raw\r\n      def(obj, RawIdentifierKey, RawIdentifier);\r\n      return obj;\r\n  }\r\n  function toRaw(observed) {\r\n      if (isRaw(observe) || !Object.isExtensible(observed)) {\r\n          return observed;\r\n      }\r\n      return observed.__ob__.value || observed;\r\n  }\n\n  function isUndef(v) {\r\n      return v === undefined || v === null;\r\n  }\r\n  function isPrimitive(value) {\r\n      return (typeof value === 'string' ||\r\n          typeof value === 'number' ||\r\n          // $flow-disable-line\r\n          typeof value === 'symbol' ||\r\n          typeof value === 'boolean');\r\n  }\r\n  function isValidArrayIndex(val) {\r\n      var n = parseFloat(String(val));\r\n      return n >= 0 && Math.floor(n) === n && isFinite(val);\r\n  }\r\n  /**\r\n   * Set a property on an object. Adds the new property, triggers change\r\n   * notification and intercept it's subsequent access if the property doesn't\r\n   * already exist.\r\n   */\r\n  function set(target, key, val) {\r\n      var Vue = getCurrentVue();\r\n      var _a = Vue.util, warn = _a.warn, defineReactive = _a.defineReactive;\r\n      if ( (isUndef(target) || isPrimitive(target))) {\r\n          warn(\"Cannot set reactive property on undefined, null, or primitive value: \" + target);\r\n      }\r\n      if (isArray(target) && isValidArrayIndex(key)) {\r\n          target.length = Math.max(target.length, key);\r\n          target.splice(key, 1, val);\r\n          return val;\r\n      }\r\n      if (key in target && !(key in Object.prototype)) {\r\n          target[key] = val;\r\n          return val;\r\n      }\r\n      var ob = target.__ob__;\r\n      if (target._isVue || (ob && ob.vmCount)) {\r\n          \r\n              warn('Avoid adding reactive properties to a Vue instance or its root $data ' +\r\n                  'at runtime - declare it upfront in the data option.');\r\n          return val;\r\n      }\r\n      if (!ob) {\r\n          target[key] = val;\r\n          return val;\r\n      }\r\n      defineReactive(ob.value, key, val);\r\n      // IMPORTANT: define access control before trigger watcher\r\n      defineAccessControl(target, key, val);\r\n      markReactive(ob.value[key]);\r\n      ob.dep.notify();\r\n      return val;\r\n  }\n\n  /**\r\n   * Helper that recursively merges two data objects together.\r\n   */\r\n  function mergeData(from, to) {\r\n      if (!from)\r\n          return to;\r\n      if (!to)\r\n          return from;\r\n      var key;\r\n      var toVal;\r\n      var fromVal;\r\n      var keys = hasSymbol ? Reflect.ownKeys(from) : Object.keys(from);\r\n      for (var i = 0; i < keys.length; i++) {\r\n          key = keys[i];\r\n          // in case the object is already observed...\r\n          if (key === '__ob__')\r\n              continue;\r\n          toVal = to[key];\r\n          fromVal = from[key];\r\n          if (!hasOwn(to, key)) {\r\n              to[key] = fromVal;\r\n          }\r\n          else if (toVal !== fromVal &&\r\n              isPlainObject(toVal) &&\r\n              !isRef(toVal) &&\r\n              isPlainObject(fromVal) &&\r\n              !isRef(fromVal)) {\r\n              mergeData(fromVal, toVal);\r\n          }\r\n      }\r\n      return to;\r\n  }\r\n  function install(Vue, _install) {\r\n      if (currentVue && currentVue === Vue) {\r\n          {\r\n              assert(false, 'already installed. Vue.use(plugin) should be called only once');\r\n          }\r\n          return;\r\n      }\r\n      Vue.config.optionMergeStrategies.setup = function (parent, child) {\r\n          return function mergedSetupFn(props, context) {\r\n              return mergeData(typeof parent === 'function' ? parent(props, context) || {} : undefined, typeof child === 'function' ? child(props, context) || {} : undefined);\r\n          };\r\n      };\r\n      setCurrentVue(Vue);\r\n      _install(Vue);\r\n  }\n\n  function set$1(vm, key, value) {\r\n      var state = (vm.__secret_vfa_state__ = vm.__secret_vfa_state__ || {});\r\n      state[key] = value;\r\n  }\r\n  function get(vm, key) {\r\n      return (vm.__secret_vfa_state__ || {})[key];\r\n  }\r\n  var vmStateManager = {\r\n      set: set$1,\r\n      get: get,\r\n  };\n\n  function unwrapRefProxy(value, map) {\r\n      var e_1, _a;\r\n      if (map === void 0) { map = new WeakMap(); }\r\n      if (map.has(value)) {\r\n          return map.get(value);\r\n      }\r\n      if (isFunction(value) ||\r\n          isArray(value) ||\r\n          isReactive(value) ||\r\n          !isPlainObject(value) ||\r\n          !Object.isExtensible(value) ||\r\n          isRef(value) ||\r\n          isRaw(value)) {\r\n          return value;\r\n      }\r\n      var obj = {};\r\n      map.set(value, obj);\r\n      // copy symbols over\r\n      Object.getOwnPropertySymbols(value).forEach(function (s) { return (obj[s] = value[s]); });\r\n      var _loop_1 = function (k) {\r\n          var r = value[k];\r\n          // don't process on falsy or raw\r\n          if (!r || isRaw(r)) {\r\n              obj[k] = r;\r\n          }\r\n          // if is a ref, create a proxy to retrieve the value,\r\n          else if (isRef(r)) {\r\n              var set = function (v) { return (r.value = v); };\r\n              var get = function () { return r.value; };\r\n              proxy(obj, k, { get: get, set: set });\r\n          }\r\n          else {\r\n              obj[k] = unwrapRefProxy(r, map);\r\n          }\r\n      };\r\n      try {\r\n          for (var _b = __values(Object.keys(value)), _c = _b.next(); !_c.done; _c = _b.next()) {\r\n              var k = _c.value;\r\n              _loop_1(k);\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 (_c && !_c.done && (_a = _b.return)) _a.call(_b);\r\n          }\r\n          finally { if (e_1) throw e_1.error; }\r\n      }\r\n      return obj;\r\n  }\n\n  function asVmProperty(vm, propName, propValue) {\r\n      var props = vm.$options.props;\r\n      if (!(propName in vm) && !(props && hasOwn(props, propName))) {\r\n          proxy(vm, propName, {\r\n              get: function () { return propValue.value; },\r\n              set: function (val) {\r\n                  propValue.value = val;\r\n              },\r\n          });\r\n          {\r\n              // expose binding to Vue Devtool as a data property\r\n              // delay this until state has been resolved to prevent repeated works\r\n              vm.$nextTick(function () {\r\n                  proxy(vm._data, propName, {\r\n                      get: function () { return propValue.value; },\r\n                      set: function (val) {\r\n                          propValue.value = val;\r\n                      },\r\n                  });\r\n              });\r\n          }\r\n      }\r\n      else {\r\n          if (props && hasOwn(props, propName)) {\r\n              warn(\"The setup binding property \\\"\" + propName + \"\\\" is already declared as a prop.\", vm);\r\n          }\r\n          else {\r\n              warn(\"The setup binding property \\\"\" + propName + \"\\\" is already declared.\", vm);\r\n          }\r\n      }\r\n  }\r\n  function updateTemplateRef(vm) {\r\n      var rawBindings = vmStateManager.get(vm, 'rawBindings') || {};\r\n      if (!rawBindings || !Object.keys(rawBindings).length)\r\n          return;\r\n      var refs = vm.$refs;\r\n      var oldRefKeys = vmStateManager.get(vm, 'refs') || [];\r\n      for (var index = 0; index < oldRefKeys.length; index++) {\r\n          var key = oldRefKeys[index];\r\n          var setupValue = rawBindings[key];\r\n          if (!refs[key] && setupValue && isRef(setupValue)) {\r\n              setupValue.value = null;\r\n          }\r\n      }\r\n      var newKeys = Object.keys(refs);\r\n      var validNewKeys = [];\r\n      for (var index = 0; index < newKeys.length; index++) {\r\n          var key = newKeys[index];\r\n          var setupValue = rawBindings[key];\r\n          if (refs[key] && setupValue && isRef(setupValue)) {\r\n              setupValue.value = refs[key];\r\n              validNewKeys.push(key);\r\n          }\r\n      }\r\n      vmStateManager.set(vm, 'refs', validNewKeys);\r\n  }\r\n  function resolveScopedSlots(vm, slotsProxy) {\r\n      var parentVode = vm.$options._parentVnode;\r\n      if (!parentVode)\r\n          return;\r\n      var prevSlots = vmStateManager.get(vm, 'slots') || [];\r\n      var curSlots = resolveSlots(parentVode.data.scopedSlots, vm.$slots);\r\n      // remove staled slots\r\n      for (var index = 0; index < prevSlots.length; index++) {\r\n          var key = prevSlots[index];\r\n          if (!curSlots[key]) {\r\n              delete slotsProxy[key];\r\n          }\r\n      }\r\n      // proxy fresh slots\r\n      var slotNames = Object.keys(curSlots);\r\n      for (var index = 0; index < slotNames.length; index++) {\r\n          var key = slotNames[index];\r\n          if (!slotsProxy[key]) {\r\n              slotsProxy[key] = createSlotProxy(vm, key);\r\n          }\r\n      }\r\n      vmStateManager.set(vm, 'slots', slotNames);\r\n  }\r\n  function activateCurrentInstance(vm, fn, onError) {\r\n      var preVm = getCurrentVM();\r\n      setCurrentVM(vm);\r\n      try {\r\n          return fn(vm);\r\n      }\r\n      catch (err) {\r\n          if (onError) {\r\n              onError(err);\r\n          }\r\n          else {\r\n              throw err;\r\n          }\r\n      }\r\n      finally {\r\n          setCurrentVM(preVm);\r\n      }\r\n  }\r\n  function mixin(Vue) {\r\n      Vue.mixin({\r\n          beforeCreate: functionApiInit,\r\n          mounted: function () {\r\n              updateTemplateRef(this);\r\n          },\r\n          updated: function () {\r\n              updateTemplateRef(this);\r\n          },\r\n      });\r\n      /**\r\n       * Vuex init hook, injected into each instances init hooks list.\r\n       */\r\n      function functionApiInit() {\r\n          var vm = this;\r\n          var $options = vm.$options;\r\n          var setup = $options.setup, render = $options.render;\r\n          if (render) {\r\n              // keep currentInstance accessible for createElement\r\n              $options.render = function () {\r\n                  var _this = this;\r\n                  var args = [];\r\n                  for (var _i = 0; _i < arguments.length; _i++) {\r\n                      args[_i] = arguments[_i];\r\n                  }\r\n                  return activateCurrentInstance(vm, function () { return render.apply(_this, args); });\r\n              };\r\n          }\r\n          if (!setup) {\r\n              return;\r\n          }\r\n          if (typeof setup !== 'function') {\r\n              {\r\n                  warn('The \"setup\" option should be a function that returns a object in component definitions.', vm);\r\n              }\r\n              return;\r\n          }\r\n          var data = $options.data;\r\n          // wrapper the data option, so we can invoke setup before data get resolved\r\n          $options.data = function wrappedData() {\r\n              initSetup(vm, vm.$props);\r\n              return typeof data === 'function'\r\n                  ? data.call(vm, vm)\r\n                  : data || {};\r\n          };\r\n      }\r\n      function initSetup(vm, props) {\r\n          if (props === void 0) { props = {}; }\r\n          var setup = vm.$options.setup;\r\n          var ctx = createSetupContext(vm);\r\n          // mark props as reactive\r\n          markReactive(props);\r\n          // resolve scopedSlots and slots to functions\r\n          resolveScopedSlots(vm, ctx.slots);\r\n          var binding;\r\n          activateCurrentInstance(vm, function () {\r\n              binding = setup(props, ctx);\r\n          });\r\n          if (!binding)\r\n              return;\r\n          if (isFunction(binding)) {\r\n              // keep typescript happy with the binding type.\r\n              var bindingFunc_1 = binding;\r\n              // keep currentInstance accessible for createElement\r\n              vm.$options.render = function () {\r\n                  resolveScopedSlots(vm, ctx.slots);\r\n                  return activateCurrentInstance(vm, function () { return bindingFunc_1(); });\r\n              };\r\n              return;\r\n          }\r\n          if (isPlainObject(binding)) {\r\n              var bindingObj_1 = binding;\r\n              vmStateManager.set(vm, 'rawBindings', binding);\r\n              Object.keys(binding).forEach(function (name) {\r\n                  var bindingValue = bindingObj_1[name];\r\n                  // only make primitive value reactive\r\n                  if (!isRef(bindingValue)) {\r\n                      if (isReactive(bindingValue)) {\r\n                          bindingValue = ref(bindingValue);\r\n                      }\r\n                      else {\r\n                          // bind function to the vm, this will make `this` = vm\r\n                          if (isFunction(bindingValue)) {\r\n                              bindingValue = bindingValue.bind(vm);\r\n                          }\r\n                          // unwrap all ref properties\r\n                          var unwrapped = unwrapRefProxy(bindingValue);\r\n                          // mark the object as reactive\r\n                          markReactive(unwrapped);\r\n                          // a non-reactive should not don't get reactivity\r\n                          bindingValue = ref(markRaw(unwrapped));\r\n                      }\r\n                  }\r\n                  asVmProperty(vm, name, bindingValue);\r\n              });\r\n              return;\r\n          }\r\n          {\r\n              assert(false, \"\\\"setup\\\" must return a \\\"Object\\\" or a \\\"Function\\\", got \\\"\" + Object.prototype.toString\r\n                  .call(binding)\r\n                  .slice(8, -1) + \"\\\"\");\r\n          }\r\n      }\r\n      function createSetupContext(vm) {\r\n          var ctx = {\r\n              slots: {},\r\n          };\r\n          var props = [\r\n              'root',\r\n              'parent',\r\n              'refs',\r\n              'attrs',\r\n              'listeners',\r\n              'isServer',\r\n              'ssrContext',\r\n          ];\r\n          var methodReturnVoid = ['emit'];\r\n          props.forEach(function (key) {\r\n              var _a;\r\n              var targetKey;\r\n              var srcKey;\r\n              if (Array.isArray(key)) {\r\n                  _a = __read(key, 2), targetKey = _a[0], srcKey = _a[1];\r\n              }\r\n              else {\r\n                  targetKey = srcKey = key;\r\n              }\r\n              srcKey = \"$\" + srcKey;\r\n              proxy(ctx, targetKey, {\r\n                  get: function () { return vm[srcKey]; },\r\n                  set: function () {\r\n                      warn(\"Cannot assign to '\" + targetKey + \"' because it is a read-only property\", vm);\r\n                  },\r\n              });\r\n          });\r\n          methodReturnVoid.forEach(function (key) {\r\n              var srcKey = \"$\" + key;\r\n              proxy(ctx, key, {\r\n                  get: function () {\r\n                      return function () {\r\n                          var args = [];\r\n                          for (var _i = 0; _i < arguments.length; _i++) {\r\n                              args[_i] = arguments[_i];\r\n                          }\r\n                          var fn = vm[srcKey];\r\n                          fn.apply(vm, args);\r\n                      };\r\n                  },\r\n              });\r\n          });\r\n          return ctx;\r\n      }\r\n  }\n\n  var nextTick = function nextTick() {\r\n      var args = [];\r\n      for (var _i = 0; _i < arguments.length; _i++) {\r\n          args[_i] = arguments[_i];\r\n      }\r\n      return currentVue === null || currentVue === void 0 ? void 0 : currentVue.nextTick.bind(this, args);\r\n  };\n\n  var fallbackCreateElement;\r\n  var createElement = function createElement() {\r\n      var args = [];\r\n      for (var _i = 0; _i < arguments.length; _i++) {\r\n          args[_i] = arguments[_i];\r\n      }\r\n      if (!currentVM) {\r\n          warn('`createElement()` has been called outside of render function.');\r\n          if (!fallbackCreateElement) {\r\n              fallbackCreateElement = defineComponentInstance(getCurrentVue())\r\n                  .$createElement;\r\n          }\r\n          return fallbackCreateElement.apply(fallbackCreateElement, args);\r\n      }\r\n      return currentVM.$createElement.apply(currentVM, args);\r\n  };\n\n  // implementation, close to no-op\r\n  function defineComponent(options) {\r\n      return options;\r\n  }\r\n  var createComponent = (function (options) {\r\n      {\r\n          Vue.util.warn('`createComponent` has been renamed to `defineComponent`.');\r\n      }\r\n      return defineComponent(options);\r\n  });\n\n  var genName = function (name) { return \"on\" + (name[0].toUpperCase() + name.slice(1)); };\r\n  function createLifeCycle(lifeCyclehook) {\r\n      return function (callback) {\r\n          var vm = currentVMInFn(genName(lifeCyclehook));\r\n          if (vm) {\r\n              injectHookOption(getCurrentVue(), vm, lifeCyclehook, callback);\r\n          }\r\n      };\r\n  }\r\n  function injectHookOption(Vue, vm, hook, val) {\r\n      var options = vm.$options;\r\n      var mergeFn = Vue.config.optionMergeStrategies[hook];\r\n      options[hook] = mergeFn(options[hook], wrapHookCall(vm, val));\r\n  }\r\n  function wrapHookCall(vm, fn) {\r\n      return function () {\r\n          var args = [];\r\n          for (var _i = 0; _i < arguments.length; _i++) {\r\n              args[_i] = arguments[_i];\r\n          }\r\n          var preVm = getCurrentVM();\r\n          setCurrentVM(vm);\r\n          try {\r\n              return fn.apply(void 0, __spread(args));\r\n          }\r\n          finally {\r\n              setCurrentVM(preVm);\r\n          }\r\n      };\r\n  }\r\n  // export const onCreated = createLifeCycle('created');\r\n  var onBeforeMount = createLifeCycle('beforeMount');\r\n  var onMounted = createLifeCycle('mounted');\r\n  var onBeforeUpdate = createLifeCycle('beforeUpdate');\r\n  var onUpdated = createLifeCycle('updated');\r\n  var onBeforeUnmount = createLifeCycle('beforeDestroy');\r\n  var onUnmounted = createLifeCycle('destroyed');\r\n  var onErrorCaptured = createLifeCycle('errorCaptured');\r\n  var onActivated = createLifeCycle('activated');\r\n  var onDeactivated = createLifeCycle('deactivated');\r\n  var onServerPrefetch = createLifeCycle('serverPrefetch');\n\n  var fallbackVM;\r\n  function flushPreQueue() {\r\n      flushQueue(this, WatcherPreFlushQueueKey);\r\n  }\r\n  function flushPostQueue() {\r\n      flushQueue(this, WatcherPostFlushQueueKey);\r\n  }\r\n  function hasWatchEnv(vm) {\r\n      return vm[WatcherPreFlushQueueKey] !== undefined;\r\n  }\r\n  function installWatchEnv(vm) {\r\n      vm[WatcherPreFlushQueueKey] = [];\r\n      vm[WatcherPostFlushQueueKey] = [];\r\n      vm.$on('hook:beforeUpdate', flushPreQueue);\r\n      vm.$on('hook:updated', flushPostQueue);\r\n  }\r\n  function getWatcherOption(options) {\r\n      return __assign({\r\n          immediate: false,\r\n          deep: false,\r\n          flush: 'post',\r\n      }, options);\r\n  }\r\n  function getWatchEffectOption(options) {\r\n      return __assign({\r\n          immediate: true,\r\n          deep: false,\r\n          flush: 'post',\r\n      }, options);\r\n  }\r\n  function getWatcherVM() {\r\n      var vm = getCurrentVM();\r\n      if (!vm) {\r\n          if (!fallbackVM) {\r\n              fallbackVM = defineComponentInstance(getCurrentVue());\r\n          }\r\n          vm = fallbackVM;\r\n      }\r\n      else if (!hasWatchEnv(vm)) {\r\n          installWatchEnv(vm);\r\n      }\r\n      return vm;\r\n  }\r\n  function flushQueue(vm, key) {\r\n      var queue = vm[key];\r\n      for (var index = 0; index < queue.length; index++) {\r\n          queue[index]();\r\n      }\r\n      queue.length = 0;\r\n  }\r\n  function queueFlushJob(vm, fn, mode) {\r\n      // flush all when beforeUpdate and updated are not fired\r\n      var fallbackFlush = function () {\r\n          vm.$nextTick(function () {\r\n              if (vm[WatcherPreFlushQueueKey].length) {\r\n                  flushQueue(vm, WatcherPreFlushQueueKey);\r\n              }\r\n              if (vm[WatcherPostFlushQueueKey].length) {\r\n                  flushQueue(vm, WatcherPostFlushQueueKey);\r\n              }\r\n          });\r\n      };\r\n      switch (mode) {\r\n          case 'pre':\r\n              fallbackFlush();\r\n              vm[WatcherPreFlushQueueKey].push(fn);\r\n              break;\r\n          case 'post':\r\n              fallbackFlush();\r\n              vm[WatcherPostFlushQueueKey].push(fn);\r\n              break;\r\n          default:\r\n              assert(false, \"flush must be one of [\\\"post\\\", \\\"pre\\\", \\\"sync\\\"], but got \" + mode);\r\n              break;\r\n      }\r\n  }\r\n  function createVueWatcher(vm, getter, callback, options) {\r\n      var index = vm._watchers.length;\r\n      // @ts-ignore: use undocumented options\r\n      vm.$watch(getter, callback, {\r\n          immediate: options.immediateInvokeCallback,\r\n          deep: options.deep,\r\n          lazy: options.noRun,\r\n          sync: options.sync,\r\n          before: options.before,\r\n      });\r\n      return vm._watchers[index];\r\n  }\r\n  // We have to monkeypatch the teardown function so Vue will run\r\n  // runCleanup() when it tears down the watcher on unmmount.\r\n  function patchWatcherTeardown(watcher, runCleanup) {\r\n      var _teardown = watcher.teardown;\r\n      watcher.teardown = function () {\r\n          var args = [];\r\n          for (var _i = 0; _i < arguments.length; _i++) {\r\n              args[_i] = arguments[_i];\r\n          }\r\n          _teardown.apply(watcher, args);\r\n          runCleanup();\r\n      };\r\n  }\r\n  function createWatcher(vm, source, cb, options) {\r\n      var flushMode = options.flush;\r\n      var isSync = flushMode === 'sync';\r\n      var cleanup;\r\n      var registerCleanup = function (fn) {\r\n          cleanup = function () {\r\n              try {\r\n                  fn();\r\n              }\r\n              catch (error) {\r\n                  logError(error, vm, 'onCleanup()');\r\n              }\r\n          };\r\n      };\r\n      // cleanup before running getter again\r\n      var runCleanup = function () {\r\n          if (cleanup) {\r\n              cleanup();\r\n              cleanup = null;\r\n          }\r\n      };\r\n      var createScheduler = function (fn) {\r\n          if (isSync ||\r\n              /* without a current active instance, ignore pre|post mode */ vm ===\r\n                  fallbackVM) {\r\n              return fn;\r\n          }\r\n          return (function () {\r\n              var args = [];\r\n              for (var _i = 0; _i < arguments.length; _i++) {\r\n                  args[_i] = arguments[_i];\r\n              }\r\n              return queueFlushJob(vm, function () {\r\n                  fn.apply(void 0, __spread(args));\r\n              }, flushMode);\r\n          });\r\n      };\r\n      // effect watch\r\n      if (cb === null) {\r\n          var running_1 = false;\r\n          var getter_1 = function () {\r\n              // preventing the watch callback being call in the same execution\r\n              if (running_1) {\r\n                  return;\r\n              }\r\n              try {\r\n                  running_1 = true;\r\n                  source(registerCleanup);\r\n              }\r\n              finally {\r\n                  running_1 = false;\r\n              }\r\n          };\r\n          var watcher_1 = createVueWatcher(vm, getter_1, noopFn, {\r\n              deep: options.deep || false,\r\n              sync: isSync,\r\n              before: runCleanup,\r\n          });\r\n          patchWatcherTeardown(watcher_1, runCleanup);\r\n          // enable the watcher update\r\n          watcher_1.lazy = false;\r\n          var originGet = watcher_1.get.bind(watcher_1);\r\n          // always run watchEffect\r\n          watcher_1.get = createScheduler(originGet);\r\n          return function () {\r\n              watcher_1.teardown();\r\n          };\r\n      }\r\n      var deep = options.deep;\r\n      var getter;\r\n      if (Array.isArray(source)) {\r\n          getter = function () { return source.map(function (s) { return (isRef(s) ? s.value : s()); }); };\r\n      }\r\n      else if (isRef(source)) {\r\n          getter = function () { return source.value; };\r\n      }\r\n      else if (isReactive(source)) {\r\n          getter = function () { return source; };\r\n          deep = true;\r\n      }\r\n      else if (isFunction(source)) {\r\n          getter = source;\r\n      }\r\n      else {\r\n          getter = noopFn;\r\n          warn(\"Invalid watch source: \" + JSON.stringify(source) + \".\\n      A watch source can only be a getter/effect function, a ref, a reactive object, or an array of these types.\", vm);\r\n      }\r\n      var applyCb = function (n, o) {\r\n          // cleanup before running cb again\r\n          runCleanup();\r\n          cb(n, o, registerCleanup);\r\n      };\r\n      var callback = createScheduler(applyCb);\r\n      if (options.immediate) {\r\n          var originalCallbck_1 = callback;\r\n          // `shiftCallback` is used to handle the first sync effect run.\r\n          // The subsequent callbacks will redirect to `callback`.\r\n          var shiftCallback_1 = function (n, o) {\r\n              shiftCallback_1 = originalCallbck_1;\r\n              applyCb(n, o);\r\n          };\r\n          callback = function (n, o) {\r\n              shiftCallback_1(n, o);\r\n          };\r\n      }\r\n      // @ts-ignore: use undocumented option \"sync\"\r\n      var stop = vm.$watch(getter, callback, {\r\n          immediate: options.immediate,\r\n          deep: deep,\r\n          sync: isSync,\r\n      });\r\n      // Once again, we have to hack the watcher for proper teardown\r\n      var watcher = vm._watchers[vm._watchers.length - 1];\r\n      patchWatcherTeardown(watcher, runCleanup);\r\n      return function () {\r\n          stop();\r\n      };\r\n  }\r\n  function watchEffect(effect, options) {\r\n      var opts = getWatchEffectOption(options);\r\n      var vm = getWatcherVM();\r\n      return createWatcher(vm, effect, null, opts);\r\n  }\r\n  // implementation\r\n  function watch(source, cb, options) {\r\n      var callback = null;\r\n      if (typeof cb === 'function') {\r\n          // source watch\r\n          callback = cb;\r\n      }\r\n      else {\r\n          // effect watch\r\n          {\r\n              warn(\"`watch(fn, options?)` signature has been moved to a separate API. \" +\r\n                  \"Use `watchEffect(fn, options?)` instead. `watch` now only \" +\r\n                  \"supports `watch(source, cb, options?) signature.\");\r\n          }\r\n          options = cb;\r\n          callback = null;\r\n      }\r\n      var opts = getWatcherOption(options);\r\n      var vm = getWatcherVM();\r\n      return createWatcher(vm, source, callback, opts);\r\n  }\n\n  // implement\r\n  function computed(options) {\r\n      var vm = getCurrentVM();\r\n      var get, set;\r\n      if (typeof options === 'function') {\r\n          get = options;\r\n      }\r\n      else {\r\n          get = options.get;\r\n          set = options.set;\r\n      }\r\n      var computedHost = defineComponentInstance(getCurrentVue(), {\r\n          computed: {\r\n              $$state: {\r\n                  get: get,\r\n                  set: set,\r\n              },\r\n          },\r\n      });\r\n      vm && vm.$on('hook:destroyed', function () { return computedHost.$destroy(); });\r\n      return createRef({\r\n          get: function () { return computedHost.$$state; },\r\n          set: function (v) {\r\n              if ( !set) {\r\n                  warn('Computed property was assigned to but it has no setter.', vm);\r\n                  return;\r\n              }\r\n              computedHost.$$state = v;\r\n          },\r\n      });\r\n  }\n\n  var NOT_FOUND = {};\r\n  function resolveInject(provideKey, vm) {\r\n      var source = vm;\r\n      while (source) {\r\n          // @ts-ignore\r\n          if (source._provided && hasOwn(source._provided, provideKey)) {\r\n              //@ts-ignore\r\n              return source._provided[provideKey];\r\n          }\r\n          source = source.$parent;\r\n      }\r\n      return NOT_FOUND;\r\n  }\r\n  function provide(key, value) {\r\n      var vm = currentVMInFn('provide');\r\n      if (!vm)\r\n          return;\r\n      if (!vm._provided) {\r\n          var provideCache_1 = {};\r\n          Object.defineProperty(vm, '_provided', {\r\n              get: function () { return provideCache_1; },\r\n              set: function (v) { return Object.assign(provideCache_1, v); },\r\n          });\r\n      }\r\n      vm._provided[key] = value;\r\n  }\r\n  function inject(key, defaultValue) {\r\n      if (!key) {\r\n          return defaultValue;\r\n      }\r\n      var vm = getCurrentVM();\r\n      if (vm) {\r\n          var val = resolveInject(key, vm);\r\n          if (val !== NOT_FOUND) {\r\n              return val;\r\n          }\r\n          else {\r\n              if (defaultValue === undefined && \"development\" !== 'production') {\r\n                  warn(\"Injection \\\"\" + String(key) + \"\\\" not found\", vm);\r\n              }\r\n              return defaultValue;\r\n          }\r\n      }\r\n      else {\r\n          warn(\"inject() can only be used inside setup() or functional components.\");\r\n      }\r\n  }\n\n  var VueCompositionAPI = {\r\n      install: function (Vue) { return install(Vue, mixin); },\r\n  };\r\n  // auto install when using CDN\r\n  if (typeof window !== 'undefined' && window.Vue) {\r\n      window.Vue.use(VueCompositionAPI);\r\n  }\n\n  exports.computed = computed;\n  exports.createComponent = createComponent;\n  exports.createElement = createElement;\n  exports.default = VueCompositionAPI;\n  exports.defineComponent = defineComponent;\n  exports.getCurrentInstance = getCurrentVM;\n  exports.inject = inject;\n  exports.isReactive = isReactive;\n  exports.isRef = isRef;\n  exports.markRaw = markRaw;\n  exports.nextTick = nextTick;\n  exports.onActivated = onActivated;\n  exports.onBeforeMount = onBeforeMount;\n  exports.onBeforeUnmount = onBeforeUnmount;\n  exports.onBeforeUpdate = onBeforeUpdate;\n  exports.onDeactivated = onDeactivated;\n  exports.onErrorCaptured = onErrorCaptured;\n  exports.onMounted = onMounted;\n  exports.onServerPrefetch = onServerPrefetch;\n  exports.onUnmounted = onUnmounted;\n  exports.onUpdated = onUpdated;\n  exports.provide = provide;\n  exports.reactive = reactive;\n  exports.ref = ref;\n  exports.set = set;\n  exports.shallowReactive = shallowReactive;\n  exports.shallowRef = shallowRef;\n  exports.toRaw = toRaw;\n  exports.toRef = toRef;\n  exports.toRefs = toRefs;\n  exports.triggerRef = triggerRef;\n  exports.unref = unref;\n  exports.watch = watch;\n  exports.watchEffect = watchEffect;\n\n  Object.defineProperty(exports, '__esModule', { value: true });\n\n})));\n","var root = require('./_root');\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    allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n\n/**\n * Creates a clone of  `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n  if (isDeep) {\n    return buffer.slice();\n  }\n  var length = buffer.length,\n      result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n  buffer.copy(result);\n  return result;\n}\n\nmodule.exports = cloneBuffer;\n","// Components\nimport VOverlay from '../../components/VOverlay'; // Utilities\n\nimport { keyCodes, addOnceEventListener, addPassiveEventListener, getZIndex, composedPath } from '../../util/helpers'; // Types\n\nimport Vue from 'vue';\n/* @vue/component */\n\nexport default Vue.extend().extend({\n  name: 'overlayable',\n  props: {\n    hideOverlay: Boolean,\n    overlayColor: String,\n    overlayOpacity: [Number, String]\n  },\n\n  data() {\n    return {\n      animationFrame: 0,\n      overlay: null\n    };\n  },\n\n  watch: {\n    hideOverlay(value) {\n      if (!this.isActive) return;\n      if (value) this.removeOverlay();else this.genOverlay();\n    }\n\n  },\n\n  beforeDestroy() {\n    this.removeOverlay();\n  },\n\n  methods: {\n    createOverlay() {\n      const overlay = new VOverlay({\n        propsData: {\n          absolute: this.absolute,\n          value: false,\n          color: this.overlayColor,\n          opacity: this.overlayOpacity\n        }\n      });\n      overlay.$mount();\n      const parent = this.absolute ? this.$el.parentNode : document.querySelector('[data-app]');\n      parent && parent.insertBefore(overlay.$el, parent.firstChild);\n      this.overlay = overlay;\n    },\n\n    genOverlay() {\n      this.hideScroll();\n      if (this.hideOverlay) return;\n      if (!this.overlay) this.createOverlay();\n      this.animationFrame = requestAnimationFrame(() => {\n        if (!this.overlay) return;\n\n        if (this.activeZIndex !== undefined) {\n          this.overlay.zIndex = String(this.activeZIndex - 1);\n        } else if (this.$el) {\n          this.overlay.zIndex = getZIndex(this.$el);\n        }\n\n        this.overlay.value = true;\n      });\n      return true;\n    },\n\n    /** removeOverlay(false) will not restore the scollbar afterwards */\n    removeOverlay(showScroll = true) {\n      if (this.overlay) {\n        addOnceEventListener(this.overlay.$el, 'transitionend', () => {\n          if (!this.overlay || !this.overlay.$el || !this.overlay.$el.parentNode || this.overlay.value || this.isActive) return;\n          this.overlay.$el.parentNode.removeChild(this.overlay.$el);\n          this.overlay.$destroy();\n          this.overlay = null;\n        }); // Cancel animation frame in case\n        // overlay is removed before it\n        // has finished its animation\n\n        cancelAnimationFrame(this.animationFrame);\n        this.overlay.value = false;\n      }\n\n      showScroll && this.showScroll();\n    },\n\n    scrollListener(e) {\n      if (e.type === 'keydown') {\n        if (['INPUT', 'TEXTAREA', 'SELECT'].includes(e.target.tagName) || // https://github.com/vuetifyjs/vuetify/issues/4715\n        e.target.isContentEditable) return;\n        const up = [keyCodes.up, keyCodes.pageup];\n        const down = [keyCodes.down, keyCodes.pagedown];\n\n        if (up.includes(e.keyCode)) {\n          e.deltaY = -1;\n        } else if (down.includes(e.keyCode)) {\n          e.deltaY = 1;\n        } else {\n          return;\n        }\n      }\n\n      if (e.target === this.overlay || e.type !== 'keydown' && e.target === document.body || this.checkPath(e)) e.preventDefault();\n    },\n\n    hasScrollbar(el) {\n      if (!el || el.nodeType !== Node.ELEMENT_NODE) return false;\n      const style = window.getComputedStyle(el);\n      return (['auto', 'scroll'].includes(style.overflowY) || el.tagName === 'SELECT') && el.scrollHeight > el.clientHeight || ['auto', 'scroll'].includes(style.overflowX) && el.scrollWidth > el.clientWidth;\n    },\n\n    shouldScroll(el, e) {\n      if (el.hasAttribute('data-app')) return false;\n      const dir = e.shiftKey || e.deltaX ? 'x' : 'y';\n      const delta = dir === 'y' ? e.deltaY : e.deltaX || e.deltaY;\n      let alreadyAtStart;\n      let alreadyAtEnd;\n\n      if (dir === 'y') {\n        alreadyAtStart = el.scrollTop === 0;\n        alreadyAtEnd = el.scrollTop + el.clientHeight === el.scrollHeight;\n      } else {\n        alreadyAtStart = el.scrollLeft === 0;\n        alreadyAtEnd = el.scrollLeft + el.clientWidth === el.scrollWidth;\n      }\n\n      const scrollingUp = delta < 0;\n      const scrollingDown = delta > 0;\n      if (!alreadyAtStart && scrollingUp) return true;\n      if (!alreadyAtEnd && scrollingDown) return true;\n\n      if (alreadyAtStart || alreadyAtEnd) {\n        return this.shouldScroll(el.parentNode, e);\n      }\n\n      return false;\n    },\n\n    isInside(el, parent) {\n      if (el === parent) {\n        return true;\n      } else if (el === null || el === document.body) {\n        return false;\n      } else {\n        return this.isInside(el.parentNode, parent);\n      }\n    },\n\n    checkPath(e) {\n      const path = composedPath(e);\n\n      if (e.type === 'keydown' && path[0] === document.body) {\n        const dialog = this.$refs.dialog; // getSelection returns null in firefox in some edge cases, can be ignored\n\n        const selected = window.getSelection().anchorNode;\n\n        if (dialog && this.hasScrollbar(dialog) && this.isInside(selected, dialog)) {\n          return !this.shouldScroll(dialog, e);\n        }\n\n        return true;\n      }\n\n      for (let index = 0; index < path.length; index++) {\n        const el = path[index];\n        if (el === document) return true;\n        if (el === document.documentElement) return true;\n        if (el === this.$refs.content) return true;\n        if (this.hasScrollbar(el)) return !this.shouldScroll(el, e);\n      }\n\n      return true;\n    },\n\n    hideScroll() {\n      if (this.$vuetify.breakpoint.smAndDown) {\n        document.documentElement.classList.add('overflow-y-hidden');\n      } else {\n        addPassiveEventListener(window, 'wheel', this.scrollListener, {\n          passive: false\n        });\n        window.addEventListener('keydown', this.scrollListener);\n      }\n    },\n\n    showScroll() {\n      document.documentElement.classList.remove('overflow-y-hidden');\n      window.removeEventListener('wheel', this.scrollListener);\n      window.removeEventListener('keydown', this.scrollListener);\n    }\n\n  }\n});\n//# sourceMappingURL=index.js.map","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n  return toString.call(arr) == '[object Array]';\n};\n","var toString = require('./toString'),\n    upperFirst = require('./upperFirst');\n\n/**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\nfunction capitalize(string) {\n  return upperFirst(toString(string).toLowerCase());\n}\n\nmodule.exports = capitalize;\n","export default {\n  badge: 'Badge',\n  close: 'Fermer',\n  dataIterator: {\n    noResultsText: 'Aucun enregistrement correspondant trouvé',\n    loadingText: `Chargement de l'élément...`,\n  },\n  dataTable: {\n    itemsPerPageText: 'Lignes par page :',\n    ariaLabel: {\n      sortDescending: 'Tri décroissant.',\n      sortAscending: 'Tri croissant.',\n      sortNone: 'Non trié.',\n      activateNone: 'Activer pour supprimer le tri.',\n      activateDescending: 'Activer pour trier par ordre décroissant.',\n      activateAscending: 'Activer pour trier par ordre croissant.',\n    },\n    sortBy: 'Trier par',\n  },\n  dataFooter: {\n    itemsPerPageText: 'Élements par page :',\n    itemsPerPageAll: 'Tous',\n    nextPage: 'Page suivante',\n    prevPage: 'Page précédente',\n    firstPage: 'Première page',\n    lastPage: 'Dernière page',\n    pageText: '{0}-{1} de {2}',\n  },\n  datePicker: {\n    itemsSelected: '{0} sélectionné(s)',\n    nextMonthAriaLabel: 'Le mois prochain',\n    nextYearAriaLabel: `L'année prochaine`,\n    prevMonthAriaLabel: 'Le mois précédent',\n    prevYearAriaLabel: 'Année précédente',\n  },\n  noDataText: 'Aucune donnée disponible',\n  carousel: {\n    prev: 'Visuel précédent',\n    next: 'Visuel suivant',\n    ariaLabel: {\n      delimiter: 'Diapositive {0} de {1}',\n    },\n  },\n  calendar: {\n    moreEvents: '{0} de plus',\n  },\n  fileInput: {\n    counter: '{0} fichier(s)',\n    counterSize: '{0} fichier(s) ({1} au total)',\n  },\n  timePicker: {\n    am: 'AM',\n    pm: 'PM',\n  },\n  pagination: {\n    ariaLabel: {\n      wrapper: 'Navigation de pagination',\n      next: 'Page suivante',\n      previous: 'Page précédente',\n      page: 'Aller à la page {0}',\n      currentPage: 'Page actuelle, Page {0}',\n    },\n  },\n  rating: {\n    ariaLabel: {\n      icon: 'Note de {0} sur {1}',\n    },\n  },\n}\n","var asciiWords = require('./_asciiWords'),\n    hasUnicodeWord = require('./_hasUnicodeWord'),\n    toString = require('./toString'),\n    unicodeWords = require('./_unicodeWords');\n\n/**\n * Splits `string` into an array of its words.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {RegExp|string} [pattern] The pattern to match words.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the words of `string`.\n * @example\n *\n * _.words('fred, barney, & pebbles');\n * // => ['fred', 'barney', 'pebbles']\n *\n * _.words('fred, barney, & pebbles', /[^, ]+/g);\n * // => ['fred', 'barney', '&', 'pebbles']\n */\nfunction words(string, pattern, guard) {\n  string = toString(string);\n  pattern = guard ? undefined : pattern;\n\n  if (pattern === undefined) {\n    return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);\n  }\n  return string.match(pattern) || [];\n}\n\nmodule.exports = words;\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","// 7.3.20 SpeciesConstructor(O, defaultConstructor)\nvar anObject = require('./_an-object');\nvar aFunction = require('./_a-function');\nvar SPECIES = require('./_wks')('species');\nmodule.exports = function (O, D) {\n  var C = anObject(O).constructor;\n  var S;\n  return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);\n};\n","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nvar getRandomValues;\nvar rnds8 = new Uint8Array(16);\nexport default function rng() {\n  // lazy load so that environments that need to polyfill have a chance to do so\n  if (!getRandomValues) {\n    // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation. Also,\n    // find the complete implementation of crypto (msCrypto) on IE11.\n    getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || typeof msCrypto !== 'undefined' && typeof msCrypto.getRandomValues === 'function' && msCrypto.getRandomValues.bind(msCrypto);\n\n    if (!getRandomValues) {\n      throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n    }\n  }\n\n  return getRandomValues(rnds8);\n}","export default /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;","import REGEX from './regex.js';\n\nfunction validate(uuid) {\n  return typeof uuid === 'string' && REGEX.test(uuid);\n}\n\nexport default validate;","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nvar byteToHex = [];\n\nfor (var i = 0; i < 256; ++i) {\n  byteToHex.push((i + 0x100).toString(16).substr(1));\n}\n\nfunction stringify(arr) {\n  var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n  // Note: Be careful editing this code!  It's been tuned for performance\n  // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n  var uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID.  If this throws, it's likely due to one\n  // of the following:\n  // - One or more input array values don't map to a hex octet (leading to\n  // \"undefined\" in the uuid)\n  // - Invalid input values for the RFC `version` or `variant` fields\n\n  if (!validate(uuid)) {\n    throw TypeError('Stringified UUID is invalid');\n  }\n\n  return uuid;\n}\n\nexport default stringify;","import rng from './rng.js';\nimport stringify from './stringify.js';\n\nfunction v4(options, buf, offset) {\n  options = options || {};\n  var rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n  rnds[6] = rnds[6] & 0x0f | 0x40;\n  rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n  if (buf) {\n    offset = offset || 0;\n\n    for (var i = 0; i < 16; ++i) {\n      buf[offset + i] = rnds[i];\n    }\n\n    return buf;\n  }\n\n  return stringify(rnds);\n}\n\nexport default v4;","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 * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n  var result = [];\n  if (object != null) {\n    for (var key in Object(object)) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nmodule.exports = nativeKeysIn;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n  var index = -1,\n      result = Array(map.size);\n\n  map.forEach(function(value, key) {\n    result[++index] = [key, value];\n  });\n  return result;\n}\n\nmodule.exports = mapToArray;\n","// 20.1.2.4 Number.isNaN(number)\nvar $export = require('./_export');\n\n$export($export.S, 'Number', {\n  isNaN: function isNaN(number) {\n    // eslint-disable-next-line no-self-compare\n    return number != number;\n  }\n});\n","\nvar indexOf = [].indexOf;\n\nmodule.exports = function(arr, obj){\n  if (indexOf) return arr.indexOf(obj);\n  for (var i = 0; i < arr.length; ++i) {\n    if (arr[i] === obj) return i;\n  }\n  return -1;\n};","/*!\n * inflection\n * Copyright(c) 2011 Ben Lin <ben@dreamerslab.com>\n * MIT Licensed\n *\n * @fileoverview\n * A port of inflection-js to node.js module.\n */\n\n( function ( root, factory ){\n  if( typeof define === 'function' && define.amd ){\n    define([], factory );\n  }else if( typeof exports === 'object' ){\n    module.exports = factory();\n  }else{\n    root.inflection = factory();\n  }\n}( this, function (){\n\n  /**\n   * @description This is a list of nouns that use the same form for both singular and plural.\n   *              This list should remain entirely in lower case to correctly match Strings.\n   * @private\n   */\n  var uncountable_words = [\n    // 'access',\n    'accommodation',\n    'adulthood',\n    'advertising',\n    'advice',\n    'aggression',\n    'aid',\n    'air',\n    'aircraft',\n    'alcohol',\n    'anger',\n    'applause',\n    'arithmetic',\n    // 'art',\n    'assistance',\n    'athletics',\n    // 'attention',\n\n    'bacon',\n    'baggage',\n    // 'ballet',\n    // 'beauty',\n    'beef',\n    // 'beer',\n    // 'behavior',\n    'biology',\n    // 'billiards',\n    'blood',\n    'botany',\n    // 'bowels',\n    'bread',\n    // 'business',\n    'butter',\n\n    'carbon',\n    'cardboard',\n    'cash',\n    'chalk',\n    'chaos',\n    'chess',\n    'crossroads',\n    'countryside',\n\n    // 'damage',\n    'dancing',\n    // 'danger',\n    'deer',\n    // 'delight',\n    // 'dessert',\n    'dignity',\n    'dirt',\n    // 'distribution',\n    'dust',\n\n    'economics',\n    'education',\n    'electricity',\n    // 'employment',\n    // 'energy',\n    'engineering',\n    'enjoyment',\n    // 'entertainment',\n    'envy',\n    'equipment',\n    'ethics',\n    'evidence',\n    'evolution',\n\n    // 'failure',\n    // 'faith',\n    'fame',\n    'fiction',\n    // 'fish',\n    'flour',\n    'flu',\n    'food',\n    // 'freedom',\n    // 'fruit',\n    'fuel',\n    'fun',\n    // 'funeral',\n    'furniture',\n\n    'gallows',\n    'garbage',\n    'garlic',\n    // 'gas',\n    'genetics',\n    // 'glass',\n    'gold',\n    'golf',\n    'gossip',\n    // 'grass',\n    'gratitude',\n    'grief',\n    // 'ground',\n    'guilt',\n    'gymnastics',\n\n    // 'hair',\n    'happiness',\n    'hardware',\n    'harm',\n    'hate',\n    'hatred',\n    'health',\n    'heat',\n    // 'height',\n    'help',\n    'homework',\n    'honesty',\n    'honey',\n    'hospitality',\n    'housework',\n    'humour',\n    'hunger',\n    'hydrogen',\n\n    'ice',\n    'importance',\n    'inflation',\n    'information',\n    // 'injustice',\n    'innocence',\n    // 'intelligence',\n    'iron',\n    'irony',\n\n    'jam',\n    // 'jealousy',\n    // 'jelly',\n    'jewelry',\n    // 'joy',\n    'judo',\n    // 'juice',\n    // 'justice',\n\n    'karate',\n    // 'kindness',\n    'knowledge',\n\n    // 'labour',\n    'lack',\n    // 'land',\n    'laughter',\n    'lava',\n    'leather',\n    'leisure',\n    'lightning',\n    'linguine',\n    'linguini',\n    'linguistics',\n    'literature',\n    'litter',\n    'livestock',\n    'logic',\n    'loneliness',\n    // 'love',\n    'luck',\n    'luggage',\n\n    'macaroni',\n    'machinery',\n    'magic',\n    // 'mail',\n    'management',\n    'mankind',\n    'marble',\n    'mathematics',\n    'mayonnaise',\n    'measles',\n    // 'meat',\n    // 'metal',\n    'methane',\n    'milk',\n    'minus',\n    'money',\n    // 'moose',\n    'mud',\n    'music',\n    'mumps',\n\n    'nature',\n    'news',\n    'nitrogen',\n    'nonsense',\n    'nurture',\n    'nutrition',\n\n    'obedience',\n    'obesity',\n    // 'oil',\n    'oxygen',\n\n    // 'paper',\n    // 'passion',\n    'pasta',\n    'patience',\n    // 'permission',\n    'physics',\n    'poetry',\n    'pollution',\n    'poverty',\n    // 'power',\n    'pride',\n    // 'production',\n    // 'progress',\n    // 'pronunciation',\n    'psychology',\n    'publicity',\n    'punctuation',\n\n    // 'quality',\n    // 'quantity',\n    'quartz',\n\n    'racism',\n    // 'rain',\n    // 'recreation',\n    'relaxation',\n    'reliability',\n    'research',\n    'respect',\n    'revenge',\n    'rice',\n    'rubbish',\n    'rum',\n\n    'safety',\n    // 'salad',\n    // 'salt',\n    // 'sand',\n    // 'satire',\n    'scenery',\n    'seafood',\n    'seaside',\n    'series',\n    'shame',\n    'sheep',\n    'shopping',\n    // 'silence',\n    'sleep',\n    // 'slang'\n    'smoke',\n    'smoking',\n    'snow',\n    'soap',\n    'software',\n    'soil',\n    // 'sorrow',\n    // 'soup',\n    'spaghetti',\n    // 'speed',\n    'species',\n    // 'spelling',\n    // 'sport',\n    'steam',\n    // 'strength',\n    'stuff',\n    'stupidity',\n    // 'success',\n    // 'sugar',\n    'sunshine',\n    'symmetry',\n\n    // 'tea',\n    'tennis',\n    'thirst',\n    'thunder',\n    'timber',\n    // 'time',\n    // 'toast',\n    // 'tolerance',\n    // 'trade',\n    'traffic',\n    'transportation',\n    // 'travel',\n    'trust',\n\n    // 'understanding',\n    'underwear',\n    'unemployment',\n    'unity',\n    // 'usage',\n\n    'validity',\n    'veal',\n    'vegetation',\n    'vegetarianism',\n    'vengeance',\n    'violence',\n    // 'vision',\n    'vitality',\n\n    'warmth',\n    // 'water',\n    'wealth',\n    'weather',\n    // 'weight',\n    'welfare',\n    'wheat',\n    // 'whiskey',\n    // 'width',\n    'wildlife',\n    // 'wine',\n    'wisdom',\n    // 'wood',\n    // 'wool',\n    // 'work',\n\n    // 'yeast',\n    'yoga',\n\n    'zinc',\n    'zoology'\n  ];\n\n  /**\n   * @description These rules translate from the singular form of a noun to its plural form.\n   * @private\n   */\n\n  var regex = {\n    plural : {\n      men       : new RegExp( '^(m|wom)en$'                    , 'gi' ),\n      people    : new RegExp( '(pe)ople$'                      , 'gi' ),\n      children  : new RegExp( '(child)ren$'                    , 'gi' ),\n      tia       : new RegExp( '([ti])a$'                       , 'gi' ),\n      analyses  : new RegExp( '((a)naly|(b)a|(d)iagno|(p)arenthe|(p)rogno|(s)ynop|(t)he)ses$','gi' ),\n      hives     : new RegExp( '(hi|ti)ves$'                    , 'gi' ),\n      curves    : new RegExp( '(curve)s$'                      , 'gi' ),\n      lrves     : new RegExp( '([lr])ves$'                     , 'gi' ),\n      aves      : new RegExp( '([a])ves$'                      , 'gi' ),\n      foves     : new RegExp( '([^fo])ves$'                    , 'gi' ),\n      movies    : new RegExp( '(m)ovies$'                      , 'gi' ),\n      aeiouyies : new RegExp( '([^aeiouy]|qu)ies$'             , 'gi' ),\n      series    : new RegExp( '(s)eries$'                      , 'gi' ),\n      xes       : new RegExp( '(x|ch|ss|sh)es$'                , 'gi' ),\n      mice      : new RegExp( '([m|l])ice$'                    , 'gi' ),\n      buses     : new RegExp( '(bus)es$'                       , 'gi' ),\n      oes       : new RegExp( '(o)es$'                         , 'gi' ),\n      shoes     : new RegExp( '(shoe)s$'                       , 'gi' ),\n      crises    : new RegExp( '(cris|ax|test)es$'              , 'gi' ),\n      octopuses : new RegExp( '(octop|vir)uses$'               , 'gi' ),\n      aliases   : new RegExp( '(alias|canvas|status|campus)es$', 'gi' ),\n      summonses : new RegExp( '^(summons|bonus)es$'            , 'gi' ),\n      oxen      : new RegExp( '^(ox)en'                        , 'gi' ),\n      matrices  : new RegExp( '(matr)ices$'                    , 'gi' ),\n      vertices  : new RegExp( '(vert|ind)ices$'                , 'gi' ),\n      feet      : new RegExp( '^feet$'                         , 'gi' ),\n      teeth     : new RegExp( '^teeth$'                        , 'gi' ),\n      geese     : new RegExp( '^geese$'                        , 'gi' ),\n      quizzes   : new RegExp( '(quiz)zes$'                     , 'gi' ),\n      whereases : new RegExp( '^(whereas)es$'                  , 'gi' ),\n      criteria  : new RegExp( '^(criteri)a$'                   , 'gi' ),\n      genera    : new RegExp( '^genera$'                       , 'gi' ),\n      ss        : new RegExp( 'ss$'                            , 'gi' ),\n      s         : new RegExp( 's$'                             , 'gi' )\n    },\n\n    singular : {\n      man       : new RegExp( '^(m|wom)an$'                  , 'gi' ),\n      person    : new RegExp( '(pe)rson$'                    , 'gi' ),\n      child     : new RegExp( '(child)$'                     , 'gi' ),\n      ox        : new RegExp( '^(ox)$'                       , 'gi' ),\n      axis      : new RegExp( '(ax|test)is$'                 , 'gi' ),\n      octopus   : new RegExp( '(octop|vir)us$'               , 'gi' ),\n      alias     : new RegExp( '(alias|status|canvas|campus)$', 'gi' ),\n      summons   : new RegExp( '^(summons|bonus)$'            , 'gi' ),\n      bus       : new RegExp( '(bu)s$'                       , 'gi' ),\n      buffalo   : new RegExp( '(buffal|tomat|potat)o$'       , 'gi' ),\n      tium      : new RegExp( '([ti])um$'                    , 'gi' ),\n      sis       : new RegExp( 'sis$'                         , 'gi' ),\n      ffe       : new RegExp( '(?:([^f])fe|([lr])f)$'        , 'gi' ),\n      hive      : new RegExp( '(hi|ti)ve$'                   , 'gi' ),\n      aeiouyy   : new RegExp( '([^aeiouy]|qu)y$'             , 'gi' ),\n      x         : new RegExp( '(x|ch|ss|sh)$'                , 'gi' ),\n      matrix    : new RegExp( '(matr)ix$'                    , 'gi' ),\n      vertex    : new RegExp( '(vert|ind)ex$'                , 'gi' ),\n      mouse     : new RegExp( '([m|l])ouse$'                 , 'gi' ),\n      foot      : new RegExp( '^foot$'                       , 'gi' ),\n      tooth     : new RegExp( '^tooth$'                      , 'gi' ),\n      goose     : new RegExp( '^goose$'                      , 'gi' ),\n      quiz      : new RegExp( '(quiz)$'                      , 'gi' ),\n      whereas   : new RegExp( '^(whereas)$'                  , 'gi' ),\n      criterion : new RegExp( '^(criteri)on$'                , 'gi' ),\n      genus     : new RegExp( '^genus$'                      , 'gi' ),\n      s         : new RegExp( 's$'                           , 'gi' ),\n      common    : new RegExp( '$'                            , 'gi' )\n    }\n  };\n\n  var plural_rules = [\n\n    // do not replace if its already a plural word\n    [ regex.plural.men       ],\n    [ regex.plural.people    ],\n    [ regex.plural.children  ],\n    [ regex.plural.tia       ],\n    [ regex.plural.analyses  ],\n    [ regex.plural.hives     ],\n    [ regex.plural.curves    ],\n    [ regex.plural.lrves     ],\n    [ regex.plural.foves     ],\n    [ regex.plural.aeiouyies ],\n    [ regex.plural.series    ],\n    [ regex.plural.movies    ],\n    [ regex.plural.xes       ],\n    [ regex.plural.mice      ],\n    [ regex.plural.buses     ],\n    [ regex.plural.oes       ],\n    [ regex.plural.shoes     ],\n    [ regex.plural.crises    ],\n    [ regex.plural.octopuses ],\n    [ regex.plural.aliases   ],\n    [ regex.plural.summonses ],\n    [ regex.plural.oxen      ],\n    [ regex.plural.matrices  ],\n    [ regex.plural.feet      ],\n    [ regex.plural.teeth     ],\n    [ regex.plural.geese     ],\n    [ regex.plural.quizzes   ],\n    [ regex.plural.whereases ],\n    [ regex.plural.criteria  ],\n    [ regex.plural.genera    ],\n\n    // original rule\n    [ regex.singular.man      , '$1en' ],\n    [ regex.singular.person   , '$1ople' ],\n    [ regex.singular.child    , '$1ren' ],\n    [ regex.singular.ox       , '$1en' ],\n    [ regex.singular.axis     , '$1es' ],\n    [ regex.singular.octopus  , '$1uses' ],\n    [ regex.singular.alias    , '$1es' ],\n    [ regex.singular.summons  , '$1es' ],\n    [ regex.singular.bus      , '$1ses' ],\n    [ regex.singular.buffalo  , '$1oes' ],\n    [ regex.singular.tium     , '$1a' ],\n    [ regex.singular.sis      , 'ses' ],\n    [ regex.singular.ffe      , '$1$2ves' ],\n    [ regex.singular.hive     , '$1ves' ],\n    [ regex.singular.aeiouyy  , '$1ies' ],\n    [ regex.singular.matrix   , '$1ices' ],\n    [ regex.singular.vertex   , '$1ices' ],\n    [ regex.singular.x        , '$1es' ],\n    [ regex.singular.mouse    , '$1ice' ],\n    [ regex.singular.foot     , 'feet' ],\n    [ regex.singular.tooth    , 'teeth' ],\n    [ regex.singular.goose    , 'geese' ],\n    [ regex.singular.quiz     , '$1zes' ],\n    [ regex.singular.whereas  , '$1es' ],\n    [ regex.singular.criterion, '$1a' ],\n    [ regex.singular.genus    , 'genera' ],\n\n    [ regex.singular.s     , 's' ],\n    [ regex.singular.common, 's' ]\n  ];\n\n  /**\n   * @description These rules translate from the plural form of a noun to its singular form.\n   * @private\n   */\n  var singular_rules = [\n\n    // do not replace if its already a singular word\n    [ regex.singular.man     ],\n    [ regex.singular.person  ],\n    [ regex.singular.child   ],\n    [ regex.singular.ox      ],\n    [ regex.singular.axis    ],\n    [ regex.singular.octopus ],\n    [ regex.singular.alias   ],\n    [ regex.singular.summons ],\n    [ regex.singular.bus     ],\n    [ regex.singular.buffalo ],\n    [ regex.singular.tium    ],\n    [ regex.singular.sis     ],\n    [ regex.singular.ffe     ],\n    [ regex.singular.hive    ],\n    [ regex.singular.aeiouyy ],\n    [ regex.singular.x       ],\n    [ regex.singular.matrix  ],\n    [ regex.singular.mouse   ],\n    [ regex.singular.foot    ],\n    [ regex.singular.tooth   ],\n    [ regex.singular.goose   ],\n    [ regex.singular.quiz    ],\n    [ regex.singular.whereas ],\n    [ regex.singular.criterion ],\n    [ regex.singular.genus ],\n\n    // original rule\n    [ regex.plural.men      , '$1an' ],\n    [ regex.plural.people   , '$1rson' ],\n    [ regex.plural.children , '$1' ],\n    [ regex.plural.genera   , 'genus'],\n    [ regex.plural.criteria , '$1on'],\n    [ regex.plural.tia      , '$1um' ],\n    [ regex.plural.analyses , '$1$2sis' ],\n    [ regex.plural.hives    , '$1ve' ],\n    [ regex.plural.curves   , '$1' ],\n    [ regex.plural.lrves    , '$1f' ],\n    [ regex.plural.aves     , '$1ve' ],\n    [ regex.plural.foves    , '$1fe' ],\n    [ regex.plural.movies   , '$1ovie' ],\n    [ regex.plural.aeiouyies, '$1y' ],\n    [ regex.plural.series   , '$1eries' ],\n    [ regex.plural.xes      , '$1' ],\n    [ regex.plural.mice     , '$1ouse' ],\n    [ regex.plural.buses    , '$1' ],\n    [ regex.plural.oes      , '$1' ],\n    [ regex.plural.shoes    , '$1' ],\n    [ regex.plural.crises   , '$1is' ],\n    [ regex.plural.octopuses, '$1us' ],\n    [ regex.plural.aliases  , '$1' ],\n    [ regex.plural.summonses, '$1' ],\n    [ regex.plural.oxen     , '$1' ],\n    [ regex.plural.matrices , '$1ix' ],\n    [ regex.plural.vertices , '$1ex' ],\n    [ regex.plural.feet     , 'foot' ],\n    [ regex.plural.teeth    , 'tooth' ],\n    [ regex.plural.geese    , 'goose' ],\n    [ regex.plural.quizzes  , '$1' ],\n    [ regex.plural.whereases, '$1' ],\n\n    [ regex.plural.ss, 'ss' ],\n    [ regex.plural.s , '' ]\n  ];\n\n  /**\n   * @description This is a list of words that should not be capitalized for title case.\n   * @private\n   */\n  var non_titlecased_words = [\n    'and', 'or', 'nor', 'a', 'an', 'the', 'so', 'but', 'to', 'of', 'at','by',\n    'from', 'into', 'on', 'onto', 'off', 'out', 'in', 'over', 'with', 'for'\n  ];\n\n  /**\n   * @description These are regular expressions used for converting between String formats.\n   * @private\n   */\n  var id_suffix         = new RegExp( '(_ids|_id)$', 'g' );\n  var underbar          = new RegExp( '_', 'g' );\n  var space_or_underbar = new RegExp( '[\\ _]', 'g' );\n  var uppercase         = new RegExp( '([A-Z])', 'g' );\n  var underbar_prefix   = new RegExp( '^_' );\n\n  var inflector = {\n\n  /**\n   * A helper method that applies rules based replacement to a String.\n   * @private\n   * @function\n   * @param {String} str String to modify and return based on the passed rules.\n   * @param {Array: [RegExp, String]} rules Regexp to match paired with String to use for replacement\n   * @param {Array: [String]} skip Strings to skip if they match\n   * @param {String} override String to return as though this method succeeded (used to conform to APIs)\n   * @returns {String} Return passed String modified by passed rules.\n   * @example\n   *\n   *     this._apply_rules( 'cows', singular_rules ); // === 'cow'\n   */\n    _apply_rules : function ( str, rules, skip, override ){\n      if( override ){\n        str = override;\n      }else{\n        var ignore = ( inflector.indexOf( skip, str.toLowerCase()) > -1 );\n\n        if( !ignore ){\n          var i = 0;\n          var j = rules.length;\n\n          for( ; i < j; i++ ){\n            if( str.match( rules[ i ][ 0 ])){\n              if( rules[ i ][ 1 ] !== undefined ){\n                str = str.replace( rules[ i ][ 0 ], rules[ i ][ 1 ]);\n              }\n              break;\n            }\n          }\n        }\n      }\n\n      return str;\n    },\n\n\n\n  /**\n   * This lets us detect if an Array contains a given element.\n   * @public\n   * @function\n   * @param {Array} arr The subject array.\n   * @param {Object} item Object to locate in the Array.\n   * @param {Number} from_index Starts checking from this position in the Array.(optional)\n   * @param {Function} compare_func Function used to compare Array item vs passed item.(optional)\n   * @returns {Number} Return index position in the Array of the passed item.\n   * @example\n   *\n   *     var inflection = require( 'inflection' );\n   *\n   *     inflection.indexOf([ 'hi','there' ], 'guys' ); // === -1\n   *     inflection.indexOf([ 'hi','there' ], 'hi' ); // === 0\n   */\n    indexOf : function ( arr, item, from_index, compare_func ){\n      if( !from_index ){\n        from_index = -1;\n      }\n\n      var index = -1;\n      var i     = from_index;\n      var j     = arr.length;\n\n      for( ; i < j; i++ ){\n        if( arr[ i ]  === item || compare_func && compare_func( arr[ i ], item )){\n          index = i;\n          break;\n        }\n      }\n\n      return index;\n    },\n\n\n\n  /**\n   * This function adds pluralization support to every String object.\n   * @public\n   * @function\n   * @param {String} str The subject string.\n   * @param {String} plural Overrides normal output with said String.(optional)\n   * @returns {String} Singular English language nouns are returned in plural form.\n   * @example\n   *\n   *     var inflection = require( 'inflection' );\n   *\n   *     inflection.pluralize( 'person' ); // === 'people'\n   *     inflection.pluralize( 'octopus' ); // === 'octopuses'\n   *     inflection.pluralize( 'Hat' ); // === 'Hats'\n   *     inflection.pluralize( 'person', 'guys' ); // === 'guys'\n   */\n    pluralize : function ( str, plural ){\n      return inflector._apply_rules( str, plural_rules, uncountable_words, plural );\n    },\n\n\n\n  /**\n   * This function adds singularization support to every String object.\n   * @public\n   * @function\n   * @param {String} str The subject string.\n   * @param {String} singular Overrides normal output with said String.(optional)\n   * @returns {String} Plural English language nouns are returned in singular form.\n   * @example\n   *\n   *     var inflection = require( 'inflection' );\n   *\n   *     inflection.singularize( 'people' ); // === 'person'\n   *     inflection.singularize( 'octopuses' ); // === 'octopus'\n   *     inflection.singularize( 'Hats' ); // === 'Hat'\n   *     inflection.singularize( 'guys', 'person' ); // === 'person'\n   */\n    singularize : function ( str, singular ){\n      return inflector._apply_rules( str, singular_rules, uncountable_words, singular );\n    },\n\n\n  /**\n   * This function will pluralize or singularlize a String appropriately based on an integer value\n   * @public\n   * @function\n   * @param {String} str The subject string.\n   * @param {Number} count The number to base pluralization off of.\n   * @param {String} singular Overrides normal output with said String.(optional)\n   * @param {String} plural Overrides normal output with said String.(optional)\n   * @returns {String} English language nouns are returned in the plural or singular form based on the count.\n   * @example\n   *\n   *     var inflection = require( 'inflection' );\n   *\n   *     inflection.inflect( 'people' 1 ); // === 'person'\n   *     inflection.inflect( 'octopuses' 1 ); // === 'octopus'\n   *     inflection.inflect( 'Hats' 1 ); // === 'Hat'\n   *     inflection.inflect( 'guys', 1 , 'person' ); // === 'person'\n   *     inflection.inflect( 'person', 2 ); // === 'people'\n   *     inflection.inflect( 'octopus', 2 ); // === 'octopuses'\n   *     inflection.inflect( 'Hat', 2 ); // === 'Hats'\n   *     inflection.inflect( 'person', 2, null, 'guys' ); // === 'guys'\n   */\n    inflect : function ( str, count, singular, plural ){\n      count = parseInt( count, 10 );\n\n      if( isNaN( count )) return str;\n\n      if( count === 0 || count > 1 ){\n        return inflector._apply_rules( str, plural_rules, uncountable_words, plural );\n      }else{\n        return inflector._apply_rules( str, singular_rules, uncountable_words, singular );\n      }\n    },\n\n\n\n  /**\n   * This function adds camelization support to every String object.\n   * @public\n   * @function\n   * @param {String} str The subject string.\n   * @param {Boolean} low_first_letter Default is to capitalize the first letter of the results.(optional)\n   *                                 Passing true will lowercase it.\n   * @returns {String} Lower case underscored words will be returned in camel case.\n   *                  additionally '/' is translated to '::'\n   * @example\n   *\n   *     var inflection = require( 'inflection' );\n   *\n   *     inflection.camelize( 'message_properties' ); // === 'MessageProperties'\n   *     inflection.camelize( 'message_properties', true ); // === 'messageProperties'\n   */\n    camelize : function ( str, low_first_letter ){\n      var str_path = str.split( '/' );\n      var i        = 0;\n      var j        = str_path.length;\n      var str_arr, init_x, k, l, first;\n\n      for( ; i < j; i++ ){\n        str_arr = str_path[ i ].split( '_' );\n        k       = 0;\n        l       = str_arr.length;\n\n        for( ; k < l; k++ ){\n          if( k !== 0 ){\n            str_arr[ k ] = str_arr[ k ].toLowerCase();\n          }\n\n          first = str_arr[ k ].charAt( 0 );\n          first = low_first_letter && i === 0 && k === 0\n            ? first.toLowerCase() : first.toUpperCase();\n          str_arr[ k ] = first + str_arr[ k ].substring( 1 );\n        }\n\n        str_path[ i ] = str_arr.join( '' );\n      }\n\n      return str_path.join( '::' );\n    },\n\n\n\n  /**\n   * This function adds underscore support to every String object.\n   * @public\n   * @function\n   * @param {String} str The subject string.\n   * @param {Boolean} all_upper_case Default is to lowercase and add underscore prefix.(optional)\n   *                  Passing true will return as entered.\n   * @returns {String} Camel cased words are returned as lower cased and underscored.\n   *                  additionally '::' is translated to '/'.\n   * @example\n   *\n   *     var inflection = require( 'inflection' );\n   *\n   *     inflection.underscore( 'MessageProperties' ); // === 'message_properties'\n   *     inflection.underscore( 'messageProperties' ); // === 'message_properties'\n   *     inflection.underscore( 'MP', true ); // === 'MP'\n   */\n    underscore : function ( str, all_upper_case ){\n      if( all_upper_case && str === str.toUpperCase()) return str;\n\n      var str_path = str.split( '::' );\n      var i        = 0;\n      var j        = str_path.length;\n\n      for( ; i < j; i++ ){\n        str_path[ i ] = str_path[ i ].replace( uppercase, '_$1' );\n        str_path[ i ] = str_path[ i ].replace( underbar_prefix, '' );\n      }\n\n      return str_path.join( '/' ).toLowerCase();\n    },\n\n\n\n  /**\n   * This function adds humanize support to every String object.\n   * @public\n   * @function\n   * @param {String} str The subject string.\n   * @param {Boolean} low_first_letter Default is to capitalize the first letter of the results.(optional)\n   *                                 Passing true will lowercase it.\n   * @returns {String} Lower case underscored words will be returned in humanized form.\n   * @example\n   *\n   *     var inflection = require( 'inflection' );\n   *\n   *     inflection.humanize( 'message_properties' ); // === 'Message properties'\n   *     inflection.humanize( 'message_properties', true ); // === 'message properties'\n   */\n    humanize : function ( str, low_first_letter ){\n      str = str.toLowerCase();\n      str = str.replace( id_suffix, '' );\n      str = str.replace( underbar, ' ' );\n\n      if( !low_first_letter ){\n        str = inflector.capitalize( str );\n      }\n\n      return str;\n    },\n\n\n\n  /**\n   * This function adds capitalization support to every String object.\n   * @public\n   * @function\n   * @param {String} str The subject string.\n   * @returns {String} All characters will be lower case and the first will be upper.\n   * @example\n   *\n   *     var inflection = require( 'inflection' );\n   *\n   *     inflection.capitalize( 'message_properties' ); // === 'Message_properties'\n   *     inflection.capitalize( 'message properties', true ); // === 'Message properties'\n   */\n    capitalize : function ( str ){\n      str = str.toLowerCase();\n\n      return str.substring( 0, 1 ).toUpperCase() + str.substring( 1 );\n    },\n\n\n\n  /**\n   * This function replaces underscores with dashes in the string.\n   * @public\n   * @function\n   * @param {String} str The subject string.\n   * @returns {String} Replaces all spaces or underscores with dashes.\n   * @example\n   *\n   *     var inflection = require( 'inflection' );\n   *\n   *     inflection.dasherize( 'message_properties' ); // === 'message-properties'\n   *     inflection.dasherize( 'Message Properties' ); // === 'Message-Properties'\n   */\n    dasherize : function ( str ){\n      return str.replace( space_or_underbar, '-' );\n    },\n\n\n\n  /**\n   * This function adds titleize support to every String object.\n   * @public\n   * @function\n   * @param {String} str The subject string.\n   * @returns {String} Capitalizes words as you would for a book title.\n   * @example\n   *\n   *     var inflection = require( 'inflection' );\n   *\n   *     inflection.titleize( 'message_properties' ); // === 'Message Properties'\n   *     inflection.titleize( 'message properties to keep' ); // === 'Message Properties to Keep'\n   */\n    titleize : function ( str ){\n      str         = str.toLowerCase().replace( underbar, ' ' );\n      var str_arr = str.split( ' ' );\n      var i       = 0;\n      var j       = str_arr.length;\n      var d, k, l;\n\n      for( ; i < j; i++ ){\n        d = str_arr[ i ].split( '-' );\n        k = 0;\n        l = d.length;\n\n        for( ; k < l; k++){\n          if( inflector.indexOf( non_titlecased_words, d[ k ].toLowerCase()) < 0 ){\n            d[ k ] = inflector.capitalize( d[ k ]);\n          }\n        }\n\n        str_arr[ i ] = d.join( '-' );\n      }\n\n      str = str_arr.join( ' ' );\n      str = str.substring( 0, 1 ).toUpperCase() + str.substring( 1 );\n\n      return str;\n    },\n\n\n\n  /**\n   * This function adds demodulize support to every String object.\n   * @public\n   * @function\n   * @param {String} str The subject string.\n   * @returns {String} Removes module names leaving only class names.(Ruby style)\n   * @example\n   *\n   *     var inflection = require( 'inflection' );\n   *\n   *     inflection.demodulize( 'Message::Bus::Properties' ); // === 'Properties'\n   */\n    demodulize : function ( str ){\n      var str_arr = str.split( '::' );\n\n      return str_arr[ str_arr.length - 1 ];\n    },\n\n\n\n  /**\n   * This function adds tableize support to every String object.\n   * @public\n   * @function\n   * @param {String} str The subject string.\n   * @returns {String} Return camel cased words into their underscored plural form.\n   * @example\n   *\n   *     var inflection = require( 'inflection' );\n   *\n   *     inflection.tableize( 'MessageBusProperty' ); // === 'message_bus_properties'\n   */\n    tableize : function ( str ){\n      str = inflector.underscore( str );\n      str = inflector.pluralize( str );\n\n      return str;\n    },\n\n\n\n  /**\n   * This function adds classification support to every String object.\n   * @public\n   * @function\n   * @param {String} str The subject string.\n   * @returns {String} Underscored plural nouns become the camel cased singular form.\n   * @example\n   *\n   *     var inflection = require( 'inflection' );\n   *\n   *     inflection.classify( 'message_bus_properties' ); // === 'MessageBusProperty'\n   */\n    classify : function ( str ){\n      str = inflector.camelize( str );\n      str = inflector.singularize( str );\n\n      return str;\n    },\n\n\n\n  /**\n   * This function adds foreign key support to every String object.\n   * @public\n   * @function\n   * @param {String} str The subject string.\n   * @param {Boolean} drop_id_ubar Default is to seperate id with an underbar at the end of the class name,\n                                 you can pass true to skip it.(optional)\n   * @returns {String} Underscored plural nouns become the camel cased singular form.\n   * @example\n   *\n   *     var inflection = require( 'inflection' );\n   *\n   *     inflection.foreign_key( 'MessageBusProperty' ); // === 'message_bus_property_id'\n   *     inflection.foreign_key( 'MessageBusProperty', true ); // === 'message_bus_propertyid'\n   */\n    foreign_key : function ( str, drop_id_ubar ){\n      str = inflector.demodulize( str );\n      str = inflector.underscore( str ) + (( drop_id_ubar ) ? ( '' ) : ( '_' )) + 'id';\n\n      return str;\n    },\n\n\n\n  /**\n   * This function adds ordinalize support to every String object.\n   * @public\n   * @function\n   * @param {String} str The subject string.\n   * @returns {String} Return all found numbers their sequence like '22nd'.\n   * @example\n   *\n   *     var inflection = require( 'inflection' );\n   *\n   *     inflection.ordinalize( 'the 1 pitch' ); // === 'the 1st pitch'\n   */\n    ordinalize : function ( str ){\n      var str_arr = str.split( ' ' );\n      var i       = 0;\n      var j       = str_arr.length;\n\n      for( ; i < j; i++ ){\n        var k = parseInt( str_arr[ i ], 10 );\n\n        if( !isNaN( k )){\n          var ltd = str_arr[ i ].substring( str_arr[ i ].length - 2 );\n          var ld  = str_arr[ i ].substring( str_arr[ i ].length - 1 );\n          var suf = 'th';\n\n          if( ltd != '11' && ltd != '12' && ltd != '13' ){\n            if( ld === '1' ){\n              suf = 'st';\n            }else if( ld === '2' ){\n              suf = 'nd';\n            }else if( ld === '3' ){\n              suf = 'rd';\n            }\n          }\n\n          str_arr[ i ] += suf;\n        }\n      }\n\n      return str_arr.join( ' ' );\n    },\n\n  /**\n   * This function performs multiple inflection methods on a string\n   * @public\n   * @function\n   * @param {String} str The subject string.\n   * @param {Array} arr An array of inflection methods.\n   * @returns {String}\n   * @example\n   *\n   *     var inflection = require( 'inflection' );\n   *\n   *     inflection.transform( 'all job', [ 'pluralize', 'capitalize', 'dasherize' ]); // === 'All-jobs'\n   */\n    transform : function ( str, arr ){\n      var i = 0;\n      var j = arr.length;\n\n      for( ;i < j; i++ ){\n        var method = arr[ i ];\n\n        if( inflector.hasOwnProperty( method )){\n          str = inflector[ method ]( str );\n        }\n      }\n\n      return str;\n    }\n  };\n\n/**\n * @public\n */\n  inflector.version = '1.13.1';\n\n  return inflector;\n}));\n","/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n  return function(object) {\n    return object == null ? undefined : object[key];\n  };\n}\n\nmodule.exports = baseProperty;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.populateHeader = exports.authentication = void 0;\nvar authentication_1 = require(\"./authentication\");\nObject.defineProperty(exports, \"authentication\", { enumerable: true, get: function () { return authentication_1.authentication; } });\nvar populate_header_1 = require(\"./populate-header\");\nObject.defineProperty(exports, \"populateHeader\", { enumerable: true, get: function () { return populate_header_1.populateHeader; } });\n//# sourceMappingURL=index.js.map","var ListCache = require('./_ListCache');\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n  this.__data__ = new ListCache;\n  this.size = 0;\n}\n\nmodule.exports = stackClear;\n","const debug = require('debug')('@feathersjs/errors');\n\nfunction FeathersError (msg, name, code, className, data) {\n  msg = msg || 'Error';\n\n  let errors;\n  let message;\n  let newData;\n\n  if (msg instanceof Error) {\n    message = msg.message || 'Error';\n\n    // NOTE (EK): This is typically to handle validation errors\n    if (msg.errors) {\n      errors = msg.errors;\n    }\n  } else if (typeof msg === 'object') { // Support plain old objects\n    message = msg.message || 'Error';\n    data = msg;\n  } else { // message is just a string\n    message = msg;\n  }\n\n  if (data) {\n    // NOTE(EK): To make sure that we are not messing\n    // with immutable data, just make a copy.\n    // https://github.com/feathersjs/errors/issues/19\n    newData = JSON.parse(JSON.stringify(data));\n\n    if (newData.errors) {\n      errors = newData.errors;\n      delete newData.errors;\n    } else if (data.errors) {\n      // The errors property from data could be\n      // stripped away while cloning resulting newData not to have it\n      // For example: when cloning arrays this property\n      errors = JSON.parse(JSON.stringify(data.errors));\n    }\n  }\n\n  // NOTE (EK): Babel doesn't support this so\n  // we have to pass in the class name manually.\n  // this.name = this.constructor.name;\n  this.type = 'FeathersError';\n  this.name = name;\n  this.message = message;\n  this.code = code;\n  this.className = className;\n  this.data = newData;\n  this.errors = errors || {};\n\n  debug(`${this.name}(${this.code}): ${this.message}`);\n  debug(this.errors);\n\n  if (Error.captureStackTrace) {\n    Error.captureStackTrace(this, FeathersError);\n  } else {\n    this.stack = (new Error()).stack;\n  }\n}\n\nfunction inheritsFrom (Child, Parent) {\n  Child.prototype = Object.create(Parent.prototype);\n  Child.prototype.constructor = Child;\n}\n\ninheritsFrom(FeathersError, Error);\n\n// NOTE (EK): A little hack to get around `message` not\n// being included in the default toJSON call.\nObject.defineProperty(FeathersError.prototype, 'toJSON', {\n  value: function () {\n    return {\n      name: this.name,\n      message: this.message,\n      code: this.code,\n      className: this.className,\n      data: this.data,\n      errors: this.errors\n    };\n  }\n});\n\n// 400 - Bad Request\nfunction BadRequest (message, data) {\n  FeathersError.call(this, message, 'BadRequest', 400, 'bad-request', data);\n}\n\ninheritsFrom(BadRequest, FeathersError);\n\n// 401 - Not Authenticated\nfunction NotAuthenticated (message, data) {\n  FeathersError.call(this, message, 'NotAuthenticated', 401, 'not-authenticated', data);\n}\n\ninheritsFrom(NotAuthenticated, FeathersError);\n\n// 402 - Payment Error\nfunction PaymentError (message, data) {\n  FeathersError.call(this, message, 'PaymentError', 402, 'payment-error', data);\n}\n\ninheritsFrom(PaymentError, FeathersError);\n\n// 403 - Forbidden\nfunction Forbidden (message, data) {\n  FeathersError.call(this, message, 'Forbidden', 403, 'forbidden', data);\n}\n\ninheritsFrom(Forbidden, FeathersError);\n\n// 404 - Not Found\nfunction NotFound (message, data) {\n  FeathersError.call(this, message, 'NotFound', 404, 'not-found', data);\n}\n\ninheritsFrom(NotFound, FeathersError);\n\n// 405 - Method Not Allowed\nfunction MethodNotAllowed (message, data) {\n  FeathersError.call(this, message, 'MethodNotAllowed', 405, 'method-not-allowed', data);\n}\n\ninheritsFrom(MethodNotAllowed, FeathersError);\n\n// 406 - Not Acceptable\nfunction NotAcceptable (message, data) {\n  FeathersError.call(this, message, 'NotAcceptable', 406, 'not-acceptable', data);\n}\n\ninheritsFrom(NotAcceptable, FeathersError);\n\n// 408 - Timeout\nfunction Timeout (message, data) {\n  FeathersError.call(this, message, 'Timeout', 408, 'timeout', data);\n}\n\ninheritsFrom(Timeout, FeathersError);\n\n// 409 - Conflict\nfunction Conflict (message, data) {\n  FeathersError.call(this, message, 'Conflict', 409, 'conflict', data);\n}\n\ninheritsFrom(Conflict, FeathersError);\n\n// 410 - Gone\nfunction Gone (message, data) {\n  FeathersError(this, message, 'Gone', 410, 'gone', data);\n}\n\ninheritsFrom(Gone, FeathersError);\n\n// 411 - Length Required\nfunction LengthRequired (message, data) {\n  FeathersError.call(this, message, 'LengthRequired', 411, 'length-required', data);\n}\n\ninheritsFrom(LengthRequired, FeathersError);\n\n// 422 Unprocessable\nfunction Unprocessable (message, data) {\n  FeathersError.call(this, message, 'Unprocessable', 422, 'unprocessable', data);\n}\n\ninheritsFrom(Unprocessable, FeathersError);\n\n// 429 Too Many Requests\nfunction TooManyRequests (message, data) {\n  FeathersError.call(this, message, 'TooManyRequests', 429, 'too-many-requests', data);\n}\n\ninheritsFrom(TooManyRequests, FeathersError);\n\n// 500 - General Error\nfunction GeneralError (message, data) {\n  FeathersError.call(this, message, 'GeneralError', 500, 'general-error', data);\n}\n\ninheritsFrom(GeneralError, FeathersError);\n\n// 501 - Not Implemented\nfunction NotImplemented (message, data) {\n  FeathersError.call(this, message, 'NotImplemented', 501, 'not-implemented', data);\n}\n\ninheritsFrom(NotImplemented, FeathersError);\n\n// 502 - Bad Gateway\nfunction BadGateway (message, data) {\n  FeathersError.call(this, message, 'BadGateway', 502, 'bad-gateway', data);\n}\n\ninheritsFrom(BadGateway, FeathersError);\n\n// 503 - Unavailable\nfunction Unavailable (message, data) {\n  FeathersError.call(this, message, 'Unavailable', 503, 'unavailable', data);\n}\n\ninheritsFrom(Unavailable, FeathersError);\n\nconst errors = {\n  FeathersError,\n  BadRequest,\n  NotAuthenticated,\n  PaymentError,\n  Forbidden,\n  NotFound,\n  MethodNotAllowed,\n  NotAcceptable,\n  Timeout,\n  Conflict,\n  Gone,\n  LengthRequired,\n  Unprocessable,\n  TooManyRequests,\n  GeneralError,\n  NotImplemented,\n  BadGateway,\n  Unavailable,\n  400: BadRequest,\n  401: NotAuthenticated,\n  402: PaymentError,\n  403: Forbidden,\n  404: NotFound,\n  405: MethodNotAllowed,\n  406: NotAcceptable,\n  408: Timeout,\n  409: Conflict,\n  410: Gone,\n  411: LengthRequired,\n  422: Unprocessable,\n  429: TooManyRequests,\n  500: GeneralError,\n  501: NotImplemented,\n  502: BadGateway,\n  503: Unavailable\n};\n\nfunction convert (error) {\n  if (!error) {\n    return error;\n  }\n\n  const FeathersError = errors[error.name];\n  const result = FeathersError\n    ? new FeathersError(error.message, error.data)\n    : new Error(error.message || error);\n\n  if (typeof error === 'object') {\n    Object.assign(result, error);\n  }\n\n  return result;\n}\n\nmodule.exports = Object.assign({ convert }, errors);\n","import Vue from 'vue';\nexport function factory(prop = 'value', event = 'input') {\n  return Vue.extend({\n    name: 'toggleable',\n    model: {\n      prop,\n      event\n    },\n    props: {\n      [prop]: {\n        required: false\n      }\n    },\n\n    data() {\n      return {\n        isActive: !!this[prop]\n      };\n    },\n\n    watch: {\n      [prop](val) {\n        this.isActive = !!val;\n      },\n\n      isActive(val) {\n        !!val !== this[prop] && this.$emit(event, val);\n      }\n\n    }\n  });\n}\n/* eslint-disable-next-line @typescript-eslint/no-redeclare */\n\nconst Toggleable = factory();\nexport default Toggleable;\n//# sourceMappingURL=index.js.map","import OurVue from 'vue';\nimport { consoleError } from './util/console';\nexport function install(Vue, args = {}) {\n  if (install.installed) return;\n  install.installed = true;\n\n  if (OurVue !== Vue) {\n    consoleError(`Multiple instances of Vue detected\nSee https://github.com/vuetifyjs/vuetify/issues/4068\n\nIf you're seeing \"$attrs is readonly\", it's caused by this`);\n  }\n\n  const components = args.components || {};\n  const directives = args.directives || {};\n\n  for (const name in directives) {\n    const directive = directives[name];\n    Vue.directive(name, directive);\n  }\n\n  (function registerComponents(components) {\n    if (components) {\n      for (const key in components) {\n        const component = components[key];\n\n        if (component && !registerComponents(component.$_vuetify_subcomponents)) {\n          Vue.component(key, component);\n        }\n      }\n\n      return true;\n    }\n\n    return false;\n  })(components); // Used to avoid multiple mixins being setup\n  // when in dev mode and hot module reload\n  // https://github.com/vuejs/vue/issues/5089#issuecomment-284260111\n\n\n  if (Vue.$_vuetify_installed) return;\n  Vue.$_vuetify_installed = true;\n  Vue.mixin({\n    beforeCreate() {\n      const options = this.$options;\n\n      if (options.vuetify) {\n        options.vuetify.init(this, this.$ssrContext);\n        this.$vuetify = Vue.observable(options.vuetify.framework);\n      } else {\n        this.$vuetify = options.parent && options.parent.$vuetify || this;\n      }\n    },\n\n    beforeMount() {\n      // @ts-ignore\n      if (this.$options.vuetify && this.$el && this.$el.hasAttribute('data-server-rendered')) {\n        // @ts-ignore\n        this.$vuetify.isHydrating = true; // @ts-ignore\n\n        this.$vuetify.breakpoint.update(true);\n      }\n    },\n\n    mounted() {\n      // @ts-ignore\n      if (this.$options.vuetify && this.$vuetify.isHydrating) {\n        // @ts-ignore\n        this.$vuetify.isHydrating = false; // @ts-ignore\n\n        this.$vuetify.breakpoint.update();\n      }\n    }\n\n  });\n}\n//# sourceMappingURL=install.js.map","export default {\n  badge: 'Badge',\n  close: 'Close',\n  dataIterator: {\n    noResultsText: 'No matching records found',\n    loadingText: 'Loading items...'\n  },\n  dataTable: {\n    itemsPerPageText: 'Rows per page:',\n    ariaLabel: {\n      sortDescending: 'Sorted descending.',\n      sortAscending: 'Sorted ascending.',\n      sortNone: 'Not sorted.',\n      activateNone: 'Activate to remove sorting.',\n      activateDescending: 'Activate to sort descending.',\n      activateAscending: 'Activate to sort ascending.'\n    },\n    sortBy: 'Sort by'\n  },\n  dataFooter: {\n    itemsPerPageText: 'Items per page:',\n    itemsPerPageAll: 'All',\n    nextPage: 'Next page',\n    prevPage: 'Previous page',\n    firstPage: 'First page',\n    lastPage: 'Last page',\n    pageText: '{0}-{1} of {2}'\n  },\n  datePicker: {\n    itemsSelected: '{0} selected',\n    nextMonthAriaLabel: 'Next month',\n    nextYearAriaLabel: 'Next year',\n    prevMonthAriaLabel: 'Previous month',\n    prevYearAriaLabel: 'Previous year'\n  },\n  noDataText: 'No data available',\n  carousel: {\n    prev: 'Previous visual',\n    next: 'Next visual',\n    ariaLabel: {\n      delimiter: 'Carousel slide {0} of {1}'\n    }\n  },\n  calendar: {\n    moreEvents: '{0} more'\n  },\n  fileInput: {\n    counter: '{0} files',\n    counterSize: '{0} files ({1} in total)'\n  },\n  timePicker: {\n    am: 'AM',\n    pm: 'PM'\n  },\n  pagination: {\n    ariaLabel: {\n      wrapper: 'Pagination Navigation',\n      next: 'Next page',\n      previous: 'Previous page',\n      page: 'Goto Page {0}',\n      currentPage: 'Current Page, Page {0}'\n    }\n  },\n  rating: {\n    ariaLabel: {\n      icon: 'Rating {0} of {1}'\n    }\n  }\n};\n//# sourceMappingURL=en.js.map","// Styles\nimport \"../../../src/styles/main.sass\"; // Locale\n\nimport { en } from '../../locale';\nexport const preset = {\n  breakpoint: {\n    // TODO: update to MD2 spec in v3 - 1280\n    mobileBreakpoint: 1264,\n    scrollBarWidth: 16,\n    thresholds: {\n      xs: 600,\n      sm: 960,\n      md: 1280,\n      lg: 1920\n    }\n  },\n  icons: {\n    // TODO: remove v3\n    iconfont: 'mdi',\n    values: {}\n  },\n  lang: {\n    current: 'en',\n    locales: {\n      en\n    },\n    // Default translator exists in lang service\n    t: undefined\n  },\n  rtl: false,\n  theme: {\n    dark: false,\n    default: 'light',\n    disable: false,\n    options: {\n      cspNonce: undefined,\n      customProperties: undefined,\n      minifyTheme: undefined,\n      themeCache: undefined,\n      variations: true\n    },\n    themes: {\n      light: {\n        primary: '#1976D2',\n        secondary: '#424242',\n        accent: '#82B1FF',\n        error: '#FF5252',\n        info: '#2196F3',\n        success: '#4CAF50',\n        warning: '#FB8C00'\n      },\n      dark: {\n        primary: '#2196F3',\n        secondary: '#424242',\n        accent: '#FF4081',\n        error: '#FF5252',\n        info: '#2196F3',\n        success: '#4CAF50',\n        warning: '#FB8C00'\n      }\n    }\n  }\n};\n//# sourceMappingURL=index.js.map","// Preset\nimport { preset as Preset } from '../../presets/default'; // Utilities\n\nimport { consoleWarn } from '../../util/console';\nimport { mergeDeep } from '../../util/helpers';\nimport { Service } from '../service';\nexport class Presets extends Service {\n  constructor(parentPreset, parent) {\n    super(); // The default preset\n\n    const defaultPreset = mergeDeep({}, Preset); // The user provided preset\n\n    const {\n      userPreset\n    } = parent; // The user provided global preset\n\n    const {\n      preset: globalPreset = {},\n      ...preset\n    } = userPreset;\n\n    if (globalPreset.preset != null) {\n      consoleWarn('Global presets do not support the **preset** option, it can be safely omitted');\n    }\n\n    parent.preset = mergeDeep(mergeDeep(defaultPreset, globalPreset), preset);\n  }\n\n}\nPresets.property = 'presets';\n//# sourceMappingURL=index.js.map","// Extensions\nimport { Service } from '../service';\nexport class Application extends Service {\n  constructor() {\n    super(...arguments);\n    this.bar = 0;\n    this.top = 0;\n    this.left = 0;\n    this.insetFooter = 0;\n    this.right = 0;\n    this.bottom = 0;\n    this.footer = 0;\n    this.application = {\n      bar: {},\n      top: {},\n      left: {},\n      insetFooter: {},\n      right: {},\n      bottom: {},\n      footer: {}\n    };\n  }\n\n  register(uid, location, size) {\n    this.application[location] = {\n      [uid]: size\n    };\n    this.update(location);\n  }\n\n  unregister(uid, location) {\n    if (this.application[location][uid] == null) return;\n    delete this.application[location][uid];\n    this.update(location);\n  }\n\n  update(location) {\n    this[location] = Object.values(this.application[location]).reduce((acc, cur) => acc + cur, 0);\n  }\n\n}\nApplication.property = 'application';\n//# sourceMappingURL=index.js.map","// Extensions\nimport { Service } from '../service';\nexport class Breakpoint extends Service {\n  constructor(preset) {\n    super(); // Public\n\n    this.xs = false;\n    this.sm = false;\n    this.md = false;\n    this.lg = false;\n    this.xl = false;\n    this.xsOnly = false;\n    this.smOnly = false;\n    this.smAndDown = false;\n    this.smAndUp = false;\n    this.mdOnly = false;\n    this.mdAndDown = false;\n    this.mdAndUp = false;\n    this.lgOnly = false;\n    this.lgAndDown = false;\n    this.lgAndUp = false;\n    this.xlOnly = false; // Value is xs to match v2.x functionality\n\n    this.name = 'xs';\n    this.height = 0;\n    this.width = 0; // TODO: Add functionality to detect this dynamically in v3\n    // Value is true to match v2.x functionality\n\n    this.mobile = true;\n    this.resizeTimeout = 0;\n    const {\n      mobileBreakpoint,\n      scrollBarWidth,\n      thresholds\n    } = preset[Breakpoint.property];\n    this.mobileBreakpoint = mobileBreakpoint;\n    this.scrollBarWidth = scrollBarWidth;\n    this.thresholds = thresholds;\n  }\n\n  init() {\n    this.update();\n    /* istanbul ignore if */\n\n    if (typeof window === 'undefined') return;\n    window.addEventListener('resize', this.onResize.bind(this), {\n      passive: true\n    });\n  }\n  /* eslint-disable-next-line max-statements */\n\n\n  update(ssr = false) {\n    const height = ssr ? 0 : this.getClientHeight();\n    const width = ssr ? 0 : this.getClientWidth();\n    const xs = width < this.thresholds.xs;\n    const sm = width < this.thresholds.sm && !xs;\n    const md = width < this.thresholds.md - this.scrollBarWidth && !(sm || xs);\n    const lg = width < this.thresholds.lg - this.scrollBarWidth && !(md || sm || xs);\n    const xl = width >= this.thresholds.lg - this.scrollBarWidth;\n    this.height = height;\n    this.width = width;\n    this.xs = xs;\n    this.sm = sm;\n    this.md = md;\n    this.lg = lg;\n    this.xl = xl;\n    this.xsOnly = xs;\n    this.smOnly = sm;\n    this.smAndDown = (xs || sm) && !(md || lg || xl);\n    this.smAndUp = !xs && (sm || md || lg || xl);\n    this.mdOnly = md;\n    this.mdAndDown = (xs || sm || md) && !(lg || xl);\n    this.mdAndUp = !(xs || sm) && (md || lg || xl);\n    this.lgOnly = lg;\n    this.lgAndDown = (xs || sm || md || lg) && !xl;\n    this.lgAndUp = !(xs || sm || md) && (lg || xl);\n    this.xlOnly = xl;\n\n    switch (true) {\n      case xs:\n        this.name = 'xs';\n        break;\n\n      case sm:\n        this.name = 'sm';\n        break;\n\n      case md:\n        this.name = 'md';\n        break;\n\n      case lg:\n        this.name = 'lg';\n        break;\n\n      default:\n        this.name = 'xl';\n        break;\n    }\n\n    if (typeof this.mobileBreakpoint === 'number') {\n      this.mobile = width < parseInt(this.mobileBreakpoint, 10);\n      return;\n    }\n\n    const breakpoints = {\n      xs: 0,\n      sm: 1,\n      md: 2,\n      lg: 3,\n      xl: 4\n    };\n    const current = breakpoints[this.name];\n    const max = breakpoints[this.mobileBreakpoint];\n    this.mobile = current <= max;\n  }\n\n  onResize() {\n    clearTimeout(this.resizeTimeout); // Added debounce to match what\n    // v-resize used to do but was\n    // removed due to a memory leak\n    // https://github.com/vuetifyjs/vuetify/pull/2997\n\n    this.resizeTimeout = window.setTimeout(this.update.bind(this), 200);\n  } // Cross-browser support as described in:\n  // https://stackoverflow.com/questions/1248081\n\n\n  getClientWidth() {\n    /* istanbul ignore if */\n    if (typeof document === 'undefined') return 0; // SSR\n\n    return Math.max(document.documentElement.clientWidth, window.innerWidth || 0);\n  }\n\n  getClientHeight() {\n    /* istanbul ignore if */\n    if (typeof document === 'undefined') return 0; // SSR\n\n    return Math.max(document.documentElement.clientHeight, window.innerHeight || 0);\n  }\n\n}\nBreakpoint.property = 'breakpoint';\n//# sourceMappingURL=index.js.map","const icons = {\n  complete: 'M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z',\n  cancel: 'M12,2C17.53,2 22,6.47 22,12C22,17.53 17.53,22 12,22C6.47,22 2,17.53 2,12C2,6.47 6.47,2 12,2M15.59,7L12,10.59L8.41,7L7,8.41L10.59,12L7,15.59L8.41,17L12,13.41L15.59,17L17,15.59L13.41,12L17,8.41L15.59,7Z',\n  close: 'M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z',\n  delete: 'M12,2C17.53,2 22,6.47 22,12C22,17.53 17.53,22 12,22C6.47,22 2,17.53 2,12C2,6.47 6.47,2 12,2M15.59,7L12,10.59L8.41,7L7,8.41L10.59,12L7,15.59L8.41,17L12,13.41L15.59,17L17,15.59L13.41,12L17,8.41L15.59,7Z',\n  clear: 'M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z',\n  success: 'M12,2C17.52,2 22,6.48 22,12C22,17.52 17.52,22 12,22C6.48,22 2,17.52 2,12C2,6.48 6.48,2 12,2M11,16.5L18,9.5L16.59,8.09L11,13.67L7.91,10.59L6.5,12L11,16.5Z',\n  info: 'M13,9H11V7H13M13,17H11V11H13M12,2C6.48,2 2,6.48 2,12C2,17.52 6.48,22 12,22C17.52,22 22,17.52 22,12C22,6.48 17.52,2 12,2Z',\n  warning: 'M11,4.5H13V15.5H11V4.5M13,17.5V19.5H11V17.5H13Z',\n  error: 'M13,14H11V10H13M13,18H11V16H13M1,21H23L12,2L1,21Z',\n  prev: 'M15.41,16.58L10.83,12L15.41,7.41L14,6L8,12L14,18L15.41,16.58Z',\n  next: 'M8.59,16.58L13.17,12L8.59,7.41L10,6L16,12L10,18L8.59,16.58Z',\n  checkboxOn: 'M10,17L5,12L6.41,10.58L10,14.17L17.59,6.58L19,8M19,3H5C3.89,3 3,3.89 3,5V19C3,20.1 3.9,21 5,21H19C20.1,21 21,20.1 21,19V5C21,3.89 20.1,3 19,3Z',\n  checkboxOff: 'M19,3H5C3.89,3 3,3.89 3,5V19C3,20.1 3.9,21 5,21H19C20.1,21 21,20.1 21,19V5C21,3.89 20.1,3 19,3M19,5V19H5V5H19Z',\n  checkboxIndeterminate: 'M17,13H7V11H17M19,3H5C3.89,3 3,3.89 3,5V19C3,20.1 3.9,21 5,21H19C20.1,21 21,20.1 21,19V5C21,3.89 20.1,3 19,3Z',\n  delimiter: 'M12,2C6.48,2 2,6.48 2,12C2,17.52 6.48,22 12,22C17.52,22 22,17.52 22,12C22,6.48 17.52,2 12,2Z',\n  sort: 'M13,20H11V8L5.5,13.5L4.08,12.08L12,4.16L19.92,12.08L18.5,13.5L13,8V20Z',\n  expand: 'M7.41,8.58L12,13.17L16.59,8.58L18,10L12,16L6,10L7.41,8.58Z',\n  menu: 'M3,6H21V8H3V6M3,11H21V13H3V11M3,16H21V18H3V16Z',\n  subgroup: 'M7,10L12,15L17,10H7Z',\n  dropdown: 'M7,10L12,15L17,10H7Z',\n  radioOn: 'M12,20C7.58,20 4,16.42 4,12C4,7.58 7.58,4 12,4C16.42,4 20,7.58 20,12C20,16.42 16.42,20 12,20M12,2C6.48,2 2,6.48 2,12C2,17.52 6.48,22 12,22C17.52,22 22,17.52 22,12C22,6.48 17.52,2 12,2M12,7C9.24,7 7,9.24 7,12C7,14.76 9.24,17 12,17C14.76,17 17,14.76 17,12C17,9.24 14.76,7 12,7Z',\n  radioOff: 'M12,20C7.58,20 4,16.42 4,12C4,7.58 7.58,4 12,4C16.42,4 20,7.58 20,12C20,16.42 16.42,20 12,20M12,2C6.48,2 2,6.48 2,12C2,17.52 6.48,22 12,22C17.52,22 22,17.52 22,12C22,6.48 17.52,2 12,2Z',\n  edit: 'M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z',\n  ratingEmpty: 'M12,15.39L8.24,17.66L9.23,13.38L5.91,10.5L10.29,10.13L12,6.09L13.71,10.13L18.09,10.5L14.77,13.38L15.76,17.66M22,9.24L14.81,8.63L12,2L9.19,8.63L2,9.24L7.45,13.97L5.82,21L12,17.27L18.18,21L16.54,13.97L22,9.24Z',\n  ratingFull: 'M12,17.27L18.18,21L16.54,13.97L22,9.24L14.81,8.62L12,2L9.19,8.62L2,9.24L7.45,13.97L5.82,21L12,17.27Z',\n  ratingHalf: 'M12,15.4V6.1L13.71,10.13L18.09,10.5L14.77,13.39L15.76,17.67M22,9.24L14.81,8.63L12,2L9.19,8.63L2,9.24L7.45,13.97L5.82,21L12,17.27L18.18,21L16.54,13.97L22,9.24Z',\n  loading: 'M19,8L15,12H18C18,15.31 15.31,18 12,18C11,18 10.03,17.75 9.2,17.3L7.74,18.76C8.97,19.54 10.43,20 12,20C16.42,20 20,16.42 20,12H23M6,12C6,8.69 8.69,6 12,6C13,6 13.97,6.25 14.8,6.7L16.26,5.24C15.03,4.46 13.57,4 12,4C7.58,4 4,7.58 4,12H1L5,16L9,12',\n  first: 'M18.41,16.59L13.82,12L18.41,7.41L17,6L11,12L17,18L18.41,16.59M6,6H8V18H6V6Z',\n  last: 'M5.59,7.41L10.18,12L5.59,16.59L7,18L13,12L7,6L5.59,7.41M16,6H18V18H16V6Z',\n  unfold: 'M12,18.17L8.83,15L7.42,16.41L12,21L16.59,16.41L15.17,15M12,5.83L15.17,9L16.58,7.59L12,3L7.41,7.59L8.83,9L12,5.83Z',\n  file: 'M16.5,6V17.5C16.5,19.71 14.71,21.5 12.5,21.5C10.29,21.5 8.5,19.71 8.5,17.5V5C8.5,3.62 9.62,2.5 11,2.5C12.38,2.5 13.5,3.62 13.5,5V15.5C13.5,16.05 13.05,16.5 12.5,16.5C11.95,16.5 11.5,16.05 11.5,15.5V6H10V15.5C10,16.88 11.12,18 12.5,18C13.88,18 15,16.88 15,15.5V5C15,2.79 13.21,1 11,1C8.79,1 7,2.79 7,5V17.5C7,20.54 9.46,23 12.5,23C15.54,23 18,20.54 18,17.5V6H16.5Z',\n  plus: 'M19,13H13V19H11V13H5V11H11V5H13V11H19V13Z',\n  minus: 'M19,13H5V11H19V13Z'\n};\nexport default icons;\n//# sourceMappingURL=mdi-svg.js.map","const icons = {\n  complete: 'check',\n  cancel: 'cancel',\n  close: 'close',\n  delete: 'cancel',\n  clear: 'clear',\n  success: 'check_circle',\n  info: 'info',\n  warning: 'priority_high',\n  error: 'warning',\n  prev: 'chevron_left',\n  next: 'chevron_right',\n  checkboxOn: 'check_box',\n  checkboxOff: 'check_box_outline_blank',\n  checkboxIndeterminate: 'indeterminate_check_box',\n  delimiter: 'fiber_manual_record',\n  sort: 'arrow_upward',\n  expand: 'keyboard_arrow_down',\n  menu: 'menu',\n  subgroup: 'arrow_drop_down',\n  dropdown: 'arrow_drop_down',\n  radioOn: 'radio_button_checked',\n  radioOff: 'radio_button_unchecked',\n  edit: 'edit',\n  ratingEmpty: 'star_border',\n  ratingFull: 'star',\n  ratingHalf: 'star_half',\n  loading: 'cached',\n  first: 'first_page',\n  last: 'last_page',\n  unfold: 'unfold_more',\n  file: 'attach_file',\n  plus: 'add',\n  minus: 'remove'\n};\nexport default icons;\n//# sourceMappingURL=md.js.map","const icons = {\n  complete: 'mdi-check',\n  cancel: 'mdi-close-circle',\n  close: 'mdi-close',\n  delete: 'mdi-close-circle',\n  clear: 'mdi-close',\n  success: 'mdi-check-circle',\n  info: 'mdi-information',\n  warning: 'mdi-exclamation',\n  error: 'mdi-alert',\n  prev: 'mdi-chevron-left',\n  next: 'mdi-chevron-right',\n  checkboxOn: 'mdi-checkbox-marked',\n  checkboxOff: 'mdi-checkbox-blank-outline',\n  checkboxIndeterminate: 'mdi-minus-box',\n  delimiter: 'mdi-circle',\n  sort: 'mdi-arrow-up',\n  expand: 'mdi-chevron-down',\n  menu: 'mdi-menu',\n  subgroup: 'mdi-menu-down',\n  dropdown: 'mdi-menu-down',\n  radioOn: 'mdi-radiobox-marked',\n  radioOff: 'mdi-radiobox-blank',\n  edit: 'mdi-pencil',\n  ratingEmpty: 'mdi-star-outline',\n  ratingFull: 'mdi-star',\n  ratingHalf: 'mdi-star-half-full',\n  loading: 'mdi-cached',\n  first: 'mdi-page-first',\n  last: 'mdi-page-last',\n  unfold: 'mdi-unfold-more-horizontal',\n  file: 'mdi-paperclip',\n  plus: 'mdi-plus',\n  minus: 'mdi-minus'\n};\nexport default icons;\n//# sourceMappingURL=mdi.js.map","const icons = {\n  complete: 'fas fa-check',\n  cancel: 'fas fa-times-circle',\n  close: 'fas fa-times',\n  delete: 'fas fa-times-circle',\n  clear: 'fas fa-times-circle',\n  success: 'fas fa-check-circle',\n  info: 'fas fa-info-circle',\n  warning: 'fas fa-exclamation',\n  error: 'fas fa-exclamation-triangle',\n  prev: 'fas fa-chevron-left',\n  next: 'fas fa-chevron-right',\n  checkboxOn: 'fas fa-check-square',\n  checkboxOff: 'far fa-square',\n  checkboxIndeterminate: 'fas fa-minus-square',\n  delimiter: 'fas fa-circle',\n  sort: 'fas fa-sort-up',\n  expand: 'fas fa-chevron-down',\n  menu: 'fas fa-bars',\n  subgroup: 'fas fa-caret-down',\n  dropdown: 'fas fa-caret-down',\n  radioOn: 'far fa-dot-circle',\n  radioOff: 'far fa-circle',\n  edit: 'fas fa-edit',\n  ratingEmpty: 'far fa-star',\n  ratingFull: 'fas fa-star',\n  ratingHalf: 'fas fa-star-half',\n  loading: 'fas fa-sync',\n  first: 'fas fa-step-backward',\n  last: 'fas fa-step-forward',\n  unfold: 'fas fa-arrows-alt-v',\n  file: 'fas fa-paperclip',\n  plus: 'fas fa-plus',\n  minus: 'fas fa-minus'\n};\nexport default icons;\n//# sourceMappingURL=fa.js.map","const icons = {\n  complete: 'fa fa-check',\n  cancel: 'fa fa-times-circle',\n  close: 'fa fa-times',\n  delete: 'fa fa-times-circle',\n  clear: 'fa fa-times-circle',\n  success: 'fa fa-check-circle',\n  info: 'fa fa-info-circle',\n  warning: 'fa fa-exclamation',\n  error: 'fa fa-exclamation-triangle',\n  prev: 'fa fa-chevron-left',\n  next: 'fa fa-chevron-right',\n  checkboxOn: 'fa fa-check-square',\n  checkboxOff: 'fa fa-square-o',\n  checkboxIndeterminate: 'fa fa-minus-square',\n  delimiter: 'fa fa-circle',\n  sort: 'fa fa-sort-up',\n  expand: 'fa fa-chevron-down',\n  menu: 'fa fa-bars',\n  subgroup: 'fa fa-caret-down',\n  dropdown: 'fa fa-caret-down',\n  radioOn: 'fa fa-dot-circle-o',\n  radioOff: 'fa fa-circle-o',\n  edit: 'fa fa-pencil',\n  ratingEmpty: 'fa fa-star-o',\n  ratingFull: 'fa fa-star',\n  ratingHalf: 'fa fa-star-half-o',\n  loading: 'fa fa-refresh',\n  first: 'fa fa-step-backward',\n  last: 'fa fa-step-forward',\n  unfold: 'fa fa-angle-double-down',\n  file: 'fa fa-paperclip',\n  plus: 'fa fa-plus',\n  minus: 'fa fa-minus'\n};\nexport default icons;\n//# sourceMappingURL=fa4.js.map","import icons from './fa';\nexport function convertToComponentDeclarations(component, iconSet) {\n  const result = {};\n\n  for (const key in iconSet) {\n    result[key] = {\n      component,\n      props: {\n        icon: iconSet[key].split(' fa-')\n      }\n    };\n  }\n\n  return result;\n}\nexport default convertToComponentDeclarations('font-awesome-icon', icons);\n//# sourceMappingURL=fa-svg.js.map","import mdiSvg from './mdi-svg';\nimport md from './md';\nimport mdi from './mdi';\nimport fa from './fa';\nimport fa4 from './fa4';\nimport faSvg from './fa-svg';\nexport default Object.freeze({\n  mdiSvg,\n  md,\n  mdi,\n  fa,\n  fa4,\n  faSvg\n});\n//# sourceMappingURL=index.js.map","// Extensions\nimport { Service } from '../service'; // Utilities\n\nimport { mergeDeep } from '../../util/helpers'; // Presets\n\nimport presets from './presets';\nexport class Icons extends Service {\n  constructor(preset) {\n    super();\n    const {\n      iconfont,\n      values,\n      component\n    } = preset[Icons.property];\n    this.component = component;\n    this.iconfont = iconfont;\n    this.values = mergeDeep(presets[iconfont], values);\n  }\n\n}\nIcons.property = 'icons';\n//# sourceMappingURL=index.js.map","// Extensions\nimport { Service } from '../service'; // Utilities\n\nimport { getObjectValueByPath } from '../../util/helpers';\nimport { consoleError, consoleWarn } from '../../util/console';\nconst LANG_PREFIX = '$vuetify.';\nconst fallback = Symbol('Lang fallback');\n\nfunction getTranslation(locale, key, usingDefault = false, defaultLocale) {\n  const shortKey = key.replace(LANG_PREFIX, '');\n  let translation = getObjectValueByPath(locale, shortKey, fallback);\n\n  if (translation === fallback) {\n    if (usingDefault) {\n      consoleError(`Translation key \"${shortKey}\" not found in fallback`);\n      translation = key;\n    } else {\n      consoleWarn(`Translation key \"${shortKey}\" not found, falling back to default`);\n      translation = getTranslation(defaultLocale, key, true, defaultLocale);\n    }\n  }\n\n  return translation;\n}\n\nexport class Lang extends Service {\n  constructor(preset) {\n    super();\n    this.defaultLocale = 'en';\n    const {\n      current,\n      locales,\n      t\n    } = preset[Lang.property];\n    this.current = current;\n    this.locales = locales;\n    this.translator = t || this.defaultTranslator;\n  }\n\n  currentLocale(key) {\n    const translation = this.locales[this.current];\n    const defaultLocale = this.locales[this.defaultLocale];\n    return getTranslation(translation, key, false, defaultLocale);\n  }\n\n  t(key, ...params) {\n    if (!key.startsWith(LANG_PREFIX)) return this.replace(key, params);\n    return this.translator(key, ...params);\n  }\n\n  defaultTranslator(key, ...params) {\n    return this.replace(this.currentLocale(key), params);\n  }\n\n  replace(str, params) {\n    return str.replace(/\\{(\\d+)\\}/g, (match, index) => {\n      /* istanbul ignore next */\n      return String(params[+index]);\n    });\n  }\n\n}\nLang.property = 'lang';\n//# sourceMappingURL=index.js.map","const delta = 0.20689655172413793; // 6÷29\n\nconst cielabForwardTransform = t => t > delta ** 3 ? Math.cbrt(t) : t / (3 * delta ** 2) + 4 / 29;\n\nconst cielabReverseTransform = t => t > delta ? t ** 3 : 3 * delta ** 2 * (t - 4 / 29);\n\nexport function fromXYZ(xyz) {\n  const transform = cielabForwardTransform;\n  const transformedY = transform(xyz[1]);\n  return [116 * transformedY - 16, 500 * (transform(xyz[0] / 0.95047) - transformedY), 200 * (transformedY - transform(xyz[2] / 1.08883))];\n}\nexport function toXYZ(lab) {\n  const transform = cielabReverseTransform;\n  const Ln = (lab[0] + 16) / 116;\n  return [transform(Ln + lab[1] / 500) * 0.95047, transform(Ln), transform(Ln - lab[2] / 200) * 1.08883];\n}\n//# sourceMappingURL=transformCIELAB.js.map","import { keys } from '../../util/helpers';\nimport { colorToInt, intToHex, colorToHex } from '../../util/colorUtils';\nimport * as sRGB from '../../util/color/transformSRGB';\nimport * as LAB from '../../util/color/transformCIELAB';\nexport function parse(theme, isItem = false, variations = true) {\n  const {\n    anchor,\n    ...variant\n  } = theme;\n  const colors = Object.keys(variant);\n  const parsedTheme = {};\n\n  for (let i = 0; i < colors.length; ++i) {\n    const name = colors[i];\n    const value = theme[name];\n    if (value == null) continue;\n\n    if (!variations) {\n      parsedTheme[name] = {\n        base: intToHex(colorToInt(value))\n      };\n    } else if (isItem) {\n      /* istanbul ignore else */\n      if (name === 'base' || name.startsWith('lighten') || name.startsWith('darken')) {\n        parsedTheme[name] = colorToHex(value);\n      }\n    } else if (typeof value === 'object') {\n      parsedTheme[name] = parse(value, true, variations);\n    } else {\n      parsedTheme[name] = genVariations(name, colorToInt(value));\n    }\n  }\n\n  if (!isItem) {\n    parsedTheme.anchor = anchor || parsedTheme.base || parsedTheme.primary.base;\n  }\n\n  return parsedTheme;\n}\n/**\n * Generate the CSS for a base color (.primary)\n */\n\nconst genBaseColor = (name, value) => {\n  return `\n.v-application .${name} {\n  background-color: ${value} !important;\n  border-color: ${value} !important;\n}\n.v-application .${name}--text {\n  color: ${value} !important;\n  caret-color: ${value} !important;\n}`;\n};\n/**\n * Generate the CSS for a variant color (.primary.darken-2)\n */\n\n\nconst genVariantColor = (name, variant, value) => {\n  const [type, n] = variant.split(/(\\d)/, 2);\n  return `\n.v-application .${name}.${type}-${n} {\n  background-color: ${value} !important;\n  border-color: ${value} !important;\n}\n.v-application .${name}--text.text--${type}-${n} {\n  color: ${value} !important;\n  caret-color: ${value} !important;\n}`;\n};\n\nconst genColorVariableName = (name, variant = 'base') => `--v-${name}-${variant}`;\n\nconst genColorVariable = (name, variant = 'base') => `var(${genColorVariableName(name, variant)})`;\n\nexport function genStyles(theme, cssVar = false) {\n  const {\n    anchor,\n    ...variant\n  } = theme;\n  const colors = Object.keys(variant);\n  if (!colors.length) return '';\n  let variablesCss = '';\n  let css = '';\n  const aColor = cssVar ? genColorVariable('anchor') : anchor;\n  css += `.v-application a { color: ${aColor}; }`;\n  cssVar && (variablesCss += `  ${genColorVariableName('anchor')}: ${anchor};\\n`);\n\n  for (let i = 0; i < colors.length; ++i) {\n    const name = colors[i];\n    const value = theme[name];\n    css += genBaseColor(name, cssVar ? genColorVariable(name) : value.base);\n    cssVar && (variablesCss += `  ${genColorVariableName(name)}: ${value.base};\\n`);\n    const variants = keys(value);\n\n    for (let i = 0; i < variants.length; ++i) {\n      const variant = variants[i];\n      const variantValue = value[variant];\n      if (variant === 'base') continue;\n      css += genVariantColor(name, variant, cssVar ? genColorVariable(name, variant) : variantValue);\n      cssVar && (variablesCss += `  ${genColorVariableName(name, variant)}: ${variantValue};\\n`);\n    }\n  }\n\n  if (cssVar) {\n    variablesCss = `:root {\\n${variablesCss}}\\n\\n`;\n  }\n\n  return variablesCss + css;\n}\nexport function genVariations(name, value) {\n  const values = {\n    base: intToHex(value)\n  };\n\n  for (let i = 5; i > 0; --i) {\n    values[`lighten${i}`] = intToHex(lighten(value, i));\n  }\n\n  for (let i = 1; i <= 4; ++i) {\n    values[`darken${i}`] = intToHex(darken(value, i));\n  }\n\n  return values;\n}\nexport function lighten(value, amount) {\n  const lab = LAB.fromXYZ(sRGB.toXYZ(value));\n  lab[0] = lab[0] + amount * 10;\n  return sRGB.fromXYZ(LAB.toXYZ(lab));\n}\nexport function darken(value, amount) {\n  const lab = LAB.fromXYZ(sRGB.toXYZ(value));\n  lab[0] = lab[0] - amount * 10;\n  return sRGB.fromXYZ(LAB.toXYZ(lab));\n}\n//# sourceMappingURL=utils.js.map","/* eslint-disable no-multi-spaces */\n// Extensions\nimport { Service } from '../service'; // Utilities\n\nimport * as ThemeUtils from './utils';\nimport { getNestedValue } from '../../util/helpers'; // Types\n\nimport Vue from 'vue';\nexport class Theme extends Service {\n  constructor(preset) {\n    super();\n    this.disabled = false;\n    this.isDark = null;\n    this.unwatch = null;\n    this.vueMeta = null;\n    const {\n      dark,\n      disable,\n      options,\n      themes\n    } = preset[Theme.property];\n    this.dark = Boolean(dark);\n    this.defaults = this.themes = themes;\n    this.options = options;\n\n    if (disable) {\n      this.disabled = true;\n      return;\n    }\n\n    this.themes = {\n      dark: this.fillVariant(themes.dark, true),\n      light: this.fillVariant(themes.light, false)\n    };\n  } // When setting css, check for element and apply new values\n\n  /* eslint-disable-next-line accessor-pairs */\n\n\n  set css(val) {\n    if (this.vueMeta) {\n      if (this.isVueMeta23) {\n        this.applyVueMeta23();\n      }\n\n      return;\n    }\n\n    this.checkOrCreateStyleElement() && (this.styleEl.innerHTML = val);\n  }\n\n  set dark(val) {\n    const oldDark = this.isDark;\n    this.isDark = val; // Only apply theme after dark\n    // has already been set before\n\n    oldDark != null && this.applyTheme();\n  }\n\n  get dark() {\n    return Boolean(this.isDark);\n  } // Apply current theme default\n  // only called on client side\n\n\n  applyTheme() {\n    if (this.disabled) return this.clearCss();\n    this.css = this.generatedStyles;\n  }\n\n  clearCss() {\n    this.css = '';\n  } // Initialize theme for SSR and SPA\n  // Attach to ssrContext head or\n  // apply new theme to document\n\n\n  init(root, ssrContext) {\n    if (this.disabled) return;\n    /* istanbul ignore else */\n\n    if (root.$meta) {\n      this.initVueMeta(root);\n    } else if (ssrContext) {\n      this.initSSR(ssrContext);\n    }\n\n    this.initTheme(root);\n  } // Allows for you to set target theme\n\n\n  setTheme(theme, value) {\n    this.themes[theme] = Object.assign(this.themes[theme], value);\n    this.applyTheme();\n  } // Reset theme defaults\n\n\n  resetThemes() {\n    this.themes.light = Object.assign({}, this.defaults.light);\n    this.themes.dark = Object.assign({}, this.defaults.dark);\n    this.applyTheme();\n  } // Check for existence of style element\n\n\n  checkOrCreateStyleElement() {\n    this.styleEl = document.getElementById('vuetify-theme-stylesheet');\n    /* istanbul ignore next */\n\n    if (this.styleEl) return true;\n    this.genStyleElement(); // If doesn't have it, create it\n\n    return Boolean(this.styleEl);\n  }\n\n  fillVariant(theme = {}, dark) {\n    const defaultTheme = this.themes[dark ? 'dark' : 'light'];\n    return Object.assign({}, defaultTheme, theme);\n  } // Generate the style element\n  // if applicable\n\n\n  genStyleElement() {\n    /* istanbul ignore if */\n    if (typeof document === 'undefined') return;\n    /* istanbul ignore next */\n\n    this.styleEl = document.createElement('style');\n    this.styleEl.type = 'text/css';\n    this.styleEl.id = 'vuetify-theme-stylesheet';\n\n    if (this.options.cspNonce) {\n      this.styleEl.setAttribute('nonce', this.options.cspNonce);\n    }\n\n    document.head.appendChild(this.styleEl);\n  }\n\n  initVueMeta(root) {\n    this.vueMeta = root.$meta();\n\n    if (this.isVueMeta23) {\n      // vue-meta needs to apply after mounted()\n      root.$nextTick(() => {\n        this.applyVueMeta23();\n      });\n      return;\n    }\n\n    const metaKeyName = typeof this.vueMeta.getOptions === 'function' ? this.vueMeta.getOptions().keyName : 'metaInfo';\n    const metaInfo = root.$options[metaKeyName] || {};\n\n    root.$options[metaKeyName] = () => {\n      metaInfo.style = metaInfo.style || [];\n      const vuetifyStylesheet = metaInfo.style.find(s => s.id === 'vuetify-theme-stylesheet');\n\n      if (!vuetifyStylesheet) {\n        metaInfo.style.push({\n          cssText: this.generatedStyles,\n          type: 'text/css',\n          id: 'vuetify-theme-stylesheet',\n          nonce: (this.options || {}).cspNonce\n        });\n      } else {\n        vuetifyStylesheet.cssText = this.generatedStyles;\n      }\n\n      return metaInfo;\n    };\n  }\n\n  applyVueMeta23() {\n    const {\n      set\n    } = this.vueMeta.addApp('vuetify');\n    set({\n      style: [{\n        cssText: this.generatedStyles,\n        type: 'text/css',\n        id: 'vuetify-theme-stylesheet',\n        nonce: this.options.cspNonce\n      }]\n    });\n  }\n\n  initSSR(ssrContext) {\n    // SSR\n    const nonce = this.options.cspNonce ? ` nonce=\"${this.options.cspNonce}\"` : '';\n    ssrContext.head = ssrContext.head || '';\n    ssrContext.head += `<style type=\"text/css\" id=\"vuetify-theme-stylesheet\"${nonce}>${this.generatedStyles}</style>`;\n  }\n\n  initTheme(root) {\n    // Only watch for reactivity on client side\n    if (typeof document === 'undefined') return; // If we get here somehow, ensure\n    // existing instance is removed\n\n    if (this.unwatch) {\n      this.unwatch();\n      this.unwatch = null;\n    } // TODO: Update to use RFC if merged\n    // https://github.com/vuejs/rfcs/blob/advanced-reactivity-api/active-rfcs/0000-advanced-reactivity-api.md\n\n\n    root.$once('hook:created', () => {\n      const obs = Vue.observable({\n        themes: this.themes\n      });\n      this.unwatch = root.$watch(() => obs.themes, () => this.applyTheme(), {\n        deep: true\n      });\n    });\n    this.applyTheme();\n  }\n\n  get currentTheme() {\n    const target = this.dark ? 'dark' : 'light';\n    return this.themes[target];\n  }\n\n  get generatedStyles() {\n    const theme = this.parsedTheme;\n    /* istanbul ignore next */\n\n    const options = this.options || {};\n    let css;\n\n    if (options.themeCache != null) {\n      css = options.themeCache.get(theme);\n      /* istanbul ignore if */\n\n      if (css != null) return css;\n    }\n\n    css = ThemeUtils.genStyles(theme, options.customProperties);\n\n    if (options.minifyTheme != null) {\n      css = options.minifyTheme(css);\n    }\n\n    if (options.themeCache != null) {\n      options.themeCache.set(theme, css);\n    }\n\n    return css;\n  }\n\n  get parsedTheme() {\n    return ThemeUtils.parse(this.currentTheme || {}, undefined, getNestedValue(this.options, ['variations'], true));\n  } // Is using v2.3 of vue-meta\n  // https://github.com/nuxt/vue-meta/releases/tag/v2.3.0\n\n\n  get isVueMeta23() {\n    return typeof this.vueMeta.addApp === 'function';\n  }\n\n}\nTheme.property = 'theme';\n//# sourceMappingURL=index.js.map","import { install } from './install'; // Services\n\nimport * as services from './services';\nexport default class Vuetify {\n  constructor(userPreset = {}) {\n    this.framework = {\n      isHydrating: false\n    };\n    this.installed = [];\n    this.preset = {};\n    this.userPreset = {};\n    this.userPreset = userPreset;\n    this.use(services.Presets);\n    this.use(services.Application);\n    this.use(services.Breakpoint);\n    this.use(services.Goto);\n    this.use(services.Icons);\n    this.use(services.Lang);\n    this.use(services.Theme);\n  } // Called on the new vuetify instance\n  // bootstrap in install beforeCreate\n  // Exposes ssrContext if available\n\n\n  init(root, ssrContext) {\n    this.installed.forEach(property => {\n      const service = this.framework[property];\n      service.framework = this.framework;\n      service.init(root, ssrContext);\n    }); // rtl is not installed and\n    // will never be called by\n    // the init process\n\n    this.framework.rtl = Boolean(this.preset.rtl);\n  } // Instantiate a VuetifyService\n\n\n  use(Service) {\n    const property = Service.property;\n    if (this.installed.includes(property)) return; // TODO maybe a specific type for arg 2?\n\n    this.framework[property] = new Service(this.preset, this);\n    this.installed.push(property);\n  }\n\n}\nVuetify.install = install;\nVuetify.installed = false;\nVuetify.version = \"2.6.1\";\nVuetify.config = {\n  silent: false\n};\n//# sourceMappingURL=framework.js.map","'use strict';\n// B.2.3.11 String.prototype.small()\nrequire('./_string-html')('small', function (createHTML) {\n  return function small() {\n    return createHTML(this, 'small', '', '');\n  };\n});\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Service = void 0;\nconst debug_1 = __importDefault(require(\"debug\"));\nconst errors_1 = require(\"@feathersjs/errors\");\nconst debug = debug_1.default('@feathersjs/transport-commons/client');\nconst namespacedEmitterMethods = [\n    'addListener',\n    'emit',\n    'listenerCount',\n    'listeners',\n    'on',\n    'once',\n    'prependListener',\n    'prependOnceListener',\n    'removeAllListeners',\n    'removeListener'\n];\nconst otherEmitterMethods = [\n    'eventNames',\n    'getMaxListeners',\n    'setMaxListeners'\n];\nconst addEmitterMethods = (service) => {\n    otherEmitterMethods.forEach(method => {\n        service[method] = function (...args) {\n            if (typeof this.connection[method] !== 'function') {\n                throw new Error(`Can not call '${method}' on the client service connection`);\n            }\n            return this.connection[method](...args);\n        };\n    });\n    // Methods that should add the namespace (service path)\n    namespacedEmitterMethods.forEach(method => {\n        service[method] = function (name, ...args) {\n            if (typeof this.connection[method] !== 'function') {\n                throw new Error(`Can not call '${method}' on the client service connection`);\n            }\n            const eventName = `${this.path} ${name}`;\n            debug(`Calling emitter method ${method} with ` +\n                `namespaced event '${eventName}'`);\n            const result = this.connection[method](eventName, ...args);\n            return result === this.connection ? this : result;\n        };\n    });\n};\nclass Service {\n    constructor(options) {\n        this.events = options.events;\n        this.path = options.name;\n        this.connection = options.connection;\n        this.method = options.method;\n        this.timeout = options.timeout || 5000;\n        addEmitterMethods(this);\n    }\n    send(method, ...args) {\n        return new Promise((resolve, reject) => {\n            const timeoutId = setTimeout(() => reject(new errors_1.Timeout(`Timeout of ${this.timeout}ms exceeded calling ${method} on ${this.path}`, {\n                timeout: this.timeout,\n                method,\n                path: this.path\n            })), this.timeout);\n            args.unshift(method, this.path);\n            args.push(function (error, data) {\n                error = errors_1.convert(error);\n                clearTimeout(timeoutId);\n                return error ? reject(error) : resolve(data);\n            });\n            debug(`Sending socket.${this.method}`, args);\n            this.connection[this.method](...args);\n        });\n    }\n    find(params = {}) {\n        return this.send('find', params.query || {});\n    }\n    get(id, params = {}) {\n        return this.send('get', id, params.query || {});\n    }\n    create(data, params = {}) {\n        return this.send('create', data, params.query || {});\n    }\n    update(id, data, params = {}) {\n        return this.send('update', id, data, params.query || {});\n    }\n    patch(id, data, params = {}) {\n        return this.send('patch', id, data, params.query || {});\n    }\n    remove(id, params = {}) {\n        return this.send('remove', id, params.query || {});\n    }\n    // `off` is actually not part of the Node event emitter spec\n    // but we are adding it since everybody is expecting it because\n    // of the emitter-component Socket.io is using\n    off(name, ...args) {\n        if (typeof this.connection.off === 'function') {\n            const result = this.connection.off(`${this.path} ${name}`, ...args);\n            return result === this.connection ? this : result;\n        }\n        else if (args.length === 0) {\n            // @ts-ignore\n            return this.removeAllListeners(name);\n        }\n        // @ts-ignore\n        return this.removeListener(name, ...args);\n    }\n}\nexports.Service = Service;\n//# sourceMappingURL=client.js.map","/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n    HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n  var count = 0,\n      lastCalled = 0;\n\n  return function() {\n    var stamp = nativeNow(),\n        remaining = HOT_SPAN - (stamp - lastCalled);\n\n    lastCalled = stamp;\n    if (remaining > 0) {\n      if (++count >= HOT_COUNT) {\n        return arguments[0];\n      }\n    } else {\n      count = 0;\n    }\n    return func.apply(undefined, arguments);\n  };\n}\n\nmodule.exports = shortOut;\n","import Vue from 'vue';\nexport default Vue.extend({\n  name: 'transitionable',\n  props: {\n    mode: String,\n    origin: String,\n    transition: String\n  }\n});\n//# sourceMappingURL=index.js.map","import \"../../../src/components/VDataIterator/VDataFooter.sass\"; // Components\n\nimport VSelect from '../VSelect/VSelect';\nimport VIcon from '../VIcon';\nimport VBtn from '../VBtn'; // Types\n\nimport Vue from 'vue';\nimport { getSlot } from '../../util/helpers';\nexport default Vue.extend({\n  name: 'v-data-footer',\n  props: {\n    options: {\n      type: Object,\n      required: true\n    },\n    pagination: {\n      type: Object,\n      required: true\n    },\n    itemsPerPageOptions: {\n      type: Array,\n      default: () => [5, 10, 15, -1]\n    },\n    prevIcon: {\n      type: String,\n      default: '$prev'\n    },\n    nextIcon: {\n      type: String,\n      default: '$next'\n    },\n    firstIcon: {\n      type: String,\n      default: '$first'\n    },\n    lastIcon: {\n      type: String,\n      default: '$last'\n    },\n    itemsPerPageText: {\n      type: String,\n      default: '$vuetify.dataFooter.itemsPerPageText'\n    },\n    itemsPerPageAllText: {\n      type: String,\n      default: '$vuetify.dataFooter.itemsPerPageAll'\n    },\n    showFirstLastPage: Boolean,\n    showCurrentPage: Boolean,\n    disablePagination: Boolean,\n    disableItemsPerPage: Boolean,\n    pageText: {\n      type: String,\n      default: '$vuetify.dataFooter.pageText'\n    }\n  },\n  computed: {\n    disableNextPageIcon() {\n      return this.options.itemsPerPage <= 0 || this.options.page * this.options.itemsPerPage >= this.pagination.itemsLength || this.pagination.pageStop < 0;\n    },\n\n    computedDataItemsPerPageOptions() {\n      return this.itemsPerPageOptions.map(option => {\n        if (typeof option === 'object') return option;else return this.genDataItemsPerPageOption(option);\n      });\n    }\n\n  },\n  methods: {\n    updateOptions(obj) {\n      this.$emit('update:options', Object.assign({}, this.options, obj));\n    },\n\n    onFirstPage() {\n      this.updateOptions({\n        page: 1\n      });\n    },\n\n    onPreviousPage() {\n      this.updateOptions({\n        page: this.options.page - 1\n      });\n    },\n\n    onNextPage() {\n      this.updateOptions({\n        page: this.options.page + 1\n      });\n    },\n\n    onLastPage() {\n      this.updateOptions({\n        page: this.pagination.pageCount\n      });\n    },\n\n    onChangeItemsPerPage(itemsPerPage) {\n      this.updateOptions({\n        itemsPerPage,\n        page: 1\n      });\n    },\n\n    genDataItemsPerPageOption(option) {\n      return {\n        text: option === -1 ? this.$vuetify.lang.t(this.itemsPerPageAllText) : String(option),\n        value: option\n      };\n    },\n\n    genItemsPerPageSelect() {\n      let value = this.options.itemsPerPage;\n      const computedIPPO = this.computedDataItemsPerPageOptions;\n      if (computedIPPO.length <= 1) return null;\n      if (!computedIPPO.find(ippo => ippo.value === value)) value = computedIPPO[0];\n      return this.$createElement('div', {\n        staticClass: 'v-data-footer__select'\n      }, [this.$vuetify.lang.t(this.itemsPerPageText), this.$createElement(VSelect, {\n        attrs: {\n          'aria-label': this.$vuetify.lang.t(this.itemsPerPageText)\n        },\n        props: {\n          disabled: this.disableItemsPerPage,\n          items: computedIPPO,\n          value,\n          hideDetails: true,\n          auto: true,\n          minWidth: '75px'\n        },\n        on: {\n          input: this.onChangeItemsPerPage\n        }\n      })]);\n    },\n\n    genPaginationInfo() {\n      let children = ['–'];\n      const itemsLength = this.pagination.itemsLength;\n      let pageStart = this.pagination.pageStart;\n      let pageStop = this.pagination.pageStop;\n\n      if (this.pagination.itemsLength && this.pagination.itemsPerPage) {\n        pageStart = this.pagination.pageStart + 1;\n        pageStop = itemsLength < this.pagination.pageStop || this.pagination.pageStop < 0 ? itemsLength : this.pagination.pageStop;\n        children = this.$scopedSlots['page-text'] ? [this.$scopedSlots['page-text']({\n          pageStart,\n          pageStop,\n          itemsLength\n        })] : [this.$vuetify.lang.t(this.pageText, pageStart, pageStop, itemsLength)];\n      } else if (this.$scopedSlots['page-text']) {\n        children = [this.$scopedSlots['page-text']({\n          pageStart,\n          pageStop,\n          itemsLength\n        })];\n      }\n\n      return this.$createElement('div', {\n        class: 'v-data-footer__pagination'\n      }, children);\n    },\n\n    genIcon(click, disabled, label, icon) {\n      return this.$createElement(VBtn, {\n        props: {\n          disabled: disabled || this.disablePagination,\n          icon: true,\n          text: true\n        },\n        on: {\n          click\n        },\n        attrs: {\n          'aria-label': label\n        }\n      }, [this.$createElement(VIcon, icon)]);\n    },\n\n    genIcons() {\n      const before = [];\n      const after = [];\n      before.push(this.genIcon(this.onPreviousPage, this.options.page === 1, this.$vuetify.lang.t('$vuetify.dataFooter.prevPage'), this.$vuetify.rtl ? this.nextIcon : this.prevIcon));\n      after.push(this.genIcon(this.onNextPage, this.disableNextPageIcon, this.$vuetify.lang.t('$vuetify.dataFooter.nextPage'), this.$vuetify.rtl ? this.prevIcon : this.nextIcon));\n\n      if (this.showFirstLastPage) {\n        before.unshift(this.genIcon(this.onFirstPage, this.options.page === 1, this.$vuetify.lang.t('$vuetify.dataFooter.firstPage'), this.$vuetify.rtl ? this.lastIcon : this.firstIcon));\n        after.push(this.genIcon(this.onLastPage, this.options.page >= this.pagination.pageCount || this.options.itemsPerPage === -1, this.$vuetify.lang.t('$vuetify.dataFooter.lastPage'), this.$vuetify.rtl ? this.firstIcon : this.lastIcon));\n      }\n\n      return [this.$createElement('div', {\n        staticClass: 'v-data-footer__icons-before'\n      }, before), this.showCurrentPage && this.$createElement('span', [this.options.page.toString()]), this.$createElement('div', {\n        staticClass: 'v-data-footer__icons-after'\n      }, after)];\n    }\n\n  },\n\n  render() {\n    return this.$createElement('div', {\n      staticClass: 'v-data-footer'\n    }, [getSlot(this, 'prepend'), this.genItemsPerPageSelect(), this.genPaginationInfo(), this.genIcons()]);\n  }\n\n});\n//# sourceMappingURL=VDataFooter.js.map","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","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n    rsComboMarksRange = '\\\\u0300-\\\\u036f',\n    reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n    rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n    rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n    rsDingbatRange = '\\\\u2700-\\\\u27bf',\n    rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n    rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n    rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n    rsPunctuationRange = '\\\\u2000-\\\\u206f',\n    rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n    rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n    rsVarRange = '\\\\ufe0e\\\\ufe0f',\n    rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\",\n    rsBreak = '[' + rsBreakRange + ']',\n    rsCombo = '[' + rsComboRange + ']',\n    rsDigits = '\\\\d+',\n    rsDingbat = '[' + rsDingbatRange + ']',\n    rsLower = '[' + rsLowerRange + ']',\n    rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n    rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n    rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n    rsNonAstral = '[^' + rsAstralRange + ']',\n    rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n    rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n    rsUpper = '[' + rsUpperRange + ']',\n    rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n    rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n    rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n    rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n    reOptMod = rsModifier + '?',\n    rsOptVar = '[' + rsVarRange + ']?',\n    rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n    rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n    rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n    rsSeq = rsOptVar + reOptMod + rsOptJoin,\n    rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq;\n\n/** Used to match complex or compound words. */\nvar reUnicodeWord = RegExp([\n  rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n  rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n  rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n  rsUpper + '+' + rsOptContrUpper,\n  rsOrdUpper,\n  rsOrdLower,\n  rsDigits,\n  rsEmoji\n].join('|'), 'g');\n\n/**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction unicodeWords(string) {\n  return string.match(reUnicodeWord) || [];\n}\n\nmodule.exports = unicodeWords;\n","// Mixins\nimport Stackable from '../stackable';\nimport { factory as positionableFactory } from '../positionable';\nimport Activatable from '../activatable';\nimport Detachable from '../detachable'; // Utilities\n\nimport mixins from '../../util/mixins';\nimport { convertToUnit } from '../../util/helpers';\nconst baseMixins = mixins(Stackable, positionableFactory(['top', 'right', 'bottom', 'left', 'absolute']), Activatable, Detachable);\n/* @vue/component */\n\nexport default baseMixins.extend().extend({\n  name: 'menuable',\n  props: {\n    allowOverflow: Boolean,\n    light: Boolean,\n    dark: Boolean,\n    maxWidth: {\n      type: [Number, String],\n      default: 'auto'\n    },\n    minWidth: [Number, String],\n    nudgeBottom: {\n      type: [Number, String],\n      default: 0\n    },\n    nudgeLeft: {\n      type: [Number, String],\n      default: 0\n    },\n    nudgeRight: {\n      type: [Number, String],\n      default: 0\n    },\n    nudgeTop: {\n      type: [Number, String],\n      default: 0\n    },\n    nudgeWidth: {\n      type: [Number, String],\n      default: 0\n    },\n    offsetOverflow: Boolean,\n    openOnClick: Boolean,\n    positionX: {\n      type: Number,\n      default: null\n    },\n    positionY: {\n      type: Number,\n      default: null\n    },\n    zIndex: {\n      type: [Number, String],\n      default: null\n    }\n  },\n  data: () => ({\n    activatorNode: [],\n    absoluteX: 0,\n    absoluteY: 0,\n    activatedBy: null,\n    activatorFixed: false,\n    dimensions: {\n      activator: {\n        top: 0,\n        left: 0,\n        bottom: 0,\n        right: 0,\n        width: 0,\n        height: 0,\n        offsetTop: 0,\n        scrollHeight: 0,\n        offsetLeft: 0\n      },\n      content: {\n        top: 0,\n        left: 0,\n        bottom: 0,\n        right: 0,\n        width: 0,\n        height: 0,\n        offsetTop: 0,\n        scrollHeight: 0\n      }\n    },\n    relativeYOffset: 0,\n    hasJustFocused: false,\n    hasWindow: false,\n    inputActivator: false,\n    isContentActive: false,\n    pageWidth: 0,\n    pageYOffset: 0,\n    stackClass: 'v-menu__content--active',\n    stackMinZIndex: 6\n  }),\n  computed: {\n    computedLeft() {\n      const a = this.dimensions.activator;\n      const c = this.dimensions.content;\n      const activatorLeft = (this.attach !== false ? a.offsetLeft : a.left) || 0;\n      const minWidth = Math.max(a.width, c.width);\n      let left = 0;\n      left += this.left ? activatorLeft - (minWidth - a.width) : activatorLeft;\n\n      if (this.offsetX) {\n        const maxWidth = isNaN(Number(this.maxWidth)) ? a.width : Math.min(a.width, Number(this.maxWidth));\n        left += this.left ? -maxWidth : a.width;\n      }\n\n      if (this.nudgeLeft) left -= parseInt(this.nudgeLeft);\n      if (this.nudgeRight) left += parseInt(this.nudgeRight);\n      return left;\n    },\n\n    computedTop() {\n      const a = this.dimensions.activator;\n      const c = this.dimensions.content;\n      let top = 0;\n      if (this.top) top += a.height - c.height;\n      if (this.attach !== false) top += a.offsetTop;else top += a.top + this.pageYOffset;\n      if (this.offsetY) top += this.top ? -a.height : a.height;\n      if (this.nudgeTop) top -= parseInt(this.nudgeTop);\n      if (this.nudgeBottom) top += parseInt(this.nudgeBottom);\n      return top;\n    },\n\n    hasActivator() {\n      return !!this.$slots.activator || !!this.$scopedSlots.activator || !!this.activator || !!this.inputActivator;\n    },\n\n    absoluteYOffset() {\n      return this.pageYOffset - this.relativeYOffset;\n    }\n\n  },\n  watch: {\n    disabled(val) {\n      val && this.callDeactivate();\n    },\n\n    isActive(val) {\n      if (this.disabled) return;\n      val ? this.callActivate() : this.callDeactivate();\n    },\n\n    positionX: 'updateDimensions',\n    positionY: 'updateDimensions'\n  },\n\n  beforeMount() {\n    this.hasWindow = typeof window !== 'undefined';\n\n    if (this.hasWindow) {\n      window.addEventListener('resize', this.updateDimensions, false);\n    }\n  },\n\n  beforeDestroy() {\n    if (this.hasWindow) {\n      window.removeEventListener('resize', this.updateDimensions, false);\n    }\n  },\n\n  methods: {\n    absolutePosition() {\n      return {\n        offsetTop: this.positionY || this.absoluteY,\n        offsetLeft: this.positionX || this.absoluteX,\n        scrollHeight: 0,\n        top: this.positionY || this.absoluteY,\n        bottom: this.positionY || this.absoluteY,\n        left: this.positionX || this.absoluteX,\n        right: this.positionX || this.absoluteX,\n        height: 0,\n        width: 0\n      };\n    },\n\n    activate() {},\n\n    calcLeft(menuWidth) {\n      return convertToUnit(this.attach !== false ? this.computedLeft : this.calcXOverflow(this.computedLeft, menuWidth));\n    },\n\n    calcTop() {\n      return convertToUnit(this.attach !== false ? this.computedTop : this.calcYOverflow(this.computedTop));\n    },\n\n    calcXOverflow(left, menuWidth) {\n      const xOverflow = left + menuWidth - this.pageWidth + 12;\n\n      if ((!this.left || this.right) && xOverflow > 0) {\n        left = Math.max(left - xOverflow, 0);\n      } else {\n        left = Math.max(left, 12);\n      }\n\n      return left + this.getOffsetLeft();\n    },\n\n    calcYOverflow(top) {\n      const documentHeight = this.getInnerHeight();\n      const toTop = this.absoluteYOffset + documentHeight;\n      const activator = this.dimensions.activator;\n      const contentHeight = this.dimensions.content.height;\n      const totalHeight = top + contentHeight;\n      const isOverflowing = toTop < totalHeight; // If overflowing bottom and offset\n      // TODO: set 'bottom' position instead of 'top'\n\n      if (isOverflowing && this.offsetOverflow && // If we don't have enough room to offset\n      // the overflow, don't offset\n      activator.top > contentHeight) {\n        top = this.pageYOffset + (activator.top - contentHeight); // If overflowing bottom\n      } else if (isOverflowing && !this.allowOverflow) {\n        top = toTop - contentHeight - 12; // If overflowing top\n      } else if (top < this.absoluteYOffset && !this.allowOverflow) {\n        top = this.absoluteYOffset + 12;\n      }\n\n      return top < 12 ? 12 : top;\n    },\n\n    callActivate() {\n      if (!this.hasWindow) return;\n      this.activate();\n    },\n\n    callDeactivate() {\n      this.isContentActive = false;\n      this.deactivate();\n    },\n\n    checkForPageYOffset() {\n      if (this.hasWindow) {\n        this.pageYOffset = this.activatorFixed ? 0 : this.getOffsetTop();\n      }\n    },\n\n    checkActivatorFixed() {\n      if (this.attach !== false) return;\n      let el = this.getActivator();\n\n      while (el) {\n        if (window.getComputedStyle(el).position === 'fixed') {\n          this.activatorFixed = true;\n          return;\n        }\n\n        el = el.offsetParent;\n      }\n\n      this.activatorFixed = false;\n    },\n\n    deactivate() {},\n\n    genActivatorListeners() {\n      const listeners = Activatable.options.methods.genActivatorListeners.call(this);\n      const onClick = listeners.click;\n\n      listeners.click = e => {\n        if (this.openOnClick) {\n          onClick && onClick(e);\n        }\n\n        this.absoluteX = e.clientX;\n        this.absoluteY = e.clientY;\n      };\n\n      return listeners;\n    },\n\n    getInnerHeight() {\n      if (!this.hasWindow) return 0;\n      return window.innerHeight || document.documentElement.clientHeight;\n    },\n\n    getOffsetLeft() {\n      if (!this.hasWindow) return 0;\n      return window.pageXOffset || document.documentElement.scrollLeft;\n    },\n\n    getOffsetTop() {\n      if (!this.hasWindow) return 0;\n      return window.pageYOffset || document.documentElement.scrollTop;\n    },\n\n    getRoundedBoundedClientRect(el) {\n      const rect = el.getBoundingClientRect();\n      return {\n        top: Math.round(rect.top),\n        left: Math.round(rect.left),\n        bottom: Math.round(rect.bottom),\n        right: Math.round(rect.right),\n        width: Math.round(rect.width),\n        height: Math.round(rect.height)\n      };\n    },\n\n    measure(el) {\n      if (!el || !this.hasWindow) return null;\n      const rect = this.getRoundedBoundedClientRect(el); // Account for activator margin\n\n      if (this.attach !== false) {\n        const style = window.getComputedStyle(el);\n        rect.left = parseInt(style.marginLeft);\n        rect.top = parseInt(style.marginTop);\n      }\n\n      return rect;\n    },\n\n    sneakPeek(cb) {\n      requestAnimationFrame(() => {\n        const el = this.$refs.content;\n\n        if (!el || el.style.display !== 'none') {\n          cb();\n          return;\n        }\n\n        el.style.display = 'inline-block';\n        cb();\n        el.style.display = 'none';\n      });\n    },\n\n    startTransition() {\n      return new Promise(resolve => requestAnimationFrame(() => {\n        this.isContentActive = this.hasJustFocused = this.isActive;\n        resolve();\n      }));\n    },\n\n    updateDimensions() {\n      this.hasWindow = typeof window !== 'undefined';\n      this.checkActivatorFixed();\n      this.checkForPageYOffset();\n      this.pageWidth = document.documentElement.clientWidth;\n      const dimensions = {\n        activator: { ...this.dimensions.activator\n        },\n        content: { ...this.dimensions.content\n        }\n      }; // Activator should already be shown\n\n      if (!this.hasActivator || this.absolute) {\n        dimensions.activator = this.absolutePosition();\n      } else {\n        const activator = this.getActivator();\n        if (!activator) return;\n        dimensions.activator = this.measure(activator);\n        dimensions.activator.offsetLeft = activator.offsetLeft;\n\n        if (this.attach !== false) {\n          // account for css padding causing things to not line up\n          // this is mostly for v-autocomplete, hopefully it won't break anything\n          dimensions.activator.offsetTop = activator.offsetTop;\n        } else {\n          dimensions.activator.offsetTop = 0;\n        }\n      } // Display and hide to get dimensions\n\n\n      this.sneakPeek(() => {\n        if (this.$refs.content) {\n          if (this.$refs.content.offsetParent) {\n            const offsetRect = this.getRoundedBoundedClientRect(this.$refs.content.offsetParent);\n            this.relativeYOffset = window.pageYOffset + offsetRect.top;\n            dimensions.activator.top -= this.relativeYOffset;\n            dimensions.activator.left -= window.pageXOffset + offsetRect.left;\n          }\n\n          dimensions.content = this.measure(this.$refs.content);\n        }\n\n        this.dimensions = dimensions;\n      });\n    }\n\n  }\n});\n//# sourceMappingURL=index.js.map","var isArray = require('./isArray'),\n    isSymbol = require('./isSymbol');\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n    reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n  if (isArray(value)) {\n    return false;\n  }\n  var type = typeof value;\n  if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n      value == null || isSymbol(value)) {\n    return true;\n  }\n  return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n    (object != null && value in Object(object));\n}\n\nmodule.exports = isKey;\n","// Styles\nimport \"../../../src/components/VWindow/VWindow.sass\"; // Directives\n\nimport Touch from '../../directives/touch'; // Components\n\nimport VBtn from '../VBtn';\nimport VIcon from '../VIcon';\nimport { BaseItemGroup } from '../VItemGroup/VItemGroup';\n/* @vue/component */\n\nexport default BaseItemGroup.extend({\n  name: 'v-window',\n  directives: {\n    Touch\n  },\n\n  provide() {\n    return {\n      windowGroup: this\n    };\n  },\n\n  props: {\n    activeClass: {\n      type: String,\n      default: 'v-window-item--active'\n    },\n    continuous: Boolean,\n    mandatory: {\n      type: Boolean,\n      default: true\n    },\n    nextIcon: {\n      type: [Boolean, String],\n      default: '$next'\n    },\n    prevIcon: {\n      type: [Boolean, String],\n      default: '$prev'\n    },\n    reverse: Boolean,\n    showArrows: Boolean,\n    showArrowsOnHover: Boolean,\n    touch: Object,\n    touchless: Boolean,\n    value: {\n      required: false\n    },\n    vertical: Boolean\n  },\n\n  data() {\n    return {\n      changedByDelimiters: false,\n      internalHeight: undefined,\n      transitionHeight: undefined,\n      transitionCount: 0,\n      isBooted: false,\n      isReverse: false\n    };\n  },\n\n  computed: {\n    isActive() {\n      return this.transitionCount > 0;\n    },\n\n    classes() {\n      return { ...BaseItemGroup.options.computed.classes.call(this),\n        'v-window--show-arrows-on-hover': this.showArrowsOnHover\n      };\n    },\n\n    computedTransition() {\n      if (!this.isBooted) return '';\n      const axis = this.vertical ? 'y' : 'x';\n      const reverse = this.internalReverse ? !this.isReverse : this.isReverse;\n      const direction = reverse ? '-reverse' : '';\n      return `v-window-${axis}${direction}-transition`;\n    },\n\n    hasActiveItems() {\n      return Boolean(this.items.find(item => !item.disabled));\n    },\n\n    hasNext() {\n      return this.continuous || this.internalIndex < this.items.length - 1;\n    },\n\n    hasPrev() {\n      return this.continuous || this.internalIndex > 0;\n    },\n\n    internalIndex() {\n      return this.items.findIndex((item, i) => {\n        return this.internalValue === this.getValue(item, i);\n      });\n    },\n\n    internalReverse() {\n      return this.$vuetify.rtl ? !this.reverse : this.reverse;\n    }\n\n  },\n  watch: {\n    internalIndex(val, oldVal) {\n      this.isReverse = this.updateReverse(val, oldVal);\n    }\n\n  },\n\n  mounted() {\n    window.requestAnimationFrame(() => this.isBooted = true);\n  },\n\n  methods: {\n    genDefaultSlot() {\n      return this.$slots.default;\n    },\n\n    genContainer() {\n      const children = [this.genDefaultSlot()];\n\n      if (this.showArrows) {\n        children.push(this.genControlIcons());\n      }\n\n      return this.$createElement('div', {\n        staticClass: 'v-window__container',\n        class: {\n          'v-window__container--is-active': this.isActive\n        },\n        style: {\n          height: this.internalHeight || this.transitionHeight\n        }\n      }, children);\n    },\n\n    genIcon(direction, icon, click) {\n      var _this$$scopedSlots$di, _this$$scopedSlots$di2, _this$$scopedSlots;\n\n      const on = {\n        click: e => {\n          e.stopPropagation();\n          this.changedByDelimiters = true;\n          click();\n        }\n      };\n      const attrs = {\n        'aria-label': this.$vuetify.lang.t(`$vuetify.carousel.${direction}`)\n      };\n      const children = (_this$$scopedSlots$di = (_this$$scopedSlots$di2 = (_this$$scopedSlots = this.$scopedSlots)[direction]) == null ? void 0 : _this$$scopedSlots$di2.call(_this$$scopedSlots, {\n        on,\n        attrs\n      })) != null ? _this$$scopedSlots$di : [this.$createElement(VBtn, {\n        props: {\n          icon: true\n        },\n        attrs,\n        on\n      }, [this.$createElement(VIcon, {\n        props: {\n          large: true\n        }\n      }, icon)])];\n      return this.$createElement('div', {\n        staticClass: `v-window__${direction}`\n      }, children);\n    },\n\n    genControlIcons() {\n      const icons = [];\n      const prevIcon = this.$vuetify.rtl ? this.nextIcon : this.prevIcon;\n      /* istanbul ignore else */\n\n      if (this.hasPrev && prevIcon && typeof prevIcon === 'string') {\n        const icon = this.genIcon('prev', prevIcon, this.prev);\n        icon && icons.push(icon);\n      }\n\n      const nextIcon = this.$vuetify.rtl ? this.prevIcon : this.nextIcon;\n      /* istanbul ignore else */\n\n      if (this.hasNext && nextIcon && typeof nextIcon === 'string') {\n        const icon = this.genIcon('next', nextIcon, this.next);\n        icon && icons.push(icon);\n      }\n\n      return icons;\n    },\n\n    getNextIndex(index) {\n      const nextIndex = (index + 1) % this.items.length;\n      const item = this.items[nextIndex];\n      if (item.disabled) return this.getNextIndex(nextIndex);\n      return nextIndex;\n    },\n\n    getPrevIndex(index) {\n      const prevIndex = (index + this.items.length - 1) % this.items.length;\n      const item = this.items[prevIndex];\n      if (item.disabled) return this.getPrevIndex(prevIndex);\n      return prevIndex;\n    },\n\n    next() {\n      /* istanbul ignore if */\n      if (!this.hasActiveItems || !this.hasNext) return;\n      const nextIndex = this.getNextIndex(this.internalIndex);\n      const item = this.items[nextIndex];\n      this.internalValue = this.getValue(item, nextIndex);\n    },\n\n    prev() {\n      /* istanbul ignore if */\n      if (!this.hasActiveItems || !this.hasPrev) return;\n      const lastIndex = this.getPrevIndex(this.internalIndex);\n      const item = this.items[lastIndex];\n      this.internalValue = this.getValue(item, lastIndex);\n    },\n\n    updateReverse(val, oldVal) {\n      const itemsLength = this.items.length;\n      const lastIndex = itemsLength - 1;\n      if (itemsLength <= 2) return val < oldVal;\n\n      if (val === lastIndex && oldVal === 0) {\n        return true;\n      } else if (val === 0 && oldVal === lastIndex) {\n        return false;\n      } else {\n        return val < oldVal;\n      }\n    }\n\n  },\n\n  render(h) {\n    const data = {\n      staticClass: 'v-window',\n      class: this.classes,\n      directives: []\n    };\n\n    if (!this.touchless) {\n      const value = this.touch || {\n        left: () => {\n          this.$vuetify.rtl ? this.prev() : this.next();\n        },\n        right: () => {\n          this.$vuetify.rtl ? this.next() : this.prev();\n        },\n        end: e => {\n          e.stopPropagation();\n        },\n        start: e => {\n          e.stopPropagation();\n        }\n      };\n      data.directives.push({\n        name: 'touch',\n        value\n      });\n    }\n\n    return h('div', data, [this.genContainer()]);\n  }\n\n});\n//# sourceMappingURL=VWindow.js.map","// Styles\nimport \"../../../src/components/VMain/VMain.sass\"; // Mixins\n\nimport SSRBootable from '../../mixins/ssr-bootable';\n/* @vue/component */\n\nexport default SSRBootable.extend({\n  name: 'v-main',\n  props: {\n    tag: {\n      type: String,\n      default: 'main'\n    }\n  },\n  computed: {\n    styles() {\n      const {\n        bar,\n        top,\n        right,\n        footer,\n        insetFooter,\n        bottom,\n        left\n      } = this.$vuetify.application;\n      return {\n        paddingTop: `${top + bar}px`,\n        paddingRight: `${right}px`,\n        paddingBottom: `${footer + insetFooter + bottom}px`,\n        paddingLeft: `${left}px`\n      };\n    }\n\n  },\n\n  render(h) {\n    const data = {\n      staticClass: 'v-main',\n      style: this.styles,\n      ref: 'main'\n    };\n    return h(this.tag, data, [h('div', {\n      staticClass: 'v-main__wrap'\n    }, this.$slots.default)]);\n  }\n\n});\n//# sourceMappingURL=VMain.js.map","'use strict';\n\nmodule.exports = function (data, opts) {\n    if (!opts) opts = {};\n    if (typeof opts === 'function') opts = { cmp: opts };\n    var cycles = (typeof opts.cycles === 'boolean') ? opts.cycles : false;\n\n    var cmp = opts.cmp && (function (f) {\n        return function (node) {\n            return function (a, b) {\n                var aobj = { key: a, value: node[a] };\n                var bobj = { key: b, value: node[b] };\n                return f(aobj, bobj);\n            };\n        };\n    })(opts.cmp);\n\n    var seen = [];\n    return (function stringify (node) {\n        if (node && node.toJSON && typeof node.toJSON === 'function') {\n            node = node.toJSON();\n        }\n\n        if (node === undefined) return;\n        if (typeof node == 'number') return isFinite(node) ? '' + node : 'null';\n        if (typeof node !== 'object') return JSON.stringify(node);\n\n        var i, out;\n        if (Array.isArray(node)) {\n            out = '[';\n            for (i = 0; i < node.length; i++) {\n                if (i) out += ',';\n                out += stringify(node[i]) || 'null';\n            }\n            return out + ']';\n        }\n\n        if (node === null) return 'null';\n\n        if (seen.indexOf(node) !== -1) {\n            if (cycles) return JSON.stringify('__cycle__');\n            throw new TypeError('Converting circular structure to JSON');\n        }\n\n        var seenIndex = seen.push(node) - 1;\n        var keys = Object.keys(node).sort(cmp && cmp(node));\n        out = '';\n        for (i = 0; i < keys.length; i++) {\n            var key = keys[i];\n            var value = stringify(node[key]);\n\n            if (!value) continue;\n            if (out) out += ',';\n            out += JSON.stringify(key) + ':' + value;\n        }\n        seen.splice(seenIndex, 1);\n        return '{' + out + '}';\n    })(data);\n};\n","// Styles\nimport \"../../../src/components/VNavigationDrawer/VNavigationDrawer.sass\"; // Components\n\nimport VImg from '../VImg/VImg'; // Mixins\n\nimport Applicationable from '../../mixins/applicationable';\nimport Colorable from '../../mixins/colorable';\nimport Dependent from '../../mixins/dependent';\nimport Mobile from '../../mixins/mobile';\nimport Overlayable from '../../mixins/overlayable';\nimport SSRBootable from '../../mixins/ssr-bootable';\nimport Themeable from '../../mixins/themeable'; // Directives\n\nimport ClickOutside from '../../directives/click-outside';\nimport Resize from '../../directives/resize';\nimport Touch from '../../directives/touch'; // Utilities\n\nimport { convertToUnit, getSlot } from '../../util/helpers';\nimport mixins from '../../util/mixins';\nconst baseMixins = mixins(Applicationable('left', ['isActive', 'isMobile', 'miniVariant', 'expandOnHover', 'permanent', 'right', 'temporary', 'width']), Colorable, Dependent, Mobile, Overlayable, SSRBootable, Themeable);\n/* @vue/component */\n\nexport default baseMixins.extend({\n  name: 'v-navigation-drawer',\n  directives: {\n    ClickOutside,\n    Resize,\n    Touch\n  },\n\n  provide() {\n    return {\n      isInNav: this.tag === 'nav'\n    };\n  },\n\n  props: {\n    bottom: Boolean,\n    clipped: Boolean,\n    disableResizeWatcher: Boolean,\n    disableRouteWatcher: Boolean,\n    expandOnHover: Boolean,\n    floating: Boolean,\n    height: {\n      type: [Number, String],\n\n      default() {\n        return this.app ? '100vh' : '100%';\n      }\n\n    },\n    miniVariant: Boolean,\n    miniVariantWidth: {\n      type: [Number, String],\n      default: 56\n    },\n    permanent: Boolean,\n    right: Boolean,\n    src: {\n      type: [String, Object],\n      default: ''\n    },\n    stateless: Boolean,\n    tag: {\n      type: String,\n\n      default() {\n        return this.app ? 'nav' : 'aside';\n      }\n\n    },\n    temporary: Boolean,\n    touchless: Boolean,\n    width: {\n      type: [Number, String],\n      default: 256\n    },\n    value: null\n  },\n  data: () => ({\n    isMouseover: false,\n    touchArea: {\n      left: 0,\n      right: 0\n    },\n    stackMinZIndex: 6\n  }),\n  computed: {\n    /**\n     * Used for setting an app value from a dynamic\n     * property. Called from applicationable.js\n     */\n    applicationProperty() {\n      return this.right ? 'right' : 'left';\n    },\n\n    classes() {\n      return {\n        'v-navigation-drawer': true,\n        'v-navigation-drawer--absolute': this.absolute,\n        'v-navigation-drawer--bottom': this.bottom,\n        'v-navigation-drawer--clipped': this.clipped,\n        'v-navigation-drawer--close': !this.isActive,\n        'v-navigation-drawer--fixed': !this.absolute && (this.app || this.fixed),\n        'v-navigation-drawer--floating': this.floating,\n        'v-navigation-drawer--is-mobile': this.isMobile,\n        'v-navigation-drawer--is-mouseover': this.isMouseover,\n        'v-navigation-drawer--mini-variant': this.isMiniVariant,\n        'v-navigation-drawer--custom-mini-variant': Number(this.miniVariantWidth) !== 56,\n        'v-navigation-drawer--open': this.isActive,\n        'v-navigation-drawer--open-on-hover': this.expandOnHover,\n        'v-navigation-drawer--right': this.right,\n        'v-navigation-drawer--temporary': this.temporary,\n        ...this.themeClasses\n      };\n    },\n\n    computedMaxHeight() {\n      if (!this.hasApp) return null;\n      const computedMaxHeight = this.$vuetify.application.bottom + this.$vuetify.application.footer + this.$vuetify.application.bar;\n      if (!this.clipped) return computedMaxHeight;\n      return computedMaxHeight + this.$vuetify.application.top;\n    },\n\n    computedTop() {\n      if (!this.hasApp) return 0;\n      let computedTop = this.$vuetify.application.bar;\n      computedTop += this.clipped ? this.$vuetify.application.top : 0;\n      return computedTop;\n    },\n\n    computedTransform() {\n      if (this.isActive) return 0;\n      if (this.isBottom) return 100;\n      return this.right ? 100 : -100;\n    },\n\n    computedWidth() {\n      return this.isMiniVariant ? this.miniVariantWidth : this.width;\n    },\n\n    hasApp() {\n      return this.app && !this.isMobile && !this.temporary;\n    },\n\n    isBottom() {\n      return this.bottom && this.isMobile;\n    },\n\n    isMiniVariant() {\n      return !this.expandOnHover && this.miniVariant || this.expandOnHover && !this.isMouseover;\n    },\n\n    isMobile() {\n      return !this.stateless && !this.permanent && Mobile.options.computed.isMobile.call(this);\n    },\n\n    reactsToClick() {\n      return !this.stateless && !this.permanent && (this.isMobile || this.temporary);\n    },\n\n    reactsToMobile() {\n      return this.app && !this.disableResizeWatcher && !this.permanent && !this.stateless && !this.temporary;\n    },\n\n    reactsToResize() {\n      return !this.disableResizeWatcher && !this.stateless;\n    },\n\n    reactsToRoute() {\n      return !this.disableRouteWatcher && !this.stateless && (this.temporary || this.isMobile);\n    },\n\n    showOverlay() {\n      return !this.hideOverlay && this.isActive && (this.isMobile || this.temporary);\n    },\n\n    styles() {\n      const translate = this.isBottom ? 'translateY' : 'translateX';\n      return {\n        height: convertToUnit(this.height),\n        top: !this.isBottom ? convertToUnit(this.computedTop) : 'auto',\n        maxHeight: this.computedMaxHeight != null ? `calc(100% - ${convertToUnit(this.computedMaxHeight)})` : undefined,\n        transform: `${translate}(${convertToUnit(this.computedTransform, '%')})`,\n        width: convertToUnit(this.computedWidth)\n      };\n    }\n\n  },\n  watch: {\n    $route: 'onRouteChange',\n\n    isActive(val) {\n      this.$emit('input', val);\n    },\n\n    /**\n     * When mobile changes, adjust the active state\n     * only when there has been a previous value\n     */\n    isMobile(val, prev) {\n      !val && this.isActive && !this.temporary && this.removeOverlay();\n      if (prev == null || !this.reactsToResize || !this.reactsToMobile) return;\n      this.isActive = !val;\n    },\n\n    permanent(val) {\n      // If enabling prop enable the drawer\n      if (val) this.isActive = true;\n    },\n\n    showOverlay(val) {\n      if (val) this.genOverlay();else this.removeOverlay();\n    },\n\n    value(val) {\n      if (this.permanent) return;\n\n      if (val == null) {\n        this.init();\n        return;\n      }\n\n      if (val !== this.isActive) this.isActive = val;\n    },\n\n    expandOnHover: 'updateMiniVariant',\n\n    isMouseover(val) {\n      this.updateMiniVariant(!val);\n    }\n\n  },\n\n  beforeMount() {\n    this.init();\n  },\n\n  methods: {\n    calculateTouchArea() {\n      const parent = this.$el.parentNode;\n      if (!parent) return;\n      const parentRect = parent.getBoundingClientRect();\n      this.touchArea = {\n        left: parentRect.left + 50,\n        right: parentRect.right - 50\n      };\n    },\n\n    closeConditional() {\n      return this.isActive && !this._isDestroyed && this.reactsToClick;\n    },\n\n    genAppend() {\n      return this.genPosition('append');\n    },\n\n    genBackground() {\n      const props = {\n        height: '100%',\n        width: '100%',\n        src: this.src\n      };\n      const image = this.$scopedSlots.img ? this.$scopedSlots.img(props) : this.$createElement(VImg, {\n        props\n      });\n      return this.$createElement('div', {\n        staticClass: 'v-navigation-drawer__image'\n      }, [image]);\n    },\n\n    genDirectives() {\n      const directives = [{\n        name: 'click-outside',\n        value: {\n          handler: () => {\n            this.isActive = false;\n          },\n          closeConditional: this.closeConditional,\n          include: this.getOpenDependentElements\n        }\n      }];\n\n      if (!this.touchless && !this.stateless) {\n        directives.push({\n          name: 'touch',\n          value: {\n            parent: true,\n            left: this.swipeLeft,\n            right: this.swipeRight\n          }\n        });\n      }\n\n      return directives;\n    },\n\n    genListeners() {\n      const on = {\n        transitionend: e => {\n          if (e.target !== e.currentTarget) return;\n          this.$emit('transitionend', e); // IE11 does not support new Event('resize')\n\n          const resizeEvent = document.createEvent('UIEvents');\n          resizeEvent.initUIEvent('resize', true, false, window, 0);\n          window.dispatchEvent(resizeEvent);\n        }\n      };\n\n      if (this.miniVariant) {\n        on.click = () => this.$emit('update:mini-variant', false);\n      }\n\n      if (this.expandOnHover) {\n        on.mouseenter = () => this.isMouseover = true;\n\n        on.mouseleave = () => this.isMouseover = false;\n      }\n\n      return on;\n    },\n\n    genPosition(name) {\n      const slot = getSlot(this, name);\n      if (!slot) return slot;\n      return this.$createElement('div', {\n        staticClass: `v-navigation-drawer__${name}`\n      }, slot);\n    },\n\n    genPrepend() {\n      return this.genPosition('prepend');\n    },\n\n    genContent() {\n      return this.$createElement('div', {\n        staticClass: 'v-navigation-drawer__content'\n      }, this.$slots.default);\n    },\n\n    genBorder() {\n      return this.$createElement('div', {\n        staticClass: 'v-navigation-drawer__border'\n      });\n    },\n\n    init() {\n      if (this.permanent) {\n        this.isActive = true;\n      } else if (this.stateless || this.value != null) {\n        this.isActive = this.value;\n      } else if (!this.temporary) {\n        this.isActive = !this.isMobile;\n      }\n    },\n\n    onRouteChange() {\n      if (this.reactsToRoute && this.closeConditional()) {\n        this.isActive = false;\n      }\n    },\n\n    swipeLeft(e) {\n      if (this.isActive && this.right) return;\n      this.calculateTouchArea();\n      if (Math.abs(e.touchendX - e.touchstartX) < 100) return;\n      if (this.right && e.touchstartX >= this.touchArea.right) this.isActive = true;else if (!this.right && this.isActive) this.isActive = false;\n    },\n\n    swipeRight(e) {\n      if (this.isActive && !this.right) return;\n      this.calculateTouchArea();\n      if (Math.abs(e.touchendX - e.touchstartX) < 100) return;\n      if (!this.right && e.touchstartX <= this.touchArea.left) this.isActive = true;else if (this.right && this.isActive) this.isActive = false;\n    },\n\n    /**\n     * Update the application layout\n     */\n    updateApplication() {\n      if (!this.isActive || this.isMobile || this.temporary || !this.$el) return 0;\n      const width = Number(this.computedWidth);\n      return isNaN(width) ? this.$el.clientWidth : width;\n    },\n\n    updateMiniVariant(val) {\n      if (this.miniVariant !== val) this.$emit('update:mini-variant', val);\n    }\n\n  },\n\n  render(h) {\n    const children = [this.genPrepend(), this.genContent(), this.genAppend(), this.genBorder()];\n    if (this.src || getSlot(this, 'img')) children.unshift(this.genBackground());\n    return h(this.tag, this.setBackgroundColor(this.color, {\n      class: this.classes,\n      style: this.styles,\n      directives: this.genDirectives(),\n      on: this.genListeners()\n    }), children);\n  }\n\n});\n//# sourceMappingURL=VNavigationDrawer.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n    for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.select = exports.OPERATORS = exports.FILTERS = exports.filterQuery = exports.AdapterService = void 0;\nconst commons_1 = require(\"@feathersjs/commons\");\nvar service_1 = require(\"./service\");\nObject.defineProperty(exports, \"AdapterService\", { enumerable: true, get: function () { return service_1.AdapterService; } });\nvar filter_query_1 = require(\"./filter-query\");\nObject.defineProperty(exports, \"filterQuery\", { enumerable: true, get: function () { return __importDefault(filter_query_1).default; } });\nObject.defineProperty(exports, \"FILTERS\", { enumerable: true, get: function () { return filter_query_1.FILTERS; } });\nObject.defineProperty(exports, \"OPERATORS\", { enumerable: true, get: function () { return filter_query_1.OPERATORS; } });\n__exportStar(require(\"./sort\"), exports);\n// Return a function that filters a result object or array\n// and picks only the fields passed as `params.query.$select`\n// and additional `otherFields`\nfunction select(params, ...otherFields) {\n    const fields = params && params.query && params.query.$select;\n    if (Array.isArray(fields) && otherFields.length) {\n        fields.push(...otherFields);\n    }\n    const convert = (result) => {\n        if (!Array.isArray(fields)) {\n            return result;\n        }\n        return commons_1._.pick(result, ...fields);\n    };\n    return (result) => {\n        if (Array.isArray(result)) {\n            return result.map(convert);\n        }\n        return convert(result);\n    };\n}\nexports.select = select;\n//# sourceMappingURL=index.js.map","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","var Stack = require('./_Stack'),\n    assignMergeValue = require('./_assignMergeValue'),\n    baseFor = require('./_baseFor'),\n    baseMergeDeep = require('./_baseMergeDeep'),\n    isObject = require('./isObject'),\n    keysIn = require('./keysIn'),\n    safeGet = require('./_safeGet');\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n *  counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n  if (object === source) {\n    return;\n  }\n  baseFor(source, function(srcValue, key) {\n    stack || (stack = new Stack);\n    if (isObject(srcValue)) {\n      baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n    }\n    else {\n      var newValue = customizer\n        ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n        : undefined;\n\n      if (newValue === undefined) {\n        newValue = srcValue;\n      }\n      assignMergeValue(object, key, newValue);\n    }\n  }, keysIn);\n}\n\nmodule.exports = baseMerge;\n","\nmodule.exports = isBuf;\n\nvar withNativeBuffer = typeof Buffer === 'function' && typeof Buffer.isBuffer === 'function';\nvar withNativeArrayBuffer = typeof ArrayBuffer === 'function';\n\nvar isView = function (obj) {\n  return typeof ArrayBuffer.isView === 'function' ? ArrayBuffer.isView(obj) : (obj.buffer instanceof ArrayBuffer);\n};\n\n/**\n * Returns true if obj is a buffer or an arraybuffer.\n *\n * @api private\n */\n\nfunction isBuf(obj) {\n  return (withNativeBuffer && Buffer.isBuffer(obj)) ||\n          (withNativeArrayBuffer && (obj instanceof ArrayBuffer || isView(obj)));\n}\n","function inserted(el, binding, vnode) {\n  const {\n    self = false\n  } = binding.modifiers || {};\n  const value = binding.value;\n  const options = typeof value === 'object' && value.options || {\n    passive: true\n  };\n  const handler = typeof value === 'function' || 'handleEvent' in value ? value : value.handler;\n  const target = self ? el : binding.arg ? document.querySelector(binding.arg) : window;\n  if (!target) return;\n  target.addEventListener('scroll', handler, options);\n  el._onScroll = Object(el._onScroll);\n  el._onScroll[vnode.context._uid] = {\n    handler,\n    options,\n    // Don't reference self\n    target: self ? undefined : target\n  };\n}\n\nfunction unbind(el, binding, vnode) {\n  var _el$_onScroll;\n\n  if (!((_el$_onScroll = el._onScroll) != null && _el$_onScroll[vnode.context._uid])) return;\n  const {\n    handler,\n    options,\n    target = el\n  } = el._onScroll[vnode.context._uid];\n  target.removeEventListener('scroll', handler, options);\n  delete el._onScroll[vnode.context._uid];\n}\n\nexport const Scroll = {\n  inserted,\n  unbind\n};\nexport default Scroll;\n//# sourceMappingURL=index.js.map","var baseProperty = require('./_baseProperty'),\n    basePropertyDeep = require('./_basePropertyDeep'),\n    isKey = require('./_isKey'),\n    toKey = require('./_toKey');\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n *   { 'a': { 'b': 2 } },\n *   { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n  return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = property;\n","var baseCreate = require('./_baseCreate'),\n    getPrototype = require('./_getPrototype'),\n    isPrototype = require('./_isPrototype');\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n  return (typeof object.constructor == 'function' && !isPrototype(object))\n    ? baseCreate(getPrototype(object))\n    : {};\n}\n\nmodule.exports = initCloneObject;\n","module.exports = require('./_shared')('native-function-to-string', Function.toString);\n","'use strict';\n// B.2.3.4 String.prototype.blink()\nrequire('./_string-html')('blink', function (createHTML) {\n  return function blink() {\n    return createHTML(this, 'blink', '', '');\n  };\n});\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n  ? R.apply\n  : function ReflectApply(target, receiver, args) {\n    return Function.prototype.apply.call(target, receiver, args);\n  }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n  ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n  ReflectOwnKeys = function ReflectOwnKeys(target) {\n    return Object.getOwnPropertyNames(target)\n      .concat(Object.getOwnPropertySymbols(target));\n  };\n} else {\n  ReflectOwnKeys = function ReflectOwnKeys(target) {\n    return Object.getOwnPropertyNames(target);\n  };\n}\n\nfunction ProcessEmitWarning(warning) {\n  if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n  return value !== value;\n}\n\nfunction EventEmitter() {\n  EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n  if (typeof listener !== 'function') {\n    throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n  }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n  enumerable: true,\n  get: function() {\n    return defaultMaxListeners;\n  },\n  set: function(arg) {\n    if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n      throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n    }\n    defaultMaxListeners = arg;\n  }\n});\n\nEventEmitter.init = function() {\n\n  if (this._events === undefined ||\n      this._events === Object.getPrototypeOf(this)._events) {\n    this._events = Object.create(null);\n    this._eventsCount = 0;\n  }\n\n  this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n  if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n    throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n  }\n  this._maxListeners = n;\n  return this;\n};\n\nfunction _getMaxListeners(that) {\n  if (that._maxListeners === undefined)\n    return EventEmitter.defaultMaxListeners;\n  return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n  return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n  var args = [];\n  for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n  var doError = (type === 'error');\n\n  var events = this._events;\n  if (events !== undefined)\n    doError = (doError && events.error === undefined);\n  else if (!doError)\n    return false;\n\n  // If there is no 'error' event listener then throw.\n  if (doError) {\n    var er;\n    if (args.length > 0)\n      er = args[0];\n    if (er instanceof Error) {\n      // Note: The comments on the `throw` lines are intentional, they show\n      // up in Node's output if this results in an unhandled exception.\n      throw er; // Unhandled 'error' event\n    }\n    // At least give some kind of context to the user\n    var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n    err.context = er;\n    throw err; // Unhandled 'error' event\n  }\n\n  var handler = events[type];\n\n  if (handler === undefined)\n    return false;\n\n  if (typeof handler === 'function') {\n    ReflectApply(handler, this, args);\n  } else {\n    var len = handler.length;\n    var listeners = arrayClone(handler, len);\n    for (var i = 0; i < len; ++i)\n      ReflectApply(listeners[i], this, args);\n  }\n\n  return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n  var m;\n  var events;\n  var existing;\n\n  checkListener(listener);\n\n  events = target._events;\n  if (events === undefined) {\n    events = target._events = Object.create(null);\n    target._eventsCount = 0;\n  } else {\n    // To avoid recursion in the case that type === \"newListener\"! Before\n    // adding it to the listeners, first emit \"newListener\".\n    if (events.newListener !== undefined) {\n      target.emit('newListener', type,\n                  listener.listener ? listener.listener : listener);\n\n      // Re-assign `events` because a newListener handler could have caused the\n      // this._events to be assigned to a new object\n      events = target._events;\n    }\n    existing = events[type];\n  }\n\n  if (existing === undefined) {\n    // Optimize the case of one listener. Don't need the extra array object.\n    existing = events[type] = listener;\n    ++target._eventsCount;\n  } else {\n    if (typeof existing === 'function') {\n      // Adding the second element, need to change to array.\n      existing = events[type] =\n        prepend ? [listener, existing] : [existing, listener];\n      // If we've already got an array, just append.\n    } else if (prepend) {\n      existing.unshift(listener);\n    } else {\n      existing.push(listener);\n    }\n\n    // Check for listener leak\n    m = _getMaxListeners(target);\n    if (m > 0 && existing.length > m && !existing.warned) {\n      existing.warned = true;\n      // No error code for this since it is a Warning\n      // eslint-disable-next-line no-restricted-syntax\n      var w = new Error('Possible EventEmitter memory leak detected. ' +\n                          existing.length + ' ' + String(type) + ' listeners ' +\n                          'added. Use emitter.setMaxListeners() to ' +\n                          'increase limit');\n      w.name = 'MaxListenersExceededWarning';\n      w.emitter = target;\n      w.type = type;\n      w.count = existing.length;\n      ProcessEmitWarning(w);\n    }\n  }\n\n  return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n  return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n    function prependListener(type, listener) {\n      return _addListener(this, type, listener, true);\n    };\n\nfunction onceWrapper() {\n  if (!this.fired) {\n    this.target.removeListener(this.type, this.wrapFn);\n    this.fired = true;\n    if (arguments.length === 0)\n      return this.listener.call(this.target);\n    return this.listener.apply(this.target, arguments);\n  }\n}\n\nfunction _onceWrap(target, type, listener) {\n  var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n  var wrapped = onceWrapper.bind(state);\n  wrapped.listener = listener;\n  state.wrapFn = wrapped;\n  return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n  checkListener(listener);\n  this.on(type, _onceWrap(this, type, listener));\n  return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n    function prependOnceListener(type, listener) {\n      checkListener(listener);\n      this.prependListener(type, _onceWrap(this, type, listener));\n      return this;\n    };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n    function removeListener(type, listener) {\n      var list, events, position, i, originalListener;\n\n      checkListener(listener);\n\n      events = this._events;\n      if (events === undefined)\n        return this;\n\n      list = events[type];\n      if (list === undefined)\n        return this;\n\n      if (list === listener || list.listener === listener) {\n        if (--this._eventsCount === 0)\n          this._events = Object.create(null);\n        else {\n          delete events[type];\n          if (events.removeListener)\n            this.emit('removeListener', type, list.listener || listener);\n        }\n      } else if (typeof list !== 'function') {\n        position = -1;\n\n        for (i = list.length - 1; i >= 0; i--) {\n          if (list[i] === listener || list[i].listener === listener) {\n            originalListener = list[i].listener;\n            position = i;\n            break;\n          }\n        }\n\n        if (position < 0)\n          return this;\n\n        if (position === 0)\n          list.shift();\n        else {\n          spliceOne(list, position);\n        }\n\n        if (list.length === 1)\n          events[type] = list[0];\n\n        if (events.removeListener !== undefined)\n          this.emit('removeListener', type, originalListener || listener);\n      }\n\n      return this;\n    };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n    function removeAllListeners(type) {\n      var listeners, events, i;\n\n      events = this._events;\n      if (events === undefined)\n        return this;\n\n      // not listening for removeListener, no need to emit\n      if (events.removeListener === undefined) {\n        if (arguments.length === 0) {\n          this._events = Object.create(null);\n          this._eventsCount = 0;\n        } else if (events[type] !== undefined) {\n          if (--this._eventsCount === 0)\n            this._events = Object.create(null);\n          else\n            delete events[type];\n        }\n        return this;\n      }\n\n      // emit removeListener for all listeners on all events\n      if (arguments.length === 0) {\n        var keys = Object.keys(events);\n        var key;\n        for (i = 0; i < keys.length; ++i) {\n          key = keys[i];\n          if (key === 'removeListener') continue;\n          this.removeAllListeners(key);\n        }\n        this.removeAllListeners('removeListener');\n        this._events = Object.create(null);\n        this._eventsCount = 0;\n        return this;\n      }\n\n      listeners = events[type];\n\n      if (typeof listeners === 'function') {\n        this.removeListener(type, listeners);\n      } else if (listeners !== undefined) {\n        // LIFO order\n        for (i = listeners.length - 1; i >= 0; i--) {\n          this.removeListener(type, listeners[i]);\n        }\n      }\n\n      return this;\n    };\n\nfunction _listeners(target, type, unwrap) {\n  var events = target._events;\n\n  if (events === undefined)\n    return [];\n\n  var evlistener = events[type];\n  if (evlistener === undefined)\n    return [];\n\n  if (typeof evlistener === 'function')\n    return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n  return unwrap ?\n    unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n  return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n  return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n  if (typeof emitter.listenerCount === 'function') {\n    return emitter.listenerCount(type);\n  } else {\n    return listenerCount.call(emitter, type);\n  }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n  var events = this._events;\n\n  if (events !== undefined) {\n    var evlistener = events[type];\n\n    if (typeof evlistener === 'function') {\n      return 1;\n    } else if (evlistener !== undefined) {\n      return evlistener.length;\n    }\n  }\n\n  return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n  return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n  var copy = new Array(n);\n  for (var i = 0; i < n; ++i)\n    copy[i] = arr[i];\n  return copy;\n}\n\nfunction spliceOne(list, index) {\n  for (; index + 1 < list.length; index++)\n    list[index] = list[index + 1];\n  list.pop();\n}\n\nfunction unwrapListeners(arr) {\n  var ret = new Array(arr.length);\n  for (var i = 0; i < ret.length; ++i) {\n    ret[i] = arr[i].listener || arr[i];\n  }\n  return ret;\n}\n\nfunction once(emitter, name) {\n  return new Promise(function (resolve, reject) {\n    function errorListener(err) {\n      emitter.removeListener(name, resolver);\n      reject(err);\n    }\n\n    function resolver() {\n      if (typeof emitter.removeListener === 'function') {\n        emitter.removeListener('error', errorListener);\n      }\n      resolve([].slice.call(arguments));\n    };\n\n    eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n    if (name !== 'error') {\n      addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n    }\n  });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n  if (typeof emitter.on === 'function') {\n    eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n  }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n  if (typeof emitter.on === 'function') {\n    if (flags.once) {\n      emitter.once(name, listener);\n    } else {\n      emitter.on(name, listener);\n    }\n  } else if (typeof emitter.addEventListener === 'function') {\n    // EventTarget does not have `error` event semantics like Node\n    // EventEmitters, we do not listen for `error` events here.\n    emitter.addEventListener(name, function wrapListener(arg) {\n      // IE does not have builtin `{ once: true }` support so we\n      // have to do it manually.\n      if (flags.once) {\n        emitter.removeEventListener(name, wrapListener);\n      }\n      listener(arg);\n    });\n  } else {\n    throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n  }\n}\n","var document = require('./_global').document;\nmodule.exports = document && document.documentElement;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n  return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","// 20.1.2.2 Number.isFinite(number)\nvar $export = require('./_export');\nvar _isFinite = require('./_global').isFinite;\n\n$export($export.S, 'Number', {\n  isFinite: function isFinite(it) {\n    return typeof it == 'number' && _isFinite(it);\n  }\n});\n","// Components\nimport VInput from '../../components/VInput'; // Mixins\n\nimport Rippleable from '../rippleable';\nimport Comparable from '../comparable'; // Utilities\n\nimport mixins from '../../util/mixins';\nexport function prevent(e) {\n  e.preventDefault();\n}\n/* @vue/component */\n\nexport default mixins(VInput, Rippleable, Comparable).extend({\n  name: 'selectable',\n  model: {\n    prop: 'inputValue',\n    event: 'change'\n  },\n  props: {\n    id: String,\n    inputValue: null,\n    falseValue: null,\n    trueValue: null,\n    multiple: {\n      type: Boolean,\n      default: null\n    },\n    label: String\n  },\n\n  data() {\n    return {\n      hasColor: this.inputValue,\n      lazyValue: this.inputValue\n    };\n  },\n\n  computed: {\n    computedColor() {\n      if (!this.isActive) return undefined;\n      if (this.color) return this.color;\n      if (this.isDark && !this.appIsDark) return 'white';\n      return 'primary';\n    },\n\n    isMultiple() {\n      return this.multiple === true || this.multiple === null && Array.isArray(this.internalValue);\n    },\n\n    isActive() {\n      const value = this.value;\n      const input = this.internalValue;\n\n      if (this.isMultiple) {\n        if (!Array.isArray(input)) return false;\n        return input.some(item => this.valueComparator(item, value));\n      }\n\n      if (this.trueValue === undefined || this.falseValue === undefined) {\n        return value ? this.valueComparator(value, input) : Boolean(input);\n      }\n\n      return this.valueComparator(input, this.trueValue);\n    },\n\n    isDirty() {\n      return this.isActive;\n    },\n\n    rippleState() {\n      return !this.isDisabled && !this.validationState ? undefined : this.validationState;\n    }\n\n  },\n  watch: {\n    inputValue(val) {\n      this.lazyValue = val;\n      this.hasColor = val;\n    }\n\n  },\n  methods: {\n    genLabel() {\n      const label = VInput.options.methods.genLabel.call(this);\n      if (!label) return label;\n      label.data.on = {\n        // Label shouldn't cause the input to focus\n        click: prevent\n      };\n      return label;\n    },\n\n    genInput(type, attrs) {\n      return this.$createElement('input', {\n        attrs: Object.assign({\n          'aria-checked': this.isActive.toString(),\n          disabled: this.isDisabled,\n          id: this.computedId,\n          role: type,\n          type\n        }, attrs),\n        domProps: {\n          value: this.value,\n          checked: this.isActive\n        },\n        on: {\n          blur: this.onBlur,\n          change: this.onChange,\n          focus: this.onFocus,\n          keydown: this.onKeydown,\n          click: prevent\n        },\n        ref: 'input'\n      });\n    },\n\n    onBlur() {\n      this.isFocused = false;\n    },\n\n    onClick(e) {\n      this.onChange();\n      this.$emit('click', e);\n    },\n\n    onChange() {\n      if (!this.isInteractive) return;\n      const value = this.value;\n      let input = this.internalValue;\n\n      if (this.isMultiple) {\n        if (!Array.isArray(input)) {\n          input = [];\n        }\n\n        const length = input.length;\n        input = input.filter(item => !this.valueComparator(item, value));\n\n        if (input.length === length) {\n          input.push(value);\n        }\n      } else if (this.trueValue !== undefined && this.falseValue !== undefined) {\n        input = this.valueComparator(input, this.trueValue) ? this.falseValue : this.trueValue;\n      } else if (value) {\n        input = this.valueComparator(input, value) ? null : value;\n      } else {\n        input = !input;\n      }\n\n      this.validate(true, input);\n      this.internalValue = input;\n      this.hasColor = input;\n    },\n\n    onFocus() {\n      this.isFocused = true;\n    },\n\n    /** @abstract */\n    onKeydown(e) {}\n\n  }\n});\n//# sourceMappingURL=index.js.map","// Styles\nimport \"../../../src/components/VSlideGroup/VSlideGroup.sass\"; // Components\n\nimport VIcon from '../VIcon';\nimport { VFadeTransition } from '../transitions'; // Extensions\n\nimport { BaseItemGroup } from '../VItemGroup/VItemGroup'; // Mixins\n\nimport Mobile from '../../mixins/mobile'; // Directives\n\nimport Resize from '../../directives/resize';\nimport Touch from '../../directives/touch'; // Utilities\n\nimport mixins from '../../util/mixins';\nimport { composedPath } from '../../util/helpers';\n\nfunction bias(val) {\n  const c = 0.501;\n  const x = Math.abs(val);\n  return Math.sign(val) * (x / ((1 / c - 2) * (1 - x) + 1));\n}\n\nexport function calculateUpdatedOffset(selectedElement, widths, rtl, currentScrollOffset) {\n  const clientWidth = selectedElement.clientWidth;\n  const offsetLeft = rtl ? widths.content - selectedElement.offsetLeft - clientWidth : selectedElement.offsetLeft;\n\n  if (rtl) {\n    currentScrollOffset = -currentScrollOffset;\n  }\n\n  const totalWidth = widths.wrapper + currentScrollOffset;\n  const itemOffset = clientWidth + offsetLeft;\n  const additionalOffset = clientWidth * 0.4;\n\n  if (offsetLeft <= currentScrollOffset) {\n    currentScrollOffset = Math.max(offsetLeft - additionalOffset, 0);\n  } else if (totalWidth <= itemOffset) {\n    currentScrollOffset = Math.min(currentScrollOffset - (totalWidth - itemOffset - additionalOffset), widths.content - widths.wrapper);\n  }\n\n  return rtl ? -currentScrollOffset : currentScrollOffset;\n}\nexport function calculateCenteredOffset(selectedElement, widths, rtl) {\n  const {\n    offsetLeft,\n    clientWidth\n  } = selectedElement;\n\n  if (rtl) {\n    const offsetCentered = widths.content - offsetLeft - clientWidth / 2 - widths.wrapper / 2;\n    return -Math.min(widths.content - widths.wrapper, Math.max(0, offsetCentered));\n  } else {\n    const offsetCentered = offsetLeft + clientWidth / 2 - widths.wrapper / 2;\n    return Math.min(widths.content - widths.wrapper, Math.max(0, offsetCentered));\n  }\n}\nexport const BaseSlideGroup = mixins(BaseItemGroup, Mobile).extend({\n  name: 'base-slide-group',\n  directives: {\n    Resize,\n    Touch\n  },\n  props: {\n    activeClass: {\n      type: String,\n      default: 'v-slide-item--active'\n    },\n    centerActive: Boolean,\n    nextIcon: {\n      type: String,\n      default: '$next'\n    },\n    prevIcon: {\n      type: String,\n      default: '$prev'\n    },\n    showArrows: {\n      type: [Boolean, String],\n      validator: v => typeof v === 'boolean' || ['always', 'desktop', 'mobile'].includes(v)\n    }\n  },\n  data: () => ({\n    internalItemsLength: 0,\n    isOverflowing: false,\n    resizeTimeout: 0,\n    startX: 0,\n    isSwipingHorizontal: false,\n    isSwiping: false,\n    scrollOffset: 0,\n    widths: {\n      content: 0,\n      wrapper: 0\n    }\n  }),\n  computed: {\n    canTouch() {\n      return typeof window !== 'undefined';\n    },\n\n    __cachedNext() {\n      return this.genTransition('next');\n    },\n\n    __cachedPrev() {\n      return this.genTransition('prev');\n    },\n\n    classes() {\n      return { ...BaseItemGroup.options.computed.classes.call(this),\n        'v-slide-group': true,\n        'v-slide-group--has-affixes': this.hasAffixes,\n        'v-slide-group--is-overflowing': this.isOverflowing\n      };\n    },\n\n    hasAffixes() {\n      switch (this.showArrows) {\n        // Always show arrows on desktop & mobile\n        case 'always':\n          return true;\n        // Always show arrows on desktop\n\n        case 'desktop':\n          return !this.isMobile;\n        // Show arrows on mobile when overflowing.\n        // This matches the default 2.2 behavior\n\n        case true:\n          return this.isOverflowing || Math.abs(this.scrollOffset) > 0;\n        // Always show on mobile\n\n        case 'mobile':\n          return this.isMobile || this.isOverflowing || Math.abs(this.scrollOffset) > 0;\n        // https://material.io/components/tabs#scrollable-tabs\n        // Always show arrows when\n        // overflowed on desktop\n\n        default:\n          return !this.isMobile && (this.isOverflowing || Math.abs(this.scrollOffset) > 0);\n      }\n    },\n\n    hasNext() {\n      if (!this.hasAffixes) return false;\n      const {\n        content,\n        wrapper\n      } = this.widths; // Check one scroll ahead to know the width of right-most item\n\n      return content > Math.abs(this.scrollOffset) + wrapper;\n    },\n\n    hasPrev() {\n      return this.hasAffixes && this.scrollOffset !== 0;\n    }\n\n  },\n  watch: {\n    internalValue: 'setWidths',\n    // When overflow changes, the arrows alter\n    // the widths of the content and wrapper\n    // and need to be recalculated\n    isOverflowing: 'setWidths',\n\n    scrollOffset(val) {\n      const scroll = val <= 0 ? bias(-val) : val > this.widths.content - this.widths.wrapper ? -(this.widths.content - this.widths.wrapper) + bias(this.widths.content - this.widths.wrapper - val) : -val;\n      this.$refs.content.style.transform = `translateX(${scroll}px)`;\n    }\n\n  },\n\n  beforeUpdate() {\n    this.internalItemsLength = (this.$children || []).length;\n  },\n\n  updated() {\n    if (this.internalItemsLength === (this.$children || []).length) return;\n    this.setWidths();\n  },\n\n  methods: {\n    onScroll() {\n      this.$refs.wrapper.scrollLeft = 0;\n    },\n\n    onFocusin(e) {\n      if (!this.isOverflowing) return; // Focused element is likely to be the root of an item, so a\n      // breadth-first search will probably find it in the first iteration\n\n      for (const el of composedPath(e)) {\n        for (const vm of this.items) {\n          if (vm.$el === el) {\n            this.scrollOffset = calculateUpdatedOffset(vm.$el, this.widths, this.$vuetify.rtl, this.scrollOffset);\n            return;\n          }\n        }\n      }\n    },\n\n    // Always generate next for scrollable hint\n    genNext() {\n      const slot = this.$scopedSlots.next ? this.$scopedSlots.next({}) : this.$slots.next || this.__cachedNext;\n      return this.$createElement('div', {\n        staticClass: 'v-slide-group__next',\n        class: {\n          'v-slide-group__next--disabled': !this.hasNext\n        },\n        on: {\n          click: () => this.onAffixClick('next')\n        },\n        key: 'next'\n      }, [slot]);\n    },\n\n    genContent() {\n      return this.$createElement('div', {\n        staticClass: 'v-slide-group__content',\n        ref: 'content',\n        on: {\n          focusin: this.onFocusin\n        }\n      }, this.$slots.default);\n    },\n\n    genData() {\n      return {\n        class: this.classes,\n        directives: [{\n          name: 'resize',\n          value: this.onResize\n        }]\n      };\n    },\n\n    genIcon(location) {\n      let icon = location;\n\n      if (this.$vuetify.rtl && location === 'prev') {\n        icon = 'next';\n      } else if (this.$vuetify.rtl && location === 'next') {\n        icon = 'prev';\n      }\n\n      const upperLocation = `${location[0].toUpperCase()}${location.slice(1)}`;\n      const hasAffix = this[`has${upperLocation}`];\n      if (!this.showArrows && !hasAffix) return null;\n      return this.$createElement(VIcon, {\n        props: {\n          disabled: !hasAffix\n        }\n      }, this[`${icon}Icon`]);\n    },\n\n    // Always generate prev for scrollable hint\n    genPrev() {\n      const slot = this.$scopedSlots.prev ? this.$scopedSlots.prev({}) : this.$slots.prev || this.__cachedPrev;\n      return this.$createElement('div', {\n        staticClass: 'v-slide-group__prev',\n        class: {\n          'v-slide-group__prev--disabled': !this.hasPrev\n        },\n        on: {\n          click: () => this.onAffixClick('prev')\n        },\n        key: 'prev'\n      }, [slot]);\n    },\n\n    genTransition(location) {\n      return this.$createElement(VFadeTransition, [this.genIcon(location)]);\n    },\n\n    genWrapper() {\n      return this.$createElement('div', {\n        staticClass: 'v-slide-group__wrapper',\n        directives: [{\n          name: 'touch',\n          value: {\n            start: e => this.overflowCheck(e, this.onTouchStart),\n            move: e => this.overflowCheck(e, this.onTouchMove),\n            end: e => this.overflowCheck(e, this.onTouchEnd)\n          }\n        }],\n        ref: 'wrapper',\n        on: {\n          scroll: this.onScroll\n        }\n      }, [this.genContent()]);\n    },\n\n    calculateNewOffset(direction, widths, rtl, currentScrollOffset) {\n      const sign = rtl ? -1 : 1;\n      const newAbosluteOffset = sign * currentScrollOffset + (direction === 'prev' ? -1 : 1) * widths.wrapper;\n      return sign * Math.max(Math.min(newAbosluteOffset, widths.content - widths.wrapper), 0);\n    },\n\n    onAffixClick(location) {\n      this.$emit(`click:${location}`);\n      this.scrollTo(location);\n    },\n\n    onResize() {\n      /* istanbul ignore next */\n      if (this._isDestroyed) return;\n      this.setWidths();\n    },\n\n    onTouchStart(e) {\n      const {\n        content\n      } = this.$refs;\n      this.startX = this.scrollOffset + e.touchstartX;\n      content.style.setProperty('transition', 'none');\n      content.style.setProperty('willChange', 'transform');\n    },\n\n    onTouchMove(e) {\n      if (!this.canTouch) return;\n\n      if (!this.isSwiping) {\n        // only calculate disableSwipeHorizontal during the first onTouchMove invoke\n        // in order to ensure disableSwipeHorizontal value is consistent between onTouchStart and onTouchEnd\n        const diffX = e.touchmoveX - e.touchstartX;\n        const diffY = e.touchmoveY - e.touchstartY;\n        this.isSwipingHorizontal = Math.abs(diffX) > Math.abs(diffY);\n        this.isSwiping = true;\n      }\n\n      if (this.isSwipingHorizontal) {\n        // sliding horizontally\n        this.scrollOffset = this.startX - e.touchmoveX; // temporarily disable window vertical scrolling\n\n        document.documentElement.style.overflowY = 'hidden';\n      }\n    },\n\n    onTouchEnd() {\n      if (!this.canTouch) return;\n      const {\n        content,\n        wrapper\n      } = this.$refs;\n      const maxScrollOffset = content.clientWidth - wrapper.clientWidth;\n      content.style.setProperty('transition', null);\n      content.style.setProperty('willChange', null);\n\n      if (this.$vuetify.rtl) {\n        /* istanbul ignore else */\n        if (this.scrollOffset > 0 || !this.isOverflowing) {\n          this.scrollOffset = 0;\n        } else if (this.scrollOffset <= -maxScrollOffset) {\n          this.scrollOffset = -maxScrollOffset;\n        }\n      } else {\n        /* istanbul ignore else */\n        if (this.scrollOffset < 0 || !this.isOverflowing) {\n          this.scrollOffset = 0;\n        } else if (this.scrollOffset >= maxScrollOffset) {\n          this.scrollOffset = maxScrollOffset;\n        }\n      }\n\n      this.isSwiping = false; // rollback whole page scrolling to default\n\n      document.documentElement.style.removeProperty('overflow-y');\n    },\n\n    overflowCheck(e, fn) {\n      e.stopPropagation();\n      this.isOverflowing && fn(e);\n    },\n\n    scrollIntoView\n    /* istanbul ignore next */\n    () {\n      if (!this.selectedItem && this.items.length) {\n        const lastItemPosition = this.items[this.items.length - 1].$el.getBoundingClientRect();\n        const wrapperPosition = this.$refs.wrapper.getBoundingClientRect();\n\n        if (this.$vuetify.rtl && wrapperPosition.right < lastItemPosition.right || !this.$vuetify.rtl && wrapperPosition.left > lastItemPosition.left) {\n          this.scrollTo('prev');\n        }\n      }\n\n      if (!this.selectedItem) {\n        return;\n      }\n\n      if (this.selectedIndex === 0 || !this.centerActive && !this.isOverflowing) {\n        this.scrollOffset = 0;\n      } else if (this.centerActive) {\n        this.scrollOffset = calculateCenteredOffset(this.selectedItem.$el, this.widths, this.$vuetify.rtl);\n      } else if (this.isOverflowing) {\n        this.scrollOffset = calculateUpdatedOffset(this.selectedItem.$el, this.widths, this.$vuetify.rtl, this.scrollOffset);\n      }\n    },\n\n    scrollTo\n    /* istanbul ignore next */\n    (location) {\n      this.scrollOffset = this.calculateNewOffset(location, {\n        // Force reflow\n        content: this.$refs.content ? this.$refs.content.clientWidth : 0,\n        wrapper: this.$refs.wrapper ? this.$refs.wrapper.clientWidth : 0\n      }, this.$vuetify.rtl, this.scrollOffset);\n    },\n\n    setWidths\n    /* istanbul ignore next */\n    () {\n      window.requestAnimationFrame(() => {\n        const {\n          content,\n          wrapper\n        } = this.$refs;\n        this.widths = {\n          content: content ? content.clientWidth : 0,\n          wrapper: wrapper ? wrapper.clientWidth : 0\n        }; // https://github.com/vuetifyjs/vuetify/issues/13212\n        // We add +1 to the wrappers width to prevent an issue where the `clientWidth`\n        // gets calculated wrongly by the browser if using a different zoom-level.\n\n        this.isOverflowing = this.widths.wrapper + 1 < this.widths.content;\n        this.scrollIntoView();\n      });\n    }\n\n  },\n\n  render(h) {\n    return h('div', this.genData(), [this.genPrev(), this.genWrapper(), this.genNext()]);\n  }\n\n});\nexport default BaseSlideGroup.extend({\n  name: 'v-slide-group',\n\n  provide() {\n    return {\n      slideGroup: this\n    };\n  }\n\n});\n//# sourceMappingURL=VSlideGroup.js.map","// Extensions\nimport { BaseSlideGroup } from '../VSlideGroup/VSlideGroup'; // Mixins\n\nimport Themeable from '../../mixins/themeable';\nimport SSRBootable from '../../mixins/ssr-bootable'; // Utilities\n\nimport mixins from '../../util/mixins';\nexport default mixins(BaseSlideGroup, SSRBootable, Themeable\n/* @vue/component */\n).extend({\n  name: 'v-tabs-bar',\n\n  provide() {\n    return {\n      tabsBar: this\n    };\n  },\n\n  computed: {\n    classes() {\n      return { ...BaseSlideGroup.options.computed.classes.call(this),\n        'v-tabs-bar': true,\n        'v-tabs-bar--is-mobile': this.isMobile,\n        // TODO: Remove this and move to v-slide-group\n        'v-tabs-bar--show-arrows': this.showArrows,\n        ...this.themeClasses\n      };\n    }\n\n  },\n  watch: {\n    items: 'callSlider',\n    internalValue: 'callSlider',\n    $route: 'onRouteChange'\n  },\n  methods: {\n    callSlider() {\n      if (!this.isBooted) return;\n      this.$emit('call:slider');\n    },\n\n    genContent() {\n      const render = BaseSlideGroup.options.methods.genContent.call(this);\n      render.data = render.data || {};\n      render.data.staticClass += ' v-tabs-bar__content';\n      return render;\n    },\n\n    onRouteChange(val, oldVal) {\n      /* istanbul ignore next */\n      if (this.mandatory) return;\n      const items = this.items;\n      const newPath = val.path;\n      const oldPath = oldVal.path;\n      let hasNew = false;\n      let hasOld = false;\n\n      for (const item of items) {\n        if (item.to === oldPath) hasOld = true;else if (item.to === newPath) hasNew = true;\n        if (hasNew && hasOld) break;\n      } // If we have an old item and not a new one\n      // it's assumed that the user navigated to\n      // a path that is not present in the items\n\n\n      if (!hasNew && hasOld) this.internalValue = undefined;\n    }\n\n  },\n\n  render(h) {\n    const render = BaseSlideGroup.options.render.call(this, h);\n    render.data.attrs = {\n      role: 'tablist'\n    };\n    return render;\n  }\n\n});\n//# sourceMappingURL=VTabsBar.js.map","// Mixins\nimport Colorable from '../../mixins/colorable'; // Utilities\n\nimport mixins from '../../util/mixins';\n/* @vue/component */\n\nexport default mixins(Colorable).extend({\n  name: 'v-tabs-slider',\n\n  render(h) {\n    return h('div', this.setBackgroundColor(this.color, {\n      staticClass: 'v-tabs-slider'\n    }));\n  }\n\n});\n//# sourceMappingURL=VTabsSlider.js.map","// Styles\nimport \"../../../src/components/VTabs/VTabs.sass\"; // Components\n\nimport VTabsBar from './VTabsBar';\nimport VTabsItems from './VTabsItems';\nimport VTabsSlider from './VTabsSlider'; // Mixins\n\nimport Colorable from '../../mixins/colorable';\nimport Proxyable from '../../mixins/proxyable';\nimport Themeable from '../../mixins/themeable'; // Directives\n\nimport Resize from '../../directives/resize'; // Utilities\n\nimport { convertToUnit } from '../../util/helpers';\nimport mixins from '../../util/mixins';\nconst baseMixins = mixins(Colorable, Proxyable, Themeable);\nexport default baseMixins.extend().extend({\n  name: 'v-tabs',\n  directives: {\n    Resize\n  },\n  props: {\n    activeClass: {\n      type: String,\n      default: ''\n    },\n    alignWithTitle: Boolean,\n    backgroundColor: String,\n    centerActive: Boolean,\n    centered: Boolean,\n    fixedTabs: Boolean,\n    grow: Boolean,\n    height: {\n      type: [Number, String],\n      default: undefined\n    },\n    hideSlider: Boolean,\n    iconsAndText: Boolean,\n    mobileBreakpoint: [String, Number],\n    nextIcon: {\n      type: String,\n      default: '$next'\n    },\n    optional: Boolean,\n    prevIcon: {\n      type: String,\n      default: '$prev'\n    },\n    right: Boolean,\n    showArrows: [Boolean, String],\n    sliderColor: String,\n    sliderSize: {\n      type: [Number, String],\n      default: 2\n    },\n    vertical: Boolean\n  },\n\n  data() {\n    return {\n      resizeTimeout: 0,\n      slider: {\n        height: null,\n        left: null,\n        right: null,\n        top: null,\n        width: null\n      },\n      transitionTime: 300\n    };\n  },\n\n  computed: {\n    classes() {\n      return {\n        'v-tabs--align-with-title': this.alignWithTitle,\n        'v-tabs--centered': this.centered,\n        'v-tabs--fixed-tabs': this.fixedTabs,\n        'v-tabs--grow': this.grow,\n        'v-tabs--icons-and-text': this.iconsAndText,\n        'v-tabs--right': this.right,\n        'v-tabs--vertical': this.vertical,\n        ...this.themeClasses\n      };\n    },\n\n    isReversed() {\n      return this.$vuetify.rtl && this.vertical;\n    },\n\n    sliderStyles() {\n      return {\n        height: convertToUnit(this.slider.height),\n        left: this.isReversed ? undefined : convertToUnit(this.slider.left),\n        right: this.isReversed ? convertToUnit(this.slider.right) : undefined,\n        top: this.vertical ? convertToUnit(this.slider.top) : undefined,\n        transition: this.slider.left != null ? null : 'none',\n        width: convertToUnit(this.slider.width)\n      };\n    },\n\n    computedColor() {\n      if (this.color) return this.color;else if (this.isDark && !this.appIsDark) return 'white';else return 'primary';\n    }\n\n  },\n  watch: {\n    alignWithTitle: 'callSlider',\n    centered: 'callSlider',\n    centerActive: 'callSlider',\n    fixedTabs: 'callSlider',\n    grow: 'callSlider',\n    iconsAndText: 'callSlider',\n    right: 'callSlider',\n    showArrows: 'callSlider',\n    vertical: 'callSlider',\n    '$vuetify.application.left': 'onResize',\n    '$vuetify.application.right': 'onResize',\n    '$vuetify.rtl': 'onResize'\n  },\n\n  mounted() {\n    this.$nextTick(() => {\n      window.setTimeout(this.callSlider, 30);\n    });\n  },\n\n  methods: {\n    callSlider() {\n      if (this.hideSlider || !this.$refs.items || !this.$refs.items.selectedItems.length) {\n        this.slider.width = 0;\n        return false;\n      }\n\n      this.$nextTick(() => {\n        // Give screen time to paint\n        const activeTab = this.$refs.items.selectedItems[0];\n        /* istanbul ignore if */\n\n        if (!activeTab || !activeTab.$el) {\n          this.slider.width = 0;\n          this.slider.left = 0;\n          return;\n        }\n\n        const el = activeTab.$el;\n        this.slider = {\n          height: !this.vertical ? Number(this.sliderSize) : el.scrollHeight,\n          left: this.vertical ? 0 : el.offsetLeft,\n          right: this.vertical ? 0 : el.offsetLeft + el.offsetWidth,\n          top: el.offsetTop,\n          width: this.vertical ? Number(this.sliderSize) : el.scrollWidth\n        };\n      });\n      return true;\n    },\n\n    genBar(items, slider) {\n      const data = {\n        style: {\n          height: convertToUnit(this.height)\n        },\n        props: {\n          activeClass: this.activeClass,\n          centerActive: this.centerActive,\n          dark: this.dark,\n          light: this.light,\n          mandatory: !this.optional,\n          mobileBreakpoint: this.mobileBreakpoint,\n          nextIcon: this.nextIcon,\n          prevIcon: this.prevIcon,\n          showArrows: this.showArrows,\n          value: this.internalValue\n        },\n        on: {\n          'call:slider': this.callSlider,\n          change: val => {\n            this.internalValue = val;\n          }\n        },\n        ref: 'items'\n      };\n      this.setTextColor(this.computedColor, data);\n      this.setBackgroundColor(this.backgroundColor, data);\n      return this.$createElement(VTabsBar, data, [this.genSlider(slider), items]);\n    },\n\n    genItems(items, item) {\n      // If user provides items\n      // opt to use theirs\n      if (items) return items; // If no tabs are provided\n      // render nothing\n\n      if (!item.length) return null;\n      return this.$createElement(VTabsItems, {\n        props: {\n          value: this.internalValue\n        },\n        on: {\n          change: val => {\n            this.internalValue = val;\n          }\n        }\n      }, item);\n    },\n\n    genSlider(slider) {\n      if (this.hideSlider) return null;\n\n      if (!slider) {\n        slider = this.$createElement(VTabsSlider, {\n          props: {\n            color: this.sliderColor\n          }\n        });\n      }\n\n      return this.$createElement('div', {\n        staticClass: 'v-tabs-slider-wrapper',\n        style: this.sliderStyles\n      }, [slider]);\n    },\n\n    onResize() {\n      if (this._isDestroyed) return;\n      clearTimeout(this.resizeTimeout);\n      this.resizeTimeout = window.setTimeout(this.callSlider, 0);\n    },\n\n    parseNodes() {\n      let items = null;\n      let slider = null;\n      const item = [];\n      const tab = [];\n      const slot = this.$slots.default || [];\n      const length = slot.length;\n\n      for (let i = 0; i < length; i++) {\n        const vnode = slot[i];\n\n        if (vnode.componentOptions) {\n          switch (vnode.componentOptions.Ctor.options.name) {\n            case 'v-tabs-slider':\n              slider = vnode;\n              break;\n\n            case 'v-tabs-items':\n              items = vnode;\n              break;\n\n            case 'v-tab-item':\n              item.push(vnode);\n              break;\n            // case 'v-tab' - intentionally omitted\n\n            default:\n              tab.push(vnode);\n          }\n        } else {\n          tab.push(vnode);\n        }\n      }\n      /**\n       * tab: array of `v-tab`\n       * slider: single `v-tabs-slider`\n       * items: single `v-tabs-items`\n       * item: array of `v-tab-item`\n       */\n\n\n      return {\n        tab,\n        slider,\n        items,\n        item\n      };\n    }\n\n  },\n\n  render(h) {\n    const {\n      tab,\n      slider,\n      items,\n      item\n    } = this.parseNodes();\n    return h('div', {\n      staticClass: 'v-tabs',\n      class: this.classes,\n      directives: [{\n        name: 'resize',\n        modifiers: {\n          quiet: true\n        },\n        value: this.onResize\n      }]\n    }, [this.genBar(tab, slider), this.genItems(items, item)]);\n  }\n\n});\n//# sourceMappingURL=VTabs.js.map","import Vue from 'vue';\nimport { filterObjectOnKeys } from '../../util/helpers';\nconst availableProps = {\n  absolute: Boolean,\n  bottom: Boolean,\n  fixed: Boolean,\n  left: Boolean,\n  right: Boolean,\n  top: Boolean\n};\nexport function factory(selected = []) {\n  return Vue.extend({\n    name: 'positionable',\n    props: selected.length ? filterObjectOnKeys(availableProps, selected) : availableProps\n  });\n}\nexport default factory(); // Add a `*` before the second `/`\n\n/* Tests /\nlet single = factory(['top']).extend({\n  created () {\n    this.top\n    this.bottom\n    this.absolute\n  }\n})\n\nlet some = factory(['top', 'bottom']).extend({\n  created () {\n    this.top\n    this.bottom\n    this.absolute\n  }\n})\n\nlet all = factory().extend({\n  created () {\n    this.top\n    this.bottom\n    this.absolute\n    this.foobar\n  }\n})\n/**/\n//# sourceMappingURL=index.js.map","'use strict';\nvar $export = require('./_export');\nvar toObject = require('./_to-object');\nvar aFunction = require('./_a-function');\nvar $defineProperty = require('./_object-dp');\n\n// B.2.2.3 Object.prototype.__defineSetter__(P, setter)\nrequire('./_descriptors') && $export($export.P + require('./_object-forced-pam'), 'Object', {\n  __defineSetter__: function __defineSetter__(P, setter) {\n    $defineProperty.f(toObject(this), P, { set: aFunction(setter), enumerable: true, configurable: true });\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","\"use strict\";\n// Sorting algorithm taken from NeDB (https://github.com/louischatriot/nedb)\n// See https://github.com/louischatriot/nedb/blob/e3f0078499aa1005a59d0c2372e425ab789145c1/lib/model.js#L189\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.sorter = exports.compare = exports.compareArrays = exports.compareNSB = void 0;\nfunction compareNSB(a, b) {\n    if (a < b) {\n        return -1;\n    }\n    if (a > b) {\n        return 1;\n    }\n    return 0;\n}\nexports.compareNSB = compareNSB;\nfunction compareArrays(a, b) {\n    let i;\n    let comp;\n    for (i = 0; i < Math.min(a.length, b.length); i += 1) {\n        comp = exports.compare(a[i], b[i]);\n        if (comp !== 0) {\n            return comp;\n        }\n    }\n    // Common section was identical, longest one wins\n    return exports.compareNSB(a.length, b.length);\n}\nexports.compareArrays = compareArrays;\nfunction compare(a, b, compareStrings = exports.compareNSB) {\n    const { compareNSB, compare, compareArrays } = exports;\n    // undefined\n    if (a === undefined) {\n        return b === undefined ? 0 : -1;\n    }\n    if (b === undefined) {\n        return a === undefined ? 0 : 1;\n    }\n    // null\n    if (a === null) {\n        return b === null ? 0 : -1;\n    }\n    if (b === null) {\n        return a === null ? 0 : 1;\n    }\n    // Numbers\n    if (typeof a === 'number') {\n        return typeof b === 'number' ? compareNSB(a, b) : -1;\n    }\n    if (typeof b === 'number') {\n        return typeof a === 'number' ? compareNSB(a, b) : 1;\n    }\n    // Strings\n    if (typeof a === 'string') {\n        return typeof b === 'string' ? compareStrings(a, b) : -1;\n    }\n    if (typeof b === 'string') {\n        return typeof a === 'string' ? compareStrings(a, b) : 1;\n    }\n    // Booleans\n    if (typeof a === 'boolean') {\n        return typeof b === 'boolean' ? compareNSB(a, b) : -1;\n    }\n    if (typeof b === 'boolean') {\n        return typeof a === 'boolean' ? compareNSB(a, b) : 1;\n    }\n    // Dates\n    if (a instanceof Date) {\n        return b instanceof Date ? compareNSB(a.getTime(), b.getTime()) : -1;\n    }\n    if (b instanceof Date) {\n        return a instanceof Date ? compareNSB(a.getTime(), b.getTime()) : 1;\n    }\n    // Arrays (first element is most significant and so on)\n    if (Array.isArray(a)) {\n        return Array.isArray(b) ? compareArrays(a, b) : -1;\n    }\n    if (Array.isArray(b)) {\n        return Array.isArray(a) ? compareArrays(a, b) : 1;\n    }\n    // Objects\n    const aKeys = Object.keys(a).sort();\n    const bKeys = Object.keys(b).sort();\n    let comp = 0;\n    for (let i = 0; i < Math.min(aKeys.length, bKeys.length); i += 1) {\n        comp = compare(a[aKeys[i]], b[bKeys[i]]);\n        if (comp !== 0) {\n            return comp;\n        }\n    }\n    return compareNSB(aKeys.length, bKeys.length);\n}\nexports.compare = compare;\n// An in-memory sorting function according to the\n// $sort special query parameter\nfunction sorter($sort) {\n    const criteria = Object.keys($sort).map(key => {\n        const direction = $sort[key];\n        return { key, direction };\n    });\n    return function (a, b) {\n        let compare;\n        for (const criterion of criteria) {\n            compare = criterion.direction * exports.compare(a[criterion.key], b[criterion.key]);\n            if (compare !== 0) {\n                return compare;\n            }\n        }\n        return 0;\n    };\n}\nexports.sorter = sorter;\n//# sourceMappingURL=sort.js.map","export class Service {\n  constructor() {\n    this.framework = {};\n  }\n\n  init(root, ssrContext) {}\n\n}\n//# sourceMappingURL=index.js.map"],"sourceRoot":""}