diff --git a/.angular/cache/20.2.2/app/.tsbuildinfo b/.angular/cache/20.2.2/app/.tsbuildinfo index d5e8ca6..c980d09 100644 --- a/.angular/cache/20.2.2/app/.tsbuildinfo +++ b/.angular/cache/20.2.2/app/.tsbuildinfo @@ -1 +1 @@ -{"fileNames":["../../../../node_modules/typescript/lib/lib.es5.d.ts","../../../../node_modules/typescript/lib/lib.es2015.d.ts","../../../../node_modules/typescript/lib/lib.es2016.d.ts","../../../../node_modules/typescript/lib/lib.es2017.d.ts","../../../../node_modules/typescript/lib/lib.es2018.d.ts","../../../../node_modules/typescript/lib/lib.es2019.d.ts","../../../../node_modules/typescript/lib/lib.es2020.d.ts","../../../../node_modules/typescript/lib/lib.es2021.d.ts","../../../../node_modules/typescript/lib/lib.es2022.d.ts","../../../../node_modules/typescript/lib/lib.dom.d.ts","../../../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../../node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../../../node_modules/typescript/lib/lib.es2017.date.d.ts","../../../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../../node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../../../node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../../node_modules/typescript/lib/lib.es2021.string.d.ts","../../../../node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../../node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2022.array.d.ts","../../../../node_modules/typescript/lib/lib.es2022.error.d.ts","../../../../node_modules/typescript/lib/lib.es2022.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2022.object.d.ts","../../../../node_modules/typescript/lib/lib.es2022.string.d.ts","../../../../node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../../../node_modules/typescript/lib/lib.decorators.d.ts","../../../../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../../../node_modules/tslib/tslib.d.ts","../../../../index.ngtypecheck.ts","../../../../node_modules/@angular/core/graph.d.d.ts","../../../../node_modules/@angular/core/event_dispatcher.d.d.ts","../../../../node_modules/@angular/core/chrome_dev_tools_performance.d.d.ts","../../../../node_modules/rxjs/dist/types/internal/subscription.d.ts","../../../../node_modules/rxjs/dist/types/internal/subscriber.d.ts","../../../../node_modules/rxjs/dist/types/internal/operator.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable.d.ts","../../../../node_modules/rxjs/dist/types/internal/types.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/audit.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/audittime.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/buffer.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/buffercount.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/buffertime.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/buffertoggle.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/bufferwhen.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/catcherror.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/combinelatestall.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/combineall.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/combinelatest.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/combinelatestwith.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/concat.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/concatall.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/concatmap.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/concatmapto.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/concatwith.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/connect.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/count.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/debounce.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/debouncetime.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/defaultifempty.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/delay.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/delaywhen.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/dematerialize.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/distinct.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/distinctuntilchanged.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/distinctuntilkeychanged.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/elementat.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/endwith.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/every.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/exhaustall.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/exhaust.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/exhaustmap.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/expand.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/filter.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/finalize.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/find.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/findindex.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/first.d.ts","../../../../node_modules/rxjs/dist/types/internal/subject.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/groupby.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/ignoreelements.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/isempty.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/last.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/map.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/mapto.d.ts","../../../../node_modules/rxjs/dist/types/internal/notification.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/materialize.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/max.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/merge.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/mergeall.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/mergemap.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/flatmap.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/mergemapto.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/mergescan.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/mergewith.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/min.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/connectableobservable.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/multicast.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/observeon.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/onerrorresumenextwith.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/pairwise.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/partition.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/pluck.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/publish.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/publishbehavior.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/publishlast.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/publishreplay.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/race.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/racewith.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/reduce.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/repeat.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/repeatwhen.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/retry.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/retrywhen.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/refcount.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/sample.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/sampletime.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/scan.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/sequenceequal.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/share.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/sharereplay.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/single.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/skip.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/skiplast.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/skipuntil.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/skipwhile.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/startwith.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/subscribeon.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/switchall.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/switchmap.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/switchmapto.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/switchscan.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/take.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/takelast.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/takeuntil.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/takewhile.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/tap.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/throttle.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/throttletime.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/throwifempty.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/timeinterval.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/timeout.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/timeoutwith.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/timestamp.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/toarray.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/window.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/windowcount.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/windowtime.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/windowtoggle.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/windowwhen.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/withlatestfrom.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/zip.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/zipall.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/zipwith.d.ts","../../../../node_modules/rxjs/dist/types/operators/index.d.ts","../../../../node_modules/rxjs/dist/types/internal/scheduler/action.d.ts","../../../../node_modules/rxjs/dist/types/internal/scheduler.d.ts","../../../../node_modules/rxjs/dist/types/internal/testing/testmessage.d.ts","../../../../node_modules/rxjs/dist/types/internal/testing/subscriptionlog.d.ts","../../../../node_modules/rxjs/dist/types/internal/testing/subscriptionloggable.d.ts","../../../../node_modules/rxjs/dist/types/internal/testing/coldobservable.d.ts","../../../../node_modules/rxjs/dist/types/internal/testing/hotobservable.d.ts","../../../../node_modules/rxjs/dist/types/internal/scheduler/asyncscheduler.d.ts","../../../../node_modules/rxjs/dist/types/internal/scheduler/timerhandle.d.ts","../../../../node_modules/rxjs/dist/types/internal/scheduler/asyncaction.d.ts","../../../../node_modules/rxjs/dist/types/internal/scheduler/virtualtimescheduler.d.ts","../../../../node_modules/rxjs/dist/types/internal/testing/testscheduler.d.ts","../../../../node_modules/rxjs/dist/types/testing/index.d.ts","../../../../node_modules/rxjs/dist/types/internal/symbol/observable.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/dom/animationframes.d.ts","../../../../node_modules/rxjs/dist/types/internal/behaviorsubject.d.ts","../../../../node_modules/rxjs/dist/types/internal/replaysubject.d.ts","../../../../node_modules/rxjs/dist/types/internal/asyncsubject.d.ts","../../../../node_modules/rxjs/dist/types/internal/scheduler/asapscheduler.d.ts","../../../../node_modules/rxjs/dist/types/internal/scheduler/asap.d.ts","../../../../node_modules/rxjs/dist/types/internal/scheduler/async.d.ts","../../../../node_modules/rxjs/dist/types/internal/scheduler/queuescheduler.d.ts","../../../../node_modules/rxjs/dist/types/internal/scheduler/queue.d.ts","../../../../node_modules/rxjs/dist/types/internal/scheduler/animationframescheduler.d.ts","../../../../node_modules/rxjs/dist/types/internal/scheduler/animationframe.d.ts","../../../../node_modules/rxjs/dist/types/internal/util/identity.d.ts","../../../../node_modules/rxjs/dist/types/internal/util/pipe.d.ts","../../../../node_modules/rxjs/dist/types/internal/util/noop.d.ts","../../../../node_modules/rxjs/dist/types/internal/util/isobservable.d.ts","../../../../node_modules/rxjs/dist/types/internal/lastvaluefrom.d.ts","../../../../node_modules/rxjs/dist/types/internal/firstvaluefrom.d.ts","../../../../node_modules/rxjs/dist/types/internal/util/argumentoutofrangeerror.d.ts","../../../../node_modules/rxjs/dist/types/internal/util/emptyerror.d.ts","../../../../node_modules/rxjs/dist/types/internal/util/notfounderror.d.ts","../../../../node_modules/rxjs/dist/types/internal/util/objectunsubscribederror.d.ts","../../../../node_modules/rxjs/dist/types/internal/util/sequenceerror.d.ts","../../../../node_modules/rxjs/dist/types/internal/util/unsubscriptionerror.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/bindcallback.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/bindnodecallback.d.ts","../../../../node_modules/rxjs/dist/types/internal/anycatcher.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/combinelatest.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/concat.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/connectable.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/defer.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/empty.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/forkjoin.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/from.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/fromevent.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/fromeventpattern.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/generate.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/iif.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/interval.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/merge.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/never.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/of.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/onerrorresumenext.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/pairs.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/partition.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/race.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/range.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/throwerror.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/timer.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/using.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/zip.d.ts","../../../../node_modules/rxjs/dist/types/internal/scheduled/scheduled.d.ts","../../../../node_modules/rxjs/dist/types/internal/config.d.ts","../../../../node_modules/rxjs/dist/types/index.d.ts","../../../../node_modules/@angular/core/effect.d.d.ts","../../../../node_modules/@angular/core/primitives/di/index.d.ts","../../../../node_modules/@angular/core/discovery.d.d.ts","../../../../node_modules/@angular/core/api.d.d.ts","../../../../node_modules/@angular/core/weak_ref.d.d.ts","../../../../node_modules/@angular/core/index.d.ts","../../../../node_modules/@angular/common/platform_location.d.d.ts","../../../../node_modules/@angular/common/common_module.d.d.ts","../../../../node_modules/@angular/common/xhr.d.d.ts","../../../../node_modules/@angular/common/index.d.ts","../../../../node_modules/@angular/platform-browser/browser.d.d.ts","../../../../node_modules/@angular/common/module.d.d.ts","../../../../node_modules/@angular/common/http/index.d.ts","../../../../node_modules/@angular/platform-browser/index.d.ts","../../../../node_modules/@angular/router/router_module.d.d.ts","../../../../node_modules/@angular/router/index.d.ts","../../../../src/pipes/translate.pipe.ngtypecheck.ts","../../../../src/services/i18n.service.ngtypecheck.ts","../../../../src/services/i18n.service.ts","../../../../src/pipes/translate.pipe.ts","../../../../node_modules/@angular/forms/index.d.ts","../../../../src/components/header/header.component.ngtypecheck.ts","../../../../src/services/instance.service.ngtypecheck.ts","../../../../src/services/instance.service.ts","../../../../src/services/auth.service.ngtypecheck.ts","../../../../src/services/auth.service.ts","../../../../src/services/user.service.ngtypecheck.ts","../../../../src/services/user.service.ts","../../../../src/services/themes.service.ngtypecheck.ts","../../../../src/models/theme.model.ngtypecheck.ts","../../../../src/models/theme.model.ts","../../../../src/services/themes.service.ts","../../../../src/services/history.service.ngtypecheck.ts","../../../../src/services/history.service.ts","../../../../src/components/header/header.component.ts","../../../../src/components/sidebar/sidebar.component.ngtypecheck.ts","../../../../src/components/sidebar/sidebar.component.ts","../../../../src/app.component.ngtypecheck.ts","../../../../src/components/themes/themes-nav.component.ngtypecheck.ts","../../../../src/components/themes/themes-nav.component.ts","../../../../src/app.component.ts","../../../../src/app.routes.ngtypecheck.ts","../../../../src/components/shared/components/like-button/like-button.component.ngtypecheck.ts","../../../../src/services/likes.service.ngtypecheck.ts","../../../../src/services/likes.service.ts","../../../../src/components/shared/components/like-button/like-button.component.ts","../../../../src/components/themes/theme-page.component.ngtypecheck.ts","../../../../src/services/youtube-api.service.ngtypecheck.ts","../../../../src/models/video.model.ngtypecheck.ts","../../../../src/models/video.model.ts","../../../../src/services/youtube-api.service.ts","../../../../src/components/themes/theme-page.component.ts","../../../../src/components/themes/provider-theme-page.component.ngtypecheck.ts","../../../../src/components/themes/provider-theme-page.component.ts","../../../../src/components/shared/components/add-to-playlist/add-to-playlist.component.ngtypecheck.ts","../../../../src/services/playlists.service.ngtypecheck.ts","../../../../src/services/playlists.service.ts","../../../../src/components/shared/components/add-to-playlist/add-to-playlist.component.ts","../../../../src/components/shared/infinite-anchor/infinite-anchor.component.ngtypecheck.ts","../../../../src/components/shared/infinite-anchor/infinite-anchor.component.ts","../../../../src/components/search/search.component.ngtypecheck.ts","../../../../src/utils/date.util.ngtypecheck.ts","../../../../src/utils/date.util.ts","../../../../src/components/search/search.component.ts","../../../../src/components/shorts/watch-short.component.ngtypecheck.ts","../../../../src/components/shorts/watch-short.component.ts","../../../../src/components/video-player/video-player.component.ngtypecheck.ts","../../../../src/components/video-player/video-player.component.ts","../../../../src/components/watch/watch.component.ngtypecheck.ts","../../../../src/services/gemini.service.ngtypecheck.ts","../../../../node_modules/zod/v3/helpers/typealiases.d.cts","../../../../node_modules/zod/v3/helpers/util.d.cts","../../../../node_modules/zod/v3/index.d.cts","../../../../node_modules/zod/v3/zoderror.d.cts","../../../../node_modules/zod/v3/locales/en.d.cts","../../../../node_modules/zod/v3/errors.d.cts","../../../../node_modules/zod/v3/helpers/parseutil.d.cts","../../../../node_modules/zod/v3/helpers/enumutil.d.cts","../../../../node_modules/zod/v3/helpers/errorutil.d.cts","../../../../node_modules/zod/v3/helpers/partialutil.d.cts","../../../../node_modules/zod/v3/standard-schema.d.cts","../../../../node_modules/zod/v3/types.d.cts","../../../../node_modules/zod/v3/external.d.cts","../../../../node_modules/zod/index.d.cts","../../../../node_modules/@modelcontextprotocol/sdk/dist/esm/server/auth/types.d.ts","../../../../node_modules/@modelcontextprotocol/sdk/dist/esm/types.d.ts","../../../../node_modules/@modelcontextprotocol/sdk/dist/esm/shared/transport.d.ts","../../../../node_modules/@modelcontextprotocol/sdk/dist/esm/shared/protocol.d.ts","../../../../node_modules/@modelcontextprotocol/sdk/dist/esm/client/index.d.ts","../../../../node_modules/gaxios/build/src/common.d.ts","../../../../node_modules/gaxios/build/src/interceptor.d.ts","../../../../node_modules/gaxios/build/src/gaxios.d.ts","../../../../node_modules/gaxios/build/src/index.d.ts","../../../../node_modules/google-auth-library/build/src/transporters.d.ts","../../../../node_modules/google-auth-library/build/src/auth/credentials.d.ts","../../../../node_modules/google-auth-library/build/src/crypto/crypto.d.ts","../../../../node_modules/google-auth-library/build/src/util.d.ts","../../../../node_modules/google-auth-library/build/src/auth/authclient.d.ts","../../../../node_modules/google-auth-library/build/src/auth/loginticket.d.ts","../../../../node_modules/google-auth-library/build/src/auth/oauth2client.d.ts","../../../../node_modules/google-auth-library/build/src/auth/idtokenclient.d.ts","../../../../node_modules/google-auth-library/build/src/auth/envdetect.d.ts","../../../../node_modules/gtoken/build/src/index.d.ts","../../../../node_modules/google-auth-library/build/src/auth/jwtclient.d.ts","../../../../node_modules/google-auth-library/build/src/auth/refreshclient.d.ts","../../../../node_modules/google-auth-library/build/src/auth/impersonated.d.ts","../../../../node_modules/google-auth-library/build/src/auth/baseexternalclient.d.ts","../../../../node_modules/google-auth-library/build/src/auth/identitypoolclient.d.ts","../../../../node_modules/google-auth-library/build/src/auth/awsrequestsigner.d.ts","../../../../node_modules/google-auth-library/build/src/auth/awsclient.d.ts","../../../../node_modules/google-auth-library/build/src/auth/pluggable-auth-client.d.ts","../../../../node_modules/google-auth-library/build/src/auth/externalclient.d.ts","../../../../node_modules/google-auth-library/build/src/auth/externalaccountauthorizeduserclient.d.ts","../../../../node_modules/google-auth-library/build/src/auth/googleauth.d.ts","../../../../node_modules/gcp-metadata/build/src/gcp-residency.d.ts","../../../../node_modules/gcp-metadata/build/src/index.d.ts","../../../../node_modules/google-auth-library/build/src/auth/computeclient.d.ts","../../../../node_modules/google-auth-library/build/src/auth/iam.d.ts","../../../../node_modules/google-auth-library/build/src/auth/jwtaccess.d.ts","../../../../node_modules/google-auth-library/build/src/auth/downscopedclient.d.ts","../../../../node_modules/google-auth-library/build/src/auth/passthrough.d.ts","../../../../node_modules/google-auth-library/build/src/index.d.ts","../../../../node_modules/@google/genai/dist/genai.d.ts","../../../../src/services/gemini.service.ts","../../../../src/services/download.service.ngtypecheck.ts","../../../../src/services/download.service.ts","../../../../src/services/iframe-progress.service.ngtypecheck.ts","../../../../src/services/iframe-progress.service.ts","../../../../src/components/watch/watch.component.ts","../../../../src/components/library/playlists/playlists.component.ngtypecheck.ts","../../../../src/components/library/playlists/playlists.component.ts","../../../../src/components/library/playlists/playlist-detail.component.ngtypecheck.ts","../../../../src/components/library/playlists/playlist-detail.component.ts","../../../../src/components/library/liked/liked.component.ngtypecheck.ts","../../../../src/components/library/liked/liked.component.ts","../../../../src/components/library/subscriptions/subscriptions.component.ngtypecheck.ts","../../../../src/components/library/subscriptions/subscriptions.component.ts","../../../../src/components/account/preferences/preferences.component.ngtypecheck.ts","../../../../src/components/account/preferences/preferences.component.ts","../../../../src/components/account/history/history.component.ngtypecheck.ts","../../../../src/components/account/history/history.component.ts","../../../../src/components/account/sessions/sessions.component.ngtypecheck.ts","../../../../src/components/account/sessions/sessions.component.ts","../../../../src/components/auth/login/login.component.ngtypecheck.ts","../../../../src/components/auth/login/login.component.ts","../../../../src/components/auth/register/register.component.ngtypecheck.ts","../../../../src/components/auth/register/register.component.ts","../../../../src/components/info/utilisation/utilisation.component.ngtypecheck.ts","../../../../src/components/info/utilisation/utilisation.component.ts","../../../../src/app.routes.ts","../../../../src/interceptors/auth.interceptor.ngtypecheck.ts","../../../../src/interceptors/auth.interceptor.ts","../../../../index.tsx","../../../../app/shared/components/like-button/like-button.ngtypecheck.ts","../../../../app/shared/components/like-button/like-button.ts","../../../../src/components/home/home.component.ngtypecheck.ts","../../../../src/components/home/home.component.ts","../../../../node_modules/@types/estree/index.d.ts","../../../../node_modules/@types/node/compatibility/disposable.d.ts","../../../../node_modules/@types/node/compatibility/indexable.d.ts","../../../../node_modules/@types/node/compatibility/iterators.d.ts","../../../../node_modules/@types/node/compatibility/index.d.ts","../../../../node_modules/@types/node/globals.typedarray.d.ts","../../../../node_modules/@types/node/buffer.buffer.d.ts","../../../../node_modules/@types/node/globals.d.ts","../../../../node_modules/@types/node/web-globals/abortcontroller.d.ts","../../../../node_modules/@types/node/web-globals/domexception.d.ts","../../../../node_modules/@types/node/web-globals/events.d.ts","../../../../node_modules/buffer/index.d.ts","../../../../node_modules/undici-types/header.d.ts","../../../../node_modules/undici-types/readable.d.ts","../../../../node_modules/undici-types/file.d.ts","../../../../node_modules/undici-types/fetch.d.ts","../../../../node_modules/undici-types/formdata.d.ts","../../../../node_modules/undici-types/connector.d.ts","../../../../node_modules/undici-types/client.d.ts","../../../../node_modules/undici-types/errors.d.ts","../../../../node_modules/undici-types/dispatcher.d.ts","../../../../node_modules/undici-types/global-dispatcher.d.ts","../../../../node_modules/undici-types/global-origin.d.ts","../../../../node_modules/undici-types/pool-stats.d.ts","../../../../node_modules/undici-types/pool.d.ts","../../../../node_modules/undici-types/handlers.d.ts","../../../../node_modules/undici-types/balanced-pool.d.ts","../../../../node_modules/undici-types/agent.d.ts","../../../../node_modules/undici-types/mock-interceptor.d.ts","../../../../node_modules/undici-types/mock-agent.d.ts","../../../../node_modules/undici-types/mock-client.d.ts","../../../../node_modules/undici-types/mock-pool.d.ts","../../../../node_modules/undici-types/mock-errors.d.ts","../../../../node_modules/undici-types/proxy-agent.d.ts","../../../../node_modules/undici-types/env-http-proxy-agent.d.ts","../../../../node_modules/undici-types/retry-handler.d.ts","../../../../node_modules/undici-types/retry-agent.d.ts","../../../../node_modules/undici-types/api.d.ts","../../../../node_modules/undici-types/interceptors.d.ts","../../../../node_modules/undici-types/util.d.ts","../../../../node_modules/undici-types/cookies.d.ts","../../../../node_modules/undici-types/patch.d.ts","../../../../node_modules/undici-types/websocket.d.ts","../../../../node_modules/undici-types/eventsource.d.ts","../../../../node_modules/undici-types/filereader.d.ts","../../../../node_modules/undici-types/diagnostics-channel.d.ts","../../../../node_modules/undici-types/content-type.d.ts","../../../../node_modules/undici-types/cache.d.ts","../../../../node_modules/undici-types/index.d.ts","../../../../node_modules/@types/node/web-globals/fetch.d.ts","../../../../node_modules/@types/node/web-globals/navigator.d.ts","../../../../node_modules/@types/node/web-globals/storage.d.ts","../../../../node_modules/@types/node/assert.d.ts","../../../../node_modules/@types/node/assert/strict.d.ts","../../../../node_modules/@types/node/async_hooks.d.ts","../../../../node_modules/@types/node/buffer.d.ts","../../../../node_modules/@types/node/child_process.d.ts","../../../../node_modules/@types/node/cluster.d.ts","../../../../node_modules/@types/node/console.d.ts","../../../../node_modules/@types/node/constants.d.ts","../../../../node_modules/@types/node/crypto.d.ts","../../../../node_modules/@types/node/dgram.d.ts","../../../../node_modules/@types/node/diagnostics_channel.d.ts","../../../../node_modules/@types/node/dns.d.ts","../../../../node_modules/@types/node/dns/promises.d.ts","../../../../node_modules/@types/node/domain.d.ts","../../../../node_modules/@types/node/events.d.ts","../../../../node_modules/@types/node/fs.d.ts","../../../../node_modules/@types/node/fs/promises.d.ts","../../../../node_modules/@types/node/http.d.ts","../../../../node_modules/@types/node/http2.d.ts","../../../../node_modules/@types/node/https.d.ts","../../../../node_modules/@types/node/inspector.d.ts","../../../../node_modules/@types/node/module.d.ts","../../../../node_modules/@types/node/net.d.ts","../../../../node_modules/@types/node/os.d.ts","../../../../node_modules/@types/node/path.d.ts","../../../../node_modules/@types/node/perf_hooks.d.ts","../../../../node_modules/@types/node/process.d.ts","../../../../node_modules/@types/node/punycode.d.ts","../../../../node_modules/@types/node/querystring.d.ts","../../../../node_modules/@types/node/readline.d.ts","../../../../node_modules/@types/node/readline/promises.d.ts","../../../../node_modules/@types/node/repl.d.ts","../../../../node_modules/@types/node/sea.d.ts","../../../../node_modules/@types/node/sqlite.d.ts","../../../../node_modules/@types/node/stream.d.ts","../../../../node_modules/@types/node/stream/promises.d.ts","../../../../node_modules/@types/node/stream/consumers.d.ts","../../../../node_modules/@types/node/stream/web.d.ts","../../../../node_modules/@types/node/string_decoder.d.ts","../../../../node_modules/@types/node/test.d.ts","../../../../node_modules/@types/node/timers.d.ts","../../../../node_modules/@types/node/timers/promises.d.ts","../../../../node_modules/@types/node/tls.d.ts","../../../../node_modules/@types/node/trace_events.d.ts","../../../../node_modules/@types/node/tty.d.ts","../../../../node_modules/@types/node/url.d.ts","../../../../node_modules/@types/node/util.d.ts","../../../../node_modules/@types/node/v8.d.ts","../../../../node_modules/@types/node/vm.d.ts","../../../../node_modules/@types/node/wasi.d.ts","../../../../node_modules/@types/node/worker_threads.d.ts","../../../../node_modules/@types/node/zlib.d.ts","../../../../node_modules/@types/node/index.d.ts"],"fileIdsList":[[59,258,407,416,465],[59,258,406,416,465],[59,416,465],[59,60,252,258,265,266,268,276,278,280,293,402,404,416,465],[252,258,259,416,465],[252,258,261,264,416,465],[252,258,259,260,261,416,465],[258,416,465],[416,465],[63,416,465],[61,62,416,465],[61,62,63,252,253,254,416,465],[61,416,465],[61,62,63,252,253,254,255,256,257,416,465],[252,258,416,465],[258,262,416,465],[258,262,263,265,416,465],[252,258,262,266,267,416,465],[252,258,262,416,465],[341,374,416,465],[336,338,339,340,416,465],[336,337,338,339,416,465],[338,416,465],[336,337,416,465],[416,462,465],[416,464,465],[465],[416,465,470,499],[416,465,466,471,476,484,496,507],[416,465,466,467,476,484],[411,412,413,416,465],[416,465,468,508],[416,465,469,470,477,485],[416,465,470,496,504],[416,465,471,473,476,484],[416,464,465,472],[416,465,473,474],[416,465,475,476],[416,464,465,476],[416,465,476,477,478,496,507],[416,465,476,477,478,491,496,499],[416,458,465,473,476,479,484,496,507],[416,465,476,477,479,480,484,496,504,507],[416,465,479,481,496,504,507],[414,415,416,417,418,419,420,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513],[416,465,476,482],[416,465,483,507],[416,465,473,476,484,496],[416,465,485],[416,465,486],[416,464,465,487],[416,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513],[416,465,489],[416,465,490],[416,465,476,491,492],[416,465,491,493,508,510],[416,465,476,496,497,499],[416,465,498,499],[416,465,496,497],[416,465,499],[416,465,500],[416,462,465,496,501],[416,465,476,502,503],[416,465,502,503],[416,465,470,484,496,504],[416,465,505],[416,465,484,506],[416,465,479,490,507],[416,465,470,508],[416,465,496,509],[416,465,483,510],[416,465,511],[416,458,465],[416,465,476,478,487,496,499,507,509,510,512],[416,465,496,513],[416,465,479,496,507],[342,343,416,465,479,507],[342,343,344,416,465],[342,416,465],[367,416,465,479],[345,346,347,349,352,416,465,476],[349,350,359,361,416,465],[345,416,465],[345,346,347,349,350,352,416,465],[345,352,416,465],[345,346,347,350,352,416,465],[345,346,347,350,352,359,416,465],[350,359,360,362,363,416,465],[345,346,347,350,352,353,354,356,357,358,359,364,365,374,416,465,496],[349,350,359,416,465],[352,416,465],[350,352,353,366,416,465],[347,352,416,465,496],[347,352,353,355,416,465,496],[345,346,347,348,350,351,416,465,490],[345,350,352,416,465],[350,359,416,465],[345,346,347,350,351,352,353,354,356,357,358,359,360,361,362,363,364,366,368,369,370,371,372,373,374,416,465],[64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,80,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,120,121,122,123,124,125,126,127,128,129,130,131,133,134,135,136,137,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,183,184,185,187,196,198,199,200,201,202,203,205,206,208,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,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,416,465],[109,416,465],[65,68,416,465],[67,416,465],[67,68,416,465],[64,65,66,68,416,465],[65,67,68,225,416,465],[68,416,465],[64,67,109,416,465],[67,68,225,416,465],[67,233,416,465],[65,67,68,416,465],[77,416,465],[100,416,465],[121,416,465],[67,68,109,416,465],[68,116,416,465],[67,68,109,127,416,465],[67,68,127,416,465],[68,168,416,465],[68,109,416,465],[64,68,186,416,465],[64,68,187,416,465],[209,416,465],[193,195,416,465],[204,416,465],[193,416,465],[64,68,186,193,194,416,465],[186,187,195,416,465],[207,416,465],[64,68,193,194,195,416,465],[66,67,68,416,465],[64,68,416,465],[65,67,187,188,189,190,416,465],[109,187,188,189,190,416,465],[187,189,416,465],[67,188,189,191,192,196,416,465],[64,67,416,465],[68,211,416,465],[69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,110,111,112,113,114,115,117,118,119,120,121,122,123,124,125,126,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,416,465],[197,416,465],[416,430,434,465,507],[416,430,465,496,507],[416,425,465],[416,427,430,465,504,507],[416,465,484,504],[416,465,514],[416,425,465,514],[416,427,430,465,484,507],[416,422,423,426,429,465,476,496,507],[416,430,437,465],[416,422,428,465],[416,430,451,452,465],[416,426,430,465,499,507,514],[416,451,465,514],[416,424,425,465,514],[416,430,465],[416,424,425,426,427,428,429,430,431,432,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,452,453,454,455,456,457,465],[416,430,445,465],[416,430,437,438,465],[416,428,430,438,439,465],[416,429,465],[416,422,425,430,465],[416,430,434,438,439,465],[416,434,465],[416,428,430,433,465,507],[416,422,427,430,437,465],[416,465,496],[416,425,430,451,465,512,514],[335,416,465],[326,327,416,465],[323,324,326,328,329,334,416,465],[324,326,416,465],[334,416,465],[326,416,465],[323,324,326,329,330,331,332,333,416,465],[323,324,325,416,465],[59,258,287,289,293,416,465],[59,258,268,271,287,289,290,292,416,465],[59,268,294,304,306,316,318,381,383,385,387,389,391,393,395,397,399,401,416,465],[59,258,262,268,273,393,416,465],[59,185,252,258,262,268,273,286,392,416,465],[59,258,262,272,273,391,416,465],[59,252,258,262,271,272,273,276,280,390,416,465],[59,258,262,395,416,465],[59,252,258,262,278,394,416,465],[59,258,262,268,273,397,416,465],[59,252,258,262,268,273,276,278,280,396,416,465],[59,258,262,268,273,399,416,465],[59,252,258,262,268,273,276,278,280,398,416,465],[59,258,262,268,272,273,287,416,465],[59,252,258,262,268,271,272,273,274,276,278,280,284,286,416,465],[59,258,262,268,272,298,312,409,416,465],[59,258,262,268,272,276,298,302,303,312,315,408,416,465],[59,258,401,416,465],[59,258,262,400,416,465],[59,258,262,268,273,387,416,465],[59,258,262,268,273,297,386,416,465],[59,258,262,268,385,416,465],[59,258,262,265,268,278,309,384,416,465],[59,258,262,268,383,416,465],[59,258,262,265,268,273,278,382,416,465],[59,258,389,416,465],[59,258,262,388,416,465],[59,258,262,268,272,298,310,312,316,416,465],[59,258,262,266,268,272,276,286,298,302,303,310,312,313,315,416,465],[59,258,310,416,465],[59,252,258,262,265,278,307,309,416,465],[59,258,298,416,465],[59,252,258,262,265,278,295,297,416,465],[59,258,312,416,465],[59,258,262,311,416,465],[59,258,318,416,465],[59,252,258,262,266,276,302,303,317,416,465],[59,258,262,268,272,289,416,465],[59,258,262,268,272,276,278,284,288,416,465],[59,258,262,268,272,273,298,306,416,465],[59,258,262,268,272,273,276,284,298,302,303,305,416,465],[59,258,262,268,272,298,304,416,465],[59,258,262,268,272,276,284,298,299,302,303,416,465],[59,258,262,292,416,465],[59,258,262,268,284,291,416,465],[59,258,320,416,465],[59,258,286,319,416,465],[59,258,268,310,320,381,416,465],[59,252,258,262,265,266,268,276,278,286,297,302,303,310,315,320,321,376,378,380,416,465],[59,185,252,258,265,278,403,416,465],[59,282,416,465],[59,301,416,465],[59,258,269,271,416,465],[59,185,252,258,265,277,416,465],[59,252,258,265,377,416,465],[59,258,322,375,416,465],[59,252,258,265,278,285,416,465],[59,258,270,416,465],[59,258,286,379,416,465],[59,258,275,416,465],[59,252,258,265,296,416,465],[59,252,258,265,308,416,465],[59,258,271,281,283,416,465],[59,185,252,258,265,278,279,416,465],[59,185,252,258,265,271,276,300,302,416,465],[59,314,416,465]],"fileInfos":[{"version":"69684132aeb9b5642cbcd9e22dff7818ff0ee1aa831728af0ecf97d3364d5546","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"092c2bfe125ce69dbb1223c85d68d4d2397d7d8411867b5cc03cec902c233763","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"936e80ad36a2ee83fc3caf008e7c4c5afe45b3cf3d5c24408f039c1d47bdc1df","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"fef8cfad2e2dc5f5b3d97a6f4f2e92848eb1b88e897bb7318cef0e2820bceaab","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"b5ce7a470bc3628408429040c4e3a53a27755022a32fd05e2cb694e7015386c7","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"a6a5253138c5432c68a1510c70fe78a644fe2e632111ba778e1978010d6edfec","impliedFormat":1},{"version":"ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","signature":"da14a67372982ca6e605fea114900b492b3316618581634e0ce72afbcb09baca"},{"version":"d9d3dd93b80c648c9d33766a515f43cceeea16a1240887d53c6ec4fd9a4c0687","impliedFormat":99},{"version":"8b112cd3d8d6fa2449e7cef7643660adbd5c05212f82cf6add0090e0e889b145","affectsGlobalScope":true,"impliedFormat":99},{"version":"31151a7a97f8e16f57099be0cedb8fae67cfbeaa56dad030358709b7672d32c8","affectsGlobalScope":true,"impliedFormat":99},{"version":"073ca26c96184db9941b5ec0ddea6981c9b816156d9095747809e524fdd90e35","impliedFormat":1},{"version":"e41d17a2ec23306d953cda34e573ed62954ca6ea9b8c8b74e013d07a6886ce47","impliedFormat":1},{"version":"241bd4add06f06f0699dcd58f3b334718d85e3045d9e9d4fa556f11f4d1569c1","impliedFormat":1},{"version":"2ae3787e1498b20aad1b9c2ee9ea517ec30e89b70d242d8e3e52d1e091039695","impliedFormat":1},{"version":"c7c72c4cffb1bc83617eefed71ed68cc89df73cab9e19507ccdecb3e72b4967e","affectsGlobalScope":true,"impliedFormat":1},{"version":"b8bff8a60af0173430b18d9c3e5c443eaa3c515617210c0c7b3d2e1743c19ecb","impliedFormat":1},{"version":"38b38db08e7121828294dec10957a7a9ff263e33e2a904b346516d4a4acca482","impliedFormat":1},{"version":"a76ebdf2579e68e4cfe618269c47e5a12a4e045c2805ed7f7ab37af8daa6b091","impliedFormat":1},{"version":"8a2aaea564939c22be05d665cc955996721bad6d43148f8fa21ae8f64afecd37","impliedFormat":1},{"version":"e59d36b7b6e8ba2dd36d032a5f5c279d2460968c8b4e691ca384f118fb09b52a","impliedFormat":1},{"version":"e96885c0684c9042ec72a9a43ef977f6b4b4a2728f4b9e737edcbaa0c74e5bf6","impliedFormat":1},{"version":"95950a187596e206d32d5d9c7b932901088c65ed8f9040e614aa8e321e0225ef","impliedFormat":1},{"version":"89e061244da3fc21b7330f4bd32f47c1813dd4d7f1dc3d0883d88943f035b993","impliedFormat":1},{"version":"e46558c2e04d06207b080138678020448e7fc201f3d69c2601b0d1456105f29a","impliedFormat":1},{"version":"71549375db52b1163411dba383b5f4618bdf35dc57fa327a1c7d135cf9bf67d1","impliedFormat":1},{"version":"7e6b2d61d6215a4e82ea75bc31a80ebb8ad0c2b37a60c10c70dd671e8d9d6d5d","impliedFormat":1},{"version":"78bea05df2896083cca28ed75784dde46d4b194984e8fc559123b56873580a23","impliedFormat":1},{"version":"5dd04ced37b7ea09f29d277db11f160df7fd73ba8b9dba86cb25552e0653a637","impliedFormat":1},{"version":"f74b81712e06605677ae1f061600201c425430151f95b5ef4d04387ad7617e6a","impliedFormat":1},{"version":"9a72847fcf4ac937e352d40810f7b7aec7422d9178451148296cf1aa19467620","impliedFormat":1},{"version":"3ae18f60e0b96fa1e025059b7d25b3247ba4dcb5f4372f6d6e67ce2adac74eac","impliedFormat":1},{"version":"2b9260f44a2e071450ae82c110f5dc8f330c9e5c3e85567ed97248330f2bf639","impliedFormat":1},{"version":"4f196e13684186bda6f5115fc4677a87cf84a0c9c4fc17b8f51e0984f3697b6d","impliedFormat":1},{"version":"61419f2c5822b28c1ea483258437c1faab87d00c6f84481aa22afb3380d8e9a4","impliedFormat":1},{"version":"64479aee03812264e421c0bf5104a953ca7b02740ba80090aead1330d0effe91","impliedFormat":1},{"version":"0521108c9f8ddb17654a0a54dae6ba9667c99eddccfd6af5748113e022d1c37a","impliedFormat":1},{"version":"c5570e504be103e255d80c60b56c367bf45d502ca52ee35c55dec882f6563b5c","impliedFormat":1},{"version":"ee764e6e9a7f2b987cc1a2c0a9afd7a8f4d5ebc4fdb66ad557a7f14a8c2bd320","impliedFormat":1},{"version":"0520b5093712c10c6ef23b5fea2f833bf5481771977112500045e5ea7e8e2b69","impliedFormat":1},{"version":"5c3cf26654cf762ac4d7fd7b83f09acfe08eef88d2d6983b9a5a423cb4004ca3","impliedFormat":1},{"version":"e60fa19cf7911c1623b891155d7eb6b7e844e9afdf5738e3b46f3b687730a2bd","impliedFormat":1},{"version":"b1fd72ff2bb0ba91bb588f3e5329f8fc884eb859794f1c4657a2bfa122ae54d0","impliedFormat":1},{"version":"6cf42a4f3cfec648545925d43afaa8bb364ac10a839ffed88249da109361b275","impliedFormat":1},{"version":"d7058e75920120b142a9d57be25562a3cd9a936269fd52908505f530105f2ec4","impliedFormat":1},{"version":"6df52b70d7f7702202f672541a5f4a424d478ee5be51a9d37b8ccbe1dbf3c0f2","impliedFormat":1},{"version":"0ca7f997e9a4d8985e842b7c882e521b6f63233c4086e9fe79dd7a9dc4742b5e","impliedFormat":1},{"version":"91046b5c6b55d3b194c81fd4df52f687736fad3095e9d103ead92bb64dc160ee","impliedFormat":1},{"version":"db5704fdad56c74dfc5941283c1182ed471bd17598209d3ac4a49faa72e43cfc","impliedFormat":1},{"version":"758e8e89559b02b81bc0f8fd395b17ad5aff75490c862cbe369bb1a3d1577c40","impliedFormat":1},{"version":"2ee64342c077b1868f1834c063f575063051edd6e2964257d34aad032d6b657c","impliedFormat":1},{"version":"6f6b4b3d670b6a5f0e24ea001c1b3d36453c539195e875687950a178f1730fa7","impliedFormat":1},{"version":"a472a1d3f25ce13a1d44911cd3983956ac040ce2018e155435ea34afb25f864c","impliedFormat":1},{"version":"b48b83a86dd9cfe36f8776b3ff52fcd45b0e043c0538dc4a4b149ba45fe367b9","impliedFormat":1},{"version":"792de5c062444bd2ee0413fb766e57e03cce7cdaebbfc52fc0c7c8e95069c96b","impliedFormat":1},{"version":"a79e3e81094c7a04a885bad9b049c519aace53300fb8a0fe4f26727cb5a746ce","impliedFormat":1},{"version":"93181bac0d90db185bb730c95214f6118ae997fe836a98a49664147fbcaf1988","impliedFormat":1},{"version":"8a4e89564d8ea66ad87ee3762e07540f9f0656a62043c910d819b4746fc429c5","impliedFormat":1},{"version":"b9011d99942889a0f95e120d06b698c628b0b6fdc3e6b7ecb459b97ed7d5bcc6","impliedFormat":1},{"version":"4d639cbbcc2f8f9ce6d55d5d503830d6c2556251df332dc5255d75af53c8a0e7","impliedFormat":1},{"version":"cdb48277f600ab5f429ecf1c5ea046683bc6b9f73f3deab9a100adac4b34969c","impliedFormat":1},{"version":"75be84956a29040a1afbe864c0a7a369dfdb739380072484eff153905ef867ee","impliedFormat":1},{"version":"b06b4adc2ae03331a92abd1b19af8eb91ec2bf8541747ee355887a167d53145e","impliedFormat":1},{"version":"c54166a85bd60f86d1ebb90ce0117c0ecb850b8a33b366691629fdf26f1bbbd8","impliedFormat":1},{"version":"0d417c15c5c635384d5f1819cc253a540fe786cc3fda32f6a2ae266671506a21","impliedFormat":1},{"version":"80f23f1d60fbed356f726b3b26f9d348dddbb34027926d10d59fad961e70a730","impliedFormat":1},{"version":"cb59317243a11379a101eb2f27b9df1022674c3df1df0727360a0a3f963f523b","impliedFormat":1},{"version":"cc20bb2227dd5de0aab0c8d697d1572f8000550e62c7bf5c92f212f657dd88c5","impliedFormat":1},{"version":"06b8a7d46195b6b3980e523ef59746702fd210b71681a83a5cf73799623621f9","impliedFormat":1},{"version":"860e4405959f646c101b8005a191298b2381af8f33716dc5f42097e4620608f8","impliedFormat":1},{"version":"f7e32adf714b8f25d3c1783473abec3f2e82d5724538d8dcf6f51baaaff1ca7a","impliedFormat":1},{"version":"d0da80c845999a16c24d0783033fb5366ada98df17867c98ad433ede05cd87fd","impliedFormat":1},{"version":"bfbf80f9cd4558af2d7b2006065340aaaced15947d590045253ded50aabb9bc5","impliedFormat":1},{"version":"fd9a991b51870325e46ebb0e6e18722d313f60cd8e596e645ec5ac15b96dbf4e","impliedFormat":1},{"version":"c3bd2b94e4298f81743d92945b80e9b56c1cdfb2bef43c149b7106a2491b1fc9","impliedFormat":1},{"version":"a246cce57f558f9ebaffd55c1e5673da44ea603b4da3b2b47eb88915d30a9181","impliedFormat":1},{"version":"d993eacc103c5a065227153c9aae8acea3a4322fe1a169ee7c70b77015bf0bb2","impliedFormat":1},{"version":"fc2b03d0c042aa1627406e753a26a1eaad01b3c496510a78016822ef8d456bb6","impliedFormat":1},{"version":"063c7ebbe756f0155a8b453f410ca6b76ffa1bbc1048735bcaf9c7c81a1ce35f","impliedFormat":1},{"version":"314e402cd481370d08f63051ae8b8c8e6370db5ee3b8820eeeaaf8d722a6dac6","impliedFormat":1},{"version":"9669075ac38ce36b638b290ba468233980d9f38bdc62f0519213b2fd3e2552ec","impliedFormat":1},{"version":"4d123de012c24e2f373925100be73d50517ac490f9ed3578ac82d0168bfbd303","impliedFormat":1},{"version":"656c9af789629aa36b39092bee3757034009620439d9a39912f587538033ce28","impliedFormat":1},{"version":"3ac3f4bdb8c0905d4c3035d6f7fb20118c21e8a17bee46d3735195b0c2a9f39f","impliedFormat":1},{"version":"1f453e6798ed29c86f703e9b41662640d4f2e61337007f27ac1c616f20093f69","impliedFormat":1},{"version":"af43b7871ff21c62bf1a54ec5c488e31a8d3408d5b51ff2e9f8581b6c55f2fc7","impliedFormat":1},{"version":"70550511d25cbb0b6a64dcac7fffc3c1397fd4cbeb6b23ccc7f9b794ab8a6954","impliedFormat":1},{"version":"af0fbf08386603a62f2a78c42d998c90353b1f1d22e05a384545f7accf881e0a","impliedFormat":1},{"version":"cefc20054d20b85b534206dbcedd509bb74f87f3d8bc45c58c7be3a76caa45e1","impliedFormat":1},{"version":"ad6eee4877d0f7e5244d34bc5026fd6e9cf8e66c5c79416b73f9f6ebf132f924","impliedFormat":1},{"version":"4888fd2bcfee9a0ce89d0df860d233e0cee8ee9c479b6bd5a5d5f9aae98342fe","impliedFormat":1},{"version":"f4749c102ced952aa6f40f0b579865429c4869f6d83df91000e98005476bee87","impliedFormat":1},{"version":"56654d2c5923598384e71cb808fac2818ca3f07dd23bb018988a39d5e64f268b","impliedFormat":1},{"version":"8b6719d3b9e65863da5390cb26994602c10a315aa16e7d70778a63fee6c4c079","impliedFormat":1},{"version":"05f56cd4b929977d18df8f3d08a4c929a2592ef5af083e79974b20a063f30940","impliedFormat":1},{"version":"547d3c406a21b30e2b78629ecc0b2ddaf652d9e0bdb2d59ceebce5612906df33","impliedFormat":1},{"version":"b3a4f9385279443c3a5568ec914a9492b59a723386161fd5ef0619d9f8982f97","impliedFormat":1},{"version":"3fe66aba4fbe0c3ba196a4f9ed2a776fe99dc4d1567a558fb11693e9fcc4e6ed","impliedFormat":1},{"version":"140eef237c7db06fc5adcb5df434ee21e81ee3a6fd57e1a75b8b3750aa2df2d8","impliedFormat":1},{"version":"0944ec553e4744efae790c68807a461720cff9f3977d4911ac0d918a17c9dd99","impliedFormat":1},{"version":"cb46b38d5e791acaa243bf342b8b5f8491639847463ac965b93896d4fb0af0d9","impliedFormat":1},{"version":"7c7d9e116fe51100ff766703e6b5e4424f51ad8977fe474ddd8d0959aa6de257","impliedFormat":1},{"version":"af70a2567e586be0083df3938b6a6792e6821363d8ef559ad8d721a33a5bcdaf","impliedFormat":1},{"version":"006cff3a8bcb92d77953f49a94cd7d5272fef4ab488b9052ef82b6a1260d870b","impliedFormat":1},{"version":"7d44bfdc8ee5e9af70738ff652c622ae3ad81815e63ab49bdc593d34cb3a68e5","impliedFormat":1},{"version":"339814517abd4dbc7b5f013dfd3b5e37ef0ea914a8bbe65413ecffd668792bc6","impliedFormat":1},{"version":"34d5bc0a6958967ec237c99f980155b5145b76e6eb927c9ffc57d8680326b5d8","impliedFormat":1},{"version":"9eae79b70c9d8288032cbe1b21d0941f6bd4f315e14786b2c1d10bccc634e897","impliedFormat":1},{"version":"18ce015ed308ea469b13b17f99ce53bbb97975855b2a09b86c052eefa4aa013a","impliedFormat":1},{"version":"5a931bc4106194e474be141e0bc1046629510dc95b9a0e4b02a3783847222965","impliedFormat":1},{"version":"5e5f371bf23d5ced2212a5ff56675aefbd0c9b3f4d4fdda1b6123ac6e28f058c","impliedFormat":1},{"version":"907c17ad5a05eecb29b42b36cc8fec6437be27cc4986bb3a218e4f74f606911c","impliedFormat":1},{"version":"ce60a562cd2a92f37a88f2ddd99a3abfbc5848d7baf38c48fb8d3243701fcb75","impliedFormat":1},{"version":"a726ad2d0a98bfffbe8bc1cd2d90b6d831638c0adc750ce73103a471eb9a891c","impliedFormat":1},{"version":"f44c0c8ce58d3dacac016607a1a90e5342d830ea84c48d2e571408087ae55894","impliedFormat":1},{"version":"75a315a098e630e734d9bc932d9841b64b30f7a349a20cf4717bf93044eff113","impliedFormat":1},{"version":"9131d95e32b3d4611d4046a613e022637348f6cebfe68230d4e81b691e4761a1","impliedFormat":1},{"version":"b03aa292cfdcd4edc3af00a7dbd71136dd067ec70a7536b655b82f4dd444e857","impliedFormat":1},{"version":"b6e2b0448ced813b8c207810d96551a26e7d7bb73255eea4b9701698f78846d6","impliedFormat":1},{"version":"8ae10cd85c1bd94d2f2d17c4cbd25c068a4b2471c70c2d96434239f97040747a","impliedFormat":1},{"version":"9ed5b799c50467b0c9f81ddf544b6bcda3e34d92076d6cab183c84511e45c39f","impliedFormat":1},{"version":"b4fa87cc1833839e51c49f20de71230e259c15b2c9c3e89e4814acc1d1ef10de","impliedFormat":1},{"version":"e90ac9e4ac0326faa1bc39f37af38ace0f9d4a655cd6d147713c653139cf4928","impliedFormat":1},{"version":"ea27110249d12e072956473a86fd1965df8e1be985f3b686b4e277afefdde584","impliedFormat":1},{"version":"8776a368617ce51129b74db7d55c3373dadcce5d0701e61d106e99998922a239","impliedFormat":1},{"version":"5666075052877fe2fdddd5b16de03168076cf0f03fbca5c1d4a3b8f43cba570c","impliedFormat":1},{"version":"9108ab5af05418f599ab48186193b1b07034c79a4a212a7f73535903ba4ca249","impliedFormat":1},{"version":"bb4e2cdcadf9c9e6ee2820af23cee6582d47c9c9c13b0dca1baaffe01fbbcb5f","impliedFormat":1},{"version":"6e30d0b5a1441d831d19fe02300ab3d83726abd5141cbcc0e2993fa0efd33db4","impliedFormat":1},{"version":"423f28126b2fc8d8d6fa558035309000a1297ed24473c595b7dec52e5c7ebae5","impliedFormat":1},{"version":"fb30734f82083d4790775dae393cd004924ebcbfde49849d9430bf0f0229dd16","impliedFormat":1},{"version":"2c92b04a7a4a1cd9501e1be338bf435738964130fb2ad5bd6c339ee41224ac4c","impliedFormat":1},{"version":"c5c5f0157b41833180419dacfbd2bcce78fb1a51c136bd4bcba5249864d8b9b5","impliedFormat":1},{"version":"02ae43d5bae42efcd5a00d3923e764895ce056bca005a9f4e623aa6b4797c8af","impliedFormat":1},{"version":"db6e01f17012a9d7b610ae764f94a1af850f5d98c9c826ad61747dca0fb800bd","impliedFormat":1},{"version":"8a44b424edee7bb17dc35a558cc15f92555f14a0441205613e0e50452ab3a602","impliedFormat":1},{"version":"24a00d0f98b799e6f628373249ece352b328089c3383b5606214357e9107e7d5","impliedFormat":1},{"version":"33637e3bc64edd2075d4071c55d60b32bdb0d243652977c66c964021b6fc8066","impliedFormat":1},{"version":"0f0ad9f14dedfdca37260931fac1edf0f6b951c629e84027255512f06a6ebc4c","impliedFormat":1},{"version":"16ad86c48bf950f5a480dc812b64225ca4a071827d3d18ffc5ec1ae176399e36","impliedFormat":1},{"version":"8cbf55a11ff59fd2b8e39a4aa08e25c5ddce46e3af0ed71fb51610607a13c505","impliedFormat":1},{"version":"d5bc4544938741f5daf8f3a339bfbf0d880da9e89e79f44a6383aaf056fe0159","impliedFormat":1},{"version":"97f9169882d393e6f303f570168ca86b5fe9aab556e9a43672dae7e6bb8e6495","impliedFormat":1},{"version":"7c9adb3fcd7851497818120b7e151465406e711d6a596a71b807f3a17853cb58","impliedFormat":1},{"version":"6752d402f9282dd6f6317c8c048aaaac27295739a166eed27e00391b358fed9a","impliedFormat":1},{"version":"9fd7466b77020847dbc9d2165829796bf7ea00895b2520ff3752ffdcff53564b","impliedFormat":1},{"version":"fbfc12d54a4488c2eb166ed63bab0fb34413e97069af273210cf39da5280c8d6","impliedFormat":1},{"version":"85a84240002b7cf577cec637167f0383409d086e3c4443852ca248fc6e16711e","impliedFormat":1},{"version":"84794e3abd045880e0fadcf062b648faf982aa80cfc56d28d80120e298178626","impliedFormat":1},{"version":"053d8b827286a16a669a36ffc8ccc8acdf8cc154c096610aa12348b8c493c7b8","impliedFormat":1},{"version":"3cce4ce031710970fe12d4f7834375f5fd455aa129af4c11eb787935923ff551","impliedFormat":1},{"version":"8f62cbd3afbd6a07bb8c934294b6bfbe437021b89e53a4da7de2648ecfc7af25","impliedFormat":1},{"version":"62c3621d34fb2567c17a2c4b89914ebefbfbd1b1b875b070391a7d4f722e55dc","impliedFormat":1},{"version":"c05ac811542e0b59cb9c2e8f60e983461f0b0e39cea93e320fad447ff8e474f3","impliedFormat":1},{"version":"8e7a5b8f867b99cc8763c0b024068fb58e09f7da2c4810c12833e1ca6eb11c4f","impliedFormat":1},{"version":"132351cbd8437a463757d3510258d0fa98fd3ebef336f56d6f359cf3e177a3ce","impliedFormat":1},{"version":"df877050b04c29b9f8409aa10278d586825f511f0841d1ec41b6554f8362092b","impliedFormat":1},{"version":"33d1888c3c27d3180b7fd20bac84e97ecad94b49830d5dd306f9e770213027d1","impliedFormat":1},{"version":"ee942c58036a0de88505ffd7c129f86125b783888288c2389330168677d6347f","impliedFormat":1},{"version":"a3f317d500c30ea56d41501632cdcc376dae6d24770563a5e59c039e1c2a08ec","impliedFormat":1},{"version":"eb21ddc3a8136a12e69176531197def71dc28ffaf357b74d4bf83407bd845991","impliedFormat":1},{"version":"0c1651a159995dfa784c57b4ea9944f16bdf8d924ed2d8b3db5c25d25749a343","impliedFormat":1},{"version":"aaa13958e03409d72e179b5d7f6ec5c6cc666b7be14773ae7b6b5ee4921e52db","impliedFormat":1},{"version":"0a86e049843ad02977a94bb9cdfec287a6c5a0a4b6b5391a6648b1a122072c5a","impliedFormat":1},{"version":"40f06693e2e3e58526b713c937895c02e113552dc8ba81ecd49cdd9596567ddb","impliedFormat":1},{"version":"4ed5e1992aedb174fb8f5aa8796aa6d4dcb8bd819b4af1b162a222b680a37fa0","impliedFormat":1},{"version":"d7f4bd46a8b97232ea6f8c28012b8d2b995e55e729d11405f159d3e00c51420a","impliedFormat":1},{"version":"d604d413aff031f4bfbdae1560e54ebf503d374464d76d50a2c6ded4df525712","impliedFormat":1},{"version":"e4f4f9cf1e3ac9fd91ada072e4d428ecbf0aa6dc57138fb797b8a0ca3a1d521c","impliedFormat":1},{"version":"12bfd290936824373edda13f48a4094adee93239b9a73432db603127881a300d","impliedFormat":1},{"version":"340ceb3ea308f8e98264988a663640e567c553b8d6dc7d5e43a8f3b64f780374","impliedFormat":1},{"version":"c5a769564e530fba3ec696d0a5cff1709b9095a0bdf5b0826d940d2fc9786413","impliedFormat":1},{"version":"7124ef724c3fc833a17896f2d994c368230a8d4b235baed39aa8037db31de54f","impliedFormat":1},{"version":"5de1c0759a76e7710f76899dcae601386424eab11fb2efaf190f2b0f09c3d3d3","impliedFormat":1},{"version":"9c5ee8f7e581f045b6be979f062a61bf076d362bf89c7f966b993a23424e8b0d","impliedFormat":1},{"version":"1a11df987948a86aa1ec4867907c59bdf431f13ed2270444bf47f788a5c7f92d","impliedFormat":1},{"version":"8018dd2e95e7ce6e613ddd81672a54532614dc745520a2f9e3860ff7fb1be0ca","impliedFormat":1},{"version":"b756781cd40d465da57d1fc6a442c34ae61fe8c802d752aace24f6a43fedacee","impliedFormat":1},{"version":"0fe76167c87289ea094e01616dcbab795c11b56bad23e1ef8aba9aa37e93432a","impliedFormat":1},{"version":"3a45029dba46b1f091e8dc4d784e7be970e209cd7d4ff02bd15270a98a9ba24b","impliedFormat":1},{"version":"032c1581f921f8874cf42966f27fd04afcabbb7878fa708a8251cac5415a2a06","impliedFormat":1},{"version":"69c68ed9652842ce4b8e495d63d2cd425862104c9fb7661f72e7aa8a9ef836f8","impliedFormat":1},{"version":"0e704ee6e9fd8b6a5a7167886f4d8915f4bc22ed79f19cb7b32bd28458f50643","impliedFormat":1},{"version":"06f62a14599a68bcde148d1efd60c2e52e8fa540cc7dcfa4477af132bb3de271","impliedFormat":1},{"version":"904a96f84b1bcee9a7f0f258d17f8692e6652a0390566515fe6741a5c6db8c1c","impliedFormat":1},{"version":"11f19ce32d21222419cecab448fa335017ebebf4f9e5457c4fa9df42fa2dcca7","impliedFormat":1},{"version":"2e8ee2cbb5e9159764e2189cf5547aebd0e6b0d9a64d479397bb051cd1991744","impliedFormat":1},{"version":"1b0471d75f5adb7f545c1a97c02a0f825851b95fe6e069ac6ecaa461b8bb321d","impliedFormat":1},{"version":"1d157c31a02b1e5cca9bc495b3d8d39f4b42b409da79f863fb953fbe3c7d4884","impliedFormat":1},{"version":"07baaceaec03d88a4b78cb0651b25f1ae0322ac1aa0b555ae3749a79a41cba86","impliedFormat":1},{"version":"619a132f634b4ebe5b4b4179ea5870f62f2cb09916a25957bff17b408de8b56d","impliedFormat":1},{"version":"f60fa446a397eb1aead9c4e568faf2df8068b4d0306ebc075fb4be16ed26b741","impliedFormat":1},{"version":"f3cb784be4d9e91f966a0b5052a098d9b53b0af0d341f690585b0cc05c6ca412","impliedFormat":1},{"version":"350f63439f8fe2e06c97368ddc7fb6d6c676d54f59520966f7dbbe6a4586014e","impliedFormat":1},{"version":"eba613b9b357ac8c50a925fa31dc7e65ff3b95a07efbaa684b624f143d8d34ba","impliedFormat":1},{"version":"45b74185005ed45bec3f07cac6e4d68eaf02ead9ff5a66721679fb28020e5e7c","impliedFormat":1},{"version":"0f6199602df09bdb12b95b5434f5d7474b1490d2cd8cc036364ab3ba6fd24263","impliedFormat":1},{"version":"c8ca7fd9ec7a3ec82185bfc8213e4a7f63ae748fd6fced931741d23ef4ea3c0f","impliedFormat":1},{"version":"5c6a8a3c2a8d059f0592d4eab59b062210a1c871117968b10797dee36d991ef7","impliedFormat":1},{"version":"ad77fd25ece8e09247040826a777dc181f974d28257c9cd5acb4921b51967bd8","impliedFormat":1},{"version":"e636bc88ba9f36fd2e0ea4e92d998faf9ef26c3e7d3ea30363ca74e48ccae9b6","impliedFormat":99},{"version":"53a7e8e6cd478d365dab32dbf5e3f45e1fdce303f9b3843c0347722b19714449","impliedFormat":99},{"version":"0c02c17cf4c2a113c1f2c84600c584988a85d4808271ad8c38e47d1cfbb0175d","impliedFormat":99},{"version":"aad5b7d6c39fb451c626fc26aed53d713cbf1598bfb81e7555a3802d262779ae","impliedFormat":99},{"version":"63a8dadf7e342e253bc606c5f0d3f19be90352bccb6798728d928ed618fc5521","impliedFormat":99},{"version":"f37fcb53b8f0a80340d25f4ca4e1f43ababf1711d1da680fba3b62669e8198d9","impliedFormat":99},{"version":"7b725602c44d308cc120244986665583e2a53d20b69b0e4c19034609314e4960","impliedFormat":99},{"version":"bc84a8c0f0d7246cd48c745919fd87f2dcbea0894e5d9f4004b4878c8b37d5da","impliedFormat":99},{"version":"adcf6fb0fc8d31e1fd7c0477c517a2691e2f1fc20361ef2a4c4e05555b598a18","impliedFormat":99},{"version":"84de6181c634996552fdce82ddb8560c543776970963a0b6cf79291c1c52ed08","impliedFormat":99},{"version":"196d3246719b9fd0f124f171322aa8981afe09a4a5ae2f3b506134f01ef6ce89","impliedFormat":99},{"version":"ec7f1fb361239bd2f79647c4c12fe324918667a6eefef56e53d25560e9ccce77","impliedFormat":99},{"version":"c6f21fc4fd151b94b8ff0de2b16aa943d5635bfd30f9f5fee7b9e137e3474997","impliedFormat":99},{"version":"bee856262cdb790c78313066300a69002ea045ab9ed523315ea8225bbcaea7dd","impliedFormat":99},{"version":"3ffa16a7b3c57bcf12260e8570999d19fbfceb36dc23d381013678a2d8601ab6","impliedFormat":99},{"version":"444cfc5dc1d45b030c65aeda3dfb5973e8c55cba1d29886bb38f6d668b17f061","impliedFormat":99},{"version":"ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","signature":"da14a67372982ca6e605fea114900b492b3316618581634e0ce72afbcb09baca"},{"version":"ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","signature":"da14a67372982ca6e605fea114900b492b3316618581634e0ce72afbcb09baca"},{"version":"69d327a9079d984240c360a3d7a52481761f98a7f26d901baf5d1835847577f3","signature":"ec624cdad0da030be5047cf1b9ef3522234916651214da29eb2697f0a1c9ea45"},{"version":"3fc28b80fbddf575ed60f2206863d99b7594157c1bdcf72d182d2d17d7e007df","signature":"a1889af19644b3eeaf6c8357cd3b33d3676a13c1e94ee2bf8acdd51c7f4feb04"},{"version":"dcd48e99bff07bb096e197535eefc1f68cb5fbca75e18fc11df47377a7eb61f6","impliedFormat":99},{"version":"3c025053a6d2f27748510a5bb68b91147d20837e8fef3d7e6654a046669214de","signature":"b52dcd199c97746007e4589749483d8b943e6bac0bbf6a90c0b9c7be86f9b793"},{"version":"ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","signature":"da14a67372982ca6e605fea114900b492b3316618581634e0ce72afbcb09baca"},{"version":"d7c4fd426cb17d3d87b64c5a9dfded7c7084e1901ef87caadd232a1fea38d5a1","signature":"44258283f0fe85b63e2a1c83a209cb804ab4654085a3f0043b2262f03ccc2727"},{"version":"ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","signature":"da14a67372982ca6e605fea114900b492b3316618581634e0ce72afbcb09baca"},{"version":"1978842c9a49f471f8ce1f05a90c16b67ee7ba61cae5c539b47e722ac6d44937","signature":"cb473d6bbffe7a12c6826d062487c44c0ddc213302207a8bfdd6622f28719beb"},{"version":"ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","signature":"da14a67372982ca6e605fea114900b492b3316618581634e0ce72afbcb09baca"},{"version":"af2ac301e5b21fcc7817abf499de3cf66025fc3d53fadc56280d2bc413f0887b","signature":"71cec32132ea87938ec94c40187d676ad4c8ec842e29fb8505341dbb93778182"},{"version":"ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","signature":"da14a67372982ca6e605fea114900b492b3316618581634e0ce72afbcb09baca"},{"version":"ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","signature":"da14a67372982ca6e605fea114900b492b3316618581634e0ce72afbcb09baca"},{"version":"6201b44a285d6217d145689b24395c7d6f827308f2c93b3e345532066bad74d1","signature":"03d73b525ba1656b398ceb3088fe366372749826c5730b59874c7904a4c35675"},{"version":"e713b261d26868729b62ff43f1885446b57389614ad36a7a7ce165971d9d3dc5","signature":"b0c9fc2e51388a1f348242bd2c09cdc15bcd167e02c662039f4c72428b4e664f"},{"version":"ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","signature":"da14a67372982ca6e605fea114900b492b3316618581634e0ce72afbcb09baca"},{"version":"0eb6e69109bfad267253407536f0a370434be2608734ade1a769ca195a302d2e","signature":"270bae547ddd7b6e7e7a00156b6cf676fdd171fcc5359b1d1d21984d6520200a"},{"version":"29e36c1f56622eb6b34f11ae0a20c810a86fc965bc3259c5e3598037d134b99d","signature":"b7f44c211235cbf8859eedb0a33910a5df69a88da59f7defd30914595234913d"},{"version":"9538a65c73ce160348315eee9c693817e579d383d737ad0e8e1402641d9d2ff5","signature":"b52dcd199c97746007e4589749483d8b943e6bac0bbf6a90c0b9c7be86f9b793"},{"version":"26303a5e93ea8976404accdb795651afe1d9631e742d5f6bfa3940f97664d34b","signature":"98f65149f2c4839de9a761fe5e0e49bba2d57a9b719b13f5657c6f0c220307e7"},{"version":"06f6a68e3c5df432ac185e2656d9d0b3478e2049a01fa8c899b94638f1ade833","signature":"b52dcd199c97746007e4589749483d8b943e6bac0bbf6a90c0b9c7be86f9b793"},{"version":"2bfee34c42048974b97d3f68776ec7295458df20155ecccb8089b97f8c8fa284","signature":"b52dcd199c97746007e4589749483d8b943e6bac0bbf6a90c0b9c7be86f9b793"},{"version":"ffa92b627d4e8e7df7f1383155f2dea446c6a321655e37e50c7c3004809c744f","signature":"fefed10cd55899ad3fae9015cb335c6995d03702cbed855f01a534fd2cb5d41a"},"eea2ca5aa2912da3489cd8b87e39d558c8860e27e4edeba4c378197d049664ba",{"version":"ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","signature":"da14a67372982ca6e605fea114900b492b3316618581634e0ce72afbcb09baca"},{"version":"e855b9729e0460a40a98ede2818910047f74c09dc57c3771b168552589086b76","signature":"b52dcd199c97746007e4589749483d8b943e6bac0bbf6a90c0b9c7be86f9b793"},{"version":"ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","signature":"da14a67372982ca6e605fea114900b492b3316618581634e0ce72afbcb09baca"},{"version":"15812150c4377d3d94398dc31c7f010095123c123c6836685c872d93e8937359","signature":"def95c5a5688d11e2999f36fc5b831bc0a598fdef39209b36b29b09ea00c784e"},{"version":"33ab1e3233f6951662b608d1596491a91e04220da5d90e767fea41b673fcdc00","signature":"7e7fab10bdd7a9034b92e1afd8357020ce92c4e65e93dbebdf78e06fe8a20ed0"},{"version":"05fff7dfe422a454e888b7efe0e323501a681f9dbb645cb67559463f2f2a9cf5","signature":"b52dcd199c97746007e4589749483d8b943e6bac0bbf6a90c0b9c7be86f9b793"},{"version":"ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","signature":"da14a67372982ca6e605fea114900b492b3316618581634e0ce72afbcb09baca"},{"version":"ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","signature":"da14a67372982ca6e605fea114900b492b3316618581634e0ce72afbcb09baca"},{"version":"997213bf2d998486a020bb9d63635e28509419b7c3eef2de190668ae14507fa6","signature":"d41793eaa1172ac2f5b07c9844f6fb379b32f1516824744f2be9da4ccda2d5a6"},{"version":"ee04730aa9b17c622842a9bba1e23713d7c227e06dc2df542053c19259a45d8d","signature":"390f67dabc754c888280d7fbd3debefaf0a6ce0cb08ecdb6b5b1555f9c3e5690"},"7161aed8d2516efd8a7fde991d7e0783ce44a9010aa0e3c2e3d89c8db92da12f",{"version":"da5bf00ed9bb1f0aeedfc209ff505083b8f50c8d161d714634c2863f6c6b76a7","signature":"b52dcd199c97746007e4589749483d8b943e6bac0bbf6a90c0b9c7be86f9b793"},"6fb09e200265191ceb72640f0bcf315b214604d67042be95917e834f3a12e80c",{"version":"c26fcf6f46df9dff0bb595647ec889a13eae6e5aa2bb0c5f135b6aad99d1dc76","signature":"b52dcd199c97746007e4589749483d8b943e6bac0bbf6a90c0b9c7be86f9b793"},{"version":"ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","signature":"da14a67372982ca6e605fea114900b492b3316618581634e0ce72afbcb09baca"},{"version":"6e8d6d452608c3be840c66cfb2301a01d74072ec7bd2f68e45dc3d8c6db184da","signature":"b1c5304bde7d1cbb07ff6c0c51c4a96115b36cacee316d1f76d8c046fb459d4c"},{"version":"a48310e3238d185e708d2032b0d2a1190e27731096e10027cc0616e9f531a75b","signature":"a44999082fce68773d785d591ae3ad96b802f809de4750615c542c08f1a924d0"},{"version":"682d1de1e0cf7c40b8934248b47503dd5a0281622f2be738ec46c82903e276cb","signature":"b52dcd199c97746007e4589749483d8b943e6bac0bbf6a90c0b9c7be86f9b793"},{"version":"927aa4ba40ea75c698540a04206b89eba44cdeb53515f557c186c6e070a7c485","signature":"6a1641235112fb6fb6fab11cc2c82e34264067f8fc24601685872b309bd8926f"},{"version":"95434e68ea15c6c68e3bc2c5769712592fab3393e43f364713894debef43441a","signature":"b52dcd199c97746007e4589749483d8b943e6bac0bbf6a90c0b9c7be86f9b793"},{"version":"ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","signature":"da14a67372982ca6e605fea114900b492b3316618581634e0ce72afbcb09baca"},{"version":"b266334c67fa69ff67fded0c634f852bb1aa3f99ddbccd7f2e70757ce11c1cef","signature":"aec710ec6aef682d41ad375ae1ddf9618cb325995710bfc1e5184d16e26ed347"},"8d4548d13fa5f4d6e94dfab0df680cb00e014d68050504a00bf71402be559c22",{"version":"39cf82dd3e8e6466a46c883ffc6ea08e8cd450c905ed9459acf3539beaadedf3","signature":"b52dcd199c97746007e4589749483d8b943e6bac0bbf6a90c0b9c7be86f9b793"},{"version":"eb9b346c9f750ba2eb671b2429239f6f1f464b4172c66abf0c8b1041aaade193","signature":"644b375aa93808f2f401762de4e1969714e383052e69e0fbdfc82cd97fcda739"},{"version":"db7809c1e442d856386b91e80d0cc8c462646d0ffc4e8983855691bfa7f27f82","signature":"b52dcd199c97746007e4589749483d8b943e6bac0bbf6a90c0b9c7be86f9b793"},{"version":"9a73f0c9ff95b0fb44d9182341a4676830ad1186890fbad6f15fe1febcdd3c8e","signature":"5c8da175455dac9be33675ab12a100ab67e6c9685248bacc7faecbacc2882e57"},{"version":"08d6e5491945517d8417f2e653ee398d0225125c4ed0b013eba1d7f77d0f4b12","signature":"b52dcd199c97746007e4589749483d8b943e6bac0bbf6a90c0b9c7be86f9b793"},{"version":"ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","signature":"da14a67372982ca6e605fea114900b492b3316618581634e0ce72afbcb09baca"},{"version":"d3cfde44f8089768ebb08098c96d01ca260b88bccf238d55eee93f1c620ff5a5","impliedFormat":1},{"version":"293eadad9dead44c6fd1db6de552663c33f215c55a1bfa2802a1bceed88ff0ec","impliedFormat":1},{"version":"833e92c058d033cde3f29a6c7603f517001d1ddd8020bc94d2067a3bc69b2a8e","impliedFormat":1},{"version":"08b2fae7b0f553ad9f79faec864b179fc58bc172e295a70943e8585dd85f600c","impliedFormat":1},{"version":"f12edf1672a94c578eca32216839604f1e1c16b40a1896198deabf99c882b340","impliedFormat":1},{"version":"e3498cf5e428e6c6b9e97bd88736f26d6cf147dedbfa5a8ad3ed8e05e059af8a","impliedFormat":1},{"version":"dba3f34531fd9b1b6e072928b6f885aa4d28dd6789cbd0e93563d43f4b62da53","impliedFormat":1},{"version":"f672c876c1a04a223cf2023b3d91e8a52bb1544c576b81bf64a8fec82be9969c","impliedFormat":1},{"version":"e4b03ddcf8563b1c0aee782a185286ed85a255ce8a30df8453aade2188bbc904","impliedFormat":1},{"version":"2329d90062487e1eaca87b5e06abcbbeeecf80a82f65f949fd332cfcf824b87b","impliedFormat":1},{"version":"25b3f581e12ede11e5739f57a86e8668fbc0124f6649506def306cad2c59d262","impliedFormat":1},{"version":"4fdb529707247a1a917a4626bfb6a293d52cd8ee57ccf03830ec91d39d606d6d","impliedFormat":1},{"version":"a9ebb67d6bbead6044b43714b50dcb77b8f7541ffe803046fdec1714c1eba206","impliedFormat":1},{"version":"5780b706cece027f0d4444fbb4e1af62dc51e19da7c3d3719f67b22b033859b9","impliedFormat":1},{"version":"4749a5d10b6e3b0bd6c8d90f9ba68a91a97aa0c2c9a340dd83306b2f349d6d34","impliedFormat":99},{"version":"dd1729e568bbd92727b6703f2340096d07476d29085b3ee2f49e78e6f2029d20","impliedFormat":99},{"version":"efdb6c1c0e195ea378a0b7cd0e808f65176bea14396dc8bdccda80551e66d73f","impliedFormat":99},{"version":"de328e8fd327cf362e090965057fbbf14f2085c78b70eb31b61ceeca8d6da01c","impliedFormat":99},{"version":"b9e0783285db8fca77f8c20df30b66b201f914bacbfe472b86dcacdba555f360","impliedFormat":99},{"version":"005f10cafe0939ae8d6a98e19c4ddf8b59faf3f9ae38dfa5907b82b9a6cb4de9","impliedFormat":1},{"version":"089c056ad8ecb34ee72cb831491ab72c214d8fb7ecf94b96a1b4736ab54397a1","impliedFormat":1},{"version":"e643ef3093cba63af26396ae8dc58dc542c241027749dcdf715f3d3209f79a03","impliedFormat":1},{"version":"f40e6338b8137033a5b4efbe01de45a4399f2c304648eace01d852cd05eb861e","impliedFormat":1},{"version":"89d879fae02696e226dbcb7444d6153158fa264bb646071988f19a2e422b314f","impliedFormat":1},{"version":"57de3f0b1730cf8439c8aa4686f78f38b170a9b55e7a8393ae6f8a524bb3ba5a","impliedFormat":1},{"version":"e933bd300ea4f6c724d222bf2d93a0ae2b1e748baa1db09cb71d67d563794b2d","impliedFormat":1},{"version":"c43d0df83d8bb68ab9e2795cf1ec896ff1b5fab2023c977f3777819bc6b5c880","impliedFormat":1},{"version":"bf810d50332562d1b223a7ce607e5f8dc42714d8a3fa7bf39afe33830e107bf7","impliedFormat":1},{"version":"f025aff69699033567ebb4925578dedb18f63b4aa185f85005451cfd5fc53343","impliedFormat":1},{"version":"3d36c36df6ce6c4c3651a5f804ab07fe1c9bb8ce7d40ef4134038c364b429cb3","impliedFormat":1},{"version":"e9243dd3c92d2c56a2edf96cbce8faf357caf9397b95acaa65e960ad36cb7235","impliedFormat":1},{"version":"a24a9c59b7baecbb85c0ace2c07c9c5b7c2330bb5a2ae5d766f6bbf68f75e727","impliedFormat":1},{"version":"3c264d6a0f6be4f8684cb9e025f32c9b131cca7199c658eea28f0dae1f439124","impliedFormat":1},{"version":"d3cd789b0eebd5cebde1404383fd32c610bec782c74a415aa05ab3593abc35c8","impliedFormat":1},{"version":"8c1babb42f52952a6593b678f4cfb4afea5dc91e5cfaf3ca922cdd2d23b1277a","impliedFormat":1},{"version":"04ebb965333800caba800cabd1e18b02e0e69ab6a6f8948f2d53211df00a193c","impliedFormat":1},{"version":"f8e2be107b3e756e0a1c4f5e195e69dce69d38d0ff5c0b0509933e970c6d915b","impliedFormat":1},{"version":"309e580094520f9675a85c406ab5d1de4735f74a38f36690d569dbc5341f36a8","impliedFormat":1},{"version":"c2fa79fd37e4b0e4040de9d8db1b79accb1f8f63b3458cd0e5dac9d4f9e6f3f1","impliedFormat":1},{"version":"4f0d1a7e2a5a8b85d69f60a7be2a6223827f5fec473ba2142279841a54e8a845","impliedFormat":1},{"version":"ae2fb62b3647083fe8299e95dbfab2063c8301e9a626f42be0f360a57e434797","impliedFormat":1},{"version":"f53d803d9c9c8acdbb82ef5c6b8f224d42be50e9ab8bc09c8a9a942717214f9a","impliedFormat":1},{"version":"d2d70166533a2233aa35977eecea4b08c2f0f2e6e7b56c12a1c613c5ebf2c384","impliedFormat":1},{"version":"1097820fae2d12eb60006de0b5d057105e60d165cf8a6e6125f9876e6335cde7","impliedFormat":1},{"version":"8f62905f50830a638fd1a5ff68d9c8f2c1347ff046908eeb9119d257e8e8ae4a","impliedFormat":1},{"version":"8b4d34279952175f972f1aa62e136248311889148eb40a3e4782b244cece09f3","impliedFormat":1},{"version":"d3c3cc0840704fe524dbe8a812290bfd303e43d3bd43dcaac83ee682d2e15be0","impliedFormat":1},{"version":"71725ba9235f9d2aa02839162b1df2df59fd9dd91c110a54ea02112243d7a4d9","impliedFormat":1},{"version":"80af0c272dcb64518f7768428cdf91d21966a7f24ed0dfc69fad964d4c2ed8c1","impliedFormat":1},{"version":"1dc9702aa16e3ada78c84aa96868a7e5502001c402918b6d85ed25acbe80fd51","impliedFormat":1},{"version":"35f891c1bc36c97469df06316c65a718956515c8b3bdbeb146b468c02493ef13","impliedFormat":1},{"version":"2e9b05d7db853315f44d824e13840e6fdf17d615d13170b5f5cf830442018dcd","impliedFormat":1},{"version":"11989ad8152cf54a9cf974b02c1f03f2416857df6c5946ba735eb20ff9b3e9c2","impliedFormat":99},{"version":"91d3d5a235f545fd37bebfea42fc512970a2142ef3d8d9a02246760696d0b688","signature":"76cd2308eec82ec68321658d6a8d9fbc8f63b56d6882094751015b9caad0ab39"},{"version":"ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","signature":"da14a67372982ca6e605fea114900b492b3316618581634e0ce72afbcb09baca"},{"version":"c368f2790f6713acf830b247dbe062d6a944fb2c62e5a05f0bacc6a6e72b42d2","signature":"cef241a9446a68cfcbe3f505fac3e4957644e8a7a057c2d1790fc5ca42d09a34"},{"version":"ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","signature":"da14a67372982ca6e605fea114900b492b3316618581634e0ce72afbcb09baca"},{"version":"40aff816b4e1b45638916804abfb4537f433bd3e37daa045df524b21714b3f52","signature":"8b0809d17156abdb00dd2406f6f369bb86ad144853d2555ec94255a9471a9be5"},"51eabd9fa0243146e2361d069f28f1c4048d0061d4b83ca5ee22e2a41296e05f",{"version":"b62307e1e6055fe533030f943fba3ec889a26df59d3ebabc1f1b5d2fc27fd8ad","signature":"b52dcd199c97746007e4589749483d8b943e6bac0bbf6a90c0b9c7be86f9b793"},{"version":"c852b12f6e1543302ec6088bed22253ea53af9908f019d9866a9c1511435aee3","signature":"8838497aaa32eed261e1beabd02d2c337afbd21fa4a05e7bc0c555def576dbf6"},{"version":"35e2cc687c9f543c8dfaf388e137e3dab40ae3e17a533c7468e473aba0f00ecb","signature":"b52dcd199c97746007e4589749483d8b943e6bac0bbf6a90c0b9c7be86f9b793"},{"version":"9c351a879cb5034413d704d456ac46990fe9c33ec4f31fbff4457258bb04d0b4","signature":"587b01ba9a6e74d40d9ba6f6be8033e9df34c694c62015967580621ff9435e22"},{"version":"9147396c2448b821f6150c37957e6c8229b7974e56263491ee9af231f9be9956","signature":"b52dcd199c97746007e4589749483d8b943e6bac0bbf6a90c0b9c7be86f9b793"},{"version":"95f81bf531342f9316dc17195a4317ccd8519a005a34177da32ba38f33ce9a4d","signature":"2cd8e3af01048aab258439b63efd7514afc8f476197f31618494abafcbe5c44e"},{"version":"bff6eda0d22914281e87801ee098664f32063176fcbe664713d6e8c7cc48cd8c","signature":"b52dcd199c97746007e4589749483d8b943e6bac0bbf6a90c0b9c7be86f9b793"},{"version":"7c190550df69783c671fa0f9a30c50543d919bd82380d1052c9c46a54d26ae20","signature":"8db75b77dd8c50ccc5d607ef8e01c54c90a5244d09657563fd8767844b95c656"},{"version":"a656c3ff19c527654a23734b4c1cbef7d4e93119ac29fcdd69ce8e6e71a01700","signature":"b52dcd199c97746007e4589749483d8b943e6bac0bbf6a90c0b9c7be86f9b793"},{"version":"0eee6b522110f17e3f67d1f29e5e94e88167fafec5fc857df3f39fe177876564","signature":"17685c741b7bea45071dd46ea9dd31bb6a9968acea17381ff7e3c4bb4bdad1e8"},{"version":"210bc181f6760afdc15eb89d6d544c356af63c448625b83a65c3432213c05e96","signature":"b52dcd199c97746007e4589749483d8b943e6bac0bbf6a90c0b9c7be86f9b793"},{"version":"4e8704850859f0dbb9271a5eca160a0ebc2f3ca628dbedc7efae232a5834f46a","signature":"de67f6e01961a081cc42b1110e7019399fa164cb053165f8d22fc44e5e1487af"},{"version":"d495f32bab8da6f0885e0d60af9fc773225e96a0f3e9bfacb10de45671d6acc7","signature":"b52dcd199c97746007e4589749483d8b943e6bac0bbf6a90c0b9c7be86f9b793"},{"version":"46e85f45904254029ed52feb7bc0afdb627693aff2e54d609c83a757c65025ca","signature":"e7bec6a95fc9e95f870aed2997217de1c67c3733b1a1f3cb99de7e7cf82b5d08"},{"version":"9ada1fe6db948aba09cdda6756a21836b5eb85e1b3ff3094dec276dd28f74d2f","signature":"b52dcd199c97746007e4589749483d8b943e6bac0bbf6a90c0b9c7be86f9b793"},{"version":"2e43332ad2beb725c7b30d3559ffc813cb81c8b095358dc767dcab1c239c9306","signature":"efe0a1bb8a0e84604cd9a90d7ae76078f303d9d637299bfae098b70103f58a64"},{"version":"7ea7b1d69797d6b504f3076a6ee4c77018b6c096c91e6f0f2d53eafaabdb1a2e","signature":"b52dcd199c97746007e4589749483d8b943e6bac0bbf6a90c0b9c7be86f9b793"},{"version":"8466d36ef9e8f0398ecff46995ea0eb848e09c9b40be197b22a17c9025d51a86","signature":"78f4862bf4cb5ebabb029d2b71f72d4e7ba23d2ca59a9fd736af0a72e8ee17d7"},{"version":"d754fdc3356af0ed80b2057b978e601d28570ec2854d4e7345d0717de8f1849c","signature":"b52dcd199c97746007e4589749483d8b943e6bac0bbf6a90c0b9c7be86f9b793"},{"version":"075ecc1e827edcbb2812dae374e249fc0de73718c934b18dab29a82a1517b81c","signature":"47c2edcbdbcf34a8ba5819d67de40997e5b2b4e3aca2100fb9eb48b0754942f7"},"1507104ef7bbda1e124d1073e3093c1ece194dd3b42b87973f4fc49e6e8dd078",{"version":"ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","signature":"da14a67372982ca6e605fea114900b492b3316618581634e0ce72afbcb09baca"},{"version":"4f3beecfd7b1f9272fd59a720a1444777fb7849d5a6192a6d304a60de88855e9","signature":"0f85a7c1fe33a91a589145067aca211a6c638c8f5423045e55aa4f1d39f223ed"},"5db7e0cbcd4feeb9a6ce1f7cd34a7736dc331c5aeb18320f7185001c0596c531",{"version":"f6658ce86b0beff47ae63f2f6d741033aa674d05039316d7e7cd1bb8b9787430","signature":"b52dcd199c97746007e4589749483d8b943e6bac0bbf6a90c0b9c7be86f9b793"},{"version":"704ca0d41768d71cb6f49708f056c05b4f9f24f4ed77793376e8b132cf76baf8","signature":"6b51aedae50bc4b50236b71e06df2778b1cb855fb187d102439f8dfbeff05c63"},{"version":"d5940af73fd4876e3d626ed51d6c94ed914fcf64874fde8092452a0e9d08adc3","signature":"b52dcd199c97746007e4589749483d8b943e6bac0bbf6a90c0b9c7be86f9b793"},"5aa3e1e52d5a2590f145dfb57425955b18c292efd8201a1963a5b015a7adaf6e",{"version":"151ff381ef9ff8da2da9b9663ebf657eac35c4c9a19183420c05728f31a6761d","impliedFormat":1},{"version":"6c7176368037af28cb72f2392010fa1cef295d6d6744bca8cfb54985f3a18c3e","affectsGlobalScope":true,"impliedFormat":1},{"version":"ab41ef1f2cdafb8df48be20cd969d875602483859dc194e9c97c8a576892c052","affectsGlobalScope":true,"impliedFormat":1},{"version":"437e20f2ba32abaeb7985e0afe0002de1917bc74e949ba585e49feba65da6ca1","affectsGlobalScope":true,"impliedFormat":1},{"version":"21d819c173c0cf7cc3ce57c3276e77fd9a8a01d35a06ad87158781515c9a438a","impliedFormat":1},{"version":"a79e62f1e20467e11a904399b8b18b18c0c6eea6b50c1168bf215356d5bebfaf","affectsGlobalScope":true,"impliedFormat":1},{"version":"d802f0e6b5188646d307f070d83512e8eb94651858de8a82d1e47f60fb6da4e2","affectsGlobalScope":true,"impliedFormat":1},{"version":"17bb4105d0ea2ab2bfcb4f77ff8585691d5569c90ae15f4fa8d5ff9fb42b910b","affectsGlobalScope":true,"impliedFormat":1},{"version":"1db0b7dca579049ca4193d034d835f6bfe73096c73663e5ef9a0b5779939f3d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"9798340ffb0d067d69b1ae5b32faa17ab31b82466a3fc00d8f2f2df0c8554aaa","affectsGlobalScope":true,"impliedFormat":1},{"version":"456fa0c0ab68731564917642b977c71c3b7682240685b118652fb9253c9a6429","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e9c23ba78aabc2e0a27033f18737a6df754067731e69dc5f52823957d60a4b6","impliedFormat":1},{"version":"5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","impliedFormat":1},{"version":"763fe0f42b3d79b440a9b6e51e9ba3f3f91352469c1e4b3b67bfa4ff6352f3f4","impliedFormat":1},{"version":"25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","impliedFormat":1},{"version":"c464d66b20788266e5353b48dc4aa6bc0dc4a707276df1e7152ab0c9ae21fad8","impliedFormat":1},{"version":"78d0d27c130d35c60b5e5566c9f1e5be77caf39804636bc1a40133919a949f21","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"1d6e127068ea8e104a912e42fc0a110e2aa5a66a356a917a163e8cf9a65e4a75","impliedFormat":1},{"version":"5ded6427296cdf3b9542de4471d2aa8d3983671d4cac0f4bf9c637208d1ced43","impliedFormat":1},{"version":"7f182617db458e98fc18dfb272d40aa2fff3a353c44a89b2c0ccb3937709bfb5","impliedFormat":1},{"version":"cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","impliedFormat":1},{"version":"385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","impliedFormat":1},{"version":"9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","impliedFormat":1},{"version":"0b8a9268adaf4da35e7fa830c8981cfa22adbbe5b3f6f5ab91f6658899e657a7","impliedFormat":1},{"version":"11396ed8a44c02ab9798b7dca436009f866e8dae3c9c25e8c1fbc396880bf1bb","impliedFormat":1},{"version":"ba7bc87d01492633cb5a0e5da8a4a42a1c86270e7b3d2dea5d156828a84e4882","impliedFormat":1},{"version":"4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","impliedFormat":1},{"version":"c21dc52e277bcfc75fac0436ccb75c204f9e1b3fa5e12729670910639f27343e","impliedFormat":1},{"version":"13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","impliedFormat":1},{"version":"9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","impliedFormat":1},{"version":"4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","impliedFormat":1},{"version":"24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","impliedFormat":1},{"version":"ea0148f897b45a76544ae179784c95af1bd6721b8610af9ffa467a518a086a43","impliedFormat":1},{"version":"24c6a117721e606c9984335f71711877293a9651e44f59f3d21c1ea0856f9cc9","impliedFormat":1},{"version":"dd3273ead9fbde62a72949c97dbec2247ea08e0c6952e701a483d74ef92d6a17","impliedFormat":1},{"version":"405822be75ad3e4d162e07439bac80c6bcc6dbae1929e179cf467ec0b9ee4e2e","impliedFormat":1},{"version":"0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","impliedFormat":1},{"version":"e61be3f894b41b7baa1fbd6a66893f2579bfad01d208b4ff61daef21493ef0a8","impliedFormat":1},{"version":"bd0532fd6556073727d28da0edfd1736417a3f9f394877b6d5ef6ad88fba1d1a","impliedFormat":1},{"version":"89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","impliedFormat":1},{"version":"615ba88d0128ed16bf83ef8ccbb6aff05c3ee2db1cc0f89ab50a4939bfc1943f","impliedFormat":1},{"version":"a4d551dbf8746780194d550c88f26cf937caf8d56f102969a110cfaed4b06656","impliedFormat":1},{"version":"8bd86b8e8f6a6aa6c49b71e14c4ffe1211a0e97c80f08d2c8cc98838006e4b88","impliedFormat":1},{"version":"317e63deeb21ac07f3992f5b50cdca8338f10acd4fbb7257ebf56735bf52ab00","impliedFormat":1},{"version":"4732aec92b20fb28c5fe9ad99521fb59974289ed1e45aecb282616202184064f","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"bf67d53d168abc1298888693338cb82854bdb2e69ef83f8a0092093c2d562107","impliedFormat":1},{"version":"2cbe0621042e2a68c7cbce5dfed3906a1862a16a7d496010636cdbdb91341c0f","affectsGlobalScope":true,"impliedFormat":1},{"version":"f9501cc13ce624c72b61f12b3963e84fad210fbdf0ffbc4590e08460a3f04eba","affectsGlobalScope":true,"impliedFormat":1},{"version":"e7721c4f69f93c91360c26a0a84ee885997d748237ef78ef665b153e622b36c1","affectsGlobalScope":true,"impliedFormat":1},{"version":"a38efe83ff77c34e0f418a806a01ca3910c02ee7d64212a59d59bca6c2c38fa1","impliedFormat":1},{"version":"7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","impliedFormat":1},{"version":"2b06b93fd01bcd49d1a6bd1f9b65ddcae6480b9a86e9061634d6f8e354c1468f","impliedFormat":1},{"version":"7b988bc259155186e6b09dd8b32856d9e45c8d261e63c19abaf590bb6550f922","affectsGlobalScope":true,"impliedFormat":1},{"version":"fe7b52f993f9336b595190f3c1fcc259bb2cf6dcb4ac8fdb1e0454cc5df7301e","impliedFormat":1},{"version":"e9b97d69510658d2f4199b7d384326b7c4053b9e6645f5c19e1c2a54ede427fc","impliedFormat":1},{"version":"c2510f124c0293ab80b1777c44d80f812b75612f297b9857406468c0f4dafe29","affectsGlobalScope":true,"impliedFormat":1},{"version":"5524481e56c48ff486f42926778c0a3cce1cc85dc46683b92b1271865bcf015a","impliedFormat":1},{"version":"81711af669f63d43ccb4c08e15beda796656dd46673d0def001c7055db53852d","affectsGlobalScope":true,"impliedFormat":1},{"version":"19d5f8d3930e9f99aa2c36258bf95abbe5adf7e889e6181872d1cdba7c9a7dd5","impliedFormat":1},{"version":"9855e02d837744303391e5623a531734443a5f8e6e8755e018c41d63ad797db2","impliedFormat":1},{"version":"bdba81959361810be44bcfdd283f4d601e406ab5ad1d2bdff0ed480cf983c9d7","impliedFormat":1},{"version":"836a356aae992ff3c28a0212e3eabcb76dd4b0cc06bcb9607aeef560661b860d","impliedFormat":1},{"version":"1e0d1f8b0adfa0b0330e028c7941b5a98c08b600efe7f14d2d2a00854fb2f393","impliedFormat":1},{"version":"b326f4813b90d230ec3950f66bd5b5ce3971aac5fac67cfafc54aa07b39fd07f","affectsGlobalScope":true,"impliedFormat":1},{"version":"c8420c7c2b778b334587a4c0311833b5212ff2f684ea37b2f0e2b117f1d7210d","impliedFormat":1},{"version":"b6b08215821c9833b0e8e30ea1ed178009f2f3ff5d7fae3865ee42f97cc87784","impliedFormat":1},{"version":"b795c3e47a26be91ac33d8115acdc37bfa41ecc701fb237c64a23da4d2b7e1d8","impliedFormat":1},{"version":"73cf6cc19f16c0191e4e9d497ab0c11c7b38f1ca3f01ad0f09a3a5a971aac4b8","impliedFormat":1},{"version":"528b62e4272e3ddfb50e8eed9e359dedea0a4d171c3eb8f337f4892aac37b24b","impliedFormat":1},{"version":"ed58b9974bb3114f39806c9c2c6258c4ffa6a255921976a7c53dfa94bf178f42","impliedFormat":1},{"version":"e6fa9ad47c5f71ff733744a029d1dc472c618de53804eae08ffc243b936f87ff","affectsGlobalScope":true,"impliedFormat":1},{"version":"f72bc8fe16da67e4e3268599295797b202b95e54bd215a03f97e925dd1502a36","impliedFormat":1},{"version":"b1b6ee0d012aeebe11d776a155d8979730440082797695fc8e2a5c326285678f","impliedFormat":1},{"version":"45875bcae57270aeb3ebc73a5e3fb4c7b9d91d6b045f107c1d8513c28ece71c0","impliedFormat":1},{"version":"915e18c559321c0afaa8d34674d3eb77e1ded12c3e85bf2a9891ec48b07a1ca5","affectsGlobalScope":true,"impliedFormat":1},{"version":"e9727a118ce60808e62457c89762fe5a4e2be8e9fd0112d12432d1bafdba942f","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f16a7e4deafa527ed9995a772bb380eb7d3c2c0fd4ae178c5263ed18394db2c","impliedFormat":1},{"version":"933921f0bb0ec12ef45d1062a1fc0f27635318f4d294e4d99de9a5493e618ca2","impliedFormat":1},{"version":"71a0f3ad612c123b57239a7749770017ecfe6b66411488000aba83e4546fde25","impliedFormat":1},{"version":"70b57b5529051497e9f6482b76d91c0dcbb103d9ead8a0549f5bab8f65e5d031","impliedFormat":1},{"version":"4f9d8ca0c417b67b69eeb54c7ca1bedd7b56034bb9bfd27c5d4f3bc4692daca7","impliedFormat":1},{"version":"814118df420c4e38fe5ae1b9a3bafb6e9c2aa40838e528cde908381867be6466","impliedFormat":1},{"version":"3a90b9beac4c2bfdf6517faae0940a042b81652badf747df0a7c7593456f6ebe","impliedFormat":1},{"version":"8302157cd431b3943eed09ad439b4441826c673d9f870dcb0e1f48e891a4211e","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"125d792ec6c0c0f657d758055c494301cc5fdb327d9d9d5960b3f129aff76093","impliedFormat":1},{"version":"dba28a419aec76ed864ef43e5f577a5c99a010c32e5949fe4e17a4d57c58dd11","affectsGlobalScope":true,"impliedFormat":1},{"version":"2754d8221d77c7b382096651925eb476f1066b3348da4b73fe71ced7801edada","impliedFormat":1},{"version":"a5890565ed564c7b29eb1b1038d4e10c03a3f5231b0a8d48fea4b41ab19f4f46","impliedFormat":1},{"version":"f0be1b8078cd549d91f37c30c222c2a187ac1cf981d994fb476a1adc61387b14","affectsGlobalScope":true,"impliedFormat":1},{"version":"0aaed1d72199b01234152f7a60046bc947f1f37d78d182e9ae09c4289e06a592","impliedFormat":1},{"version":"98ffdf93dfdd206516971d28e3e473f417a5cfd41172e46b4ce45008f640588e","impliedFormat":1},{"version":"66ba1b2c3e3a3644a1011cd530fb444a96b1b2dfe2f5e837a002d41a1a799e60","impliedFormat":1},{"version":"7e514f5b852fdbc166b539fdd1f4e9114f29911592a5eb10a94bb3a13ccac3c4","impliedFormat":1},{"version":"cee74f5970ffc01041e5bffc3f324c20450534af4054d2c043cb49dbbd4ec8f7","affectsGlobalScope":true,"impliedFormat":1},{"version":"1a654e0d950353614ba4637a8de4f9d367903a0692b748e11fccf8c880c99735","affectsGlobalScope":true,"impliedFormat":1},{"version":"42da246c46ca3fd421b6fd88bb4466cda7137cf33e87ba5ceeded30219c428bd","impliedFormat":1},{"version":"3a051941721a7f905544732b0eb819c8d88333a96576b13af08b82c4f17581e4","impliedFormat":1},{"version":"ac5ed35e649cdd8143131964336ab9076937fa91802ec760b3ea63b59175c10a","impliedFormat":1},{"version":"f2feb9696208311cdcf1936df2b7cbec96a3f0ab9d403952bf170546d4253a90","affectsGlobalScope":true,"impliedFormat":1},{"version":"db3d77167a7da6c5ba0c51c5b654820e3464093f21724ccd774c0b9bc3f81bc0","impliedFormat":1},{"version":"d9b6fd8640f6ad3f13ce9ce47d91061a698cf7763fed7f668e4f89709989aae5","impliedFormat":1}],"root":[60,[269,272],[274,322],[376,409]],"options":{"composite":false,"declaration":false,"declarationMap":false,"downlevelIteration":true,"experimentalDecorators":true,"importHelpers":true,"inlineSourceMap":true,"inlineSources":true,"module":7,"noEmitOnError":false,"noFallthroughCasesInSwitch":true,"noImplicitOverride":true,"noImplicitReturns":true,"noPropertyAccessFromIndexSignature":true,"outDir":"../../../..","removeComments":false,"strict":true,"target":9,"tsBuildInfoFile":"./.tsbuildinfo","useDefineForClassFields":false},"referencedMap":[[406,1],[407,2],[60,3],[405,4],[260,5],[265,6],[262,7],[264,8],[259,8],[261,9],[256,10],[63,11],[255,12],[253,13],[62,9],[61,9],[258,14],[254,9],[257,9],[273,15],[263,16],[266,17],[268,18],[267,19],[375,20],[341,21],[337,9],[340,22],[339,23],[338,24],[410,9],[462,25],[463,25],[464,26],[416,27],[465,28],[466,29],[467,30],[411,9],[414,31],[412,9],[413,9],[468,32],[469,33],[470,34],[471,35],[472,36],[473,37],[474,37],[475,38],[476,39],[477,40],[478,41],[417,9],[415,9],[479,42],[480,43],[481,44],[514,45],[482,46],[483,47],[484,48],[485,49],[486,50],[487,51],[488,52],[489,53],[490,54],[491,55],[492,55],[493,56],[494,9],[495,9],[496,57],[498,58],[497,59],[499,60],[500,61],[501,62],[502,63],[503,64],[504,65],[505,66],[506,67],[507,68],[508,69],[509,70],[510,71],[511,72],[418,9],[419,9],[420,9],[459,73],[460,9],[461,9],[512,74],[513,75],[421,9],[342,76],[344,77],[345,78],[343,79],[367,9],[368,80],[350,81],[362,82],[361,83],[359,84],[369,85],[347,9],[372,86],[354,9],[365,87],[364,88],[366,89],[370,9],[360,90],[353,91],[358,92],[371,93],[356,94],[351,9],[352,95],[373,96],[363,97],[357,93],[348,9],[374,98],[346,83],[349,9],[355,83],[252,99],[225,9],[203,100],[201,100],[251,101],[216,102],[215,102],[116,103],[67,104],[223,103],[224,103],[226,105],[227,103],[228,106],[127,107],[229,103],[200,103],[230,103],[231,108],[232,103],[233,102],[234,109],[235,103],[236,103],[237,103],[238,103],[239,102],[240,103],[241,103],[242,103],[243,103],[244,110],[245,103],[246,103],[247,103],[248,103],[249,103],[66,101],[69,106],[70,106],[71,106],[72,106],[73,106],[74,106],[75,106],[76,103],[78,111],[79,106],[77,106],[80,106],[81,106],[82,106],[83,106],[84,106],[85,106],[86,103],[87,106],[88,106],[89,106],[90,106],[91,106],[92,103],[93,106],[94,106],[95,106],[96,106],[97,106],[98,106],[99,103],[101,112],[100,106],[102,106],[103,106],[104,106],[105,106],[106,110],[107,103],[108,103],[122,113],[110,114],[111,106],[112,106],[113,103],[114,106],[115,106],[117,115],[118,106],[119,106],[120,106],[121,106],[123,106],[124,106],[125,106],[126,106],[128,116],[129,106],[130,106],[131,106],[132,103],[133,106],[134,117],[135,117],[136,117],[137,103],[138,106],[139,106],[140,106],[145,106],[141,106],[142,103],[143,106],[144,103],[146,106],[147,106],[148,106],[149,106],[150,106],[151,106],[152,103],[153,106],[154,106],[155,106],[156,106],[157,106],[158,106],[159,106],[160,106],[161,106],[162,106],[163,106],[164,106],[165,106],[166,106],[167,106],[168,106],[169,118],[170,106],[171,106],[172,106],[173,106],[174,106],[175,106],[176,103],[177,103],[178,103],[179,103],[180,103],[181,106],[182,106],[183,106],[184,106],[202,119],[250,103],[187,120],[186,121],[210,122],[209,123],[205,124],[204,123],[206,125],[195,126],[193,127],[208,128],[207,125],[194,9],[196,129],[109,130],[65,131],[64,106],[199,9],[191,132],[192,133],[189,9],[190,134],[188,106],[197,135],[68,136],[217,9],[218,9],[211,9],[214,102],[213,9],[219,9],[220,9],[212,137],[221,9],[222,9],[185,138],[198,139],[59,9],[57,9],[58,9],[10,9],[12,9],[11,9],[2,9],[13,9],[14,9],[15,9],[16,9],[17,9],[18,9],[19,9],[20,9],[3,9],[21,9],[22,9],[4,9],[23,9],[27,9],[24,9],[25,9],[26,9],[28,9],[29,9],[30,9],[5,9],[31,9],[32,9],[33,9],[34,9],[6,9],[38,9],[35,9],[36,9],[37,9],[39,9],[7,9],[40,9],[45,9],[46,9],[41,9],[42,9],[43,9],[44,9],[8,9],[50,9],[47,9],[48,9],[49,9],[51,9],[9,9],[52,9],[53,9],[54,9],[56,9],[55,9],[1,9],[437,140],[447,141],[436,140],[457,142],[428,143],[427,144],[456,145],[450,146],[455,147],[430,148],[444,149],[429,150],[453,151],[425,152],[424,145],[454,153],[426,154],[431,155],[432,9],[435,155],[422,9],[458,156],[448,157],[439,158],[440,159],[442,160],[438,161],[441,162],[451,145],[433,163],[434,164],[443,165],[423,166],[446,157],[445,155],[449,9],[452,167],[336,168],[328,169],[335,170],[330,9],[331,9],[329,171],[332,172],[323,9],[324,9],[325,168],[327,173],[333,9],[334,174],[326,175],[290,176],[293,177],[294,3],[402,178],[392,179],[393,180],[390,181],[391,182],[394,183],[395,184],[396,185],[397,186],[398,187],[399,188],[274,189],[287,190],[408,191],[409,192],[400,193],[401,194],[386,195],[387,196],[384,197],[385,198],[382,199],[383,200],[388,201],[389,202],[313,203],[316,204],[307,205],[310,206],[295,207],[298,208],[311,209],[312,210],[317,211],[318,212],[288,213],[289,214],[305,215],[306,216],[299,217],[304,218],[291,219],[292,220],[319,221],[320,222],[321,223],[381,224],[403,3],[404,225],[282,3],[283,226],[301,3],[302,227],[269,3],[272,228],[277,3],[278,229],[377,3],[378,230],[322,3],[376,231],[285,3],[286,232],[270,3],[271,233],[379,3],[380,234],[275,3],[276,235],[296,3],[297,236],[308,3],[309,237],[281,3],[284,238],[279,3],[280,239],[300,3],[303,240],[314,3],[315,241]],"semanticDiagnosticsPerFile":[60,269,270,274,275,277,279,281,282,285,288,290,291,294,295,296,299,300,301,305,307,308,311,313,314,317,319,321,322,377,379,382,384,386,388,390,392,394,396,398,400,403,406,408],"version":"5.8.3"} \ No newline at end of file +{"fileNames":["../../../../node_modules/typescript/lib/lib.es5.d.ts","../../../../node_modules/typescript/lib/lib.es2015.d.ts","../../../../node_modules/typescript/lib/lib.es2016.d.ts","../../../../node_modules/typescript/lib/lib.es2017.d.ts","../../../../node_modules/typescript/lib/lib.es2018.d.ts","../../../../node_modules/typescript/lib/lib.es2019.d.ts","../../../../node_modules/typescript/lib/lib.es2020.d.ts","../../../../node_modules/typescript/lib/lib.es2021.d.ts","../../../../node_modules/typescript/lib/lib.es2022.d.ts","../../../../node_modules/typescript/lib/lib.dom.d.ts","../../../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../../node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../../../node_modules/typescript/lib/lib.es2017.date.d.ts","../../../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../../node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../../../node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../../node_modules/typescript/lib/lib.es2021.string.d.ts","../../../../node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../../node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2022.array.d.ts","../../../../node_modules/typescript/lib/lib.es2022.error.d.ts","../../../../node_modules/typescript/lib/lib.es2022.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2022.object.d.ts","../../../../node_modules/typescript/lib/lib.es2022.string.d.ts","../../../../node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../../../node_modules/typescript/lib/lib.decorators.d.ts","../../../../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../../../node_modules/tslib/tslib.d.ts","../../../../index.ngtypecheck.ts","../../../../node_modules/@angular/core/graph.d.d.ts","../../../../node_modules/@angular/core/event_dispatcher.d.d.ts","../../../../node_modules/@angular/core/chrome_dev_tools_performance.d.d.ts","../../../../node_modules/rxjs/dist/types/internal/subscription.d.ts","../../../../node_modules/rxjs/dist/types/internal/subscriber.d.ts","../../../../node_modules/rxjs/dist/types/internal/operator.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable.d.ts","../../../../node_modules/rxjs/dist/types/internal/types.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/audit.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/audittime.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/buffer.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/buffercount.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/buffertime.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/buffertoggle.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/bufferwhen.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/catcherror.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/combinelatestall.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/combineall.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/combinelatest.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/combinelatestwith.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/concat.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/concatall.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/concatmap.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/concatmapto.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/concatwith.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/connect.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/count.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/debounce.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/debouncetime.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/defaultifempty.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/delay.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/delaywhen.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/dematerialize.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/distinct.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/distinctuntilchanged.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/distinctuntilkeychanged.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/elementat.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/endwith.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/every.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/exhaustall.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/exhaust.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/exhaustmap.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/expand.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/filter.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/finalize.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/find.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/findindex.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/first.d.ts","../../../../node_modules/rxjs/dist/types/internal/subject.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/groupby.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/ignoreelements.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/isempty.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/last.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/map.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/mapto.d.ts","../../../../node_modules/rxjs/dist/types/internal/notification.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/materialize.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/max.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/merge.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/mergeall.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/mergemap.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/flatmap.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/mergemapto.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/mergescan.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/mergewith.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/min.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/connectableobservable.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/multicast.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/observeon.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/onerrorresumenextwith.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/pairwise.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/partition.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/pluck.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/publish.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/publishbehavior.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/publishlast.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/publishreplay.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/race.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/racewith.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/reduce.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/repeat.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/repeatwhen.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/retry.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/retrywhen.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/refcount.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/sample.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/sampletime.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/scan.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/sequenceequal.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/share.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/sharereplay.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/single.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/skip.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/skiplast.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/skipuntil.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/skipwhile.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/startwith.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/subscribeon.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/switchall.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/switchmap.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/switchmapto.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/switchscan.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/take.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/takelast.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/takeuntil.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/takewhile.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/tap.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/throttle.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/throttletime.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/throwifempty.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/timeinterval.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/timeout.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/timeoutwith.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/timestamp.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/toarray.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/window.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/windowcount.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/windowtime.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/windowtoggle.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/windowwhen.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/withlatestfrom.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/zip.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/zipall.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/zipwith.d.ts","../../../../node_modules/rxjs/dist/types/operators/index.d.ts","../../../../node_modules/rxjs/dist/types/internal/scheduler/action.d.ts","../../../../node_modules/rxjs/dist/types/internal/scheduler.d.ts","../../../../node_modules/rxjs/dist/types/internal/testing/testmessage.d.ts","../../../../node_modules/rxjs/dist/types/internal/testing/subscriptionlog.d.ts","../../../../node_modules/rxjs/dist/types/internal/testing/subscriptionloggable.d.ts","../../../../node_modules/rxjs/dist/types/internal/testing/coldobservable.d.ts","../../../../node_modules/rxjs/dist/types/internal/testing/hotobservable.d.ts","../../../../node_modules/rxjs/dist/types/internal/scheduler/asyncscheduler.d.ts","../../../../node_modules/rxjs/dist/types/internal/scheduler/timerhandle.d.ts","../../../../node_modules/rxjs/dist/types/internal/scheduler/asyncaction.d.ts","../../../../node_modules/rxjs/dist/types/internal/scheduler/virtualtimescheduler.d.ts","../../../../node_modules/rxjs/dist/types/internal/testing/testscheduler.d.ts","../../../../node_modules/rxjs/dist/types/testing/index.d.ts","../../../../node_modules/rxjs/dist/types/internal/symbol/observable.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/dom/animationframes.d.ts","../../../../node_modules/rxjs/dist/types/internal/behaviorsubject.d.ts","../../../../node_modules/rxjs/dist/types/internal/replaysubject.d.ts","../../../../node_modules/rxjs/dist/types/internal/asyncsubject.d.ts","../../../../node_modules/rxjs/dist/types/internal/scheduler/asapscheduler.d.ts","../../../../node_modules/rxjs/dist/types/internal/scheduler/asap.d.ts","../../../../node_modules/rxjs/dist/types/internal/scheduler/async.d.ts","../../../../node_modules/rxjs/dist/types/internal/scheduler/queuescheduler.d.ts","../../../../node_modules/rxjs/dist/types/internal/scheduler/queue.d.ts","../../../../node_modules/rxjs/dist/types/internal/scheduler/animationframescheduler.d.ts","../../../../node_modules/rxjs/dist/types/internal/scheduler/animationframe.d.ts","../../../../node_modules/rxjs/dist/types/internal/util/identity.d.ts","../../../../node_modules/rxjs/dist/types/internal/util/pipe.d.ts","../../../../node_modules/rxjs/dist/types/internal/util/noop.d.ts","../../../../node_modules/rxjs/dist/types/internal/util/isobservable.d.ts","../../../../node_modules/rxjs/dist/types/internal/lastvaluefrom.d.ts","../../../../node_modules/rxjs/dist/types/internal/firstvaluefrom.d.ts","../../../../node_modules/rxjs/dist/types/internal/util/argumentoutofrangeerror.d.ts","../../../../node_modules/rxjs/dist/types/internal/util/emptyerror.d.ts","../../../../node_modules/rxjs/dist/types/internal/util/notfounderror.d.ts","../../../../node_modules/rxjs/dist/types/internal/util/objectunsubscribederror.d.ts","../../../../node_modules/rxjs/dist/types/internal/util/sequenceerror.d.ts","../../../../node_modules/rxjs/dist/types/internal/util/unsubscriptionerror.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/bindcallback.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/bindnodecallback.d.ts","../../../../node_modules/rxjs/dist/types/internal/anycatcher.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/combinelatest.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/concat.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/connectable.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/defer.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/empty.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/forkjoin.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/from.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/fromevent.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/fromeventpattern.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/generate.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/iif.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/interval.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/merge.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/never.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/of.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/onerrorresumenext.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/pairs.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/partition.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/race.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/range.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/throwerror.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/timer.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/using.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/zip.d.ts","../../../../node_modules/rxjs/dist/types/internal/scheduled/scheduled.d.ts","../../../../node_modules/rxjs/dist/types/internal/config.d.ts","../../../../node_modules/rxjs/dist/types/index.d.ts","../../../../node_modules/@angular/core/effect.d.d.ts","../../../../node_modules/@angular/core/primitives/di/index.d.ts","../../../../node_modules/@angular/core/discovery.d.d.ts","../../../../node_modules/@angular/core/api.d.d.ts","../../../../node_modules/@angular/core/weak_ref.d.d.ts","../../../../node_modules/@angular/core/index.d.ts","../../../../node_modules/@angular/common/platform_location.d.d.ts","../../../../node_modules/@angular/common/common_module.d.d.ts","../../../../node_modules/@angular/common/xhr.d.d.ts","../../../../node_modules/@angular/common/index.d.ts","../../../../node_modules/@angular/platform-browser/browser.d.d.ts","../../../../node_modules/@angular/common/module.d.d.ts","../../../../node_modules/@angular/common/http/index.d.ts","../../../../node_modules/@angular/platform-browser/index.d.ts","../../../../node_modules/@angular/router/router_module.d.d.ts","../../../../node_modules/@angular/router/index.d.ts","../../../../src/app.component.ngtypecheck.ts","../../../../src/components/header/header.component.ngtypecheck.ts","../../../../src/services/instance.service.ngtypecheck.ts","../../../../src/services/instance.service.ts","../../../../node_modules/@angular/forms/index.d.ts","../../../../src/services/auth.service.ngtypecheck.ts","../../../../src/services/auth.service.ts","../../../../src/services/user.service.ngtypecheck.ts","../../../../src/services/user.service.ts","../../../../src/pipes/translate.pipe.ngtypecheck.ts","../../../../src/services/i18n.service.ngtypecheck.ts","../../../../src/services/i18n.service.ts","../../../../src/pipes/translate.pipe.ts","../../../../src/services/themes.service.ngtypecheck.ts","../../../../src/models/theme.model.ngtypecheck.ts","../../../../src/models/theme.model.ts","../../../../src/services/themes.service.ts","../../../../src/services/history.service.ngtypecheck.ts","../../../../src/services/history.service.ts","../../../../src/components/search/search-box.component.ngtypecheck.ts","../../../../src/app/core/providers/provider-registry.ngtypecheck.ts","../../../../src/app/core/providers/provider-registry.ts","../../../../src/components/search/provider-picker.component.ngtypecheck.ts","../../../../src/components/search/provider-picker.component.ts","../../../../src/app/search/search.service.ngtypecheck.ts","../../../../src/app/search/search.service.ts","../../../../src/components/search/search-box.component.ts","../../../../src/components/header/header.component.ts","../../../../src/components/sidebar/sidebar.component.ngtypecheck.ts","../../../../src/components/sidebar/sidebar.component.ts","../../../../src/components/themes/themes-nav.component.ngtypecheck.ts","../../../../src/components/themes/themes-nav.component.ts","../../../../src/app.component.ts","../../../../src/app.routes.ngtypecheck.ts","../../../../src/components/themes/theme-page.component.ngtypecheck.ts","../../../../src/services/youtube-api.service.ngtypecheck.ts","../../../../src/models/video.model.ngtypecheck.ts","../../../../src/models/video.model.ts","../../../../src/services/youtube-api.service.ts","../../../../src/components/shared/components/like-button/like-button.component.ngtypecheck.ts","../../../../src/services/likes.service.ngtypecheck.ts","../../../../src/services/likes.service.ts","../../../../src/components/shared/components/like-button/like-button.component.ts","../../../../src/components/themes/theme-page.component.ts","../../../../src/components/themes/provider-theme-page.component.ngtypecheck.ts","../../../../src/components/themes/provider-theme-page.component.ts","../../../../src/components/search/search.component.ngtypecheck.ts","../../../../src/components/shared/infinite-anchor/infinite-anchor.component.ngtypecheck.ts","../../../../src/components/shared/infinite-anchor/infinite-anchor.component.ts","../../../../src/utils/date.util.ngtypecheck.ts","../../../../src/utils/date.util.ts","../../../../src/components/shared/components/add-to-playlist/add-to-playlist.component.ngtypecheck.ts","../../../../src/services/playlists.service.ngtypecheck.ts","../../../../src/services/playlists.service.ts","../../../../src/components/shared/components/add-to-playlist/add-to-playlist.component.ts","../../../../src/components/search/search-suggestions.component.ngtypecheck.ts","../../../../src/components/search/search-suggestions.component.ts","../../../../src/components/search/search.component.ts","../../../../src/components/shorts/watch-short.component.ngtypecheck.ts","../../../../src/components/shorts/watch-short.component.ts","../../../../src/components/watch/watch.component.ngtypecheck.ts","../../../../src/components/video-player/video-player.component.ngtypecheck.ts","../../../../src/components/video-player/video-player.component.ts","../../../../src/services/gemini.service.ngtypecheck.ts","../../../../node_modules/zod/v3/helpers/typealiases.d.cts","../../../../node_modules/zod/v3/helpers/util.d.cts","../../../../node_modules/zod/v3/index.d.cts","../../../../node_modules/zod/v3/zoderror.d.cts","../../../../node_modules/zod/v3/locales/en.d.cts","../../../../node_modules/zod/v3/errors.d.cts","../../../../node_modules/zod/v3/helpers/parseutil.d.cts","../../../../node_modules/zod/v3/helpers/enumutil.d.cts","../../../../node_modules/zod/v3/helpers/errorutil.d.cts","../../../../node_modules/zod/v3/helpers/partialutil.d.cts","../../../../node_modules/zod/v3/standard-schema.d.cts","../../../../node_modules/zod/v3/types.d.cts","../../../../node_modules/zod/v3/external.d.cts","../../../../node_modules/zod/index.d.cts","../../../../node_modules/@modelcontextprotocol/sdk/dist/esm/server/auth/types.d.ts","../../../../node_modules/@modelcontextprotocol/sdk/dist/esm/types.d.ts","../../../../node_modules/@modelcontextprotocol/sdk/dist/esm/shared/transport.d.ts","../../../../node_modules/@modelcontextprotocol/sdk/dist/esm/shared/protocol.d.ts","../../../../node_modules/@modelcontextprotocol/sdk/dist/esm/client/index.d.ts","../../../../node_modules/gaxios/build/src/common.d.ts","../../../../node_modules/gaxios/build/src/interceptor.d.ts","../../../../node_modules/gaxios/build/src/gaxios.d.ts","../../../../node_modules/gaxios/build/src/index.d.ts","../../../../node_modules/google-auth-library/build/src/transporters.d.ts","../../../../node_modules/google-auth-library/build/src/auth/credentials.d.ts","../../../../node_modules/google-auth-library/build/src/crypto/crypto.d.ts","../../../../node_modules/google-auth-library/build/src/util.d.ts","../../../../node_modules/google-auth-library/build/src/auth/authclient.d.ts","../../../../node_modules/google-auth-library/build/src/auth/loginticket.d.ts","../../../../node_modules/google-auth-library/build/src/auth/oauth2client.d.ts","../../../../node_modules/google-auth-library/build/src/auth/idtokenclient.d.ts","../../../../node_modules/google-auth-library/build/src/auth/envdetect.d.ts","../../../../node_modules/gtoken/build/src/index.d.ts","../../../../node_modules/google-auth-library/build/src/auth/jwtclient.d.ts","../../../../node_modules/google-auth-library/build/src/auth/refreshclient.d.ts","../../../../node_modules/google-auth-library/build/src/auth/impersonated.d.ts","../../../../node_modules/google-auth-library/build/src/auth/baseexternalclient.d.ts","../../../../node_modules/google-auth-library/build/src/auth/identitypoolclient.d.ts","../../../../node_modules/google-auth-library/build/src/auth/awsrequestsigner.d.ts","../../../../node_modules/google-auth-library/build/src/auth/awsclient.d.ts","../../../../node_modules/google-auth-library/build/src/auth/pluggable-auth-client.d.ts","../../../../node_modules/google-auth-library/build/src/auth/externalclient.d.ts","../../../../node_modules/google-auth-library/build/src/auth/externalaccountauthorizeduserclient.d.ts","../../../../node_modules/google-auth-library/build/src/auth/googleauth.d.ts","../../../../node_modules/gcp-metadata/build/src/gcp-residency.d.ts","../../../../node_modules/gcp-metadata/build/src/index.d.ts","../../../../node_modules/google-auth-library/build/src/auth/computeclient.d.ts","../../../../node_modules/google-auth-library/build/src/auth/iam.d.ts","../../../../node_modules/google-auth-library/build/src/auth/jwtaccess.d.ts","../../../../node_modules/google-auth-library/build/src/auth/downscopedclient.d.ts","../../../../node_modules/google-auth-library/build/src/auth/passthrough.d.ts","../../../../node_modules/google-auth-library/build/src/index.d.ts","../../../../node_modules/@google/genai/dist/genai.d.ts","../../../../src/services/gemini.service.ts","../../../../src/services/download.service.ngtypecheck.ts","../../../../src/services/download.service.ts","../../../../src/services/iframe-progress.service.ngtypecheck.ts","../../../../src/services/iframe-progress.service.ts","../../../../src/components/watch/watch.component.ts","../../../../src/components/library/playlists/playlists.component.ngtypecheck.ts","../../../../src/components/library/playlists/playlists.component.ts","../../../../src/components/library/playlists/playlist-detail.component.ngtypecheck.ts","../../../../src/components/library/playlists/playlist-detail.component.ts","../../../../src/components/library/liked/liked.component.ngtypecheck.ts","../../../../src/components/library/liked/liked.component.ts","../../../../src/components/library/subscriptions/subscriptions.component.ngtypecheck.ts","../../../../src/components/library/subscriptions/subscriptions.component.ts","../../../../src/components/account/preferences/preferences.component.ngtypecheck.ts","../../../../src/components/account/preferences/preferences.component.ts","../../../../src/components/account/history/history.component.ngtypecheck.ts","../../../../src/components/account/history/history.component.ts","../../../../src/components/account/sessions/sessions.component.ngtypecheck.ts","../../../../src/components/account/sessions/sessions.component.ts","../../../../src/components/auth/login/login.component.ngtypecheck.ts","../../../../src/components/auth/login/login.component.ts","../../../../src/components/auth/register/register.component.ngtypecheck.ts","../../../../src/components/auth/register/register.component.ts","../../../../src/components/info/utilisation/utilisation.component.ngtypecheck.ts","../../../../src/components/info/utilisation/utilisation.component.ts","../../../../src/app.routes.ts","../../../../src/interceptors/auth.interceptor.ngtypecheck.ts","../../../../src/interceptors/auth.interceptor.ts","../../../../index.tsx","../../../../app/shared/components/like-button/like-button.ngtypecheck.ts","../../../../app/shared/components/like-button/like-button.ts","../../../../src/components/home/home.component.ngtypecheck.ts","../../../../src/components/home/home.component.ts","../../../../node_modules/@types/estree/index.d.ts","../../../../node_modules/@types/node/compatibility/disposable.d.ts","../../../../node_modules/@types/node/compatibility/indexable.d.ts","../../../../node_modules/@types/node/compatibility/iterators.d.ts","../../../../node_modules/@types/node/compatibility/index.d.ts","../../../../node_modules/@types/node/globals.typedarray.d.ts","../../../../node_modules/@types/node/buffer.buffer.d.ts","../../../../node_modules/@types/node/globals.d.ts","../../../../node_modules/@types/node/web-globals/abortcontroller.d.ts","../../../../node_modules/@types/node/web-globals/domexception.d.ts","../../../../node_modules/@types/node/web-globals/events.d.ts","../../../../node_modules/buffer/index.d.ts","../../../../node_modules/undici-types/header.d.ts","../../../../node_modules/undici-types/readable.d.ts","../../../../node_modules/undici-types/file.d.ts","../../../../node_modules/undici-types/fetch.d.ts","../../../../node_modules/undici-types/formdata.d.ts","../../../../node_modules/undici-types/connector.d.ts","../../../../node_modules/undici-types/client.d.ts","../../../../node_modules/undici-types/errors.d.ts","../../../../node_modules/undici-types/dispatcher.d.ts","../../../../node_modules/undici-types/global-dispatcher.d.ts","../../../../node_modules/undici-types/global-origin.d.ts","../../../../node_modules/undici-types/pool-stats.d.ts","../../../../node_modules/undici-types/pool.d.ts","../../../../node_modules/undici-types/handlers.d.ts","../../../../node_modules/undici-types/balanced-pool.d.ts","../../../../node_modules/undici-types/agent.d.ts","../../../../node_modules/undici-types/mock-interceptor.d.ts","../../../../node_modules/undici-types/mock-agent.d.ts","../../../../node_modules/undici-types/mock-client.d.ts","../../../../node_modules/undici-types/mock-pool.d.ts","../../../../node_modules/undici-types/mock-errors.d.ts","../../../../node_modules/undici-types/proxy-agent.d.ts","../../../../node_modules/undici-types/env-http-proxy-agent.d.ts","../../../../node_modules/undici-types/retry-handler.d.ts","../../../../node_modules/undici-types/retry-agent.d.ts","../../../../node_modules/undici-types/api.d.ts","../../../../node_modules/undici-types/interceptors.d.ts","../../../../node_modules/undici-types/util.d.ts","../../../../node_modules/undici-types/cookies.d.ts","../../../../node_modules/undici-types/patch.d.ts","../../../../node_modules/undici-types/websocket.d.ts","../../../../node_modules/undici-types/eventsource.d.ts","../../../../node_modules/undici-types/filereader.d.ts","../../../../node_modules/undici-types/diagnostics-channel.d.ts","../../../../node_modules/undici-types/content-type.d.ts","../../../../node_modules/undici-types/cache.d.ts","../../../../node_modules/undici-types/index.d.ts","../../../../node_modules/@types/node/web-globals/fetch.d.ts","../../../../node_modules/@types/node/web-globals/navigator.d.ts","../../../../node_modules/@types/node/web-globals/storage.d.ts","../../../../node_modules/@types/node/assert.d.ts","../../../../node_modules/@types/node/assert/strict.d.ts","../../../../node_modules/@types/node/async_hooks.d.ts","../../../../node_modules/@types/node/buffer.d.ts","../../../../node_modules/@types/node/child_process.d.ts","../../../../node_modules/@types/node/cluster.d.ts","../../../../node_modules/@types/node/console.d.ts","../../../../node_modules/@types/node/constants.d.ts","../../../../node_modules/@types/node/crypto.d.ts","../../../../node_modules/@types/node/dgram.d.ts","../../../../node_modules/@types/node/diagnostics_channel.d.ts","../../../../node_modules/@types/node/dns.d.ts","../../../../node_modules/@types/node/dns/promises.d.ts","../../../../node_modules/@types/node/domain.d.ts","../../../../node_modules/@types/node/events.d.ts","../../../../node_modules/@types/node/fs.d.ts","../../../../node_modules/@types/node/fs/promises.d.ts","../../../../node_modules/@types/node/http.d.ts","../../../../node_modules/@types/node/http2.d.ts","../../../../node_modules/@types/node/https.d.ts","../../../../node_modules/@types/node/inspector.d.ts","../../../../node_modules/@types/node/module.d.ts","../../../../node_modules/@types/node/net.d.ts","../../../../node_modules/@types/node/os.d.ts","../../../../node_modules/@types/node/path.d.ts","../../../../node_modules/@types/node/perf_hooks.d.ts","../../../../node_modules/@types/node/process.d.ts","../../../../node_modules/@types/node/punycode.d.ts","../../../../node_modules/@types/node/querystring.d.ts","../../../../node_modules/@types/node/readline.d.ts","../../../../node_modules/@types/node/readline/promises.d.ts","../../../../node_modules/@types/node/repl.d.ts","../../../../node_modules/@types/node/sea.d.ts","../../../../node_modules/@types/node/sqlite.d.ts","../../../../node_modules/@types/node/stream.d.ts","../../../../node_modules/@types/node/stream/promises.d.ts","../../../../node_modules/@types/node/stream/consumers.d.ts","../../../../node_modules/@types/node/stream/web.d.ts","../../../../node_modules/@types/node/string_decoder.d.ts","../../../../node_modules/@types/node/test.d.ts","../../../../node_modules/@types/node/timers.d.ts","../../../../node_modules/@types/node/timers/promises.d.ts","../../../../node_modules/@types/node/tls.d.ts","../../../../node_modules/@types/node/trace_events.d.ts","../../../../node_modules/@types/node/tty.d.ts","../../../../node_modules/@types/node/url.d.ts","../../../../node_modules/@types/node/util.d.ts","../../../../node_modules/@types/node/v8.d.ts","../../../../node_modules/@types/node/vm.d.ts","../../../../node_modules/@types/node/wasi.d.ts","../../../../node_modules/@types/node/worker_threads.d.ts","../../../../node_modules/@types/node/zlib.d.ts","../../../../node_modules/@types/node/index.d.ts"],"fileIdsList":[[59,426,475],[59,258,416,426,475],[59,60,252,258,265,266,268,272,275,277,301,412,414,426,475],[252,258,259,426,475],[252,258,261,264,426,475],[252,258,259,260,261,426,475],[258,426,475],[426,475],[63,426,475],[61,62,426,475],[61,62,63,252,253,254,426,475],[61,426,475],[61,62,63,252,253,254,255,256,257,426,475],[252,258,426,475],[258,262,426,475],[258,262,263,265,426,475],[252,258,262,266,267,426,475],[252,258,262,426,475],[351,384,426,475],[346,348,349,350,426,475],[346,347,348,349,426,475],[348,426,475],[346,347,426,475],[426,472,475],[426,474,475],[475],[426,475,480,509],[426,475,476,481,486,494,506,517],[426,475,476,477,486,494],[421,422,423,426,475],[426,475,478,518],[426,475,479,480,487,495],[426,475,480,506,514],[426,475,481,483,486,494],[426,474,475,482],[426,475,483,484],[426,475,485,486],[426,474,475,486],[426,475,486,487,488,506,517],[426,475,486,487,488,501,506,509],[426,468,475,483,486,489,494,506,517],[426,475,486,487,489,490,494,506,514,517],[426,475,489,491,506,514,517],[424,425,426,427,428,429,430,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523],[426,475,486,492],[426,475,493,517],[426,475,483,486,494,506],[426,475,495],[426,475,496],[426,474,475,497],[426,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523],[426,475,499],[426,475,500],[426,475,486,501,502],[426,475,501,503,518,520],[426,475,486,506,507,509],[426,475,508,509],[426,475,506,507],[426,475,509],[426,475,510],[426,472,475,506,511],[426,475,486,512,513],[426,475,512,513],[426,475,480,494,506,514],[426,475,515],[426,475,494,516],[426,475,489,500,517],[426,475,480,518],[426,475,506,519],[426,475,493,520],[426,475,521],[426,468,475],[426,475,486,488,497,506,509,517,519,520,522],[426,475,506,523],[426,475,489,506,517],[352,353,426,475,489,517],[352,353,354,426,475],[352,426,475],[377,426,475,489],[355,356,357,359,362,426,475,486],[359,360,369,371,426,475],[355,426,475],[355,356,357,359,360,362,426,475],[355,362,426,475],[355,356,357,360,362,426,475],[355,356,357,360,362,369,426,475],[360,369,370,372,373,426,475],[355,356,357,360,362,363,364,366,367,368,369,374,375,384,426,475,506],[359,360,369,426,475],[362,426,475],[360,362,363,376,426,475],[357,362,426,475,506],[357,362,363,365,426,475,506],[355,356,357,358,360,361,426,475,500],[355,360,362,426,475],[360,369,426,475],[355,356,357,360,361,362,363,364,366,367,368,369,370,371,372,373,374,376,378,379,380,381,382,383,384,426,475],[64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,80,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,120,121,122,123,124,125,126,127,128,129,130,131,133,134,135,136,137,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,183,184,185,187,196,198,199,200,201,202,203,205,206,208,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,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,426,475],[109,426,475],[65,68,426,475],[67,426,475],[67,68,426,475],[64,65,66,68,426,475],[65,67,68,225,426,475],[68,426,475],[64,67,109,426,475],[67,68,225,426,475],[67,233,426,475],[65,67,68,426,475],[77,426,475],[100,426,475],[121,426,475],[67,68,109,426,475],[68,116,426,475],[67,68,109,127,426,475],[67,68,127,426,475],[68,168,426,475],[68,109,426,475],[64,68,186,426,475],[64,68,187,426,475],[209,426,475],[193,195,426,475],[204,426,475],[193,426,475],[64,68,186,193,194,426,475],[186,187,195,426,475],[207,426,475],[64,68,193,194,195,426,475],[66,67,68,426,475],[64,68,426,475],[65,67,187,188,189,190,426,475],[109,187,188,189,190,426,475],[187,189,426,475],[67,188,189,191,192,196,426,475],[64,67,426,475],[68,211,426,475],[69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,110,111,112,113,114,115,117,118,119,120,121,122,123,124,125,126,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,426,475],[197,426,475],[426,440,444,475,517],[426,440,475,506,517],[426,435,475],[426,437,440,475,514,517],[426,475,494,514],[426,475,524],[426,435,475,524],[426,437,440,475,494,517],[426,432,433,436,439,475,486,506,517],[426,440,447,475],[426,432,438,475],[426,440,461,462,475],[426,436,440,475,509,517,524],[426,461,475,524],[426,434,435,475,524],[426,440,475],[426,434,435,436,437,438,439,440,441,442,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,462,463,464,465,466,467,475],[426,440,455,475],[426,440,447,448,475],[426,438,440,448,449,475],[426,439,475],[426,432,435,440,475],[426,440,444,448,449,475],[426,444,475],[426,438,440,443,475,517],[426,432,437,440,447,475],[426,475,506],[426,435,440,461,475,522,524],[345,426,475],[336,337,426,475],[333,334,336,338,339,344,426,475],[334,336,426,475],[344,426,475],[336,426,475],[333,334,336,339,340,341,342,343,426,475],[333,334,335,426,475],[59,258,268,269,280,296,298,300,426,475],[59,268,302,312,314,326,328,391,393,395,397,399,401,403,405,407,409,411,426,475],[59,289,426,475],[59,252,258,265,290,293,426,475],[59,185,252,258,262,268,273,287,402,426,475],[59,252,258,262,272,273,277,280,281,400,426,475],[59,252,258,262,275,404,426,475],[59,252,258,262,268,272,273,275,277,406,426,475],[59,252,258,262,268,272,273,275,277,408,426,475],[59,252,258,262,268,270,272,273,275,277,280,281,285,287,295,426,475],[59,258,262,268,272,281,306,307,311,317,319,418,426,475],[59,258,262,410,426,475],[59,258,262,268,273,310,396,426,475],[59,258,262,265,268,275,322,394,426,475],[59,258,262,265,268,273,275,392,426,475],[59,258,262,398,426,475],[59,258,262,273,290,291,426,475],[59,258,262,273,277,287,288,290,292,294,426,475],[59,258,262,268,290,294,324,426,475],[59,258,262,266,268,272,281,287,290,294,306,307,311,315,317,319,323,325,426,475],[59,252,258,262,265,275,320,322,426,475],[59,252,258,262,265,275,308,310,426,475],[59,258,262,316,426,475],[59,252,258,262,266,272,306,307,327,426,475],[59,258,262,268,272,275,281,285,297,426,475],[59,258,262,268,272,273,281,285,306,307,311,313,426,475],[59,258,262,268,272,281,285,303,306,307,311,426,475],[59,258,262,268,285,299,426,475],[59,258,287,330,426,475],[59,252,258,262,265,266,268,272,275,287,306,307,310,319,323,329,331,386,388,390,426,475],[59,185,252,258,265,275,413,426,475],[59,283,426,475],[59,305,426,475],[59,258,278,280,426,475],[59,185,252,258,265,274,426,475],[59,252,258,265,387,426,475],[59,258,332,385,426,475],[59,252,258,265,275,286,426,475],[59,258,279,426,475],[59,258,287,389,426,475],[59,258,271,426,475],[59,252,258,265,309,426,475],[59,252,258,265,321,426,475],[59,258,280,282,284,426,475],[59,185,252,258,265,275,276,426,475],[59,185,252,258,265,272,280,304,306,426,475],[59,318,426,475]],"fileInfos":[{"version":"69684132aeb9b5642cbcd9e22dff7818ff0ee1aa831728af0ecf97d3364d5546","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"092c2bfe125ce69dbb1223c85d68d4d2397d7d8411867b5cc03cec902c233763","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"936e80ad36a2ee83fc3caf008e7c4c5afe45b3cf3d5c24408f039c1d47bdc1df","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"fef8cfad2e2dc5f5b3d97a6f4f2e92848eb1b88e897bb7318cef0e2820bceaab","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"b5ce7a470bc3628408429040c4e3a53a27755022a32fd05e2cb694e7015386c7","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"a6a5253138c5432c68a1510c70fe78a644fe2e632111ba778e1978010d6edfec","impliedFormat":1},{"version":"ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","signature":"da14a67372982ca6e605fea114900b492b3316618581634e0ce72afbcb09baca"},{"version":"d9d3dd93b80c648c9d33766a515f43cceeea16a1240887d53c6ec4fd9a4c0687","impliedFormat":99},{"version":"8b112cd3d8d6fa2449e7cef7643660adbd5c05212f82cf6add0090e0e889b145","affectsGlobalScope":true,"impliedFormat":99},{"version":"31151a7a97f8e16f57099be0cedb8fae67cfbeaa56dad030358709b7672d32c8","affectsGlobalScope":true,"impliedFormat":99},{"version":"073ca26c96184db9941b5ec0ddea6981c9b816156d9095747809e524fdd90e35","impliedFormat":1},{"version":"e41d17a2ec23306d953cda34e573ed62954ca6ea9b8c8b74e013d07a6886ce47","impliedFormat":1},{"version":"241bd4add06f06f0699dcd58f3b334718d85e3045d9e9d4fa556f11f4d1569c1","impliedFormat":1},{"version":"2ae3787e1498b20aad1b9c2ee9ea517ec30e89b70d242d8e3e52d1e091039695","impliedFormat":1},{"version":"c7c72c4cffb1bc83617eefed71ed68cc89df73cab9e19507ccdecb3e72b4967e","affectsGlobalScope":true,"impliedFormat":1},{"version":"b8bff8a60af0173430b18d9c3e5c443eaa3c515617210c0c7b3d2e1743c19ecb","impliedFormat":1},{"version":"38b38db08e7121828294dec10957a7a9ff263e33e2a904b346516d4a4acca482","impliedFormat":1},{"version":"a76ebdf2579e68e4cfe618269c47e5a12a4e045c2805ed7f7ab37af8daa6b091","impliedFormat":1},{"version":"8a2aaea564939c22be05d665cc955996721bad6d43148f8fa21ae8f64afecd37","impliedFormat":1},{"version":"e59d36b7b6e8ba2dd36d032a5f5c279d2460968c8b4e691ca384f118fb09b52a","impliedFormat":1},{"version":"e96885c0684c9042ec72a9a43ef977f6b4b4a2728f4b9e737edcbaa0c74e5bf6","impliedFormat":1},{"version":"95950a187596e206d32d5d9c7b932901088c65ed8f9040e614aa8e321e0225ef","impliedFormat":1},{"version":"89e061244da3fc21b7330f4bd32f47c1813dd4d7f1dc3d0883d88943f035b993","impliedFormat":1},{"version":"e46558c2e04d06207b080138678020448e7fc201f3d69c2601b0d1456105f29a","impliedFormat":1},{"version":"71549375db52b1163411dba383b5f4618bdf35dc57fa327a1c7d135cf9bf67d1","impliedFormat":1},{"version":"7e6b2d61d6215a4e82ea75bc31a80ebb8ad0c2b37a60c10c70dd671e8d9d6d5d","impliedFormat":1},{"version":"78bea05df2896083cca28ed75784dde46d4b194984e8fc559123b56873580a23","impliedFormat":1},{"version":"5dd04ced37b7ea09f29d277db11f160df7fd73ba8b9dba86cb25552e0653a637","impliedFormat":1},{"version":"f74b81712e06605677ae1f061600201c425430151f95b5ef4d04387ad7617e6a","impliedFormat":1},{"version":"9a72847fcf4ac937e352d40810f7b7aec7422d9178451148296cf1aa19467620","impliedFormat":1},{"version":"3ae18f60e0b96fa1e025059b7d25b3247ba4dcb5f4372f6d6e67ce2adac74eac","impliedFormat":1},{"version":"2b9260f44a2e071450ae82c110f5dc8f330c9e5c3e85567ed97248330f2bf639","impliedFormat":1},{"version":"4f196e13684186bda6f5115fc4677a87cf84a0c9c4fc17b8f51e0984f3697b6d","impliedFormat":1},{"version":"61419f2c5822b28c1ea483258437c1faab87d00c6f84481aa22afb3380d8e9a4","impliedFormat":1},{"version":"64479aee03812264e421c0bf5104a953ca7b02740ba80090aead1330d0effe91","impliedFormat":1},{"version":"0521108c9f8ddb17654a0a54dae6ba9667c99eddccfd6af5748113e022d1c37a","impliedFormat":1},{"version":"c5570e504be103e255d80c60b56c367bf45d502ca52ee35c55dec882f6563b5c","impliedFormat":1},{"version":"ee764e6e9a7f2b987cc1a2c0a9afd7a8f4d5ebc4fdb66ad557a7f14a8c2bd320","impliedFormat":1},{"version":"0520b5093712c10c6ef23b5fea2f833bf5481771977112500045e5ea7e8e2b69","impliedFormat":1},{"version":"5c3cf26654cf762ac4d7fd7b83f09acfe08eef88d2d6983b9a5a423cb4004ca3","impliedFormat":1},{"version":"e60fa19cf7911c1623b891155d7eb6b7e844e9afdf5738e3b46f3b687730a2bd","impliedFormat":1},{"version":"b1fd72ff2bb0ba91bb588f3e5329f8fc884eb859794f1c4657a2bfa122ae54d0","impliedFormat":1},{"version":"6cf42a4f3cfec648545925d43afaa8bb364ac10a839ffed88249da109361b275","impliedFormat":1},{"version":"d7058e75920120b142a9d57be25562a3cd9a936269fd52908505f530105f2ec4","impliedFormat":1},{"version":"6df52b70d7f7702202f672541a5f4a424d478ee5be51a9d37b8ccbe1dbf3c0f2","impliedFormat":1},{"version":"0ca7f997e9a4d8985e842b7c882e521b6f63233c4086e9fe79dd7a9dc4742b5e","impliedFormat":1},{"version":"91046b5c6b55d3b194c81fd4df52f687736fad3095e9d103ead92bb64dc160ee","impliedFormat":1},{"version":"db5704fdad56c74dfc5941283c1182ed471bd17598209d3ac4a49faa72e43cfc","impliedFormat":1},{"version":"758e8e89559b02b81bc0f8fd395b17ad5aff75490c862cbe369bb1a3d1577c40","impliedFormat":1},{"version":"2ee64342c077b1868f1834c063f575063051edd6e2964257d34aad032d6b657c","impliedFormat":1},{"version":"6f6b4b3d670b6a5f0e24ea001c1b3d36453c539195e875687950a178f1730fa7","impliedFormat":1},{"version":"a472a1d3f25ce13a1d44911cd3983956ac040ce2018e155435ea34afb25f864c","impliedFormat":1},{"version":"b48b83a86dd9cfe36f8776b3ff52fcd45b0e043c0538dc4a4b149ba45fe367b9","impliedFormat":1},{"version":"792de5c062444bd2ee0413fb766e57e03cce7cdaebbfc52fc0c7c8e95069c96b","impliedFormat":1},{"version":"a79e3e81094c7a04a885bad9b049c519aace53300fb8a0fe4f26727cb5a746ce","impliedFormat":1},{"version":"93181bac0d90db185bb730c95214f6118ae997fe836a98a49664147fbcaf1988","impliedFormat":1},{"version":"8a4e89564d8ea66ad87ee3762e07540f9f0656a62043c910d819b4746fc429c5","impliedFormat":1},{"version":"b9011d99942889a0f95e120d06b698c628b0b6fdc3e6b7ecb459b97ed7d5bcc6","impliedFormat":1},{"version":"4d639cbbcc2f8f9ce6d55d5d503830d6c2556251df332dc5255d75af53c8a0e7","impliedFormat":1},{"version":"cdb48277f600ab5f429ecf1c5ea046683bc6b9f73f3deab9a100adac4b34969c","impliedFormat":1},{"version":"75be84956a29040a1afbe864c0a7a369dfdb739380072484eff153905ef867ee","impliedFormat":1},{"version":"b06b4adc2ae03331a92abd1b19af8eb91ec2bf8541747ee355887a167d53145e","impliedFormat":1},{"version":"c54166a85bd60f86d1ebb90ce0117c0ecb850b8a33b366691629fdf26f1bbbd8","impliedFormat":1},{"version":"0d417c15c5c635384d5f1819cc253a540fe786cc3fda32f6a2ae266671506a21","impliedFormat":1},{"version":"80f23f1d60fbed356f726b3b26f9d348dddbb34027926d10d59fad961e70a730","impliedFormat":1},{"version":"cb59317243a11379a101eb2f27b9df1022674c3df1df0727360a0a3f963f523b","impliedFormat":1},{"version":"cc20bb2227dd5de0aab0c8d697d1572f8000550e62c7bf5c92f212f657dd88c5","impliedFormat":1},{"version":"06b8a7d46195b6b3980e523ef59746702fd210b71681a83a5cf73799623621f9","impliedFormat":1},{"version":"860e4405959f646c101b8005a191298b2381af8f33716dc5f42097e4620608f8","impliedFormat":1},{"version":"f7e32adf714b8f25d3c1783473abec3f2e82d5724538d8dcf6f51baaaff1ca7a","impliedFormat":1},{"version":"d0da80c845999a16c24d0783033fb5366ada98df17867c98ad433ede05cd87fd","impliedFormat":1},{"version":"bfbf80f9cd4558af2d7b2006065340aaaced15947d590045253ded50aabb9bc5","impliedFormat":1},{"version":"fd9a991b51870325e46ebb0e6e18722d313f60cd8e596e645ec5ac15b96dbf4e","impliedFormat":1},{"version":"c3bd2b94e4298f81743d92945b80e9b56c1cdfb2bef43c149b7106a2491b1fc9","impliedFormat":1},{"version":"a246cce57f558f9ebaffd55c1e5673da44ea603b4da3b2b47eb88915d30a9181","impliedFormat":1},{"version":"d993eacc103c5a065227153c9aae8acea3a4322fe1a169ee7c70b77015bf0bb2","impliedFormat":1},{"version":"fc2b03d0c042aa1627406e753a26a1eaad01b3c496510a78016822ef8d456bb6","impliedFormat":1},{"version":"063c7ebbe756f0155a8b453f410ca6b76ffa1bbc1048735bcaf9c7c81a1ce35f","impliedFormat":1},{"version":"314e402cd481370d08f63051ae8b8c8e6370db5ee3b8820eeeaaf8d722a6dac6","impliedFormat":1},{"version":"9669075ac38ce36b638b290ba468233980d9f38bdc62f0519213b2fd3e2552ec","impliedFormat":1},{"version":"4d123de012c24e2f373925100be73d50517ac490f9ed3578ac82d0168bfbd303","impliedFormat":1},{"version":"656c9af789629aa36b39092bee3757034009620439d9a39912f587538033ce28","impliedFormat":1},{"version":"3ac3f4bdb8c0905d4c3035d6f7fb20118c21e8a17bee46d3735195b0c2a9f39f","impliedFormat":1},{"version":"1f453e6798ed29c86f703e9b41662640d4f2e61337007f27ac1c616f20093f69","impliedFormat":1},{"version":"af43b7871ff21c62bf1a54ec5c488e31a8d3408d5b51ff2e9f8581b6c55f2fc7","impliedFormat":1},{"version":"70550511d25cbb0b6a64dcac7fffc3c1397fd4cbeb6b23ccc7f9b794ab8a6954","impliedFormat":1},{"version":"af0fbf08386603a62f2a78c42d998c90353b1f1d22e05a384545f7accf881e0a","impliedFormat":1},{"version":"cefc20054d20b85b534206dbcedd509bb74f87f3d8bc45c58c7be3a76caa45e1","impliedFormat":1},{"version":"ad6eee4877d0f7e5244d34bc5026fd6e9cf8e66c5c79416b73f9f6ebf132f924","impliedFormat":1},{"version":"4888fd2bcfee9a0ce89d0df860d233e0cee8ee9c479b6bd5a5d5f9aae98342fe","impliedFormat":1},{"version":"f4749c102ced952aa6f40f0b579865429c4869f6d83df91000e98005476bee87","impliedFormat":1},{"version":"56654d2c5923598384e71cb808fac2818ca3f07dd23bb018988a39d5e64f268b","impliedFormat":1},{"version":"8b6719d3b9e65863da5390cb26994602c10a315aa16e7d70778a63fee6c4c079","impliedFormat":1},{"version":"05f56cd4b929977d18df8f3d08a4c929a2592ef5af083e79974b20a063f30940","impliedFormat":1},{"version":"547d3c406a21b30e2b78629ecc0b2ddaf652d9e0bdb2d59ceebce5612906df33","impliedFormat":1},{"version":"b3a4f9385279443c3a5568ec914a9492b59a723386161fd5ef0619d9f8982f97","impliedFormat":1},{"version":"3fe66aba4fbe0c3ba196a4f9ed2a776fe99dc4d1567a558fb11693e9fcc4e6ed","impliedFormat":1},{"version":"140eef237c7db06fc5adcb5df434ee21e81ee3a6fd57e1a75b8b3750aa2df2d8","impliedFormat":1},{"version":"0944ec553e4744efae790c68807a461720cff9f3977d4911ac0d918a17c9dd99","impliedFormat":1},{"version":"cb46b38d5e791acaa243bf342b8b5f8491639847463ac965b93896d4fb0af0d9","impliedFormat":1},{"version":"7c7d9e116fe51100ff766703e6b5e4424f51ad8977fe474ddd8d0959aa6de257","impliedFormat":1},{"version":"af70a2567e586be0083df3938b6a6792e6821363d8ef559ad8d721a33a5bcdaf","impliedFormat":1},{"version":"006cff3a8bcb92d77953f49a94cd7d5272fef4ab488b9052ef82b6a1260d870b","impliedFormat":1},{"version":"7d44bfdc8ee5e9af70738ff652c622ae3ad81815e63ab49bdc593d34cb3a68e5","impliedFormat":1},{"version":"339814517abd4dbc7b5f013dfd3b5e37ef0ea914a8bbe65413ecffd668792bc6","impliedFormat":1},{"version":"34d5bc0a6958967ec237c99f980155b5145b76e6eb927c9ffc57d8680326b5d8","impliedFormat":1},{"version":"9eae79b70c9d8288032cbe1b21d0941f6bd4f315e14786b2c1d10bccc634e897","impliedFormat":1},{"version":"18ce015ed308ea469b13b17f99ce53bbb97975855b2a09b86c052eefa4aa013a","impliedFormat":1},{"version":"5a931bc4106194e474be141e0bc1046629510dc95b9a0e4b02a3783847222965","impliedFormat":1},{"version":"5e5f371bf23d5ced2212a5ff56675aefbd0c9b3f4d4fdda1b6123ac6e28f058c","impliedFormat":1},{"version":"907c17ad5a05eecb29b42b36cc8fec6437be27cc4986bb3a218e4f74f606911c","impliedFormat":1},{"version":"ce60a562cd2a92f37a88f2ddd99a3abfbc5848d7baf38c48fb8d3243701fcb75","impliedFormat":1},{"version":"a726ad2d0a98bfffbe8bc1cd2d90b6d831638c0adc750ce73103a471eb9a891c","impliedFormat":1},{"version":"f44c0c8ce58d3dacac016607a1a90e5342d830ea84c48d2e571408087ae55894","impliedFormat":1},{"version":"75a315a098e630e734d9bc932d9841b64b30f7a349a20cf4717bf93044eff113","impliedFormat":1},{"version":"9131d95e32b3d4611d4046a613e022637348f6cebfe68230d4e81b691e4761a1","impliedFormat":1},{"version":"b03aa292cfdcd4edc3af00a7dbd71136dd067ec70a7536b655b82f4dd444e857","impliedFormat":1},{"version":"b6e2b0448ced813b8c207810d96551a26e7d7bb73255eea4b9701698f78846d6","impliedFormat":1},{"version":"8ae10cd85c1bd94d2f2d17c4cbd25c068a4b2471c70c2d96434239f97040747a","impliedFormat":1},{"version":"9ed5b799c50467b0c9f81ddf544b6bcda3e34d92076d6cab183c84511e45c39f","impliedFormat":1},{"version":"b4fa87cc1833839e51c49f20de71230e259c15b2c9c3e89e4814acc1d1ef10de","impliedFormat":1},{"version":"e90ac9e4ac0326faa1bc39f37af38ace0f9d4a655cd6d147713c653139cf4928","impliedFormat":1},{"version":"ea27110249d12e072956473a86fd1965df8e1be985f3b686b4e277afefdde584","impliedFormat":1},{"version":"8776a368617ce51129b74db7d55c3373dadcce5d0701e61d106e99998922a239","impliedFormat":1},{"version":"5666075052877fe2fdddd5b16de03168076cf0f03fbca5c1d4a3b8f43cba570c","impliedFormat":1},{"version":"9108ab5af05418f599ab48186193b1b07034c79a4a212a7f73535903ba4ca249","impliedFormat":1},{"version":"bb4e2cdcadf9c9e6ee2820af23cee6582d47c9c9c13b0dca1baaffe01fbbcb5f","impliedFormat":1},{"version":"6e30d0b5a1441d831d19fe02300ab3d83726abd5141cbcc0e2993fa0efd33db4","impliedFormat":1},{"version":"423f28126b2fc8d8d6fa558035309000a1297ed24473c595b7dec52e5c7ebae5","impliedFormat":1},{"version":"fb30734f82083d4790775dae393cd004924ebcbfde49849d9430bf0f0229dd16","impliedFormat":1},{"version":"2c92b04a7a4a1cd9501e1be338bf435738964130fb2ad5bd6c339ee41224ac4c","impliedFormat":1},{"version":"c5c5f0157b41833180419dacfbd2bcce78fb1a51c136bd4bcba5249864d8b9b5","impliedFormat":1},{"version":"02ae43d5bae42efcd5a00d3923e764895ce056bca005a9f4e623aa6b4797c8af","impliedFormat":1},{"version":"db6e01f17012a9d7b610ae764f94a1af850f5d98c9c826ad61747dca0fb800bd","impliedFormat":1},{"version":"8a44b424edee7bb17dc35a558cc15f92555f14a0441205613e0e50452ab3a602","impliedFormat":1},{"version":"24a00d0f98b799e6f628373249ece352b328089c3383b5606214357e9107e7d5","impliedFormat":1},{"version":"33637e3bc64edd2075d4071c55d60b32bdb0d243652977c66c964021b6fc8066","impliedFormat":1},{"version":"0f0ad9f14dedfdca37260931fac1edf0f6b951c629e84027255512f06a6ebc4c","impliedFormat":1},{"version":"16ad86c48bf950f5a480dc812b64225ca4a071827d3d18ffc5ec1ae176399e36","impliedFormat":1},{"version":"8cbf55a11ff59fd2b8e39a4aa08e25c5ddce46e3af0ed71fb51610607a13c505","impliedFormat":1},{"version":"d5bc4544938741f5daf8f3a339bfbf0d880da9e89e79f44a6383aaf056fe0159","impliedFormat":1},{"version":"97f9169882d393e6f303f570168ca86b5fe9aab556e9a43672dae7e6bb8e6495","impliedFormat":1},{"version":"7c9adb3fcd7851497818120b7e151465406e711d6a596a71b807f3a17853cb58","impliedFormat":1},{"version":"6752d402f9282dd6f6317c8c048aaaac27295739a166eed27e00391b358fed9a","impliedFormat":1},{"version":"9fd7466b77020847dbc9d2165829796bf7ea00895b2520ff3752ffdcff53564b","impliedFormat":1},{"version":"fbfc12d54a4488c2eb166ed63bab0fb34413e97069af273210cf39da5280c8d6","impliedFormat":1},{"version":"85a84240002b7cf577cec637167f0383409d086e3c4443852ca248fc6e16711e","impliedFormat":1},{"version":"84794e3abd045880e0fadcf062b648faf982aa80cfc56d28d80120e298178626","impliedFormat":1},{"version":"053d8b827286a16a669a36ffc8ccc8acdf8cc154c096610aa12348b8c493c7b8","impliedFormat":1},{"version":"3cce4ce031710970fe12d4f7834375f5fd455aa129af4c11eb787935923ff551","impliedFormat":1},{"version":"8f62cbd3afbd6a07bb8c934294b6bfbe437021b89e53a4da7de2648ecfc7af25","impliedFormat":1},{"version":"62c3621d34fb2567c17a2c4b89914ebefbfbd1b1b875b070391a7d4f722e55dc","impliedFormat":1},{"version":"c05ac811542e0b59cb9c2e8f60e983461f0b0e39cea93e320fad447ff8e474f3","impliedFormat":1},{"version":"8e7a5b8f867b99cc8763c0b024068fb58e09f7da2c4810c12833e1ca6eb11c4f","impliedFormat":1},{"version":"132351cbd8437a463757d3510258d0fa98fd3ebef336f56d6f359cf3e177a3ce","impliedFormat":1},{"version":"df877050b04c29b9f8409aa10278d586825f511f0841d1ec41b6554f8362092b","impliedFormat":1},{"version":"33d1888c3c27d3180b7fd20bac84e97ecad94b49830d5dd306f9e770213027d1","impliedFormat":1},{"version":"ee942c58036a0de88505ffd7c129f86125b783888288c2389330168677d6347f","impliedFormat":1},{"version":"a3f317d500c30ea56d41501632cdcc376dae6d24770563a5e59c039e1c2a08ec","impliedFormat":1},{"version":"eb21ddc3a8136a12e69176531197def71dc28ffaf357b74d4bf83407bd845991","impliedFormat":1},{"version":"0c1651a159995dfa784c57b4ea9944f16bdf8d924ed2d8b3db5c25d25749a343","impliedFormat":1},{"version":"aaa13958e03409d72e179b5d7f6ec5c6cc666b7be14773ae7b6b5ee4921e52db","impliedFormat":1},{"version":"0a86e049843ad02977a94bb9cdfec287a6c5a0a4b6b5391a6648b1a122072c5a","impliedFormat":1},{"version":"40f06693e2e3e58526b713c937895c02e113552dc8ba81ecd49cdd9596567ddb","impliedFormat":1},{"version":"4ed5e1992aedb174fb8f5aa8796aa6d4dcb8bd819b4af1b162a222b680a37fa0","impliedFormat":1},{"version":"d7f4bd46a8b97232ea6f8c28012b8d2b995e55e729d11405f159d3e00c51420a","impliedFormat":1},{"version":"d604d413aff031f4bfbdae1560e54ebf503d374464d76d50a2c6ded4df525712","impliedFormat":1},{"version":"e4f4f9cf1e3ac9fd91ada072e4d428ecbf0aa6dc57138fb797b8a0ca3a1d521c","impliedFormat":1},{"version":"12bfd290936824373edda13f48a4094adee93239b9a73432db603127881a300d","impliedFormat":1},{"version":"340ceb3ea308f8e98264988a663640e567c553b8d6dc7d5e43a8f3b64f780374","impliedFormat":1},{"version":"c5a769564e530fba3ec696d0a5cff1709b9095a0bdf5b0826d940d2fc9786413","impliedFormat":1},{"version":"7124ef724c3fc833a17896f2d994c368230a8d4b235baed39aa8037db31de54f","impliedFormat":1},{"version":"5de1c0759a76e7710f76899dcae601386424eab11fb2efaf190f2b0f09c3d3d3","impliedFormat":1},{"version":"9c5ee8f7e581f045b6be979f062a61bf076d362bf89c7f966b993a23424e8b0d","impliedFormat":1},{"version":"1a11df987948a86aa1ec4867907c59bdf431f13ed2270444bf47f788a5c7f92d","impliedFormat":1},{"version":"8018dd2e95e7ce6e613ddd81672a54532614dc745520a2f9e3860ff7fb1be0ca","impliedFormat":1},{"version":"b756781cd40d465da57d1fc6a442c34ae61fe8c802d752aace24f6a43fedacee","impliedFormat":1},{"version":"0fe76167c87289ea094e01616dcbab795c11b56bad23e1ef8aba9aa37e93432a","impliedFormat":1},{"version":"3a45029dba46b1f091e8dc4d784e7be970e209cd7d4ff02bd15270a98a9ba24b","impliedFormat":1},{"version":"032c1581f921f8874cf42966f27fd04afcabbb7878fa708a8251cac5415a2a06","impliedFormat":1},{"version":"69c68ed9652842ce4b8e495d63d2cd425862104c9fb7661f72e7aa8a9ef836f8","impliedFormat":1},{"version":"0e704ee6e9fd8b6a5a7167886f4d8915f4bc22ed79f19cb7b32bd28458f50643","impliedFormat":1},{"version":"06f62a14599a68bcde148d1efd60c2e52e8fa540cc7dcfa4477af132bb3de271","impliedFormat":1},{"version":"904a96f84b1bcee9a7f0f258d17f8692e6652a0390566515fe6741a5c6db8c1c","impliedFormat":1},{"version":"11f19ce32d21222419cecab448fa335017ebebf4f9e5457c4fa9df42fa2dcca7","impliedFormat":1},{"version":"2e8ee2cbb5e9159764e2189cf5547aebd0e6b0d9a64d479397bb051cd1991744","impliedFormat":1},{"version":"1b0471d75f5adb7f545c1a97c02a0f825851b95fe6e069ac6ecaa461b8bb321d","impliedFormat":1},{"version":"1d157c31a02b1e5cca9bc495b3d8d39f4b42b409da79f863fb953fbe3c7d4884","impliedFormat":1},{"version":"07baaceaec03d88a4b78cb0651b25f1ae0322ac1aa0b555ae3749a79a41cba86","impliedFormat":1},{"version":"619a132f634b4ebe5b4b4179ea5870f62f2cb09916a25957bff17b408de8b56d","impliedFormat":1},{"version":"f60fa446a397eb1aead9c4e568faf2df8068b4d0306ebc075fb4be16ed26b741","impliedFormat":1},{"version":"f3cb784be4d9e91f966a0b5052a098d9b53b0af0d341f690585b0cc05c6ca412","impliedFormat":1},{"version":"350f63439f8fe2e06c97368ddc7fb6d6c676d54f59520966f7dbbe6a4586014e","impliedFormat":1},{"version":"eba613b9b357ac8c50a925fa31dc7e65ff3b95a07efbaa684b624f143d8d34ba","impliedFormat":1},{"version":"45b74185005ed45bec3f07cac6e4d68eaf02ead9ff5a66721679fb28020e5e7c","impliedFormat":1},{"version":"0f6199602df09bdb12b95b5434f5d7474b1490d2cd8cc036364ab3ba6fd24263","impliedFormat":1},{"version":"c8ca7fd9ec7a3ec82185bfc8213e4a7f63ae748fd6fced931741d23ef4ea3c0f","impliedFormat":1},{"version":"5c6a8a3c2a8d059f0592d4eab59b062210a1c871117968b10797dee36d991ef7","impliedFormat":1},{"version":"ad77fd25ece8e09247040826a777dc181f974d28257c9cd5acb4921b51967bd8","impliedFormat":1},{"version":"e636bc88ba9f36fd2e0ea4e92d998faf9ef26c3e7d3ea30363ca74e48ccae9b6","impliedFormat":99},{"version":"53a7e8e6cd478d365dab32dbf5e3f45e1fdce303f9b3843c0347722b19714449","impliedFormat":99},{"version":"0c02c17cf4c2a113c1f2c84600c584988a85d4808271ad8c38e47d1cfbb0175d","impliedFormat":99},{"version":"aad5b7d6c39fb451c626fc26aed53d713cbf1598bfb81e7555a3802d262779ae","impliedFormat":99},{"version":"63a8dadf7e342e253bc606c5f0d3f19be90352bccb6798728d928ed618fc5521","impliedFormat":99},{"version":"f37fcb53b8f0a80340d25f4ca4e1f43ababf1711d1da680fba3b62669e8198d9","impliedFormat":99},{"version":"7b725602c44d308cc120244986665583e2a53d20b69b0e4c19034609314e4960","impliedFormat":99},{"version":"bc84a8c0f0d7246cd48c745919fd87f2dcbea0894e5d9f4004b4878c8b37d5da","impliedFormat":99},{"version":"adcf6fb0fc8d31e1fd7c0477c517a2691e2f1fc20361ef2a4c4e05555b598a18","impliedFormat":99},{"version":"84de6181c634996552fdce82ddb8560c543776970963a0b6cf79291c1c52ed08","impliedFormat":99},{"version":"196d3246719b9fd0f124f171322aa8981afe09a4a5ae2f3b506134f01ef6ce89","impliedFormat":99},{"version":"ec7f1fb361239bd2f79647c4c12fe324918667a6eefef56e53d25560e9ccce77","impliedFormat":99},{"version":"c6f21fc4fd151b94b8ff0de2b16aa943d5635bfd30f9f5fee7b9e137e3474997","impliedFormat":99},{"version":"bee856262cdb790c78313066300a69002ea045ab9ed523315ea8225bbcaea7dd","impliedFormat":99},{"version":"3ffa16a7b3c57bcf12260e8570999d19fbfceb36dc23d381013678a2d8601ab6","impliedFormat":99},{"version":"444cfc5dc1d45b030c65aeda3dfb5973e8c55cba1d29886bb38f6d668b17f061","impliedFormat":99},{"version":"ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","signature":"da14a67372982ca6e605fea114900b492b3316618581634e0ce72afbcb09baca"},{"version":"ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","signature":"da14a67372982ca6e605fea114900b492b3316618581634e0ce72afbcb09baca"},{"version":"ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","signature":"da14a67372982ca6e605fea114900b492b3316618581634e0ce72afbcb09baca"},{"version":"d7c4fd426cb17d3d87b64c5a9dfded7c7084e1901ef87caadd232a1fea38d5a1","signature":"44258283f0fe85b63e2a1c83a209cb804ab4654085a3f0043b2262f03ccc2727"},{"version":"dcd48e99bff07bb096e197535eefc1f68cb5fbca75e18fc11df47377a7eb61f6","impliedFormat":99},{"version":"ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","signature":"da14a67372982ca6e605fea114900b492b3316618581634e0ce72afbcb09baca"},{"version":"1978842c9a49f471f8ce1f05a90c16b67ee7ba61cae5c539b47e722ac6d44937","signature":"cb473d6bbffe7a12c6826d062487c44c0ddc213302207a8bfdd6622f28719beb"},{"version":"ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","signature":"da14a67372982ca6e605fea114900b492b3316618581634e0ce72afbcb09baca"},{"version":"9c04b8a82a4bd4bf43573769ea30d518c0d702ef764f4608ba9a30c6658f9cda","signature":"2333010fb03aac3dfb35bea460b66b88aa320167e745d35ad73c2bc4d8c8214a"},{"version":"ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","signature":"da14a67372982ca6e605fea114900b492b3316618581634e0ce72afbcb09baca"},{"version":"ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","signature":"da14a67372982ca6e605fea114900b492b3316618581634e0ce72afbcb09baca"},{"version":"69d327a9079d984240c360a3d7a52481761f98a7f26d901baf5d1835847577f3","signature":"ec624cdad0da030be5047cf1b9ef3522234916651214da29eb2697f0a1c9ea45"},{"version":"3fc28b80fbddf575ed60f2206863d99b7594157c1bdcf72d182d2d17d7e007df","signature":"a1889af19644b3eeaf6c8357cd3b33d3676a13c1e94ee2bf8acdd51c7f4feb04"},{"version":"ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","signature":"da14a67372982ca6e605fea114900b492b3316618581634e0ce72afbcb09baca"},{"version":"ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","signature":"da14a67372982ca6e605fea114900b492b3316618581634e0ce72afbcb09baca"},{"version":"6201b44a285d6217d145689b24395c7d6f827308f2c93b3e345532066bad74d1","signature":"03d73b525ba1656b398ceb3088fe366372749826c5730b59874c7904a4c35675"},{"version":"e713b261d26868729b62ff43f1885446b57389614ad36a7a7ce165971d9d3dc5","signature":"b0c9fc2e51388a1f348242bd2c09cdc15bcd167e02c662039f4c72428b4e664f"},{"version":"ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","signature":"da14a67372982ca6e605fea114900b492b3316618581634e0ce72afbcb09baca"},{"version":"0eb6e69109bfad267253407536f0a370434be2608734ade1a769ca195a302d2e","signature":"270bae547ddd7b6e7e7a00156b6cf676fdd171fcc5359b1d1d21984d6520200a"},{"version":"ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","signature":"da14a67372982ca6e605fea114900b492b3316618581634e0ce72afbcb09baca"},{"version":"ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","signature":"da14a67372982ca6e605fea114900b492b3316618581634e0ce72afbcb09baca"},{"version":"6390f7c2dad36163930864d345a23f3dcd533708aec2ecd7e55a90512efd9b77","signature":"b6503f38c5580b5d8b50f3494be172dea5fc20e5f82b63631ee0aafd9a313e31"},{"version":"ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","signature":"da14a67372982ca6e605fea114900b492b3316618581634e0ce72afbcb09baca"},{"version":"feb34e8a1a6bc763c77dd3edf642e86eadab93b86877e159ea61b0da681c19d8","signature":"770d0b6e05f563f9724e5bfa78bc03a6d15ee67394ee0b1060b882290c118e93"},{"version":"ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","signature":"da14a67372982ca6e605fea114900b492b3316618581634e0ce72afbcb09baca"},{"version":"731d6a879588bc7c7e5cd448711faf9250998f0eae97652ea6394feccfeb3480","signature":"440c32b1b4b3ed6541a13c6d33b1ede307b576901f4cf10f4d18ae7644cc4e3f"},{"version":"7d15da6534cd4d558bf4a8914ec2dee1b86d1c244ac21cc27c9c91e73e73b237","signature":"ec22a4d16d76ca25fe40a5c87e70ca199d9c02493822667248c35b56bd1e9912"},{"version":"88f57e1693e42c9e72d2dd5539c40290d0e6967270541c973f8601aaff317277","signature":"3e22348ca155fc8c4d8236e71c006d5efcb1cc85ba6167ea9b9659879c37e6bc"},{"version":"ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","signature":"da14a67372982ca6e605fea114900b492b3316618581634e0ce72afbcb09baca"},{"version":"26303a5e93ea8976404accdb795651afe1d9631e742d5f6bfa3940f97664d34b","signature":"98f65149f2c4839de9a761fe5e0e49bba2d57a9b719b13f5657c6f0c220307e7"},{"version":"ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","signature":"da14a67372982ca6e605fea114900b492b3316618581634e0ce72afbcb09baca"},{"version":"ffa92b627d4e8e7df7f1383155f2dea446c6a321655e37e50c7c3004809c744f","signature":"fefed10cd55899ad3fae9015cb335c6995d03702cbed855f01a534fd2cb5d41a"},{"version":"eea2ca5aa2912da3489cd8b87e39d558c8860e27e4edeba4c378197d049664ba","signature":"de44a7f2b0d47c7787b4d160228d91cc3ca49416c8a353c418f344c9deff9779"},{"version":"ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","signature":"da14a67372982ca6e605fea114900b492b3316618581634e0ce72afbcb09baca"},{"version":"ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","signature":"da14a67372982ca6e605fea114900b492b3316618581634e0ce72afbcb09baca"},{"version":"ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","signature":"da14a67372982ca6e605fea114900b492b3316618581634e0ce72afbcb09baca"},{"version":"ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","signature":"da14a67372982ca6e605fea114900b492b3316618581634e0ce72afbcb09baca"},{"version":"997213bf2d998486a020bb9d63635e28509419b7c3eef2de190668ae14507fa6","signature":"d41793eaa1172ac2f5b07c9844f6fb379b32f1516824744f2be9da4ccda2d5a6"},{"version":"ee04730aa9b17c622842a9bba1e23713d7c227e06dc2df542053c19259a45d8d","signature":"390f67dabc754c888280d7fbd3debefaf0a6ce0cb08ecdb6b5b1555f9c3e5690"},{"version":"ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","signature":"da14a67372982ca6e605fea114900b492b3316618581634e0ce72afbcb09baca"},{"version":"ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","signature":"da14a67372982ca6e605fea114900b492b3316618581634e0ce72afbcb09baca"},{"version":"15812150c4377d3d94398dc31c7f010095123c123c6836685c872d93e8937359","signature":"def95c5a5688d11e2999f36fc5b831bc0a598fdef39209b36b29b09ea00c784e"},{"version":"33ab1e3233f6951662b608d1596491a91e04220da5d90e767fea41b673fcdc00","signature":"7e7fab10bdd7a9034b92e1afd8357020ce92c4e65e93dbebdf78e06fe8a20ed0"},{"version":"7161aed8d2516efd8a7fde991d7e0783ce44a9010aa0e3c2e3d89c8db92da12f","signature":"a25e39279b870f0a86f846662790fdf0fe0454f14d7503e61f7cb68b6d80a462"},{"version":"ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","signature":"da14a67372982ca6e605fea114900b492b3316618581634e0ce72afbcb09baca"},"6fb09e200265191ceb72640f0bcf315b214604d67042be95917e834f3a12e80c",{"version":"ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","signature":"da14a67372982ca6e605fea114900b492b3316618581634e0ce72afbcb09baca"},{"version":"ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","signature":"da14a67372982ca6e605fea114900b492b3316618581634e0ce72afbcb09baca"},{"version":"927aa4ba40ea75c698540a04206b89eba44cdeb53515f557c186c6e070a7c485","signature":"6a1641235112fb6fb6fab11cc2c82e34264067f8fc24601685872b309bd8926f"},{"version":"ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","signature":"da14a67372982ca6e605fea114900b492b3316618581634e0ce72afbcb09baca"},{"version":"b266334c67fa69ff67fded0c634f852bb1aa3f99ddbccd7f2e70757ce11c1cef","signature":"aec710ec6aef682d41ad375ae1ddf9618cb325995710bfc1e5184d16e26ed347"},{"version":"ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","signature":"da14a67372982ca6e605fea114900b492b3316618581634e0ce72afbcb09baca"},{"version":"ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","signature":"da14a67372982ca6e605fea114900b492b3316618581634e0ce72afbcb09baca"},{"version":"6e8d6d452608c3be840c66cfb2301a01d74072ec7bd2f68e45dc3d8c6db184da","signature":"b1c5304bde7d1cbb07ff6c0c51c4a96115b36cacee316d1f76d8c046fb459d4c"},{"version":"a48310e3238d185e708d2032b0d2a1190e27731096e10027cc0616e9f531a75b","signature":"a44999082fce68773d785d591ae3ad96b802f809de4750615c542c08f1a924d0"},{"version":"ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","signature":"da14a67372982ca6e605fea114900b492b3316618581634e0ce72afbcb09baca"},{"version":"eaacecd4e2ae3cc8522db4a235b070627223c9b3a6f5f00e281930910c018dd2","signature":"fac78a267193b2bebe9385c5d7341228555f9758081e86790189c58c759a94ea"},"8c786f13f022a1a1bc9f324cd80f74a73d20a2ad1cda015a3e2d8455dcc448dd",{"version":"ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","signature":"da14a67372982ca6e605fea114900b492b3316618581634e0ce72afbcb09baca"},{"version":"eb9b346c9f750ba2eb671b2429239f6f1f464b4172c66abf0c8b1041aaade193","signature":"644b375aa93808f2f401762de4e1969714e383052e69e0fbdfc82cd97fcda739"},{"version":"ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","signature":"da14a67372982ca6e605fea114900b492b3316618581634e0ce72afbcb09baca"},{"version":"ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","signature":"da14a67372982ca6e605fea114900b492b3316618581634e0ce72afbcb09baca"},{"version":"9a73f0c9ff95b0fb44d9182341a4676830ad1186890fbad6f15fe1febcdd3c8e","signature":"5c8da175455dac9be33675ab12a100ab67e6c9685248bacc7faecbacc2882e57"},{"version":"ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","signature":"da14a67372982ca6e605fea114900b492b3316618581634e0ce72afbcb09baca"},{"version":"d3cfde44f8089768ebb08098c96d01ca260b88bccf238d55eee93f1c620ff5a5","impliedFormat":1},{"version":"293eadad9dead44c6fd1db6de552663c33f215c55a1bfa2802a1bceed88ff0ec","impliedFormat":1},{"version":"833e92c058d033cde3f29a6c7603f517001d1ddd8020bc94d2067a3bc69b2a8e","impliedFormat":1},{"version":"08b2fae7b0f553ad9f79faec864b179fc58bc172e295a70943e8585dd85f600c","impliedFormat":1},{"version":"f12edf1672a94c578eca32216839604f1e1c16b40a1896198deabf99c882b340","impliedFormat":1},{"version":"e3498cf5e428e6c6b9e97bd88736f26d6cf147dedbfa5a8ad3ed8e05e059af8a","impliedFormat":1},{"version":"dba3f34531fd9b1b6e072928b6f885aa4d28dd6789cbd0e93563d43f4b62da53","impliedFormat":1},{"version":"f672c876c1a04a223cf2023b3d91e8a52bb1544c576b81bf64a8fec82be9969c","impliedFormat":1},{"version":"e4b03ddcf8563b1c0aee782a185286ed85a255ce8a30df8453aade2188bbc904","impliedFormat":1},{"version":"2329d90062487e1eaca87b5e06abcbbeeecf80a82f65f949fd332cfcf824b87b","impliedFormat":1},{"version":"25b3f581e12ede11e5739f57a86e8668fbc0124f6649506def306cad2c59d262","impliedFormat":1},{"version":"4fdb529707247a1a917a4626bfb6a293d52cd8ee57ccf03830ec91d39d606d6d","impliedFormat":1},{"version":"a9ebb67d6bbead6044b43714b50dcb77b8f7541ffe803046fdec1714c1eba206","impliedFormat":1},{"version":"5780b706cece027f0d4444fbb4e1af62dc51e19da7c3d3719f67b22b033859b9","impliedFormat":1},{"version":"4749a5d10b6e3b0bd6c8d90f9ba68a91a97aa0c2c9a340dd83306b2f349d6d34","impliedFormat":99},{"version":"dd1729e568bbd92727b6703f2340096d07476d29085b3ee2f49e78e6f2029d20","impliedFormat":99},{"version":"efdb6c1c0e195ea378a0b7cd0e808f65176bea14396dc8bdccda80551e66d73f","impliedFormat":99},{"version":"de328e8fd327cf362e090965057fbbf14f2085c78b70eb31b61ceeca8d6da01c","impliedFormat":99},{"version":"b9e0783285db8fca77f8c20df30b66b201f914bacbfe472b86dcacdba555f360","impliedFormat":99},{"version":"005f10cafe0939ae8d6a98e19c4ddf8b59faf3f9ae38dfa5907b82b9a6cb4de9","impliedFormat":1},{"version":"089c056ad8ecb34ee72cb831491ab72c214d8fb7ecf94b96a1b4736ab54397a1","impliedFormat":1},{"version":"e643ef3093cba63af26396ae8dc58dc542c241027749dcdf715f3d3209f79a03","impliedFormat":1},{"version":"f40e6338b8137033a5b4efbe01de45a4399f2c304648eace01d852cd05eb861e","impliedFormat":1},{"version":"89d879fae02696e226dbcb7444d6153158fa264bb646071988f19a2e422b314f","impliedFormat":1},{"version":"57de3f0b1730cf8439c8aa4686f78f38b170a9b55e7a8393ae6f8a524bb3ba5a","impliedFormat":1},{"version":"e933bd300ea4f6c724d222bf2d93a0ae2b1e748baa1db09cb71d67d563794b2d","impliedFormat":1},{"version":"c43d0df83d8bb68ab9e2795cf1ec896ff1b5fab2023c977f3777819bc6b5c880","impliedFormat":1},{"version":"bf810d50332562d1b223a7ce607e5f8dc42714d8a3fa7bf39afe33830e107bf7","impliedFormat":1},{"version":"f025aff69699033567ebb4925578dedb18f63b4aa185f85005451cfd5fc53343","impliedFormat":1},{"version":"3d36c36df6ce6c4c3651a5f804ab07fe1c9bb8ce7d40ef4134038c364b429cb3","impliedFormat":1},{"version":"e9243dd3c92d2c56a2edf96cbce8faf357caf9397b95acaa65e960ad36cb7235","impliedFormat":1},{"version":"a24a9c59b7baecbb85c0ace2c07c9c5b7c2330bb5a2ae5d766f6bbf68f75e727","impliedFormat":1},{"version":"3c264d6a0f6be4f8684cb9e025f32c9b131cca7199c658eea28f0dae1f439124","impliedFormat":1},{"version":"d3cd789b0eebd5cebde1404383fd32c610bec782c74a415aa05ab3593abc35c8","impliedFormat":1},{"version":"8c1babb42f52952a6593b678f4cfb4afea5dc91e5cfaf3ca922cdd2d23b1277a","impliedFormat":1},{"version":"04ebb965333800caba800cabd1e18b02e0e69ab6a6f8948f2d53211df00a193c","impliedFormat":1},{"version":"f8e2be107b3e756e0a1c4f5e195e69dce69d38d0ff5c0b0509933e970c6d915b","impliedFormat":1},{"version":"309e580094520f9675a85c406ab5d1de4735f74a38f36690d569dbc5341f36a8","impliedFormat":1},{"version":"c2fa79fd37e4b0e4040de9d8db1b79accb1f8f63b3458cd0e5dac9d4f9e6f3f1","impliedFormat":1},{"version":"4f0d1a7e2a5a8b85d69f60a7be2a6223827f5fec473ba2142279841a54e8a845","impliedFormat":1},{"version":"ae2fb62b3647083fe8299e95dbfab2063c8301e9a626f42be0f360a57e434797","impliedFormat":1},{"version":"f53d803d9c9c8acdbb82ef5c6b8f224d42be50e9ab8bc09c8a9a942717214f9a","impliedFormat":1},{"version":"d2d70166533a2233aa35977eecea4b08c2f0f2e6e7b56c12a1c613c5ebf2c384","impliedFormat":1},{"version":"1097820fae2d12eb60006de0b5d057105e60d165cf8a6e6125f9876e6335cde7","impliedFormat":1},{"version":"8f62905f50830a638fd1a5ff68d9c8f2c1347ff046908eeb9119d257e8e8ae4a","impliedFormat":1},{"version":"8b4d34279952175f972f1aa62e136248311889148eb40a3e4782b244cece09f3","impliedFormat":1},{"version":"d3c3cc0840704fe524dbe8a812290bfd303e43d3bd43dcaac83ee682d2e15be0","impliedFormat":1},{"version":"71725ba9235f9d2aa02839162b1df2df59fd9dd91c110a54ea02112243d7a4d9","impliedFormat":1},{"version":"80af0c272dcb64518f7768428cdf91d21966a7f24ed0dfc69fad964d4c2ed8c1","impliedFormat":1},{"version":"1dc9702aa16e3ada78c84aa96868a7e5502001c402918b6d85ed25acbe80fd51","impliedFormat":1},{"version":"35f891c1bc36c97469df06316c65a718956515c8b3bdbeb146b468c02493ef13","impliedFormat":1},{"version":"2e9b05d7db853315f44d824e13840e6fdf17d615d13170b5f5cf830442018dcd","impliedFormat":1},{"version":"11989ad8152cf54a9cf974b02c1f03f2416857df6c5946ba735eb20ff9b3e9c2","impliedFormat":99},{"version":"91d3d5a235f545fd37bebfea42fc512970a2142ef3d8d9a02246760696d0b688","signature":"76cd2308eec82ec68321658d6a8d9fbc8f63b56d6882094751015b9caad0ab39"},{"version":"ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","signature":"da14a67372982ca6e605fea114900b492b3316618581634e0ce72afbcb09baca"},{"version":"c368f2790f6713acf830b247dbe062d6a944fb2c62e5a05f0bacc6a6e72b42d2","signature":"cef241a9446a68cfcbe3f505fac3e4957644e8a7a057c2d1790fc5ca42d09a34"},{"version":"ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","signature":"da14a67372982ca6e605fea114900b492b3316618581634e0ce72afbcb09baca"},{"version":"40aff816b4e1b45638916804abfb4537f433bd3e37daa045df524b21714b3f52","signature":"8b0809d17156abdb00dd2406f6f369bb86ad144853d2555ec94255a9471a9be5"},"51eabd9fa0243146e2361d069f28f1c4048d0061d4b83ca5ee22e2a41296e05f",{"version":"ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","signature":"da14a67372982ca6e605fea114900b492b3316618581634e0ce72afbcb09baca"},{"version":"c852b12f6e1543302ec6088bed22253ea53af9908f019d9866a9c1511435aee3","signature":"8838497aaa32eed261e1beabd02d2c337afbd21fa4a05e7bc0c555def576dbf6"},{"version":"ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","signature":"da14a67372982ca6e605fea114900b492b3316618581634e0ce72afbcb09baca"},{"version":"9c351a879cb5034413d704d456ac46990fe9c33ec4f31fbff4457258bb04d0b4","signature":"587b01ba9a6e74d40d9ba6f6be8033e9df34c694c62015967580621ff9435e22"},{"version":"ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","signature":"da14a67372982ca6e605fea114900b492b3316618581634e0ce72afbcb09baca"},{"version":"95f81bf531342f9316dc17195a4317ccd8519a005a34177da32ba38f33ce9a4d","signature":"2cd8e3af01048aab258439b63efd7514afc8f476197f31618494abafcbe5c44e"},{"version":"ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","signature":"da14a67372982ca6e605fea114900b492b3316618581634e0ce72afbcb09baca"},{"version":"7c190550df69783c671fa0f9a30c50543d919bd82380d1052c9c46a54d26ae20","signature":"8db75b77dd8c50ccc5d607ef8e01c54c90a5244d09657563fd8767844b95c656"},{"version":"ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","signature":"da14a67372982ca6e605fea114900b492b3316618581634e0ce72afbcb09baca"},{"version":"0eee6b522110f17e3f67d1f29e5e94e88167fafec5fc857df3f39fe177876564","signature":"17685c741b7bea45071dd46ea9dd31bb6a9968acea17381ff7e3c4bb4bdad1e8"},{"version":"ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","signature":"da14a67372982ca6e605fea114900b492b3316618581634e0ce72afbcb09baca"},{"version":"4e8704850859f0dbb9271a5eca160a0ebc2f3ca628dbedc7efae232a5834f46a","signature":"de67f6e01961a081cc42b1110e7019399fa164cb053165f8d22fc44e5e1487af"},{"version":"ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","signature":"da14a67372982ca6e605fea114900b492b3316618581634e0ce72afbcb09baca"},{"version":"46e85f45904254029ed52feb7bc0afdb627693aff2e54d609c83a757c65025ca","signature":"e7bec6a95fc9e95f870aed2997217de1c67c3733b1a1f3cb99de7e7cf82b5d08"},{"version":"ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","signature":"da14a67372982ca6e605fea114900b492b3316618581634e0ce72afbcb09baca"},{"version":"2e43332ad2beb725c7b30d3559ffc813cb81c8b095358dc767dcab1c239c9306","signature":"efe0a1bb8a0e84604cd9a90d7ae76078f303d9d637299bfae098b70103f58a64"},{"version":"ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","signature":"da14a67372982ca6e605fea114900b492b3316618581634e0ce72afbcb09baca"},{"version":"8466d36ef9e8f0398ecff46995ea0eb848e09c9b40be197b22a17c9025d51a86","signature":"78f4862bf4cb5ebabb029d2b71f72d4e7ba23d2ca59a9fd736af0a72e8ee17d7"},{"version":"ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","signature":"da14a67372982ca6e605fea114900b492b3316618581634e0ce72afbcb09baca"},{"version":"075ecc1e827edcbb2812dae374e249fc0de73718c934b18dab29a82a1517b81c","signature":"47c2edcbdbcf34a8ba5819d67de40997e5b2b4e3aca2100fb9eb48b0754942f7"},{"version":"1507104ef7bbda1e124d1073e3093c1ece194dd3b42b87973f4fc49e6e8dd078","signature":"790e7eb617ace35140284959b46e8ce1e6f69d2cf1c31e80923d2dacafa5a9a5"},{"version":"ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","signature":"da14a67372982ca6e605fea114900b492b3316618581634e0ce72afbcb09baca"},{"version":"4f3beecfd7b1f9272fd59a720a1444777fb7849d5a6192a6d304a60de88855e9","signature":"0f85a7c1fe33a91a589145067aca211a6c638c8f5423045e55aa4f1d39f223ed"},{"version":"5db7e0cbcd4feeb9a6ce1f7cd34a7736dc331c5aeb18320f7185001c0596c531","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","signature":"da14a67372982ca6e605fea114900b492b3316618581634e0ce72afbcb09baca"},{"version":"704ca0d41768d71cb6f49708f056c05b4f9f24f4ed77793376e8b132cf76baf8","signature":"6b51aedae50bc4b50236b71e06df2778b1cb855fb187d102439f8dfbeff05c63"},{"version":"ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","signature":"da14a67372982ca6e605fea114900b492b3316618581634e0ce72afbcb09baca"},"5aa3e1e52d5a2590f145dfb57425955b18c292efd8201a1963a5b015a7adaf6e",{"version":"151ff381ef9ff8da2da9b9663ebf657eac35c4c9a19183420c05728f31a6761d","impliedFormat":1},{"version":"6c7176368037af28cb72f2392010fa1cef295d6d6744bca8cfb54985f3a18c3e","affectsGlobalScope":true,"impliedFormat":1},{"version":"ab41ef1f2cdafb8df48be20cd969d875602483859dc194e9c97c8a576892c052","affectsGlobalScope":true,"impliedFormat":1},{"version":"437e20f2ba32abaeb7985e0afe0002de1917bc74e949ba585e49feba65da6ca1","affectsGlobalScope":true,"impliedFormat":1},{"version":"21d819c173c0cf7cc3ce57c3276e77fd9a8a01d35a06ad87158781515c9a438a","impliedFormat":1},{"version":"a79e62f1e20467e11a904399b8b18b18c0c6eea6b50c1168bf215356d5bebfaf","affectsGlobalScope":true,"impliedFormat":1},{"version":"d802f0e6b5188646d307f070d83512e8eb94651858de8a82d1e47f60fb6da4e2","affectsGlobalScope":true,"impliedFormat":1},{"version":"17bb4105d0ea2ab2bfcb4f77ff8585691d5569c90ae15f4fa8d5ff9fb42b910b","affectsGlobalScope":true,"impliedFormat":1},{"version":"1db0b7dca579049ca4193d034d835f6bfe73096c73663e5ef9a0b5779939f3d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"9798340ffb0d067d69b1ae5b32faa17ab31b82466a3fc00d8f2f2df0c8554aaa","affectsGlobalScope":true,"impliedFormat":1},{"version":"456fa0c0ab68731564917642b977c71c3b7682240685b118652fb9253c9a6429","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e9c23ba78aabc2e0a27033f18737a6df754067731e69dc5f52823957d60a4b6","impliedFormat":1},{"version":"5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","impliedFormat":1},{"version":"763fe0f42b3d79b440a9b6e51e9ba3f3f91352469c1e4b3b67bfa4ff6352f3f4","impliedFormat":1},{"version":"25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","impliedFormat":1},{"version":"c464d66b20788266e5353b48dc4aa6bc0dc4a707276df1e7152ab0c9ae21fad8","impliedFormat":1},{"version":"78d0d27c130d35c60b5e5566c9f1e5be77caf39804636bc1a40133919a949f21","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"1d6e127068ea8e104a912e42fc0a110e2aa5a66a356a917a163e8cf9a65e4a75","impliedFormat":1},{"version":"5ded6427296cdf3b9542de4471d2aa8d3983671d4cac0f4bf9c637208d1ced43","impliedFormat":1},{"version":"7f182617db458e98fc18dfb272d40aa2fff3a353c44a89b2c0ccb3937709bfb5","impliedFormat":1},{"version":"cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","impliedFormat":1},{"version":"385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","impliedFormat":1},{"version":"9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","impliedFormat":1},{"version":"0b8a9268adaf4da35e7fa830c8981cfa22adbbe5b3f6f5ab91f6658899e657a7","impliedFormat":1},{"version":"11396ed8a44c02ab9798b7dca436009f866e8dae3c9c25e8c1fbc396880bf1bb","impliedFormat":1},{"version":"ba7bc87d01492633cb5a0e5da8a4a42a1c86270e7b3d2dea5d156828a84e4882","impliedFormat":1},{"version":"4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","impliedFormat":1},{"version":"c21dc52e277bcfc75fac0436ccb75c204f9e1b3fa5e12729670910639f27343e","impliedFormat":1},{"version":"13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","impliedFormat":1},{"version":"9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","impliedFormat":1},{"version":"4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","impliedFormat":1},{"version":"24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","impliedFormat":1},{"version":"ea0148f897b45a76544ae179784c95af1bd6721b8610af9ffa467a518a086a43","impliedFormat":1},{"version":"24c6a117721e606c9984335f71711877293a9651e44f59f3d21c1ea0856f9cc9","impliedFormat":1},{"version":"dd3273ead9fbde62a72949c97dbec2247ea08e0c6952e701a483d74ef92d6a17","impliedFormat":1},{"version":"405822be75ad3e4d162e07439bac80c6bcc6dbae1929e179cf467ec0b9ee4e2e","impliedFormat":1},{"version":"0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","impliedFormat":1},{"version":"e61be3f894b41b7baa1fbd6a66893f2579bfad01d208b4ff61daef21493ef0a8","impliedFormat":1},{"version":"bd0532fd6556073727d28da0edfd1736417a3f9f394877b6d5ef6ad88fba1d1a","impliedFormat":1},{"version":"89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","impliedFormat":1},{"version":"615ba88d0128ed16bf83ef8ccbb6aff05c3ee2db1cc0f89ab50a4939bfc1943f","impliedFormat":1},{"version":"a4d551dbf8746780194d550c88f26cf937caf8d56f102969a110cfaed4b06656","impliedFormat":1},{"version":"8bd86b8e8f6a6aa6c49b71e14c4ffe1211a0e97c80f08d2c8cc98838006e4b88","impliedFormat":1},{"version":"317e63deeb21ac07f3992f5b50cdca8338f10acd4fbb7257ebf56735bf52ab00","impliedFormat":1},{"version":"4732aec92b20fb28c5fe9ad99521fb59974289ed1e45aecb282616202184064f","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"bf67d53d168abc1298888693338cb82854bdb2e69ef83f8a0092093c2d562107","impliedFormat":1},{"version":"2cbe0621042e2a68c7cbce5dfed3906a1862a16a7d496010636cdbdb91341c0f","affectsGlobalScope":true,"impliedFormat":1},{"version":"f9501cc13ce624c72b61f12b3963e84fad210fbdf0ffbc4590e08460a3f04eba","affectsGlobalScope":true,"impliedFormat":1},{"version":"e7721c4f69f93c91360c26a0a84ee885997d748237ef78ef665b153e622b36c1","affectsGlobalScope":true,"impliedFormat":1},{"version":"a38efe83ff77c34e0f418a806a01ca3910c02ee7d64212a59d59bca6c2c38fa1","impliedFormat":1},{"version":"7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","impliedFormat":1},{"version":"2b06b93fd01bcd49d1a6bd1f9b65ddcae6480b9a86e9061634d6f8e354c1468f","impliedFormat":1},{"version":"7b988bc259155186e6b09dd8b32856d9e45c8d261e63c19abaf590bb6550f922","affectsGlobalScope":true,"impliedFormat":1},{"version":"fe7b52f993f9336b595190f3c1fcc259bb2cf6dcb4ac8fdb1e0454cc5df7301e","impliedFormat":1},{"version":"e9b97d69510658d2f4199b7d384326b7c4053b9e6645f5c19e1c2a54ede427fc","impliedFormat":1},{"version":"c2510f124c0293ab80b1777c44d80f812b75612f297b9857406468c0f4dafe29","affectsGlobalScope":true,"impliedFormat":1},{"version":"5524481e56c48ff486f42926778c0a3cce1cc85dc46683b92b1271865bcf015a","impliedFormat":1},{"version":"81711af669f63d43ccb4c08e15beda796656dd46673d0def001c7055db53852d","affectsGlobalScope":true,"impliedFormat":1},{"version":"19d5f8d3930e9f99aa2c36258bf95abbe5adf7e889e6181872d1cdba7c9a7dd5","impliedFormat":1},{"version":"9855e02d837744303391e5623a531734443a5f8e6e8755e018c41d63ad797db2","impliedFormat":1},{"version":"bdba81959361810be44bcfdd283f4d601e406ab5ad1d2bdff0ed480cf983c9d7","impliedFormat":1},{"version":"836a356aae992ff3c28a0212e3eabcb76dd4b0cc06bcb9607aeef560661b860d","impliedFormat":1},{"version":"1e0d1f8b0adfa0b0330e028c7941b5a98c08b600efe7f14d2d2a00854fb2f393","impliedFormat":1},{"version":"b326f4813b90d230ec3950f66bd5b5ce3971aac5fac67cfafc54aa07b39fd07f","affectsGlobalScope":true,"impliedFormat":1},{"version":"c8420c7c2b778b334587a4c0311833b5212ff2f684ea37b2f0e2b117f1d7210d","impliedFormat":1},{"version":"b6b08215821c9833b0e8e30ea1ed178009f2f3ff5d7fae3865ee42f97cc87784","impliedFormat":1},{"version":"b795c3e47a26be91ac33d8115acdc37bfa41ecc701fb237c64a23da4d2b7e1d8","impliedFormat":1},{"version":"73cf6cc19f16c0191e4e9d497ab0c11c7b38f1ca3f01ad0f09a3a5a971aac4b8","impliedFormat":1},{"version":"528b62e4272e3ddfb50e8eed9e359dedea0a4d171c3eb8f337f4892aac37b24b","impliedFormat":1},{"version":"ed58b9974bb3114f39806c9c2c6258c4ffa6a255921976a7c53dfa94bf178f42","impliedFormat":1},{"version":"e6fa9ad47c5f71ff733744a029d1dc472c618de53804eae08ffc243b936f87ff","affectsGlobalScope":true,"impliedFormat":1},{"version":"f72bc8fe16da67e4e3268599295797b202b95e54bd215a03f97e925dd1502a36","impliedFormat":1},{"version":"b1b6ee0d012aeebe11d776a155d8979730440082797695fc8e2a5c326285678f","impliedFormat":1},{"version":"45875bcae57270aeb3ebc73a5e3fb4c7b9d91d6b045f107c1d8513c28ece71c0","impliedFormat":1},{"version":"915e18c559321c0afaa8d34674d3eb77e1ded12c3e85bf2a9891ec48b07a1ca5","affectsGlobalScope":true,"impliedFormat":1},{"version":"e9727a118ce60808e62457c89762fe5a4e2be8e9fd0112d12432d1bafdba942f","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f16a7e4deafa527ed9995a772bb380eb7d3c2c0fd4ae178c5263ed18394db2c","impliedFormat":1},{"version":"933921f0bb0ec12ef45d1062a1fc0f27635318f4d294e4d99de9a5493e618ca2","impliedFormat":1},{"version":"71a0f3ad612c123b57239a7749770017ecfe6b66411488000aba83e4546fde25","impliedFormat":1},{"version":"70b57b5529051497e9f6482b76d91c0dcbb103d9ead8a0549f5bab8f65e5d031","impliedFormat":1},{"version":"4f9d8ca0c417b67b69eeb54c7ca1bedd7b56034bb9bfd27c5d4f3bc4692daca7","impliedFormat":1},{"version":"814118df420c4e38fe5ae1b9a3bafb6e9c2aa40838e528cde908381867be6466","impliedFormat":1},{"version":"3a90b9beac4c2bfdf6517faae0940a042b81652badf747df0a7c7593456f6ebe","impliedFormat":1},{"version":"8302157cd431b3943eed09ad439b4441826c673d9f870dcb0e1f48e891a4211e","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"125d792ec6c0c0f657d758055c494301cc5fdb327d9d9d5960b3f129aff76093","impliedFormat":1},{"version":"dba28a419aec76ed864ef43e5f577a5c99a010c32e5949fe4e17a4d57c58dd11","affectsGlobalScope":true,"impliedFormat":1},{"version":"2754d8221d77c7b382096651925eb476f1066b3348da4b73fe71ced7801edada","impliedFormat":1},{"version":"a5890565ed564c7b29eb1b1038d4e10c03a3f5231b0a8d48fea4b41ab19f4f46","impliedFormat":1},{"version":"f0be1b8078cd549d91f37c30c222c2a187ac1cf981d994fb476a1adc61387b14","affectsGlobalScope":true,"impliedFormat":1},{"version":"0aaed1d72199b01234152f7a60046bc947f1f37d78d182e9ae09c4289e06a592","impliedFormat":1},{"version":"98ffdf93dfdd206516971d28e3e473f417a5cfd41172e46b4ce45008f640588e","impliedFormat":1},{"version":"66ba1b2c3e3a3644a1011cd530fb444a96b1b2dfe2f5e837a002d41a1a799e60","impliedFormat":1},{"version":"7e514f5b852fdbc166b539fdd1f4e9114f29911592a5eb10a94bb3a13ccac3c4","impliedFormat":1},{"version":"cee74f5970ffc01041e5bffc3f324c20450534af4054d2c043cb49dbbd4ec8f7","affectsGlobalScope":true,"impliedFormat":1},{"version":"1a654e0d950353614ba4637a8de4f9d367903a0692b748e11fccf8c880c99735","affectsGlobalScope":true,"impliedFormat":1},{"version":"42da246c46ca3fd421b6fd88bb4466cda7137cf33e87ba5ceeded30219c428bd","impliedFormat":1},{"version":"3a051941721a7f905544732b0eb819c8d88333a96576b13af08b82c4f17581e4","impliedFormat":1},{"version":"ac5ed35e649cdd8143131964336ab9076937fa91802ec760b3ea63b59175c10a","impliedFormat":1},{"version":"f2feb9696208311cdcf1936df2b7cbec96a3f0ab9d403952bf170546d4253a90","affectsGlobalScope":true,"impliedFormat":1},{"version":"db3d77167a7da6c5ba0c51c5b654820e3464093f21724ccd774c0b9bc3f81bc0","impliedFormat":1},{"version":"d9b6fd8640f6ad3f13ce9ce47d91061a698cf7763fed7f668e4f89709989aae5","impliedFormat":1}],"root":[60,[269,272],[274,332],[386,419]],"options":{"composite":false,"declaration":false,"declarationMap":false,"downlevelIteration":true,"experimentalDecorators":true,"importHelpers":true,"inlineSourceMap":true,"inlineSources":true,"module":7,"noEmitOnError":false,"noFallthroughCasesInSwitch":true,"noImplicitOverride":true,"noImplicitReturns":true,"noPropertyAccessFromIndexSignature":true,"outDir":"../../../..","removeComments":false,"strict":true,"target":9,"tsBuildInfoFile":"./.tsbuildinfo","useDefineForClassFields":false},"referencedMap":[[416,1],[417,2],[60,1],[415,3],[260,4],[265,5],[262,6],[264,7],[259,7],[261,8],[256,9],[63,10],[255,11],[253,12],[62,8],[61,8],[258,13],[254,8],[257,8],[273,14],[263,15],[266,16],[268,17],[267,18],[385,19],[351,20],[347,8],[350,21],[349,22],[348,23],[420,8],[472,24],[473,24],[474,25],[426,26],[475,27],[476,28],[477,29],[421,8],[424,30],[422,8],[423,8],[478,31],[479,32],[480,33],[481,34],[482,35],[483,36],[484,36],[485,37],[486,38],[487,39],[488,40],[427,8],[425,8],[489,41],[490,42],[491,43],[524,44],[492,45],[493,46],[494,47],[495,48],[496,49],[497,50],[498,51],[499,52],[500,53],[501,54],[502,54],[503,55],[504,8],[505,8],[506,56],[508,57],[507,58],[509,59],[510,60],[511,61],[512,62],[513,63],[514,64],[515,65],[516,66],[517,67],[518,68],[519,69],[520,70],[521,71],[428,8],[429,8],[430,8],[469,72],[470,8],[471,8],[522,73],[523,74],[431,8],[352,75],[354,76],[355,77],[353,78],[377,8],[378,79],[360,80],[372,81],[371,82],[369,83],[379,84],[357,8],[382,85],[364,8],[375,86],[374,87],[376,88],[380,8],[370,89],[363,90],[368,91],[381,92],[366,93],[361,8],[362,94],[383,95],[373,96],[367,92],[358,8],[384,97],[356,82],[359,8],[365,82],[252,98],[225,8],[203,99],[201,99],[251,100],[216,101],[215,101],[116,102],[67,103],[223,102],[224,102],[226,104],[227,102],[228,105],[127,106],[229,102],[200,102],[230,102],[231,107],[232,102],[233,101],[234,108],[235,102],[236,102],[237,102],[238,102],[239,101],[240,102],[241,102],[242,102],[243,102],[244,109],[245,102],[246,102],[247,102],[248,102],[249,102],[66,100],[69,105],[70,105],[71,105],[72,105],[73,105],[74,105],[75,105],[76,102],[78,110],[79,105],[77,105],[80,105],[81,105],[82,105],[83,105],[84,105],[85,105],[86,102],[87,105],[88,105],[89,105],[90,105],[91,105],[92,102],[93,105],[94,105],[95,105],[96,105],[97,105],[98,105],[99,102],[101,111],[100,105],[102,105],[103,105],[104,105],[105,105],[106,109],[107,102],[108,102],[122,112],[110,113],[111,105],[112,105],[113,102],[114,105],[115,105],[117,114],[118,105],[119,105],[120,105],[121,105],[123,105],[124,105],[125,105],[126,105],[128,115],[129,105],[130,105],[131,105],[132,102],[133,105],[134,116],[135,116],[136,116],[137,102],[138,105],[139,105],[140,105],[145,105],[141,105],[142,102],[143,105],[144,102],[146,105],[147,105],[148,105],[149,105],[150,105],[151,105],[152,102],[153,105],[154,105],[155,105],[156,105],[157,105],[158,105],[159,105],[160,105],[161,105],[162,105],[163,105],[164,105],[165,105],[166,105],[167,105],[168,105],[169,117],[170,105],[171,105],[172,105],[173,105],[174,105],[175,105],[176,102],[177,102],[178,102],[179,102],[180,102],[181,105],[182,105],[183,105],[184,105],[202,118],[250,102],[187,119],[186,120],[210,121],[209,122],[205,123],[204,122],[206,124],[195,125],[193,126],[208,127],[207,124],[194,8],[196,128],[109,129],[65,130],[64,105],[199,8],[191,131],[192,132],[189,8],[190,133],[188,105],[197,134],[68,135],[217,8],[218,8],[211,8],[214,101],[213,8],[219,8],[220,8],[212,136],[221,8],[222,8],[185,137],[198,138],[59,8],[57,8],[58,8],[10,8],[12,8],[11,8],[2,8],[13,8],[14,8],[15,8],[16,8],[17,8],[18,8],[19,8],[20,8],[3,8],[21,8],[22,8],[4,8],[23,8],[27,8],[24,8],[25,8],[26,8],[28,8],[29,8],[30,8],[5,8],[31,8],[32,8],[33,8],[34,8],[6,8],[38,8],[35,8],[36,8],[37,8],[39,8],[7,8],[40,8],[45,8],[46,8],[41,8],[42,8],[43,8],[44,8],[8,8],[50,8],[47,8],[48,8],[49,8],[51,8],[9,8],[52,8],[53,8],[54,8],[56,8],[55,8],[1,8],[447,139],[457,140],[446,139],[467,141],[438,142],[437,143],[466,144],[460,145],[465,146],[440,147],[454,148],[439,149],[463,150],[435,151],[434,144],[464,152],[436,153],[441,154],[442,8],[445,154],[432,8],[468,155],[458,156],[449,157],[450,158],[452,159],[448,160],[451,161],[461,144],[443,162],[444,163],[453,164],[433,165],[456,156],[455,154],[459,8],[462,166],[346,167],[338,168],[345,169],[340,8],[341,8],[339,170],[342,171],[333,8],[334,8],[335,167],[337,172],[343,8],[344,173],[336,174],[269,1],[301,175],[302,1],[412,176],[289,1],[290,177],[293,1],[294,178],[402,1],[403,179],[400,1],[401,180],[404,1],[405,181],[406,1],[407,182],[408,1],[409,183],[270,1],[296,184],[418,1],[419,185],[410,1],[411,186],[396,1],[397,187],[394,1],[395,188],[392,1],[393,189],[398,1],[399,190],[291,1],[292,191],[288,1],[295,192],[324,1],[325,193],[315,1],[326,194],[320,1],[323,195],[308,1],[311,196],[316,1],[317,197],[327,1],[328,198],[297,1],[298,199],[313,1],[314,200],[303,1],[312,201],[299,1],[300,202],[330,1],[331,203],[329,1],[391,204],[413,1],[414,205],[283,1],[284,206],[305,1],[306,207],[278,1],[281,208],[274,1],[275,209],[387,1],[388,210],[332,1],[386,211],[286,1],[287,212],[279,1],[280,213],[389,1],[390,214],[271,1],[272,215],[309,1],[310,216],[321,1],[322,217],[282,1],[285,218],[276,1],[277,219],[304,1],[307,220],[318,1],[319,221]],"semanticDiagnosticsPerFile":[60,269,270,271,274,276,278,279,282,283,286,288,289,291,293,295,296,297,299,301,302,303,304,305,308,309,312,313,315,316,318,320,321,324,326,327,329,330,332,387,389,391,392,394,396,398,400,402,404,406,408,410,412,413,415,416,418],"version":"5.8.3"} \ No newline at end of file diff --git a/.angular/cache/20.2.2/app/vite/deps/_metadata.json b/.angular/cache/20.2.2/app/vite/deps/_metadata.json index 8f75213..ab7d56f 100644 --- a/.angular/cache/20.2.2/app/vite/deps/_metadata.json +++ b/.angular/cache/20.2.2/app/vite/deps/_metadata.json @@ -1,61 +1,61 @@ { - "hash": "534e7bec", + "hash": "f4c7eaa2", "configHash": "d859ec53", - "lockfileHash": "891162b0", - "browserHash": "b971f174", + "lockfileHash": "9b1c4210", + "browserHash": "6942cbde", "optimized": { "@angular/common": { "src": "../../../../../../node_modules/@angular/common/fesm2022/common.mjs", "file": "@angular_common.js", - "fileHash": "76f579d7", + "fileHash": "92f641aa", "needsInterop": false }, "@angular/common/http": { "src": "../../../../../../node_modules/@angular/common/fesm2022/http.mjs", "file": "@angular_common_http.js", - "fileHash": "3f81fe6e", + "fileHash": "3a8b8614", "needsInterop": false }, "@angular/core": { "src": "../../../../../../node_modules/@angular/core/fesm2022/core.mjs", "file": "@angular_core.js", - "fileHash": "817c1079", + "fileHash": "b1ee9355", "needsInterop": false }, "@angular/forms": { "src": "../../../../../../node_modules/@angular/forms/fesm2022/forms.mjs", "file": "@angular_forms.js", - "fileHash": "5c59f890", + "fileHash": "5842af9d", "needsInterop": false }, "@angular/platform-browser": { "src": "../../../../../../node_modules/@angular/platform-browser/fesm2022/platform-browser.mjs", "file": "@angular_platform-browser.js", - "fileHash": "4f20f29c", + "fileHash": "f65b040d", "needsInterop": false }, "@angular/router": { "src": "../../../../../../node_modules/@angular/router/fesm2022/router.mjs", "file": "@angular_router.js", - "fileHash": "ae70e479", + "fileHash": "f605abad", "needsInterop": false }, "@google/genai": { "src": "../../../../../../node_modules/@google/genai/dist/web/index.mjs", "file": "@google_genai.js", - "fileHash": "4d8ae55a", + "fileHash": "b3b8b992", "needsInterop": false }, "rxjs": { "src": "../../../../../../node_modules/rxjs/dist/esm5/index.js", "file": "rxjs.js", - "fileHash": "490b7fef", + "fileHash": "0cb397ac", "needsInterop": false }, "rxjs/operators": { "src": "../../../../../../node_modules/rxjs/dist/esm5/operators/index.js", "file": "rxjs_operators.js", - "fileHash": "938cbe53", + "fileHash": "e706ebfa", "needsInterop": false } }, diff --git a/.angular/cache/20.2.2/app/vite/deps_ssr/_metadata.json b/.angular/cache/20.2.2/app/vite/deps_ssr/_metadata.json index e0f463b..0f05147 100644 --- a/.angular/cache/20.2.2/app/vite/deps_ssr/_metadata.json +++ b/.angular/cache/20.2.2/app/vite/deps_ssr/_metadata.json @@ -1,8 +1,8 @@ { - "hash": "f1fac02c", + "hash": "7ebe1a66", "configHash": "3d00a7fd", - "lockfileHash": "891162b0", - "browserHash": "10427b09", + "lockfileHash": "9b1c4210", + "browserHash": "dfa5acef", "optimized": {}, "chunks": {} } \ No newline at end of file diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..908003e --- /dev/null +++ b/.env.example @@ -0,0 +1,10 @@ +# Configuration des clés API pour les adaptateurs de recherche +# Copiez ce fichier en .env et remplissez les valeurs + +# YouTube API Key (obligatoire pour la recherche YouTube) +# Obtenez une clé ici : https://console.developers.google.com/ +YOUTUBE_API_KEY=your_youtube_api_key_here + +# Twitch Client ID (optionnel, pour une recherche Twitch plus complète) +# Obtenez un Client ID ici : https://dev.twitch.tv/console/apps +TWITCH_CLIENT_ID=your_twitch_client_id_here diff --git a/DIAGNOSTIC.md b/DIAGNOSTIC.md new file mode 100644 index 0000000..a18d891 --- /dev/null +++ b/DIAGNOSTIC.md @@ -0,0 +1,130 @@ +# 🔍 Guide de Diagnostic - Recherche Unifiée NewTube + +## **Problème identifié** +La barre de recherche ne lance aucune action réseau car le backend n'était pas démarré sur le bon port. + +## **Solution étape par étape** + +### **Étape 1 : Nettoyer les processus existants** +```bash +# Vérifier qu'il n'y a plus de processus +ps aux | grep node | grep -v grep +# Si il y en a, les tuer +killall node +``` + +### **Étape 2 : Démarrer le backend sur le port 4001** +```bash +# Terminal 1 - Backend +cd /c/dev/git/web/NewTube +PORT=4001 npm run api:watch +``` + +**Attendre que le backend affiche :** +``` +[newtube-api] listening on http://localhost:4001 +``` + +### **Étape 3 : Tester le backend** +```bash +# Dans un autre terminal +curl "http://localhost:4001/api/search?q=test&providers=dm" +``` + +**Devrait retourner :** Un JSON avec les résultats de recherche + +### **Étape 4 : Démarrer le frontend** +```bash +# Terminal 2 - Frontend +cd /c/dev/git/web/NewTube +npm run dev +``` + +**Attendre que le frontend affiche :** +``` +➜ Local: http://localhost:4200/ +➜ press h + enter to show help +``` + +### **Étape 5 : Tester la recherche** + +1. **Ouvrir** `http://localhost:4200` dans le navigateur +2. **Ouvrir les outils développeur** (F12) +3. **Aller dans l'onglet Network** +4. **Taper** "test" dans la barre de recherche +5. **Cliquer** sur "Search" ou **appuyer** sur Enter + +### **Ce qui devrait se passer :** + +#### ✅ **Navigation frontend :** +- L'URL change vers `/search?q=test&providers=yt,dm,tw,pt,od,ru` +- Le composant SearchComponent se charge + +#### ✅ **Requêtes réseau :** +- Une requête vers `http://localhost:4200/api/search?q=test&providers=yt,dm,tw,pt,od,ru` +- Le proxy Angular redirige vers `http://localhost:4001/api/search` +- Le backend retourne les résultats + +#### ✅ **Console :** +- Pas d'erreurs JavaScript +- Les résultats s'affichent + +## **Si ça ne marche pas :** + +### **A. Backend ne démarre pas :** +```bash +# Vérifier le port 4001 +lsof -i :4001 +# Tuer le processus +lsof -ti:4001 | xargs kill -9 +# Relancer +PORT=4001 npm run api:watch +``` + +### **B. Frontend ne démarre pas :** +```bash +# Nettoyer le cache +npx ng cache clean +npm run dev +``` + +### **C. Erreur de proxy :** +```bash +# Vérifier proxy.conf.json +cat proxy.conf.json +# Doit pointer vers localhost:4001 +``` + +### **D. Erreur de clé API :** +```bash +# Vérifier les variables d'environnement +echo "YOUTUBE_API_KEY=votre_clé" > .env.local +``` + +## **Debug avancé :** + +### **1. Tester l'API directement :** +```bash +curl "http://localhost:4001/api/search?q=linux&providers=yt,dm" +``` + +### **2. Vérifier les logs backend :** +```bash +# Dans le terminal du backend, chercher les erreurs +# Vérifier que les adaptateurs répondent +``` + +### **3. Console navigateur :** +- **Network tab** : Voir les requêtes vers `/api/search` +- **Console tab** : Voir les erreurs JavaScript +- **Application tab** : Vérifier le localStorage + +## **Configuration actuelle :** + +- ✅ **Frontend** : Port 4200 (avec proxy vers 4001) +- ✅ **Backend** : Port 4001 +- ✅ **Proxy configuré** : `proxy.conf.json` modifié +- ✅ **Routes configurées** : `/search` route existe +- ✅ **SearchComponent** : Code corrigé et fonctionnel + +**Exécutez ces étapes dans l'ordre et dites-moi à quelle étape vous bloquez !** diff --git a/README.md b/README.md index 0c1c720..4c6b5aa 100644 --- a/README.md +++ b/README.md @@ -238,3 +238,53 @@ MIT (voir `LICENSE`) --- > 💡 **Tip produit** : gardez l’UX simple — **Thèmes fixes sous le header**, **Shorts séparés**, **CTA clairs** (“View All”, “Add to playlist”), et utilisez les **états vides** (empty states) sur History/Liked/Playlists pour guider l’utilisateur. + +--- + +## 🧩 Ajouter un provider en 5 minutes + +1) Front — Registry + +- Éditez `src/app/core/providers/provider-registry.ts` et ajoutez une entrée `ProviderSpec` avec: + - `id` (ex. `"yt"`), `displayName`, `shortLabel`, `icon`, `colorClass` + - `supports` (search/shorts/live/playlists) + - `buildSearchUrl(q)` (facultatif côté front) + +2) Back — Handler + +- Créez un fichier `server/providers/.mjs` qui exporte `default` avec: + - `id`, `label` + - `async search(q, { limit, page })` → `Promise` +- Enregistrez-le dans `server/providers/registry.mjs` pour être éligible au fan‑out `/api/search`. + +3) API — Recherche multi‑providers + +- L’endpoint `GET /api/search?q=...&providers=yt,dm,ru&limit=...` valide les providers et déclenche les recherches en parallèle (timeouts), puis retourne: + +```json +{ + "q": "documentary", + "providers": ["yt","dm","ru"], + "groups": { + "yt": [{ "title": "...", "id": "...", "duration": 192, "isShort": false }], + "dm": [], + "ru": [{ "title": "...", "id": "...", "isShort": true }] + } +} +``` + +4) UI — Sélecteur & Chips + +- Le `SearchBoxComponent` (standalone) rend les chips `All / YT / DM / TW / PT / OD / RU` + menu rapide `@` (ProviderPicker). +- Le composant émet `(submitted)` avec `{ q, providers }` et met à jour `SearchService` (RxJS state) pour l’appel API. + +5) Deep‑link + +- Les URLs du type `?q=…&providers=yt,ru` relancent la même recherche. Assurez-vous de propager le paramètre `providers` lors des navigations. + +6) Tests (à compléter) + +- Unit: parsing `@yt` dans l’input, toggle ProviderPicker, composition de `SearchService`. +- e2e: `@yt + query` → résultats uniquement YouTube; chips `YT+DM` → sections YT/DM visibles; deep‑link restauré. + +Astuce: l’ajout d’un provider ne nécessite pas de modifier les composants — il suffit d’ajouter une entrée dans le registry front + un handler API. diff --git a/db/newtube.db b/db/newtube.db index 1444f72..b43e528 100644 Binary files a/db/newtube.db and b/db/newtube.db differ diff --git a/package-lock.json b/package-lock.json index b21d50d..b9b5749 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,6 +9,7 @@ "version": "0.0.0", "dependencies": { "@angular/build": "^20.1.0", + "@angular/cdk": "^20.2.4", "@angular/cli": "^20.1.0", "@angular/common": "^20.1.0", "@angular/compiler": "^20.1.0", @@ -479,6 +480,21 @@ } } }, + "node_modules/@angular/cdk": { + "version": "20.2.4", + "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-20.2.4.tgz", + "integrity": "sha512-5UzrN854pnQH+Qw6XZRxx2zWkcOxKrzWPLXe+gHFxFhxWUZfJKGcTJeAj8bnmyb+C3lqBbGpoNQPQ8pFXQGEaQ==", + "license": "MIT", + "dependencies": { + "parse5": "^8.0.0", + "tslib": "^2.3.0" + }, + "peerDependencies": { + "@angular/common": "^20.0.0 || ^21.0.0", + "@angular/core": "^20.0.0 || ^21.0.0", + "rxjs": "^6.5.3 || ^7.4.0" + } + }, "node_modules/@angular/cli": { "version": "20.2.2", "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-20.2.2.tgz", diff --git a/package.json b/package.json index 25289bb..4b3c59a 100644 --- a/package.json +++ b/package.json @@ -13,6 +13,7 @@ }, "dependencies": { "@angular/build": "^20.1.0", + "@angular/cdk": "^20.2.4", "@angular/cli": "^20.1.0", "@angular/common": "^20.1.0", "@angular/compiler": "^20.1.0", diff --git a/server/index.mjs b/server/index.mjs index 8fcddf5..96841de 100644 --- a/server/index.mjs +++ b/server/index.mjs @@ -12,6 +12,7 @@ import ffmpegPath from 'ffmpeg-static'; import * as cheerio from 'cheerio'; import axios from 'axios'; import rumbleRouter from './rumble.mjs'; +import { providerRegistry, validateProviders } from './providers/registry.mjs'; import { getUserByUsername, getUserById, @@ -1386,6 +1387,45 @@ app.all('/api/odysee/*', (req, res) => forwardJson(req, res, 'https://api.na-bac app.all('/api/twitch-api/*', (req, res) => forwardJson(req, res, 'https://api.twitch.tv')); app.all('/api/twitch-auth/*', (req, res) => forwardJson(req, res, 'https://id.twitch.tv')); +// -------------------- Unified search endpoint (GET) -------------------- +app.get('/api/search', async (req, res) => { + try { + const { q, providers } = req.query; + if (!q || typeof q !== 'string' || q.trim().length === 0) { + return res.status(400).json({ error: 'missing_query' }); + } + // Validate and normalize providers list (default to all supported when none/invalid) + const requested = typeof providers === 'string' ? String(providers) : ''; + const validProviders = validateProviders(requested); + + // Execute search for each provider in parallel + const results = await Promise.allSettled( + validProviders.map((providerId) => { + const mod = providerRegistry[/** @type {any} */(providerId)]; + if (!mod || typeof mod.search !== 'function') return Promise.resolve([]); + // Basic options: limit per provider; could be extended with page, etc. + return Promise.resolve().then(() => mod.search(q, { limit: 10 })); + }) + ); + + // Group results by provider id + const groups = /** @type {Record} */ ({}); + results.forEach((result, index) => { + const providerId = validProviders[index]; + if (result.status === 'fulfilled') { + groups[providerId] = Array.isArray(result.value) ? result.value : []; + } else { + console.warn(`Search failed for provider ${providerId}:`, result.reason); + groups[providerId] = []; + } + }); + + return res.json({ q, providers: validProviders, groups }); + } catch (e) { + return res.status(500).json({ error: 'search_failed', details: String(e?.message || e) }); + } +}); + // -------------------- Static Frontend (Angular build) -------------------- const distRoot = path.join(process.cwd(), 'dist'); const distBrowser = path.join(distRoot, 'browser'); diff --git a/server/providers/dailymotion.mjs b/server/providers/dailymotion.mjs new file mode 100644 index 0000000..0233fc4 --- /dev/null +++ b/server/providers/dailymotion.mjs @@ -0,0 +1,44 @@ +/** + * Minimal Dailymotion provider handler + */ +const handler = { + id: 'dm', + label: 'Dailymotion', + /** + * @param {string} q + * @param {{ limit: number, page?: number }} opts + * @returns {Promise>} + */ + async search(q, opts) { + const { limit = 10 } = opts; + try { + const response = await fetch( + `https://api.dailymotion.com/videos?` + + new URLSearchParams({ + search: q, + limit: Math.min(limit, 100).toString(), + sort: 'relevance' + }) + ); + + if (!response.ok) { + throw new Error(`Dailymotion API error: ${response.status}`); + } + + const data = await response.json(); + + return (data.list || []).map(item => ({ + title: item.title, + id: item.id, + url: `https://www.dailymotion.com/video/${item.id}`, + thumbnail: item.thumbnail_360_url || item.thumbnail_180_url || item.thumbnail_url, + uploaderName: item.owner.screenname || item.owner.username, + type: 'video' + })); + } catch (error) { + console.error('Dailymotion search error:', error); + return []; + } + } +}; +export default handler; diff --git a/server/providers/odysee.mjs b/server/providers/odysee.mjs new file mode 100644 index 0000000..903bdd4 --- /dev/null +++ b/server/providers/odysee.mjs @@ -0,0 +1,44 @@ +/** + * Minimal Odysee provider handler + */ +const handler = { + id: 'od', + label: 'Odysee', + /** + * @param {string} q + * @param {{ limit: number, page?: number }} opts + * @returns {Promise>} + */ + async search(q, opts) { + const { limit = 10 } = opts; + try { + const response = await fetch( + `https://lighthouse.odysee.tv/content/search?` + + new URLSearchParams({ + query: q, + size: Math.min(limit, 50).toString(), + page: '1' + }) + ); + + if (!response.ok) { + throw new Error(`Odysee API error: ${response.status}`); + } + + const data = await response.json(); + + return (data || []).map(item => ({ + title: item.title, + id: item.claimId, + url: `https://odysee.com/${item.canonical_url}`, + thumbnail: item.thumbnail_url, + uploaderName: item.channel_name || item.publisher_name, + type: 'video' + })); + } catch (error) { + console.error('Odysee search error:', error); + return []; + } + } +}; +export default handler; diff --git a/server/providers/peertube.mjs b/server/providers/peertube.mjs new file mode 100644 index 0000000..0b47963 --- /dev/null +++ b/server/providers/peertube.mjs @@ -0,0 +1,44 @@ +/** + * Minimal PeerTube provider handler + */ +const handler = { + id: 'pt', + label: 'PeerTube', + /** + * @param {string} q + * @param {{ limit: number, page?: number }} opts + * @returns {Promise>} + */ + async search(q, opts) { + const { limit = 10 } = opts; + try { + // Use PeerTube API search + const response = await fetch( + `https://sepiasearch.org/api/v1/search/videos?` + + new URLSearchParams({ + search: q, + count: Math.min(limit, 50).toString() + }) + ); + + if (!response.ok) { + throw new Error(`PeerTube API error: ${response.status}`); + } + + const data = await response.json(); + + return (data.data || []).map(item => ({ + title: item.name, + id: item.uuid, + url: item.url, + thumbnail: item.thumbnailPath, + uploaderName: item.account.displayName || item.account.name, + type: 'video' + })); + } catch (error) { + console.error('PeerTube search error:', error); + return []; + } + } +}; +export default handler; diff --git a/server/providers/registry.mjs b/server/providers/registry.mjs new file mode 100644 index 0000000..6a47ff6 --- /dev/null +++ b/server/providers/registry.mjs @@ -0,0 +1,39 @@ +// Server-side provider registry for search fan-out +// Each provider module should export an object with a `search(q, opts)` function returning Promise + +/** + * @typedef {Object} Suggestion + * @property {string} title + * @property {string} id + * @property {number=} duration + * @property {boolean=} isShort + * @property {string=} url + * @property {string=} thumbnail + * @property {string=} uploaderName + * @property {string=} type + */ + +/** @typedef {'yt'|'dm'|'tw'|'pt'|'od'|'ru'} ProviderId */ + +/** @type {Record Promise }>} */ +export const providerRegistry = { + /** @type {any} */ yt: (await import('./youtube.mjs')).default, + /** @type {any} */ dm: (await import('./dailymotion.mjs')).default, + /** @type {any} */ tw: (await import('./twitch.mjs')).default, + /** @type {any} */ pt: (await import('./peertube.mjs')).default, + /** @type {any} */ od: (await import('./odysee.mjs')).default, + /** @type {any} */ ru: (await import('./rumble.mjs')).default, +}; + +/** + * Validate and normalize a comma separated providers list + * @param {string} input + * @returns {ProviderId[]} + */ +export function validateProviders(input) { + const raw = String(input || '').split(',').map(s => s.trim()).filter(Boolean); + const allowed = /** @type {ProviderId[]} */(['yt','dm','tw','pt','od','ru']); + const filtered = raw.filter(p => allowed.includes(/** @type {any} */(p))); + if (filtered.length === 0) return allowed; + return /** @type {ProviderId[]} */(filtered); +} diff --git a/server/providers/rumble.mjs b/server/providers/rumble.mjs new file mode 100644 index 0000000..3cc44fb --- /dev/null +++ b/server/providers/rumble.mjs @@ -0,0 +1,43 @@ +/** + * Minimal Rumble provider handler + */ +const handler = { + id: 'ru', + label: 'Rumble', + /** + * @param {string} q + * @param {{ limit: number, page?: number }} opts + * @returns {Promise>} + */ + async search(q, opts) { + const { limit = 10 } = opts; + try { + const response = await fetch( + `https://rumble.com/api/search/videos?` + + new URLSearchParams({ + q: q, + size: Math.min(limit, 50).toString() + }) + ); + + if (!response.ok) { + throw new Error(`Rumble API error: ${response.status}`); + } + + const data = await response.json(); + + return (data.videos || []).map(item => ({ + title: item.title, + id: item.id, + url: `https://rumble.com${item.url}`, + thumbnail: item.thumbnail, + uploaderName: item.author.name, + type: 'video' + })); + } catch (error) { + console.error('Rumble search error:', error); + return []; + } + } +}; +export default handler; diff --git a/server/providers/twitch.mjs b/server/providers/twitch.mjs new file mode 100644 index 0000000..fd89507 --- /dev/null +++ b/server/providers/twitch.mjs @@ -0,0 +1,51 @@ +/** + * Minimal Twitch provider handler + */ +const handler = { + id: 'tw', + label: 'Twitch', + /** + * @param {string} q + * @param {{ limit: number, page?: number }} opts + * @returns {Promise>} + */ + async search(q, opts) { + const { limit = 10 } = opts; + try { + // Use Twitch Kraken API (older but public) + const response = await fetch( + `https://api.twitch.tv/kraken/search/streams?` + + new URLSearchParams({ + query: q, + limit: Math.min(limit, 25).toString() + }), + { + headers: { + 'Accept': 'application/vnd.twitchtv.v5+json', + 'Client-ID': process.env.TWITCH_CLIENT_ID || '' + } + } + ); + + if (!response.ok) { + throw new Error(`Twitch API error: ${response.status}`); + } + + const data = await response.json(); + + return (data.streams || []).map(item => ({ + title: item.channel.status || item.channel.display_name, + id: item.channel.name, // Channel name as ID + url: `https://www.twitch.tv/${item.channel.name}`, + thumbnail: item.preview?.medium || item.channel.logo, + uploaderName: item.channel.display_name, + type: 'stream', + isLive: true + })); + } catch (error) { + console.error('Twitch search error:', error); + return []; + } + } +}; +export default handler; diff --git a/server/providers/youtube.mjs b/server/providers/youtube.mjs new file mode 100644 index 0000000..a2a4062 --- /dev/null +++ b/server/providers/youtube.mjs @@ -0,0 +1,58 @@ +/** + * @typedef {Object} Suggestion + * @property {string} title + * @property {string} id + * @property {number=} duration + * @property {boolean=} isShort + * @property {string=} url + * @property {string=} thumbnail + * @property {string=} uploaderName + * @property {string=} type + */ + +/** @type {{ id: 'yt', label: string, search: (q: string, opts: { limit: number, page?: number }) => Promise }} */ +const handler = { + id: 'yt', + label: 'YouTube', + async search(q, opts) { + const { limit = 10 } = opts; + try { + const API_KEY = process.env.YOUTUBE_API_KEY; + if (!API_KEY) { + throw new Error('YOUTUBE_API_KEY not configured'); + } + + const response = await fetch( + `https://www.googleapis.com/youtube/v3/search?` + + new URLSearchParams({ + part: 'snippet', + q: q, + type: 'video', + maxResults: Math.min(limit, 50).toString(), + key: API_KEY, + order: 'relevance' + }) + ); + + if (!response.ok) { + throw new Error(`YouTube API error: ${response.status}`); + } + + const data = await response.json(); + + return (data.items || []).map(item => ({ + title: item.snippet.title, + id: item.id.videoId, + url: `https://www.youtube.com/watch?v=${item.id.videoId}`, + thumbnail: item.snippet.thumbnails?.medium?.url || item.snippet.thumbnails?.default?.url, + uploaderName: item.snippet.channelTitle, + type: 'video' + })); + } catch (error) { + console.error('YouTube search error:', error); + return []; + } + } +}; + +export default handler; diff --git a/src/app/core/providers/provider-registry.ts b/src/app/core/providers/provider-registry.ts new file mode 100644 index 0000000..344ae4c --- /dev/null +++ b/src/app/core/providers/provider-registry.ts @@ -0,0 +1,40 @@ +export type ProviderId = 'yt' | 'dm' | 'tw' | 'pt' | 'od' | 'ru'; + +export interface ProviderSpec { + id: ProviderId; + displayName: string; + shortLabel: string; // YT, DM, ... + icon: string; // lucide or custom svg name + colorClass: string; // tailwind text-red-500, etc. + supports: { search: boolean; shorts: boolean; live: boolean; playlists: boolean }; + buildSearchUrl: (q: string, opts?: { page?: number; limit?: number; providers?: ProviderId[] | 'all' }) => string; // front-only fallback +} + +export const PROVIDERS: ProviderSpec[] = [ + { id: 'yt', displayName: 'YouTube', shortLabel: 'YT', icon: 'youtube', colorClass: 'text-red-500', + supports: { search: true, shorts: true, live: true, playlists: true }, + buildSearchUrl: (q, opts) => `/api/search?q=${encodeURIComponent(q)}&providers=${encodeURIComponent((opts?.providers && opts.providers !== 'all') ? opts.providers.join(',') : 'yt,dm,tw,pt,od,ru')}` + }, + { id: 'dm', displayName: 'Dailymotion', shortLabel: 'DM', icon: 'dailymotion', colorClass: 'text-blue-500', + supports: { search: true, shorts: false, live: false, playlists: false }, + buildSearchUrl: (q, opts) => `/api/search?q=${encodeURIComponent(q)}&providers=${encodeURIComponent((opts?.providers && opts.providers !== 'all') ? opts.providers.join(',') : 'yt,dm,tw,pt,od,ru')}` + }, + { id: 'tw', displayName: 'Twitch', shortLabel: 'TW', icon: 'twitch', colorClass: 'text-purple-500', + supports: { search: true, shorts: false, live: true, playlists: false }, + buildSearchUrl: (q, opts) => `/api/search?q=${encodeURIComponent(q)}&providers=${encodeURIComponent((opts?.providers && opts.providers !== 'all') ? opts.providers.join(',') : 'yt,dm,tw,pt,od,ru')}` + }, + { id: 'pt', displayName: 'PeerTube', shortLabel: 'PT', icon: 'peertube', colorClass: 'text-green-500', + supports: { search: true, shorts: false, live: false, playlists: true }, + buildSearchUrl: (q, opts) => `/api/search?q=${encodeURIComponent(q)}&providers=${encodeURIComponent((opts?.providers && opts.providers !== 'all') ? opts.providers.join(',') : 'yt,dm,tw,pt,od,ru')}` + }, + { id: 'od', displayName: 'Odysee', shortLabel: 'OD', icon: 'odysee', colorClass: 'text-yellow-500', + supports: { search: true, shorts: false, live: false, playlists: false }, + buildSearchUrl: (q, opts) => `/api/search?q=${encodeURIComponent(q)}&providers=${encodeURIComponent((opts?.providers && opts.providers !== 'all') ? opts.providers.join(',') : 'yt,dm,tw,pt,od,ru')}` + }, + { id: 'ru', displayName: 'Rumble', shortLabel: 'RU', icon: 'rumble', colorClass: 'text-orange-500', + supports: { search: true, shorts: false, live: false, playlists: false }, + buildSearchUrl: (q, opts) => `/api/search?q=${encodeURIComponent(q)}&providers=${encodeURIComponent((opts?.providers && opts.providers !== 'all') ? opts.providers.join(',') : 'yt,dm,tw,pt,od,ru')}` + }, +]; + +export const PROVIDER_MAP = new Map(PROVIDERS.map(p => [p.id, p])); diff --git a/src/app/search/search.service.ts b/src/app/search/search.service.ts new file mode 100644 index 0000000..8c4978a --- /dev/null +++ b/src/app/search/search.service.ts @@ -0,0 +1,49 @@ +import { Injectable, inject } from '@angular/core'; +import { HttpClient } from '@angular/common/http'; +import { BehaviorSubject, combineLatest, distinctUntilChanged, debounceTime, map, switchMap } from 'rxjs'; +import type { ProviderId } from '../core/providers/provider-registry'; + +export interface SuggestionItem { + title: string; + id: string; + duration?: number; + isShort?: boolean; + thumbnail?: string; + uploaderName?: string; + url?: string; + type?: string; // 'video' | 'channel' | ... +} + +export interface SearchResponse { + q: string; + providers: ProviderId[]; + groups: Record; +} + +@Injectable({ providedIn: 'root' }) +export class SearchService { + private http = inject(HttpClient); + + readonly q$ = new BehaviorSubject(''); + readonly providers$ = new BehaviorSubject('all'); + + readonly params$ = combineLatest([this.q$, this.providers$]).pipe( + debounceTime(120), + distinctUntilChanged((a, b) => JSON.stringify(a) === JSON.stringify(b)) + ); + + readonly request$ = this.params$.pipe( + switchMap(([q, prov]) => { + const providersParam = (prov === 'all') + ? 'yt,dm,tw,pt,od,ru' + : (Array.isArray(prov) && prov.length > 0 ? prov.join(',') : ''); + return this.http.get('/api/search', { + params: { q, providers: providersParam } + }); + }) + ); + + // Convenience setter helpers + setQuery(q: string) { this.q$.next(q || ''); } + setProviders(list: ProviderId[] | 'all') { this.providers$.next(list && (Array.isArray(list) ? list : 'all')); } +} diff --git a/src/components/header/header.component.html b/src/components/header/header.component.html index bc0d49f..8a00b91 100644 --- a/src/components/header/header.component.html +++ b/src/components/header/header.component.html @@ -14,114 +14,10 @@ - -
- - - - - - - - @if (suggestionsOpen() && suggestionItems().length > 0) { -
-
    - @for (item of suggestionItems(); track $index; let i = $index) { - - @if (isFirstGenerated(i)) { -
  • Suggestions
  • - } -
  • - -
  • - } -
-
- } -
+ +
+ +
diff --git a/src/components/header/header.component.ts b/src/components/header/header.component.ts index d2e318a..7f88fcd 100644 --- a/src/components/header/header.component.ts +++ b/src/components/header/header.component.ts @@ -10,6 +10,7 @@ import { TranslatePipe } from '../../pipes/translate.pipe'; import { I18nService } from '../../services/i18n.service'; import { ThemesService } from '../../services/themes.service'; import { HistoryService, SearchHistoryItem } from '../../services/history.service'; +import { SearchBoxComponent } from '../search/search-box.component'; @Component({ selector: 'app-header', @@ -20,7 +21,9 @@ import { HistoryService, SearchHistoryItem } from '../../services/history.servic RouterLink, CommonModule, FormsModule, - TranslatePipe + TranslatePipe, + // New unified search box with provider chips and picker + SearchBoxComponent ] }) export class HeaderComponent { @@ -60,7 +63,7 @@ export class HeaderComponent { const lower = q.toLowerCase(); historyList = fromHistory.filter(txt => txt.toLowerCase().includes(lower)).slice(0, 15); } - + const items: Item[] = historyList.map(text => ({ text, source: 'history' })); // 2) If we have fewer than 15, fill with generated suggestions @@ -85,6 +88,23 @@ export class HeaderComponent { return items; }); + // New SearchBox submit handler (navigate with providers list) + onSearchBoxSubmit(evt: { q: string; providers: ("yt"|"dm"|"tw"|"pt"|"od"|"ru")[] | 'all' }) { + const q = (evt?.q || '').trim(); + if (!q) return; + const provider = this.selectedProvider(); + const theme = this.themes.activeSlug(); + const qp: any = { q, provider }; + if (Array.isArray(evt.providers)) { + qp.providers = evt.providers.join(','); + } else if (evt.providers === 'all') { + // Explicitly include all providers so SearchComponent uses unified multi-provider mode + qp.providers = 'yt,dm,tw,pt,od,ru'; + } + if (theme) qp.theme = theme; + this.router.navigate(['/search'], { queryParams: qp }); + } + // Generate query suggestions based on the current text and provider private generateQuerySuggestions(q: string, provider: string | null): string[] { const base = (q || '').trim(); diff --git a/src/components/search/provider-picker.component.html b/src/components/search/provider-picker.component.html new file mode 100644 index 0000000..fa8ce24 --- /dev/null +++ b/src/components/search/provider-picker.component.html @@ -0,0 +1,40 @@ +
+
+ +
diff --git a/src/components/search/provider-picker.component.ts b/src/components/search/provider-picker.component.ts new file mode 100644 index 0000000..99173c1 --- /dev/null +++ b/src/components/search/provider-picker.component.ts @@ -0,0 +1,79 @@ +import { Component, EventEmitter, Output, Input, signal, computed, ElementRef, ViewChild, AfterViewInit } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { FormsModule } from '@angular/forms'; +import { ProviderId, PROVIDERS } from '../../app/core/providers/provider-registry'; + +@Component({ + selector: 'app-provider-picker', + standalone: true, + imports: [CommonModule, FormsModule], + templateUrl: './provider-picker.component.html' +}) +export class ProviderPickerComponent implements AfterViewInit { + @Input() open = false; + @Input() selected: ProviderId[] | 'all' = 'all'; + @Output() close = new EventEmitter(); + @Output() apply = new EventEmitter<{ selection: ProviderId[] | 'all'; rememberDefault: boolean }>(); + + filter = signal(''); + rememberDefault = signal(false); + + @ViewChild('dialog', { static: false }) dialogRef?: ElementRef; + + readonly all = computed(() => this.selected === 'all'); + readonly providers = computed(() => { + const q = this.filter().toLowerCase(); + return PROVIDERS.filter(p => !q || p.displayName.toLowerCase().includes(q) || p.shortLabel.toLowerCase().includes(q)); + }); + + toggleAll() { + this.apply.emit({ selection: 'all', rememberDefault: this.rememberDefault() }); + } + + isChecked(id: ProviderId): boolean { + if (this.selected === 'all') return true; + return Array.isArray(this.selected) && this.selected.includes(id); + } + + toggle(id: ProviderId) { + if (this.selected === 'all') { + this.apply.emit({ selection: [id], rememberDefault: this.rememberDefault() }); + return; + } + const set = new Set(this.selected || []); + if (set.has(id)) set.delete(id); else set.add(id); + const next = Array.from(set) as ProviderId[]; + this.selected = next; + } + + onApply() { + this.apply.emit({ selection: this.selected, rememberDefault: this.rememberDefault() }); + } + + ngAfterViewInit() { + // Focus the dialog for accessibility + queueMicrotask(() => { + try { this.dialogRef?.nativeElement?.focus(); } catch {} + }); + } + + // Basic focus trap within the dialog + onDialogKeydown(ev: KeyboardEvent) { + if (ev.key !== 'Tab') return; + const root = this.dialogRef?.nativeElement; + if (!root) return; + const focusables = Array.from(root.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])')) + .filter(el => !el.hasAttribute('disabled')); + if (focusables.length === 0) return; + const first = focusables[0]; + const last = focusables[focusables.length - 1]; + const active = document.activeElement as HTMLElement | null; + if (!ev.shiftKey && active === last) { + ev.preventDefault(); + first.focus(); + } else if (ev.shiftKey && active === first) { + ev.preventDefault(); + last.focus(); + } + } +} diff --git a/src/components/search/search-box.component.html b/src/components/search/search-box.component.html new file mode 100644 index 0000000..fe62e75 --- /dev/null +++ b/src/components/search/search-box.component.html @@ -0,0 +1,105 @@ +
+ +
+ + + + + + + + + + + + +
+ + + + + +
+
    +
  • + +
  • +
+
+ + +
+
+
+

Quick Menu

+ +
+
+ +
+
History
+
    +
  • + +
  • +
  • No recent searches.
  • +
+
+ +
+
+
Providers
+ +
+
+ +
+
+ +
+
+
+
+
+
diff --git a/src/components/search/search-box.component.ts b/src/components/search/search-box.component.ts new file mode 100644 index 0000000..f483447 --- /dev/null +++ b/src/components/search/search-box.component.ts @@ -0,0 +1,247 @@ +import { Component, EventEmitter, Output, Input, signal, computed, effect, inject, HostListener } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { FormsModule } from '@angular/forms'; +import { ProviderId, PROVIDERS } from '../../app/core/providers/provider-registry'; +import { ProviderPickerComponent } from './provider-picker.component'; +import { SearchService } from '../../app/search/search.service'; +import { UserService, type UserPreferences } from '../../services/user.service'; +import { HistoryService, type SearchHistoryItem } from '../../services/history.service'; +// No overlays; we render fixed-position modals with high z-index + +@Component({ + selector: 'app-search-box', + standalone: true, + imports: [CommonModule, FormsModule, ProviderPickerComponent], + templateUrl: './search-box.component.html' +}) +export class SearchBoxComponent { + private search = inject(SearchService); + private users = inject(UserService); + private history = inject(HistoryService); + + // Input/Output bindings + @Input() placeholder: string = 'Search videos…'; + @Output() submitted = new EventEmitter<{ q: string; providers: ProviderId[] | 'all' }>(); + + // Local state signals + query = signal(''); + providerMode = signal<'all' | 'custom'>('all'); + selected = signal([]); + pickerOpen = signal(false); + suggestionsOpen = signal(false); + // Inline @autocomplete state + atOpen = signal(false); + atIndex = signal(0); + atOptions = computed(() => { + const q = this.query(); + const m = /(^|\s)@([a-z]{1,24})$/i.exec(q); + if (!m) return [] as { id: ProviderId; label: string }[]; + const term = (m[2] || '').toLowerCase(); + const opts = PROVIDERS.filter(p => + p.shortLabel.toLowerCase().includes(term) || p.displayName.toLowerCase().includes(term) + ).map(p => ({ id: p.id, label: p.displayName })); + this.atOpen.set(opts.length > 0); + if (this.atIndex() >= opts.length) this.atIndex.set(0); + return opts as any; + }); + // Quick menu modal (Ctrl/Cmd+K) + quickOpen = signal(false); + recentSearches = signal([]); + + readonly chips = PROVIDERS.map(p => ({ id: p.id, label: p.shortLabel, colorClass: p.colorClass })); + + // Derived state + readonly providersForRequest = computed(() => { + return this.providerMode() === 'all' ? 'all' : (this.selected().length ? this.selected() : 'all'); + }); + + constructor() { + // Reflect SearchService into local state to restore from URL/preference + effect(() => { + const q = this.search.q$.value; + const prov = this.search.providers$.value; + if (typeof q === 'string' && q !== this.query()) this.query.set(q); + if (prov === 'all') { + this.providerMode.set('all'); + this.selected.set([]); + } else if (Array.isArray(prov)) { + this.providerMode.set('custom'); + this.selected.set(prov); + } + + }); + + // Apply default providers from user preferences if none explicitly set + effect(() => { + const prefs: UserPreferences | null = this.users.preferences(); + if (!prefs) return; + const list = (prefs as any).defaultProviders as string[] | undefined; + if (Array.isArray(list) && list.length > 0) { + // Only apply if current mode is 'all' and nothing selected + if (this.providerMode() === 'all' && this.selected().length === 0) { + // Cast to ProviderId[] while trusting server-provided list + this.providerMode.set('custom'); + this.selected.set(list as any); + } + } + }); + } + + // Update query and handle inline '@provider' prefix to open filtered picker + queryUpdate(value: string) { + this.query.set(value); + const m = /(^|\s)@([a-z]{1,12})$/i.exec(value); + if (m) { + const term = m[2] || ''; + this.pickerOpen.set(true); + const lower = term.toLowerCase(); + const matched = PROVIDERS.filter(p => p.shortLabel.toLowerCase().startsWith(lower) || p.displayName.toLowerCase().includes(lower)).map(p => p.id); + if (matched.length === 1) { + this.toggleChip(matched[0]); + } + } + } + + // Toggle All chip + toggleAll() { + if (this.providerMode() === 'all') { + // Switch to none selected (effectively prompt to pick) + this.providerMode.set('custom'); + this.selected.set([]); + } else { + this.providerMode.set('all'); + this.selected.set([]); + } + } + + // Toggle individual chip + toggleChip(id: ProviderId) { + if (this.providerMode() === 'all') this.providerMode.set('custom'); + const cur = new Set(this.selected()); + if (cur.has(id)) cur.delete(id); else cur.add(id); + const next = Array.from(cur); + this.selected.set(next); + if (next.length === 0) { + // Empty selection warning UX could be handled by parent; keep custom mode + } + } + + // Keyboard shortcuts: Alt+1..6 map to chips by order + handleKeydown(ev: KeyboardEvent) { + if (ev.key === '@') { + ev.preventDefault(); + this.pickerOpen.set(true); + return; + } + // Inline @autocomplete navigation + if (this.atOpen()) { + const opts = this.atOptions(); + if (ev.key === 'ArrowDown') { ev.preventDefault(); this.atIndex.set(Math.min(opts.length - 1, this.atIndex() + 1)); return; } + if (ev.key === 'ArrowUp') { ev.preventDefault(); this.atIndex.set(Math.max(0, this.atIndex() - 1)); return; } + if (ev.key === 'Enter') { + ev.preventDefault(); + const pick = opts[this.atIndex()]; + if (pick) this.toggleChip(pick.id); + this.atOpen.set(false); + return; + } + if (ev.key === 'Escape') { this.atOpen.set(false); } + } + if (ev.altKey) { + const map: Record = { '1': 'yt', '2': 'dm', '3': 'tw', '4': 'pt', '5': 'od', '6': 'ru' }; + const pid = map[ev.key]; + if (pid) { ev.preventDefault(); this.toggleChip(pid); } + } + if (ev.key === 'Escape') { + this.pickerOpen.set(false); + this.suggestionsOpen.set(false); + } + } + + // Global shortcut Ctrl/Cmd+K to open the Providers picker + @HostListener('document:keydown', ['$event']) + onGlobalKey(ev: KeyboardEvent) { + if ((ev.key.toLowerCase() === 'k') && (ev.ctrlKey || ev.metaKey)) { + ev.preventDefault(); + this.quickOpen.set(true); + // Load last 15 searches + try { this.history.getSearchHistory(15).subscribe({ next: (items) => this.recentSearches.set(items || []), error: () => {} }); } catch {} + } + // Also support Ctrl+Shift+K explicitly + if ((ev.key.toLowerCase() === 'k') && ev.ctrlKey && ev.shiftKey) { + ev.preventDefault(); + this.quickOpen.set(true); + } + if (ev.key === 'Escape') { + if (this.quickOpen()) { + ev.preventDefault(); + this.closeQuickMenu(); + } + if (this.pickerOpen()) { + ev.preventDefault(); + this.closePicker(); + } + if (this.atOpen()) { + ev.preventDefault(); + this.atOpen.set(false); + } + } + } + + onSubmit(ev: Event) { + ev.preventDefault(); + const q = (this.query() || '').trim(); + if (!q) return; + const prov = this.providersForRequest(); + // Update service for global listeners + this.search.setQuery(q); + this.search.setProviders(prov); + this.submitted.emit({ q, providers: prov }); + } + + openPicker() { this.pickerOpen.set(true); } + closePicker() { this.pickerOpen.set(false); } + + // Accept both legacy payload (array|'all') and new object payload; use any to satisfy strict template binder + applyPicker(payload: any) { + const isObj = payload && typeof payload === 'object' && !Array.isArray(payload); + const prov = (isObj ? payload.selection : payload) as ProviderId[] | 'all'; + const rememberDefault = isObj ? !!payload.rememberDefault : false; + if (prov === 'all') { + this.providerMode.set('all'); + this.selected.set([]); + } else { + this.providerMode.set('custom'); + this.selected.set(prov); + } + // Persist default selection if requested and user is logged-in + if (rememberDefault) { + const body: any = { defaultProviders: (prov === 'all') ? [] : prov }; + try { this.users.updatePreferences(body).subscribe({ next: () => {}, error: () => {} }); } catch {} + } + this.closePicker(); + } + + // Quick menu close/apply (re-using same payload shape as picker) + closeQuickMenu() { this.quickOpen.set(false); } + applyQuickMenu(payload: any) { + this.applyPicker(payload); + this.closeQuickMenu(); + } + + // Quick menu provider toggles + quickToggleAll() { this.applyQuickMenu({ selection: 'all', rememberDefault: false }); } + quickToggle(id: ProviderId) { + const set = new Set(this.selected()); + if (set.has(id)) set.delete(id); else set.add(id); + this.selected.set(Array.from(set)); + } + + // Lock body scroll when a modal is open (a11y UX) + private _scrollLock = effect(() => { + const open = this.quickOpen() || this.pickerOpen(); + try { + document.body.style.overflow = open ? 'hidden' : ''; + } catch {} + }); +} diff --git a/src/components/search/search-suggestions.component.html b/src/components/search/search-suggestions.component.html new file mode 100644 index 0000000..9827c44 --- /dev/null +++ b/src/components/search/search-suggestions.component.html @@ -0,0 +1,28 @@ +
+ +
+
+ {{ entry.key | uppercase }} +
+
    +
  • + +
    +
    {{ s.title }}
    +
    {{ s.uploaderName }}
    +
    +
  • +
  • + Aucun résultat pour ce fournisseur. +
  • +
+ +
+
diff --git a/src/components/search/search-suggestions.component.ts b/src/components/search/search-suggestions.component.ts new file mode 100644 index 0000000..3d3b766 --- /dev/null +++ b/src/components/search/search-suggestions.component.ts @@ -0,0 +1,18 @@ +import { Component, Input } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { RouterLink } from '@angular/router'; +import type { ProviderId } from '../../app/core/providers/provider-registry'; +import type { SuggestionItem } from '../../app/search/search.service'; + +@Component({ + selector: 'app-search-suggestions', + standalone: true, + imports: [CommonModule, RouterLink], + templateUrl: './search-suggestions.component.html' +}) +export class SearchSuggestionsComponent { + @Input() groups: Record = { + yt: [], dm: [], tw: [], pt: [], od: [], ru: [] + } as any; + @Input() query: string = ''; +} diff --git a/src/components/search/search.component.html b/src/components/search/search.component.html index 281e1bd..ff6662a 100644 --- a/src/components/search/search.component.html +++ b/src/components/search/search.component.html @@ -27,6 +27,11 @@
} + + @if (showUnified()) { + + } + (''); loading = signal(false); @@ -41,6 +45,11 @@ export class SearchComponent { notice = signal(null); providerParam = signal(null); themeParam = signal(null); + providersListParam = signal(null); + + // Unified multi-provider response (grouped suggestions) + groups = signal>({} as any); + showUnified = signal(false); hasQuery = computed(() => this.q().length > 0); providerLabel = computed(() => { @@ -63,16 +72,51 @@ export class SearchComponent { filteredResults = computed(() => { const tag = this.filterTag(); const provider = this.selectedProviderForView(); + + // Use unified results if available + if (this.showUnified()) { + const groups = this.groups(); + const list: Video[] = []; + + // Convert unified groups to Video objects + Object.entries(groups).forEach(([providerId, items]) => { + items.forEach((item: any) => { + list.push({ + videoId: item.id, + title: item.title, + thumbnail: item.thumbnail || '', + uploaderName: item.uploaderName || 'Unknown', + uploaderAvatar: '', + views: 0, + uploaded: Date.now(), + uploadedDate: new Date().toISOString(), + duration: 0, + url: item.url || '', + type: 'video', + provider: providerId as 'youtube'|'dailymotion'|'twitch'|'rumble'|'odysee'|'peertube' + }); + }); + }); + + // Apply tag filtering to unified results + if (provider === 'twitch') return list; // Not used for Twitch (separate sections) + if (tag === 'all') return list; + + // For now, return all results since we don't have duration/uploaded info from unified search + return list; + } + + // Fallback to legacy results const list = this.results(); if (provider === 'twitch') return list; // Not used for Twitch (separate sections) if (tag === 'all') return list; - + const now = Date.now(); const oneDay = 24 * 60 * 60 * 1000; const sevenDays = 7 * oneDay; const thirtyDays = 30 * oneDay; const oneYear = 365 * oneDay; - + // Duration filters if (tag === 'short') return list.filter(v => { const d = Number(v.duration || 0); @@ -86,7 +130,7 @@ export class SearchComponent { const d = Number(v.duration || 0); return d >= 20 * 60; }); - + // Date filters if (tag === 'today') return list.filter(v => { const uploadTime = typeof v.uploaded === 'number' ? v.uploaded : 0; @@ -104,7 +148,7 @@ export class SearchComponent { const uploadTime = typeof v.uploaded === 'number' ? v.uploaded : 0; return uploadTime > 0 && (now - uploadTime) <= oneYear; }); - + return list; }); @@ -113,8 +157,34 @@ export class SearchComponent { const provider = this.selectedProviderForView(); const tags: { key: string; label: string; show: boolean }[] = []; const now = Date.now(); - const list = this.results(); - + + // Use unified results if available + const list = this.showUnified() ? + (() => { + const groups = this.groups(); + const results: Video[] = []; + Object.entries(groups).forEach(([_, items]) => { + items.forEach((item: any) => { + results.push({ + videoId: item.id, + title: item.title, + thumbnail: item.thumbnail || '', + uploaderName: item.uploaderName || 'Unknown', + uploaderAvatar: '', + views: 0, + uploaded: Date.now(), + uploadedDate: new Date().toISOString(), + duration: 0, + url: item.url || '', + type: 'video', + provider: 'youtube' as any + }); + }); + }); + return results; + })() : + this.results(); + if (provider === 'twitch') { const hasLive = this.twitchChannels().length > 0; const hasVods = this.twitchVods().length > 0; @@ -132,20 +202,20 @@ export class SearchComponent { const sevenDays = 7 * oneDay; const thirtyDays = 30 * oneDay; const oneYear = 365 * oneDay; - - let hasShort = false, hasMedium = false, hasLong = false, + + let hasShort = false, hasMedium = false, hasLong = false, hasToday = false, hasThisWeek = false, hasThisMonth = false, hasThisYear = false; - + for (const v of list) { const d = Number(v.duration || 0); const uploadTime = typeof v.uploaded === 'number' ? v.uploaded : 0; const timeDiff = now - uploadTime; - + // Duration filters if (d > 0 && d < 4 * 60) hasShort = true; else if (d >= 4 * 60 && d < 20 * 60) hasMedium = true; else if (d >= 20 * 60) hasLong = true; - + // Date filters if (uploadTime > 0) { if (timeDiff <= oneDay) hasToday = true; @@ -160,13 +230,13 @@ export class SearchComponent { tags.push({ key: 'short', label: 'Moins de 4 min', show: hasShort }); tags.push({ key: 'medium', label: 'De 4 à 20 min', show: hasMedium }); tags.push({ key: 'long', label: '20 min et plus', show: hasLong }); - + // Add date filters tags.push({ key: 'today', label: 'Aujourd\'hui', show: hasToday }); tags.push({ key: 'this_week', label: 'Cette semaine', show: hasThisWeek }); tags.push({ key: 'this_month', label: 'Ce mois-ci', show: hasThisMonth }); tags.push({ key: 'this_year', label: 'Cette année', show: hasThisYear }); - + return tags.filter(t => t.show); }); @@ -176,24 +246,54 @@ export class SearchComponent { this.title.setTitle(this.pageHeading()); }); + // Subscribe once to unified multi-provider results and reflect to UI + this.unified.request$.subscribe({ + next: (resp: SearchResponse) => { + this.groups.set(resp.groups as any); + this.loading.set(false); + }, + error: () => { + this.groups.set({} as any); + this.loading.set(false); + } + }); + // Listen to query param changes (so subsequent searches update) this.route.queryParamMap.subscribe((pm) => { const q = (pm.get('q') || '').trim(); this.q.set(q); const prov = (pm.get('provider') as Provider) || null; const theme = pm.get('theme'); + const providersParam = (pm.get('providers') || '').trim(); + // Parse providers CSV if present + let providersList: ProviderId[] | 'all' | null = null; + if (providersParam) { + const arr = providersParam.split(',').map(s => s.trim()).filter(Boolean) as ProviderId[]; + providersList = (arr.length > 0) ? arr : 'all'; + } this.providerParam.set(prov); this.themeParam.set(theme); + this.providersListParam.set(providersList); + if (q) { this.notice.set(null); // Reset active tag on new query - const provider = (prov || this.instances.selectedProvider()); + const provider = prov || this.instances.selectedProvider(); this.filterTag.set(provider === 'twitch' ? 'twitch_all' : 'all'); - this.reloadSearch(); + + // Use unified search in all cases + const providersToUse = providersList || [provider as ProviderId]; + this.unified.setQuery(q); + this.unified.setProviders(providersToUse); + this.showUnified.set(true); + this.loading.set(true); + this.groups.set({} as any); // Clear previous results } else { this.results.set([]); this.nextCursor.set(null); this.loading.set(false); + this.groups.set({} as any); + this.showUnified.set(false); } }); @@ -206,8 +306,18 @@ export class SearchComponent { untracked(() => { // If provider is explicitly specified in query, do not override it with global changes if (this.providerParam()) return; - if (this.q()) { - this.notice.set(null); + if (!this.q()) return; + this.notice.set(null); + // If unified mode is active, re-emit providers to trigger a refresh instead of legacy reload + if (this.showUnified()) { + const provParam = this.providersListParam(); + const provider = this.instances.selectedProvider(); + const providersToUse = (provParam && (provParam === 'all' || (Array.isArray(provParam) && provParam.length > 0))) + ? (provParam as any) + : [provider as unknown as ProviderId]; + this.unified.setProviders(providersToUse); + this.loading.set(true); + } else { this.reloadSearch(); } }); @@ -354,11 +464,6 @@ export class SearchComponent { return qp; } - // Update active filter tag from the template - setFilterTag(key: string) { - this.filterTag.set(key); - } - @ViewChild('searchInput') searchInput?: ElementRef; onSearchEnter(event: Event) { @@ -366,8 +471,16 @@ export class SearchComponent { keyboardEvent.preventDefault(); const query = this.q().trim(); if (query) { - // Utiliser reloadSearch() pour effectuer une nouvelle recherche - this.reloadSearch(); + // Route unified search regardless of providers param + const provParam = this.providersListParam(); + const provider = this.providerParam() || this.instances.selectedProvider(); + const providersToUse = (provParam && (provParam === 'all' || (Array.isArray(provParam) && provParam.length > 0))) + ? (provParam as any) + : [provider as unknown as ProviderId]; + this.unified.setQuery(query); + this.unified.setProviders(providersToUse); + this.showUnified.set(true); + this.loading.set(true); this.closeSearchResults(); // Retirer le focus de l'input if (this.searchInput) { @@ -389,8 +502,8 @@ export class SearchComponent { // Vous pouvez ajouter ici la logique de recherche au fur et à mesure si nécessaire } - performSearch(query: string) { - // Cette méthode sera appelée pour effectuer la recherche - // Vous pouvez ajouter ici la logique de recherche + // Update active filter tag from the template + setFilterTag(key: string) { + this.filterTag.set(key); } } diff --git a/src/services/user.service.ts b/src/services/user.service.ts index be45a6d..277e67d 100644 --- a/src/services/user.service.ts +++ b/src/services/user.service.ts @@ -7,6 +7,7 @@ import type { AuthUser } from './auth.service'; export interface UserPreferences { language?: string | null; defaultProvider?: string | null; + defaultProviders?: string[] | null; theme?: 'light' | 'dark' | 'black' | 'system' | string | null; videoQuality?: string | null; region?: string | null; diff --git a/test-guide.md b/test-guide.md new file mode 100644 index 0000000..b2b4590 --- /dev/null +++ b/test-guide.md @@ -0,0 +1,67 @@ +# Guide de test complet de la recherche unifiée +# Exécutez ces étapes pour vérifier que tout fonctionne + +echo "=== 1. Test du backend ===" +echo "Démarrer le serveur backend :" +echo "npm run api:watch" +echo "" +echo "Dans un autre terminal, tester les adaptateurs :" +echo "curl \"http://localhost:4000/api/search?q=test&providers=dm\" | jq" +echo "curl \"http://localhost:4000/api/search?q=linux&providers=yt,dm\" | jq" +echo "" +echo "=== 2. Test du frontend ===" +echo "Démarrer l'application frontend :" +echo "npm start" +echo "" +echo "=== 3. Tests fonctionnels dans le navigateur ===" +echo "" +echo "Test 1 - Recherche simple :" +echo "1. Aller sur http://localhost:4200" +echo "2. Taper 'test' dans la barre de recherche" +echo "3. Cliquer sur 'Search'" +echo "4. Vérifier que l'URL contient ?q=test&providers=yt,dm,tw,pt,od,ru" +echo "5. Vérifier que les résultats s'affichent" +echo "" +echo "Test 2 - Recherche avec providers spécifiques :" +echo "1. Cliquer sur le bouton '@' pour ouvrir le sélecteur" +echo "2. Sélectionner seulement 'YouTube' et 'Dailymotion'" +echo "3. Taper 'music' et cliquer 'Search'" +echo "4. Vérifier que l'URL contient ?q=music&providers=yt,dm" +echo "5. Vérifier que seuls YT et DM sont recherchés" +echo "" +echo "Test 3 - Recherche avec tous les providers :" +echo "1. Cliquer sur 'All' pour tout sélectionner" +echo "2. Taper 'javascript' et cliquer 'Search'" +echo "3. Vérifier que tous les providers sont utilisés" +echo "" +echo "Test 4 - Navigation et état :" +echo "1. Faire une recherche" +echo "2. Actualiser la page (F5)" +echo "3. Vérifier que la recherche se relance automatiquement" +echo "4. Changer de provider dans l'en-tête" +echo "5. Vérifier que la recherche se met à jour" +echo "" +echo "=== 4. Vérifications techniques ===" +echo "" +echo "Console navigateur (F12) :" +echo "- Pas d'erreurs JavaScript" +echo "- Requêtes réseau vers /api/search réussies" +echo "- Les groupes de résultats s'affichent correctement" +echo "" +echo "Onglet Network :" +echo "- Status 200 pour /api/search" +echo "- Payload JSON avec q, providers, groups" +echo "- Headers CORS corrects" +echo "" +echo "=== 5. Si ça ne marche pas ===" +echo "" +echo "Problèmes courants :" +echo "1. Backend non démarré : npm run api:watch" +echo "2. Clé YouTube manquante : ajouter YOUTUBE_API_KEY dans .env" +echo "3. CORS bloqué : vérifier proxy.conf.json" +echo "4. Providers vides : vérifier les logs backend" +echo "" +echo "Debug :" +echo "- Ouvrir http://localhost:4000/api/search?q=test&providers=dm" +echo "- Vérifier la réponse JSON" +echo "- Consulter les logs du serveur diff --git a/test-search.bat b/test-search.bat new file mode 100644 index 0000000..5505614 --- /dev/null +++ b/test-search.bat @@ -0,0 +1,29 @@ +@echo off +REM Test des adaptateurs de recherche - Version Windows + +echo === Test YouTube (nécessite YOUTUBE_API_KEY) === +curl "http://localhost:4000/api/search?q=test&providers=yt" + +echo. +echo === Test Dailymotion (pas de clé API nécessaire) === +curl "http://localhost:4000/api/search?q=test&providers=dm" + +echo. +echo === Test Twitch (pas de clé API nécessaire) === +curl "http://localhost:4000/api/search?q=gaming&providers=tw" + +echo. +echo === Test PeerTube (pas de clé API nécessaire) === +curl "http://localhost:4000/api/search?q=linux&providers=pt" + +echo. +echo === Test Odysee (pas de clé API nécessaire) === +curl "http://localhost:4000/api/search?q=programming&providers=od" + +echo. +echo === Test Rumble (pas de clé API nécessaire) === +curl "http://localhost:4000/api/search?q=news&providers=ru" + +echo. +echo === Test multi-fournisseurs === +curl "http://localhost:4000/api/search?q=javascript&providers=yt,dm,pt,od,ru" diff --git a/test-search.sh b/test-search.sh new file mode 100644 index 0000000..1f54f5d --- /dev/null +++ b/test-search.sh @@ -0,0 +1,23 @@ +# Test des adaptateurs de recherche +# Exécutez ces commandes après avoir redémarré le serveur backend + +# Test YouTube (nécessite YOUTUBE_API_KEY) +curl "http://localhost:4000/api/search?q=test&providers=yt" | jq + +# Test Dailymotion (pas de clé API nécessaire) +curl "http://localhost:4000/api/search?q=test&providers=dm" | jq + +# Test Twitch (pas de clé API nécessaire pour la recherche basique) +curl "http://localhost:4000/api/search?q=gaming&providers=tw" | jq + +# Test PeerTube (pas de clé API nécessaire) +curl "http://localhost:4000/api/search?q=linux&providers=pt" | jq + +# Test Odysee (pas de clé API nécessaire) +curl "http://localhost:4000/api/search?q=programming&providers=od" | jq + +# Test Rumble (pas de clé API nécessaire) +curl "http://localhost:4000/api/search?q=news&providers=ru" | jq + +# Test multi-fournisseurs +curl "http://localhost:4000/api/search?q=javascript&providers=yt,dm,pt,od,ru" | jq diff --git a/todo.md b/todo.md new file mode 100644 index 0000000..3c88364 --- /dev/null +++ b/todo.md @@ -0,0 +1,27 @@ +- [x] Step 1: Audit current codebase for existing search and provider logic on frontend and server +- [x] Step 2: Design and scaffold Provider Registry on frontend and server +- [x] Step 3: Implement SearchService with multi-provider params and HTTP request +- [x] Step 8: Implement backend /api/search with providers param and fan-out to server/providers handlers +- [ ] Step 4: Build SearchBoxComponent with chips, @autocomplete, and keyboard shortcuts +- [ ] Step 5: Build ProviderPickerComponent (Ctrl/⌘+K modal) with filtering and apply +- [ ] Step 6: Build SearchSuggestionsComponent with grouped sections and empty-state handling +- [ ] Step 7: Add router query-param sync and default provider preference loading +- [ ] Step 9: Persist default providers preference in user profile (server + client integration points) +- [ ] Step 10: Add keyboard accessibility and a11y behaviors (Tab/Shift+Tab, Esc) +- [ ] Step 11: Write unit tests (SearchService, ProviderPicker toggle, @ parsing) +- [ ] Step 12: Write basic e2e scenarios for providers filtering and deep-link +- [ ] Step 13: Add minimal telemetry hooks and events +- [ ] Step 14: Update README UX GIF and usage notes + +Updated TODO status + + Step 4: Build SearchBoxComponent with chips, @autocomplete (initial), and keyboard shortcuts + Step 5: Build ProviderPickerComponent (Ctrl/⌘+K modal) with filtering and apply — finish History column + a11y in modal + Step 6: Build SearchSuggestionsComponent with grouped sections and empty-state handling — add per-provider unsupported rows + deep-links + Step 7: Add router query-param sync and default provider preference loading (initial sync in Search page) + Step 9: Persist default providers preference in user profile (client + server endpoints wired) + Step 10: Add keyboard accessibility and a11y behaviors (Tab/Shift+Tab, Esc) — finish trap/aria in modal + Step 11: Write unit tests (SearchService, ProviderPicker toggle, @ parsing) + Step 12: Write basic e2e scenarios for providers filtering and deep-link + Step 13: Add minimal telemetry hooks and events + Step 14: Update README UX GIF and usage notes \ No newline at end of file