diff --git a/README.md b/README.md index d408e56..1c9c31a 100644 --- a/README.md +++ b/README.md @@ -60,11 +60,20 @@ registrations and copilot assignments take effect without visiting the forum, including before its first topic exists. The challenge watch routes return `{ challengeId, memberId, watching }` for the authenticated human member; PUT and DELETE persist explicit preferences. DELETE stores an opt-out so later reads or -resource changes cannot silently resubscribe the member. Explicit topic watches -remain independent. Challenge-wide watchers receive new topic and post emails, +resource changes cannot silently resubscribe the member. Topic list/detail reads +inherit this preference when there is no explicit topic choice. Topic PUT stores +`watching: true`; challenge-topic DELETE stores `watching: false` so a later forum +re-watch cannot resubscribe that topic. Explicit topic watches survive forum +opt-out, and explicit topic opt-outs suppress emails even while the forum is +watched. Announcements follow the same rules. New challenge topics, including +those created by the member, inherit the current forum preference. Challenge-wide watchers receive new topic and post emails, subject to the same topic visibility, ban, author exclusion, and deduplication rules as topic watchers. Deploy the `20261016000000_challenge_forum_watch` database -migration before the API and the Opportunities watch control. +migration and `20261020000000_topic_watch_preferences` before the API and the +Opportunities watch control. The latter preserves existing topic watch rows as +opt-ins; historical rows have no provenance distinguishing manual from author +watches. New challenge-topic creation no longer seeds an author watch. General +forum author watches and unwatch behavior are unchanged. Recipient resolution expands watches from the created content topic through all ancestor topics using `TopicClosure`, dedupes by member id, excludes the @@ -307,4 +316,4 @@ The forums Prisma schema defines `Topic`, `Post`, `PostReaction`, `TopicClosure` The production image includes the Prisma schema, migration history, configuration, and CLI. Its startup script runs `prisma migrate deploy` before starting NestJS, so a deployment cannot begin serving requests against an older forums schema. Migration failure stops the container instead of leaving feature-dependent reads or writes partially available. -Topic creation is transactional: it creates the topic, starter post, closure rows, and, for human authors, author watch and read-state rows together. M2M topic creation uses the system author and skips member watch/read-state side effects. Topic deletion is soft deletion, and post deletion preserves the post row while setting content to null for placeholder reads. Topic summary reads use side-effect-free raw queries for topic lock state, visible-post counts, nullable latest visible activity, and unread derivation, then apply centralized forums policy filtering before pagination. +Topic creation is transactional: it creates the topic, starter post, closure rows, and, for human authors, read-state rows together. General topics also seed an author watch; challenge topics inherit the forum preference. M2M topic creation uses the system author and skips member watch/read-state side effects. Topic deletion is soft deletion, and post deletion preserves the post row while setting content to null for placeholder reads. Topic summary reads use side-effect-free raw queries for topic lock state, visible-post counts, nullable latest visible activity, and unread derivation, then apply centralized forums policy filtering before pagination. diff --git a/packages/forums-prisma-client/edge.js b/packages/forums-prisma-client/edge.js index d89bc07..5814b9c 100644 --- a/packages/forums-prisma-client/edge.js +++ b/packages/forums-prisma-client/edge.js @@ -159,6 +159,7 @@ exports.Prisma.TopicClosureScalarFieldEnum = { exports.Prisma.TopicWatchScalarFieldEnum = { topicId: 'topicId', memberId: 'memberId', + watching: 'watching', createdAt: 'createdAt' }; @@ -255,14 +256,14 @@ const config = { "clientVersion": "7.9.0", "engineVersion": "e922089b7d7502aff4249d5da3420f6fa55fc6ad", "activeProvider": "postgresql", - "inlineSchema": "generator client {\n provider = \"prisma-client-js\"\n output = \"./generated/client\"\n}\n\ngenerator externalClient {\n provider = \"prisma-client-js\"\n output = \"../packages/forums-prisma-client\"\n binaryTargets = [\"native\", \"debian-openssl-3.0.x\"]\n}\n\ndatasource db {\n provider = \"postgresql\"\n schemas = [\"forums\"]\n}\n\nenum PostReactionType {\n THUMBS_UP\n THUMBS_DOWN\n\n @@schema(\"forums\")\n}\n\nmodel Topic {\n id String @id @default(dbgenerated(\"nanoid()\")) @db.VarChar(14)\n parentTopicId String? @db.VarChar(14)\n challengeId String? @db.VarChar(64)\n roleName String? @db.VarChar(128)\n title String @db.VarChar(255)\n isAnnouncement Boolean @default(false)\n locked Boolean @default(false)\n lockedAt DateTime?\n lockedByMemberId String? @db.VarChar(64)\n authorMemberId String @db.VarChar(64)\n authorHandle String @db.VarChar(128)\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now()) @updatedAt\n deletedAt DateTime?\n deletedByMemberId String? @db.VarChar(64)\n\n parentTopic Topic? @relation(\"TopicChildren\", fields: [parentTopicId], references: [id])\n childTopics Topic[] @relation(\"TopicChildren\")\n posts Post[]\n ancestorClosures TopicClosure[] @relation(\"TopicClosureAncestor\")\n descendantClosures TopicClosure[] @relation(\"TopicClosureDescendant\")\n watches TopicWatch[]\n readStates TopicReadState[]\n\n @@index([parentTopicId])\n @@index([challengeId])\n @@index([roleName])\n @@index([deletedAt])\n @@index([isAnnouncement, createdAt])\n @@schema(\"forums\")\n}\n\nmodel MemberBan {\n id String @id @default(dbgenerated(\"nanoid()\")) @db.VarChar(14)\n memberId String @db.VarChar(64)\n createdAt DateTime @default(now())\n createdByMemberId String? @db.VarChar(64)\n removedAt DateTime?\n removedByMemberId String? @db.VarChar(64)\n\n @@index([memberId])\n @@index([removedAt])\n @@schema(\"forums\")\n}\n\nmodel IpBan {\n id String @id @default(dbgenerated(\"nanoid()\")) @db.VarChar(14)\n ipAddress String @db.VarChar(45)\n createdAt DateTime @default(now())\n createdByMemberId String? @db.VarChar(64)\n removedAt DateTime?\n removedByMemberId String? @db.VarChar(64)\n\n @@index([ipAddress])\n @@index([removedAt])\n @@schema(\"forums\")\n}\n\nmodel Post {\n id String @id @default(dbgenerated(\"nanoid()\")) @db.VarChar(14)\n topicId String @db.VarChar(14)\n parentType String @db.VarChar(16)\n parentId String @db.VarChar(14)\n authorMemberId String @db.VarChar(64)\n authorHandle String @db.VarChar(128)\n content String? @db.Text\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now()) @updatedAt\n deletedAt DateTime?\n deletedByMemberId String? @db.VarChar(64)\n\n topic Topic @relation(fields: [topicId], references: [id], onDelete: Cascade)\n reactions PostReaction[]\n\n @@index([topicId, createdAt])\n @@index([topicId, parentType, parentId])\n @@index([deletedAt])\n @@schema(\"forums\")\n}\n\nmodel PostReaction {\n postId String @db.VarChar(14)\n memberId String @db.VarChar(64)\n reaction PostReactionType\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now()) @updatedAt\n\n post Post @relation(fields: [postId], references: [id], onDelete: Cascade)\n\n @@id([postId, memberId])\n @@index([memberId])\n @@index([postId, reaction])\n @@schema(\"forums\")\n}\n\nmodel TopicClosure {\n ancestorTopicId String @db.VarChar(14)\n descendantTopicId String @db.VarChar(14)\n depth Int\n\n ancestorTopic Topic @relation(\"TopicClosureAncestor\", fields: [ancestorTopicId], references: [id], onDelete: Cascade)\n descendantTopic Topic @relation(\"TopicClosureDescendant\", fields: [descendantTopicId], references: [id], onDelete: Cascade)\n\n @@id([ancestorTopicId, descendantTopicId])\n @@index([ancestorTopicId, depth])\n @@index([descendantTopicId, depth])\n @@schema(\"forums\")\n}\n\nmodel TopicWatch {\n topicId String @db.VarChar(14)\n memberId String @db.VarChar(64)\n createdAt DateTime @default(now())\n\n topic Topic @relation(fields: [topicId], references: [id], onDelete: Cascade)\n\n @@id([topicId, memberId])\n @@index([memberId])\n @@schema(\"forums\")\n}\n\n// Explicit challenge-wide preferences override resource-based default watches.\nmodel ChallengeForumWatch {\n challengeId String @db.VarChar(64)\n memberId String @db.VarChar(64)\n watching Boolean\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now()) @updatedAt\n\n @@id([challengeId, memberId])\n @@index([memberId])\n @@schema(\"forums\")\n}\n\nmodel TopicReadState {\n topicId String @db.VarChar(14)\n memberId String @db.VarChar(64)\n lastReadAt DateTime @default(now())\n updatedAt DateTime @default(now()) @updatedAt\n\n topic Topic @relation(fields: [topicId], references: [id], onDelete: Cascade)\n\n @@id([topicId, memberId])\n @@index([memberId])\n @@index([lastReadAt])\n @@schema(\"forums\")\n}\n\n// Presentation and access rules for imported public category topics only.\nmodel PublicForumCategory {\n topicId String @id @db.VarChar(14)\n description String @default(\"\") @db.Text\n displayAs String @db.VarChar(16)\n sortOrder Int\n readRoles String[]\n createRoles String[]\n replyRoles String[]\n legacyId Int @unique\n legacySlug String @db.Text\n source Json\n\n @@schema(\"forums\")\n}\n\n// Vanilla-only role assignments never grant identity-wide roles.\nmodel PublicForumRoleMember {\n roleName String @db.VarChar(128)\n memberId String @db.VarChar(64)\n\n @@id([roleName, memberId])\n @@index([memberId])\n @@schema(\"forums\")\n}\n\n// Immutable provenance makes imports insert-only and safely repeatable.\nmodel PublicForumImportRecord {\n entityType String @db.VarChar(32)\n sourceId String @db.VarChar(64)\n targetId String @db.VarChar(64)\n sourceHash String @db.VarChar(64)\n targetHash String @db.VarChar(64)\n createdAt DateTime @default(now())\n\n @@id([entityType, sourceId])\n @@unique([entityType, targetId])\n @@schema(\"forums\")\n}\n" + "inlineSchema": "generator client {\n provider = \"prisma-client-js\"\n output = \"./generated/client\"\n}\n\ngenerator externalClient {\n provider = \"prisma-client-js\"\n output = \"../packages/forums-prisma-client\"\n binaryTargets = [\"native\", \"debian-openssl-3.0.x\"]\n}\n\ndatasource db {\n provider = \"postgresql\"\n schemas = [\"forums\"]\n}\n\nenum PostReactionType {\n THUMBS_UP\n THUMBS_DOWN\n\n @@schema(\"forums\")\n}\n\nmodel Topic {\n id String @id @default(dbgenerated(\"nanoid()\")) @db.VarChar(14)\n parentTopicId String? @db.VarChar(14)\n challengeId String? @db.VarChar(64)\n roleName String? @db.VarChar(128)\n title String @db.VarChar(255)\n isAnnouncement Boolean @default(false)\n locked Boolean @default(false)\n lockedAt DateTime?\n lockedByMemberId String? @db.VarChar(64)\n authorMemberId String @db.VarChar(64)\n authorHandle String @db.VarChar(128)\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now()) @updatedAt\n deletedAt DateTime?\n deletedByMemberId String? @db.VarChar(64)\n\n parentTopic Topic? @relation(\"TopicChildren\", fields: [parentTopicId], references: [id])\n childTopics Topic[] @relation(\"TopicChildren\")\n posts Post[]\n ancestorClosures TopicClosure[] @relation(\"TopicClosureAncestor\")\n descendantClosures TopicClosure[] @relation(\"TopicClosureDescendant\")\n watches TopicWatch[]\n readStates TopicReadState[]\n\n @@index([parentTopicId])\n @@index([challengeId])\n @@index([roleName])\n @@index([deletedAt])\n @@index([isAnnouncement, createdAt])\n @@schema(\"forums\")\n}\n\nmodel MemberBan {\n id String @id @default(dbgenerated(\"nanoid()\")) @db.VarChar(14)\n memberId String @db.VarChar(64)\n createdAt DateTime @default(now())\n createdByMemberId String? @db.VarChar(64)\n removedAt DateTime?\n removedByMemberId String? @db.VarChar(64)\n\n @@index([memberId])\n @@index([removedAt])\n @@schema(\"forums\")\n}\n\nmodel IpBan {\n id String @id @default(dbgenerated(\"nanoid()\")) @db.VarChar(14)\n ipAddress String @db.VarChar(45)\n createdAt DateTime @default(now())\n createdByMemberId String? @db.VarChar(64)\n removedAt DateTime?\n removedByMemberId String? @db.VarChar(64)\n\n @@index([ipAddress])\n @@index([removedAt])\n @@schema(\"forums\")\n}\n\nmodel Post {\n id String @id @default(dbgenerated(\"nanoid()\")) @db.VarChar(14)\n topicId String @db.VarChar(14)\n parentType String @db.VarChar(16)\n parentId String @db.VarChar(14)\n authorMemberId String @db.VarChar(64)\n authorHandle String @db.VarChar(128)\n content String? @db.Text\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now()) @updatedAt\n deletedAt DateTime?\n deletedByMemberId String? @db.VarChar(64)\n\n topic Topic @relation(fields: [topicId], references: [id], onDelete: Cascade)\n reactions PostReaction[]\n\n @@index([topicId, createdAt])\n @@index([topicId, parentType, parentId])\n @@index([deletedAt])\n @@schema(\"forums\")\n}\n\nmodel PostReaction {\n postId String @db.VarChar(14)\n memberId String @db.VarChar(64)\n reaction PostReactionType\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now()) @updatedAt\n\n post Post @relation(fields: [postId], references: [id], onDelete: Cascade)\n\n @@id([postId, memberId])\n @@index([memberId])\n @@index([postId, reaction])\n @@schema(\"forums\")\n}\n\nmodel TopicClosure {\n ancestorTopicId String @db.VarChar(14)\n descendantTopicId String @db.VarChar(14)\n depth Int\n\n ancestorTopic Topic @relation(\"TopicClosureAncestor\", fields: [ancestorTopicId], references: [id], onDelete: Cascade)\n descendantTopic Topic @relation(\"TopicClosureDescendant\", fields: [descendantTopicId], references: [id], onDelete: Cascade)\n\n @@id([ancestorTopicId, descendantTopicId])\n @@index([ancestorTopicId, depth])\n @@index([descendantTopicId, depth])\n @@schema(\"forums\")\n}\n\n// Explicit topic choices override challenge-wide notification preferences.\nmodel TopicWatch {\n topicId String @db.VarChar(14)\n memberId String @db.VarChar(64)\n watching Boolean @default(true)\n createdAt DateTime @default(now())\n\n topic Topic @relation(fields: [topicId], references: [id], onDelete: Cascade)\n\n @@id([topicId, memberId])\n @@index([memberId])\n @@schema(\"forums\")\n}\n\n// Explicit challenge-wide preferences override resource-based default watches.\nmodel ChallengeForumWatch {\n challengeId String @db.VarChar(64)\n memberId String @db.VarChar(64)\n watching Boolean\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now()) @updatedAt\n\n @@id([challengeId, memberId])\n @@index([memberId])\n @@schema(\"forums\")\n}\n\nmodel TopicReadState {\n topicId String @db.VarChar(14)\n memberId String @db.VarChar(64)\n lastReadAt DateTime @default(now())\n updatedAt DateTime @default(now()) @updatedAt\n\n topic Topic @relation(fields: [topicId], references: [id], onDelete: Cascade)\n\n @@id([topicId, memberId])\n @@index([memberId])\n @@index([lastReadAt])\n @@schema(\"forums\")\n}\n\n// Presentation and access rules for imported public category topics only.\nmodel PublicForumCategory {\n topicId String @id @db.VarChar(14)\n description String @default(\"\") @db.Text\n displayAs String @db.VarChar(16)\n sortOrder Int\n readRoles String[]\n createRoles String[]\n replyRoles String[]\n legacyId Int @unique\n legacySlug String @db.Text\n source Json\n\n @@schema(\"forums\")\n}\n\n// Vanilla-only role assignments never grant identity-wide roles.\nmodel PublicForumRoleMember {\n roleName String @db.VarChar(128)\n memberId String @db.VarChar(64)\n\n @@id([roleName, memberId])\n @@index([memberId])\n @@schema(\"forums\")\n}\n\n// Immutable provenance makes imports insert-only and safely repeatable.\nmodel PublicForumImportRecord {\n entityType String @db.VarChar(32)\n sourceId String @db.VarChar(64)\n targetId String @db.VarChar(64)\n sourceHash String @db.VarChar(64)\n targetHash String @db.VarChar(64)\n createdAt DateTime @default(now())\n\n @@id([entityType, sourceId])\n @@unique([entityType, targetId])\n @@schema(\"forums\")\n}\n" } -config.runtimeDataModel = JSON.parse("{\"models\":{\"Topic\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"parentTopicId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"roleName\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"title\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"isAnnouncement\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"locked\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"lockedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"lockedByMemberId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"authorMemberId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"authorHandle\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"deletedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"deletedByMemberId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"parentTopic\",\"kind\":\"object\",\"type\":\"Topic\",\"relationName\":\"TopicChildren\"},{\"name\":\"childTopics\",\"kind\":\"object\",\"type\":\"Topic\",\"relationName\":\"TopicChildren\"},{\"name\":\"posts\",\"kind\":\"object\",\"type\":\"Post\",\"relationName\":\"PostToTopic\"},{\"name\":\"ancestorClosures\",\"kind\":\"object\",\"type\":\"TopicClosure\",\"relationName\":\"TopicClosureAncestor\"},{\"name\":\"descendantClosures\",\"kind\":\"object\",\"type\":\"TopicClosure\",\"relationName\":\"TopicClosureDescendant\"},{\"name\":\"watches\",\"kind\":\"object\",\"type\":\"TopicWatch\",\"relationName\":\"TopicToTopicWatch\"},{\"name\":\"readStates\",\"kind\":\"object\",\"type\":\"TopicReadState\",\"relationName\":\"TopicToTopicReadState\"}],\"dbName\":null},\"MemberBan\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"memberId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdByMemberId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"removedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"removedByMemberId\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"IpBan\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"ipAddress\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdByMemberId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"removedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"removedByMemberId\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"Post\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"topicId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"parentType\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"parentId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"authorMemberId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"authorHandle\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"content\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"deletedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"deletedByMemberId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"topic\",\"kind\":\"object\",\"type\":\"Topic\",\"relationName\":\"PostToTopic\"},{\"name\":\"reactions\",\"kind\":\"object\",\"type\":\"PostReaction\",\"relationName\":\"PostToPostReaction\"}],\"dbName\":null},\"PostReaction\":{\"fields\":[{\"name\":\"postId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"memberId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"reaction\",\"kind\":\"enum\",\"type\":\"PostReactionType\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"post\",\"kind\":\"object\",\"type\":\"Post\",\"relationName\":\"PostToPostReaction\"}],\"dbName\":null},\"TopicClosure\":{\"fields\":[{\"name\":\"ancestorTopicId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"descendantTopicId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"depth\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"ancestorTopic\",\"kind\":\"object\",\"type\":\"Topic\",\"relationName\":\"TopicClosureAncestor\"},{\"name\":\"descendantTopic\",\"kind\":\"object\",\"type\":\"Topic\",\"relationName\":\"TopicClosureDescendant\"}],\"dbName\":null},\"TopicWatch\":{\"fields\":[{\"name\":\"topicId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"memberId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"topic\",\"kind\":\"object\",\"type\":\"Topic\",\"relationName\":\"TopicToTopicWatch\"}],\"dbName\":null},\"ChallengeForumWatch\":{\"fields\":[{\"name\":\"challengeId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"memberId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"watching\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null},\"TopicReadState\":{\"fields\":[{\"name\":\"topicId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"memberId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"lastReadAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"topic\",\"kind\":\"object\",\"type\":\"Topic\",\"relationName\":\"TopicToTopicReadState\"}],\"dbName\":null},\"PublicForumCategory\":{\"fields\":[{\"name\":\"topicId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"displayAs\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"sortOrder\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"readRoles\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createRoles\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"replyRoles\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"legacyId\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"legacySlug\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"source\",\"kind\":\"scalar\",\"type\":\"Json\"}],\"dbName\":null},\"PublicForumRoleMember\":{\"fields\":[{\"name\":\"roleName\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"memberId\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"PublicForumImportRecord\":{\"fields\":[{\"name\":\"entityType\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"sourceId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"targetId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"sourceHash\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"targetHash\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null}},\"enums\":{},\"types\":{}}") +config.runtimeDataModel = JSON.parse("{\"models\":{\"Topic\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"parentTopicId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"roleName\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"title\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"isAnnouncement\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"locked\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"lockedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"lockedByMemberId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"authorMemberId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"authorHandle\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"deletedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"deletedByMemberId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"parentTopic\",\"kind\":\"object\",\"type\":\"Topic\",\"relationName\":\"TopicChildren\"},{\"name\":\"childTopics\",\"kind\":\"object\",\"type\":\"Topic\",\"relationName\":\"TopicChildren\"},{\"name\":\"posts\",\"kind\":\"object\",\"type\":\"Post\",\"relationName\":\"PostToTopic\"},{\"name\":\"ancestorClosures\",\"kind\":\"object\",\"type\":\"TopicClosure\",\"relationName\":\"TopicClosureAncestor\"},{\"name\":\"descendantClosures\",\"kind\":\"object\",\"type\":\"TopicClosure\",\"relationName\":\"TopicClosureDescendant\"},{\"name\":\"watches\",\"kind\":\"object\",\"type\":\"TopicWatch\",\"relationName\":\"TopicToTopicWatch\"},{\"name\":\"readStates\",\"kind\":\"object\",\"type\":\"TopicReadState\",\"relationName\":\"TopicToTopicReadState\"}],\"dbName\":null},\"MemberBan\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"memberId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdByMemberId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"removedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"removedByMemberId\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"IpBan\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"ipAddress\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdByMemberId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"removedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"removedByMemberId\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"Post\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"topicId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"parentType\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"parentId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"authorMemberId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"authorHandle\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"content\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"deletedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"deletedByMemberId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"topic\",\"kind\":\"object\",\"type\":\"Topic\",\"relationName\":\"PostToTopic\"},{\"name\":\"reactions\",\"kind\":\"object\",\"type\":\"PostReaction\",\"relationName\":\"PostToPostReaction\"}],\"dbName\":null},\"PostReaction\":{\"fields\":[{\"name\":\"postId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"memberId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"reaction\",\"kind\":\"enum\",\"type\":\"PostReactionType\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"post\",\"kind\":\"object\",\"type\":\"Post\",\"relationName\":\"PostToPostReaction\"}],\"dbName\":null},\"TopicClosure\":{\"fields\":[{\"name\":\"ancestorTopicId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"descendantTopicId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"depth\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"ancestorTopic\",\"kind\":\"object\",\"type\":\"Topic\",\"relationName\":\"TopicClosureAncestor\"},{\"name\":\"descendantTopic\",\"kind\":\"object\",\"type\":\"Topic\",\"relationName\":\"TopicClosureDescendant\"}],\"dbName\":null},\"TopicWatch\":{\"fields\":[{\"name\":\"topicId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"memberId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"watching\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"topic\",\"kind\":\"object\",\"type\":\"Topic\",\"relationName\":\"TopicToTopicWatch\"}],\"dbName\":null},\"ChallengeForumWatch\":{\"fields\":[{\"name\":\"challengeId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"memberId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"watching\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null},\"TopicReadState\":{\"fields\":[{\"name\":\"topicId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"memberId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"lastReadAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"topic\",\"kind\":\"object\",\"type\":\"Topic\",\"relationName\":\"TopicToTopicReadState\"}],\"dbName\":null},\"PublicForumCategory\":{\"fields\":[{\"name\":\"topicId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"displayAs\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"sortOrder\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"readRoles\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createRoles\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"replyRoles\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"legacyId\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"legacySlug\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"source\",\"kind\":\"scalar\",\"type\":\"Json\"}],\"dbName\":null},\"PublicForumRoleMember\":{\"fields\":[{\"name\":\"roleName\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"memberId\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"PublicForumImportRecord\":{\"fields\":[{\"name\":\"entityType\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"sourceId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"targetId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"sourceHash\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"targetHash\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null}},\"enums\":{},\"types\":{}}") defineDmmfProperty(exports.Prisma, config.runtimeDataModel) config.parameterizationSchema = { strings: JSON.parse("[\"where\",\"parentTopic\",\"orderBy\",\"cursor\",\"childTopics\",\"topic\",\"post\",\"reactions\",\"_count\",\"posts\",\"ancestorTopic\",\"descendantTopic\",\"ancestorClosures\",\"descendantClosures\",\"watches\",\"readStates\",\"Topic.findUnique\",\"Topic.findUniqueOrThrow\",\"Topic.findFirst\",\"Topic.findFirstOrThrow\",\"Topic.findMany\",\"data\",\"Topic.createOne\",\"Topic.createMany\",\"Topic.createManyAndReturn\",\"Topic.updateOne\",\"Topic.updateMany\",\"Topic.updateManyAndReturn\",\"create\",\"update\",\"Topic.upsertOne\",\"Topic.deleteOne\",\"Topic.deleteMany\",\"having\",\"_min\",\"_max\",\"Topic.groupBy\",\"Topic.aggregate\",\"MemberBan.findUnique\",\"MemberBan.findUniqueOrThrow\",\"MemberBan.findFirst\",\"MemberBan.findFirstOrThrow\",\"MemberBan.findMany\",\"MemberBan.createOne\",\"MemberBan.createMany\",\"MemberBan.createManyAndReturn\",\"MemberBan.updateOne\",\"MemberBan.updateMany\",\"MemberBan.updateManyAndReturn\",\"MemberBan.upsertOne\",\"MemberBan.deleteOne\",\"MemberBan.deleteMany\",\"MemberBan.groupBy\",\"MemberBan.aggregate\",\"IpBan.findUnique\",\"IpBan.findUniqueOrThrow\",\"IpBan.findFirst\",\"IpBan.findFirstOrThrow\",\"IpBan.findMany\",\"IpBan.createOne\",\"IpBan.createMany\",\"IpBan.createManyAndReturn\",\"IpBan.updateOne\",\"IpBan.updateMany\",\"IpBan.updateManyAndReturn\",\"IpBan.upsertOne\",\"IpBan.deleteOne\",\"IpBan.deleteMany\",\"IpBan.groupBy\",\"IpBan.aggregate\",\"Post.findUnique\",\"Post.findUniqueOrThrow\",\"Post.findFirst\",\"Post.findFirstOrThrow\",\"Post.findMany\",\"Post.createOne\",\"Post.createMany\",\"Post.createManyAndReturn\",\"Post.updateOne\",\"Post.updateMany\",\"Post.updateManyAndReturn\",\"Post.upsertOne\",\"Post.deleteOne\",\"Post.deleteMany\",\"Post.groupBy\",\"Post.aggregate\",\"PostReaction.findUnique\",\"PostReaction.findUniqueOrThrow\",\"PostReaction.findFirst\",\"PostReaction.findFirstOrThrow\",\"PostReaction.findMany\",\"PostReaction.createOne\",\"PostReaction.createMany\",\"PostReaction.createManyAndReturn\",\"PostReaction.updateOne\",\"PostReaction.updateMany\",\"PostReaction.updateManyAndReturn\",\"PostReaction.upsertOne\",\"PostReaction.deleteOne\",\"PostReaction.deleteMany\",\"PostReaction.groupBy\",\"PostReaction.aggregate\",\"TopicClosure.findUnique\",\"TopicClosure.findUniqueOrThrow\",\"TopicClosure.findFirst\",\"TopicClosure.findFirstOrThrow\",\"TopicClosure.findMany\",\"TopicClosure.createOne\",\"TopicClosure.createMany\",\"TopicClosure.createManyAndReturn\",\"TopicClosure.updateOne\",\"TopicClosure.updateMany\",\"TopicClosure.updateManyAndReturn\",\"TopicClosure.upsertOne\",\"TopicClosure.deleteOne\",\"TopicClosure.deleteMany\",\"_avg\",\"_sum\",\"TopicClosure.groupBy\",\"TopicClosure.aggregate\",\"TopicWatch.findUnique\",\"TopicWatch.findUniqueOrThrow\",\"TopicWatch.findFirst\",\"TopicWatch.findFirstOrThrow\",\"TopicWatch.findMany\",\"TopicWatch.createOne\",\"TopicWatch.createMany\",\"TopicWatch.createManyAndReturn\",\"TopicWatch.updateOne\",\"TopicWatch.updateMany\",\"TopicWatch.updateManyAndReturn\",\"TopicWatch.upsertOne\",\"TopicWatch.deleteOne\",\"TopicWatch.deleteMany\",\"TopicWatch.groupBy\",\"TopicWatch.aggregate\",\"ChallengeForumWatch.findUnique\",\"ChallengeForumWatch.findUniqueOrThrow\",\"ChallengeForumWatch.findFirst\",\"ChallengeForumWatch.findFirstOrThrow\",\"ChallengeForumWatch.findMany\",\"ChallengeForumWatch.createOne\",\"ChallengeForumWatch.createMany\",\"ChallengeForumWatch.createManyAndReturn\",\"ChallengeForumWatch.updateOne\",\"ChallengeForumWatch.updateMany\",\"ChallengeForumWatch.updateManyAndReturn\",\"ChallengeForumWatch.upsertOne\",\"ChallengeForumWatch.deleteOne\",\"ChallengeForumWatch.deleteMany\",\"ChallengeForumWatch.groupBy\",\"ChallengeForumWatch.aggregate\",\"TopicReadState.findUnique\",\"TopicReadState.findUniqueOrThrow\",\"TopicReadState.findFirst\",\"TopicReadState.findFirstOrThrow\",\"TopicReadState.findMany\",\"TopicReadState.createOne\",\"TopicReadState.createMany\",\"TopicReadState.createManyAndReturn\",\"TopicReadState.updateOne\",\"TopicReadState.updateMany\",\"TopicReadState.updateManyAndReturn\",\"TopicReadState.upsertOne\",\"TopicReadState.deleteOne\",\"TopicReadState.deleteMany\",\"TopicReadState.groupBy\",\"TopicReadState.aggregate\",\"PublicForumCategory.findUnique\",\"PublicForumCategory.findUniqueOrThrow\",\"PublicForumCategory.findFirst\",\"PublicForumCategory.findFirstOrThrow\",\"PublicForumCategory.findMany\",\"PublicForumCategory.createOne\",\"PublicForumCategory.createMany\",\"PublicForumCategory.createManyAndReturn\",\"PublicForumCategory.updateOne\",\"PublicForumCategory.updateMany\",\"PublicForumCategory.updateManyAndReturn\",\"PublicForumCategory.upsertOne\",\"PublicForumCategory.deleteOne\",\"PublicForumCategory.deleteMany\",\"PublicForumCategory.groupBy\",\"PublicForumCategory.aggregate\",\"PublicForumRoleMember.findUnique\",\"PublicForumRoleMember.findUniqueOrThrow\",\"PublicForumRoleMember.findFirst\",\"PublicForumRoleMember.findFirstOrThrow\",\"PublicForumRoleMember.findMany\",\"PublicForumRoleMember.createOne\",\"PublicForumRoleMember.createMany\",\"PublicForumRoleMember.createManyAndReturn\",\"PublicForumRoleMember.updateOne\",\"PublicForumRoleMember.updateMany\",\"PublicForumRoleMember.updateManyAndReturn\",\"PublicForumRoleMember.upsertOne\",\"PublicForumRoleMember.deleteOne\",\"PublicForumRoleMember.deleteMany\",\"PublicForumRoleMember.groupBy\",\"PublicForumRoleMember.aggregate\",\"PublicForumImportRecord.findUnique\",\"PublicForumImportRecord.findUniqueOrThrow\",\"PublicForumImportRecord.findFirst\",\"PublicForumImportRecord.findFirstOrThrow\",\"PublicForumImportRecord.findMany\",\"PublicForumImportRecord.createOne\",\"PublicForumImportRecord.createMany\",\"PublicForumImportRecord.createManyAndReturn\",\"PublicForumImportRecord.updateOne\",\"PublicForumImportRecord.updateMany\",\"PublicForumImportRecord.updateManyAndReturn\",\"PublicForumImportRecord.upsertOne\",\"PublicForumImportRecord.deleteOne\",\"PublicForumImportRecord.deleteMany\",\"PublicForumImportRecord.groupBy\",\"PublicForumImportRecord.aggregate\",\"AND\",\"OR\",\"NOT\",\"entityType\",\"sourceId\",\"targetId\",\"sourceHash\",\"targetHash\",\"createdAt\",\"equals\",\"in\",\"notIn\",\"lt\",\"lte\",\"gt\",\"gte\",\"not\",\"contains\",\"startsWith\",\"endsWith\",\"entityType_targetId\",\"entityType_sourceId\",\"roleName\",\"memberId\",\"roleName_memberId\",\"topicId\",\"description\",\"displayAs\",\"sortOrder\",\"readRoles\",\"createRoles\",\"replyRoles\",\"legacyId\",\"legacySlug\",\"source\",\"string_contains\",\"string_starts_with\",\"string_ends_with\",\"array_starts_with\",\"array_ends_with\",\"array_contains\",\"has\",\"hasEvery\",\"hasSome\",\"lastReadAt\",\"updatedAt\",\"challengeId\",\"watching\",\"challengeId_memberId\",\"ancestorTopicId\",\"descendantTopicId\",\"depth\",\"postId\",\"PostReactionType\",\"reaction\",\"id\",\"parentType\",\"parentId\",\"authorMemberId\",\"authorHandle\",\"content\",\"deletedAt\",\"deletedByMemberId\",\"ipAddress\",\"createdByMemberId\",\"removedAt\",\"removedByMemberId\",\"parentTopicId\",\"title\",\"isAnnouncement\",\"locked\",\"lockedAt\",\"lockedByMemberId\",\"topicId_memberId\",\"ancestorTopicId_descendantTopicId\",\"postId_memberId\",\"every\",\"some\",\"none\",\"is\",\"isNot\",\"connectOrCreate\",\"upsert\",\"createMany\",\"set\",\"disconnect\",\"delete\",\"connect\",\"updateMany\",\"deleteMany\",\"push\",\"increment\",\"decrement\",\"multiply\",\"divide\"]"), - graph: "3QRnwAEZAQAAgwMAIAQAAIQDACAJAACFAwAgDAAAhgMAIA0AAIYDACAOAACHAwAgDwAAiAMAINgBAACCAwAw2QEAAAMAENoBAACCAwAw4AFAAMgCACHuAQEA8AIAIYUCQADIAgAhhgIBAPACACGPAgEAAAABkgIBAMcCACGTAgEAxwIAIZUCQADxAgAhlgIBAPACACGbAgEA8AIAIZwCAQDHAgAhnQIgAN4CACGeAiAA3gIAIZ8CQADxAgAhoAIBAPACACEBAAAAAQAgGQEAAIMDACAEAACEAwAgCQAAhQMAIAwAAIYDACANAACGAwAgDgAAhwMAIA8AAIgDACDYAQAAggMAMNkBAAADABDaAQAAggMAMOABQADIAgAh7gEBAPACACGFAkAAyAIAIYYCAQDwAgAhjwIBAMcCACGSAgEAxwIAIZMCAQDHAgAhlQJAAPECACGWAgEA8AIAIZsCAQDwAgAhnAIBAMcCACGdAiAA3gIAIZ4CIADeAgAhnwJAAPECACGgAgEA8AIAIQEAAAADACAOAQAArAQAIAQAAK8EACAJAACwBAAgDAAAsQQAIA0AALEEACAOAACyBAAgDwAAswQAIO4BAAC6AwAghgIAALoDACCVAgAAugMAIJYCAAC6AwAgmwIAALoDACCfAgAAugMAIKACAAC6AwAgAwAAAAMAIAIAAAUAMAMAAAEAIBAFAAD3AgAgBwAAgQMAINgBAACAAwAw2QEAAAcAENoBAACAAwAw4AFAAMgCACHxAQEAxwIAIYUCQADIAgAhjwIBAMcCACGQAgEAxwIAIZECAQDHAgAhkgIBAMcCACGTAgEAxwIAIZQCAQDwAgAhlQJAAPECACGWAgEA8AIAIQUFAACsBAAgBwAArgQAIJQCAAC6AwAglQIAALoDACCWAgAAugMAIBAFAAD3AgAgBwAAgQMAINgBAACAAwAw2QEAAAcAENoBAACAAwAw4AFAAMgCACHxAQEAxwIAIYUCQADIAgAhjwIBAAAAAZACAQDHAgAhkQIBAMcCACGSAgEAxwIAIZMCAQDHAgAhlAIBAPACACGVAkAA8QIAIZYCAQDwAgAhAwAAAAcAIAIAAAgAMAMAAAkAIAkGAAD_AgAg2AEAAP0CADDZAQAACwAQ2gEAAP0CADDgAUAAyAIAIe8BAQDHAgAhhQJAAMgCACGMAgEAxwIAIY4CAAD-Ao4CIgEGAACtBAAgCgYAAP8CACDYAQAA_QIAMNkBAAALABDaAQAA_QIAMOABQADIAgAh7wEBAMcCACGFAkAAyAIAIYwCAQDHAgAhjgIAAP4CjgIiowIAAPwCACADAAAACwAgAgAADAAwAwAADQAgAQAAAAsAIAgKAAD3AgAgCwAA9wIAINgBAAD7AgAw2QEAABAAENoBAAD7AgAwiQIBAMcCACGKAgEAxwIAIYsCAgDWAgAhAgoAAKwEACALAACsBAAgCQoAAPcCACALAAD3AgAg2AEAAPsCADDZAQAAEAAQ2gEAAPsCADCJAgEAxwIAIYoCAQDHAgAhiwICANYCACGiAgAA-gIAIAMAAAAQACACAAARADADAAASACADAAAAEAAgAgAAEQAwAwAAEgAgBwUAAPcCACDYAQAA-QIAMNkBAAAVABDaAQAA-QIAMOABQADIAgAh7wEBAMcCACHxAQEAxwIAIQEFAACsBAAgCAUAAPcCACDYAQAA-QIAMNkBAAAVABDaAQAA-QIAMOABQADIAgAh7wEBAMcCACHxAQEAxwIAIaECAAD4AgAgAwAAABUAIAIAABYAMAMAABcAIAgFAAD3AgAg2AEAAPYCADDZAQAAGQAQ2gEAAPYCADDvAQEAxwIAIfEBAQDHAgAhhAJAAMgCACGFAkAAyAIAIQEFAACsBAAgCQUAAPcCACDYAQAA9gIAMNkBAAAZABDaAQAA9gIAMO8BAQDHAgAh8QEBAMcCACGEAkAAyAIAIYUCQADIAgAhoQIAAPUCACADAAAAGQAgAgAAGgAwAwAAGwAgAQAAAAMAIAEAAAAHACABAAAAEAAgAQAAABAAIAEAAAAVACABAAAAGQAgAQAAAAEAIAMAAAADACACAAAFADADAAABACADAAAAAwAgAgAABQAwAwAAAQAgAwAAAAMAIAIAAAUAMAMAAAEAIBYBAACrBAAgBAAApQQAIAkAAKYEACAMAACnBAAgDQAAqAQAIA4AAKkEACAPAACqBAAg4AFAAAAAAe4BAQAAAAGFAkAAAAABhgIBAAAAAY8CAQAAAAGSAgEAAAABkwIBAAAAAZUCQAAAAAGWAgEAAAABmwIBAAAAAZwCAQAAAAGdAiAAAAABngIgAAAAAZ8CQAAAAAGgAgEAAAABARUAACcAIA_gAUAAAAAB7gEBAAAAAYUCQAAAAAGGAgEAAAABjwIBAAAAAZICAQAAAAGTAgEAAAABlQJAAAAAAZYCAQAAAAGbAgEAAAABnAIBAAAAAZ0CIAAAAAGeAiAAAAABnwJAAAAAAaACAQAAAAEBFQAAKQAwARUAACkAMAEAAAADACAWAQAA2QMAIAQAANoDACAJAADbAwAgDAAA3AMAIA0AAN0DACAOAADeAwAgDwAA3wMAIOABQACNAwAh7gEBAL4DACGFAkAAjQMAIYYCAQC-AwAhjwIBAIwDACGSAgEAjAMAIZMCAQCMAwAhlQJAAL8DACGWAgEAvgMAIZsCAQC-AwAhnAIBAIwDACGdAiAApQMAIZ4CIAClAwAhnwJAAL8DACGgAgEAvgMAIQIAAAABACAVAAAtACAP4AFAAI0DACHuAQEAvgMAIYUCQACNAwAhhgIBAL4DACGPAgEAjAMAIZICAQCMAwAhkwIBAIwDACGVAkAAvwMAIZYCAQC-AwAhmwIBAL4DACGcAgEAjAMAIZ0CIAClAwAhngIgAKUDACGfAkAAvwMAIaACAQC-AwAhAgAAAAMAIBUAAC8AIAIAAAADACAVAAAvACABAAAAAwAgAwAAAAEAIBwAACcAIB0AAC0AIAEAAAABACABAAAAAwAgCggAANYDACAiAADYAwAgIwAA1wMAIO4BAAC6AwAghgIAALoDACCVAgAAugMAIJYCAAC6AwAgmwIAALoDACCfAgAAugMAIKACAAC6AwAgEtgBAAD0AgAw2QEAADcAENoBAAD0AgAw4AFAAMACACHuAQEA5wIAIYUCQADAAgAhhgIBAOcCACGPAgEAvwIAIZICAQC_AgAhkwIBAL8CACGVAkAA6AIAIZYCAQDnAgAhmwIBAOcCACGcAgEAvwIAIZ0CIADaAgAhngIgANoCACGfAkAA6AIAIaACAQDnAgAhAwAAAAMAIAIAADYAMCEAADcAIAMAAAADACACAAAFADADAAABACAJ2AEAAPMCADDZAQAAPQAQ2gEAAPMCADDgAUAAyAIAIe8BAQDHAgAhjwIBAAAAAZgCAQDwAgAhmQJAAPECACGaAgEA8AIAIQEAAAA6ACABAAAAOgAgCdgBAADzAgAw2QEAAD0AENoBAADzAgAw4AFAAMgCACHvAQEAxwIAIY8CAQDHAgAhmAIBAPACACGZAkAA8QIAIZoCAQDwAgAhA5gCAAC6AwAgmQIAALoDACCaAgAAugMAIAMAAAA9ACACAAA-ADADAAA6ACADAAAAPQAgAgAAPgAwAwAAOgAgAwAAAD0AIAIAAD4AMAMAADoAIAbgAUAAAAAB7wEBAAAAAY8CAQAAAAGYAgEAAAABmQJAAAAAAZoCAQAAAAEBFQAAQgAgBuABQAAAAAHvAQEAAAABjwIBAAAAAZgCAQAAAAGZAkAAAAABmgIBAAAAAQEVAABEADABFQAARAAwBuABQACNAwAh7wEBAIwDACGPAgEAjAMAIZgCAQC-AwAhmQJAAL8DACGaAgEAvgMAIQIAAAA6ACAVAABHACAG4AFAAI0DACHvAQEAjAMAIY8CAQCMAwAhmAIBAL4DACGZAkAAvwMAIZoCAQC-AwAhAgAAAD0AIBUAAEkAIAIAAAA9ACAVAABJACADAAAAOgAgHAAAQgAgHQAARwAgAQAAADoAIAEAAAA9ACAGCAAA0wMAICIAANUDACAjAADUAwAgmAIAALoDACCZAgAAugMAIJoCAAC6AwAgCdgBAADyAgAw2QEAAFAAENoBAADyAgAw4AFAAMACACHvAQEAvwIAIY8CAQC_AgAhmAIBAOcCACGZAkAA6AIAIZoCAQDnAgAhAwAAAD0AIAIAAE8AMCEAAFAAIAMAAAA9ACACAAA-ADADAAA6ACAJ2AEAAO8CADDZAQAAVgAQ2gEAAO8CADDgAUAAyAIAIY8CAQAAAAGXAgEAxwIAIZgCAQDwAgAhmQJAAPECACGaAgEA8AIAIQEAAABTACABAAAAUwAgCdgBAADvAgAw2QEAAFYAENoBAADvAgAw4AFAAMgCACGPAgEAxwIAIZcCAQDHAgAhmAIBAPACACGZAkAA8QIAIZoCAQDwAgAhA5gCAAC6AwAgmQIAALoDACCaAgAAugMAIAMAAABWACACAABXADADAABTACADAAAAVgAgAgAAVwAwAwAAUwAgAwAAAFYAIAIAAFcAMAMAAFMAIAbgAUAAAAABjwIBAAAAAZcCAQAAAAGYAgEAAAABmQJAAAAAAZoCAQAAAAEBFQAAWwAgBuABQAAAAAGPAgEAAAABlwIBAAAAAZgCAQAAAAGZAkAAAAABmgIBAAAAAQEVAABdADABFQAAXQAwBuABQACNAwAhjwIBAIwDACGXAgEAjAMAIZgCAQC-AwAhmQJAAL8DACGaAgEAvgMAIQIAAABTACAVAABgACAG4AFAAI0DACGPAgEAjAMAIZcCAQCMAwAhmAIBAL4DACGZAkAAvwMAIZoCAQC-AwAhAgAAAFYAIBUAAGIAIAIAAABWACAVAABiACADAAAAUwAgHAAAWwAgHQAAYAAgAQAAAFMAIAEAAABWACAGCAAA0AMAICIAANIDACAjAADRAwAgmAIAALoDACCZAgAAugMAIJoCAAC6AwAgCdgBAADuAgAw2QEAAGkAENoBAADuAgAw4AFAAMACACGPAgEAvwIAIZcCAQC_AgAhmAIBAOcCACGZAkAA6AIAIZoCAQDnAgAhAwAAAFYAIAIAAGgAMCEAAGkAIAMAAABWACACAABXADADAABTACABAAAACQAgAQAAAAkAIAMAAAAHACACAAAIADADAAAJACADAAAABwAgAgAACAAwAwAACQAgAwAAAAcAIAIAAAgAMAMAAAkAIA0FAADOAwAgBwAAzwMAIOABQAAAAAHxAQEAAAABhQJAAAAAAY8CAQAAAAGQAgEAAAABkQIBAAAAAZICAQAAAAGTAgEAAAABlAIBAAAAAZUCQAAAAAGWAgEAAAABARUAAHEAIAvgAUAAAAAB8QEBAAAAAYUCQAAAAAGPAgEAAAABkAIBAAAAAZECAQAAAAGSAgEAAAABkwIBAAAAAZQCAQAAAAGVAkAAAAABlgIBAAAAAQEVAABzADABFQAAcwAwDQUAAMADACAHAADBAwAg4AFAAI0DACHxAQEAjAMAIYUCQACNAwAhjwIBAIwDACGQAgEAjAMAIZECAQCMAwAhkgIBAIwDACGTAgEAjAMAIZQCAQC-AwAhlQJAAL8DACGWAgEAvgMAIQIAAAAJACAVAAB2ACAL4AFAAI0DACHxAQEAjAMAIYUCQACNAwAhjwIBAIwDACGQAgEAjAMAIZECAQCMAwAhkgIBAIwDACGTAgEAjAMAIZQCAQC-AwAhlQJAAL8DACGWAgEAvgMAIQIAAAAHACAVAAB4ACACAAAABwAgFQAAeAAgAwAAAAkAIBwAAHEAIB0AAHYAIAEAAAAJACABAAAABwAgBggAALsDACAiAAC9AwAgIwAAvAMAIJQCAAC6AwAglQIAALoDACCWAgAAugMAIA7YAQAA5gIAMNkBAAB_ABDaAQAA5gIAMOABQADAAgAh8QEBAL8CACGFAkAAwAIAIY8CAQC_AgAhkAIBAL8CACGRAgEAvwIAIZICAQC_AgAhkwIBAL8CACGUAgEA5wIAIZUCQADoAgAhlgIBAOcCACEDAAAABwAgAgAAfgAwIQAAfwAgAwAAAAcAIAIAAAgAMAMAAAkAIAEAAAANACABAAAADQAgAwAAAAsAIAIAAAwAMAMAAA0AIAMAAAALACACAAAMADADAAANACADAAAACwAgAgAADAAwAwAADQAgBgYAALkDACDgAUAAAAAB7wEBAAAAAYUCQAAAAAGMAgEAAAABjgIAAACOAgIBFQAAhwEAIAXgAUAAAAAB7wEBAAAAAYUCQAAAAAGMAgEAAAABjgIAAACOAgIBFQAAiQEAMAEVAACJAQAwBgYAALgDACDgAUAAjQMAIe8BAQCMAwAhhQJAAI0DACGMAgEAjAMAIY4CAAC3A44CIgIAAAANACAVAACMAQAgBeABQACNAwAh7wEBAIwDACGFAkAAjQMAIYwCAQCMAwAhjgIAALcDjgIiAgAAAAsAIBUAAI4BACACAAAACwAgFQAAjgEAIAMAAAANACAcAACHAQAgHQAAjAEAIAEAAAANACABAAAACwAgAwgAALQDACAiAAC2AwAgIwAAtQMAIAjYAQAA4gIAMNkBAACVAQAQ2gEAAOICADDgAUAAwAIAIe8BAQC_AgAhhQJAAMACACGMAgEAvwIAIY4CAADjAo4CIgMAAAALACACAACUAQAwIQAAlQEAIAMAAAALACACAAAMADADAAANACABAAAAEgAgAQAAABIAIAMAAAAQACACAAARADADAAASACADAAAAEAAgAgAAEQAwAwAAEgAgAwAAABAAIAIAABEAMAMAABIAIAUKAACyAwAgCwAAswMAIIkCAQAAAAGKAgEAAAABiwICAAAAAQEVAACdAQAgA4kCAQAAAAGKAgEAAAABiwICAAAAAQEVAACfAQAwARUAAJ8BADAFCgAAsAMAIAsAALEDACCJAgEAjAMAIYoCAQCMAwAhiwICAJYDACECAAAAEgAgFQAAogEAIAOJAgEAjAMAIYoCAQCMAwAhiwICAJYDACECAAAAEAAgFQAApAEAIAIAAAAQACAVAACkAQAgAwAAABIAIBwAAJ0BACAdAACiAQAgAQAAABIAIAEAAAAQACAFCAAAqwMAICIAAK4DACAjAACtAwAgdAAArAMAIHUAAK8DACAG2AEAAOECADDZAQAAqwEAENoBAADhAgAwiQIBAL8CACGKAgEAvwIAIYsCAgDPAgAhAwAAABAAIAIAAKoBADAhAACrAQAgAwAAABAAIAIAABEAMAMAABIAIAEAAAAXACABAAAAFwAgAwAAABUAIAIAABYAMAMAABcAIAMAAAAVACACAAAWADADAAAXACADAAAAFQAgAgAAFgAwAwAAFwAgBAUAAKoDACDgAUAAAAAB7wEBAAAAAfEBAQAAAAEBFQAAswEAIAPgAUAAAAAB7wEBAAAAAfEBAQAAAAEBFQAAtQEAMAEVAAC1AQAwBAUAAKkDACDgAUAAjQMAIe8BAQCMAwAh8QEBAIwDACECAAAAFwAgFQAAuAEAIAPgAUAAjQMAIe8BAQCMAwAh8QEBAIwDACECAAAAFQAgFQAAugEAIAIAAAAVACAVAAC6AQAgAwAAABcAIBwAALMBACAdAAC4AQAgAQAAABcAIAEAAAAVACADCAAApgMAICIAAKgDACAjAACnAwAgBtgBAADgAgAw2QEAAMEBABDaAQAA4AIAMOABQADAAgAh7wEBAL8CACHxAQEAvwIAIQMAAAAVACACAADAAQAwIQAAwQEAIAMAAAAVACACAAAWADADAAAXACAJ2AEAAN0CADDZAQAAxwEAENoBAADdAgAw4AFAAMgCACHvAQEAxwIAIYUCQADIAgAhhgIBAMcCACGHAiAA3gIAIYgCAADfAgAgAQAAAMQBACABAAAAxAEAIAjYAQAA3QIAMNkBAADHAQAQ2gEAAN0CADDgAUAAyAIAIe8BAQDHAgAhhQJAAMgCACGGAgEAxwIAIYcCIADeAgAhAAMAAADHAQAgAgAAyAEAMAMAAMQBACADAAAAxwEAIAIAAMgBADADAADEAQAgAwAAAMcBACACAADIAQAwAwAAxAEAIAXgAUAAAAAB7wEBAAAAAYUCQAAAAAGGAgEAAAABhwIgAAAAAQEVAADMAQAgBeABQAAAAAHvAQEAAAABhQJAAAAAAYYCAQAAAAGHAiAAAAABARUAAM4BADABFQAAzgEAMAXgAUAAjQMAIe8BAQCMAwAhhQJAAI0DACGGAgEAjAMAIYcCIAClAwAhAgAAAMQBACAVAADRAQAgBeABQACNAwAh7wEBAIwDACGFAkAAjQMAIYYCAQCMAwAhhwIgAKUDACECAAAAxwEAIBUAANMBACACAAAAxwEAIBUAANMBACADAAAAxAEAIBwAAMwBACAdAADRAQAgAQAAAMQBACABAAAAxwEAIAMIAACiAwAgIgAApAMAICMAAKMDACAI2AEAANkCADDZAQAA2gEAENoBAADZAgAw4AFAAMACACHvAQEAvwIAIYUCQADAAgAhhgIBAL8CACGHAiAA2gIAIQMAAADHAQAgAgAA2QEAMCEAANoBACADAAAAxwEAIAIAAMgBADADAADEAQAgAQAAABsAIAEAAAAbACADAAAAGQAgAgAAGgAwAwAAGwAgAwAAABkAIAIAABoAMAMAABsAIAMAAAAZACACAAAaADADAAAbACAFBQAAoQMAIO8BAQAAAAHxAQEAAAABhAJAAAAAAYUCQAAAAAEBFQAA4gEAIATvAQEAAAAB8QEBAAAAAYQCQAAAAAGFAkAAAAABARUAAOQBADABFQAA5AEAMAUFAACgAwAg7wEBAIwDACHxAQEAjAMAIYQCQACNAwAhhQJAAI0DACECAAAAGwAgFQAA5wEAIATvAQEAjAMAIfEBAQCMAwAhhAJAAI0DACGFAkAAjQMAIQIAAAAZACAVAADpAQAgAgAAABkAIBUAAOkBACADAAAAGwAgHAAA4gEAIB0AAOcBACABAAAAGwAgAQAAABkAIAMIAACdAwAgIgAAnwMAICMAAJ4DACAH2AEAANgCADDZAQAA8AEAENoBAADYAgAw7wEBAL8CACHxAQEAvwIAIYQCQADAAgAhhQJAAMACACEDAAAAGQAgAgAA7wEAMCEAAPABACADAAAAGQAgAgAAGgAwAwAAGwAgDdgBAADVAgAw2QEAAPYBABDaAQAA1QIAMPEBAQAAAAHyAQEAxwIAIfMBAQDHAgAh9AECANYCACH1AQAA0AIAIPYBAADQAgAg9wEAANACACD4AQIAAAAB-QEBAMcCACH6AQAA1wIAIAEAAADzAQAgAQAAAPMBACAN2AEAANUCADDZAQAA9gEAENoBAADVAgAw8QEBAMcCACHyAQEAxwIAIfMBAQDHAgAh9AECANYCACH1AQAA0AIAIPYBAADQAgAg9wEAANACACD4AQIA1gIAIfkBAQDHAgAh-gEAANcCACAAAwAAAPYBACACAAD3AQAwAwAA8wEAIAMAAAD2AQAgAgAA9wEAMAMAAPMBACADAAAA9gEAIAIAAPcBADADAADzAQAgCvEBAQAAAAHyAQEAAAAB8wEBAAAAAfQBAgAAAAH1AQAAmgMAIPYBAACbAwAg9wEAAJwDACD4AQIAAAAB-QEBAAAAAfoBgAAAAAEBFQAA-wEAIArxAQEAAAAB8gEBAAAAAfMBAQAAAAH0AQIAAAAB9QEAAJoDACD2AQAAmwMAIPcBAACcAwAg-AECAAAAAfkBAQAAAAH6AYAAAAABARUAAP0BADABFQAA_QEAMArxAQEAjAMAIfIBAQCMAwAh8wEBAIwDACH0AQIAlgMAIfUBAACXAwAg9gEAAJgDACD3AQAAmQMAIPgBAgCWAwAh-QEBAIwDACH6AYAAAAABAgAAAPMBACAVAACAAgAgCvEBAQCMAwAh8gEBAIwDACHzAQEAjAMAIfQBAgCWAwAh9QEAAJcDACD2AQAAmAMAIPcBAACZAwAg-AECAJYDACH5AQEAjAMAIfoBgAAAAAECAAAA9gEAIBUAAIICACACAAAA9gEAIBUAAIICACADAAAA8wEAIBwAAPsBACAdAACAAgAgAQAAAPMBACABAAAA9gEAIAUIAACRAwAgIgAAlAMAICMAAJMDACB0AACSAwAgdQAAlQMAIA3YAQAAzgIAMNkBAACJAgAQ2gEAAM4CADDxAQEAvwIAIfIBAQC_AgAh8wEBAL8CACH0AQIAzwIAIfUBAADQAgAg9gEAANACACD3AQAA0AIAIPgBAgDPAgAh-QEBAL8CACH6AQAA0QIAIAMAAAD2AQAgAgAAiAIAMCEAAIkCACADAAAA9gEAIAIAAPcBADADAADzAQAgBtgBAADMAgAw2QEAAI8CABDaAQAAzAIAMO4BAQDHAgAh7wEBAMcCACHwAQAAzQIAIAEAAACMAgAgAQAAAIwCACAF2AEAAMwCADDZAQAAjwIAENoBAADMAgAw7gEBAMcCACHvAQEAxwIAIQADAAAAjwIAIAIAAJACADADAACMAgAgAwAAAI8CACACAACQAgAwAwAAjAIAIAMAAACPAgAgAgAAkAIAMAMAAIwCACAC7gEBAAAAAe8BAQAAAAEBFQAAlAIAIALuAQEAAAAB7wEBAAAAAQEVAACWAgAwARUAAJYCADAC7gEBAIwDACHvAQEAjAMAIQIAAACMAgAgFQAAmQIAIALuAQEAjAMAIe8BAQCMAwAhAgAAAI8CACAVAACbAgAgAgAAAI8CACAVAACbAgAgAwAAAIwCACAcAACUAgAgHQAAmQIAIAEAAACMAgAgAQAAAI8CACADCAAAjgMAICIAAJADACAjAACPAwAgBdgBAADLAgAw2QEAAKICABDaAQAAywIAMO4BAQC_AgAh7wEBAL8CACEDAAAAjwIAIAIAAKECADAhAACiAgAgAwAAAI8CACACAACQAgAwAwAAjAIAIAvYAQAAxgIAMNkBAACoAgAQ2gEAAMYCADDbAQEAxwIAIdwBAQDHAgAh3QEBAMcCACHeAQEAxwIAId8BAQDHAgAh4AFAAMgCACHsAQAAyQIAIO0BAADKAgAgAQAAAKUCACABAAAApQIAIAnYAQAAxgIAMNkBAACoAgAQ2gEAAMYCADDbAQEAxwIAIdwBAQDHAgAh3QEBAMcCACHeAQEAxwIAId8BAQDHAgAh4AFAAMgCACEAAwAAAKgCACACAACpAgAwAwAApQIAIAMAAACoAgAgAgAAqQIAMAMAAKUCACADAAAAqAIAIAIAAKkCADADAAClAgAgBtsBAQAAAAHcAQEAAAAB3QEBAAAAAd4BAQAAAAHfAQEAAAAB4AFAAAAAAQEVAACtAgAgBtsBAQAAAAHcAQEAAAAB3QEBAAAAAd4BAQAAAAHfAQEAAAAB4AFAAAAAAQEVAACvAgAwARUAAK8CADAG2wEBAIwDACHcAQEAjAMAId0BAQCMAwAh3gEBAIwDACHfAQEAjAMAIeABQACNAwAhAgAAAKUCACAVAACyAgAgBtsBAQCMAwAh3AEBAIwDACHdAQEAjAMAId4BAQCMAwAh3wEBAIwDACHgAUAAjQMAIQIAAACoAgAgFQAAtAIAIAIAAACoAgAgFQAAtAIAIAMAAAClAgAgHAAArQIAIB0AALICACABAAAApQIAIAEAAACoAgAgAwgAAIkDACAiAACLAwAgIwAAigMAIAnYAQAAvgIAMNkBAAC7AgAQ2gEAAL4CADDbAQEAvwIAIdwBAQC_AgAh3QEBAL8CACHeAQEAvwIAId8BAQC_AgAh4AFAAMACACEDAAAAqAIAIAIAALoCADAhAAC7AgAgAwAAAKgCACACAACpAgAwAwAApQIAIAnYAQAAvgIAMNkBAAC7AgAQ2gEAAL4CADDbAQEAvwIAIdwBAQC_AgAh3QEBAL8CACHeAQEAvwIAId8BAQC_AgAh4AFAAMACACEOCAAAwgIAICIAAMUCACAjAADFAgAg4QEBAAAAAeIBAQAAAATjAQEAAAAE5AEBAAAAAeUBAQAAAAHmAQEAAAAB5wEBAAAAAegBAQDEAgAh6QEBAAAAAeoBAQAAAAHrAQEAAAABCwgAAMICACAiAADDAgAgIwAAwwIAIOEBQAAAAAHiAUAAAAAE4wFAAAAABOQBQAAAAAHlAUAAAAAB5gFAAAAAAecBQAAAAAHoAUAAwQIAIQsIAADCAgAgIgAAwwIAICMAAMMCACDhAUAAAAAB4gFAAAAABOMBQAAAAATkAUAAAAAB5QFAAAAAAeYBQAAAAAHnAUAAAAAB6AFAAMECACEI4QECAAAAAeIBAgAAAATjAQIAAAAE5AECAAAAAeUBAgAAAAHmAQIAAAAB5wECAAAAAegBAgDCAgAhCOEBQAAAAAHiAUAAAAAE4wFAAAAABOQBQAAAAAHlAUAAAAAB5gFAAAAAAecBQAAAAAHoAUAAwwIAIQ4IAADCAgAgIgAAxQIAICMAAMUCACDhAQEAAAAB4gEBAAAABOMBAQAAAATkAQEAAAAB5QEBAAAAAeYBAQAAAAHnAQEAAAAB6AEBAMQCACHpAQEAAAAB6gEBAAAAAesBAQAAAAEL4QEBAAAAAeIBAQAAAATjAQEAAAAE5AEBAAAAAeUBAQAAAAHmAQEAAAAB5wEBAAAAAegBAQDFAgAh6QEBAAAAAeoBAQAAAAHrAQEAAAABCdgBAADGAgAw2QEAAKgCABDaAQAAxgIAMNsBAQDHAgAh3AEBAMcCACHdAQEAxwIAId4BAQDHAgAh3wEBAMcCACHgAUAAyAIAIQvhAQEAAAAB4gEBAAAABOMBAQAAAATkAQEAAAAB5QEBAAAAAeYBAQAAAAHnAQEAAAAB6AEBAMUCACHpAQEAAAAB6gEBAAAAAesBAQAAAAEI4QFAAAAAAeIBQAAAAATjAUAAAAAE5AFAAAAAAeUBQAAAAAHmAUAAAAAB5wFAAAAAAegBQADDAgAhAtsBAQAAAAHdAQEAAAABAtsBAQAAAAHcAQEAAAABBdgBAADLAgAw2QEAAKICABDaAQAAywIAMO4BAQC_AgAh7wEBAL8CACEF2AEAAMwCADDZAQAAjwIAENoBAADMAgAw7gEBAMcCACHvAQEAxwIAIQLuAQEAAAAB7wEBAAAAAQ3YAQAAzgIAMNkBAACJAgAQ2gEAAM4CADDxAQEAvwIAIfIBAQC_AgAh8wEBAL8CACH0AQIAzwIAIfUBAADQAgAg9gEAANACACD3AQAA0AIAIPgBAgDPAgAh-QEBAL8CACH6AQAA0QIAIA0IAADCAgAgIgAAwgIAICMAAMICACB0AADUAgAgdQAAwgIAIOEBAgAAAAHiAQIAAAAE4wECAAAABOQBAgAAAAHlAQIAAAAB5gECAAAAAecBAgAAAAHoAQIA0wIAIQThAQEAAAAFgQIBAAAAAYICAQAAAASDAgEAAAAEDwgAAMICACAiAADSAgAgIwAA0gIAIOEBgAAAAAHkAYAAAAAB5QGAAAAAAeYBgAAAAAHnAYAAAAAB6AGAAAAAAfsBAQAAAAH8AQEAAAAB_QEBAAAAAf4BgAAAAAH_AYAAAAABgAKAAAAAAQzhAYAAAAAB5AGAAAAAAeUBgAAAAAHmAYAAAAAB5wGAAAAAAegBgAAAAAH7AQEAAAAB_AEBAAAAAf0BAQAAAAH-AYAAAAAB_wGAAAAAAYACgAAAAAENCAAAwgIAICIAAMICACAjAADCAgAgdAAA1AIAIHUAAMICACDhAQIAAAAB4gECAAAABOMBAgAAAATkAQIAAAAB5QECAAAAAeYBAgAAAAHnAQIAAAAB6AECANMCACEI4QEIAAAAAeIBCAAAAATjAQgAAAAE5AEIAAAAAeUBCAAAAAHmAQgAAAAB5wEIAAAAAegBCADUAgAhDdgBAADVAgAw2QEAAPYBABDaAQAA1QIAMPEBAQDHAgAh8gEBAMcCACHzAQEAxwIAIfQBAgDWAgAh9QEAANACACD2AQAA0AIAIPcBAADQAgAg-AECANYCACH5AQEAxwIAIfoBAADXAgAgCOEBAgAAAAHiAQIAAAAE4wECAAAABOQBAgAAAAHlAQIAAAAB5gECAAAAAecBAgAAAAHoAQIAwgIAIQzhAYAAAAAB5AGAAAAAAeUBgAAAAAHmAYAAAAAB5wGAAAAAAegBgAAAAAH7AQEAAAAB_AEBAAAAAf0BAQAAAAH-AYAAAAAB_wGAAAAAAYACgAAAAAEH2AEAANgCADDZAQAA8AEAENoBAADYAgAw7wEBAL8CACHxAQEAvwIAIYQCQADAAgAhhQJAAMACACEI2AEAANkCADDZAQAA2gEAENoBAADZAgAw4AFAAMACACHvAQEAvwIAIYUCQADAAgAhhgIBAL8CACGHAiAA2gIAIQUIAADCAgAgIgAA3AIAICMAANwCACDhASAAAAAB6AEgANsCACEFCAAAwgIAICIAANwCACAjAADcAgAg4QEgAAAAAegBIADbAgAhAuEBIAAAAAHoASAA3AIAIQjYAQAA3QIAMNkBAADHAQAQ2gEAAN0CADDgAUAAyAIAIe8BAQDHAgAhhQJAAMgCACGGAgEAxwIAIYcCIADeAgAhAuEBIAAAAAHoASAA3AIAIQLvAQEAAAABhgIBAAAAAQbYAQAA4AIAMNkBAADBAQAQ2gEAAOACADDgAUAAwAIAIe8BAQC_AgAh8QEBAL8CACEG2AEAAOECADDZAQAAqwEAENoBAADhAgAwiQIBAL8CACGKAgEAvwIAIYsCAgDPAgAhCNgBAADiAgAw2QEAAJUBABDaAQAA4gIAMOABQADAAgAh7wEBAL8CACGFAkAAwAIAIYwCAQC_AgAhjgIAAOMCjgIiBwgAAMICACAiAADlAgAgIwAA5QIAIOEBAAAAjgIC4gEAAACOAgjjAQAAAI4CCOgBAADkAo4CIgcIAADCAgAgIgAA5QIAICMAAOUCACDhAQAAAI4CAuIBAAAAjgII4wEAAACOAgjoAQAA5AKOAiIE4QEAAACOAgLiAQAAAI4CCOMBAAAAjgII6AEAAOUCjgIiDtgBAADmAgAw2QEAAH8AENoBAADmAgAw4AFAAMACACHxAQEAvwIAIYUCQADAAgAhjwIBAL8CACGQAgEAvwIAIZECAQC_AgAhkgIBAL8CACGTAgEAvwIAIZQCAQDnAgAhlQJAAOgCACGWAgEA5wIAIQ4IAADqAgAgIgAA7QIAICMAAO0CACDhAQEAAAAB4gEBAAAABeMBAQAAAAXkAQEAAAAB5QEBAAAAAeYBAQAAAAHnAQEAAAAB6AEBAOwCACHpAQEAAAAB6gEBAAAAAesBAQAAAAELCAAA6gIAICIAAOsCACAjAADrAgAg4QFAAAAAAeIBQAAAAAXjAUAAAAAF5AFAAAAAAeUBQAAAAAHmAUAAAAAB5wFAAAAAAegBQADpAgAhCwgAAOoCACAiAADrAgAgIwAA6wIAIOEBQAAAAAHiAUAAAAAF4wFAAAAABeQBQAAAAAHlAUAAAAAB5gFAAAAAAecBQAAAAAHoAUAA6QIAIQjhAQIAAAAB4gECAAAABeMBAgAAAAXkAQIAAAAB5QECAAAAAeYBAgAAAAHnAQIAAAAB6AECAOoCACEI4QFAAAAAAeIBQAAAAAXjAUAAAAAF5AFAAAAAAeUBQAAAAAHmAUAAAAAB5wFAAAAAAegBQADrAgAhDggAAOoCACAiAADtAgAgIwAA7QIAIOEBAQAAAAHiAQEAAAAF4wEBAAAABeQBAQAAAAHlAQEAAAAB5gEBAAAAAecBAQAAAAHoAQEA7AIAIekBAQAAAAHqAQEAAAAB6wEBAAAAAQvhAQEAAAAB4gEBAAAABeMBAQAAAAXkAQEAAAAB5QEBAAAAAeYBAQAAAAHnAQEAAAAB6AEBAO0CACHpAQEAAAAB6gEBAAAAAesBAQAAAAEJ2AEAAO4CADDZAQAAaQAQ2gEAAO4CADDgAUAAwAIAIY8CAQC_AgAhlwIBAL8CACGYAgEA5wIAIZkCQADoAgAhmgIBAOcCACEJ2AEAAO8CADDZAQAAVgAQ2gEAAO8CADDgAUAAyAIAIY8CAQDHAgAhlwIBAMcCACGYAgEA8AIAIZkCQADxAgAhmgIBAPACACEL4QEBAAAAAeIBAQAAAAXjAQEAAAAF5AEBAAAAAeUBAQAAAAHmAQEAAAAB5wEBAAAAAegBAQDtAgAh6QEBAAAAAeoBAQAAAAHrAQEAAAABCOEBQAAAAAHiAUAAAAAF4wFAAAAABeQBQAAAAAHlAUAAAAAB5gFAAAAAAecBQAAAAAHoAUAA6wIAIQnYAQAA8gIAMNkBAABQABDaAQAA8gIAMOABQADAAgAh7wEBAL8CACGPAgEAvwIAIZgCAQDnAgAhmQJAAOgCACGaAgEA5wIAIQnYAQAA8wIAMNkBAAA9ABDaAQAA8wIAMOABQADIAgAh7wEBAMcCACGPAgEAxwIAIZgCAQDwAgAhmQJAAPECACGaAgEA8AIAIRLYAQAA9AIAMNkBAAA3ABDaAQAA9AIAMOABQADAAgAh7gEBAOcCACGFAkAAwAIAIYYCAQDnAgAhjwIBAL8CACGSAgEAvwIAIZMCAQC_AgAhlQJAAOgCACGWAgEA5wIAIZsCAQDnAgAhnAIBAL8CACGdAiAA2gIAIZ4CIADaAgAhnwJAAOgCACGgAgEA5wIAIQLvAQEAAAAB8QEBAAAAAQgFAAD3AgAg2AEAAPYCADDZAQAAGQAQ2gEAAPYCADDvAQEAxwIAIfEBAQDHAgAhhAJAAMgCACGFAkAAyAIAIRsBAACDAwAgBAAAhAMAIAkAAIUDACAMAACGAwAgDQAAhgMAIA4AAIcDACAPAACIAwAg2AEAAIIDADDZAQAAAwAQ2gEAAIIDADDgAUAAyAIAIe4BAQDwAgAhhQJAAMgCACGGAgEA8AIAIY8CAQDHAgAhkgIBAMcCACGTAgEAxwIAIZUCQADxAgAhlgIBAPACACGbAgEA8AIAIZwCAQDHAgAhnQIgAN4CACGeAiAA3gIAIZ8CQADxAgAhoAIBAPACACGnAgAAAwAgqAIAAAMAIALvAQEAAAAB8QEBAAAAAQcFAAD3AgAg2AEAAPkCADDZAQAAFQAQ2gEAAPkCADDgAUAAyAIAIe8BAQDHAgAh8QEBAMcCACECiQIBAAAAAYoCAQAAAAEICgAA9wIAIAsAAPcCACDYAQAA-wIAMNkBAAAQABDaAQAA-wIAMIkCAQDHAgAhigIBAMcCACGLAgIA1gIAIQLvAQEAAAABjAIBAAAAAQkGAAD_AgAg2AEAAP0CADDZAQAACwAQ2gEAAP0CADDgAUAAyAIAIe8BAQDHAgAhhQJAAMgCACGMAgEAxwIAIY4CAAD-Ao4CIgThAQAAAI4CAuIBAAAAjgII4wEAAACOAgjoAQAA5QKOAiISBQAA9wIAIAcAAIEDACDYAQAAgAMAMNkBAAAHABDaAQAAgAMAMOABQADIAgAh8QEBAMcCACGFAkAAyAIAIY8CAQDHAgAhkAIBAMcCACGRAgEAxwIAIZICAQDHAgAhkwIBAMcCACGUAgEA8AIAIZUCQADxAgAhlgIBAPACACGnAgAABwAgqAIAAAcAIBAFAAD3AgAgBwAAgQMAINgBAACAAwAw2QEAAAcAENoBAACAAwAw4AFAAMgCACHxAQEAxwIAIYUCQADIAgAhjwIBAMcCACGQAgEAxwIAIZECAQDHAgAhkgIBAMcCACGTAgEAxwIAIZQCAQDwAgAhlQJAAPECACGWAgEA8AIAIQOkAgAACwAgpQIAAAsAIKYCAAALACAZAQAAgwMAIAQAAIQDACAJAACFAwAgDAAAhgMAIA0AAIYDACAOAACHAwAgDwAAiAMAINgBAACCAwAw2QEAAAMAENoBAACCAwAw4AFAAMgCACHuAQEA8AIAIYUCQADIAgAhhgIBAPACACGPAgEAxwIAIZICAQDHAgAhkwIBAMcCACGVAkAA8QIAIZYCAQDwAgAhmwIBAPACACGcAgEAxwIAIZ0CIADeAgAhngIgAN4CACGfAkAA8QIAIaACAQDwAgAhGwEAAIMDACAEAACEAwAgCQAAhQMAIAwAAIYDACANAACGAwAgDgAAhwMAIA8AAIgDACDYAQAAggMAMNkBAAADABDaAQAAggMAMOABQADIAgAh7gEBAPACACGFAkAAyAIAIYYCAQDwAgAhjwIBAMcCACGSAgEAxwIAIZMCAQDHAgAhlQJAAPECACGWAgEA8AIAIZsCAQDwAgAhnAIBAMcCACGdAiAA3gIAIZ4CIADeAgAhnwJAAPECACGgAgEA8AIAIacCAAADACCoAgAAAwAgA6QCAAADACClAgAAAwAgpgIAAAMAIAOkAgAABwAgpQIAAAcAIKYCAAAHACADpAIAABAAIKUCAAAQACCmAgAAEAAgA6QCAAAVACClAgAAFQAgpgIAABUAIAOkAgAAGQAgpQIAABkAIKYCAAAZACAAAAABrAIBAAAAAQGsAkAAAAABAAAAAAAAAAAFrAICAAAAAbMCAgAAAAG0AgIAAAABtQICAAAAAbYCAgAAAAECrAIBAAAABLICAQAAAAUCrAIBAAAABLICAQAAAAUCrAIBAAAABLICAQAAAAUBrAIBAAAABAGsAgEAAAAEAawCAQAAAAQAAAAFHAAA2QQAIB0AANwEACCpAgAA2gQAIKoCAADbBAAgrwIAAAEAIAMcAADZBAAgqQIAANoEACCvAgAAAQAgAAAAAawCIAAAAAEAAAAFHAAA1AQAIB0AANcEACCpAgAA1QQAIKoCAADWBAAgrwIAAAEAIAMcAADUBAAgqQIAANUEACCvAgAAAQAgAAAAAAAFHAAAzAQAIB0AANIEACCpAgAAzQQAIKoCAADRBAAgrwIAAAEAIAUcAADKBAAgHQAAzwQAIKkCAADLBAAgqgIAAM4EACCvAgAAAQAgAxwAAMwEACCpAgAAzQQAIK8CAAABACADHAAAygQAIKkCAADLBAAgrwIAAAEAIAAAAAGsAgAAAI4CAgUcAADFBAAgHQAAyAQAIKkCAADGBAAgqgIAAMcEACCvAgAACQAgAxwAAMUEACCpAgAAxgQAIK8CAAAJACAAAAAAAawCAQAAAAEBrAJAAAAAAQUcAAC_BAAgHQAAwwQAIKkCAADABAAgqgIAAMIEACCvAgAAAQAgCxwAAMIDADAdAADHAwAwqQIAAMMDADCqAgAAxAMAMKsCAADFAwAgrAIAAMYDADCtAgAAxgMAMK4CAADGAwAwrwIAAMYDADCwAgAAyAMAMLECAADJAwAwBOABQAAAAAHvAQEAAAABhQJAAAAAAY4CAAAAjgICAgAAAA0AIBwAAM0DACADAAAADQAgHAAAzQMAIB0AAMwDACABFQAAwQQAMAoGAAD_AgAg2AEAAP0CADDZAQAACwAQ2gEAAP0CADDgAUAAyAIAIe8BAQDHAgAhhQJAAMgCACGMAgEAxwIAIY4CAAD-Ao4CIqMCAAD8AgAgAgAAAA0AIBUAAMwDACACAAAAygMAIBUAAMsDACAI2AEAAMkDADDZAQAAygMAENoBAADJAwAw4AFAAMgCACHvAQEAxwIAIYUCQADIAgAhjAIBAMcCACGOAgAA_gKOAiII2AEAAMkDADDZAQAAygMAENoBAADJAwAw4AFAAMgCACHvAQEAxwIAIYUCQADIAgAhjAIBAMcCACGOAgAA_gKOAiIE4AFAAI0DACHvAQEAjAMAIYUCQACNAwAhjgIAALcDjgIiBOABQACNAwAh7wEBAIwDACGFAkAAjQMAIY4CAAC3A44CIgTgAUAAAAAB7wEBAAAAAYUCQAAAAAGOAgAAAI4CAgMcAAC_BAAgqQIAAMAEACCvAgAAAQAgBBwAAMIDADCpAgAAwwMAMKsCAADFAwAgrwIAAMYDADAAAAAAAAAAAAAHHAAAtAQAIB0AAL0EACCpAgAAtQQAIKoCAAC8BAAgrQIAAAMAIK4CAAADACCvAgAAAQAgCxwAAJkEADAdAACeBAAwqQIAAJoEADCqAgAAmwQAMKsCAACcBAAgrAIAAJ0EADCtAgAAnQQAMK4CAACdBAAwrwIAAJ0EADCwAgAAnwQAMLECAACgBAAwCxwAAI0EADAdAACSBAAwqQIAAI4EADCqAgAAjwQAMKsCAACQBAAgrAIAAJEEADCtAgAAkQQAMK4CAACRBAAwrwIAAJEEADCwAgAAkwQAMLECAACUBAAwCxwAAIQEADAdAACIBAAwqQIAAIUEADCqAgAAhgQAMKsCAACHBAAgrAIAAPwDADCtAgAA_AMAMK4CAAD8AwAwrwIAAPwDADCwAgAAiQQAMLECAAD_AwAwCxwAAPgDADAdAAD9AwAwqQIAAPkDADCqAgAA-gMAMKsCAAD7AwAgrAIAAPwDADCtAgAA_AMAMK4CAAD8AwAwrwIAAPwDADCwAgAA_gMAMLECAAD_AwAwCxwAAOwDADAdAADxAwAwqQIAAO0DADCqAgAA7gMAMKsCAADvAwAgrAIAAPADADCtAgAA8AMAMK4CAADwAwAwrwIAAPADADCwAgAA8gMAMLECAADzAwAwCxwAAOADADAdAADlAwAwqQIAAOEDADCqAgAA4gMAMKsCAADjAwAgrAIAAOQDADCtAgAA5AMAMK4CAADkAwAwrwIAAOQDADCwAgAA5gMAMLECAADnAwAwA-8BAQAAAAGEAkAAAAABhQJAAAAAAQIAAAAbACAcAADrAwAgAwAAABsAIBwAAOsDACAdAADqAwAgARUAALsEADAJBQAA9wIAINgBAAD2AgAw2QEAABkAENoBAAD2AgAw7wEBAMcCACHxAQEAxwIAIYQCQADIAgAhhQJAAMgCACGhAgAA9QIAIAIAAAAbACAVAADqAwAgAgAAAOgDACAVAADpAwAgB9gBAADnAwAw2QEAAOgDABDaAQAA5wMAMO8BAQDHAgAh8QEBAMcCACGEAkAAyAIAIYUCQADIAgAhB9gBAADnAwAw2QEAAOgDABDaAQAA5wMAMO8BAQDHAgAh8QEBAMcCACGEAkAAyAIAIYUCQADIAgAhA-8BAQCMAwAhhAJAAI0DACGFAkAAjQMAIQPvAQEAjAMAIYQCQACNAwAhhQJAAI0DACED7wEBAAAAAYQCQAAAAAGFAkAAAAABAuABQAAAAAHvAQEAAAABAgAAABcAIBwAAPcDACADAAAAFwAgHAAA9wMAIB0AAPYDACABFQAAugQAMAgFAAD3AgAg2AEAAPkCADDZAQAAFQAQ2gEAAPkCADDgAUAAyAIAIe8BAQDHAgAh8QEBAMcCACGhAgAA-AIAIAIAAAAXACAVAAD2AwAgAgAAAPQDACAVAAD1AwAgBtgBAADzAwAw2QEAAPQDABDaAQAA8wMAMOABQADIAgAh7wEBAMcCACHxAQEAxwIAIQbYAQAA8wMAMNkBAAD0AwAQ2gEAAPMDADDgAUAAyAIAIe8BAQDHAgAh8QEBAMcCACEC4AFAAI0DACHvAQEAjAMAIQLgAUAAjQMAIe8BAQCMAwAhAuABQAAAAAHvAQEAAAABAwoAALIDACCJAgEAAAABiwICAAAAAQIAAAASACAcAACDBAAgAwAAABIAIBwAAIMEACAdAACCBAAgARUAALkEADAJCgAA9wIAIAsAAPcCACDYAQAA-wIAMNkBAAAQABDaAQAA-wIAMIkCAQDHAgAhigIBAMcCACGLAgIA1gIAIaICAAD6AgAgAgAAABIAIBUAAIIEACACAAAAgAQAIBUAAIEEACAG2AEAAP8DADDZAQAAgAQAENoBAAD_AwAwiQIBAMcCACGKAgEAxwIAIYsCAgDWAgAhBtgBAAD_AwAw2QEAAIAEABDaAQAA_wMAMIkCAQDHAgAhigIBAMcCACGLAgIA1gIAIQKJAgEAjAMAIYsCAgCWAwAhAwoAALADACCJAgEAjAMAIYsCAgCWAwAhAwoAALIDACCJAgEAAAABiwICAAAAAQMLAACzAwAgigIBAAAAAYsCAgAAAAECAAAAEgAgHAAAjAQAIAMAAAASACAcAACMBAAgHQAAiwQAIAEVAAC4BAAwAgAAABIAIBUAAIsEACACAAAAgAQAIBUAAIoEACACigIBAIwDACGLAgIAlgMAIQMLAACxAwAgigIBAIwDACGLAgIAlgMAIQMLAACzAwAgigIBAAAAAYsCAgAAAAELBwAAzwMAIOABQAAAAAGFAkAAAAABjwIBAAAAAZACAQAAAAGRAgEAAAABkgIBAAAAAZMCAQAAAAGUAgEAAAABlQJAAAAAAZYCAQAAAAECAAAACQAgHAAAmAQAIAMAAAAJACAcAACYBAAgHQAAlwQAIAEVAAC3BAAwEAUAAPcCACAHAACBAwAg2AEAAIADADDZAQAABwAQ2gEAAIADADDgAUAAyAIAIfEBAQDHAgAhhQJAAMgCACGPAgEAAAABkAIBAMcCACGRAgEAxwIAIZICAQDHAgAhkwIBAMcCACGUAgEA8AIAIZUCQADxAgAhlgIBAPACACECAAAACQAgFQAAlwQAIAIAAACVBAAgFQAAlgQAIA7YAQAAlAQAMNkBAACVBAAQ2gEAAJQEADDgAUAAyAIAIfEBAQDHAgAhhQJAAMgCACGPAgEAxwIAIZACAQDHAgAhkQIBAMcCACGSAgEAxwIAIZMCAQDHAgAhlAIBAPACACGVAkAA8QIAIZYCAQDwAgAhDtgBAACUBAAw2QEAAJUEABDaAQAAlAQAMOABQADIAgAh8QEBAMcCACGFAkAAyAIAIY8CAQDHAgAhkAIBAMcCACGRAgEAxwIAIZICAQDHAgAhkwIBAMcCACGUAgEA8AIAIZUCQADxAgAhlgIBAPACACEK4AFAAI0DACGFAkAAjQMAIY8CAQCMAwAhkAIBAIwDACGRAgEAjAMAIZICAQCMAwAhkwIBAIwDACGUAgEAvgMAIZUCQAC_AwAhlgIBAL4DACELBwAAwQMAIOABQACNAwAhhQJAAI0DACGPAgEAjAMAIZACAQCMAwAhkQIBAIwDACGSAgEAjAMAIZMCAQCMAwAhlAIBAL4DACGVAkAAvwMAIZYCAQC-AwAhCwcAAM8DACDgAUAAAAABhQJAAAAAAY8CAQAAAAGQAgEAAAABkQIBAAAAAZICAQAAAAGTAgEAAAABlAIBAAAAAZUCQAAAAAGWAgEAAAABFAQAAKUEACAJAACmBAAgDAAApwQAIA0AAKgEACAOAACpBAAgDwAAqgQAIOABQAAAAAHuAQEAAAABhQJAAAAAAYYCAQAAAAGPAgEAAAABkgIBAAAAAZMCAQAAAAGVAkAAAAABlgIBAAAAAZwCAQAAAAGdAiAAAAABngIgAAAAAZ8CQAAAAAGgAgEAAAABAgAAAAEAIBwAAKQEACADAAAAAQAgHAAApAQAIB0AAKMEACABFQAAtgQAMBkBAACDAwAgBAAAhAMAIAkAAIUDACAMAACGAwAgDQAAhgMAIA4AAIcDACAPAACIAwAg2AEAAIIDADDZAQAAAwAQ2gEAAIIDADDgAUAAyAIAIe4BAQDwAgAhhQJAAMgCACGGAgEA8AIAIY8CAQAAAAGSAgEAxwIAIZMCAQDHAgAhlQJAAPECACGWAgEA8AIAIZsCAQDwAgAhnAIBAMcCACGdAiAA3gIAIZ4CIADeAgAhnwJAAPECACGgAgEA8AIAIQIAAAABACAVAACjBAAgAgAAAKEEACAVAACiBAAgEtgBAACgBAAw2QEAAKEEABDaAQAAoAQAMOABQADIAgAh7gEBAPACACGFAkAAyAIAIYYCAQDwAgAhjwIBAMcCACGSAgEAxwIAIZMCAQDHAgAhlQJAAPECACGWAgEA8AIAIZsCAQDwAgAhnAIBAMcCACGdAiAA3gIAIZ4CIADeAgAhnwJAAPECACGgAgEA8AIAIRLYAQAAoAQAMNkBAAChBAAQ2gEAAKAEADDgAUAAyAIAIe4BAQDwAgAhhQJAAMgCACGGAgEA8AIAIY8CAQDHAgAhkgIBAMcCACGTAgEAxwIAIZUCQADxAgAhlgIBAPACACGbAgEA8AIAIZwCAQDHAgAhnQIgAN4CACGeAiAA3gIAIZ8CQADxAgAhoAIBAPACACEO4AFAAI0DACHuAQEAvgMAIYUCQACNAwAhhgIBAL4DACGPAgEAjAMAIZICAQCMAwAhkwIBAIwDACGVAkAAvwMAIZYCAQC-AwAhnAIBAIwDACGdAiAApQMAIZ4CIAClAwAhnwJAAL8DACGgAgEAvgMAIRQEAADaAwAgCQAA2wMAIAwAANwDACANAADdAwAgDgAA3gMAIA8AAN8DACDgAUAAjQMAIe4BAQC-AwAhhQJAAI0DACGGAgEAvgMAIY8CAQCMAwAhkgIBAIwDACGTAgEAjAMAIZUCQAC_AwAhlgIBAL4DACGcAgEAjAMAIZ0CIAClAwAhngIgAKUDACGfAkAAvwMAIaACAQC-AwAhFAQAAKUEACAJAACmBAAgDAAApwQAIA0AAKgEACAOAACpBAAgDwAAqgQAIOABQAAAAAHuAQEAAAABhQJAAAAAAYYCAQAAAAGPAgEAAAABkgIBAAAAAZMCAQAAAAGVAkAAAAABlgIBAAAAAZwCAQAAAAGdAiAAAAABngIgAAAAAZ8CQAAAAAGgAgEAAAABBBwAAJkEADCpAgAAmgQAMKsCAACcBAAgrwIAAJ0EADAEHAAAjQQAMKkCAACOBAAwqwIAAJAEACCvAgAAkQQAMAQcAACEBAAwqQIAAIUEADCrAgAAhwQAIK8CAAD8AwAwBBwAAPgDADCpAgAA-QMAMKsCAAD7AwAgrwIAAPwDADAEHAAA7AMAMKkCAADtAwAwqwIAAO8DACCvAgAA8AMAMAQcAADgAwAwqQIAAOEDADCrAgAA4wMAIK8CAADkAwAwAxwAALQEACCpAgAAtQQAIK8CAAABACAOAQAArAQAIAQAAK8EACAJAACwBAAgDAAAsQQAIA0AALEEACAOAACyBAAgDwAAswQAIO4BAAC6AwAghgIAALoDACCVAgAAugMAIJYCAAC6AwAgmwIAALoDACCfAgAAugMAIKACAAC6AwAgBQUAAKwEACAHAACuBAAglAIAALoDACCVAgAAugMAIJYCAAC6AwAgAAAAAAAAFQEAAKsEACAJAACmBAAgDAAApwQAIA0AAKgEACAOAACpBAAgDwAAqgQAIOABQAAAAAHuAQEAAAABhQJAAAAAAYYCAQAAAAGPAgEAAAABkgIBAAAAAZMCAQAAAAGVAkAAAAABlgIBAAAAAZsCAQAAAAGcAgEAAAABnQIgAAAAAZ4CIAAAAAGfAkAAAAABoAIBAAAAAQIAAAABACAcAAC0BAAgDuABQAAAAAHuAQEAAAABhQJAAAAAAYYCAQAAAAGPAgEAAAABkgIBAAAAAZMCAQAAAAGVAkAAAAABlgIBAAAAAZwCAQAAAAGdAiAAAAABngIgAAAAAZ8CQAAAAAGgAgEAAAABCuABQAAAAAGFAkAAAAABjwIBAAAAAZACAQAAAAGRAgEAAAABkgIBAAAAAZMCAQAAAAGUAgEAAAABlQJAAAAAAZYCAQAAAAECigIBAAAAAYsCAgAAAAECiQIBAAAAAYsCAgAAAAEC4AFAAAAAAe8BAQAAAAED7wEBAAAAAYQCQAAAAAGFAkAAAAABAwAAAAMAIBwAALQEACAdAAC-BAAgFwAAAAMAIAEAANkDACAJAADbAwAgDAAA3AMAIA0AAN0DACAOAADeAwAgDwAA3wMAIBUAAL4EACDgAUAAjQMAIe4BAQC-AwAhhQJAAI0DACGGAgEAvgMAIY8CAQCMAwAhkgIBAIwDACGTAgEAjAMAIZUCQAC_AwAhlgIBAL4DACGbAgEAvgMAIZwCAQCMAwAhnQIgAKUDACGeAiAApQMAIZ8CQAC_AwAhoAIBAL4DACEVAQAA2QMAIAkAANsDACAMAADcAwAgDQAA3QMAIA4AAN4DACAPAADfAwAg4AFAAI0DACHuAQEAvgMAIYUCQACNAwAhhgIBAL4DACGPAgEAjAMAIZICAQCMAwAhkwIBAIwDACGVAkAAvwMAIZYCAQC-AwAhmwIBAL4DACGcAgEAjAMAIZ0CIAClAwAhngIgAKUDACGfAkAAvwMAIaACAQC-AwAhFQEAAKsEACAEAAClBAAgDAAApwQAIA0AAKgEACAOAACpBAAgDwAAqgQAIOABQAAAAAHuAQEAAAABhQJAAAAAAYYCAQAAAAGPAgEAAAABkgIBAAAAAZMCAQAAAAGVAkAAAAABlgIBAAAAAZsCAQAAAAGcAgEAAAABnQIgAAAAAZ4CIAAAAAGfAkAAAAABoAIBAAAAAQIAAAABACAcAAC_BAAgBOABQAAAAAHvAQEAAAABhQJAAAAAAY4CAAAAjgICAwAAAAMAIBwAAL8EACAdAADEBAAgFwAAAAMAIAEAANkDACAEAADaAwAgDAAA3AMAIA0AAN0DACAOAADeAwAgDwAA3wMAIBUAAMQEACDgAUAAjQMAIe4BAQC-AwAhhQJAAI0DACGGAgEAvgMAIY8CAQCMAwAhkgIBAIwDACGTAgEAjAMAIZUCQAC_AwAhlgIBAL4DACGbAgEAvgMAIZwCAQCMAwAhnQIgAKUDACGeAiAApQMAIZ8CQAC_AwAhoAIBAL4DACEVAQAA2QMAIAQAANoDACAMAADcAwAgDQAA3QMAIA4AAN4DACAPAADfAwAg4AFAAI0DACHuAQEAvgMAIYUCQACNAwAhhgIBAL4DACGPAgEAjAMAIZICAQCMAwAhkwIBAIwDACGVAkAAvwMAIZYCAQC-AwAhmwIBAL4DACGcAgEAjAMAIZ0CIAClAwAhngIgAKUDACGfAkAAvwMAIaACAQC-AwAhDAUAAM4DACDgAUAAAAAB8QEBAAAAAYUCQAAAAAGPAgEAAAABkAIBAAAAAZECAQAAAAGSAgEAAAABkwIBAAAAAZQCAQAAAAGVAkAAAAABlgIBAAAAAQIAAAAJACAcAADFBAAgAwAAAAcAIBwAAMUEACAdAADJBAAgDgAAAAcAIAUAAMADACAVAADJBAAg4AFAAI0DACHxAQEAjAMAIYUCQACNAwAhjwIBAIwDACGQAgEAjAMAIZECAQCMAwAhkgIBAIwDACGTAgEAjAMAIZQCAQC-AwAhlQJAAL8DACGWAgEAvgMAIQwFAADAAwAg4AFAAI0DACHxAQEAjAMAIYUCQACNAwAhjwIBAIwDACGQAgEAjAMAIZECAQCMAwAhkgIBAIwDACGTAgEAjAMAIZQCAQC-AwAhlQJAAL8DACGWAgEAvgMAIRUBAACrBAAgBAAApQQAIAkAAKYEACAMAACnBAAgDgAAqQQAIA8AAKoEACDgAUAAAAAB7gEBAAAAAYUCQAAAAAGGAgEAAAABjwIBAAAAAZICAQAAAAGTAgEAAAABlQJAAAAAAZYCAQAAAAGbAgEAAAABnAIBAAAAAZ0CIAAAAAGeAiAAAAABnwJAAAAAAaACAQAAAAECAAAAAQAgHAAAygQAIBUBAACrBAAgBAAApQQAIAkAAKYEACANAACoBAAgDgAAqQQAIA8AAKoEACDgAUAAAAAB7gEBAAAAAYUCQAAAAAGGAgEAAAABjwIBAAAAAZICAQAAAAGTAgEAAAABlQJAAAAAAZYCAQAAAAGbAgEAAAABnAIBAAAAAZ0CIAAAAAGeAiAAAAABnwJAAAAAAaACAQAAAAECAAAAAQAgHAAAzAQAIAMAAAADACAcAADKBAAgHQAA0AQAIBcAAAADACABAADZAwAgBAAA2gMAIAkAANsDACAMAADcAwAgDgAA3gMAIA8AAN8DACAVAADQBAAg4AFAAI0DACHuAQEAvgMAIYUCQACNAwAhhgIBAL4DACGPAgEAjAMAIZICAQCMAwAhkwIBAIwDACGVAkAAvwMAIZYCAQC-AwAhmwIBAL4DACGcAgEAjAMAIZ0CIAClAwAhngIgAKUDACGfAkAAvwMAIaACAQC-AwAhFQEAANkDACAEAADaAwAgCQAA2wMAIAwAANwDACAOAADeAwAgDwAA3wMAIOABQACNAwAh7gEBAL4DACGFAkAAjQMAIYYCAQC-AwAhjwIBAIwDACGSAgEAjAMAIZMCAQCMAwAhlQJAAL8DACGWAgEAvgMAIZsCAQC-AwAhnAIBAIwDACGdAiAApQMAIZ4CIAClAwAhnwJAAL8DACGgAgEAvgMAIQMAAAADACAcAADMBAAgHQAA0wQAIBcAAAADACABAADZAwAgBAAA2gMAIAkAANsDACANAADdAwAgDgAA3gMAIA8AAN8DACAVAADTBAAg4AFAAI0DACHuAQEAvgMAIYUCQACNAwAhhgIBAL4DACGPAgEAjAMAIZICAQCMAwAhkwIBAIwDACGVAkAAvwMAIZYCAQC-AwAhmwIBAL4DACGcAgEAjAMAIZ0CIAClAwAhngIgAKUDACGfAkAAvwMAIaACAQC-AwAhFQEAANkDACAEAADaAwAgCQAA2wMAIA0AAN0DACAOAADeAwAgDwAA3wMAIOABQACNAwAh7gEBAL4DACGFAkAAjQMAIYYCAQC-AwAhjwIBAIwDACGSAgEAjAMAIZMCAQCMAwAhlQJAAL8DACGWAgEAvgMAIZsCAQC-AwAhnAIBAIwDACGdAiAApQMAIZ4CIAClAwAhnwJAAL8DACGgAgEAvgMAIRUBAACrBAAgBAAApQQAIAkAAKYEACAMAACnBAAgDQAAqAQAIA8AAKoEACDgAUAAAAAB7gEBAAAAAYUCQAAAAAGGAgEAAAABjwIBAAAAAZICAQAAAAGTAgEAAAABlQJAAAAAAZYCAQAAAAGbAgEAAAABnAIBAAAAAZ0CIAAAAAGeAiAAAAABnwJAAAAAAaACAQAAAAECAAAAAQAgHAAA1AQAIAMAAAADACAcAADUBAAgHQAA2AQAIBcAAAADACABAADZAwAgBAAA2gMAIAkAANsDACAMAADcAwAgDQAA3QMAIA8AAN8DACAVAADYBAAg4AFAAI0DACHuAQEAvgMAIYUCQACNAwAhhgIBAL4DACGPAgEAjAMAIZICAQCMAwAhkwIBAIwDACGVAkAAvwMAIZYCAQC-AwAhmwIBAL4DACGcAgEAjAMAIZ0CIAClAwAhngIgAKUDACGfAkAAvwMAIaACAQC-AwAhFQEAANkDACAEAADaAwAgCQAA2wMAIAwAANwDACANAADdAwAgDwAA3wMAIOABQACNAwAh7gEBAL4DACGFAkAAjQMAIYYCAQC-AwAhjwIBAIwDACGSAgEAjAMAIZMCAQCMAwAhlQJAAL8DACGWAgEAvgMAIZsCAQC-AwAhnAIBAIwDACGdAiAApQMAIZ4CIAClAwAhnwJAAL8DACGgAgEAvgMAIRUBAACrBAAgBAAApQQAIAkAAKYEACAMAACnBAAgDQAAqAQAIA4AAKkEACDgAUAAAAAB7gEBAAAAAYUCQAAAAAGGAgEAAAABjwIBAAAAAZICAQAAAAGTAgEAAAABlQJAAAAAAZYCAQAAAAGbAgEAAAABnAIBAAAAAZ0CIAAAAAGeAiAAAAABnwJAAAAAAaACAQAAAAECAAAAAQAgHAAA2QQAIAMAAAADACAcAADZBAAgHQAA3QQAIBcAAAADACABAADZAwAgBAAA2gMAIAkAANsDACAMAADcAwAgDQAA3QMAIA4AAN4DACAVAADdBAAg4AFAAI0DACHuAQEAvgMAIYUCQACNAwAhhgIBAL4DACGPAgEAjAMAIZICAQCMAwAhkwIBAIwDACGVAkAAvwMAIZYCAQC-AwAhmwIBAL4DACGcAgEAjAMAIZ0CIAClAwAhngIgAKUDACGfAkAAvwMAIaACAQC-AwAhFQEAANkDACAEAADaAwAgCQAA2wMAIAwAANwDACANAADdAwAgDgAA3gMAIOABQACNAwAh7gEBAL4DACGFAkAAjQMAIYYCAQC-AwAhjwIBAIwDACGSAgEAjAMAIZMCAQCMAwAhlQJAAL8DACGWAgEAvgMAIZsCAQC-AwAhnAIBAIwDACGdAiAApQMAIZ4CIAClAwAhnwJAAL8DACGgAgEAvgMAIQgBBAEEBgEIAAgJCgIMEwUNFAUOGAYPHAcDBQABBw4DCAAEAQYAAgEHDwACCgABCwABAQUAAQEFAAEGBB0ACR4ADB8ADSAADiEADyIAAAEBLAEBATIBAwgADSIADiMADwAAAAMIAA0iAA4jAA8AAAADCAAVIgAWIwAXAAAAAwgAFSIAFiMAFwAAAAMIAB0iAB4jAB8AAAADCAAdIgAeIwAfAQUAAQEFAAEDCAAkIgAlIwAmAAAAAwgAJCIAJSMAJgEGAAIBBgACAwgAKyIALCMALQAAAAMIACsiACwjAC0CCgABCwABAgoAAQsAAQUIADIiADUjADZ0ADN1ADQAAAAAAAUIADIiADUjADZ0ADN1ADQBBQABAQUAAQMIADsiADwjAD0AAAADCAA7IgA8IwA9AAAAAwgAQyIARCMARQAAAAMIAEMiAEQjAEUBBQABAQUAAQMIAEoiAEsjAEwAAAADCABKIgBLIwBMAAAABQgAUiIAVSMAVnQAU3UAVAAAAAAABQgAUiIAVSMAVnQAU3UAVAAAAAMIAFwiAF0jAF4AAAADCABcIgBdIwBeAAAAAwgAZCIAZSMAZgAAAAMIAGQiAGUjAGYQAgERIwESJAETJQEUJgEWKAEXKgkYKwoZLgEaMAkbMQseMwEfNAEgNQkkOAwlORAmOxEnPBEoPxEpQBEqQRErQxEsRQktRhIuSBEvSgkwSxMxTBEyTREzTgk0URQ1Uhg2VBk3VRk4WBk5WRk6Whk7XBk8Xgk9Xxo-YRk_YwlAZBtBZRlCZhlDZwlEahxFayBGbAJHbQJIbgJJbwJKcAJLcgJMdAlNdSFOdwJPeQlQeiJRewJSfAJTfQlUgAEjVYEBJ1aCAQNXgwEDWIQBA1mFAQNahgEDW4gBA1yKAQldiwEoXo0BA1-PAQlgkAEpYZEBA2KSAQNjkwEJZJYBKmWXAS5mmAEFZ5kBBWiaAQVpmwEFapwBBWueAQVsoAEJbaEBL26jAQVvpQEJcKYBMHGnAQVyqAEFc6kBCXasATF3rQE3eK4BBnmvAQZ6sAEGe7EBBnyyAQZ9tAEGfrYBCX-3ATiAAbkBBoEBuwEJggG8ATmDAb0BBoQBvgEGhQG_AQmGAcIBOocBwwE-iAHFAT-JAcYBP4oByQE_iwHKAT-MAcsBP40BzQE_jgHPAQmPAdABQJAB0gE_kQHUAQmSAdUBQZMB1gE_lAHXAT-VAdgBCZYB2wFClwHcAUaYAd0BB5kB3gEHmgHfAQebAeABB5wB4QEHnQHjAQeeAeUBCZ8B5gFHoAHoAQehAeoBCaIB6wFIowHsAQekAe0BB6UB7gEJpgHxAUmnAfIBTagB9AFOqQH1AU6qAfgBTqsB-QFOrAH6AU6tAfwBTq4B_gEJrwH_AU-wAYECTrEBgwIJsgGEAlCzAYUCTrQBhgJOtQGHAgm2AYoCUbcBiwJXuAGNAli5AY4CWLoBkQJYuwGSAli8AZMCWL0BlQJYvgGXAgm_AZgCWcABmgJYwQGcAgnCAZ0CWsMBngJYxAGfAljFAaACCcYBowJbxwGkAl_IAaYCYMkBpwJgygGqAmDLAasCYMwBrAJgzQGuAmDOAbACCc8BsQJh0AGzAmDRAbUCCdIBtgJi0wG3AmDUAbgCYNUBuQIJ1gG8AmPXAb0CZw" + graph: "3QRnwAEZAQAAgwMAIAQAAIQDACAJAACFAwAgDAAAhgMAIA0AAIYDACAOAACHAwAgDwAAiAMAINgBAACCAwAw2QEAAAMAENoBAACCAwAw4AFAAMgCACHuAQEA8AIAIYUCQADIAgAhhgIBAPACACGPAgEAAAABkgIBAMcCACGTAgEAxwIAIZUCQADxAgAhlgIBAPACACGbAgEA8AIAIZwCAQDHAgAhnQIgAN4CACGeAiAA3gIAIZ8CQADxAgAhoAIBAPACACEBAAAAAQAgGQEAAIMDACAEAACEAwAgCQAAhQMAIAwAAIYDACANAACGAwAgDgAAhwMAIA8AAIgDACDYAQAAggMAMNkBAAADABDaAQAAggMAMOABQADIAgAh7gEBAPACACGFAkAAyAIAIYYCAQDwAgAhjwIBAMcCACGSAgEAxwIAIZMCAQDHAgAhlQJAAPECACGWAgEA8AIAIZsCAQDwAgAhnAIBAMcCACGdAiAA3gIAIZ4CIADeAgAhnwJAAPECACGgAgEA8AIAIQEAAAADACAOAQAArAQAIAQAAK8EACAJAACwBAAgDAAAsQQAIA0AALEEACAOAACyBAAgDwAAswQAIO4BAAC6AwAghgIAALoDACCVAgAAugMAIJYCAAC6AwAgmwIAALoDACCfAgAAugMAIKACAAC6AwAgAwAAAAMAIAIAAAUAMAMAAAEAIBAFAAD3AgAgBwAAgQMAINgBAACAAwAw2QEAAAcAENoBAACAAwAw4AFAAMgCACHxAQEAxwIAIYUCQADIAgAhjwIBAMcCACGQAgEAxwIAIZECAQDHAgAhkgIBAMcCACGTAgEAxwIAIZQCAQDwAgAhlQJAAPECACGWAgEA8AIAIQUFAACsBAAgBwAArgQAIJQCAAC6AwAglQIAALoDACCWAgAAugMAIBAFAAD3AgAgBwAAgQMAINgBAACAAwAw2QEAAAcAENoBAACAAwAw4AFAAMgCACHxAQEAxwIAIYUCQADIAgAhjwIBAAAAAZACAQDHAgAhkQIBAMcCACGSAgEAxwIAIZMCAQDHAgAhlAIBAPACACGVAkAA8QIAIZYCAQDwAgAhAwAAAAcAIAIAAAgAMAMAAAkAIAkGAAD_AgAg2AEAAP0CADDZAQAACwAQ2gEAAP0CADDgAUAAyAIAIe8BAQDHAgAhhQJAAMgCACGMAgEAxwIAIY4CAAD-Ao4CIgEGAACtBAAgCgYAAP8CACDYAQAA_QIAMNkBAAALABDaAQAA_QIAMOABQADIAgAh7wEBAMcCACGFAkAAyAIAIYwCAQDHAgAhjgIAAP4CjgIiowIAAPwCACADAAAACwAgAgAADAAwAwAADQAgAQAAAAsAIAgKAAD3AgAgCwAA9wIAINgBAAD7AgAw2QEAABAAENoBAAD7AgAwiQIBAMcCACGKAgEAxwIAIYsCAgDWAgAhAgoAAKwEACALAACsBAAgCQoAAPcCACALAAD3AgAg2AEAAPsCADDZAQAAEAAQ2gEAAPsCADCJAgEAxwIAIYoCAQDHAgAhiwICANYCACGiAgAA-gIAIAMAAAAQACACAAARADADAAASACADAAAAEAAgAgAAEQAwAwAAEgAgCAUAAPcCACDYAQAA-QIAMNkBAAAVABDaAQAA-QIAMOABQADIAgAh7wEBAMcCACHxAQEAxwIAIYcCIADeAgAhAQUAAKwEACAJBQAA9wIAINgBAAD5AgAw2QEAABUAENoBAAD5AgAw4AFAAMgCACHvAQEAxwIAIfEBAQDHAgAhhwIgAN4CACGhAgAA-AIAIAMAAAAVACACAAAWADADAAAXACAIBQAA9wIAINgBAAD2AgAw2QEAABkAENoBAAD2AgAw7wEBAMcCACHxAQEAxwIAIYQCQADIAgAhhQJAAMgCACEBBQAArAQAIAkFAAD3AgAg2AEAAPYCADDZAQAAGQAQ2gEAAPYCADDvAQEAxwIAIfEBAQDHAgAhhAJAAMgCACGFAkAAyAIAIaECAAD1AgAgAwAAABkAIAIAABoAMAMAABsAIAEAAAADACABAAAABwAgAQAAABAAIAEAAAAQACABAAAAFQAgAQAAABkAIAEAAAABACADAAAAAwAgAgAABQAwAwAAAQAgAwAAAAMAIAIAAAUAMAMAAAEAIAMAAAADACACAAAFADADAAABACAWAQAAqwQAIAQAAKUEACAJAACmBAAgDAAApwQAIA0AAKgEACAOAACpBAAgDwAAqgQAIOABQAAAAAHuAQEAAAABhQJAAAAAAYYCAQAAAAGPAgEAAAABkgIBAAAAAZMCAQAAAAGVAkAAAAABlgIBAAAAAZsCAQAAAAGcAgEAAAABnQIgAAAAAZ4CIAAAAAGfAkAAAAABoAIBAAAAAQEVAAAnACAP4AFAAAAAAe4BAQAAAAGFAkAAAAABhgIBAAAAAY8CAQAAAAGSAgEAAAABkwIBAAAAAZUCQAAAAAGWAgEAAAABmwIBAAAAAZwCAQAAAAGdAiAAAAABngIgAAAAAZ8CQAAAAAGgAgEAAAABARUAACkAMAEVAAApADABAAAAAwAgFgEAANkDACAEAADaAwAgCQAA2wMAIAwAANwDACANAADdAwAgDgAA3gMAIA8AAN8DACDgAUAAjQMAIe4BAQC-AwAhhQJAAI0DACGGAgEAvgMAIY8CAQCMAwAhkgIBAIwDACGTAgEAjAMAIZUCQAC_AwAhlgIBAL4DACGbAgEAvgMAIZwCAQCMAwAhnQIgAKUDACGeAiAApQMAIZ8CQAC_AwAhoAIBAL4DACECAAAAAQAgFQAALQAgD-ABQACNAwAh7gEBAL4DACGFAkAAjQMAIYYCAQC-AwAhjwIBAIwDACGSAgEAjAMAIZMCAQCMAwAhlQJAAL8DACGWAgEAvgMAIZsCAQC-AwAhnAIBAIwDACGdAiAApQMAIZ4CIAClAwAhnwJAAL8DACGgAgEAvgMAIQIAAAADACAVAAAvACACAAAAAwAgFQAALwAgAQAAAAMAIAMAAAABACAcAAAnACAdAAAtACABAAAAAQAgAQAAAAMAIAoIAADWAwAgIgAA2AMAICMAANcDACDuAQAAugMAIIYCAAC6AwAglQIAALoDACCWAgAAugMAIJsCAAC6AwAgnwIAALoDACCgAgAAugMAIBLYAQAA9AIAMNkBAAA3ABDaAQAA9AIAMOABQADAAgAh7gEBAOcCACGFAkAAwAIAIYYCAQDnAgAhjwIBAL8CACGSAgEAvwIAIZMCAQC_AgAhlQJAAOgCACGWAgEA5wIAIZsCAQDnAgAhnAIBAL8CACGdAiAA2gIAIZ4CIADaAgAhnwJAAOgCACGgAgEA5wIAIQMAAAADACACAAA2ADAhAAA3ACADAAAAAwAgAgAABQAwAwAAAQAgCdgBAADzAgAw2QEAAD0AENoBAADzAgAw4AFAAMgCACHvAQEAxwIAIY8CAQAAAAGYAgEA8AIAIZkCQADxAgAhmgIBAPACACEBAAAAOgAgAQAAADoAIAnYAQAA8wIAMNkBAAA9ABDaAQAA8wIAMOABQADIAgAh7wEBAMcCACGPAgEAxwIAIZgCAQDwAgAhmQJAAPECACGaAgEA8AIAIQOYAgAAugMAIJkCAAC6AwAgmgIAALoDACADAAAAPQAgAgAAPgAwAwAAOgAgAwAAAD0AIAIAAD4AMAMAADoAIAMAAAA9ACACAAA-ADADAAA6ACAG4AFAAAAAAe8BAQAAAAGPAgEAAAABmAIBAAAAAZkCQAAAAAGaAgEAAAABARUAAEIAIAbgAUAAAAAB7wEBAAAAAY8CAQAAAAGYAgEAAAABmQJAAAAAAZoCAQAAAAEBFQAARAAwARUAAEQAMAbgAUAAjQMAIe8BAQCMAwAhjwIBAIwDACGYAgEAvgMAIZkCQAC_AwAhmgIBAL4DACECAAAAOgAgFQAARwAgBuABQACNAwAh7wEBAIwDACGPAgEAjAMAIZgCAQC-AwAhmQJAAL8DACGaAgEAvgMAIQIAAAA9ACAVAABJACACAAAAPQAgFQAASQAgAwAAADoAIBwAAEIAIB0AAEcAIAEAAAA6ACABAAAAPQAgBggAANMDACAiAADVAwAgIwAA1AMAIJgCAAC6AwAgmQIAALoDACCaAgAAugMAIAnYAQAA8gIAMNkBAABQABDaAQAA8gIAMOABQADAAgAh7wEBAL8CACGPAgEAvwIAIZgCAQDnAgAhmQJAAOgCACGaAgEA5wIAIQMAAAA9ACACAABPADAhAABQACADAAAAPQAgAgAAPgAwAwAAOgAgCdgBAADvAgAw2QEAAFYAENoBAADvAgAw4AFAAMgCACGPAgEAAAABlwIBAMcCACGYAgEA8AIAIZkCQADxAgAhmgIBAPACACEBAAAAUwAgAQAAAFMAIAnYAQAA7wIAMNkBAABWABDaAQAA7wIAMOABQADIAgAhjwIBAMcCACGXAgEAxwIAIZgCAQDwAgAhmQJAAPECACGaAgEA8AIAIQOYAgAAugMAIJkCAAC6AwAgmgIAALoDACADAAAAVgAgAgAAVwAwAwAAUwAgAwAAAFYAIAIAAFcAMAMAAFMAIAMAAABWACACAABXADADAABTACAG4AFAAAAAAY8CAQAAAAGXAgEAAAABmAIBAAAAAZkCQAAAAAGaAgEAAAABARUAAFsAIAbgAUAAAAABjwIBAAAAAZcCAQAAAAGYAgEAAAABmQJAAAAAAZoCAQAAAAEBFQAAXQAwARUAAF0AMAbgAUAAjQMAIY8CAQCMAwAhlwIBAIwDACGYAgEAvgMAIZkCQAC_AwAhmgIBAL4DACECAAAAUwAgFQAAYAAgBuABQACNAwAhjwIBAIwDACGXAgEAjAMAIZgCAQC-AwAhmQJAAL8DACGaAgEAvgMAIQIAAABWACAVAABiACACAAAAVgAgFQAAYgAgAwAAAFMAIBwAAFsAIB0AAGAAIAEAAABTACABAAAAVgAgBggAANADACAiAADSAwAgIwAA0QMAIJgCAAC6AwAgmQIAALoDACCaAgAAugMAIAnYAQAA7gIAMNkBAABpABDaAQAA7gIAMOABQADAAgAhjwIBAL8CACGXAgEAvwIAIZgCAQDnAgAhmQJAAOgCACGaAgEA5wIAIQMAAABWACACAABoADAhAABpACADAAAAVgAgAgAAVwAwAwAAUwAgAQAAAAkAIAEAAAAJACADAAAABwAgAgAACAAwAwAACQAgAwAAAAcAIAIAAAgAMAMAAAkAIAMAAAAHACACAAAIADADAAAJACANBQAAzgMAIAcAAM8DACDgAUAAAAAB8QEBAAAAAYUCQAAAAAGPAgEAAAABkAIBAAAAAZECAQAAAAGSAgEAAAABkwIBAAAAAZQCAQAAAAGVAkAAAAABlgIBAAAAAQEVAABxACAL4AFAAAAAAfEBAQAAAAGFAkAAAAABjwIBAAAAAZACAQAAAAGRAgEAAAABkgIBAAAAAZMCAQAAAAGUAgEAAAABlQJAAAAAAZYCAQAAAAEBFQAAcwAwARUAAHMAMA0FAADAAwAgBwAAwQMAIOABQACNAwAh8QEBAIwDACGFAkAAjQMAIY8CAQCMAwAhkAIBAIwDACGRAgEAjAMAIZICAQCMAwAhkwIBAIwDACGUAgEAvgMAIZUCQAC_AwAhlgIBAL4DACECAAAACQAgFQAAdgAgC-ABQACNAwAh8QEBAIwDACGFAkAAjQMAIY8CAQCMAwAhkAIBAIwDACGRAgEAjAMAIZICAQCMAwAhkwIBAIwDACGUAgEAvgMAIZUCQAC_AwAhlgIBAL4DACECAAAABwAgFQAAeAAgAgAAAAcAIBUAAHgAIAMAAAAJACAcAABxACAdAAB2ACABAAAACQAgAQAAAAcAIAYIAAC7AwAgIgAAvQMAICMAALwDACCUAgAAugMAIJUCAAC6AwAglgIAALoDACAO2AEAAOYCADDZAQAAfwAQ2gEAAOYCADDgAUAAwAIAIfEBAQC_AgAhhQJAAMACACGPAgEAvwIAIZACAQC_AgAhkQIBAL8CACGSAgEAvwIAIZMCAQC_AgAhlAIBAOcCACGVAkAA6AIAIZYCAQDnAgAhAwAAAAcAIAIAAH4AMCEAAH8AIAMAAAAHACACAAAIADADAAAJACABAAAADQAgAQAAAA0AIAMAAAALACACAAAMADADAAANACADAAAACwAgAgAADAAwAwAADQAgAwAAAAsAIAIAAAwAMAMAAA0AIAYGAAC5AwAg4AFAAAAAAe8BAQAAAAGFAkAAAAABjAIBAAAAAY4CAAAAjgICARUAAIcBACAF4AFAAAAAAe8BAQAAAAGFAkAAAAABjAIBAAAAAY4CAAAAjgICARUAAIkBADABFQAAiQEAMAYGAAC4AwAg4AFAAI0DACHvAQEAjAMAIYUCQACNAwAhjAIBAIwDACGOAgAAtwOOAiICAAAADQAgFQAAjAEAIAXgAUAAjQMAIe8BAQCMAwAhhQJAAI0DACGMAgEAjAMAIY4CAAC3A44CIgIAAAALACAVAACOAQAgAgAAAAsAIBUAAI4BACADAAAADQAgHAAAhwEAIB0AAIwBACABAAAADQAgAQAAAAsAIAMIAAC0AwAgIgAAtgMAICMAALUDACAI2AEAAOICADDZAQAAlQEAENoBAADiAgAw4AFAAMACACHvAQEAvwIAIYUCQADAAgAhjAIBAL8CACGOAgAA4wKOAiIDAAAACwAgAgAAlAEAMCEAAJUBACADAAAACwAgAgAADAAwAwAADQAgAQAAABIAIAEAAAASACADAAAAEAAgAgAAEQAwAwAAEgAgAwAAABAAIAIAABEAMAMAABIAIAMAAAAQACACAAARADADAAASACAFCgAAsgMAIAsAALMDACCJAgEAAAABigIBAAAAAYsCAgAAAAEBFQAAnQEAIAOJAgEAAAABigIBAAAAAYsCAgAAAAEBFQAAnwEAMAEVAACfAQAwBQoAALADACALAACxAwAgiQIBAIwDACGKAgEAjAMAIYsCAgCWAwAhAgAAABIAIBUAAKIBACADiQIBAIwDACGKAgEAjAMAIYsCAgCWAwAhAgAAABAAIBUAAKQBACACAAAAEAAgFQAApAEAIAMAAAASACAcAACdAQAgHQAAogEAIAEAAAASACABAAAAEAAgBQgAAKsDACAiAACuAwAgIwAArQMAIHQAAKwDACB1AACvAwAgBtgBAADhAgAw2QEAAKsBABDaAQAA4QIAMIkCAQC_AgAhigIBAL8CACGLAgIAzwIAIQMAAAAQACACAACqAQAwIQAAqwEAIAMAAAAQACACAAARADADAAASACABAAAAFwAgAQAAABcAIAMAAAAVACACAAAWADADAAAXACADAAAAFQAgAgAAFgAwAwAAFwAgAwAAABUAIAIAABYAMAMAABcAIAUFAACqAwAg4AFAAAAAAe8BAQAAAAHxAQEAAAABhwIgAAAAAQEVAACzAQAgBOABQAAAAAHvAQEAAAAB8QEBAAAAAYcCIAAAAAEBFQAAtQEAMAEVAAC1AQAwBQUAAKkDACDgAUAAjQMAIe8BAQCMAwAh8QEBAIwDACGHAiAApQMAIQIAAAAXACAVAAC4AQAgBOABQACNAwAh7wEBAIwDACHxAQEAjAMAIYcCIAClAwAhAgAAABUAIBUAALoBACACAAAAFQAgFQAAugEAIAMAAAAXACAcAACzAQAgHQAAuAEAIAEAAAAXACABAAAAFQAgAwgAAKYDACAiAACoAwAgIwAApwMAIAfYAQAA4AIAMNkBAADBAQAQ2gEAAOACADDgAUAAwAIAIe8BAQC_AgAh8QEBAL8CACGHAiAA2gIAIQMAAAAVACACAADAAQAwIQAAwQEAIAMAAAAVACACAAAWADADAAAXACAJ2AEAAN0CADDZAQAAxwEAENoBAADdAgAw4AFAAMgCACHvAQEAxwIAIYUCQADIAgAhhgIBAMcCACGHAiAA3gIAIYgCAADfAgAgAQAAAMQBACABAAAAxAEAIAjYAQAA3QIAMNkBAADHAQAQ2gEAAN0CADDgAUAAyAIAIe8BAQDHAgAhhQJAAMgCACGGAgEAxwIAIYcCIADeAgAhAAMAAADHAQAgAgAAyAEAMAMAAMQBACADAAAAxwEAIAIAAMgBADADAADEAQAgAwAAAMcBACACAADIAQAwAwAAxAEAIAXgAUAAAAAB7wEBAAAAAYUCQAAAAAGGAgEAAAABhwIgAAAAAQEVAADMAQAgBeABQAAAAAHvAQEAAAABhQJAAAAAAYYCAQAAAAGHAiAAAAABARUAAM4BADABFQAAzgEAMAXgAUAAjQMAIe8BAQCMAwAhhQJAAI0DACGGAgEAjAMAIYcCIAClAwAhAgAAAMQBACAVAADRAQAgBeABQACNAwAh7wEBAIwDACGFAkAAjQMAIYYCAQCMAwAhhwIgAKUDACECAAAAxwEAIBUAANMBACACAAAAxwEAIBUAANMBACADAAAAxAEAIBwAAMwBACAdAADRAQAgAQAAAMQBACABAAAAxwEAIAMIAACiAwAgIgAApAMAICMAAKMDACAI2AEAANkCADDZAQAA2gEAENoBAADZAgAw4AFAAMACACHvAQEAvwIAIYUCQADAAgAhhgIBAL8CACGHAiAA2gIAIQMAAADHAQAgAgAA2QEAMCEAANoBACADAAAAxwEAIAIAAMgBADADAADEAQAgAQAAABsAIAEAAAAbACADAAAAGQAgAgAAGgAwAwAAGwAgAwAAABkAIAIAABoAMAMAABsAIAMAAAAZACACAAAaADADAAAbACAFBQAAoQMAIO8BAQAAAAHxAQEAAAABhAJAAAAAAYUCQAAAAAEBFQAA4gEAIATvAQEAAAAB8QEBAAAAAYQCQAAAAAGFAkAAAAABARUAAOQBADABFQAA5AEAMAUFAACgAwAg7wEBAIwDACHxAQEAjAMAIYQCQACNAwAhhQJAAI0DACECAAAAGwAgFQAA5wEAIATvAQEAjAMAIfEBAQCMAwAhhAJAAI0DACGFAkAAjQMAIQIAAAAZACAVAADpAQAgAgAAABkAIBUAAOkBACADAAAAGwAgHAAA4gEAIB0AAOcBACABAAAAGwAgAQAAABkAIAMIAACdAwAgIgAAnwMAICMAAJ4DACAH2AEAANgCADDZAQAA8AEAENoBAADYAgAw7wEBAL8CACHxAQEAvwIAIYQCQADAAgAhhQJAAMACACEDAAAAGQAgAgAA7wEAMCEAAPABACADAAAAGQAgAgAAGgAwAwAAGwAgDdgBAADVAgAw2QEAAPYBABDaAQAA1QIAMPEBAQAAAAHyAQEAxwIAIfMBAQDHAgAh9AECANYCACH1AQAA0AIAIPYBAADQAgAg9wEAANACACD4AQIAAAAB-QEBAMcCACH6AQAA1wIAIAEAAADzAQAgAQAAAPMBACAN2AEAANUCADDZAQAA9gEAENoBAADVAgAw8QEBAMcCACHyAQEAxwIAIfMBAQDHAgAh9AECANYCACH1AQAA0AIAIPYBAADQAgAg9wEAANACACD4AQIA1gIAIfkBAQDHAgAh-gEAANcCACAAAwAAAPYBACACAAD3AQAwAwAA8wEAIAMAAAD2AQAgAgAA9wEAMAMAAPMBACADAAAA9gEAIAIAAPcBADADAADzAQAgCvEBAQAAAAHyAQEAAAAB8wEBAAAAAfQBAgAAAAH1AQAAmgMAIPYBAACbAwAg9wEAAJwDACD4AQIAAAAB-QEBAAAAAfoBgAAAAAEBFQAA-wEAIArxAQEAAAAB8gEBAAAAAfMBAQAAAAH0AQIAAAAB9QEAAJoDACD2AQAAmwMAIPcBAACcAwAg-AECAAAAAfkBAQAAAAH6AYAAAAABARUAAP0BADABFQAA_QEAMArxAQEAjAMAIfIBAQCMAwAh8wEBAIwDACH0AQIAlgMAIfUBAACXAwAg9gEAAJgDACD3AQAAmQMAIPgBAgCWAwAh-QEBAIwDACH6AYAAAAABAgAAAPMBACAVAACAAgAgCvEBAQCMAwAh8gEBAIwDACHzAQEAjAMAIfQBAgCWAwAh9QEAAJcDACD2AQAAmAMAIPcBAACZAwAg-AECAJYDACH5AQEAjAMAIfoBgAAAAAECAAAA9gEAIBUAAIICACACAAAA9gEAIBUAAIICACADAAAA8wEAIBwAAPsBACAdAACAAgAgAQAAAPMBACABAAAA9gEAIAUIAACRAwAgIgAAlAMAICMAAJMDACB0AACSAwAgdQAAlQMAIA3YAQAAzgIAMNkBAACJAgAQ2gEAAM4CADDxAQEAvwIAIfIBAQC_AgAh8wEBAL8CACH0AQIAzwIAIfUBAADQAgAg9gEAANACACD3AQAA0AIAIPgBAgDPAgAh-QEBAL8CACH6AQAA0QIAIAMAAAD2AQAgAgAAiAIAMCEAAIkCACADAAAA9gEAIAIAAPcBADADAADzAQAgBtgBAADMAgAw2QEAAI8CABDaAQAAzAIAMO4BAQDHAgAh7wEBAMcCACHwAQAAzQIAIAEAAACMAgAgAQAAAIwCACAF2AEAAMwCADDZAQAAjwIAENoBAADMAgAw7gEBAMcCACHvAQEAxwIAIQADAAAAjwIAIAIAAJACADADAACMAgAgAwAAAI8CACACAACQAgAwAwAAjAIAIAMAAACPAgAgAgAAkAIAMAMAAIwCACAC7gEBAAAAAe8BAQAAAAEBFQAAlAIAIALuAQEAAAAB7wEBAAAAAQEVAACWAgAwARUAAJYCADAC7gEBAIwDACHvAQEAjAMAIQIAAACMAgAgFQAAmQIAIALuAQEAjAMAIe8BAQCMAwAhAgAAAI8CACAVAACbAgAgAgAAAI8CACAVAACbAgAgAwAAAIwCACAcAACUAgAgHQAAmQIAIAEAAACMAgAgAQAAAI8CACADCAAAjgMAICIAAJADACAjAACPAwAgBdgBAADLAgAw2QEAAKICABDaAQAAywIAMO4BAQC_AgAh7wEBAL8CACEDAAAAjwIAIAIAAKECADAhAACiAgAgAwAAAI8CACACAACQAgAwAwAAjAIAIAvYAQAAxgIAMNkBAACoAgAQ2gEAAMYCADDbAQEAxwIAIdwBAQDHAgAh3QEBAMcCACHeAQEAxwIAId8BAQDHAgAh4AFAAMgCACHsAQAAyQIAIO0BAADKAgAgAQAAAKUCACABAAAApQIAIAnYAQAAxgIAMNkBAACoAgAQ2gEAAMYCADDbAQEAxwIAIdwBAQDHAgAh3QEBAMcCACHeAQEAxwIAId8BAQDHAgAh4AFAAMgCACEAAwAAAKgCACACAACpAgAwAwAApQIAIAMAAACoAgAgAgAAqQIAMAMAAKUCACADAAAAqAIAIAIAAKkCADADAAClAgAgBtsBAQAAAAHcAQEAAAAB3QEBAAAAAd4BAQAAAAHfAQEAAAAB4AFAAAAAAQEVAACtAgAgBtsBAQAAAAHcAQEAAAAB3QEBAAAAAd4BAQAAAAHfAQEAAAAB4AFAAAAAAQEVAACvAgAwARUAAK8CADAG2wEBAIwDACHcAQEAjAMAId0BAQCMAwAh3gEBAIwDACHfAQEAjAMAIeABQACNAwAhAgAAAKUCACAVAACyAgAgBtsBAQCMAwAh3AEBAIwDACHdAQEAjAMAId4BAQCMAwAh3wEBAIwDACHgAUAAjQMAIQIAAACoAgAgFQAAtAIAIAIAAACoAgAgFQAAtAIAIAMAAAClAgAgHAAArQIAIB0AALICACABAAAApQIAIAEAAACoAgAgAwgAAIkDACAiAACLAwAgIwAAigMAIAnYAQAAvgIAMNkBAAC7AgAQ2gEAAL4CADDbAQEAvwIAIdwBAQC_AgAh3QEBAL8CACHeAQEAvwIAId8BAQC_AgAh4AFAAMACACEDAAAAqAIAIAIAALoCADAhAAC7AgAgAwAAAKgCACACAACpAgAwAwAApQIAIAnYAQAAvgIAMNkBAAC7AgAQ2gEAAL4CADDbAQEAvwIAIdwBAQC_AgAh3QEBAL8CACHeAQEAvwIAId8BAQC_AgAh4AFAAMACACEOCAAAwgIAICIAAMUCACAjAADFAgAg4QEBAAAAAeIBAQAAAATjAQEAAAAE5AEBAAAAAeUBAQAAAAHmAQEAAAAB5wEBAAAAAegBAQDEAgAh6QEBAAAAAeoBAQAAAAHrAQEAAAABCwgAAMICACAiAADDAgAgIwAAwwIAIOEBQAAAAAHiAUAAAAAE4wFAAAAABOQBQAAAAAHlAUAAAAAB5gFAAAAAAecBQAAAAAHoAUAAwQIAIQsIAADCAgAgIgAAwwIAICMAAMMCACDhAUAAAAAB4gFAAAAABOMBQAAAAATkAUAAAAAB5QFAAAAAAeYBQAAAAAHnAUAAAAAB6AFAAMECACEI4QECAAAAAeIBAgAAAATjAQIAAAAE5AECAAAAAeUBAgAAAAHmAQIAAAAB5wECAAAAAegBAgDCAgAhCOEBQAAAAAHiAUAAAAAE4wFAAAAABOQBQAAAAAHlAUAAAAAB5gFAAAAAAecBQAAAAAHoAUAAwwIAIQ4IAADCAgAgIgAAxQIAICMAAMUCACDhAQEAAAAB4gEBAAAABOMBAQAAAATkAQEAAAAB5QEBAAAAAeYBAQAAAAHnAQEAAAAB6AEBAMQCACHpAQEAAAAB6gEBAAAAAesBAQAAAAEL4QEBAAAAAeIBAQAAAATjAQEAAAAE5AEBAAAAAeUBAQAAAAHmAQEAAAAB5wEBAAAAAegBAQDFAgAh6QEBAAAAAeoBAQAAAAHrAQEAAAABCdgBAADGAgAw2QEAAKgCABDaAQAAxgIAMNsBAQDHAgAh3AEBAMcCACHdAQEAxwIAId4BAQDHAgAh3wEBAMcCACHgAUAAyAIAIQvhAQEAAAAB4gEBAAAABOMBAQAAAATkAQEAAAAB5QEBAAAAAeYBAQAAAAHnAQEAAAAB6AEBAMUCACHpAQEAAAAB6gEBAAAAAesBAQAAAAEI4QFAAAAAAeIBQAAAAATjAUAAAAAE5AFAAAAAAeUBQAAAAAHmAUAAAAAB5wFAAAAAAegBQADDAgAhAtsBAQAAAAHdAQEAAAABAtsBAQAAAAHcAQEAAAABBdgBAADLAgAw2QEAAKICABDaAQAAywIAMO4BAQC_AgAh7wEBAL8CACEF2AEAAMwCADDZAQAAjwIAENoBAADMAgAw7gEBAMcCACHvAQEAxwIAIQLuAQEAAAAB7wEBAAAAAQ3YAQAAzgIAMNkBAACJAgAQ2gEAAM4CADDxAQEAvwIAIfIBAQC_AgAh8wEBAL8CACH0AQIAzwIAIfUBAADQAgAg9gEAANACACD3AQAA0AIAIPgBAgDPAgAh-QEBAL8CACH6AQAA0QIAIA0IAADCAgAgIgAAwgIAICMAAMICACB0AADUAgAgdQAAwgIAIOEBAgAAAAHiAQIAAAAE4wECAAAABOQBAgAAAAHlAQIAAAAB5gECAAAAAecBAgAAAAHoAQIA0wIAIQThAQEAAAAFgQIBAAAAAYICAQAAAASDAgEAAAAEDwgAAMICACAiAADSAgAgIwAA0gIAIOEBgAAAAAHkAYAAAAAB5QGAAAAAAeYBgAAAAAHnAYAAAAAB6AGAAAAAAfsBAQAAAAH8AQEAAAAB_QEBAAAAAf4BgAAAAAH_AYAAAAABgAKAAAAAAQzhAYAAAAAB5AGAAAAAAeUBgAAAAAHmAYAAAAAB5wGAAAAAAegBgAAAAAH7AQEAAAAB_AEBAAAAAf0BAQAAAAH-AYAAAAAB_wGAAAAAAYACgAAAAAENCAAAwgIAICIAAMICACAjAADCAgAgdAAA1AIAIHUAAMICACDhAQIAAAAB4gECAAAABOMBAgAAAATkAQIAAAAB5QECAAAAAeYBAgAAAAHnAQIAAAAB6AECANMCACEI4QEIAAAAAeIBCAAAAATjAQgAAAAE5AEIAAAAAeUBCAAAAAHmAQgAAAAB5wEIAAAAAegBCADUAgAhDdgBAADVAgAw2QEAAPYBABDaAQAA1QIAMPEBAQDHAgAh8gEBAMcCACHzAQEAxwIAIfQBAgDWAgAh9QEAANACACD2AQAA0AIAIPcBAADQAgAg-AECANYCACH5AQEAxwIAIfoBAADXAgAgCOEBAgAAAAHiAQIAAAAE4wECAAAABOQBAgAAAAHlAQIAAAAB5gECAAAAAecBAgAAAAHoAQIAwgIAIQzhAYAAAAAB5AGAAAAAAeUBgAAAAAHmAYAAAAAB5wGAAAAAAegBgAAAAAH7AQEAAAAB_AEBAAAAAf0BAQAAAAH-AYAAAAAB_wGAAAAAAYACgAAAAAEH2AEAANgCADDZAQAA8AEAENoBAADYAgAw7wEBAL8CACHxAQEAvwIAIYQCQADAAgAhhQJAAMACACEI2AEAANkCADDZAQAA2gEAENoBAADZAgAw4AFAAMACACHvAQEAvwIAIYUCQADAAgAhhgIBAL8CACGHAiAA2gIAIQUIAADCAgAgIgAA3AIAICMAANwCACDhASAAAAAB6AEgANsCACEFCAAAwgIAICIAANwCACAjAADcAgAg4QEgAAAAAegBIADbAgAhAuEBIAAAAAHoASAA3AIAIQjYAQAA3QIAMNkBAADHAQAQ2gEAAN0CADDgAUAAyAIAIe8BAQDHAgAhhQJAAMgCACGGAgEAxwIAIYcCIADeAgAhAuEBIAAAAAHoASAA3AIAIQLvAQEAAAABhgIBAAAAAQfYAQAA4AIAMNkBAADBAQAQ2gEAAOACADDgAUAAwAIAIe8BAQC_AgAh8QEBAL8CACGHAiAA2gIAIQbYAQAA4QIAMNkBAACrAQAQ2gEAAOECADCJAgEAvwIAIYoCAQC_AgAhiwICAM8CACEI2AEAAOICADDZAQAAlQEAENoBAADiAgAw4AFAAMACACHvAQEAvwIAIYUCQADAAgAhjAIBAL8CACGOAgAA4wKOAiIHCAAAwgIAICIAAOUCACAjAADlAgAg4QEAAACOAgLiAQAAAI4CCOMBAAAAjgII6AEAAOQCjgIiBwgAAMICACAiAADlAgAgIwAA5QIAIOEBAAAAjgIC4gEAAACOAgjjAQAAAI4CCOgBAADkAo4CIgThAQAAAI4CAuIBAAAAjgII4wEAAACOAgjoAQAA5QKOAiIO2AEAAOYCADDZAQAAfwAQ2gEAAOYCADDgAUAAwAIAIfEBAQC_AgAhhQJAAMACACGPAgEAvwIAIZACAQC_AgAhkQIBAL8CACGSAgEAvwIAIZMCAQC_AgAhlAIBAOcCACGVAkAA6AIAIZYCAQDnAgAhDggAAOoCACAiAADtAgAgIwAA7QIAIOEBAQAAAAHiAQEAAAAF4wEBAAAABeQBAQAAAAHlAQEAAAAB5gEBAAAAAecBAQAAAAHoAQEA7AIAIekBAQAAAAHqAQEAAAAB6wEBAAAAAQsIAADqAgAgIgAA6wIAICMAAOsCACDhAUAAAAAB4gFAAAAABeMBQAAAAAXkAUAAAAAB5QFAAAAAAeYBQAAAAAHnAUAAAAAB6AFAAOkCACELCAAA6gIAICIAAOsCACAjAADrAgAg4QFAAAAAAeIBQAAAAAXjAUAAAAAF5AFAAAAAAeUBQAAAAAHmAUAAAAAB5wFAAAAAAegBQADpAgAhCOEBAgAAAAHiAQIAAAAF4wECAAAABeQBAgAAAAHlAQIAAAAB5gECAAAAAecBAgAAAAHoAQIA6gIAIQjhAUAAAAAB4gFAAAAABeMBQAAAAAXkAUAAAAAB5QFAAAAAAeYBQAAAAAHnAUAAAAAB6AFAAOsCACEOCAAA6gIAICIAAO0CACAjAADtAgAg4QEBAAAAAeIBAQAAAAXjAQEAAAAF5AEBAAAAAeUBAQAAAAHmAQEAAAAB5wEBAAAAAegBAQDsAgAh6QEBAAAAAeoBAQAAAAHrAQEAAAABC-EBAQAAAAHiAQEAAAAF4wEBAAAABeQBAQAAAAHlAQEAAAAB5gEBAAAAAecBAQAAAAHoAQEA7QIAIekBAQAAAAHqAQEAAAAB6wEBAAAAAQnYAQAA7gIAMNkBAABpABDaAQAA7gIAMOABQADAAgAhjwIBAL8CACGXAgEAvwIAIZgCAQDnAgAhmQJAAOgCACGaAgEA5wIAIQnYAQAA7wIAMNkBAABWABDaAQAA7wIAMOABQADIAgAhjwIBAMcCACGXAgEAxwIAIZgCAQDwAgAhmQJAAPECACGaAgEA8AIAIQvhAQEAAAAB4gEBAAAABeMBAQAAAAXkAQEAAAAB5QEBAAAAAeYBAQAAAAHnAQEAAAAB6AEBAO0CACHpAQEAAAAB6gEBAAAAAesBAQAAAAEI4QFAAAAAAeIBQAAAAAXjAUAAAAAF5AFAAAAAAeUBQAAAAAHmAUAAAAAB5wFAAAAAAegBQADrAgAhCdgBAADyAgAw2QEAAFAAENoBAADyAgAw4AFAAMACACHvAQEAvwIAIY8CAQC_AgAhmAIBAOcCACGZAkAA6AIAIZoCAQDnAgAhCdgBAADzAgAw2QEAAD0AENoBAADzAgAw4AFAAMgCACHvAQEAxwIAIY8CAQDHAgAhmAIBAPACACGZAkAA8QIAIZoCAQDwAgAhEtgBAAD0AgAw2QEAADcAENoBAAD0AgAw4AFAAMACACHuAQEA5wIAIYUCQADAAgAhhgIBAOcCACGPAgEAvwIAIZICAQC_AgAhkwIBAL8CACGVAkAA6AIAIZYCAQDnAgAhmwIBAOcCACGcAgEAvwIAIZ0CIADaAgAhngIgANoCACGfAkAA6AIAIaACAQDnAgAhAu8BAQAAAAHxAQEAAAABCAUAAPcCACDYAQAA9gIAMNkBAAAZABDaAQAA9gIAMO8BAQDHAgAh8QEBAMcCACGEAkAAyAIAIYUCQADIAgAhGwEAAIMDACAEAACEAwAgCQAAhQMAIAwAAIYDACANAACGAwAgDgAAhwMAIA8AAIgDACDYAQAAggMAMNkBAAADABDaAQAAggMAMOABQADIAgAh7gEBAPACACGFAkAAyAIAIYYCAQDwAgAhjwIBAMcCACGSAgEAxwIAIZMCAQDHAgAhlQJAAPECACGWAgEA8AIAIZsCAQDwAgAhnAIBAMcCACGdAiAA3gIAIZ4CIADeAgAhnwJAAPECACGgAgEA8AIAIacCAAADACCoAgAAAwAgAu8BAQAAAAHxAQEAAAABCAUAAPcCACDYAQAA-QIAMNkBAAAVABDaAQAA-QIAMOABQADIAgAh7wEBAMcCACHxAQEAxwIAIYcCIADeAgAhAokCAQAAAAGKAgEAAAABCAoAAPcCACALAAD3AgAg2AEAAPsCADDZAQAAEAAQ2gEAAPsCADCJAgEAxwIAIYoCAQDHAgAhiwICANYCACEC7wEBAAAAAYwCAQAAAAEJBgAA_wIAINgBAAD9AgAw2QEAAAsAENoBAAD9AgAw4AFAAMgCACHvAQEAxwIAIYUCQADIAgAhjAIBAMcCACGOAgAA_gKOAiIE4QEAAACOAgLiAQAAAI4CCOMBAAAAjgII6AEAAOUCjgIiEgUAAPcCACAHAACBAwAg2AEAAIADADDZAQAABwAQ2gEAAIADADDgAUAAyAIAIfEBAQDHAgAhhQJAAMgCACGPAgEAxwIAIZACAQDHAgAhkQIBAMcCACGSAgEAxwIAIZMCAQDHAgAhlAIBAPACACGVAkAA8QIAIZYCAQDwAgAhpwIAAAcAIKgCAAAHACAQBQAA9wIAIAcAAIEDACDYAQAAgAMAMNkBAAAHABDaAQAAgAMAMOABQADIAgAh8QEBAMcCACGFAkAAyAIAIY8CAQDHAgAhkAIBAMcCACGRAgEAxwIAIZICAQDHAgAhkwIBAMcCACGUAgEA8AIAIZUCQADxAgAhlgIBAPACACEDpAIAAAsAIKUCAAALACCmAgAACwAgGQEAAIMDACAEAACEAwAgCQAAhQMAIAwAAIYDACANAACGAwAgDgAAhwMAIA8AAIgDACDYAQAAggMAMNkBAAADABDaAQAAggMAMOABQADIAgAh7gEBAPACACGFAkAAyAIAIYYCAQDwAgAhjwIBAMcCACGSAgEAxwIAIZMCAQDHAgAhlQJAAPECACGWAgEA8AIAIZsCAQDwAgAhnAIBAMcCACGdAiAA3gIAIZ4CIADeAgAhnwJAAPECACGgAgEA8AIAIRsBAACDAwAgBAAAhAMAIAkAAIUDACAMAACGAwAgDQAAhgMAIA4AAIcDACAPAACIAwAg2AEAAIIDADDZAQAAAwAQ2gEAAIIDADDgAUAAyAIAIe4BAQDwAgAhhQJAAMgCACGGAgEA8AIAIY8CAQDHAgAhkgIBAMcCACGTAgEAxwIAIZUCQADxAgAhlgIBAPACACGbAgEA8AIAIZwCAQDHAgAhnQIgAN4CACGeAiAA3gIAIZ8CQADxAgAhoAIBAPACACGnAgAAAwAgqAIAAAMAIAOkAgAAAwAgpQIAAAMAIKYCAAADACADpAIAAAcAIKUCAAAHACCmAgAABwAgA6QCAAAQACClAgAAEAAgpgIAABAAIAOkAgAAFQAgpQIAABUAIKYCAAAVACADpAIAABkAIKUCAAAZACCmAgAAGQAgAAAAAawCAQAAAAEBrAJAAAAAAQAAAAAAAAAABawCAgAAAAGzAgIAAAABtAICAAAAAbUCAgAAAAG2AgIAAAABAqwCAQAAAASyAgEAAAAFAqwCAQAAAASyAgEAAAAFAqwCAQAAAASyAgEAAAAFAawCAQAAAAQBrAIBAAAABAGsAgEAAAAEAAAABRwAANkEACAdAADcBAAgqQIAANoEACCqAgAA2wQAIK8CAAABACADHAAA2QQAIKkCAADaBAAgrwIAAAEAIAAAAAGsAiAAAAABAAAABRwAANQEACAdAADXBAAgqQIAANUEACCqAgAA1gQAIK8CAAABACADHAAA1AQAIKkCAADVBAAgrwIAAAEAIAAAAAAABRwAAMwEACAdAADSBAAgqQIAAM0EACCqAgAA0QQAIK8CAAABACAFHAAAygQAIB0AAM8EACCpAgAAywQAIKoCAADOBAAgrwIAAAEAIAMcAADMBAAgqQIAAM0EACCvAgAAAQAgAxwAAMoEACCpAgAAywQAIK8CAAABACAAAAABrAIAAACOAgIFHAAAxQQAIB0AAMgEACCpAgAAxgQAIKoCAADHBAAgrwIAAAkAIAMcAADFBAAgqQIAAMYEACCvAgAACQAgAAAAAAGsAgEAAAABAawCQAAAAAEFHAAAvwQAIB0AAMMEACCpAgAAwAQAIKoCAADCBAAgrwIAAAEAIAscAADCAwAwHQAAxwMAMKkCAADDAwAwqgIAAMQDADCrAgAAxQMAIKwCAADGAwAwrQIAAMYDADCuAgAAxgMAMK8CAADGAwAwsAIAAMgDADCxAgAAyQMAMATgAUAAAAAB7wEBAAAAAYUCQAAAAAGOAgAAAI4CAgIAAAANACAcAADNAwAgAwAAAA0AIBwAAM0DACAdAADMAwAgARUAAMEEADAKBgAA_wIAINgBAAD9AgAw2QEAAAsAENoBAAD9AgAw4AFAAMgCACHvAQEAxwIAIYUCQADIAgAhjAIBAMcCACGOAgAA_gKOAiKjAgAA_AIAIAIAAAANACAVAADMAwAgAgAAAMoDACAVAADLAwAgCNgBAADJAwAw2QEAAMoDABDaAQAAyQMAMOABQADIAgAh7wEBAMcCACGFAkAAyAIAIYwCAQDHAgAhjgIAAP4CjgIiCNgBAADJAwAw2QEAAMoDABDaAQAAyQMAMOABQADIAgAh7wEBAMcCACGFAkAAyAIAIYwCAQDHAgAhjgIAAP4CjgIiBOABQACNAwAh7wEBAIwDACGFAkAAjQMAIY4CAAC3A44CIgTgAUAAjQMAIe8BAQCMAwAhhQJAAI0DACGOAgAAtwOOAiIE4AFAAAAAAe8BAQAAAAGFAkAAAAABjgIAAACOAgIDHAAAvwQAIKkCAADABAAgrwIAAAEAIAQcAADCAwAwqQIAAMMDADCrAgAAxQMAIK8CAADGAwAwAAAAAAAAAAAABxwAALQEACAdAAC9BAAgqQIAALUEACCqAgAAvAQAIK0CAAADACCuAgAAAwAgrwIAAAEAIAscAACZBAAwHQAAngQAMKkCAACaBAAwqgIAAJsEADCrAgAAnAQAIKwCAACdBAAwrQIAAJ0EADCuAgAAnQQAMK8CAACdBAAwsAIAAJ8EADCxAgAAoAQAMAscAACNBAAwHQAAkgQAMKkCAACOBAAwqgIAAI8EADCrAgAAkAQAIKwCAACRBAAwrQIAAJEEADCuAgAAkQQAMK8CAACRBAAwsAIAAJMEADCxAgAAlAQAMAscAACEBAAwHQAAiAQAMKkCAACFBAAwqgIAAIYEADCrAgAAhwQAIKwCAAD8AwAwrQIAAPwDADCuAgAA_AMAMK8CAAD8AwAwsAIAAIkEADCxAgAA_wMAMAscAAD4AwAwHQAA_QMAMKkCAAD5AwAwqgIAAPoDADCrAgAA-wMAIKwCAAD8AwAwrQIAAPwDADCuAgAA_AMAMK8CAAD8AwAwsAIAAP4DADCxAgAA_wMAMAscAADsAwAwHQAA8QMAMKkCAADtAwAwqgIAAO4DADCrAgAA7wMAIKwCAADwAwAwrQIAAPADADCuAgAA8AMAMK8CAADwAwAwsAIAAPIDADCxAgAA8wMAMAscAADgAwAwHQAA5QMAMKkCAADhAwAwqgIAAOIDADCrAgAA4wMAIKwCAADkAwAwrQIAAOQDADCuAgAA5AMAMK8CAADkAwAwsAIAAOYDADCxAgAA5wMAMAPvAQEAAAABhAJAAAAAAYUCQAAAAAECAAAAGwAgHAAA6wMAIAMAAAAbACAcAADrAwAgHQAA6gMAIAEVAAC7BAAwCQUAAPcCACDYAQAA9gIAMNkBAAAZABDaAQAA9gIAMO8BAQDHAgAh8QEBAMcCACGEAkAAyAIAIYUCQADIAgAhoQIAAPUCACACAAAAGwAgFQAA6gMAIAIAAADoAwAgFQAA6QMAIAfYAQAA5wMAMNkBAADoAwAQ2gEAAOcDADDvAQEAxwIAIfEBAQDHAgAhhAJAAMgCACGFAkAAyAIAIQfYAQAA5wMAMNkBAADoAwAQ2gEAAOcDADDvAQEAxwIAIfEBAQDHAgAhhAJAAMgCACGFAkAAyAIAIQPvAQEAjAMAIYQCQACNAwAhhQJAAI0DACED7wEBAIwDACGEAkAAjQMAIYUCQACNAwAhA-8BAQAAAAGEAkAAAAABhQJAAAAAAQPgAUAAAAAB7wEBAAAAAYcCIAAAAAECAAAAFwAgHAAA9wMAIAMAAAAXACAcAAD3AwAgHQAA9gMAIAEVAAC6BAAwCQUAAPcCACDYAQAA-QIAMNkBAAAVABDaAQAA-QIAMOABQADIAgAh7wEBAMcCACHxAQEAxwIAIYcCIADeAgAhoQIAAPgCACACAAAAFwAgFQAA9gMAIAIAAAD0AwAgFQAA9QMAIAfYAQAA8wMAMNkBAAD0AwAQ2gEAAPMDADDgAUAAyAIAIe8BAQDHAgAh8QEBAMcCACGHAiAA3gIAIQfYAQAA8wMAMNkBAAD0AwAQ2gEAAPMDADDgAUAAyAIAIe8BAQDHAgAh8QEBAMcCACGHAiAA3gIAIQPgAUAAjQMAIe8BAQCMAwAhhwIgAKUDACED4AFAAI0DACHvAQEAjAMAIYcCIAClAwAhA-ABQAAAAAHvAQEAAAABhwIgAAAAAQMKAACyAwAgiQIBAAAAAYsCAgAAAAECAAAAEgAgHAAAgwQAIAMAAAASACAcAACDBAAgHQAAggQAIAEVAAC5BAAwCQoAAPcCACALAAD3AgAg2AEAAPsCADDZAQAAEAAQ2gEAAPsCADCJAgEAxwIAIYoCAQDHAgAhiwICANYCACGiAgAA-gIAIAIAAAASACAVAACCBAAgAgAAAIAEACAVAACBBAAgBtgBAAD_AwAw2QEAAIAEABDaAQAA_wMAMIkCAQDHAgAhigIBAMcCACGLAgIA1gIAIQbYAQAA_wMAMNkBAACABAAQ2gEAAP8DADCJAgEAxwIAIYoCAQDHAgAhiwICANYCACECiQIBAIwDACGLAgIAlgMAIQMKAACwAwAgiQIBAIwDACGLAgIAlgMAIQMKAACyAwAgiQIBAAAAAYsCAgAAAAEDCwAAswMAIIoCAQAAAAGLAgIAAAABAgAAABIAIBwAAIwEACADAAAAEgAgHAAAjAQAIB0AAIsEACABFQAAuAQAMAIAAAASACAVAACLBAAgAgAAAIAEACAVAACKBAAgAooCAQCMAwAhiwICAJYDACEDCwAAsQMAIIoCAQCMAwAhiwICAJYDACEDCwAAswMAIIoCAQAAAAGLAgIAAAABCwcAAM8DACDgAUAAAAABhQJAAAAAAY8CAQAAAAGQAgEAAAABkQIBAAAAAZICAQAAAAGTAgEAAAABlAIBAAAAAZUCQAAAAAGWAgEAAAABAgAAAAkAIBwAAJgEACADAAAACQAgHAAAmAQAIB0AAJcEACABFQAAtwQAMBAFAAD3AgAgBwAAgQMAINgBAACAAwAw2QEAAAcAENoBAACAAwAw4AFAAMgCACHxAQEAxwIAIYUCQADIAgAhjwIBAAAAAZACAQDHAgAhkQIBAMcCACGSAgEAxwIAIZMCAQDHAgAhlAIBAPACACGVAkAA8QIAIZYCAQDwAgAhAgAAAAkAIBUAAJcEACACAAAAlQQAIBUAAJYEACAO2AEAAJQEADDZAQAAlQQAENoBAACUBAAw4AFAAMgCACHxAQEAxwIAIYUCQADIAgAhjwIBAMcCACGQAgEAxwIAIZECAQDHAgAhkgIBAMcCACGTAgEAxwIAIZQCAQDwAgAhlQJAAPECACGWAgEA8AIAIQ7YAQAAlAQAMNkBAACVBAAQ2gEAAJQEADDgAUAAyAIAIfEBAQDHAgAhhQJAAMgCACGPAgEAxwIAIZACAQDHAgAhkQIBAMcCACGSAgEAxwIAIZMCAQDHAgAhlAIBAPACACGVAkAA8QIAIZYCAQDwAgAhCuABQACNAwAhhQJAAI0DACGPAgEAjAMAIZACAQCMAwAhkQIBAIwDACGSAgEAjAMAIZMCAQCMAwAhlAIBAL4DACGVAkAAvwMAIZYCAQC-AwAhCwcAAMEDACDgAUAAjQMAIYUCQACNAwAhjwIBAIwDACGQAgEAjAMAIZECAQCMAwAhkgIBAIwDACGTAgEAjAMAIZQCAQC-AwAhlQJAAL8DACGWAgEAvgMAIQsHAADPAwAg4AFAAAAAAYUCQAAAAAGPAgEAAAABkAIBAAAAAZECAQAAAAGSAgEAAAABkwIBAAAAAZQCAQAAAAGVAkAAAAABlgIBAAAAARQEAAClBAAgCQAApgQAIAwAAKcEACANAACoBAAgDgAAqQQAIA8AAKoEACDgAUAAAAAB7gEBAAAAAYUCQAAAAAGGAgEAAAABjwIBAAAAAZICAQAAAAGTAgEAAAABlQJAAAAAAZYCAQAAAAGcAgEAAAABnQIgAAAAAZ4CIAAAAAGfAkAAAAABoAIBAAAAAQIAAAABACAcAACkBAAgAwAAAAEAIBwAAKQEACAdAACjBAAgARUAALYEADAZAQAAgwMAIAQAAIQDACAJAACFAwAgDAAAhgMAIA0AAIYDACAOAACHAwAgDwAAiAMAINgBAACCAwAw2QEAAAMAENoBAACCAwAw4AFAAMgCACHuAQEA8AIAIYUCQADIAgAhhgIBAPACACGPAgEAAAABkgIBAMcCACGTAgEAxwIAIZUCQADxAgAhlgIBAPACACGbAgEA8AIAIZwCAQDHAgAhnQIgAN4CACGeAiAA3gIAIZ8CQADxAgAhoAIBAPACACECAAAAAQAgFQAAowQAIAIAAAChBAAgFQAAogQAIBLYAQAAoAQAMNkBAAChBAAQ2gEAAKAEADDgAUAAyAIAIe4BAQDwAgAhhQJAAMgCACGGAgEA8AIAIY8CAQDHAgAhkgIBAMcCACGTAgEAxwIAIZUCQADxAgAhlgIBAPACACGbAgEA8AIAIZwCAQDHAgAhnQIgAN4CACGeAiAA3gIAIZ8CQADxAgAhoAIBAPACACES2AEAAKAEADDZAQAAoQQAENoBAACgBAAw4AFAAMgCACHuAQEA8AIAIYUCQADIAgAhhgIBAPACACGPAgEAxwIAIZICAQDHAgAhkwIBAMcCACGVAkAA8QIAIZYCAQDwAgAhmwIBAPACACGcAgEAxwIAIZ0CIADeAgAhngIgAN4CACGfAkAA8QIAIaACAQDwAgAhDuABQACNAwAh7gEBAL4DACGFAkAAjQMAIYYCAQC-AwAhjwIBAIwDACGSAgEAjAMAIZMCAQCMAwAhlQJAAL8DACGWAgEAvgMAIZwCAQCMAwAhnQIgAKUDACGeAiAApQMAIZ8CQAC_AwAhoAIBAL4DACEUBAAA2gMAIAkAANsDACAMAADcAwAgDQAA3QMAIA4AAN4DACAPAADfAwAg4AFAAI0DACHuAQEAvgMAIYUCQACNAwAhhgIBAL4DACGPAgEAjAMAIZICAQCMAwAhkwIBAIwDACGVAkAAvwMAIZYCAQC-AwAhnAIBAIwDACGdAiAApQMAIZ4CIAClAwAhnwJAAL8DACGgAgEAvgMAIRQEAAClBAAgCQAApgQAIAwAAKcEACANAACoBAAgDgAAqQQAIA8AAKoEACDgAUAAAAAB7gEBAAAAAYUCQAAAAAGGAgEAAAABjwIBAAAAAZICAQAAAAGTAgEAAAABlQJAAAAAAZYCAQAAAAGcAgEAAAABnQIgAAAAAZ4CIAAAAAGfAkAAAAABoAIBAAAAAQQcAACZBAAwqQIAAJoEADCrAgAAnAQAIK8CAACdBAAwBBwAAI0EADCpAgAAjgQAMKsCAACQBAAgrwIAAJEEADAEHAAAhAQAMKkCAACFBAAwqwIAAIcEACCvAgAA_AMAMAQcAAD4AwAwqQIAAPkDADCrAgAA-wMAIK8CAAD8AwAwBBwAAOwDADCpAgAA7QMAMKsCAADvAwAgrwIAAPADADAEHAAA4AMAMKkCAADhAwAwqwIAAOMDACCvAgAA5AMAMAMcAAC0BAAgqQIAALUEACCvAgAAAQAgDgEAAKwEACAEAACvBAAgCQAAsAQAIAwAALEEACANAACxBAAgDgAAsgQAIA8AALMEACDuAQAAugMAIIYCAAC6AwAglQIAALoDACCWAgAAugMAIJsCAAC6AwAgnwIAALoDACCgAgAAugMAIAUFAACsBAAgBwAArgQAIJQCAAC6AwAglQIAALoDACCWAgAAugMAIAAAAAAAABUBAACrBAAgCQAApgQAIAwAAKcEACANAACoBAAgDgAAqQQAIA8AAKoEACDgAUAAAAAB7gEBAAAAAYUCQAAAAAGGAgEAAAABjwIBAAAAAZICAQAAAAGTAgEAAAABlQJAAAAAAZYCAQAAAAGbAgEAAAABnAIBAAAAAZ0CIAAAAAGeAiAAAAABnwJAAAAAAaACAQAAAAECAAAAAQAgHAAAtAQAIA7gAUAAAAAB7gEBAAAAAYUCQAAAAAGGAgEAAAABjwIBAAAAAZICAQAAAAGTAgEAAAABlQJAAAAAAZYCAQAAAAGcAgEAAAABnQIgAAAAAZ4CIAAAAAGfAkAAAAABoAIBAAAAAQrgAUAAAAABhQJAAAAAAY8CAQAAAAGQAgEAAAABkQIBAAAAAZICAQAAAAGTAgEAAAABlAIBAAAAAZUCQAAAAAGWAgEAAAABAooCAQAAAAGLAgIAAAABAokCAQAAAAGLAgIAAAABA-ABQAAAAAHvAQEAAAABhwIgAAAAAQPvAQEAAAABhAJAAAAAAYUCQAAAAAEDAAAAAwAgHAAAtAQAIB0AAL4EACAXAAAAAwAgAQAA2QMAIAkAANsDACAMAADcAwAgDQAA3QMAIA4AAN4DACAPAADfAwAgFQAAvgQAIOABQACNAwAh7gEBAL4DACGFAkAAjQMAIYYCAQC-AwAhjwIBAIwDACGSAgEAjAMAIZMCAQCMAwAhlQJAAL8DACGWAgEAvgMAIZsCAQC-AwAhnAIBAIwDACGdAiAApQMAIZ4CIAClAwAhnwJAAL8DACGgAgEAvgMAIRUBAADZAwAgCQAA2wMAIAwAANwDACANAADdAwAgDgAA3gMAIA8AAN8DACDgAUAAjQMAIe4BAQC-AwAhhQJAAI0DACGGAgEAvgMAIY8CAQCMAwAhkgIBAIwDACGTAgEAjAMAIZUCQAC_AwAhlgIBAL4DACGbAgEAvgMAIZwCAQCMAwAhnQIgAKUDACGeAiAApQMAIZ8CQAC_AwAhoAIBAL4DACEVAQAAqwQAIAQAAKUEACAMAACnBAAgDQAAqAQAIA4AAKkEACAPAACqBAAg4AFAAAAAAe4BAQAAAAGFAkAAAAABhgIBAAAAAY8CAQAAAAGSAgEAAAABkwIBAAAAAZUCQAAAAAGWAgEAAAABmwIBAAAAAZwCAQAAAAGdAiAAAAABngIgAAAAAZ8CQAAAAAGgAgEAAAABAgAAAAEAIBwAAL8EACAE4AFAAAAAAe8BAQAAAAGFAkAAAAABjgIAAACOAgIDAAAAAwAgHAAAvwQAIB0AAMQEACAXAAAAAwAgAQAA2QMAIAQAANoDACAMAADcAwAgDQAA3QMAIA4AAN4DACAPAADfAwAgFQAAxAQAIOABQACNAwAh7gEBAL4DACGFAkAAjQMAIYYCAQC-AwAhjwIBAIwDACGSAgEAjAMAIZMCAQCMAwAhlQJAAL8DACGWAgEAvgMAIZsCAQC-AwAhnAIBAIwDACGdAiAApQMAIZ4CIAClAwAhnwJAAL8DACGgAgEAvgMAIRUBAADZAwAgBAAA2gMAIAwAANwDACANAADdAwAgDgAA3gMAIA8AAN8DACDgAUAAjQMAIe4BAQC-AwAhhQJAAI0DACGGAgEAvgMAIY8CAQCMAwAhkgIBAIwDACGTAgEAjAMAIZUCQAC_AwAhlgIBAL4DACGbAgEAvgMAIZwCAQCMAwAhnQIgAKUDACGeAiAApQMAIZ8CQAC_AwAhoAIBAL4DACEMBQAAzgMAIOABQAAAAAHxAQEAAAABhQJAAAAAAY8CAQAAAAGQAgEAAAABkQIBAAAAAZICAQAAAAGTAgEAAAABlAIBAAAAAZUCQAAAAAGWAgEAAAABAgAAAAkAIBwAAMUEACADAAAABwAgHAAAxQQAIB0AAMkEACAOAAAABwAgBQAAwAMAIBUAAMkEACDgAUAAjQMAIfEBAQCMAwAhhQJAAI0DACGPAgEAjAMAIZACAQCMAwAhkQIBAIwDACGSAgEAjAMAIZMCAQCMAwAhlAIBAL4DACGVAkAAvwMAIZYCAQC-AwAhDAUAAMADACDgAUAAjQMAIfEBAQCMAwAhhQJAAI0DACGPAgEAjAMAIZACAQCMAwAhkQIBAIwDACGSAgEAjAMAIZMCAQCMAwAhlAIBAL4DACGVAkAAvwMAIZYCAQC-AwAhFQEAAKsEACAEAAClBAAgCQAApgQAIAwAAKcEACAOAACpBAAgDwAAqgQAIOABQAAAAAHuAQEAAAABhQJAAAAAAYYCAQAAAAGPAgEAAAABkgIBAAAAAZMCAQAAAAGVAkAAAAABlgIBAAAAAZsCAQAAAAGcAgEAAAABnQIgAAAAAZ4CIAAAAAGfAkAAAAABoAIBAAAAAQIAAAABACAcAADKBAAgFQEAAKsEACAEAAClBAAgCQAApgQAIA0AAKgEACAOAACpBAAgDwAAqgQAIOABQAAAAAHuAQEAAAABhQJAAAAAAYYCAQAAAAGPAgEAAAABkgIBAAAAAZMCAQAAAAGVAkAAAAABlgIBAAAAAZsCAQAAAAGcAgEAAAABnQIgAAAAAZ4CIAAAAAGfAkAAAAABoAIBAAAAAQIAAAABACAcAADMBAAgAwAAAAMAIBwAAMoEACAdAADQBAAgFwAAAAMAIAEAANkDACAEAADaAwAgCQAA2wMAIAwAANwDACAOAADeAwAgDwAA3wMAIBUAANAEACDgAUAAjQMAIe4BAQC-AwAhhQJAAI0DACGGAgEAvgMAIY8CAQCMAwAhkgIBAIwDACGTAgEAjAMAIZUCQAC_AwAhlgIBAL4DACGbAgEAvgMAIZwCAQCMAwAhnQIgAKUDACGeAiAApQMAIZ8CQAC_AwAhoAIBAL4DACEVAQAA2QMAIAQAANoDACAJAADbAwAgDAAA3AMAIA4AAN4DACAPAADfAwAg4AFAAI0DACHuAQEAvgMAIYUCQACNAwAhhgIBAL4DACGPAgEAjAMAIZICAQCMAwAhkwIBAIwDACGVAkAAvwMAIZYCAQC-AwAhmwIBAL4DACGcAgEAjAMAIZ0CIAClAwAhngIgAKUDACGfAkAAvwMAIaACAQC-AwAhAwAAAAMAIBwAAMwEACAdAADTBAAgFwAAAAMAIAEAANkDACAEAADaAwAgCQAA2wMAIA0AAN0DACAOAADeAwAgDwAA3wMAIBUAANMEACDgAUAAjQMAIe4BAQC-AwAhhQJAAI0DACGGAgEAvgMAIY8CAQCMAwAhkgIBAIwDACGTAgEAjAMAIZUCQAC_AwAhlgIBAL4DACGbAgEAvgMAIZwCAQCMAwAhnQIgAKUDACGeAiAApQMAIZ8CQAC_AwAhoAIBAL4DACEVAQAA2QMAIAQAANoDACAJAADbAwAgDQAA3QMAIA4AAN4DACAPAADfAwAg4AFAAI0DACHuAQEAvgMAIYUCQACNAwAhhgIBAL4DACGPAgEAjAMAIZICAQCMAwAhkwIBAIwDACGVAkAAvwMAIZYCAQC-AwAhmwIBAL4DACGcAgEAjAMAIZ0CIAClAwAhngIgAKUDACGfAkAAvwMAIaACAQC-AwAhFQEAAKsEACAEAAClBAAgCQAApgQAIAwAAKcEACANAACoBAAgDwAAqgQAIOABQAAAAAHuAQEAAAABhQJAAAAAAYYCAQAAAAGPAgEAAAABkgIBAAAAAZMCAQAAAAGVAkAAAAABlgIBAAAAAZsCAQAAAAGcAgEAAAABnQIgAAAAAZ4CIAAAAAGfAkAAAAABoAIBAAAAAQIAAAABACAcAADUBAAgAwAAAAMAIBwAANQEACAdAADYBAAgFwAAAAMAIAEAANkDACAEAADaAwAgCQAA2wMAIAwAANwDACANAADdAwAgDwAA3wMAIBUAANgEACDgAUAAjQMAIe4BAQC-AwAhhQJAAI0DACGGAgEAvgMAIY8CAQCMAwAhkgIBAIwDACGTAgEAjAMAIZUCQAC_AwAhlgIBAL4DACGbAgEAvgMAIZwCAQCMAwAhnQIgAKUDACGeAiAApQMAIZ8CQAC_AwAhoAIBAL4DACEVAQAA2QMAIAQAANoDACAJAADbAwAgDAAA3AMAIA0AAN0DACAPAADfAwAg4AFAAI0DACHuAQEAvgMAIYUCQACNAwAhhgIBAL4DACGPAgEAjAMAIZICAQCMAwAhkwIBAIwDACGVAkAAvwMAIZYCAQC-AwAhmwIBAL4DACGcAgEAjAMAIZ0CIAClAwAhngIgAKUDACGfAkAAvwMAIaACAQC-AwAhFQEAAKsEACAEAAClBAAgCQAApgQAIAwAAKcEACANAACoBAAgDgAAqQQAIOABQAAAAAHuAQEAAAABhQJAAAAAAYYCAQAAAAGPAgEAAAABkgIBAAAAAZMCAQAAAAGVAkAAAAABlgIBAAAAAZsCAQAAAAGcAgEAAAABnQIgAAAAAZ4CIAAAAAGfAkAAAAABoAIBAAAAAQIAAAABACAcAADZBAAgAwAAAAMAIBwAANkEACAdAADdBAAgFwAAAAMAIAEAANkDACAEAADaAwAgCQAA2wMAIAwAANwDACANAADdAwAgDgAA3gMAIBUAAN0EACDgAUAAjQMAIe4BAQC-AwAhhQJAAI0DACGGAgEAvgMAIY8CAQCMAwAhkgIBAIwDACGTAgEAjAMAIZUCQAC_AwAhlgIBAL4DACGbAgEAvgMAIZwCAQCMAwAhnQIgAKUDACGeAiAApQMAIZ8CQAC_AwAhoAIBAL4DACEVAQAA2QMAIAQAANoDACAJAADbAwAgDAAA3AMAIA0AAN0DACAOAADeAwAg4AFAAI0DACHuAQEAvgMAIYUCQACNAwAhhgIBAL4DACGPAgEAjAMAIZICAQCMAwAhkwIBAIwDACGVAkAAvwMAIZYCAQC-AwAhmwIBAL4DACGcAgEAjAMAIZ0CIAClAwAhngIgAKUDACGfAkAAvwMAIaACAQC-AwAhCAEEAQQGAQgACAkKAgwTBQ0UBQ4YBg8cBwMFAAEHDgMIAAQBBgACAQcPAAIKAAELAAEBBQABAQUAAQYEHQAJHgAMHwANIAAOIQAPIgAAAQEsAQEBMgEDCAANIgAOIwAPAAAAAwgADSIADiMADwAAAAMIABUiABYjABcAAAADCAAVIgAWIwAXAAAAAwgAHSIAHiMAHwAAAAMIAB0iAB4jAB8BBQABAQUAAQMIACQiACUjACYAAAADCAAkIgAlIwAmAQYAAgEGAAIDCAArIgAsIwAtAAAAAwgAKyIALCMALQIKAAELAAECCgABCwABBQgAMiIANSMANnQAM3UANAAAAAAABQgAMiIANSMANnQAM3UANAEFAAEBBQABAwgAOyIAPCMAPQAAAAMIADsiADwjAD0AAAADCABDIgBEIwBFAAAAAwgAQyIARCMARQEFAAEBBQABAwgASiIASyMATAAAAAMIAEoiAEsjAEwAAAAFCABSIgBVIwBWdABTdQBUAAAAAAAFCABSIgBVIwBWdABTdQBUAAAAAwgAXCIAXSMAXgAAAAMIAFwiAF0jAF4AAAADCABkIgBlIwBmAAAAAwgAZCIAZSMAZhACAREjARIkARMlARQmARYoARcqCRgrChkuARowCRsxCx4zAR80ASA1CSQ4DCU5ECY7ESc8ESg_ESlAESpBEStDESxFCS1GEi5IES9KCTBLEzFMETJNETNOCTRRFDVSGDZUGTdVGThYGTlZGTpaGTtcGTxeCT1fGj5hGT9jCUBkG0FlGUJmGUNnCURqHEVrIEZsAkdtAkhuAklvAkpwAktyAkx0CU11IU53Ak95CVB6IlF7AlJ8AlN9CVSAASNVgQEnVoIBA1eDAQNYhAEDWYUBA1qGAQNbiAEDXIoBCV2LAShejQEDX48BCWCQASlhkQEDYpIBA2OTAQlklgEqZZcBLmaYAQVnmQEFaJoBBWmbAQVqnAEFa54BBWygAQltoQEvbqMBBW-lAQlwpgEwcacBBXKoAQVzqQEJdqwBMXetATd4rgEGea8BBnqwAQZ7sQEGfLIBBn20AQZ-tgEJf7cBOIABuQEGgQG7AQmCAbwBOYMBvQEGhAG-AQaFAb8BCYYBwgE6hwHDAT6IAcUBP4kBxgE_igHJAT-LAcoBP4wBywE_jQHNAT-OAc8BCY8B0AFAkAHSAT-RAdQBCZIB1QFBkwHWAT-UAdcBP5UB2AEJlgHbAUKXAdwBRpgB3QEHmQHeAQeaAd8BB5sB4AEHnAHhAQedAeMBB54B5QEJnwHmAUegAegBB6EB6gEJogHrAUijAewBB6QB7QEHpQHuAQmmAfEBSacB8gFNqAH0AU6pAfUBTqoB-AFOqwH5AU6sAfoBTq0B_AFOrgH-AQmvAf8BT7ABgQJOsQGDAgmyAYQCULMBhQJOtAGGAk61AYcCCbYBigJRtwGLAle4AY0CWLkBjgJYugGRAli7AZICWLwBkwJYvQGVAli-AZcCCb8BmAJZwAGaAljBAZwCCcIBnQJawwGeAljEAZ8CWMUBoAIJxgGjAlvHAaQCX8gBpgJgyQGnAmDKAaoCYMsBqwJgzAGsAmDNAa4CYM4BsAIJzwGxAmHQAbMCYNEBtQIJ0gG2AmLTAbcCYNQBuAJg1QG5AgnWAbwCY9cBvQJn" } config.compilerWasm = { getRuntime: async () => require('./query_compiler_fast_bg.js'), diff --git a/packages/forums-prisma-client/index-browser.js b/packages/forums-prisma-client/index-browser.js index 3b1e7b2..4ff19d0 100644 --- a/packages/forums-prisma-client/index-browser.js +++ b/packages/forums-prisma-client/index-browser.js @@ -187,6 +187,7 @@ exports.Prisma.TopicClosureScalarFieldEnum = { exports.Prisma.TopicWatchScalarFieldEnum = { topicId: 'topicId', memberId: 'memberId', + watching: 'watching', createdAt: 'createdAt' }; diff --git a/packages/forums-prisma-client/index.d.ts b/packages/forums-prisma-client/index.d.ts index 5865846..c3d5c75 100644 --- a/packages/forums-prisma-client/index.d.ts +++ b/packages/forums-prisma-client/index.d.ts @@ -8752,18 +8752,21 @@ export namespace Prisma { export type TopicWatchMinAggregateOutputType = { topicId: string | null memberId: string | null + watching: boolean | null createdAt: Date | null } export type TopicWatchMaxAggregateOutputType = { topicId: string | null memberId: string | null + watching: boolean | null createdAt: Date | null } export type TopicWatchCountAggregateOutputType = { topicId: number memberId: number + watching: number createdAt: number _all: number } @@ -8772,18 +8775,21 @@ export namespace Prisma { export type TopicWatchMinAggregateInputType = { topicId?: true memberId?: true + watching?: true createdAt?: true } export type TopicWatchMaxAggregateInputType = { topicId?: true memberId?: true + watching?: true createdAt?: true } export type TopicWatchCountAggregateInputType = { topicId?: true memberId?: true + watching?: true createdAt?: true _all?: true } @@ -8863,6 +8869,7 @@ export namespace Prisma { export type TopicWatchGroupByOutputType = { topicId: string memberId: string + watching: boolean createdAt: Date _count: TopicWatchCountAggregateOutputType | null _min: TopicWatchMinAggregateOutputType | null @@ -8886,6 +8893,7 @@ export namespace Prisma { export type TopicWatchSelect = $Extensions.GetSelect<{ topicId?: boolean memberId?: boolean + watching?: boolean createdAt?: boolean topic?: boolean | TopicDefaultArgs }, ExtArgs["result"]["topicWatch"]> @@ -8893,6 +8901,7 @@ export namespace Prisma { export type TopicWatchSelectCreateManyAndReturn = $Extensions.GetSelect<{ topicId?: boolean memberId?: boolean + watching?: boolean createdAt?: boolean topic?: boolean | TopicDefaultArgs }, ExtArgs["result"]["topicWatch"]> @@ -8900,6 +8909,7 @@ export namespace Prisma { export type TopicWatchSelectUpdateManyAndReturn = $Extensions.GetSelect<{ topicId?: boolean memberId?: boolean + watching?: boolean createdAt?: boolean topic?: boolean | TopicDefaultArgs }, ExtArgs["result"]["topicWatch"]> @@ -8907,10 +8917,11 @@ export namespace Prisma { export type TopicWatchSelectScalar = { topicId?: boolean memberId?: boolean + watching?: boolean createdAt?: boolean } - export type TopicWatchOmit = $Extensions.GetOmit<"topicId" | "memberId" | "createdAt", ExtArgs["result"]["topicWatch"]> + export type TopicWatchOmit = $Extensions.GetOmit<"topicId" | "memberId" | "watching" | "createdAt", ExtArgs["result"]["topicWatch"]> export type TopicWatchInclude = { topic?: boolean | TopicDefaultArgs } @@ -8929,6 +8940,7 @@ export namespace Prisma { scalars: $Extensions.GetPayloadResult<{ topicId: string memberId: string + watching: boolean createdAt: Date }, ExtArgs["result"]["topicWatch"]> composites: {} @@ -9356,6 +9368,7 @@ export namespace Prisma { interface TopicWatchFieldRefs { readonly topicId: FieldRef<"TopicWatch", 'String'> readonly memberId: FieldRef<"TopicWatch", 'String'> + readonly watching: FieldRef<"TopicWatch", 'Boolean'> readonly createdAt: FieldRef<"TopicWatch", 'DateTime'> } @@ -14986,6 +14999,7 @@ export namespace Prisma { export const TopicWatchScalarFieldEnum: { topicId: 'topicId', memberId: 'memberId', + watching: 'watching', createdAt: 'createdAt' }; @@ -15626,6 +15640,7 @@ export namespace Prisma { NOT?: TopicWatchWhereInput | TopicWatchWhereInput[] topicId?: StringFilter<"TopicWatch"> | string memberId?: StringFilter<"TopicWatch"> | string + watching?: BoolFilter<"TopicWatch"> | boolean createdAt?: DateTimeFilter<"TopicWatch"> | Date | string topic?: XOR } @@ -15633,6 +15648,7 @@ export namespace Prisma { export type TopicWatchOrderByWithRelationInput = { topicId?: SortOrder memberId?: SortOrder + watching?: SortOrder createdAt?: SortOrder topic?: TopicOrderByWithRelationInput } @@ -15644,6 +15660,7 @@ export namespace Prisma { NOT?: TopicWatchWhereInput | TopicWatchWhereInput[] topicId?: StringFilter<"TopicWatch"> | string memberId?: StringFilter<"TopicWatch"> | string + watching?: BoolFilter<"TopicWatch"> | boolean createdAt?: DateTimeFilter<"TopicWatch"> | Date | string topic?: XOR }, "topicId_memberId"> @@ -15651,6 +15668,7 @@ export namespace Prisma { export type TopicWatchOrderByWithAggregationInput = { topicId?: SortOrder memberId?: SortOrder + watching?: SortOrder createdAt?: SortOrder _count?: TopicWatchCountOrderByAggregateInput _max?: TopicWatchMaxOrderByAggregateInput @@ -15663,6 +15681,7 @@ export namespace Prisma { NOT?: TopicWatchScalarWhereWithAggregatesInput | TopicWatchScalarWhereWithAggregatesInput[] topicId?: StringWithAggregatesFilter<"TopicWatch"> | string memberId?: StringWithAggregatesFilter<"TopicWatch"> | string + watching?: BoolWithAggregatesFilter<"TopicWatch"> | boolean createdAt?: DateTimeWithAggregatesFilter<"TopicWatch"> | Date | string } @@ -16419,6 +16438,7 @@ export namespace Prisma { export type TopicWatchCreateInput = { memberId: string + watching?: boolean createdAt?: Date | string topic: TopicCreateNestedOneWithoutWatchesInput } @@ -16426,11 +16446,13 @@ export namespace Prisma { export type TopicWatchUncheckedCreateInput = { topicId: string memberId: string + watching?: boolean createdAt?: Date | string } export type TopicWatchUpdateInput = { memberId?: StringFieldUpdateOperationsInput | string + watching?: BoolFieldUpdateOperationsInput | boolean createdAt?: DateTimeFieldUpdateOperationsInput | Date | string topic?: TopicUpdateOneRequiredWithoutWatchesNestedInput } @@ -16438,23 +16460,27 @@ export namespace Prisma { export type TopicWatchUncheckedUpdateInput = { topicId?: StringFieldUpdateOperationsInput | string memberId?: StringFieldUpdateOperationsInput | string + watching?: BoolFieldUpdateOperationsInput | boolean createdAt?: DateTimeFieldUpdateOperationsInput | Date | string } export type TopicWatchCreateManyInput = { topicId: string memberId: string + watching?: boolean createdAt?: Date | string } export type TopicWatchUpdateManyMutationInput = { memberId?: StringFieldUpdateOperationsInput | string + watching?: BoolFieldUpdateOperationsInput | boolean createdAt?: DateTimeFieldUpdateOperationsInput | Date | string } export type TopicWatchUncheckedUpdateManyInput = { topicId?: StringFieldUpdateOperationsInput | string memberId?: StringFieldUpdateOperationsInput | string + watching?: BoolFieldUpdateOperationsInput | boolean createdAt?: DateTimeFieldUpdateOperationsInput | Date | string } @@ -17222,18 +17248,21 @@ export namespace Prisma { export type TopicWatchCountOrderByAggregateInput = { topicId?: SortOrder memberId?: SortOrder + watching?: SortOrder createdAt?: SortOrder } export type TopicWatchMaxOrderByAggregateInput = { topicId?: SortOrder memberId?: SortOrder + watching?: SortOrder createdAt?: SortOrder } export type TopicWatchMinOrderByAggregateInput = { topicId?: SortOrder memberId?: SortOrder + watching?: SortOrder createdAt?: SortOrder } @@ -18301,11 +18330,13 @@ export namespace Prisma { export type TopicWatchCreateWithoutTopicInput = { memberId: string + watching?: boolean createdAt?: Date | string } export type TopicWatchUncheckedCreateWithoutTopicInput = { memberId: string + watching?: boolean createdAt?: Date | string } @@ -18531,6 +18562,7 @@ export namespace Prisma { NOT?: TopicWatchScalarWhereInput | TopicWatchScalarWhereInput[] topicId?: StringFilter<"TopicWatch"> | string memberId?: StringFilter<"TopicWatch"> | string + watching?: BoolFilter<"TopicWatch"> | boolean createdAt?: DateTimeFilter<"TopicWatch"> | Date | string } @@ -19265,6 +19297,7 @@ export namespace Prisma { export type TopicWatchCreateManyTopicInput = { memberId: string + watching?: boolean createdAt?: Date | string } @@ -19410,16 +19443,19 @@ export namespace Prisma { export type TopicWatchUpdateWithoutTopicInput = { memberId?: StringFieldUpdateOperationsInput | string + watching?: BoolFieldUpdateOperationsInput | boolean createdAt?: DateTimeFieldUpdateOperationsInput | Date | string } export type TopicWatchUncheckedUpdateWithoutTopicInput = { memberId?: StringFieldUpdateOperationsInput | string + watching?: BoolFieldUpdateOperationsInput | boolean createdAt?: DateTimeFieldUpdateOperationsInput | Date | string } export type TopicWatchUncheckedUpdateManyWithoutTopicInput = { memberId?: StringFieldUpdateOperationsInput | string + watching?: BoolFieldUpdateOperationsInput | boolean createdAt?: DateTimeFieldUpdateOperationsInput | Date | string } diff --git a/packages/forums-prisma-client/index.js b/packages/forums-prisma-client/index.js index dc73b7b..a070789 100644 --- a/packages/forums-prisma-client/index.js +++ b/packages/forums-prisma-client/index.js @@ -160,6 +160,7 @@ exports.Prisma.TopicClosureScalarFieldEnum = { exports.Prisma.TopicWatchScalarFieldEnum = { topicId: 'topicId', memberId: 'memberId', + watching: 'watching', createdAt: 'createdAt' }; @@ -256,14 +257,14 @@ const config = { "clientVersion": "7.9.0", "engineVersion": "e922089b7d7502aff4249d5da3420f6fa55fc6ad", "activeProvider": "postgresql", - "inlineSchema": "generator client {\n provider = \"prisma-client-js\"\n output = \"./generated/client\"\n}\n\ngenerator externalClient {\n provider = \"prisma-client-js\"\n output = \"../packages/forums-prisma-client\"\n binaryTargets = [\"native\", \"debian-openssl-3.0.x\"]\n}\n\ndatasource db {\n provider = \"postgresql\"\n schemas = [\"forums\"]\n}\n\nenum PostReactionType {\n THUMBS_UP\n THUMBS_DOWN\n\n @@schema(\"forums\")\n}\n\nmodel Topic {\n id String @id @default(dbgenerated(\"nanoid()\")) @db.VarChar(14)\n parentTopicId String? @db.VarChar(14)\n challengeId String? @db.VarChar(64)\n roleName String? @db.VarChar(128)\n title String @db.VarChar(255)\n isAnnouncement Boolean @default(false)\n locked Boolean @default(false)\n lockedAt DateTime?\n lockedByMemberId String? @db.VarChar(64)\n authorMemberId String @db.VarChar(64)\n authorHandle String @db.VarChar(128)\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now()) @updatedAt\n deletedAt DateTime?\n deletedByMemberId String? @db.VarChar(64)\n\n parentTopic Topic? @relation(\"TopicChildren\", fields: [parentTopicId], references: [id])\n childTopics Topic[] @relation(\"TopicChildren\")\n posts Post[]\n ancestorClosures TopicClosure[] @relation(\"TopicClosureAncestor\")\n descendantClosures TopicClosure[] @relation(\"TopicClosureDescendant\")\n watches TopicWatch[]\n readStates TopicReadState[]\n\n @@index([parentTopicId])\n @@index([challengeId])\n @@index([roleName])\n @@index([deletedAt])\n @@index([isAnnouncement, createdAt])\n @@schema(\"forums\")\n}\n\nmodel MemberBan {\n id String @id @default(dbgenerated(\"nanoid()\")) @db.VarChar(14)\n memberId String @db.VarChar(64)\n createdAt DateTime @default(now())\n createdByMemberId String? @db.VarChar(64)\n removedAt DateTime?\n removedByMemberId String? @db.VarChar(64)\n\n @@index([memberId])\n @@index([removedAt])\n @@schema(\"forums\")\n}\n\nmodel IpBan {\n id String @id @default(dbgenerated(\"nanoid()\")) @db.VarChar(14)\n ipAddress String @db.VarChar(45)\n createdAt DateTime @default(now())\n createdByMemberId String? @db.VarChar(64)\n removedAt DateTime?\n removedByMemberId String? @db.VarChar(64)\n\n @@index([ipAddress])\n @@index([removedAt])\n @@schema(\"forums\")\n}\n\nmodel Post {\n id String @id @default(dbgenerated(\"nanoid()\")) @db.VarChar(14)\n topicId String @db.VarChar(14)\n parentType String @db.VarChar(16)\n parentId String @db.VarChar(14)\n authorMemberId String @db.VarChar(64)\n authorHandle String @db.VarChar(128)\n content String? @db.Text\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now()) @updatedAt\n deletedAt DateTime?\n deletedByMemberId String? @db.VarChar(64)\n\n topic Topic @relation(fields: [topicId], references: [id], onDelete: Cascade)\n reactions PostReaction[]\n\n @@index([topicId, createdAt])\n @@index([topicId, parentType, parentId])\n @@index([deletedAt])\n @@schema(\"forums\")\n}\n\nmodel PostReaction {\n postId String @db.VarChar(14)\n memberId String @db.VarChar(64)\n reaction PostReactionType\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now()) @updatedAt\n\n post Post @relation(fields: [postId], references: [id], onDelete: Cascade)\n\n @@id([postId, memberId])\n @@index([memberId])\n @@index([postId, reaction])\n @@schema(\"forums\")\n}\n\nmodel TopicClosure {\n ancestorTopicId String @db.VarChar(14)\n descendantTopicId String @db.VarChar(14)\n depth Int\n\n ancestorTopic Topic @relation(\"TopicClosureAncestor\", fields: [ancestorTopicId], references: [id], onDelete: Cascade)\n descendantTopic Topic @relation(\"TopicClosureDescendant\", fields: [descendantTopicId], references: [id], onDelete: Cascade)\n\n @@id([ancestorTopicId, descendantTopicId])\n @@index([ancestorTopicId, depth])\n @@index([descendantTopicId, depth])\n @@schema(\"forums\")\n}\n\nmodel TopicWatch {\n topicId String @db.VarChar(14)\n memberId String @db.VarChar(64)\n createdAt DateTime @default(now())\n\n topic Topic @relation(fields: [topicId], references: [id], onDelete: Cascade)\n\n @@id([topicId, memberId])\n @@index([memberId])\n @@schema(\"forums\")\n}\n\n// Explicit challenge-wide preferences override resource-based default watches.\nmodel ChallengeForumWatch {\n challengeId String @db.VarChar(64)\n memberId String @db.VarChar(64)\n watching Boolean\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now()) @updatedAt\n\n @@id([challengeId, memberId])\n @@index([memberId])\n @@schema(\"forums\")\n}\n\nmodel TopicReadState {\n topicId String @db.VarChar(14)\n memberId String @db.VarChar(64)\n lastReadAt DateTime @default(now())\n updatedAt DateTime @default(now()) @updatedAt\n\n topic Topic @relation(fields: [topicId], references: [id], onDelete: Cascade)\n\n @@id([topicId, memberId])\n @@index([memberId])\n @@index([lastReadAt])\n @@schema(\"forums\")\n}\n\n// Presentation and access rules for imported public category topics only.\nmodel PublicForumCategory {\n topicId String @id @db.VarChar(14)\n description String @default(\"\") @db.Text\n displayAs String @db.VarChar(16)\n sortOrder Int\n readRoles String[]\n createRoles String[]\n replyRoles String[]\n legacyId Int @unique\n legacySlug String @db.Text\n source Json\n\n @@schema(\"forums\")\n}\n\n// Vanilla-only role assignments never grant identity-wide roles.\nmodel PublicForumRoleMember {\n roleName String @db.VarChar(128)\n memberId String @db.VarChar(64)\n\n @@id([roleName, memberId])\n @@index([memberId])\n @@schema(\"forums\")\n}\n\n// Immutable provenance makes imports insert-only and safely repeatable.\nmodel PublicForumImportRecord {\n entityType String @db.VarChar(32)\n sourceId String @db.VarChar(64)\n targetId String @db.VarChar(64)\n sourceHash String @db.VarChar(64)\n targetHash String @db.VarChar(64)\n createdAt DateTime @default(now())\n\n @@id([entityType, sourceId])\n @@unique([entityType, targetId])\n @@schema(\"forums\")\n}\n" + "inlineSchema": "generator client {\n provider = \"prisma-client-js\"\n output = \"./generated/client\"\n}\n\ngenerator externalClient {\n provider = \"prisma-client-js\"\n output = \"../packages/forums-prisma-client\"\n binaryTargets = [\"native\", \"debian-openssl-3.0.x\"]\n}\n\ndatasource db {\n provider = \"postgresql\"\n schemas = [\"forums\"]\n}\n\nenum PostReactionType {\n THUMBS_UP\n THUMBS_DOWN\n\n @@schema(\"forums\")\n}\n\nmodel Topic {\n id String @id @default(dbgenerated(\"nanoid()\")) @db.VarChar(14)\n parentTopicId String? @db.VarChar(14)\n challengeId String? @db.VarChar(64)\n roleName String? @db.VarChar(128)\n title String @db.VarChar(255)\n isAnnouncement Boolean @default(false)\n locked Boolean @default(false)\n lockedAt DateTime?\n lockedByMemberId String? @db.VarChar(64)\n authorMemberId String @db.VarChar(64)\n authorHandle String @db.VarChar(128)\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now()) @updatedAt\n deletedAt DateTime?\n deletedByMemberId String? @db.VarChar(64)\n\n parentTopic Topic? @relation(\"TopicChildren\", fields: [parentTopicId], references: [id])\n childTopics Topic[] @relation(\"TopicChildren\")\n posts Post[]\n ancestorClosures TopicClosure[] @relation(\"TopicClosureAncestor\")\n descendantClosures TopicClosure[] @relation(\"TopicClosureDescendant\")\n watches TopicWatch[]\n readStates TopicReadState[]\n\n @@index([parentTopicId])\n @@index([challengeId])\n @@index([roleName])\n @@index([deletedAt])\n @@index([isAnnouncement, createdAt])\n @@schema(\"forums\")\n}\n\nmodel MemberBan {\n id String @id @default(dbgenerated(\"nanoid()\")) @db.VarChar(14)\n memberId String @db.VarChar(64)\n createdAt DateTime @default(now())\n createdByMemberId String? @db.VarChar(64)\n removedAt DateTime?\n removedByMemberId String? @db.VarChar(64)\n\n @@index([memberId])\n @@index([removedAt])\n @@schema(\"forums\")\n}\n\nmodel IpBan {\n id String @id @default(dbgenerated(\"nanoid()\")) @db.VarChar(14)\n ipAddress String @db.VarChar(45)\n createdAt DateTime @default(now())\n createdByMemberId String? @db.VarChar(64)\n removedAt DateTime?\n removedByMemberId String? @db.VarChar(64)\n\n @@index([ipAddress])\n @@index([removedAt])\n @@schema(\"forums\")\n}\n\nmodel Post {\n id String @id @default(dbgenerated(\"nanoid()\")) @db.VarChar(14)\n topicId String @db.VarChar(14)\n parentType String @db.VarChar(16)\n parentId String @db.VarChar(14)\n authorMemberId String @db.VarChar(64)\n authorHandle String @db.VarChar(128)\n content String? @db.Text\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now()) @updatedAt\n deletedAt DateTime?\n deletedByMemberId String? @db.VarChar(64)\n\n topic Topic @relation(fields: [topicId], references: [id], onDelete: Cascade)\n reactions PostReaction[]\n\n @@index([topicId, createdAt])\n @@index([topicId, parentType, parentId])\n @@index([deletedAt])\n @@schema(\"forums\")\n}\n\nmodel PostReaction {\n postId String @db.VarChar(14)\n memberId String @db.VarChar(64)\n reaction PostReactionType\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now()) @updatedAt\n\n post Post @relation(fields: [postId], references: [id], onDelete: Cascade)\n\n @@id([postId, memberId])\n @@index([memberId])\n @@index([postId, reaction])\n @@schema(\"forums\")\n}\n\nmodel TopicClosure {\n ancestorTopicId String @db.VarChar(14)\n descendantTopicId String @db.VarChar(14)\n depth Int\n\n ancestorTopic Topic @relation(\"TopicClosureAncestor\", fields: [ancestorTopicId], references: [id], onDelete: Cascade)\n descendantTopic Topic @relation(\"TopicClosureDescendant\", fields: [descendantTopicId], references: [id], onDelete: Cascade)\n\n @@id([ancestorTopicId, descendantTopicId])\n @@index([ancestorTopicId, depth])\n @@index([descendantTopicId, depth])\n @@schema(\"forums\")\n}\n\n// Explicit topic choices override challenge-wide notification preferences.\nmodel TopicWatch {\n topicId String @db.VarChar(14)\n memberId String @db.VarChar(64)\n watching Boolean @default(true)\n createdAt DateTime @default(now())\n\n topic Topic @relation(fields: [topicId], references: [id], onDelete: Cascade)\n\n @@id([topicId, memberId])\n @@index([memberId])\n @@schema(\"forums\")\n}\n\n// Explicit challenge-wide preferences override resource-based default watches.\nmodel ChallengeForumWatch {\n challengeId String @db.VarChar(64)\n memberId String @db.VarChar(64)\n watching Boolean\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now()) @updatedAt\n\n @@id([challengeId, memberId])\n @@index([memberId])\n @@schema(\"forums\")\n}\n\nmodel TopicReadState {\n topicId String @db.VarChar(14)\n memberId String @db.VarChar(64)\n lastReadAt DateTime @default(now())\n updatedAt DateTime @default(now()) @updatedAt\n\n topic Topic @relation(fields: [topicId], references: [id], onDelete: Cascade)\n\n @@id([topicId, memberId])\n @@index([memberId])\n @@index([lastReadAt])\n @@schema(\"forums\")\n}\n\n// Presentation and access rules for imported public category topics only.\nmodel PublicForumCategory {\n topicId String @id @db.VarChar(14)\n description String @default(\"\") @db.Text\n displayAs String @db.VarChar(16)\n sortOrder Int\n readRoles String[]\n createRoles String[]\n replyRoles String[]\n legacyId Int @unique\n legacySlug String @db.Text\n source Json\n\n @@schema(\"forums\")\n}\n\n// Vanilla-only role assignments never grant identity-wide roles.\nmodel PublicForumRoleMember {\n roleName String @db.VarChar(128)\n memberId String @db.VarChar(64)\n\n @@id([roleName, memberId])\n @@index([memberId])\n @@schema(\"forums\")\n}\n\n// Immutable provenance makes imports insert-only and safely repeatable.\nmodel PublicForumImportRecord {\n entityType String @db.VarChar(32)\n sourceId String @db.VarChar(64)\n targetId String @db.VarChar(64)\n sourceHash String @db.VarChar(64)\n targetHash String @db.VarChar(64)\n createdAt DateTime @default(now())\n\n @@id([entityType, sourceId])\n @@unique([entityType, targetId])\n @@schema(\"forums\")\n}\n" } -config.runtimeDataModel = JSON.parse("{\"models\":{\"Topic\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"parentTopicId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"roleName\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"title\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"isAnnouncement\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"locked\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"lockedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"lockedByMemberId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"authorMemberId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"authorHandle\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"deletedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"deletedByMemberId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"parentTopic\",\"kind\":\"object\",\"type\":\"Topic\",\"relationName\":\"TopicChildren\"},{\"name\":\"childTopics\",\"kind\":\"object\",\"type\":\"Topic\",\"relationName\":\"TopicChildren\"},{\"name\":\"posts\",\"kind\":\"object\",\"type\":\"Post\",\"relationName\":\"PostToTopic\"},{\"name\":\"ancestorClosures\",\"kind\":\"object\",\"type\":\"TopicClosure\",\"relationName\":\"TopicClosureAncestor\"},{\"name\":\"descendantClosures\",\"kind\":\"object\",\"type\":\"TopicClosure\",\"relationName\":\"TopicClosureDescendant\"},{\"name\":\"watches\",\"kind\":\"object\",\"type\":\"TopicWatch\",\"relationName\":\"TopicToTopicWatch\"},{\"name\":\"readStates\",\"kind\":\"object\",\"type\":\"TopicReadState\",\"relationName\":\"TopicToTopicReadState\"}],\"dbName\":null},\"MemberBan\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"memberId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdByMemberId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"removedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"removedByMemberId\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"IpBan\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"ipAddress\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdByMemberId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"removedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"removedByMemberId\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"Post\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"topicId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"parentType\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"parentId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"authorMemberId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"authorHandle\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"content\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"deletedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"deletedByMemberId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"topic\",\"kind\":\"object\",\"type\":\"Topic\",\"relationName\":\"PostToTopic\"},{\"name\":\"reactions\",\"kind\":\"object\",\"type\":\"PostReaction\",\"relationName\":\"PostToPostReaction\"}],\"dbName\":null},\"PostReaction\":{\"fields\":[{\"name\":\"postId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"memberId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"reaction\",\"kind\":\"enum\",\"type\":\"PostReactionType\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"post\",\"kind\":\"object\",\"type\":\"Post\",\"relationName\":\"PostToPostReaction\"}],\"dbName\":null},\"TopicClosure\":{\"fields\":[{\"name\":\"ancestorTopicId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"descendantTopicId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"depth\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"ancestorTopic\",\"kind\":\"object\",\"type\":\"Topic\",\"relationName\":\"TopicClosureAncestor\"},{\"name\":\"descendantTopic\",\"kind\":\"object\",\"type\":\"Topic\",\"relationName\":\"TopicClosureDescendant\"}],\"dbName\":null},\"TopicWatch\":{\"fields\":[{\"name\":\"topicId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"memberId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"topic\",\"kind\":\"object\",\"type\":\"Topic\",\"relationName\":\"TopicToTopicWatch\"}],\"dbName\":null},\"ChallengeForumWatch\":{\"fields\":[{\"name\":\"challengeId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"memberId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"watching\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null},\"TopicReadState\":{\"fields\":[{\"name\":\"topicId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"memberId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"lastReadAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"topic\",\"kind\":\"object\",\"type\":\"Topic\",\"relationName\":\"TopicToTopicReadState\"}],\"dbName\":null},\"PublicForumCategory\":{\"fields\":[{\"name\":\"topicId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"displayAs\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"sortOrder\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"readRoles\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createRoles\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"replyRoles\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"legacyId\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"legacySlug\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"source\",\"kind\":\"scalar\",\"type\":\"Json\"}],\"dbName\":null},\"PublicForumRoleMember\":{\"fields\":[{\"name\":\"roleName\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"memberId\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"PublicForumImportRecord\":{\"fields\":[{\"name\":\"entityType\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"sourceId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"targetId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"sourceHash\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"targetHash\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null}},\"enums\":{},\"types\":{}}") +config.runtimeDataModel = JSON.parse("{\"models\":{\"Topic\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"parentTopicId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"roleName\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"title\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"isAnnouncement\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"locked\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"lockedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"lockedByMemberId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"authorMemberId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"authorHandle\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"deletedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"deletedByMemberId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"parentTopic\",\"kind\":\"object\",\"type\":\"Topic\",\"relationName\":\"TopicChildren\"},{\"name\":\"childTopics\",\"kind\":\"object\",\"type\":\"Topic\",\"relationName\":\"TopicChildren\"},{\"name\":\"posts\",\"kind\":\"object\",\"type\":\"Post\",\"relationName\":\"PostToTopic\"},{\"name\":\"ancestorClosures\",\"kind\":\"object\",\"type\":\"TopicClosure\",\"relationName\":\"TopicClosureAncestor\"},{\"name\":\"descendantClosures\",\"kind\":\"object\",\"type\":\"TopicClosure\",\"relationName\":\"TopicClosureDescendant\"},{\"name\":\"watches\",\"kind\":\"object\",\"type\":\"TopicWatch\",\"relationName\":\"TopicToTopicWatch\"},{\"name\":\"readStates\",\"kind\":\"object\",\"type\":\"TopicReadState\",\"relationName\":\"TopicToTopicReadState\"}],\"dbName\":null},\"MemberBan\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"memberId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdByMemberId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"removedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"removedByMemberId\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"IpBan\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"ipAddress\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdByMemberId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"removedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"removedByMemberId\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"Post\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"topicId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"parentType\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"parentId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"authorMemberId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"authorHandle\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"content\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"deletedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"deletedByMemberId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"topic\",\"kind\":\"object\",\"type\":\"Topic\",\"relationName\":\"PostToTopic\"},{\"name\":\"reactions\",\"kind\":\"object\",\"type\":\"PostReaction\",\"relationName\":\"PostToPostReaction\"}],\"dbName\":null},\"PostReaction\":{\"fields\":[{\"name\":\"postId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"memberId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"reaction\",\"kind\":\"enum\",\"type\":\"PostReactionType\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"post\",\"kind\":\"object\",\"type\":\"Post\",\"relationName\":\"PostToPostReaction\"}],\"dbName\":null},\"TopicClosure\":{\"fields\":[{\"name\":\"ancestorTopicId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"descendantTopicId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"depth\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"ancestorTopic\",\"kind\":\"object\",\"type\":\"Topic\",\"relationName\":\"TopicClosureAncestor\"},{\"name\":\"descendantTopic\",\"kind\":\"object\",\"type\":\"Topic\",\"relationName\":\"TopicClosureDescendant\"}],\"dbName\":null},\"TopicWatch\":{\"fields\":[{\"name\":\"topicId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"memberId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"watching\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"topic\",\"kind\":\"object\",\"type\":\"Topic\",\"relationName\":\"TopicToTopicWatch\"}],\"dbName\":null},\"ChallengeForumWatch\":{\"fields\":[{\"name\":\"challengeId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"memberId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"watching\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null},\"TopicReadState\":{\"fields\":[{\"name\":\"topicId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"memberId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"lastReadAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"topic\",\"kind\":\"object\",\"type\":\"Topic\",\"relationName\":\"TopicToTopicReadState\"}],\"dbName\":null},\"PublicForumCategory\":{\"fields\":[{\"name\":\"topicId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"displayAs\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"sortOrder\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"readRoles\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createRoles\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"replyRoles\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"legacyId\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"legacySlug\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"source\",\"kind\":\"scalar\",\"type\":\"Json\"}],\"dbName\":null},\"PublicForumRoleMember\":{\"fields\":[{\"name\":\"roleName\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"memberId\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"PublicForumImportRecord\":{\"fields\":[{\"name\":\"entityType\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"sourceId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"targetId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"sourceHash\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"targetHash\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null}},\"enums\":{},\"types\":{}}") defineDmmfProperty(exports.Prisma, config.runtimeDataModel) config.parameterizationSchema = { strings: JSON.parse("[\"where\",\"parentTopic\",\"orderBy\",\"cursor\",\"childTopics\",\"topic\",\"post\",\"reactions\",\"_count\",\"posts\",\"ancestorTopic\",\"descendantTopic\",\"ancestorClosures\",\"descendantClosures\",\"watches\",\"readStates\",\"Topic.findUnique\",\"Topic.findUniqueOrThrow\",\"Topic.findFirst\",\"Topic.findFirstOrThrow\",\"Topic.findMany\",\"data\",\"Topic.createOne\",\"Topic.createMany\",\"Topic.createManyAndReturn\",\"Topic.updateOne\",\"Topic.updateMany\",\"Topic.updateManyAndReturn\",\"create\",\"update\",\"Topic.upsertOne\",\"Topic.deleteOne\",\"Topic.deleteMany\",\"having\",\"_min\",\"_max\",\"Topic.groupBy\",\"Topic.aggregate\",\"MemberBan.findUnique\",\"MemberBan.findUniqueOrThrow\",\"MemberBan.findFirst\",\"MemberBan.findFirstOrThrow\",\"MemberBan.findMany\",\"MemberBan.createOne\",\"MemberBan.createMany\",\"MemberBan.createManyAndReturn\",\"MemberBan.updateOne\",\"MemberBan.updateMany\",\"MemberBan.updateManyAndReturn\",\"MemberBan.upsertOne\",\"MemberBan.deleteOne\",\"MemberBan.deleteMany\",\"MemberBan.groupBy\",\"MemberBan.aggregate\",\"IpBan.findUnique\",\"IpBan.findUniqueOrThrow\",\"IpBan.findFirst\",\"IpBan.findFirstOrThrow\",\"IpBan.findMany\",\"IpBan.createOne\",\"IpBan.createMany\",\"IpBan.createManyAndReturn\",\"IpBan.updateOne\",\"IpBan.updateMany\",\"IpBan.updateManyAndReturn\",\"IpBan.upsertOne\",\"IpBan.deleteOne\",\"IpBan.deleteMany\",\"IpBan.groupBy\",\"IpBan.aggregate\",\"Post.findUnique\",\"Post.findUniqueOrThrow\",\"Post.findFirst\",\"Post.findFirstOrThrow\",\"Post.findMany\",\"Post.createOne\",\"Post.createMany\",\"Post.createManyAndReturn\",\"Post.updateOne\",\"Post.updateMany\",\"Post.updateManyAndReturn\",\"Post.upsertOne\",\"Post.deleteOne\",\"Post.deleteMany\",\"Post.groupBy\",\"Post.aggregate\",\"PostReaction.findUnique\",\"PostReaction.findUniqueOrThrow\",\"PostReaction.findFirst\",\"PostReaction.findFirstOrThrow\",\"PostReaction.findMany\",\"PostReaction.createOne\",\"PostReaction.createMany\",\"PostReaction.createManyAndReturn\",\"PostReaction.updateOne\",\"PostReaction.updateMany\",\"PostReaction.updateManyAndReturn\",\"PostReaction.upsertOne\",\"PostReaction.deleteOne\",\"PostReaction.deleteMany\",\"PostReaction.groupBy\",\"PostReaction.aggregate\",\"TopicClosure.findUnique\",\"TopicClosure.findUniqueOrThrow\",\"TopicClosure.findFirst\",\"TopicClosure.findFirstOrThrow\",\"TopicClosure.findMany\",\"TopicClosure.createOne\",\"TopicClosure.createMany\",\"TopicClosure.createManyAndReturn\",\"TopicClosure.updateOne\",\"TopicClosure.updateMany\",\"TopicClosure.updateManyAndReturn\",\"TopicClosure.upsertOne\",\"TopicClosure.deleteOne\",\"TopicClosure.deleteMany\",\"_avg\",\"_sum\",\"TopicClosure.groupBy\",\"TopicClosure.aggregate\",\"TopicWatch.findUnique\",\"TopicWatch.findUniqueOrThrow\",\"TopicWatch.findFirst\",\"TopicWatch.findFirstOrThrow\",\"TopicWatch.findMany\",\"TopicWatch.createOne\",\"TopicWatch.createMany\",\"TopicWatch.createManyAndReturn\",\"TopicWatch.updateOne\",\"TopicWatch.updateMany\",\"TopicWatch.updateManyAndReturn\",\"TopicWatch.upsertOne\",\"TopicWatch.deleteOne\",\"TopicWatch.deleteMany\",\"TopicWatch.groupBy\",\"TopicWatch.aggregate\",\"ChallengeForumWatch.findUnique\",\"ChallengeForumWatch.findUniqueOrThrow\",\"ChallengeForumWatch.findFirst\",\"ChallengeForumWatch.findFirstOrThrow\",\"ChallengeForumWatch.findMany\",\"ChallengeForumWatch.createOne\",\"ChallengeForumWatch.createMany\",\"ChallengeForumWatch.createManyAndReturn\",\"ChallengeForumWatch.updateOne\",\"ChallengeForumWatch.updateMany\",\"ChallengeForumWatch.updateManyAndReturn\",\"ChallengeForumWatch.upsertOne\",\"ChallengeForumWatch.deleteOne\",\"ChallengeForumWatch.deleteMany\",\"ChallengeForumWatch.groupBy\",\"ChallengeForumWatch.aggregate\",\"TopicReadState.findUnique\",\"TopicReadState.findUniqueOrThrow\",\"TopicReadState.findFirst\",\"TopicReadState.findFirstOrThrow\",\"TopicReadState.findMany\",\"TopicReadState.createOne\",\"TopicReadState.createMany\",\"TopicReadState.createManyAndReturn\",\"TopicReadState.updateOne\",\"TopicReadState.updateMany\",\"TopicReadState.updateManyAndReturn\",\"TopicReadState.upsertOne\",\"TopicReadState.deleteOne\",\"TopicReadState.deleteMany\",\"TopicReadState.groupBy\",\"TopicReadState.aggregate\",\"PublicForumCategory.findUnique\",\"PublicForumCategory.findUniqueOrThrow\",\"PublicForumCategory.findFirst\",\"PublicForumCategory.findFirstOrThrow\",\"PublicForumCategory.findMany\",\"PublicForumCategory.createOne\",\"PublicForumCategory.createMany\",\"PublicForumCategory.createManyAndReturn\",\"PublicForumCategory.updateOne\",\"PublicForumCategory.updateMany\",\"PublicForumCategory.updateManyAndReturn\",\"PublicForumCategory.upsertOne\",\"PublicForumCategory.deleteOne\",\"PublicForumCategory.deleteMany\",\"PublicForumCategory.groupBy\",\"PublicForumCategory.aggregate\",\"PublicForumRoleMember.findUnique\",\"PublicForumRoleMember.findUniqueOrThrow\",\"PublicForumRoleMember.findFirst\",\"PublicForumRoleMember.findFirstOrThrow\",\"PublicForumRoleMember.findMany\",\"PublicForumRoleMember.createOne\",\"PublicForumRoleMember.createMany\",\"PublicForumRoleMember.createManyAndReturn\",\"PublicForumRoleMember.updateOne\",\"PublicForumRoleMember.updateMany\",\"PublicForumRoleMember.updateManyAndReturn\",\"PublicForumRoleMember.upsertOne\",\"PublicForumRoleMember.deleteOne\",\"PublicForumRoleMember.deleteMany\",\"PublicForumRoleMember.groupBy\",\"PublicForumRoleMember.aggregate\",\"PublicForumImportRecord.findUnique\",\"PublicForumImportRecord.findUniqueOrThrow\",\"PublicForumImportRecord.findFirst\",\"PublicForumImportRecord.findFirstOrThrow\",\"PublicForumImportRecord.findMany\",\"PublicForumImportRecord.createOne\",\"PublicForumImportRecord.createMany\",\"PublicForumImportRecord.createManyAndReturn\",\"PublicForumImportRecord.updateOne\",\"PublicForumImportRecord.updateMany\",\"PublicForumImportRecord.updateManyAndReturn\",\"PublicForumImportRecord.upsertOne\",\"PublicForumImportRecord.deleteOne\",\"PublicForumImportRecord.deleteMany\",\"PublicForumImportRecord.groupBy\",\"PublicForumImportRecord.aggregate\",\"AND\",\"OR\",\"NOT\",\"entityType\",\"sourceId\",\"targetId\",\"sourceHash\",\"targetHash\",\"createdAt\",\"equals\",\"in\",\"notIn\",\"lt\",\"lte\",\"gt\",\"gte\",\"not\",\"contains\",\"startsWith\",\"endsWith\",\"entityType_targetId\",\"entityType_sourceId\",\"roleName\",\"memberId\",\"roleName_memberId\",\"topicId\",\"description\",\"displayAs\",\"sortOrder\",\"readRoles\",\"createRoles\",\"replyRoles\",\"legacyId\",\"legacySlug\",\"source\",\"string_contains\",\"string_starts_with\",\"string_ends_with\",\"array_starts_with\",\"array_ends_with\",\"array_contains\",\"has\",\"hasEvery\",\"hasSome\",\"lastReadAt\",\"updatedAt\",\"challengeId\",\"watching\",\"challengeId_memberId\",\"ancestorTopicId\",\"descendantTopicId\",\"depth\",\"postId\",\"PostReactionType\",\"reaction\",\"id\",\"parentType\",\"parentId\",\"authorMemberId\",\"authorHandle\",\"content\",\"deletedAt\",\"deletedByMemberId\",\"ipAddress\",\"createdByMemberId\",\"removedAt\",\"removedByMemberId\",\"parentTopicId\",\"title\",\"isAnnouncement\",\"locked\",\"lockedAt\",\"lockedByMemberId\",\"topicId_memberId\",\"ancestorTopicId_descendantTopicId\",\"postId_memberId\",\"every\",\"some\",\"none\",\"is\",\"isNot\",\"connectOrCreate\",\"upsert\",\"createMany\",\"set\",\"disconnect\",\"delete\",\"connect\",\"updateMany\",\"deleteMany\",\"push\",\"increment\",\"decrement\",\"multiply\",\"divide\"]"), - graph: "3QRnwAEZAQAAgwMAIAQAAIQDACAJAACFAwAgDAAAhgMAIA0AAIYDACAOAACHAwAgDwAAiAMAINgBAACCAwAw2QEAAAMAENoBAACCAwAw4AFAAMgCACHuAQEA8AIAIYUCQADIAgAhhgIBAPACACGPAgEAAAABkgIBAMcCACGTAgEAxwIAIZUCQADxAgAhlgIBAPACACGbAgEA8AIAIZwCAQDHAgAhnQIgAN4CACGeAiAA3gIAIZ8CQADxAgAhoAIBAPACACEBAAAAAQAgGQEAAIMDACAEAACEAwAgCQAAhQMAIAwAAIYDACANAACGAwAgDgAAhwMAIA8AAIgDACDYAQAAggMAMNkBAAADABDaAQAAggMAMOABQADIAgAh7gEBAPACACGFAkAAyAIAIYYCAQDwAgAhjwIBAMcCACGSAgEAxwIAIZMCAQDHAgAhlQJAAPECACGWAgEA8AIAIZsCAQDwAgAhnAIBAMcCACGdAiAA3gIAIZ4CIADeAgAhnwJAAPECACGgAgEA8AIAIQEAAAADACAOAQAArAQAIAQAAK8EACAJAACwBAAgDAAAsQQAIA0AALEEACAOAACyBAAgDwAAswQAIO4BAAC6AwAghgIAALoDACCVAgAAugMAIJYCAAC6AwAgmwIAALoDACCfAgAAugMAIKACAAC6AwAgAwAAAAMAIAIAAAUAMAMAAAEAIBAFAAD3AgAgBwAAgQMAINgBAACAAwAw2QEAAAcAENoBAACAAwAw4AFAAMgCACHxAQEAxwIAIYUCQADIAgAhjwIBAMcCACGQAgEAxwIAIZECAQDHAgAhkgIBAMcCACGTAgEAxwIAIZQCAQDwAgAhlQJAAPECACGWAgEA8AIAIQUFAACsBAAgBwAArgQAIJQCAAC6AwAglQIAALoDACCWAgAAugMAIBAFAAD3AgAgBwAAgQMAINgBAACAAwAw2QEAAAcAENoBAACAAwAw4AFAAMgCACHxAQEAxwIAIYUCQADIAgAhjwIBAAAAAZACAQDHAgAhkQIBAMcCACGSAgEAxwIAIZMCAQDHAgAhlAIBAPACACGVAkAA8QIAIZYCAQDwAgAhAwAAAAcAIAIAAAgAMAMAAAkAIAkGAAD_AgAg2AEAAP0CADDZAQAACwAQ2gEAAP0CADDgAUAAyAIAIe8BAQDHAgAhhQJAAMgCACGMAgEAxwIAIY4CAAD-Ao4CIgEGAACtBAAgCgYAAP8CACDYAQAA_QIAMNkBAAALABDaAQAA_QIAMOABQADIAgAh7wEBAMcCACGFAkAAyAIAIYwCAQDHAgAhjgIAAP4CjgIiowIAAPwCACADAAAACwAgAgAADAAwAwAADQAgAQAAAAsAIAgKAAD3AgAgCwAA9wIAINgBAAD7AgAw2QEAABAAENoBAAD7AgAwiQIBAMcCACGKAgEAxwIAIYsCAgDWAgAhAgoAAKwEACALAACsBAAgCQoAAPcCACALAAD3AgAg2AEAAPsCADDZAQAAEAAQ2gEAAPsCADCJAgEAxwIAIYoCAQDHAgAhiwICANYCACGiAgAA-gIAIAMAAAAQACACAAARADADAAASACADAAAAEAAgAgAAEQAwAwAAEgAgBwUAAPcCACDYAQAA-QIAMNkBAAAVABDaAQAA-QIAMOABQADIAgAh7wEBAMcCACHxAQEAxwIAIQEFAACsBAAgCAUAAPcCACDYAQAA-QIAMNkBAAAVABDaAQAA-QIAMOABQADIAgAh7wEBAMcCACHxAQEAxwIAIaECAAD4AgAgAwAAABUAIAIAABYAMAMAABcAIAgFAAD3AgAg2AEAAPYCADDZAQAAGQAQ2gEAAPYCADDvAQEAxwIAIfEBAQDHAgAhhAJAAMgCACGFAkAAyAIAIQEFAACsBAAgCQUAAPcCACDYAQAA9gIAMNkBAAAZABDaAQAA9gIAMO8BAQDHAgAh8QEBAMcCACGEAkAAyAIAIYUCQADIAgAhoQIAAPUCACADAAAAGQAgAgAAGgAwAwAAGwAgAQAAAAMAIAEAAAAHACABAAAAEAAgAQAAABAAIAEAAAAVACABAAAAGQAgAQAAAAEAIAMAAAADACACAAAFADADAAABACADAAAAAwAgAgAABQAwAwAAAQAgAwAAAAMAIAIAAAUAMAMAAAEAIBYBAACrBAAgBAAApQQAIAkAAKYEACAMAACnBAAgDQAAqAQAIA4AAKkEACAPAACqBAAg4AFAAAAAAe4BAQAAAAGFAkAAAAABhgIBAAAAAY8CAQAAAAGSAgEAAAABkwIBAAAAAZUCQAAAAAGWAgEAAAABmwIBAAAAAZwCAQAAAAGdAiAAAAABngIgAAAAAZ8CQAAAAAGgAgEAAAABARUAACcAIA_gAUAAAAAB7gEBAAAAAYUCQAAAAAGGAgEAAAABjwIBAAAAAZICAQAAAAGTAgEAAAABlQJAAAAAAZYCAQAAAAGbAgEAAAABnAIBAAAAAZ0CIAAAAAGeAiAAAAABnwJAAAAAAaACAQAAAAEBFQAAKQAwARUAACkAMAEAAAADACAWAQAA2QMAIAQAANoDACAJAADbAwAgDAAA3AMAIA0AAN0DACAOAADeAwAgDwAA3wMAIOABQACNAwAh7gEBAL4DACGFAkAAjQMAIYYCAQC-AwAhjwIBAIwDACGSAgEAjAMAIZMCAQCMAwAhlQJAAL8DACGWAgEAvgMAIZsCAQC-AwAhnAIBAIwDACGdAiAApQMAIZ4CIAClAwAhnwJAAL8DACGgAgEAvgMAIQIAAAABACAVAAAtACAP4AFAAI0DACHuAQEAvgMAIYUCQACNAwAhhgIBAL4DACGPAgEAjAMAIZICAQCMAwAhkwIBAIwDACGVAkAAvwMAIZYCAQC-AwAhmwIBAL4DACGcAgEAjAMAIZ0CIAClAwAhngIgAKUDACGfAkAAvwMAIaACAQC-AwAhAgAAAAMAIBUAAC8AIAIAAAADACAVAAAvACABAAAAAwAgAwAAAAEAIBwAACcAIB0AAC0AIAEAAAABACABAAAAAwAgCggAANYDACAiAADYAwAgIwAA1wMAIO4BAAC6AwAghgIAALoDACCVAgAAugMAIJYCAAC6AwAgmwIAALoDACCfAgAAugMAIKACAAC6AwAgEtgBAAD0AgAw2QEAADcAENoBAAD0AgAw4AFAAMACACHuAQEA5wIAIYUCQADAAgAhhgIBAOcCACGPAgEAvwIAIZICAQC_AgAhkwIBAL8CACGVAkAA6AIAIZYCAQDnAgAhmwIBAOcCACGcAgEAvwIAIZ0CIADaAgAhngIgANoCACGfAkAA6AIAIaACAQDnAgAhAwAAAAMAIAIAADYAMCEAADcAIAMAAAADACACAAAFADADAAABACAJ2AEAAPMCADDZAQAAPQAQ2gEAAPMCADDgAUAAyAIAIe8BAQDHAgAhjwIBAAAAAZgCAQDwAgAhmQJAAPECACGaAgEA8AIAIQEAAAA6ACABAAAAOgAgCdgBAADzAgAw2QEAAD0AENoBAADzAgAw4AFAAMgCACHvAQEAxwIAIY8CAQDHAgAhmAIBAPACACGZAkAA8QIAIZoCAQDwAgAhA5gCAAC6AwAgmQIAALoDACCaAgAAugMAIAMAAAA9ACACAAA-ADADAAA6ACADAAAAPQAgAgAAPgAwAwAAOgAgAwAAAD0AIAIAAD4AMAMAADoAIAbgAUAAAAAB7wEBAAAAAY8CAQAAAAGYAgEAAAABmQJAAAAAAZoCAQAAAAEBFQAAQgAgBuABQAAAAAHvAQEAAAABjwIBAAAAAZgCAQAAAAGZAkAAAAABmgIBAAAAAQEVAABEADABFQAARAAwBuABQACNAwAh7wEBAIwDACGPAgEAjAMAIZgCAQC-AwAhmQJAAL8DACGaAgEAvgMAIQIAAAA6ACAVAABHACAG4AFAAI0DACHvAQEAjAMAIY8CAQCMAwAhmAIBAL4DACGZAkAAvwMAIZoCAQC-AwAhAgAAAD0AIBUAAEkAIAIAAAA9ACAVAABJACADAAAAOgAgHAAAQgAgHQAARwAgAQAAADoAIAEAAAA9ACAGCAAA0wMAICIAANUDACAjAADUAwAgmAIAALoDACCZAgAAugMAIJoCAAC6AwAgCdgBAADyAgAw2QEAAFAAENoBAADyAgAw4AFAAMACACHvAQEAvwIAIY8CAQC_AgAhmAIBAOcCACGZAkAA6AIAIZoCAQDnAgAhAwAAAD0AIAIAAE8AMCEAAFAAIAMAAAA9ACACAAA-ADADAAA6ACAJ2AEAAO8CADDZAQAAVgAQ2gEAAO8CADDgAUAAyAIAIY8CAQAAAAGXAgEAxwIAIZgCAQDwAgAhmQJAAPECACGaAgEA8AIAIQEAAABTACABAAAAUwAgCdgBAADvAgAw2QEAAFYAENoBAADvAgAw4AFAAMgCACGPAgEAxwIAIZcCAQDHAgAhmAIBAPACACGZAkAA8QIAIZoCAQDwAgAhA5gCAAC6AwAgmQIAALoDACCaAgAAugMAIAMAAABWACACAABXADADAABTACADAAAAVgAgAgAAVwAwAwAAUwAgAwAAAFYAIAIAAFcAMAMAAFMAIAbgAUAAAAABjwIBAAAAAZcCAQAAAAGYAgEAAAABmQJAAAAAAZoCAQAAAAEBFQAAWwAgBuABQAAAAAGPAgEAAAABlwIBAAAAAZgCAQAAAAGZAkAAAAABmgIBAAAAAQEVAABdADABFQAAXQAwBuABQACNAwAhjwIBAIwDACGXAgEAjAMAIZgCAQC-AwAhmQJAAL8DACGaAgEAvgMAIQIAAABTACAVAABgACAG4AFAAI0DACGPAgEAjAMAIZcCAQCMAwAhmAIBAL4DACGZAkAAvwMAIZoCAQC-AwAhAgAAAFYAIBUAAGIAIAIAAABWACAVAABiACADAAAAUwAgHAAAWwAgHQAAYAAgAQAAAFMAIAEAAABWACAGCAAA0AMAICIAANIDACAjAADRAwAgmAIAALoDACCZAgAAugMAIJoCAAC6AwAgCdgBAADuAgAw2QEAAGkAENoBAADuAgAw4AFAAMACACGPAgEAvwIAIZcCAQC_AgAhmAIBAOcCACGZAkAA6AIAIZoCAQDnAgAhAwAAAFYAIAIAAGgAMCEAAGkAIAMAAABWACACAABXADADAABTACABAAAACQAgAQAAAAkAIAMAAAAHACACAAAIADADAAAJACADAAAABwAgAgAACAAwAwAACQAgAwAAAAcAIAIAAAgAMAMAAAkAIA0FAADOAwAgBwAAzwMAIOABQAAAAAHxAQEAAAABhQJAAAAAAY8CAQAAAAGQAgEAAAABkQIBAAAAAZICAQAAAAGTAgEAAAABlAIBAAAAAZUCQAAAAAGWAgEAAAABARUAAHEAIAvgAUAAAAAB8QEBAAAAAYUCQAAAAAGPAgEAAAABkAIBAAAAAZECAQAAAAGSAgEAAAABkwIBAAAAAZQCAQAAAAGVAkAAAAABlgIBAAAAAQEVAABzADABFQAAcwAwDQUAAMADACAHAADBAwAg4AFAAI0DACHxAQEAjAMAIYUCQACNAwAhjwIBAIwDACGQAgEAjAMAIZECAQCMAwAhkgIBAIwDACGTAgEAjAMAIZQCAQC-AwAhlQJAAL8DACGWAgEAvgMAIQIAAAAJACAVAAB2ACAL4AFAAI0DACHxAQEAjAMAIYUCQACNAwAhjwIBAIwDACGQAgEAjAMAIZECAQCMAwAhkgIBAIwDACGTAgEAjAMAIZQCAQC-AwAhlQJAAL8DACGWAgEAvgMAIQIAAAAHACAVAAB4ACACAAAABwAgFQAAeAAgAwAAAAkAIBwAAHEAIB0AAHYAIAEAAAAJACABAAAABwAgBggAALsDACAiAAC9AwAgIwAAvAMAIJQCAAC6AwAglQIAALoDACCWAgAAugMAIA7YAQAA5gIAMNkBAAB_ABDaAQAA5gIAMOABQADAAgAh8QEBAL8CACGFAkAAwAIAIY8CAQC_AgAhkAIBAL8CACGRAgEAvwIAIZICAQC_AgAhkwIBAL8CACGUAgEA5wIAIZUCQADoAgAhlgIBAOcCACEDAAAABwAgAgAAfgAwIQAAfwAgAwAAAAcAIAIAAAgAMAMAAAkAIAEAAAANACABAAAADQAgAwAAAAsAIAIAAAwAMAMAAA0AIAMAAAALACACAAAMADADAAANACADAAAACwAgAgAADAAwAwAADQAgBgYAALkDACDgAUAAAAAB7wEBAAAAAYUCQAAAAAGMAgEAAAABjgIAAACOAgIBFQAAhwEAIAXgAUAAAAAB7wEBAAAAAYUCQAAAAAGMAgEAAAABjgIAAACOAgIBFQAAiQEAMAEVAACJAQAwBgYAALgDACDgAUAAjQMAIe8BAQCMAwAhhQJAAI0DACGMAgEAjAMAIY4CAAC3A44CIgIAAAANACAVAACMAQAgBeABQACNAwAh7wEBAIwDACGFAkAAjQMAIYwCAQCMAwAhjgIAALcDjgIiAgAAAAsAIBUAAI4BACACAAAACwAgFQAAjgEAIAMAAAANACAcAACHAQAgHQAAjAEAIAEAAAANACABAAAACwAgAwgAALQDACAiAAC2AwAgIwAAtQMAIAjYAQAA4gIAMNkBAACVAQAQ2gEAAOICADDgAUAAwAIAIe8BAQC_AgAhhQJAAMACACGMAgEAvwIAIY4CAADjAo4CIgMAAAALACACAACUAQAwIQAAlQEAIAMAAAALACACAAAMADADAAANACABAAAAEgAgAQAAABIAIAMAAAAQACACAAARADADAAASACADAAAAEAAgAgAAEQAwAwAAEgAgAwAAABAAIAIAABEAMAMAABIAIAUKAACyAwAgCwAAswMAIIkCAQAAAAGKAgEAAAABiwICAAAAAQEVAACdAQAgA4kCAQAAAAGKAgEAAAABiwICAAAAAQEVAACfAQAwARUAAJ8BADAFCgAAsAMAIAsAALEDACCJAgEAjAMAIYoCAQCMAwAhiwICAJYDACECAAAAEgAgFQAAogEAIAOJAgEAjAMAIYoCAQCMAwAhiwICAJYDACECAAAAEAAgFQAApAEAIAIAAAAQACAVAACkAQAgAwAAABIAIBwAAJ0BACAdAACiAQAgAQAAABIAIAEAAAAQACAFCAAAqwMAICIAAK4DACAjAACtAwAgdAAArAMAIHUAAK8DACAG2AEAAOECADDZAQAAqwEAENoBAADhAgAwiQIBAL8CACGKAgEAvwIAIYsCAgDPAgAhAwAAABAAIAIAAKoBADAhAACrAQAgAwAAABAAIAIAABEAMAMAABIAIAEAAAAXACABAAAAFwAgAwAAABUAIAIAABYAMAMAABcAIAMAAAAVACACAAAWADADAAAXACADAAAAFQAgAgAAFgAwAwAAFwAgBAUAAKoDACDgAUAAAAAB7wEBAAAAAfEBAQAAAAEBFQAAswEAIAPgAUAAAAAB7wEBAAAAAfEBAQAAAAEBFQAAtQEAMAEVAAC1AQAwBAUAAKkDACDgAUAAjQMAIe8BAQCMAwAh8QEBAIwDACECAAAAFwAgFQAAuAEAIAPgAUAAjQMAIe8BAQCMAwAh8QEBAIwDACECAAAAFQAgFQAAugEAIAIAAAAVACAVAAC6AQAgAwAAABcAIBwAALMBACAdAAC4AQAgAQAAABcAIAEAAAAVACADCAAApgMAICIAAKgDACAjAACnAwAgBtgBAADgAgAw2QEAAMEBABDaAQAA4AIAMOABQADAAgAh7wEBAL8CACHxAQEAvwIAIQMAAAAVACACAADAAQAwIQAAwQEAIAMAAAAVACACAAAWADADAAAXACAJ2AEAAN0CADDZAQAAxwEAENoBAADdAgAw4AFAAMgCACHvAQEAxwIAIYUCQADIAgAhhgIBAMcCACGHAiAA3gIAIYgCAADfAgAgAQAAAMQBACABAAAAxAEAIAjYAQAA3QIAMNkBAADHAQAQ2gEAAN0CADDgAUAAyAIAIe8BAQDHAgAhhQJAAMgCACGGAgEAxwIAIYcCIADeAgAhAAMAAADHAQAgAgAAyAEAMAMAAMQBACADAAAAxwEAIAIAAMgBADADAADEAQAgAwAAAMcBACACAADIAQAwAwAAxAEAIAXgAUAAAAAB7wEBAAAAAYUCQAAAAAGGAgEAAAABhwIgAAAAAQEVAADMAQAgBeABQAAAAAHvAQEAAAABhQJAAAAAAYYCAQAAAAGHAiAAAAABARUAAM4BADABFQAAzgEAMAXgAUAAjQMAIe8BAQCMAwAhhQJAAI0DACGGAgEAjAMAIYcCIAClAwAhAgAAAMQBACAVAADRAQAgBeABQACNAwAh7wEBAIwDACGFAkAAjQMAIYYCAQCMAwAhhwIgAKUDACECAAAAxwEAIBUAANMBACACAAAAxwEAIBUAANMBACADAAAAxAEAIBwAAMwBACAdAADRAQAgAQAAAMQBACABAAAAxwEAIAMIAACiAwAgIgAApAMAICMAAKMDACAI2AEAANkCADDZAQAA2gEAENoBAADZAgAw4AFAAMACACHvAQEAvwIAIYUCQADAAgAhhgIBAL8CACGHAiAA2gIAIQMAAADHAQAgAgAA2QEAMCEAANoBACADAAAAxwEAIAIAAMgBADADAADEAQAgAQAAABsAIAEAAAAbACADAAAAGQAgAgAAGgAwAwAAGwAgAwAAABkAIAIAABoAMAMAABsAIAMAAAAZACACAAAaADADAAAbACAFBQAAoQMAIO8BAQAAAAHxAQEAAAABhAJAAAAAAYUCQAAAAAEBFQAA4gEAIATvAQEAAAAB8QEBAAAAAYQCQAAAAAGFAkAAAAABARUAAOQBADABFQAA5AEAMAUFAACgAwAg7wEBAIwDACHxAQEAjAMAIYQCQACNAwAhhQJAAI0DACECAAAAGwAgFQAA5wEAIATvAQEAjAMAIfEBAQCMAwAhhAJAAI0DACGFAkAAjQMAIQIAAAAZACAVAADpAQAgAgAAABkAIBUAAOkBACADAAAAGwAgHAAA4gEAIB0AAOcBACABAAAAGwAgAQAAABkAIAMIAACdAwAgIgAAnwMAICMAAJ4DACAH2AEAANgCADDZAQAA8AEAENoBAADYAgAw7wEBAL8CACHxAQEAvwIAIYQCQADAAgAhhQJAAMACACEDAAAAGQAgAgAA7wEAMCEAAPABACADAAAAGQAgAgAAGgAwAwAAGwAgDdgBAADVAgAw2QEAAPYBABDaAQAA1QIAMPEBAQAAAAHyAQEAxwIAIfMBAQDHAgAh9AECANYCACH1AQAA0AIAIPYBAADQAgAg9wEAANACACD4AQIAAAAB-QEBAMcCACH6AQAA1wIAIAEAAADzAQAgAQAAAPMBACAN2AEAANUCADDZAQAA9gEAENoBAADVAgAw8QEBAMcCACHyAQEAxwIAIfMBAQDHAgAh9AECANYCACH1AQAA0AIAIPYBAADQAgAg9wEAANACACD4AQIA1gIAIfkBAQDHAgAh-gEAANcCACAAAwAAAPYBACACAAD3AQAwAwAA8wEAIAMAAAD2AQAgAgAA9wEAMAMAAPMBACADAAAA9gEAIAIAAPcBADADAADzAQAgCvEBAQAAAAHyAQEAAAAB8wEBAAAAAfQBAgAAAAH1AQAAmgMAIPYBAACbAwAg9wEAAJwDACD4AQIAAAAB-QEBAAAAAfoBgAAAAAEBFQAA-wEAIArxAQEAAAAB8gEBAAAAAfMBAQAAAAH0AQIAAAAB9QEAAJoDACD2AQAAmwMAIPcBAACcAwAg-AECAAAAAfkBAQAAAAH6AYAAAAABARUAAP0BADABFQAA_QEAMArxAQEAjAMAIfIBAQCMAwAh8wEBAIwDACH0AQIAlgMAIfUBAACXAwAg9gEAAJgDACD3AQAAmQMAIPgBAgCWAwAh-QEBAIwDACH6AYAAAAABAgAAAPMBACAVAACAAgAgCvEBAQCMAwAh8gEBAIwDACHzAQEAjAMAIfQBAgCWAwAh9QEAAJcDACD2AQAAmAMAIPcBAACZAwAg-AECAJYDACH5AQEAjAMAIfoBgAAAAAECAAAA9gEAIBUAAIICACACAAAA9gEAIBUAAIICACADAAAA8wEAIBwAAPsBACAdAACAAgAgAQAAAPMBACABAAAA9gEAIAUIAACRAwAgIgAAlAMAICMAAJMDACB0AACSAwAgdQAAlQMAIA3YAQAAzgIAMNkBAACJAgAQ2gEAAM4CADDxAQEAvwIAIfIBAQC_AgAh8wEBAL8CACH0AQIAzwIAIfUBAADQAgAg9gEAANACACD3AQAA0AIAIPgBAgDPAgAh-QEBAL8CACH6AQAA0QIAIAMAAAD2AQAgAgAAiAIAMCEAAIkCACADAAAA9gEAIAIAAPcBADADAADzAQAgBtgBAADMAgAw2QEAAI8CABDaAQAAzAIAMO4BAQDHAgAh7wEBAMcCACHwAQAAzQIAIAEAAACMAgAgAQAAAIwCACAF2AEAAMwCADDZAQAAjwIAENoBAADMAgAw7gEBAMcCACHvAQEAxwIAIQADAAAAjwIAIAIAAJACADADAACMAgAgAwAAAI8CACACAACQAgAwAwAAjAIAIAMAAACPAgAgAgAAkAIAMAMAAIwCACAC7gEBAAAAAe8BAQAAAAEBFQAAlAIAIALuAQEAAAAB7wEBAAAAAQEVAACWAgAwARUAAJYCADAC7gEBAIwDACHvAQEAjAMAIQIAAACMAgAgFQAAmQIAIALuAQEAjAMAIe8BAQCMAwAhAgAAAI8CACAVAACbAgAgAgAAAI8CACAVAACbAgAgAwAAAIwCACAcAACUAgAgHQAAmQIAIAEAAACMAgAgAQAAAI8CACADCAAAjgMAICIAAJADACAjAACPAwAgBdgBAADLAgAw2QEAAKICABDaAQAAywIAMO4BAQC_AgAh7wEBAL8CACEDAAAAjwIAIAIAAKECADAhAACiAgAgAwAAAI8CACACAACQAgAwAwAAjAIAIAvYAQAAxgIAMNkBAACoAgAQ2gEAAMYCADDbAQEAxwIAIdwBAQDHAgAh3QEBAMcCACHeAQEAxwIAId8BAQDHAgAh4AFAAMgCACHsAQAAyQIAIO0BAADKAgAgAQAAAKUCACABAAAApQIAIAnYAQAAxgIAMNkBAACoAgAQ2gEAAMYCADDbAQEAxwIAIdwBAQDHAgAh3QEBAMcCACHeAQEAxwIAId8BAQDHAgAh4AFAAMgCACEAAwAAAKgCACACAACpAgAwAwAApQIAIAMAAACoAgAgAgAAqQIAMAMAAKUCACADAAAAqAIAIAIAAKkCADADAAClAgAgBtsBAQAAAAHcAQEAAAAB3QEBAAAAAd4BAQAAAAHfAQEAAAAB4AFAAAAAAQEVAACtAgAgBtsBAQAAAAHcAQEAAAAB3QEBAAAAAd4BAQAAAAHfAQEAAAAB4AFAAAAAAQEVAACvAgAwARUAAK8CADAG2wEBAIwDACHcAQEAjAMAId0BAQCMAwAh3gEBAIwDACHfAQEAjAMAIeABQACNAwAhAgAAAKUCACAVAACyAgAgBtsBAQCMAwAh3AEBAIwDACHdAQEAjAMAId4BAQCMAwAh3wEBAIwDACHgAUAAjQMAIQIAAACoAgAgFQAAtAIAIAIAAACoAgAgFQAAtAIAIAMAAAClAgAgHAAArQIAIB0AALICACABAAAApQIAIAEAAACoAgAgAwgAAIkDACAiAACLAwAgIwAAigMAIAnYAQAAvgIAMNkBAAC7AgAQ2gEAAL4CADDbAQEAvwIAIdwBAQC_AgAh3QEBAL8CACHeAQEAvwIAId8BAQC_AgAh4AFAAMACACEDAAAAqAIAIAIAALoCADAhAAC7AgAgAwAAAKgCACACAACpAgAwAwAApQIAIAnYAQAAvgIAMNkBAAC7AgAQ2gEAAL4CADDbAQEAvwIAIdwBAQC_AgAh3QEBAL8CACHeAQEAvwIAId8BAQC_AgAh4AFAAMACACEOCAAAwgIAICIAAMUCACAjAADFAgAg4QEBAAAAAeIBAQAAAATjAQEAAAAE5AEBAAAAAeUBAQAAAAHmAQEAAAAB5wEBAAAAAegBAQDEAgAh6QEBAAAAAeoBAQAAAAHrAQEAAAABCwgAAMICACAiAADDAgAgIwAAwwIAIOEBQAAAAAHiAUAAAAAE4wFAAAAABOQBQAAAAAHlAUAAAAAB5gFAAAAAAecBQAAAAAHoAUAAwQIAIQsIAADCAgAgIgAAwwIAICMAAMMCACDhAUAAAAAB4gFAAAAABOMBQAAAAATkAUAAAAAB5QFAAAAAAeYBQAAAAAHnAUAAAAAB6AFAAMECACEI4QECAAAAAeIBAgAAAATjAQIAAAAE5AECAAAAAeUBAgAAAAHmAQIAAAAB5wECAAAAAegBAgDCAgAhCOEBQAAAAAHiAUAAAAAE4wFAAAAABOQBQAAAAAHlAUAAAAAB5gFAAAAAAecBQAAAAAHoAUAAwwIAIQ4IAADCAgAgIgAAxQIAICMAAMUCACDhAQEAAAAB4gEBAAAABOMBAQAAAATkAQEAAAAB5QEBAAAAAeYBAQAAAAHnAQEAAAAB6AEBAMQCACHpAQEAAAAB6gEBAAAAAesBAQAAAAEL4QEBAAAAAeIBAQAAAATjAQEAAAAE5AEBAAAAAeUBAQAAAAHmAQEAAAAB5wEBAAAAAegBAQDFAgAh6QEBAAAAAeoBAQAAAAHrAQEAAAABCdgBAADGAgAw2QEAAKgCABDaAQAAxgIAMNsBAQDHAgAh3AEBAMcCACHdAQEAxwIAId4BAQDHAgAh3wEBAMcCACHgAUAAyAIAIQvhAQEAAAAB4gEBAAAABOMBAQAAAATkAQEAAAAB5QEBAAAAAeYBAQAAAAHnAQEAAAAB6AEBAMUCACHpAQEAAAAB6gEBAAAAAesBAQAAAAEI4QFAAAAAAeIBQAAAAATjAUAAAAAE5AFAAAAAAeUBQAAAAAHmAUAAAAAB5wFAAAAAAegBQADDAgAhAtsBAQAAAAHdAQEAAAABAtsBAQAAAAHcAQEAAAABBdgBAADLAgAw2QEAAKICABDaAQAAywIAMO4BAQC_AgAh7wEBAL8CACEF2AEAAMwCADDZAQAAjwIAENoBAADMAgAw7gEBAMcCACHvAQEAxwIAIQLuAQEAAAAB7wEBAAAAAQ3YAQAAzgIAMNkBAACJAgAQ2gEAAM4CADDxAQEAvwIAIfIBAQC_AgAh8wEBAL8CACH0AQIAzwIAIfUBAADQAgAg9gEAANACACD3AQAA0AIAIPgBAgDPAgAh-QEBAL8CACH6AQAA0QIAIA0IAADCAgAgIgAAwgIAICMAAMICACB0AADUAgAgdQAAwgIAIOEBAgAAAAHiAQIAAAAE4wECAAAABOQBAgAAAAHlAQIAAAAB5gECAAAAAecBAgAAAAHoAQIA0wIAIQThAQEAAAAFgQIBAAAAAYICAQAAAASDAgEAAAAEDwgAAMICACAiAADSAgAgIwAA0gIAIOEBgAAAAAHkAYAAAAAB5QGAAAAAAeYBgAAAAAHnAYAAAAAB6AGAAAAAAfsBAQAAAAH8AQEAAAAB_QEBAAAAAf4BgAAAAAH_AYAAAAABgAKAAAAAAQzhAYAAAAAB5AGAAAAAAeUBgAAAAAHmAYAAAAAB5wGAAAAAAegBgAAAAAH7AQEAAAAB_AEBAAAAAf0BAQAAAAH-AYAAAAAB_wGAAAAAAYACgAAAAAENCAAAwgIAICIAAMICACAjAADCAgAgdAAA1AIAIHUAAMICACDhAQIAAAAB4gECAAAABOMBAgAAAATkAQIAAAAB5QECAAAAAeYBAgAAAAHnAQIAAAAB6AECANMCACEI4QEIAAAAAeIBCAAAAATjAQgAAAAE5AEIAAAAAeUBCAAAAAHmAQgAAAAB5wEIAAAAAegBCADUAgAhDdgBAADVAgAw2QEAAPYBABDaAQAA1QIAMPEBAQDHAgAh8gEBAMcCACHzAQEAxwIAIfQBAgDWAgAh9QEAANACACD2AQAA0AIAIPcBAADQAgAg-AECANYCACH5AQEAxwIAIfoBAADXAgAgCOEBAgAAAAHiAQIAAAAE4wECAAAABOQBAgAAAAHlAQIAAAAB5gECAAAAAecBAgAAAAHoAQIAwgIAIQzhAYAAAAAB5AGAAAAAAeUBgAAAAAHmAYAAAAAB5wGAAAAAAegBgAAAAAH7AQEAAAAB_AEBAAAAAf0BAQAAAAH-AYAAAAAB_wGAAAAAAYACgAAAAAEH2AEAANgCADDZAQAA8AEAENoBAADYAgAw7wEBAL8CACHxAQEAvwIAIYQCQADAAgAhhQJAAMACACEI2AEAANkCADDZAQAA2gEAENoBAADZAgAw4AFAAMACACHvAQEAvwIAIYUCQADAAgAhhgIBAL8CACGHAiAA2gIAIQUIAADCAgAgIgAA3AIAICMAANwCACDhASAAAAAB6AEgANsCACEFCAAAwgIAICIAANwCACAjAADcAgAg4QEgAAAAAegBIADbAgAhAuEBIAAAAAHoASAA3AIAIQjYAQAA3QIAMNkBAADHAQAQ2gEAAN0CADDgAUAAyAIAIe8BAQDHAgAhhQJAAMgCACGGAgEAxwIAIYcCIADeAgAhAuEBIAAAAAHoASAA3AIAIQLvAQEAAAABhgIBAAAAAQbYAQAA4AIAMNkBAADBAQAQ2gEAAOACADDgAUAAwAIAIe8BAQC_AgAh8QEBAL8CACEG2AEAAOECADDZAQAAqwEAENoBAADhAgAwiQIBAL8CACGKAgEAvwIAIYsCAgDPAgAhCNgBAADiAgAw2QEAAJUBABDaAQAA4gIAMOABQADAAgAh7wEBAL8CACGFAkAAwAIAIYwCAQC_AgAhjgIAAOMCjgIiBwgAAMICACAiAADlAgAgIwAA5QIAIOEBAAAAjgIC4gEAAACOAgjjAQAAAI4CCOgBAADkAo4CIgcIAADCAgAgIgAA5QIAICMAAOUCACDhAQAAAI4CAuIBAAAAjgII4wEAAACOAgjoAQAA5AKOAiIE4QEAAACOAgLiAQAAAI4CCOMBAAAAjgII6AEAAOUCjgIiDtgBAADmAgAw2QEAAH8AENoBAADmAgAw4AFAAMACACHxAQEAvwIAIYUCQADAAgAhjwIBAL8CACGQAgEAvwIAIZECAQC_AgAhkgIBAL8CACGTAgEAvwIAIZQCAQDnAgAhlQJAAOgCACGWAgEA5wIAIQ4IAADqAgAgIgAA7QIAICMAAO0CACDhAQEAAAAB4gEBAAAABeMBAQAAAAXkAQEAAAAB5QEBAAAAAeYBAQAAAAHnAQEAAAAB6AEBAOwCACHpAQEAAAAB6gEBAAAAAesBAQAAAAELCAAA6gIAICIAAOsCACAjAADrAgAg4QFAAAAAAeIBQAAAAAXjAUAAAAAF5AFAAAAAAeUBQAAAAAHmAUAAAAAB5wFAAAAAAegBQADpAgAhCwgAAOoCACAiAADrAgAgIwAA6wIAIOEBQAAAAAHiAUAAAAAF4wFAAAAABeQBQAAAAAHlAUAAAAAB5gFAAAAAAecBQAAAAAHoAUAA6QIAIQjhAQIAAAAB4gECAAAABeMBAgAAAAXkAQIAAAAB5QECAAAAAeYBAgAAAAHnAQIAAAAB6AECAOoCACEI4QFAAAAAAeIBQAAAAAXjAUAAAAAF5AFAAAAAAeUBQAAAAAHmAUAAAAAB5wFAAAAAAegBQADrAgAhDggAAOoCACAiAADtAgAgIwAA7QIAIOEBAQAAAAHiAQEAAAAF4wEBAAAABeQBAQAAAAHlAQEAAAAB5gEBAAAAAecBAQAAAAHoAQEA7AIAIekBAQAAAAHqAQEAAAAB6wEBAAAAAQvhAQEAAAAB4gEBAAAABeMBAQAAAAXkAQEAAAAB5QEBAAAAAeYBAQAAAAHnAQEAAAAB6AEBAO0CACHpAQEAAAAB6gEBAAAAAesBAQAAAAEJ2AEAAO4CADDZAQAAaQAQ2gEAAO4CADDgAUAAwAIAIY8CAQC_AgAhlwIBAL8CACGYAgEA5wIAIZkCQADoAgAhmgIBAOcCACEJ2AEAAO8CADDZAQAAVgAQ2gEAAO8CADDgAUAAyAIAIY8CAQDHAgAhlwIBAMcCACGYAgEA8AIAIZkCQADxAgAhmgIBAPACACEL4QEBAAAAAeIBAQAAAAXjAQEAAAAF5AEBAAAAAeUBAQAAAAHmAQEAAAAB5wEBAAAAAegBAQDtAgAh6QEBAAAAAeoBAQAAAAHrAQEAAAABCOEBQAAAAAHiAUAAAAAF4wFAAAAABeQBQAAAAAHlAUAAAAAB5gFAAAAAAecBQAAAAAHoAUAA6wIAIQnYAQAA8gIAMNkBAABQABDaAQAA8gIAMOABQADAAgAh7wEBAL8CACGPAgEAvwIAIZgCAQDnAgAhmQJAAOgCACGaAgEA5wIAIQnYAQAA8wIAMNkBAAA9ABDaAQAA8wIAMOABQADIAgAh7wEBAMcCACGPAgEAxwIAIZgCAQDwAgAhmQJAAPECACGaAgEA8AIAIRLYAQAA9AIAMNkBAAA3ABDaAQAA9AIAMOABQADAAgAh7gEBAOcCACGFAkAAwAIAIYYCAQDnAgAhjwIBAL8CACGSAgEAvwIAIZMCAQC_AgAhlQJAAOgCACGWAgEA5wIAIZsCAQDnAgAhnAIBAL8CACGdAiAA2gIAIZ4CIADaAgAhnwJAAOgCACGgAgEA5wIAIQLvAQEAAAAB8QEBAAAAAQgFAAD3AgAg2AEAAPYCADDZAQAAGQAQ2gEAAPYCADDvAQEAxwIAIfEBAQDHAgAhhAJAAMgCACGFAkAAyAIAIRsBAACDAwAgBAAAhAMAIAkAAIUDACAMAACGAwAgDQAAhgMAIA4AAIcDACAPAACIAwAg2AEAAIIDADDZAQAAAwAQ2gEAAIIDADDgAUAAyAIAIe4BAQDwAgAhhQJAAMgCACGGAgEA8AIAIY8CAQDHAgAhkgIBAMcCACGTAgEAxwIAIZUCQADxAgAhlgIBAPACACGbAgEA8AIAIZwCAQDHAgAhnQIgAN4CACGeAiAA3gIAIZ8CQADxAgAhoAIBAPACACGnAgAAAwAgqAIAAAMAIALvAQEAAAAB8QEBAAAAAQcFAAD3AgAg2AEAAPkCADDZAQAAFQAQ2gEAAPkCADDgAUAAyAIAIe8BAQDHAgAh8QEBAMcCACECiQIBAAAAAYoCAQAAAAEICgAA9wIAIAsAAPcCACDYAQAA-wIAMNkBAAAQABDaAQAA-wIAMIkCAQDHAgAhigIBAMcCACGLAgIA1gIAIQLvAQEAAAABjAIBAAAAAQkGAAD_AgAg2AEAAP0CADDZAQAACwAQ2gEAAP0CADDgAUAAyAIAIe8BAQDHAgAhhQJAAMgCACGMAgEAxwIAIY4CAAD-Ao4CIgThAQAAAI4CAuIBAAAAjgII4wEAAACOAgjoAQAA5QKOAiISBQAA9wIAIAcAAIEDACDYAQAAgAMAMNkBAAAHABDaAQAAgAMAMOABQADIAgAh8QEBAMcCACGFAkAAyAIAIY8CAQDHAgAhkAIBAMcCACGRAgEAxwIAIZICAQDHAgAhkwIBAMcCACGUAgEA8AIAIZUCQADxAgAhlgIBAPACACGnAgAABwAgqAIAAAcAIBAFAAD3AgAgBwAAgQMAINgBAACAAwAw2QEAAAcAENoBAACAAwAw4AFAAMgCACHxAQEAxwIAIYUCQADIAgAhjwIBAMcCACGQAgEAxwIAIZECAQDHAgAhkgIBAMcCACGTAgEAxwIAIZQCAQDwAgAhlQJAAPECACGWAgEA8AIAIQOkAgAACwAgpQIAAAsAIKYCAAALACAZAQAAgwMAIAQAAIQDACAJAACFAwAgDAAAhgMAIA0AAIYDACAOAACHAwAgDwAAiAMAINgBAACCAwAw2QEAAAMAENoBAACCAwAw4AFAAMgCACHuAQEA8AIAIYUCQADIAgAhhgIBAPACACGPAgEAxwIAIZICAQDHAgAhkwIBAMcCACGVAkAA8QIAIZYCAQDwAgAhmwIBAPACACGcAgEAxwIAIZ0CIADeAgAhngIgAN4CACGfAkAA8QIAIaACAQDwAgAhGwEAAIMDACAEAACEAwAgCQAAhQMAIAwAAIYDACANAACGAwAgDgAAhwMAIA8AAIgDACDYAQAAggMAMNkBAAADABDaAQAAggMAMOABQADIAgAh7gEBAPACACGFAkAAyAIAIYYCAQDwAgAhjwIBAMcCACGSAgEAxwIAIZMCAQDHAgAhlQJAAPECACGWAgEA8AIAIZsCAQDwAgAhnAIBAMcCACGdAiAA3gIAIZ4CIADeAgAhnwJAAPECACGgAgEA8AIAIacCAAADACCoAgAAAwAgA6QCAAADACClAgAAAwAgpgIAAAMAIAOkAgAABwAgpQIAAAcAIKYCAAAHACADpAIAABAAIKUCAAAQACCmAgAAEAAgA6QCAAAVACClAgAAFQAgpgIAABUAIAOkAgAAGQAgpQIAABkAIKYCAAAZACAAAAABrAIBAAAAAQGsAkAAAAABAAAAAAAAAAAFrAICAAAAAbMCAgAAAAG0AgIAAAABtQICAAAAAbYCAgAAAAECrAIBAAAABLICAQAAAAUCrAIBAAAABLICAQAAAAUCrAIBAAAABLICAQAAAAUBrAIBAAAABAGsAgEAAAAEAawCAQAAAAQAAAAFHAAA2QQAIB0AANwEACCpAgAA2gQAIKoCAADbBAAgrwIAAAEAIAMcAADZBAAgqQIAANoEACCvAgAAAQAgAAAAAawCIAAAAAEAAAAFHAAA1AQAIB0AANcEACCpAgAA1QQAIKoCAADWBAAgrwIAAAEAIAMcAADUBAAgqQIAANUEACCvAgAAAQAgAAAAAAAFHAAAzAQAIB0AANIEACCpAgAAzQQAIKoCAADRBAAgrwIAAAEAIAUcAADKBAAgHQAAzwQAIKkCAADLBAAgqgIAAM4EACCvAgAAAQAgAxwAAMwEACCpAgAAzQQAIK8CAAABACADHAAAygQAIKkCAADLBAAgrwIAAAEAIAAAAAGsAgAAAI4CAgUcAADFBAAgHQAAyAQAIKkCAADGBAAgqgIAAMcEACCvAgAACQAgAxwAAMUEACCpAgAAxgQAIK8CAAAJACAAAAAAAawCAQAAAAEBrAJAAAAAAQUcAAC_BAAgHQAAwwQAIKkCAADABAAgqgIAAMIEACCvAgAAAQAgCxwAAMIDADAdAADHAwAwqQIAAMMDADCqAgAAxAMAMKsCAADFAwAgrAIAAMYDADCtAgAAxgMAMK4CAADGAwAwrwIAAMYDADCwAgAAyAMAMLECAADJAwAwBOABQAAAAAHvAQEAAAABhQJAAAAAAY4CAAAAjgICAgAAAA0AIBwAAM0DACADAAAADQAgHAAAzQMAIB0AAMwDACABFQAAwQQAMAoGAAD_AgAg2AEAAP0CADDZAQAACwAQ2gEAAP0CADDgAUAAyAIAIe8BAQDHAgAhhQJAAMgCACGMAgEAxwIAIY4CAAD-Ao4CIqMCAAD8AgAgAgAAAA0AIBUAAMwDACACAAAAygMAIBUAAMsDACAI2AEAAMkDADDZAQAAygMAENoBAADJAwAw4AFAAMgCACHvAQEAxwIAIYUCQADIAgAhjAIBAMcCACGOAgAA_gKOAiII2AEAAMkDADDZAQAAygMAENoBAADJAwAw4AFAAMgCACHvAQEAxwIAIYUCQADIAgAhjAIBAMcCACGOAgAA_gKOAiIE4AFAAI0DACHvAQEAjAMAIYUCQACNAwAhjgIAALcDjgIiBOABQACNAwAh7wEBAIwDACGFAkAAjQMAIY4CAAC3A44CIgTgAUAAAAAB7wEBAAAAAYUCQAAAAAGOAgAAAI4CAgMcAAC_BAAgqQIAAMAEACCvAgAAAQAgBBwAAMIDADCpAgAAwwMAMKsCAADFAwAgrwIAAMYDADAAAAAAAAAAAAAHHAAAtAQAIB0AAL0EACCpAgAAtQQAIKoCAAC8BAAgrQIAAAMAIK4CAAADACCvAgAAAQAgCxwAAJkEADAdAACeBAAwqQIAAJoEADCqAgAAmwQAMKsCAACcBAAgrAIAAJ0EADCtAgAAnQQAMK4CAACdBAAwrwIAAJ0EADCwAgAAnwQAMLECAACgBAAwCxwAAI0EADAdAACSBAAwqQIAAI4EADCqAgAAjwQAMKsCAACQBAAgrAIAAJEEADCtAgAAkQQAMK4CAACRBAAwrwIAAJEEADCwAgAAkwQAMLECAACUBAAwCxwAAIQEADAdAACIBAAwqQIAAIUEADCqAgAAhgQAMKsCAACHBAAgrAIAAPwDADCtAgAA_AMAMK4CAAD8AwAwrwIAAPwDADCwAgAAiQQAMLECAAD_AwAwCxwAAPgDADAdAAD9AwAwqQIAAPkDADCqAgAA-gMAMKsCAAD7AwAgrAIAAPwDADCtAgAA_AMAMK4CAAD8AwAwrwIAAPwDADCwAgAA_gMAMLECAAD_AwAwCxwAAOwDADAdAADxAwAwqQIAAO0DADCqAgAA7gMAMKsCAADvAwAgrAIAAPADADCtAgAA8AMAMK4CAADwAwAwrwIAAPADADCwAgAA8gMAMLECAADzAwAwCxwAAOADADAdAADlAwAwqQIAAOEDADCqAgAA4gMAMKsCAADjAwAgrAIAAOQDADCtAgAA5AMAMK4CAADkAwAwrwIAAOQDADCwAgAA5gMAMLECAADnAwAwA-8BAQAAAAGEAkAAAAABhQJAAAAAAQIAAAAbACAcAADrAwAgAwAAABsAIBwAAOsDACAdAADqAwAgARUAALsEADAJBQAA9wIAINgBAAD2AgAw2QEAABkAENoBAAD2AgAw7wEBAMcCACHxAQEAxwIAIYQCQADIAgAhhQJAAMgCACGhAgAA9QIAIAIAAAAbACAVAADqAwAgAgAAAOgDACAVAADpAwAgB9gBAADnAwAw2QEAAOgDABDaAQAA5wMAMO8BAQDHAgAh8QEBAMcCACGEAkAAyAIAIYUCQADIAgAhB9gBAADnAwAw2QEAAOgDABDaAQAA5wMAMO8BAQDHAgAh8QEBAMcCACGEAkAAyAIAIYUCQADIAgAhA-8BAQCMAwAhhAJAAI0DACGFAkAAjQMAIQPvAQEAjAMAIYQCQACNAwAhhQJAAI0DACED7wEBAAAAAYQCQAAAAAGFAkAAAAABAuABQAAAAAHvAQEAAAABAgAAABcAIBwAAPcDACADAAAAFwAgHAAA9wMAIB0AAPYDACABFQAAugQAMAgFAAD3AgAg2AEAAPkCADDZAQAAFQAQ2gEAAPkCADDgAUAAyAIAIe8BAQDHAgAh8QEBAMcCACGhAgAA-AIAIAIAAAAXACAVAAD2AwAgAgAAAPQDACAVAAD1AwAgBtgBAADzAwAw2QEAAPQDABDaAQAA8wMAMOABQADIAgAh7wEBAMcCACHxAQEAxwIAIQbYAQAA8wMAMNkBAAD0AwAQ2gEAAPMDADDgAUAAyAIAIe8BAQDHAgAh8QEBAMcCACEC4AFAAI0DACHvAQEAjAMAIQLgAUAAjQMAIe8BAQCMAwAhAuABQAAAAAHvAQEAAAABAwoAALIDACCJAgEAAAABiwICAAAAAQIAAAASACAcAACDBAAgAwAAABIAIBwAAIMEACAdAACCBAAgARUAALkEADAJCgAA9wIAIAsAAPcCACDYAQAA-wIAMNkBAAAQABDaAQAA-wIAMIkCAQDHAgAhigIBAMcCACGLAgIA1gIAIaICAAD6AgAgAgAAABIAIBUAAIIEACACAAAAgAQAIBUAAIEEACAG2AEAAP8DADDZAQAAgAQAENoBAAD_AwAwiQIBAMcCACGKAgEAxwIAIYsCAgDWAgAhBtgBAAD_AwAw2QEAAIAEABDaAQAA_wMAMIkCAQDHAgAhigIBAMcCACGLAgIA1gIAIQKJAgEAjAMAIYsCAgCWAwAhAwoAALADACCJAgEAjAMAIYsCAgCWAwAhAwoAALIDACCJAgEAAAABiwICAAAAAQMLAACzAwAgigIBAAAAAYsCAgAAAAECAAAAEgAgHAAAjAQAIAMAAAASACAcAACMBAAgHQAAiwQAIAEVAAC4BAAwAgAAABIAIBUAAIsEACACAAAAgAQAIBUAAIoEACACigIBAIwDACGLAgIAlgMAIQMLAACxAwAgigIBAIwDACGLAgIAlgMAIQMLAACzAwAgigIBAAAAAYsCAgAAAAELBwAAzwMAIOABQAAAAAGFAkAAAAABjwIBAAAAAZACAQAAAAGRAgEAAAABkgIBAAAAAZMCAQAAAAGUAgEAAAABlQJAAAAAAZYCAQAAAAECAAAACQAgHAAAmAQAIAMAAAAJACAcAACYBAAgHQAAlwQAIAEVAAC3BAAwEAUAAPcCACAHAACBAwAg2AEAAIADADDZAQAABwAQ2gEAAIADADDgAUAAyAIAIfEBAQDHAgAhhQJAAMgCACGPAgEAAAABkAIBAMcCACGRAgEAxwIAIZICAQDHAgAhkwIBAMcCACGUAgEA8AIAIZUCQADxAgAhlgIBAPACACECAAAACQAgFQAAlwQAIAIAAACVBAAgFQAAlgQAIA7YAQAAlAQAMNkBAACVBAAQ2gEAAJQEADDgAUAAyAIAIfEBAQDHAgAhhQJAAMgCACGPAgEAxwIAIZACAQDHAgAhkQIBAMcCACGSAgEAxwIAIZMCAQDHAgAhlAIBAPACACGVAkAA8QIAIZYCAQDwAgAhDtgBAACUBAAw2QEAAJUEABDaAQAAlAQAMOABQADIAgAh8QEBAMcCACGFAkAAyAIAIY8CAQDHAgAhkAIBAMcCACGRAgEAxwIAIZICAQDHAgAhkwIBAMcCACGUAgEA8AIAIZUCQADxAgAhlgIBAPACACEK4AFAAI0DACGFAkAAjQMAIY8CAQCMAwAhkAIBAIwDACGRAgEAjAMAIZICAQCMAwAhkwIBAIwDACGUAgEAvgMAIZUCQAC_AwAhlgIBAL4DACELBwAAwQMAIOABQACNAwAhhQJAAI0DACGPAgEAjAMAIZACAQCMAwAhkQIBAIwDACGSAgEAjAMAIZMCAQCMAwAhlAIBAL4DACGVAkAAvwMAIZYCAQC-AwAhCwcAAM8DACDgAUAAAAABhQJAAAAAAY8CAQAAAAGQAgEAAAABkQIBAAAAAZICAQAAAAGTAgEAAAABlAIBAAAAAZUCQAAAAAGWAgEAAAABFAQAAKUEACAJAACmBAAgDAAApwQAIA0AAKgEACAOAACpBAAgDwAAqgQAIOABQAAAAAHuAQEAAAABhQJAAAAAAYYCAQAAAAGPAgEAAAABkgIBAAAAAZMCAQAAAAGVAkAAAAABlgIBAAAAAZwCAQAAAAGdAiAAAAABngIgAAAAAZ8CQAAAAAGgAgEAAAABAgAAAAEAIBwAAKQEACADAAAAAQAgHAAApAQAIB0AAKMEACABFQAAtgQAMBkBAACDAwAgBAAAhAMAIAkAAIUDACAMAACGAwAgDQAAhgMAIA4AAIcDACAPAACIAwAg2AEAAIIDADDZAQAAAwAQ2gEAAIIDADDgAUAAyAIAIe4BAQDwAgAhhQJAAMgCACGGAgEA8AIAIY8CAQAAAAGSAgEAxwIAIZMCAQDHAgAhlQJAAPECACGWAgEA8AIAIZsCAQDwAgAhnAIBAMcCACGdAiAA3gIAIZ4CIADeAgAhnwJAAPECACGgAgEA8AIAIQIAAAABACAVAACjBAAgAgAAAKEEACAVAACiBAAgEtgBAACgBAAw2QEAAKEEABDaAQAAoAQAMOABQADIAgAh7gEBAPACACGFAkAAyAIAIYYCAQDwAgAhjwIBAMcCACGSAgEAxwIAIZMCAQDHAgAhlQJAAPECACGWAgEA8AIAIZsCAQDwAgAhnAIBAMcCACGdAiAA3gIAIZ4CIADeAgAhnwJAAPECACGgAgEA8AIAIRLYAQAAoAQAMNkBAAChBAAQ2gEAAKAEADDgAUAAyAIAIe4BAQDwAgAhhQJAAMgCACGGAgEA8AIAIY8CAQDHAgAhkgIBAMcCACGTAgEAxwIAIZUCQADxAgAhlgIBAPACACGbAgEA8AIAIZwCAQDHAgAhnQIgAN4CACGeAiAA3gIAIZ8CQADxAgAhoAIBAPACACEO4AFAAI0DACHuAQEAvgMAIYUCQACNAwAhhgIBAL4DACGPAgEAjAMAIZICAQCMAwAhkwIBAIwDACGVAkAAvwMAIZYCAQC-AwAhnAIBAIwDACGdAiAApQMAIZ4CIAClAwAhnwJAAL8DACGgAgEAvgMAIRQEAADaAwAgCQAA2wMAIAwAANwDACANAADdAwAgDgAA3gMAIA8AAN8DACDgAUAAjQMAIe4BAQC-AwAhhQJAAI0DACGGAgEAvgMAIY8CAQCMAwAhkgIBAIwDACGTAgEAjAMAIZUCQAC_AwAhlgIBAL4DACGcAgEAjAMAIZ0CIAClAwAhngIgAKUDACGfAkAAvwMAIaACAQC-AwAhFAQAAKUEACAJAACmBAAgDAAApwQAIA0AAKgEACAOAACpBAAgDwAAqgQAIOABQAAAAAHuAQEAAAABhQJAAAAAAYYCAQAAAAGPAgEAAAABkgIBAAAAAZMCAQAAAAGVAkAAAAABlgIBAAAAAZwCAQAAAAGdAiAAAAABngIgAAAAAZ8CQAAAAAGgAgEAAAABBBwAAJkEADCpAgAAmgQAMKsCAACcBAAgrwIAAJ0EADAEHAAAjQQAMKkCAACOBAAwqwIAAJAEACCvAgAAkQQAMAQcAACEBAAwqQIAAIUEADCrAgAAhwQAIK8CAAD8AwAwBBwAAPgDADCpAgAA-QMAMKsCAAD7AwAgrwIAAPwDADAEHAAA7AMAMKkCAADtAwAwqwIAAO8DACCvAgAA8AMAMAQcAADgAwAwqQIAAOEDADCrAgAA4wMAIK8CAADkAwAwAxwAALQEACCpAgAAtQQAIK8CAAABACAOAQAArAQAIAQAAK8EACAJAACwBAAgDAAAsQQAIA0AALEEACAOAACyBAAgDwAAswQAIO4BAAC6AwAghgIAALoDACCVAgAAugMAIJYCAAC6AwAgmwIAALoDACCfAgAAugMAIKACAAC6AwAgBQUAAKwEACAHAACuBAAglAIAALoDACCVAgAAugMAIJYCAAC6AwAgAAAAAAAAFQEAAKsEACAJAACmBAAgDAAApwQAIA0AAKgEACAOAACpBAAgDwAAqgQAIOABQAAAAAHuAQEAAAABhQJAAAAAAYYCAQAAAAGPAgEAAAABkgIBAAAAAZMCAQAAAAGVAkAAAAABlgIBAAAAAZsCAQAAAAGcAgEAAAABnQIgAAAAAZ4CIAAAAAGfAkAAAAABoAIBAAAAAQIAAAABACAcAAC0BAAgDuABQAAAAAHuAQEAAAABhQJAAAAAAYYCAQAAAAGPAgEAAAABkgIBAAAAAZMCAQAAAAGVAkAAAAABlgIBAAAAAZwCAQAAAAGdAiAAAAABngIgAAAAAZ8CQAAAAAGgAgEAAAABCuABQAAAAAGFAkAAAAABjwIBAAAAAZACAQAAAAGRAgEAAAABkgIBAAAAAZMCAQAAAAGUAgEAAAABlQJAAAAAAZYCAQAAAAECigIBAAAAAYsCAgAAAAECiQIBAAAAAYsCAgAAAAEC4AFAAAAAAe8BAQAAAAED7wEBAAAAAYQCQAAAAAGFAkAAAAABAwAAAAMAIBwAALQEACAdAAC-BAAgFwAAAAMAIAEAANkDACAJAADbAwAgDAAA3AMAIA0AAN0DACAOAADeAwAgDwAA3wMAIBUAAL4EACDgAUAAjQMAIe4BAQC-AwAhhQJAAI0DACGGAgEAvgMAIY8CAQCMAwAhkgIBAIwDACGTAgEAjAMAIZUCQAC_AwAhlgIBAL4DACGbAgEAvgMAIZwCAQCMAwAhnQIgAKUDACGeAiAApQMAIZ8CQAC_AwAhoAIBAL4DACEVAQAA2QMAIAkAANsDACAMAADcAwAgDQAA3QMAIA4AAN4DACAPAADfAwAg4AFAAI0DACHuAQEAvgMAIYUCQACNAwAhhgIBAL4DACGPAgEAjAMAIZICAQCMAwAhkwIBAIwDACGVAkAAvwMAIZYCAQC-AwAhmwIBAL4DACGcAgEAjAMAIZ0CIAClAwAhngIgAKUDACGfAkAAvwMAIaACAQC-AwAhFQEAAKsEACAEAAClBAAgDAAApwQAIA0AAKgEACAOAACpBAAgDwAAqgQAIOABQAAAAAHuAQEAAAABhQJAAAAAAYYCAQAAAAGPAgEAAAABkgIBAAAAAZMCAQAAAAGVAkAAAAABlgIBAAAAAZsCAQAAAAGcAgEAAAABnQIgAAAAAZ4CIAAAAAGfAkAAAAABoAIBAAAAAQIAAAABACAcAAC_BAAgBOABQAAAAAHvAQEAAAABhQJAAAAAAY4CAAAAjgICAwAAAAMAIBwAAL8EACAdAADEBAAgFwAAAAMAIAEAANkDACAEAADaAwAgDAAA3AMAIA0AAN0DACAOAADeAwAgDwAA3wMAIBUAAMQEACDgAUAAjQMAIe4BAQC-AwAhhQJAAI0DACGGAgEAvgMAIY8CAQCMAwAhkgIBAIwDACGTAgEAjAMAIZUCQAC_AwAhlgIBAL4DACGbAgEAvgMAIZwCAQCMAwAhnQIgAKUDACGeAiAApQMAIZ8CQAC_AwAhoAIBAL4DACEVAQAA2QMAIAQAANoDACAMAADcAwAgDQAA3QMAIA4AAN4DACAPAADfAwAg4AFAAI0DACHuAQEAvgMAIYUCQACNAwAhhgIBAL4DACGPAgEAjAMAIZICAQCMAwAhkwIBAIwDACGVAkAAvwMAIZYCAQC-AwAhmwIBAL4DACGcAgEAjAMAIZ0CIAClAwAhngIgAKUDACGfAkAAvwMAIaACAQC-AwAhDAUAAM4DACDgAUAAAAAB8QEBAAAAAYUCQAAAAAGPAgEAAAABkAIBAAAAAZECAQAAAAGSAgEAAAABkwIBAAAAAZQCAQAAAAGVAkAAAAABlgIBAAAAAQIAAAAJACAcAADFBAAgAwAAAAcAIBwAAMUEACAdAADJBAAgDgAAAAcAIAUAAMADACAVAADJBAAg4AFAAI0DACHxAQEAjAMAIYUCQACNAwAhjwIBAIwDACGQAgEAjAMAIZECAQCMAwAhkgIBAIwDACGTAgEAjAMAIZQCAQC-AwAhlQJAAL8DACGWAgEAvgMAIQwFAADAAwAg4AFAAI0DACHxAQEAjAMAIYUCQACNAwAhjwIBAIwDACGQAgEAjAMAIZECAQCMAwAhkgIBAIwDACGTAgEAjAMAIZQCAQC-AwAhlQJAAL8DACGWAgEAvgMAIRUBAACrBAAgBAAApQQAIAkAAKYEACAMAACnBAAgDgAAqQQAIA8AAKoEACDgAUAAAAAB7gEBAAAAAYUCQAAAAAGGAgEAAAABjwIBAAAAAZICAQAAAAGTAgEAAAABlQJAAAAAAZYCAQAAAAGbAgEAAAABnAIBAAAAAZ0CIAAAAAGeAiAAAAABnwJAAAAAAaACAQAAAAECAAAAAQAgHAAAygQAIBUBAACrBAAgBAAApQQAIAkAAKYEACANAACoBAAgDgAAqQQAIA8AAKoEACDgAUAAAAAB7gEBAAAAAYUCQAAAAAGGAgEAAAABjwIBAAAAAZICAQAAAAGTAgEAAAABlQJAAAAAAZYCAQAAAAGbAgEAAAABnAIBAAAAAZ0CIAAAAAGeAiAAAAABnwJAAAAAAaACAQAAAAECAAAAAQAgHAAAzAQAIAMAAAADACAcAADKBAAgHQAA0AQAIBcAAAADACABAADZAwAgBAAA2gMAIAkAANsDACAMAADcAwAgDgAA3gMAIA8AAN8DACAVAADQBAAg4AFAAI0DACHuAQEAvgMAIYUCQACNAwAhhgIBAL4DACGPAgEAjAMAIZICAQCMAwAhkwIBAIwDACGVAkAAvwMAIZYCAQC-AwAhmwIBAL4DACGcAgEAjAMAIZ0CIAClAwAhngIgAKUDACGfAkAAvwMAIaACAQC-AwAhFQEAANkDACAEAADaAwAgCQAA2wMAIAwAANwDACAOAADeAwAgDwAA3wMAIOABQACNAwAh7gEBAL4DACGFAkAAjQMAIYYCAQC-AwAhjwIBAIwDACGSAgEAjAMAIZMCAQCMAwAhlQJAAL8DACGWAgEAvgMAIZsCAQC-AwAhnAIBAIwDACGdAiAApQMAIZ4CIAClAwAhnwJAAL8DACGgAgEAvgMAIQMAAAADACAcAADMBAAgHQAA0wQAIBcAAAADACABAADZAwAgBAAA2gMAIAkAANsDACANAADdAwAgDgAA3gMAIA8AAN8DACAVAADTBAAg4AFAAI0DACHuAQEAvgMAIYUCQACNAwAhhgIBAL4DACGPAgEAjAMAIZICAQCMAwAhkwIBAIwDACGVAkAAvwMAIZYCAQC-AwAhmwIBAL4DACGcAgEAjAMAIZ0CIAClAwAhngIgAKUDACGfAkAAvwMAIaACAQC-AwAhFQEAANkDACAEAADaAwAgCQAA2wMAIA0AAN0DACAOAADeAwAgDwAA3wMAIOABQACNAwAh7gEBAL4DACGFAkAAjQMAIYYCAQC-AwAhjwIBAIwDACGSAgEAjAMAIZMCAQCMAwAhlQJAAL8DACGWAgEAvgMAIZsCAQC-AwAhnAIBAIwDACGdAiAApQMAIZ4CIAClAwAhnwJAAL8DACGgAgEAvgMAIRUBAACrBAAgBAAApQQAIAkAAKYEACAMAACnBAAgDQAAqAQAIA8AAKoEACDgAUAAAAAB7gEBAAAAAYUCQAAAAAGGAgEAAAABjwIBAAAAAZICAQAAAAGTAgEAAAABlQJAAAAAAZYCAQAAAAGbAgEAAAABnAIBAAAAAZ0CIAAAAAGeAiAAAAABnwJAAAAAAaACAQAAAAECAAAAAQAgHAAA1AQAIAMAAAADACAcAADUBAAgHQAA2AQAIBcAAAADACABAADZAwAgBAAA2gMAIAkAANsDACAMAADcAwAgDQAA3QMAIA8AAN8DACAVAADYBAAg4AFAAI0DACHuAQEAvgMAIYUCQACNAwAhhgIBAL4DACGPAgEAjAMAIZICAQCMAwAhkwIBAIwDACGVAkAAvwMAIZYCAQC-AwAhmwIBAL4DACGcAgEAjAMAIZ0CIAClAwAhngIgAKUDACGfAkAAvwMAIaACAQC-AwAhFQEAANkDACAEAADaAwAgCQAA2wMAIAwAANwDACANAADdAwAgDwAA3wMAIOABQACNAwAh7gEBAL4DACGFAkAAjQMAIYYCAQC-AwAhjwIBAIwDACGSAgEAjAMAIZMCAQCMAwAhlQJAAL8DACGWAgEAvgMAIZsCAQC-AwAhnAIBAIwDACGdAiAApQMAIZ4CIAClAwAhnwJAAL8DACGgAgEAvgMAIRUBAACrBAAgBAAApQQAIAkAAKYEACAMAACnBAAgDQAAqAQAIA4AAKkEACDgAUAAAAAB7gEBAAAAAYUCQAAAAAGGAgEAAAABjwIBAAAAAZICAQAAAAGTAgEAAAABlQJAAAAAAZYCAQAAAAGbAgEAAAABnAIBAAAAAZ0CIAAAAAGeAiAAAAABnwJAAAAAAaACAQAAAAECAAAAAQAgHAAA2QQAIAMAAAADACAcAADZBAAgHQAA3QQAIBcAAAADACABAADZAwAgBAAA2gMAIAkAANsDACAMAADcAwAgDQAA3QMAIA4AAN4DACAVAADdBAAg4AFAAI0DACHuAQEAvgMAIYUCQACNAwAhhgIBAL4DACGPAgEAjAMAIZICAQCMAwAhkwIBAIwDACGVAkAAvwMAIZYCAQC-AwAhmwIBAL4DACGcAgEAjAMAIZ0CIAClAwAhngIgAKUDACGfAkAAvwMAIaACAQC-AwAhFQEAANkDACAEAADaAwAgCQAA2wMAIAwAANwDACANAADdAwAgDgAA3gMAIOABQACNAwAh7gEBAL4DACGFAkAAjQMAIYYCAQC-AwAhjwIBAIwDACGSAgEAjAMAIZMCAQCMAwAhlQJAAL8DACGWAgEAvgMAIZsCAQC-AwAhnAIBAIwDACGdAiAApQMAIZ4CIAClAwAhnwJAAL8DACGgAgEAvgMAIQgBBAEEBgEIAAgJCgIMEwUNFAUOGAYPHAcDBQABBw4DCAAEAQYAAgEHDwACCgABCwABAQUAAQEFAAEGBB0ACR4ADB8ADSAADiEADyIAAAEBLAEBATIBAwgADSIADiMADwAAAAMIAA0iAA4jAA8AAAADCAAVIgAWIwAXAAAAAwgAFSIAFiMAFwAAAAMIAB0iAB4jAB8AAAADCAAdIgAeIwAfAQUAAQEFAAEDCAAkIgAlIwAmAAAAAwgAJCIAJSMAJgEGAAIBBgACAwgAKyIALCMALQAAAAMIACsiACwjAC0CCgABCwABAgoAAQsAAQUIADIiADUjADZ0ADN1ADQAAAAAAAUIADIiADUjADZ0ADN1ADQBBQABAQUAAQMIADsiADwjAD0AAAADCAA7IgA8IwA9AAAAAwgAQyIARCMARQAAAAMIAEMiAEQjAEUBBQABAQUAAQMIAEoiAEsjAEwAAAADCABKIgBLIwBMAAAABQgAUiIAVSMAVnQAU3UAVAAAAAAABQgAUiIAVSMAVnQAU3UAVAAAAAMIAFwiAF0jAF4AAAADCABcIgBdIwBeAAAAAwgAZCIAZSMAZgAAAAMIAGQiAGUjAGYQAgERIwESJAETJQEUJgEWKAEXKgkYKwoZLgEaMAkbMQseMwEfNAEgNQkkOAwlORAmOxEnPBEoPxEpQBEqQRErQxEsRQktRhIuSBEvSgkwSxMxTBEyTREzTgk0URQ1Uhg2VBk3VRk4WBk5WRk6Whk7XBk8Xgk9Xxo-YRk_YwlAZBtBZRlCZhlDZwlEahxFayBGbAJHbQJIbgJJbwJKcAJLcgJMdAlNdSFOdwJPeQlQeiJRewJSfAJTfQlUgAEjVYEBJ1aCAQNXgwEDWIQBA1mFAQNahgEDW4gBA1yKAQldiwEoXo0BA1-PAQlgkAEpYZEBA2KSAQNjkwEJZJYBKmWXAS5mmAEFZ5kBBWiaAQVpmwEFapwBBWueAQVsoAEJbaEBL26jAQVvpQEJcKYBMHGnAQVyqAEFc6kBCXasATF3rQE3eK4BBnmvAQZ6sAEGe7EBBnyyAQZ9tAEGfrYBCX-3ATiAAbkBBoEBuwEJggG8ATmDAb0BBoQBvgEGhQG_AQmGAcIBOocBwwE-iAHFAT-JAcYBP4oByQE_iwHKAT-MAcsBP40BzQE_jgHPAQmPAdABQJAB0gE_kQHUAQmSAdUBQZMB1gE_lAHXAT-VAdgBCZYB2wFClwHcAUaYAd0BB5kB3gEHmgHfAQebAeABB5wB4QEHnQHjAQeeAeUBCZ8B5gFHoAHoAQehAeoBCaIB6wFIowHsAQekAe0BB6UB7gEJpgHxAUmnAfIBTagB9AFOqQH1AU6qAfgBTqsB-QFOrAH6AU6tAfwBTq4B_gEJrwH_AU-wAYECTrEBgwIJsgGEAlCzAYUCTrQBhgJOtQGHAgm2AYoCUbcBiwJXuAGNAli5AY4CWLoBkQJYuwGSAli8AZMCWL0BlQJYvgGXAgm_AZgCWcABmgJYwQGcAgnCAZ0CWsMBngJYxAGfAljFAaACCcYBowJbxwGkAl_IAaYCYMkBpwJgygGqAmDLAasCYMwBrAJgzQGuAmDOAbACCc8BsQJh0AGzAmDRAbUCCdIBtgJi0wG3AmDUAbgCYNUBuQIJ1gG8AmPXAb0CZw" + graph: "3QRnwAEZAQAAgwMAIAQAAIQDACAJAACFAwAgDAAAhgMAIA0AAIYDACAOAACHAwAgDwAAiAMAINgBAACCAwAw2QEAAAMAENoBAACCAwAw4AFAAMgCACHuAQEA8AIAIYUCQADIAgAhhgIBAPACACGPAgEAAAABkgIBAMcCACGTAgEAxwIAIZUCQADxAgAhlgIBAPACACGbAgEA8AIAIZwCAQDHAgAhnQIgAN4CACGeAiAA3gIAIZ8CQADxAgAhoAIBAPACACEBAAAAAQAgGQEAAIMDACAEAACEAwAgCQAAhQMAIAwAAIYDACANAACGAwAgDgAAhwMAIA8AAIgDACDYAQAAggMAMNkBAAADABDaAQAAggMAMOABQADIAgAh7gEBAPACACGFAkAAyAIAIYYCAQDwAgAhjwIBAMcCACGSAgEAxwIAIZMCAQDHAgAhlQJAAPECACGWAgEA8AIAIZsCAQDwAgAhnAIBAMcCACGdAiAA3gIAIZ4CIADeAgAhnwJAAPECACGgAgEA8AIAIQEAAAADACAOAQAArAQAIAQAAK8EACAJAACwBAAgDAAAsQQAIA0AALEEACAOAACyBAAgDwAAswQAIO4BAAC6AwAghgIAALoDACCVAgAAugMAIJYCAAC6AwAgmwIAALoDACCfAgAAugMAIKACAAC6AwAgAwAAAAMAIAIAAAUAMAMAAAEAIBAFAAD3AgAgBwAAgQMAINgBAACAAwAw2QEAAAcAENoBAACAAwAw4AFAAMgCACHxAQEAxwIAIYUCQADIAgAhjwIBAMcCACGQAgEAxwIAIZECAQDHAgAhkgIBAMcCACGTAgEAxwIAIZQCAQDwAgAhlQJAAPECACGWAgEA8AIAIQUFAACsBAAgBwAArgQAIJQCAAC6AwAglQIAALoDACCWAgAAugMAIBAFAAD3AgAgBwAAgQMAINgBAACAAwAw2QEAAAcAENoBAACAAwAw4AFAAMgCACHxAQEAxwIAIYUCQADIAgAhjwIBAAAAAZACAQDHAgAhkQIBAMcCACGSAgEAxwIAIZMCAQDHAgAhlAIBAPACACGVAkAA8QIAIZYCAQDwAgAhAwAAAAcAIAIAAAgAMAMAAAkAIAkGAAD_AgAg2AEAAP0CADDZAQAACwAQ2gEAAP0CADDgAUAAyAIAIe8BAQDHAgAhhQJAAMgCACGMAgEAxwIAIY4CAAD-Ao4CIgEGAACtBAAgCgYAAP8CACDYAQAA_QIAMNkBAAALABDaAQAA_QIAMOABQADIAgAh7wEBAMcCACGFAkAAyAIAIYwCAQDHAgAhjgIAAP4CjgIiowIAAPwCACADAAAACwAgAgAADAAwAwAADQAgAQAAAAsAIAgKAAD3AgAgCwAA9wIAINgBAAD7AgAw2QEAABAAENoBAAD7AgAwiQIBAMcCACGKAgEAxwIAIYsCAgDWAgAhAgoAAKwEACALAACsBAAgCQoAAPcCACALAAD3AgAg2AEAAPsCADDZAQAAEAAQ2gEAAPsCADCJAgEAxwIAIYoCAQDHAgAhiwICANYCACGiAgAA-gIAIAMAAAAQACACAAARADADAAASACADAAAAEAAgAgAAEQAwAwAAEgAgCAUAAPcCACDYAQAA-QIAMNkBAAAVABDaAQAA-QIAMOABQADIAgAh7wEBAMcCACHxAQEAxwIAIYcCIADeAgAhAQUAAKwEACAJBQAA9wIAINgBAAD5AgAw2QEAABUAENoBAAD5AgAw4AFAAMgCACHvAQEAxwIAIfEBAQDHAgAhhwIgAN4CACGhAgAA-AIAIAMAAAAVACACAAAWADADAAAXACAIBQAA9wIAINgBAAD2AgAw2QEAABkAENoBAAD2AgAw7wEBAMcCACHxAQEAxwIAIYQCQADIAgAhhQJAAMgCACEBBQAArAQAIAkFAAD3AgAg2AEAAPYCADDZAQAAGQAQ2gEAAPYCADDvAQEAxwIAIfEBAQDHAgAhhAJAAMgCACGFAkAAyAIAIaECAAD1AgAgAwAAABkAIAIAABoAMAMAABsAIAEAAAADACABAAAABwAgAQAAABAAIAEAAAAQACABAAAAFQAgAQAAABkAIAEAAAABACADAAAAAwAgAgAABQAwAwAAAQAgAwAAAAMAIAIAAAUAMAMAAAEAIAMAAAADACACAAAFADADAAABACAWAQAAqwQAIAQAAKUEACAJAACmBAAgDAAApwQAIA0AAKgEACAOAACpBAAgDwAAqgQAIOABQAAAAAHuAQEAAAABhQJAAAAAAYYCAQAAAAGPAgEAAAABkgIBAAAAAZMCAQAAAAGVAkAAAAABlgIBAAAAAZsCAQAAAAGcAgEAAAABnQIgAAAAAZ4CIAAAAAGfAkAAAAABoAIBAAAAAQEVAAAnACAP4AFAAAAAAe4BAQAAAAGFAkAAAAABhgIBAAAAAY8CAQAAAAGSAgEAAAABkwIBAAAAAZUCQAAAAAGWAgEAAAABmwIBAAAAAZwCAQAAAAGdAiAAAAABngIgAAAAAZ8CQAAAAAGgAgEAAAABARUAACkAMAEVAAApADABAAAAAwAgFgEAANkDACAEAADaAwAgCQAA2wMAIAwAANwDACANAADdAwAgDgAA3gMAIA8AAN8DACDgAUAAjQMAIe4BAQC-AwAhhQJAAI0DACGGAgEAvgMAIY8CAQCMAwAhkgIBAIwDACGTAgEAjAMAIZUCQAC_AwAhlgIBAL4DACGbAgEAvgMAIZwCAQCMAwAhnQIgAKUDACGeAiAApQMAIZ8CQAC_AwAhoAIBAL4DACECAAAAAQAgFQAALQAgD-ABQACNAwAh7gEBAL4DACGFAkAAjQMAIYYCAQC-AwAhjwIBAIwDACGSAgEAjAMAIZMCAQCMAwAhlQJAAL8DACGWAgEAvgMAIZsCAQC-AwAhnAIBAIwDACGdAiAApQMAIZ4CIAClAwAhnwJAAL8DACGgAgEAvgMAIQIAAAADACAVAAAvACACAAAAAwAgFQAALwAgAQAAAAMAIAMAAAABACAcAAAnACAdAAAtACABAAAAAQAgAQAAAAMAIAoIAADWAwAgIgAA2AMAICMAANcDACDuAQAAugMAIIYCAAC6AwAglQIAALoDACCWAgAAugMAIJsCAAC6AwAgnwIAALoDACCgAgAAugMAIBLYAQAA9AIAMNkBAAA3ABDaAQAA9AIAMOABQADAAgAh7gEBAOcCACGFAkAAwAIAIYYCAQDnAgAhjwIBAL8CACGSAgEAvwIAIZMCAQC_AgAhlQJAAOgCACGWAgEA5wIAIZsCAQDnAgAhnAIBAL8CACGdAiAA2gIAIZ4CIADaAgAhnwJAAOgCACGgAgEA5wIAIQMAAAADACACAAA2ADAhAAA3ACADAAAAAwAgAgAABQAwAwAAAQAgCdgBAADzAgAw2QEAAD0AENoBAADzAgAw4AFAAMgCACHvAQEAxwIAIY8CAQAAAAGYAgEA8AIAIZkCQADxAgAhmgIBAPACACEBAAAAOgAgAQAAADoAIAnYAQAA8wIAMNkBAAA9ABDaAQAA8wIAMOABQADIAgAh7wEBAMcCACGPAgEAxwIAIZgCAQDwAgAhmQJAAPECACGaAgEA8AIAIQOYAgAAugMAIJkCAAC6AwAgmgIAALoDACADAAAAPQAgAgAAPgAwAwAAOgAgAwAAAD0AIAIAAD4AMAMAADoAIAMAAAA9ACACAAA-ADADAAA6ACAG4AFAAAAAAe8BAQAAAAGPAgEAAAABmAIBAAAAAZkCQAAAAAGaAgEAAAABARUAAEIAIAbgAUAAAAAB7wEBAAAAAY8CAQAAAAGYAgEAAAABmQJAAAAAAZoCAQAAAAEBFQAARAAwARUAAEQAMAbgAUAAjQMAIe8BAQCMAwAhjwIBAIwDACGYAgEAvgMAIZkCQAC_AwAhmgIBAL4DACECAAAAOgAgFQAARwAgBuABQACNAwAh7wEBAIwDACGPAgEAjAMAIZgCAQC-AwAhmQJAAL8DACGaAgEAvgMAIQIAAAA9ACAVAABJACACAAAAPQAgFQAASQAgAwAAADoAIBwAAEIAIB0AAEcAIAEAAAA6ACABAAAAPQAgBggAANMDACAiAADVAwAgIwAA1AMAIJgCAAC6AwAgmQIAALoDACCaAgAAugMAIAnYAQAA8gIAMNkBAABQABDaAQAA8gIAMOABQADAAgAh7wEBAL8CACGPAgEAvwIAIZgCAQDnAgAhmQJAAOgCACGaAgEA5wIAIQMAAAA9ACACAABPADAhAABQACADAAAAPQAgAgAAPgAwAwAAOgAgCdgBAADvAgAw2QEAAFYAENoBAADvAgAw4AFAAMgCACGPAgEAAAABlwIBAMcCACGYAgEA8AIAIZkCQADxAgAhmgIBAPACACEBAAAAUwAgAQAAAFMAIAnYAQAA7wIAMNkBAABWABDaAQAA7wIAMOABQADIAgAhjwIBAMcCACGXAgEAxwIAIZgCAQDwAgAhmQJAAPECACGaAgEA8AIAIQOYAgAAugMAIJkCAAC6AwAgmgIAALoDACADAAAAVgAgAgAAVwAwAwAAUwAgAwAAAFYAIAIAAFcAMAMAAFMAIAMAAABWACACAABXADADAABTACAG4AFAAAAAAY8CAQAAAAGXAgEAAAABmAIBAAAAAZkCQAAAAAGaAgEAAAABARUAAFsAIAbgAUAAAAABjwIBAAAAAZcCAQAAAAGYAgEAAAABmQJAAAAAAZoCAQAAAAEBFQAAXQAwARUAAF0AMAbgAUAAjQMAIY8CAQCMAwAhlwIBAIwDACGYAgEAvgMAIZkCQAC_AwAhmgIBAL4DACECAAAAUwAgFQAAYAAgBuABQACNAwAhjwIBAIwDACGXAgEAjAMAIZgCAQC-AwAhmQJAAL8DACGaAgEAvgMAIQIAAABWACAVAABiACACAAAAVgAgFQAAYgAgAwAAAFMAIBwAAFsAIB0AAGAAIAEAAABTACABAAAAVgAgBggAANADACAiAADSAwAgIwAA0QMAIJgCAAC6AwAgmQIAALoDACCaAgAAugMAIAnYAQAA7gIAMNkBAABpABDaAQAA7gIAMOABQADAAgAhjwIBAL8CACGXAgEAvwIAIZgCAQDnAgAhmQJAAOgCACGaAgEA5wIAIQMAAABWACACAABoADAhAABpACADAAAAVgAgAgAAVwAwAwAAUwAgAQAAAAkAIAEAAAAJACADAAAABwAgAgAACAAwAwAACQAgAwAAAAcAIAIAAAgAMAMAAAkAIAMAAAAHACACAAAIADADAAAJACANBQAAzgMAIAcAAM8DACDgAUAAAAAB8QEBAAAAAYUCQAAAAAGPAgEAAAABkAIBAAAAAZECAQAAAAGSAgEAAAABkwIBAAAAAZQCAQAAAAGVAkAAAAABlgIBAAAAAQEVAABxACAL4AFAAAAAAfEBAQAAAAGFAkAAAAABjwIBAAAAAZACAQAAAAGRAgEAAAABkgIBAAAAAZMCAQAAAAGUAgEAAAABlQJAAAAAAZYCAQAAAAEBFQAAcwAwARUAAHMAMA0FAADAAwAgBwAAwQMAIOABQACNAwAh8QEBAIwDACGFAkAAjQMAIY8CAQCMAwAhkAIBAIwDACGRAgEAjAMAIZICAQCMAwAhkwIBAIwDACGUAgEAvgMAIZUCQAC_AwAhlgIBAL4DACECAAAACQAgFQAAdgAgC-ABQACNAwAh8QEBAIwDACGFAkAAjQMAIY8CAQCMAwAhkAIBAIwDACGRAgEAjAMAIZICAQCMAwAhkwIBAIwDACGUAgEAvgMAIZUCQAC_AwAhlgIBAL4DACECAAAABwAgFQAAeAAgAgAAAAcAIBUAAHgAIAMAAAAJACAcAABxACAdAAB2ACABAAAACQAgAQAAAAcAIAYIAAC7AwAgIgAAvQMAICMAALwDACCUAgAAugMAIJUCAAC6AwAglgIAALoDACAO2AEAAOYCADDZAQAAfwAQ2gEAAOYCADDgAUAAwAIAIfEBAQC_AgAhhQJAAMACACGPAgEAvwIAIZACAQC_AgAhkQIBAL8CACGSAgEAvwIAIZMCAQC_AgAhlAIBAOcCACGVAkAA6AIAIZYCAQDnAgAhAwAAAAcAIAIAAH4AMCEAAH8AIAMAAAAHACACAAAIADADAAAJACABAAAADQAgAQAAAA0AIAMAAAALACACAAAMADADAAANACADAAAACwAgAgAADAAwAwAADQAgAwAAAAsAIAIAAAwAMAMAAA0AIAYGAAC5AwAg4AFAAAAAAe8BAQAAAAGFAkAAAAABjAIBAAAAAY4CAAAAjgICARUAAIcBACAF4AFAAAAAAe8BAQAAAAGFAkAAAAABjAIBAAAAAY4CAAAAjgICARUAAIkBADABFQAAiQEAMAYGAAC4AwAg4AFAAI0DACHvAQEAjAMAIYUCQACNAwAhjAIBAIwDACGOAgAAtwOOAiICAAAADQAgFQAAjAEAIAXgAUAAjQMAIe8BAQCMAwAhhQJAAI0DACGMAgEAjAMAIY4CAAC3A44CIgIAAAALACAVAACOAQAgAgAAAAsAIBUAAI4BACADAAAADQAgHAAAhwEAIB0AAIwBACABAAAADQAgAQAAAAsAIAMIAAC0AwAgIgAAtgMAICMAALUDACAI2AEAAOICADDZAQAAlQEAENoBAADiAgAw4AFAAMACACHvAQEAvwIAIYUCQADAAgAhjAIBAL8CACGOAgAA4wKOAiIDAAAACwAgAgAAlAEAMCEAAJUBACADAAAACwAgAgAADAAwAwAADQAgAQAAABIAIAEAAAASACADAAAAEAAgAgAAEQAwAwAAEgAgAwAAABAAIAIAABEAMAMAABIAIAMAAAAQACACAAARADADAAASACAFCgAAsgMAIAsAALMDACCJAgEAAAABigIBAAAAAYsCAgAAAAEBFQAAnQEAIAOJAgEAAAABigIBAAAAAYsCAgAAAAEBFQAAnwEAMAEVAACfAQAwBQoAALADACALAACxAwAgiQIBAIwDACGKAgEAjAMAIYsCAgCWAwAhAgAAABIAIBUAAKIBACADiQIBAIwDACGKAgEAjAMAIYsCAgCWAwAhAgAAABAAIBUAAKQBACACAAAAEAAgFQAApAEAIAMAAAASACAcAACdAQAgHQAAogEAIAEAAAASACABAAAAEAAgBQgAAKsDACAiAACuAwAgIwAArQMAIHQAAKwDACB1AACvAwAgBtgBAADhAgAw2QEAAKsBABDaAQAA4QIAMIkCAQC_AgAhigIBAL8CACGLAgIAzwIAIQMAAAAQACACAACqAQAwIQAAqwEAIAMAAAAQACACAAARADADAAASACABAAAAFwAgAQAAABcAIAMAAAAVACACAAAWADADAAAXACADAAAAFQAgAgAAFgAwAwAAFwAgAwAAABUAIAIAABYAMAMAABcAIAUFAACqAwAg4AFAAAAAAe8BAQAAAAHxAQEAAAABhwIgAAAAAQEVAACzAQAgBOABQAAAAAHvAQEAAAAB8QEBAAAAAYcCIAAAAAEBFQAAtQEAMAEVAAC1AQAwBQUAAKkDACDgAUAAjQMAIe8BAQCMAwAh8QEBAIwDACGHAiAApQMAIQIAAAAXACAVAAC4AQAgBOABQACNAwAh7wEBAIwDACHxAQEAjAMAIYcCIAClAwAhAgAAABUAIBUAALoBACACAAAAFQAgFQAAugEAIAMAAAAXACAcAACzAQAgHQAAuAEAIAEAAAAXACABAAAAFQAgAwgAAKYDACAiAACoAwAgIwAApwMAIAfYAQAA4AIAMNkBAADBAQAQ2gEAAOACADDgAUAAwAIAIe8BAQC_AgAh8QEBAL8CACGHAiAA2gIAIQMAAAAVACACAADAAQAwIQAAwQEAIAMAAAAVACACAAAWADADAAAXACAJ2AEAAN0CADDZAQAAxwEAENoBAADdAgAw4AFAAMgCACHvAQEAxwIAIYUCQADIAgAhhgIBAMcCACGHAiAA3gIAIYgCAADfAgAgAQAAAMQBACABAAAAxAEAIAjYAQAA3QIAMNkBAADHAQAQ2gEAAN0CADDgAUAAyAIAIe8BAQDHAgAhhQJAAMgCACGGAgEAxwIAIYcCIADeAgAhAAMAAADHAQAgAgAAyAEAMAMAAMQBACADAAAAxwEAIAIAAMgBADADAADEAQAgAwAAAMcBACACAADIAQAwAwAAxAEAIAXgAUAAAAAB7wEBAAAAAYUCQAAAAAGGAgEAAAABhwIgAAAAAQEVAADMAQAgBeABQAAAAAHvAQEAAAABhQJAAAAAAYYCAQAAAAGHAiAAAAABARUAAM4BADABFQAAzgEAMAXgAUAAjQMAIe8BAQCMAwAhhQJAAI0DACGGAgEAjAMAIYcCIAClAwAhAgAAAMQBACAVAADRAQAgBeABQACNAwAh7wEBAIwDACGFAkAAjQMAIYYCAQCMAwAhhwIgAKUDACECAAAAxwEAIBUAANMBACACAAAAxwEAIBUAANMBACADAAAAxAEAIBwAAMwBACAdAADRAQAgAQAAAMQBACABAAAAxwEAIAMIAACiAwAgIgAApAMAICMAAKMDACAI2AEAANkCADDZAQAA2gEAENoBAADZAgAw4AFAAMACACHvAQEAvwIAIYUCQADAAgAhhgIBAL8CACGHAiAA2gIAIQMAAADHAQAgAgAA2QEAMCEAANoBACADAAAAxwEAIAIAAMgBADADAADEAQAgAQAAABsAIAEAAAAbACADAAAAGQAgAgAAGgAwAwAAGwAgAwAAABkAIAIAABoAMAMAABsAIAMAAAAZACACAAAaADADAAAbACAFBQAAoQMAIO8BAQAAAAHxAQEAAAABhAJAAAAAAYUCQAAAAAEBFQAA4gEAIATvAQEAAAAB8QEBAAAAAYQCQAAAAAGFAkAAAAABARUAAOQBADABFQAA5AEAMAUFAACgAwAg7wEBAIwDACHxAQEAjAMAIYQCQACNAwAhhQJAAI0DACECAAAAGwAgFQAA5wEAIATvAQEAjAMAIfEBAQCMAwAhhAJAAI0DACGFAkAAjQMAIQIAAAAZACAVAADpAQAgAgAAABkAIBUAAOkBACADAAAAGwAgHAAA4gEAIB0AAOcBACABAAAAGwAgAQAAABkAIAMIAACdAwAgIgAAnwMAICMAAJ4DACAH2AEAANgCADDZAQAA8AEAENoBAADYAgAw7wEBAL8CACHxAQEAvwIAIYQCQADAAgAhhQJAAMACACEDAAAAGQAgAgAA7wEAMCEAAPABACADAAAAGQAgAgAAGgAwAwAAGwAgDdgBAADVAgAw2QEAAPYBABDaAQAA1QIAMPEBAQAAAAHyAQEAxwIAIfMBAQDHAgAh9AECANYCACH1AQAA0AIAIPYBAADQAgAg9wEAANACACD4AQIAAAAB-QEBAMcCACH6AQAA1wIAIAEAAADzAQAgAQAAAPMBACAN2AEAANUCADDZAQAA9gEAENoBAADVAgAw8QEBAMcCACHyAQEAxwIAIfMBAQDHAgAh9AECANYCACH1AQAA0AIAIPYBAADQAgAg9wEAANACACD4AQIA1gIAIfkBAQDHAgAh-gEAANcCACAAAwAAAPYBACACAAD3AQAwAwAA8wEAIAMAAAD2AQAgAgAA9wEAMAMAAPMBACADAAAA9gEAIAIAAPcBADADAADzAQAgCvEBAQAAAAHyAQEAAAAB8wEBAAAAAfQBAgAAAAH1AQAAmgMAIPYBAACbAwAg9wEAAJwDACD4AQIAAAAB-QEBAAAAAfoBgAAAAAEBFQAA-wEAIArxAQEAAAAB8gEBAAAAAfMBAQAAAAH0AQIAAAAB9QEAAJoDACD2AQAAmwMAIPcBAACcAwAg-AECAAAAAfkBAQAAAAH6AYAAAAABARUAAP0BADABFQAA_QEAMArxAQEAjAMAIfIBAQCMAwAh8wEBAIwDACH0AQIAlgMAIfUBAACXAwAg9gEAAJgDACD3AQAAmQMAIPgBAgCWAwAh-QEBAIwDACH6AYAAAAABAgAAAPMBACAVAACAAgAgCvEBAQCMAwAh8gEBAIwDACHzAQEAjAMAIfQBAgCWAwAh9QEAAJcDACD2AQAAmAMAIPcBAACZAwAg-AECAJYDACH5AQEAjAMAIfoBgAAAAAECAAAA9gEAIBUAAIICACACAAAA9gEAIBUAAIICACADAAAA8wEAIBwAAPsBACAdAACAAgAgAQAAAPMBACABAAAA9gEAIAUIAACRAwAgIgAAlAMAICMAAJMDACB0AACSAwAgdQAAlQMAIA3YAQAAzgIAMNkBAACJAgAQ2gEAAM4CADDxAQEAvwIAIfIBAQC_AgAh8wEBAL8CACH0AQIAzwIAIfUBAADQAgAg9gEAANACACD3AQAA0AIAIPgBAgDPAgAh-QEBAL8CACH6AQAA0QIAIAMAAAD2AQAgAgAAiAIAMCEAAIkCACADAAAA9gEAIAIAAPcBADADAADzAQAgBtgBAADMAgAw2QEAAI8CABDaAQAAzAIAMO4BAQDHAgAh7wEBAMcCACHwAQAAzQIAIAEAAACMAgAgAQAAAIwCACAF2AEAAMwCADDZAQAAjwIAENoBAADMAgAw7gEBAMcCACHvAQEAxwIAIQADAAAAjwIAIAIAAJACADADAACMAgAgAwAAAI8CACACAACQAgAwAwAAjAIAIAMAAACPAgAgAgAAkAIAMAMAAIwCACAC7gEBAAAAAe8BAQAAAAEBFQAAlAIAIALuAQEAAAAB7wEBAAAAAQEVAACWAgAwARUAAJYCADAC7gEBAIwDACHvAQEAjAMAIQIAAACMAgAgFQAAmQIAIALuAQEAjAMAIe8BAQCMAwAhAgAAAI8CACAVAACbAgAgAgAAAI8CACAVAACbAgAgAwAAAIwCACAcAACUAgAgHQAAmQIAIAEAAACMAgAgAQAAAI8CACADCAAAjgMAICIAAJADACAjAACPAwAgBdgBAADLAgAw2QEAAKICABDaAQAAywIAMO4BAQC_AgAh7wEBAL8CACEDAAAAjwIAIAIAAKECADAhAACiAgAgAwAAAI8CACACAACQAgAwAwAAjAIAIAvYAQAAxgIAMNkBAACoAgAQ2gEAAMYCADDbAQEAxwIAIdwBAQDHAgAh3QEBAMcCACHeAQEAxwIAId8BAQDHAgAh4AFAAMgCACHsAQAAyQIAIO0BAADKAgAgAQAAAKUCACABAAAApQIAIAnYAQAAxgIAMNkBAACoAgAQ2gEAAMYCADDbAQEAxwIAIdwBAQDHAgAh3QEBAMcCACHeAQEAxwIAId8BAQDHAgAh4AFAAMgCACEAAwAAAKgCACACAACpAgAwAwAApQIAIAMAAACoAgAgAgAAqQIAMAMAAKUCACADAAAAqAIAIAIAAKkCADADAAClAgAgBtsBAQAAAAHcAQEAAAAB3QEBAAAAAd4BAQAAAAHfAQEAAAAB4AFAAAAAAQEVAACtAgAgBtsBAQAAAAHcAQEAAAAB3QEBAAAAAd4BAQAAAAHfAQEAAAAB4AFAAAAAAQEVAACvAgAwARUAAK8CADAG2wEBAIwDACHcAQEAjAMAId0BAQCMAwAh3gEBAIwDACHfAQEAjAMAIeABQACNAwAhAgAAAKUCACAVAACyAgAgBtsBAQCMAwAh3AEBAIwDACHdAQEAjAMAId4BAQCMAwAh3wEBAIwDACHgAUAAjQMAIQIAAACoAgAgFQAAtAIAIAIAAACoAgAgFQAAtAIAIAMAAAClAgAgHAAArQIAIB0AALICACABAAAApQIAIAEAAACoAgAgAwgAAIkDACAiAACLAwAgIwAAigMAIAnYAQAAvgIAMNkBAAC7AgAQ2gEAAL4CADDbAQEAvwIAIdwBAQC_AgAh3QEBAL8CACHeAQEAvwIAId8BAQC_AgAh4AFAAMACACEDAAAAqAIAIAIAALoCADAhAAC7AgAgAwAAAKgCACACAACpAgAwAwAApQIAIAnYAQAAvgIAMNkBAAC7AgAQ2gEAAL4CADDbAQEAvwIAIdwBAQC_AgAh3QEBAL8CACHeAQEAvwIAId8BAQC_AgAh4AFAAMACACEOCAAAwgIAICIAAMUCACAjAADFAgAg4QEBAAAAAeIBAQAAAATjAQEAAAAE5AEBAAAAAeUBAQAAAAHmAQEAAAAB5wEBAAAAAegBAQDEAgAh6QEBAAAAAeoBAQAAAAHrAQEAAAABCwgAAMICACAiAADDAgAgIwAAwwIAIOEBQAAAAAHiAUAAAAAE4wFAAAAABOQBQAAAAAHlAUAAAAAB5gFAAAAAAecBQAAAAAHoAUAAwQIAIQsIAADCAgAgIgAAwwIAICMAAMMCACDhAUAAAAAB4gFAAAAABOMBQAAAAATkAUAAAAAB5QFAAAAAAeYBQAAAAAHnAUAAAAAB6AFAAMECACEI4QECAAAAAeIBAgAAAATjAQIAAAAE5AECAAAAAeUBAgAAAAHmAQIAAAAB5wECAAAAAegBAgDCAgAhCOEBQAAAAAHiAUAAAAAE4wFAAAAABOQBQAAAAAHlAUAAAAAB5gFAAAAAAecBQAAAAAHoAUAAwwIAIQ4IAADCAgAgIgAAxQIAICMAAMUCACDhAQEAAAAB4gEBAAAABOMBAQAAAATkAQEAAAAB5QEBAAAAAeYBAQAAAAHnAQEAAAAB6AEBAMQCACHpAQEAAAAB6gEBAAAAAesBAQAAAAEL4QEBAAAAAeIBAQAAAATjAQEAAAAE5AEBAAAAAeUBAQAAAAHmAQEAAAAB5wEBAAAAAegBAQDFAgAh6QEBAAAAAeoBAQAAAAHrAQEAAAABCdgBAADGAgAw2QEAAKgCABDaAQAAxgIAMNsBAQDHAgAh3AEBAMcCACHdAQEAxwIAId4BAQDHAgAh3wEBAMcCACHgAUAAyAIAIQvhAQEAAAAB4gEBAAAABOMBAQAAAATkAQEAAAAB5QEBAAAAAeYBAQAAAAHnAQEAAAAB6AEBAMUCACHpAQEAAAAB6gEBAAAAAesBAQAAAAEI4QFAAAAAAeIBQAAAAATjAUAAAAAE5AFAAAAAAeUBQAAAAAHmAUAAAAAB5wFAAAAAAegBQADDAgAhAtsBAQAAAAHdAQEAAAABAtsBAQAAAAHcAQEAAAABBdgBAADLAgAw2QEAAKICABDaAQAAywIAMO4BAQC_AgAh7wEBAL8CACEF2AEAAMwCADDZAQAAjwIAENoBAADMAgAw7gEBAMcCACHvAQEAxwIAIQLuAQEAAAAB7wEBAAAAAQ3YAQAAzgIAMNkBAACJAgAQ2gEAAM4CADDxAQEAvwIAIfIBAQC_AgAh8wEBAL8CACH0AQIAzwIAIfUBAADQAgAg9gEAANACACD3AQAA0AIAIPgBAgDPAgAh-QEBAL8CACH6AQAA0QIAIA0IAADCAgAgIgAAwgIAICMAAMICACB0AADUAgAgdQAAwgIAIOEBAgAAAAHiAQIAAAAE4wECAAAABOQBAgAAAAHlAQIAAAAB5gECAAAAAecBAgAAAAHoAQIA0wIAIQThAQEAAAAFgQIBAAAAAYICAQAAAASDAgEAAAAEDwgAAMICACAiAADSAgAgIwAA0gIAIOEBgAAAAAHkAYAAAAAB5QGAAAAAAeYBgAAAAAHnAYAAAAAB6AGAAAAAAfsBAQAAAAH8AQEAAAAB_QEBAAAAAf4BgAAAAAH_AYAAAAABgAKAAAAAAQzhAYAAAAAB5AGAAAAAAeUBgAAAAAHmAYAAAAAB5wGAAAAAAegBgAAAAAH7AQEAAAAB_AEBAAAAAf0BAQAAAAH-AYAAAAAB_wGAAAAAAYACgAAAAAENCAAAwgIAICIAAMICACAjAADCAgAgdAAA1AIAIHUAAMICACDhAQIAAAAB4gECAAAABOMBAgAAAATkAQIAAAAB5QECAAAAAeYBAgAAAAHnAQIAAAAB6AECANMCACEI4QEIAAAAAeIBCAAAAATjAQgAAAAE5AEIAAAAAeUBCAAAAAHmAQgAAAAB5wEIAAAAAegBCADUAgAhDdgBAADVAgAw2QEAAPYBABDaAQAA1QIAMPEBAQDHAgAh8gEBAMcCACHzAQEAxwIAIfQBAgDWAgAh9QEAANACACD2AQAA0AIAIPcBAADQAgAg-AECANYCACH5AQEAxwIAIfoBAADXAgAgCOEBAgAAAAHiAQIAAAAE4wECAAAABOQBAgAAAAHlAQIAAAAB5gECAAAAAecBAgAAAAHoAQIAwgIAIQzhAYAAAAAB5AGAAAAAAeUBgAAAAAHmAYAAAAAB5wGAAAAAAegBgAAAAAH7AQEAAAAB_AEBAAAAAf0BAQAAAAH-AYAAAAAB_wGAAAAAAYACgAAAAAEH2AEAANgCADDZAQAA8AEAENoBAADYAgAw7wEBAL8CACHxAQEAvwIAIYQCQADAAgAhhQJAAMACACEI2AEAANkCADDZAQAA2gEAENoBAADZAgAw4AFAAMACACHvAQEAvwIAIYUCQADAAgAhhgIBAL8CACGHAiAA2gIAIQUIAADCAgAgIgAA3AIAICMAANwCACDhASAAAAAB6AEgANsCACEFCAAAwgIAICIAANwCACAjAADcAgAg4QEgAAAAAegBIADbAgAhAuEBIAAAAAHoASAA3AIAIQjYAQAA3QIAMNkBAADHAQAQ2gEAAN0CADDgAUAAyAIAIe8BAQDHAgAhhQJAAMgCACGGAgEAxwIAIYcCIADeAgAhAuEBIAAAAAHoASAA3AIAIQLvAQEAAAABhgIBAAAAAQfYAQAA4AIAMNkBAADBAQAQ2gEAAOACADDgAUAAwAIAIe8BAQC_AgAh8QEBAL8CACGHAiAA2gIAIQbYAQAA4QIAMNkBAACrAQAQ2gEAAOECADCJAgEAvwIAIYoCAQC_AgAhiwICAM8CACEI2AEAAOICADDZAQAAlQEAENoBAADiAgAw4AFAAMACACHvAQEAvwIAIYUCQADAAgAhjAIBAL8CACGOAgAA4wKOAiIHCAAAwgIAICIAAOUCACAjAADlAgAg4QEAAACOAgLiAQAAAI4CCOMBAAAAjgII6AEAAOQCjgIiBwgAAMICACAiAADlAgAgIwAA5QIAIOEBAAAAjgIC4gEAAACOAgjjAQAAAI4CCOgBAADkAo4CIgThAQAAAI4CAuIBAAAAjgII4wEAAACOAgjoAQAA5QKOAiIO2AEAAOYCADDZAQAAfwAQ2gEAAOYCADDgAUAAwAIAIfEBAQC_AgAhhQJAAMACACGPAgEAvwIAIZACAQC_AgAhkQIBAL8CACGSAgEAvwIAIZMCAQC_AgAhlAIBAOcCACGVAkAA6AIAIZYCAQDnAgAhDggAAOoCACAiAADtAgAgIwAA7QIAIOEBAQAAAAHiAQEAAAAF4wEBAAAABeQBAQAAAAHlAQEAAAAB5gEBAAAAAecBAQAAAAHoAQEA7AIAIekBAQAAAAHqAQEAAAAB6wEBAAAAAQsIAADqAgAgIgAA6wIAICMAAOsCACDhAUAAAAAB4gFAAAAABeMBQAAAAAXkAUAAAAAB5QFAAAAAAeYBQAAAAAHnAUAAAAAB6AFAAOkCACELCAAA6gIAICIAAOsCACAjAADrAgAg4QFAAAAAAeIBQAAAAAXjAUAAAAAF5AFAAAAAAeUBQAAAAAHmAUAAAAAB5wFAAAAAAegBQADpAgAhCOEBAgAAAAHiAQIAAAAF4wECAAAABeQBAgAAAAHlAQIAAAAB5gECAAAAAecBAgAAAAHoAQIA6gIAIQjhAUAAAAAB4gFAAAAABeMBQAAAAAXkAUAAAAAB5QFAAAAAAeYBQAAAAAHnAUAAAAAB6AFAAOsCACEOCAAA6gIAICIAAO0CACAjAADtAgAg4QEBAAAAAeIBAQAAAAXjAQEAAAAF5AEBAAAAAeUBAQAAAAHmAQEAAAAB5wEBAAAAAegBAQDsAgAh6QEBAAAAAeoBAQAAAAHrAQEAAAABC-EBAQAAAAHiAQEAAAAF4wEBAAAABeQBAQAAAAHlAQEAAAAB5gEBAAAAAecBAQAAAAHoAQEA7QIAIekBAQAAAAHqAQEAAAAB6wEBAAAAAQnYAQAA7gIAMNkBAABpABDaAQAA7gIAMOABQADAAgAhjwIBAL8CACGXAgEAvwIAIZgCAQDnAgAhmQJAAOgCACGaAgEA5wIAIQnYAQAA7wIAMNkBAABWABDaAQAA7wIAMOABQADIAgAhjwIBAMcCACGXAgEAxwIAIZgCAQDwAgAhmQJAAPECACGaAgEA8AIAIQvhAQEAAAAB4gEBAAAABeMBAQAAAAXkAQEAAAAB5QEBAAAAAeYBAQAAAAHnAQEAAAAB6AEBAO0CACHpAQEAAAAB6gEBAAAAAesBAQAAAAEI4QFAAAAAAeIBQAAAAAXjAUAAAAAF5AFAAAAAAeUBQAAAAAHmAUAAAAAB5wFAAAAAAegBQADrAgAhCdgBAADyAgAw2QEAAFAAENoBAADyAgAw4AFAAMACACHvAQEAvwIAIY8CAQC_AgAhmAIBAOcCACGZAkAA6AIAIZoCAQDnAgAhCdgBAADzAgAw2QEAAD0AENoBAADzAgAw4AFAAMgCACHvAQEAxwIAIY8CAQDHAgAhmAIBAPACACGZAkAA8QIAIZoCAQDwAgAhEtgBAAD0AgAw2QEAADcAENoBAAD0AgAw4AFAAMACACHuAQEA5wIAIYUCQADAAgAhhgIBAOcCACGPAgEAvwIAIZICAQC_AgAhkwIBAL8CACGVAkAA6AIAIZYCAQDnAgAhmwIBAOcCACGcAgEAvwIAIZ0CIADaAgAhngIgANoCACGfAkAA6AIAIaACAQDnAgAhAu8BAQAAAAHxAQEAAAABCAUAAPcCACDYAQAA9gIAMNkBAAAZABDaAQAA9gIAMO8BAQDHAgAh8QEBAMcCACGEAkAAyAIAIYUCQADIAgAhGwEAAIMDACAEAACEAwAgCQAAhQMAIAwAAIYDACANAACGAwAgDgAAhwMAIA8AAIgDACDYAQAAggMAMNkBAAADABDaAQAAggMAMOABQADIAgAh7gEBAPACACGFAkAAyAIAIYYCAQDwAgAhjwIBAMcCACGSAgEAxwIAIZMCAQDHAgAhlQJAAPECACGWAgEA8AIAIZsCAQDwAgAhnAIBAMcCACGdAiAA3gIAIZ4CIADeAgAhnwJAAPECACGgAgEA8AIAIacCAAADACCoAgAAAwAgAu8BAQAAAAHxAQEAAAABCAUAAPcCACDYAQAA-QIAMNkBAAAVABDaAQAA-QIAMOABQADIAgAh7wEBAMcCACHxAQEAxwIAIYcCIADeAgAhAokCAQAAAAGKAgEAAAABCAoAAPcCACALAAD3AgAg2AEAAPsCADDZAQAAEAAQ2gEAAPsCADCJAgEAxwIAIYoCAQDHAgAhiwICANYCACEC7wEBAAAAAYwCAQAAAAEJBgAA_wIAINgBAAD9AgAw2QEAAAsAENoBAAD9AgAw4AFAAMgCACHvAQEAxwIAIYUCQADIAgAhjAIBAMcCACGOAgAA_gKOAiIE4QEAAACOAgLiAQAAAI4CCOMBAAAAjgII6AEAAOUCjgIiEgUAAPcCACAHAACBAwAg2AEAAIADADDZAQAABwAQ2gEAAIADADDgAUAAyAIAIfEBAQDHAgAhhQJAAMgCACGPAgEAxwIAIZACAQDHAgAhkQIBAMcCACGSAgEAxwIAIZMCAQDHAgAhlAIBAPACACGVAkAA8QIAIZYCAQDwAgAhpwIAAAcAIKgCAAAHACAQBQAA9wIAIAcAAIEDACDYAQAAgAMAMNkBAAAHABDaAQAAgAMAMOABQADIAgAh8QEBAMcCACGFAkAAyAIAIY8CAQDHAgAhkAIBAMcCACGRAgEAxwIAIZICAQDHAgAhkwIBAMcCACGUAgEA8AIAIZUCQADxAgAhlgIBAPACACEDpAIAAAsAIKUCAAALACCmAgAACwAgGQEAAIMDACAEAACEAwAgCQAAhQMAIAwAAIYDACANAACGAwAgDgAAhwMAIA8AAIgDACDYAQAAggMAMNkBAAADABDaAQAAggMAMOABQADIAgAh7gEBAPACACGFAkAAyAIAIYYCAQDwAgAhjwIBAMcCACGSAgEAxwIAIZMCAQDHAgAhlQJAAPECACGWAgEA8AIAIZsCAQDwAgAhnAIBAMcCACGdAiAA3gIAIZ4CIADeAgAhnwJAAPECACGgAgEA8AIAIRsBAACDAwAgBAAAhAMAIAkAAIUDACAMAACGAwAgDQAAhgMAIA4AAIcDACAPAACIAwAg2AEAAIIDADDZAQAAAwAQ2gEAAIIDADDgAUAAyAIAIe4BAQDwAgAhhQJAAMgCACGGAgEA8AIAIY8CAQDHAgAhkgIBAMcCACGTAgEAxwIAIZUCQADxAgAhlgIBAPACACGbAgEA8AIAIZwCAQDHAgAhnQIgAN4CACGeAiAA3gIAIZ8CQADxAgAhoAIBAPACACGnAgAAAwAgqAIAAAMAIAOkAgAAAwAgpQIAAAMAIKYCAAADACADpAIAAAcAIKUCAAAHACCmAgAABwAgA6QCAAAQACClAgAAEAAgpgIAABAAIAOkAgAAFQAgpQIAABUAIKYCAAAVACADpAIAABkAIKUCAAAZACCmAgAAGQAgAAAAAawCAQAAAAEBrAJAAAAAAQAAAAAAAAAABawCAgAAAAGzAgIAAAABtAICAAAAAbUCAgAAAAG2AgIAAAABAqwCAQAAAASyAgEAAAAFAqwCAQAAAASyAgEAAAAFAqwCAQAAAASyAgEAAAAFAawCAQAAAAQBrAIBAAAABAGsAgEAAAAEAAAABRwAANkEACAdAADcBAAgqQIAANoEACCqAgAA2wQAIK8CAAABACADHAAA2QQAIKkCAADaBAAgrwIAAAEAIAAAAAGsAiAAAAABAAAABRwAANQEACAdAADXBAAgqQIAANUEACCqAgAA1gQAIK8CAAABACADHAAA1AQAIKkCAADVBAAgrwIAAAEAIAAAAAAABRwAAMwEACAdAADSBAAgqQIAAM0EACCqAgAA0QQAIK8CAAABACAFHAAAygQAIB0AAM8EACCpAgAAywQAIKoCAADOBAAgrwIAAAEAIAMcAADMBAAgqQIAAM0EACCvAgAAAQAgAxwAAMoEACCpAgAAywQAIK8CAAABACAAAAABrAIAAACOAgIFHAAAxQQAIB0AAMgEACCpAgAAxgQAIKoCAADHBAAgrwIAAAkAIAMcAADFBAAgqQIAAMYEACCvAgAACQAgAAAAAAGsAgEAAAABAawCQAAAAAEFHAAAvwQAIB0AAMMEACCpAgAAwAQAIKoCAADCBAAgrwIAAAEAIAscAADCAwAwHQAAxwMAMKkCAADDAwAwqgIAAMQDADCrAgAAxQMAIKwCAADGAwAwrQIAAMYDADCuAgAAxgMAMK8CAADGAwAwsAIAAMgDADCxAgAAyQMAMATgAUAAAAAB7wEBAAAAAYUCQAAAAAGOAgAAAI4CAgIAAAANACAcAADNAwAgAwAAAA0AIBwAAM0DACAdAADMAwAgARUAAMEEADAKBgAA_wIAINgBAAD9AgAw2QEAAAsAENoBAAD9AgAw4AFAAMgCACHvAQEAxwIAIYUCQADIAgAhjAIBAMcCACGOAgAA_gKOAiKjAgAA_AIAIAIAAAANACAVAADMAwAgAgAAAMoDACAVAADLAwAgCNgBAADJAwAw2QEAAMoDABDaAQAAyQMAMOABQADIAgAh7wEBAMcCACGFAkAAyAIAIYwCAQDHAgAhjgIAAP4CjgIiCNgBAADJAwAw2QEAAMoDABDaAQAAyQMAMOABQADIAgAh7wEBAMcCACGFAkAAyAIAIYwCAQDHAgAhjgIAAP4CjgIiBOABQACNAwAh7wEBAIwDACGFAkAAjQMAIY4CAAC3A44CIgTgAUAAjQMAIe8BAQCMAwAhhQJAAI0DACGOAgAAtwOOAiIE4AFAAAAAAe8BAQAAAAGFAkAAAAABjgIAAACOAgIDHAAAvwQAIKkCAADABAAgrwIAAAEAIAQcAADCAwAwqQIAAMMDADCrAgAAxQMAIK8CAADGAwAwAAAAAAAAAAAABxwAALQEACAdAAC9BAAgqQIAALUEACCqAgAAvAQAIK0CAAADACCuAgAAAwAgrwIAAAEAIAscAACZBAAwHQAAngQAMKkCAACaBAAwqgIAAJsEADCrAgAAnAQAIKwCAACdBAAwrQIAAJ0EADCuAgAAnQQAMK8CAACdBAAwsAIAAJ8EADCxAgAAoAQAMAscAACNBAAwHQAAkgQAMKkCAACOBAAwqgIAAI8EADCrAgAAkAQAIKwCAACRBAAwrQIAAJEEADCuAgAAkQQAMK8CAACRBAAwsAIAAJMEADCxAgAAlAQAMAscAACEBAAwHQAAiAQAMKkCAACFBAAwqgIAAIYEADCrAgAAhwQAIKwCAAD8AwAwrQIAAPwDADCuAgAA_AMAMK8CAAD8AwAwsAIAAIkEADCxAgAA_wMAMAscAAD4AwAwHQAA_QMAMKkCAAD5AwAwqgIAAPoDADCrAgAA-wMAIKwCAAD8AwAwrQIAAPwDADCuAgAA_AMAMK8CAAD8AwAwsAIAAP4DADCxAgAA_wMAMAscAADsAwAwHQAA8QMAMKkCAADtAwAwqgIAAO4DADCrAgAA7wMAIKwCAADwAwAwrQIAAPADADCuAgAA8AMAMK8CAADwAwAwsAIAAPIDADCxAgAA8wMAMAscAADgAwAwHQAA5QMAMKkCAADhAwAwqgIAAOIDADCrAgAA4wMAIKwCAADkAwAwrQIAAOQDADCuAgAA5AMAMK8CAADkAwAwsAIAAOYDADCxAgAA5wMAMAPvAQEAAAABhAJAAAAAAYUCQAAAAAECAAAAGwAgHAAA6wMAIAMAAAAbACAcAADrAwAgHQAA6gMAIAEVAAC7BAAwCQUAAPcCACDYAQAA9gIAMNkBAAAZABDaAQAA9gIAMO8BAQDHAgAh8QEBAMcCACGEAkAAyAIAIYUCQADIAgAhoQIAAPUCACACAAAAGwAgFQAA6gMAIAIAAADoAwAgFQAA6QMAIAfYAQAA5wMAMNkBAADoAwAQ2gEAAOcDADDvAQEAxwIAIfEBAQDHAgAhhAJAAMgCACGFAkAAyAIAIQfYAQAA5wMAMNkBAADoAwAQ2gEAAOcDADDvAQEAxwIAIfEBAQDHAgAhhAJAAMgCACGFAkAAyAIAIQPvAQEAjAMAIYQCQACNAwAhhQJAAI0DACED7wEBAIwDACGEAkAAjQMAIYUCQACNAwAhA-8BAQAAAAGEAkAAAAABhQJAAAAAAQPgAUAAAAAB7wEBAAAAAYcCIAAAAAECAAAAFwAgHAAA9wMAIAMAAAAXACAcAAD3AwAgHQAA9gMAIAEVAAC6BAAwCQUAAPcCACDYAQAA-QIAMNkBAAAVABDaAQAA-QIAMOABQADIAgAh7wEBAMcCACHxAQEAxwIAIYcCIADeAgAhoQIAAPgCACACAAAAFwAgFQAA9gMAIAIAAAD0AwAgFQAA9QMAIAfYAQAA8wMAMNkBAAD0AwAQ2gEAAPMDADDgAUAAyAIAIe8BAQDHAgAh8QEBAMcCACGHAiAA3gIAIQfYAQAA8wMAMNkBAAD0AwAQ2gEAAPMDADDgAUAAyAIAIe8BAQDHAgAh8QEBAMcCACGHAiAA3gIAIQPgAUAAjQMAIe8BAQCMAwAhhwIgAKUDACED4AFAAI0DACHvAQEAjAMAIYcCIAClAwAhA-ABQAAAAAHvAQEAAAABhwIgAAAAAQMKAACyAwAgiQIBAAAAAYsCAgAAAAECAAAAEgAgHAAAgwQAIAMAAAASACAcAACDBAAgHQAAggQAIAEVAAC5BAAwCQoAAPcCACALAAD3AgAg2AEAAPsCADDZAQAAEAAQ2gEAAPsCADCJAgEAxwIAIYoCAQDHAgAhiwICANYCACGiAgAA-gIAIAIAAAASACAVAACCBAAgAgAAAIAEACAVAACBBAAgBtgBAAD_AwAw2QEAAIAEABDaAQAA_wMAMIkCAQDHAgAhigIBAMcCACGLAgIA1gIAIQbYAQAA_wMAMNkBAACABAAQ2gEAAP8DADCJAgEAxwIAIYoCAQDHAgAhiwICANYCACECiQIBAIwDACGLAgIAlgMAIQMKAACwAwAgiQIBAIwDACGLAgIAlgMAIQMKAACyAwAgiQIBAAAAAYsCAgAAAAEDCwAAswMAIIoCAQAAAAGLAgIAAAABAgAAABIAIBwAAIwEACADAAAAEgAgHAAAjAQAIB0AAIsEACABFQAAuAQAMAIAAAASACAVAACLBAAgAgAAAIAEACAVAACKBAAgAooCAQCMAwAhiwICAJYDACEDCwAAsQMAIIoCAQCMAwAhiwICAJYDACEDCwAAswMAIIoCAQAAAAGLAgIAAAABCwcAAM8DACDgAUAAAAABhQJAAAAAAY8CAQAAAAGQAgEAAAABkQIBAAAAAZICAQAAAAGTAgEAAAABlAIBAAAAAZUCQAAAAAGWAgEAAAABAgAAAAkAIBwAAJgEACADAAAACQAgHAAAmAQAIB0AAJcEACABFQAAtwQAMBAFAAD3AgAgBwAAgQMAINgBAACAAwAw2QEAAAcAENoBAACAAwAw4AFAAMgCACHxAQEAxwIAIYUCQADIAgAhjwIBAAAAAZACAQDHAgAhkQIBAMcCACGSAgEAxwIAIZMCAQDHAgAhlAIBAPACACGVAkAA8QIAIZYCAQDwAgAhAgAAAAkAIBUAAJcEACACAAAAlQQAIBUAAJYEACAO2AEAAJQEADDZAQAAlQQAENoBAACUBAAw4AFAAMgCACHxAQEAxwIAIYUCQADIAgAhjwIBAMcCACGQAgEAxwIAIZECAQDHAgAhkgIBAMcCACGTAgEAxwIAIZQCAQDwAgAhlQJAAPECACGWAgEA8AIAIQ7YAQAAlAQAMNkBAACVBAAQ2gEAAJQEADDgAUAAyAIAIfEBAQDHAgAhhQJAAMgCACGPAgEAxwIAIZACAQDHAgAhkQIBAMcCACGSAgEAxwIAIZMCAQDHAgAhlAIBAPACACGVAkAA8QIAIZYCAQDwAgAhCuABQACNAwAhhQJAAI0DACGPAgEAjAMAIZACAQCMAwAhkQIBAIwDACGSAgEAjAMAIZMCAQCMAwAhlAIBAL4DACGVAkAAvwMAIZYCAQC-AwAhCwcAAMEDACDgAUAAjQMAIYUCQACNAwAhjwIBAIwDACGQAgEAjAMAIZECAQCMAwAhkgIBAIwDACGTAgEAjAMAIZQCAQC-AwAhlQJAAL8DACGWAgEAvgMAIQsHAADPAwAg4AFAAAAAAYUCQAAAAAGPAgEAAAABkAIBAAAAAZECAQAAAAGSAgEAAAABkwIBAAAAAZQCAQAAAAGVAkAAAAABlgIBAAAAARQEAAClBAAgCQAApgQAIAwAAKcEACANAACoBAAgDgAAqQQAIA8AAKoEACDgAUAAAAAB7gEBAAAAAYUCQAAAAAGGAgEAAAABjwIBAAAAAZICAQAAAAGTAgEAAAABlQJAAAAAAZYCAQAAAAGcAgEAAAABnQIgAAAAAZ4CIAAAAAGfAkAAAAABoAIBAAAAAQIAAAABACAcAACkBAAgAwAAAAEAIBwAAKQEACAdAACjBAAgARUAALYEADAZAQAAgwMAIAQAAIQDACAJAACFAwAgDAAAhgMAIA0AAIYDACAOAACHAwAgDwAAiAMAINgBAACCAwAw2QEAAAMAENoBAACCAwAw4AFAAMgCACHuAQEA8AIAIYUCQADIAgAhhgIBAPACACGPAgEAAAABkgIBAMcCACGTAgEAxwIAIZUCQADxAgAhlgIBAPACACGbAgEA8AIAIZwCAQDHAgAhnQIgAN4CACGeAiAA3gIAIZ8CQADxAgAhoAIBAPACACECAAAAAQAgFQAAowQAIAIAAAChBAAgFQAAogQAIBLYAQAAoAQAMNkBAAChBAAQ2gEAAKAEADDgAUAAyAIAIe4BAQDwAgAhhQJAAMgCACGGAgEA8AIAIY8CAQDHAgAhkgIBAMcCACGTAgEAxwIAIZUCQADxAgAhlgIBAPACACGbAgEA8AIAIZwCAQDHAgAhnQIgAN4CACGeAiAA3gIAIZ8CQADxAgAhoAIBAPACACES2AEAAKAEADDZAQAAoQQAENoBAACgBAAw4AFAAMgCACHuAQEA8AIAIYUCQADIAgAhhgIBAPACACGPAgEAxwIAIZICAQDHAgAhkwIBAMcCACGVAkAA8QIAIZYCAQDwAgAhmwIBAPACACGcAgEAxwIAIZ0CIADeAgAhngIgAN4CACGfAkAA8QIAIaACAQDwAgAhDuABQACNAwAh7gEBAL4DACGFAkAAjQMAIYYCAQC-AwAhjwIBAIwDACGSAgEAjAMAIZMCAQCMAwAhlQJAAL8DACGWAgEAvgMAIZwCAQCMAwAhnQIgAKUDACGeAiAApQMAIZ8CQAC_AwAhoAIBAL4DACEUBAAA2gMAIAkAANsDACAMAADcAwAgDQAA3QMAIA4AAN4DACAPAADfAwAg4AFAAI0DACHuAQEAvgMAIYUCQACNAwAhhgIBAL4DACGPAgEAjAMAIZICAQCMAwAhkwIBAIwDACGVAkAAvwMAIZYCAQC-AwAhnAIBAIwDACGdAiAApQMAIZ4CIAClAwAhnwJAAL8DACGgAgEAvgMAIRQEAAClBAAgCQAApgQAIAwAAKcEACANAACoBAAgDgAAqQQAIA8AAKoEACDgAUAAAAAB7gEBAAAAAYUCQAAAAAGGAgEAAAABjwIBAAAAAZICAQAAAAGTAgEAAAABlQJAAAAAAZYCAQAAAAGcAgEAAAABnQIgAAAAAZ4CIAAAAAGfAkAAAAABoAIBAAAAAQQcAACZBAAwqQIAAJoEADCrAgAAnAQAIK8CAACdBAAwBBwAAI0EADCpAgAAjgQAMKsCAACQBAAgrwIAAJEEADAEHAAAhAQAMKkCAACFBAAwqwIAAIcEACCvAgAA_AMAMAQcAAD4AwAwqQIAAPkDADCrAgAA-wMAIK8CAAD8AwAwBBwAAOwDADCpAgAA7QMAMKsCAADvAwAgrwIAAPADADAEHAAA4AMAMKkCAADhAwAwqwIAAOMDACCvAgAA5AMAMAMcAAC0BAAgqQIAALUEACCvAgAAAQAgDgEAAKwEACAEAACvBAAgCQAAsAQAIAwAALEEACANAACxBAAgDgAAsgQAIA8AALMEACDuAQAAugMAIIYCAAC6AwAglQIAALoDACCWAgAAugMAIJsCAAC6AwAgnwIAALoDACCgAgAAugMAIAUFAACsBAAgBwAArgQAIJQCAAC6AwAglQIAALoDACCWAgAAugMAIAAAAAAAABUBAACrBAAgCQAApgQAIAwAAKcEACANAACoBAAgDgAAqQQAIA8AAKoEACDgAUAAAAAB7gEBAAAAAYUCQAAAAAGGAgEAAAABjwIBAAAAAZICAQAAAAGTAgEAAAABlQJAAAAAAZYCAQAAAAGbAgEAAAABnAIBAAAAAZ0CIAAAAAGeAiAAAAABnwJAAAAAAaACAQAAAAECAAAAAQAgHAAAtAQAIA7gAUAAAAAB7gEBAAAAAYUCQAAAAAGGAgEAAAABjwIBAAAAAZICAQAAAAGTAgEAAAABlQJAAAAAAZYCAQAAAAGcAgEAAAABnQIgAAAAAZ4CIAAAAAGfAkAAAAABoAIBAAAAAQrgAUAAAAABhQJAAAAAAY8CAQAAAAGQAgEAAAABkQIBAAAAAZICAQAAAAGTAgEAAAABlAIBAAAAAZUCQAAAAAGWAgEAAAABAooCAQAAAAGLAgIAAAABAokCAQAAAAGLAgIAAAABA-ABQAAAAAHvAQEAAAABhwIgAAAAAQPvAQEAAAABhAJAAAAAAYUCQAAAAAEDAAAAAwAgHAAAtAQAIB0AAL4EACAXAAAAAwAgAQAA2QMAIAkAANsDACAMAADcAwAgDQAA3QMAIA4AAN4DACAPAADfAwAgFQAAvgQAIOABQACNAwAh7gEBAL4DACGFAkAAjQMAIYYCAQC-AwAhjwIBAIwDACGSAgEAjAMAIZMCAQCMAwAhlQJAAL8DACGWAgEAvgMAIZsCAQC-AwAhnAIBAIwDACGdAiAApQMAIZ4CIAClAwAhnwJAAL8DACGgAgEAvgMAIRUBAADZAwAgCQAA2wMAIAwAANwDACANAADdAwAgDgAA3gMAIA8AAN8DACDgAUAAjQMAIe4BAQC-AwAhhQJAAI0DACGGAgEAvgMAIY8CAQCMAwAhkgIBAIwDACGTAgEAjAMAIZUCQAC_AwAhlgIBAL4DACGbAgEAvgMAIZwCAQCMAwAhnQIgAKUDACGeAiAApQMAIZ8CQAC_AwAhoAIBAL4DACEVAQAAqwQAIAQAAKUEACAMAACnBAAgDQAAqAQAIA4AAKkEACAPAACqBAAg4AFAAAAAAe4BAQAAAAGFAkAAAAABhgIBAAAAAY8CAQAAAAGSAgEAAAABkwIBAAAAAZUCQAAAAAGWAgEAAAABmwIBAAAAAZwCAQAAAAGdAiAAAAABngIgAAAAAZ8CQAAAAAGgAgEAAAABAgAAAAEAIBwAAL8EACAE4AFAAAAAAe8BAQAAAAGFAkAAAAABjgIAAACOAgIDAAAAAwAgHAAAvwQAIB0AAMQEACAXAAAAAwAgAQAA2QMAIAQAANoDACAMAADcAwAgDQAA3QMAIA4AAN4DACAPAADfAwAgFQAAxAQAIOABQACNAwAh7gEBAL4DACGFAkAAjQMAIYYCAQC-AwAhjwIBAIwDACGSAgEAjAMAIZMCAQCMAwAhlQJAAL8DACGWAgEAvgMAIZsCAQC-AwAhnAIBAIwDACGdAiAApQMAIZ4CIAClAwAhnwJAAL8DACGgAgEAvgMAIRUBAADZAwAgBAAA2gMAIAwAANwDACANAADdAwAgDgAA3gMAIA8AAN8DACDgAUAAjQMAIe4BAQC-AwAhhQJAAI0DACGGAgEAvgMAIY8CAQCMAwAhkgIBAIwDACGTAgEAjAMAIZUCQAC_AwAhlgIBAL4DACGbAgEAvgMAIZwCAQCMAwAhnQIgAKUDACGeAiAApQMAIZ8CQAC_AwAhoAIBAL4DACEMBQAAzgMAIOABQAAAAAHxAQEAAAABhQJAAAAAAY8CAQAAAAGQAgEAAAABkQIBAAAAAZICAQAAAAGTAgEAAAABlAIBAAAAAZUCQAAAAAGWAgEAAAABAgAAAAkAIBwAAMUEACADAAAABwAgHAAAxQQAIB0AAMkEACAOAAAABwAgBQAAwAMAIBUAAMkEACDgAUAAjQMAIfEBAQCMAwAhhQJAAI0DACGPAgEAjAMAIZACAQCMAwAhkQIBAIwDACGSAgEAjAMAIZMCAQCMAwAhlAIBAL4DACGVAkAAvwMAIZYCAQC-AwAhDAUAAMADACDgAUAAjQMAIfEBAQCMAwAhhQJAAI0DACGPAgEAjAMAIZACAQCMAwAhkQIBAIwDACGSAgEAjAMAIZMCAQCMAwAhlAIBAL4DACGVAkAAvwMAIZYCAQC-AwAhFQEAAKsEACAEAAClBAAgCQAApgQAIAwAAKcEACAOAACpBAAgDwAAqgQAIOABQAAAAAHuAQEAAAABhQJAAAAAAYYCAQAAAAGPAgEAAAABkgIBAAAAAZMCAQAAAAGVAkAAAAABlgIBAAAAAZsCAQAAAAGcAgEAAAABnQIgAAAAAZ4CIAAAAAGfAkAAAAABoAIBAAAAAQIAAAABACAcAADKBAAgFQEAAKsEACAEAAClBAAgCQAApgQAIA0AAKgEACAOAACpBAAgDwAAqgQAIOABQAAAAAHuAQEAAAABhQJAAAAAAYYCAQAAAAGPAgEAAAABkgIBAAAAAZMCAQAAAAGVAkAAAAABlgIBAAAAAZsCAQAAAAGcAgEAAAABnQIgAAAAAZ4CIAAAAAGfAkAAAAABoAIBAAAAAQIAAAABACAcAADMBAAgAwAAAAMAIBwAAMoEACAdAADQBAAgFwAAAAMAIAEAANkDACAEAADaAwAgCQAA2wMAIAwAANwDACAOAADeAwAgDwAA3wMAIBUAANAEACDgAUAAjQMAIe4BAQC-AwAhhQJAAI0DACGGAgEAvgMAIY8CAQCMAwAhkgIBAIwDACGTAgEAjAMAIZUCQAC_AwAhlgIBAL4DACGbAgEAvgMAIZwCAQCMAwAhnQIgAKUDACGeAiAApQMAIZ8CQAC_AwAhoAIBAL4DACEVAQAA2QMAIAQAANoDACAJAADbAwAgDAAA3AMAIA4AAN4DACAPAADfAwAg4AFAAI0DACHuAQEAvgMAIYUCQACNAwAhhgIBAL4DACGPAgEAjAMAIZICAQCMAwAhkwIBAIwDACGVAkAAvwMAIZYCAQC-AwAhmwIBAL4DACGcAgEAjAMAIZ0CIAClAwAhngIgAKUDACGfAkAAvwMAIaACAQC-AwAhAwAAAAMAIBwAAMwEACAdAADTBAAgFwAAAAMAIAEAANkDACAEAADaAwAgCQAA2wMAIA0AAN0DACAOAADeAwAgDwAA3wMAIBUAANMEACDgAUAAjQMAIe4BAQC-AwAhhQJAAI0DACGGAgEAvgMAIY8CAQCMAwAhkgIBAIwDACGTAgEAjAMAIZUCQAC_AwAhlgIBAL4DACGbAgEAvgMAIZwCAQCMAwAhnQIgAKUDACGeAiAApQMAIZ8CQAC_AwAhoAIBAL4DACEVAQAA2QMAIAQAANoDACAJAADbAwAgDQAA3QMAIA4AAN4DACAPAADfAwAg4AFAAI0DACHuAQEAvgMAIYUCQACNAwAhhgIBAL4DACGPAgEAjAMAIZICAQCMAwAhkwIBAIwDACGVAkAAvwMAIZYCAQC-AwAhmwIBAL4DACGcAgEAjAMAIZ0CIAClAwAhngIgAKUDACGfAkAAvwMAIaACAQC-AwAhFQEAAKsEACAEAAClBAAgCQAApgQAIAwAAKcEACANAACoBAAgDwAAqgQAIOABQAAAAAHuAQEAAAABhQJAAAAAAYYCAQAAAAGPAgEAAAABkgIBAAAAAZMCAQAAAAGVAkAAAAABlgIBAAAAAZsCAQAAAAGcAgEAAAABnQIgAAAAAZ4CIAAAAAGfAkAAAAABoAIBAAAAAQIAAAABACAcAADUBAAgAwAAAAMAIBwAANQEACAdAADYBAAgFwAAAAMAIAEAANkDACAEAADaAwAgCQAA2wMAIAwAANwDACANAADdAwAgDwAA3wMAIBUAANgEACDgAUAAjQMAIe4BAQC-AwAhhQJAAI0DACGGAgEAvgMAIY8CAQCMAwAhkgIBAIwDACGTAgEAjAMAIZUCQAC_AwAhlgIBAL4DACGbAgEAvgMAIZwCAQCMAwAhnQIgAKUDACGeAiAApQMAIZ8CQAC_AwAhoAIBAL4DACEVAQAA2QMAIAQAANoDACAJAADbAwAgDAAA3AMAIA0AAN0DACAPAADfAwAg4AFAAI0DACHuAQEAvgMAIYUCQACNAwAhhgIBAL4DACGPAgEAjAMAIZICAQCMAwAhkwIBAIwDACGVAkAAvwMAIZYCAQC-AwAhmwIBAL4DACGcAgEAjAMAIZ0CIAClAwAhngIgAKUDACGfAkAAvwMAIaACAQC-AwAhFQEAAKsEACAEAAClBAAgCQAApgQAIAwAAKcEACANAACoBAAgDgAAqQQAIOABQAAAAAHuAQEAAAABhQJAAAAAAYYCAQAAAAGPAgEAAAABkgIBAAAAAZMCAQAAAAGVAkAAAAABlgIBAAAAAZsCAQAAAAGcAgEAAAABnQIgAAAAAZ4CIAAAAAGfAkAAAAABoAIBAAAAAQIAAAABACAcAADZBAAgAwAAAAMAIBwAANkEACAdAADdBAAgFwAAAAMAIAEAANkDACAEAADaAwAgCQAA2wMAIAwAANwDACANAADdAwAgDgAA3gMAIBUAAN0EACDgAUAAjQMAIe4BAQC-AwAhhQJAAI0DACGGAgEAvgMAIY8CAQCMAwAhkgIBAIwDACGTAgEAjAMAIZUCQAC_AwAhlgIBAL4DACGbAgEAvgMAIZwCAQCMAwAhnQIgAKUDACGeAiAApQMAIZ8CQAC_AwAhoAIBAL4DACEVAQAA2QMAIAQAANoDACAJAADbAwAgDAAA3AMAIA0AAN0DACAOAADeAwAg4AFAAI0DACHuAQEAvgMAIYUCQACNAwAhhgIBAL4DACGPAgEAjAMAIZICAQCMAwAhkwIBAIwDACGVAkAAvwMAIZYCAQC-AwAhmwIBAL4DACGcAgEAjAMAIZ0CIAClAwAhngIgAKUDACGfAkAAvwMAIaACAQC-AwAhCAEEAQQGAQgACAkKAgwTBQ0UBQ4YBg8cBwMFAAEHDgMIAAQBBgACAQcPAAIKAAELAAEBBQABAQUAAQYEHQAJHgAMHwANIAAOIQAPIgAAAQEsAQEBMgEDCAANIgAOIwAPAAAAAwgADSIADiMADwAAAAMIABUiABYjABcAAAADCAAVIgAWIwAXAAAAAwgAHSIAHiMAHwAAAAMIAB0iAB4jAB8BBQABAQUAAQMIACQiACUjACYAAAADCAAkIgAlIwAmAQYAAgEGAAIDCAArIgAsIwAtAAAAAwgAKyIALCMALQIKAAELAAECCgABCwABBQgAMiIANSMANnQAM3UANAAAAAAABQgAMiIANSMANnQAM3UANAEFAAEBBQABAwgAOyIAPCMAPQAAAAMIADsiADwjAD0AAAADCABDIgBEIwBFAAAAAwgAQyIARCMARQEFAAEBBQABAwgASiIASyMATAAAAAMIAEoiAEsjAEwAAAAFCABSIgBVIwBWdABTdQBUAAAAAAAFCABSIgBVIwBWdABTdQBUAAAAAwgAXCIAXSMAXgAAAAMIAFwiAF0jAF4AAAADCABkIgBlIwBmAAAAAwgAZCIAZSMAZhACAREjARIkARMlARQmARYoARcqCRgrChkuARowCRsxCx4zAR80ASA1CSQ4DCU5ECY7ESc8ESg_ESlAESpBEStDESxFCS1GEi5IES9KCTBLEzFMETJNETNOCTRRFDVSGDZUGTdVGThYGTlZGTpaGTtcGTxeCT1fGj5hGT9jCUBkG0FlGUJmGUNnCURqHEVrIEZsAkdtAkhuAklvAkpwAktyAkx0CU11IU53Ak95CVB6IlF7AlJ8AlN9CVSAASNVgQEnVoIBA1eDAQNYhAEDWYUBA1qGAQNbiAEDXIoBCV2LAShejQEDX48BCWCQASlhkQEDYpIBA2OTAQlklgEqZZcBLmaYAQVnmQEFaJoBBWmbAQVqnAEFa54BBWygAQltoQEvbqMBBW-lAQlwpgEwcacBBXKoAQVzqQEJdqwBMXetATd4rgEGea8BBnqwAQZ7sQEGfLIBBn20AQZ-tgEJf7cBOIABuQEGgQG7AQmCAbwBOYMBvQEGhAG-AQaFAb8BCYYBwgE6hwHDAT6IAcUBP4kBxgE_igHJAT-LAcoBP4wBywE_jQHNAT-OAc8BCY8B0AFAkAHSAT-RAdQBCZIB1QFBkwHWAT-UAdcBP5UB2AEJlgHbAUKXAdwBRpgB3QEHmQHeAQeaAd8BB5sB4AEHnAHhAQedAeMBB54B5QEJnwHmAUegAegBB6EB6gEJogHrAUijAewBB6QB7QEHpQHuAQmmAfEBSacB8gFNqAH0AU6pAfUBTqoB-AFOqwH5AU6sAfoBTq0B_AFOrgH-AQmvAf8BT7ABgQJOsQGDAgmyAYQCULMBhQJOtAGGAk61AYcCCbYBigJRtwGLAle4AY0CWLkBjgJYugGRAli7AZICWLwBkwJYvQGVAli-AZcCCb8BmAJZwAGaAljBAZwCCcIBnQJawwGeAljEAZ8CWMUBoAIJxgGjAlvHAaQCX8gBpgJgyQGnAmDKAaoCYMsBqwJgzAGsAmDNAa4CYM4BsAIJzwGxAmHQAbMCYNEBtQIJ0gG2AmLTAbcCYNQBuAJg1QG5AgnWAbwCY9cBvQJn" } config.compilerWasm = { getRuntime: async () => require('./query_compiler_fast_bg.js'), diff --git a/packages/forums-prisma-client/package.json b/packages/forums-prisma-client/package.json index 981f41e..90df309 100644 --- a/packages/forums-prisma-client/package.json +++ b/packages/forums-prisma-client/package.json @@ -1,5 +1,5 @@ { - "name": "prisma-client-891c12951ab78c3fd343b6e40286a01805630d9b94dded161d908245534b7080", + "name": "prisma-client-8b145d316a03460c3572ad5af2d2d6742bd79e4fbf9dcb2b8e29bca301f35781", "main": "index.js", "types": "index.d.ts", "browser": "default.js", diff --git a/packages/forums-prisma-client/schema.prisma b/packages/forums-prisma-client/schema.prisma index 0cb7665..74db76d 100644 --- a/packages/forums-prisma-client/schema.prisma +++ b/packages/forums-prisma-client/schema.prisma @@ -131,9 +131,11 @@ model TopicClosure { @@schema("forums") } +// Explicit topic choices override challenge-wide notification preferences. model TopicWatch { topicId String @db.VarChar(14) memberId String @db.VarChar(64) + watching Boolean @default(true) createdAt DateTime @default(now()) topic Topic @relation(fields: [topicId], references: [id], onDelete: Cascade) diff --git a/prisma/migrations/20261020000000_topic_watch_preferences/migration.sql b/prisma/migrations/20261020000000_topic_watch_preferences/migration.sql new file mode 100644 index 0000000..b96fa3b --- /dev/null +++ b/prisma/migrations/20261020000000_topic_watch_preferences/migration.sql @@ -0,0 +1,2 @@ +-- Preserve existing watches; false rows record explicit topic opt-outs. +ALTER TABLE "forums"."TopicWatch" ADD COLUMN "watching" BOOLEAN NOT NULL DEFAULT true; diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 67453ac..e84a99b 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -131,9 +131,11 @@ model TopicClosure { @@schema("forums") } +// Explicit topic choices override challenge-wide notification preferences. model TopicWatch { topicId String @db.VarChar(14) memberId String @db.VarChar(64) + watching Boolean @default(true) createdAt DateTime @default(now()) topic Topic @relation(fields: [topicId], references: [id], onDelete: Cascade) diff --git a/src/forums/challenge-forum-watch.service.ts b/src/forums/challenge-forum-watch.service.ts index c2c5889..7438a96 100644 --- a/src/forums/challenge-forum-watch.service.ts +++ b/src/forums/challenge-forum-watch.service.ts @@ -82,21 +82,33 @@ export class ChallengeForumWatchService { update: { watching }, }); } else { - const preference = await this.db.challengeForumWatch.findUnique({ - where, - }); - watching = - preference?.watching ?? - ( - await this.resourceAccessService.getChallengeDefaultWatcherMemberIds( - challengeId, - memberId, - ) - ).includes(memberId); + watching = await this.isWatching(challengeId, memberId); } return { challengeId, memberId, watching }; } + /** + * Resolves a member's forum preference for already-authorized topic reads. + * @param challengeId Effective challenge scope of the visible topics. + * @param memberId Authenticated member whose inherited preference is needed. + * @returns Saved forum preference, or the current resource-based default. + * @throws Propagates preference database and resource lookup errors. + */ + async isWatching(challengeId: string, memberId: string): Promise { + const preference = await this.db.challengeForumWatch.findUnique({ + where: { challengeId_memberId: { challengeId, memberId } }, + }); + return ( + preference?.watching ?? + ( + await this.resourceAccessService.getChallengeDefaultWatcherMemberIds( + challengeId, + memberId, + ) + ).includes(memberId) + ); + } + /** * Resolves forum-wide notification candidates, applying explicit choices to defaults. * The notification publisher still enforces each topic's visibility and bans. diff --git a/src/forums/forums-command.service.spec.ts b/src/forums/forums-command.service.spec.ts index 31fe3f4..57fa007 100644 --- a/src/forums/forums-command.service.spec.ts +++ b/src/forums/forums-command.service.spec.ts @@ -730,6 +730,27 @@ describe('ForumsCommandService post reactions', () => { }); describe('ForumsCommandService member-targeted state commands', () => { + it('persists a challenge-topic opt-out instead of deleting its preference', async () => { + const { service, topicContextService, tx } = createCommandService(); + topicContextService.loadTopicContext.mockResolvedValue({ + ...(await topicContextService.loadTopicContext()), + effectiveChallengeId: 'challenge-1', + }); + await expect( + service.removeTopicWatch('topic-1', undefined, user), + ).resolves.toEqual({ + topicId: 'topic-1', + memberId: '1', + watching: false, + }); + expect(tx.topicWatch.upsert).toHaveBeenCalledWith({ + where: { topicId_memberId: { topicId: 'topic-1', memberId: '1' } }, + create: { topicId: 'topic-1', memberId: '1', watching: false }, + update: { watching: false }, + }); + expect(tx.topicWatch.deleteMany).not.toHaveBeenCalled(); + }); + const commandCases = [ { name: 'addTopicWatch', @@ -746,8 +767,9 @@ describe('ForumsCommandService member-targeted state commands', () => { create: { topicId: 'topic-1', memberId: '2', + watching: true, }, - update: {}, + update: { watching: true }, }); }, }, diff --git a/src/forums/forums-command.service.ts b/src/forums/forums-command.service.ts index a456cf8..73e47a6 100644 --- a/src/forums/forums-command.service.ts +++ b/src/forums/forums-command.service.ts @@ -155,7 +155,9 @@ export class ForumsCommandService { ) {} /** - * Creates a topic and starter post in one transaction. + * Creates a topic and starter post in one transaction. Human authors receive + * read state; only general topics seed a separate author watch. Challenge + * topics inherit the forum preference until explicitly watched or unwatched. * * Child topics are allowed only when the resolved effective restrictions * remain non-challenge. Challenge-scoped child candidates are rejected by the @@ -270,19 +272,21 @@ export class ForumsCommandService { }); if (author.seedMemberState) { - await tx.topicWatch.upsert({ - where: { - topicId_memberId: { + if (!restrictions.effectiveChallengeId) { + await tx.topicWatch.upsert({ + where: { + topicId_memberId: { + topicId: topic.id, + memberId: author.memberId, + }, + }, + create: { topicId: topic.id, memberId: author.memberId, }, - }, - create: { - topicId: topic.id, - memberId: author.memberId, - }, - update: {}, - }); + update: {}, + }); + } await tx.topicReadState.upsert({ where: { @@ -767,7 +771,7 @@ export class ForumsCommandService { } /** - * Adds an explicit watch for a member on a topic. + * Enables an explicit topic watch, replacing any saved topic opt-out. * * @param topicId Topic id to watch. * @param dto Optional target member body; required for scoped M2M callers. @@ -823,14 +827,15 @@ export class ForumsCommandService { create: { topicId, memberId: target.memberId, + watching: true, }, - update: {}, + update: { watching: true }, }); }); } /** - * Removes an explicit watch for a member from a topic. + * Persists a challenge-topic opt-out; removes general-topic watches as before. * * @param topicId Topic id to unwatch. * @param dto Optional target member body; required for scoped M2M callers. @@ -876,12 +881,17 @@ export class ForumsCommandService { return this.db.$transaction(async (tx) => { await this.ensureActiveTopic(tx, topicId); - await tx.topicWatch.deleteMany({ - where: { - topicId, - memberId: target.memberId, - }, - }); + if (context.effectiveChallengeId) { + await tx.topicWatch.upsert({ + where: { topicId_memberId: { topicId, memberId: target.memberId } }, + create: { topicId, memberId: target.memberId, watching: false }, + update: { watching: false }, + }); + } else { + await tx.topicWatch.deleteMany({ + where: { topicId, memberId: target.memberId }, + }); + } return { topicId, diff --git a/src/forums/forums-notification-read.integration.spec.ts b/src/forums/forums-notification-read.integration.spec.ts index aec65c4..4e8e280 100644 --- a/src/forums/forums-notification-read.integration.spec.ts +++ b/src/forums/forums-notification-read.integration.spec.ts @@ -21,6 +21,7 @@ interface TopicClosureSeed { } interface TopicWatchSeed { + watching?: boolean; topicId: string; memberId: string; } @@ -192,6 +193,27 @@ function createSeededForumsDb(seed: SeededForumsData) { return [{ active: Boolean(topicId && isTopicActive(seed, topicId)) }]; } + if ( + queryText.includes('t."parentTopicId" IS NULL') && + queryText.includes('t."challengeId" =') + ) { + const challengeId = values + .map(queryValueToString) + .find((value) => + seed.topics.some((topic) => topic.challengeId === value), + ); + return seed.topics + .filter( + (topic) => + topic.challengeId === challengeId && + !topic.parentTopicId && + isTopicActive(seed, topic.id), + ) + .map((topic) => + buildTopicSummaryRow(seed, topic, queryValueToString(values[0])), + ); + } + if (queryText.includes('FROM "Topic" t') && topicId) { const topic = topicById().get(topicId); @@ -268,8 +290,8 @@ function createSeededForumsDb(seed: SeededForumsData) { authorMemberId: args.data.authorMemberId, authorHandle: args.data.authorHandle, content: args.data.content, - createdAt: new Date(`2026-06-04T00:1${nextPostId}:00.000Z`), - updatedAt: new Date(`2026-06-04T00:1${nextPostId}:00.000Z`), + createdAt: new Date(createdAt.getTime() + (10 + nextPostId) * 60_000), + updatedAt: new Date(createdAt.getTime() + (10 + nextPostId) * 60_000), }); nextPostId += 1; @@ -403,10 +425,11 @@ function createSeededForumsDb(seed: SeededForumsData) { args.where.topicId.in.includes(watch.topicId) && watch.memberId !== args.where.memberId.not, ) - .map((watch) => ({ memberId: watch.memberId })), + .map((watch) => ({ ...watch, watching: watch.watching ?? true })), upsert: (args: { where: { topicId_memberId: TopicWatchSeed }; create: TopicWatchSeed; + update: Partial; }) => { const existing = seed.topicWatches.find( (watch) => @@ -415,6 +438,7 @@ function createSeededForumsDb(seed: SeededForumsData) { ); if (existing) { + Object.assign(existing, args.update); return existing; } @@ -606,9 +630,15 @@ function buildTopicSummaryRow( viewsCount: seed.topicReadStates.filter( (state) => state.topicId === topic.id, ).length, - watching: seed.topicWatches.some( - (watch) => watch.topicId === topic.id && watch.memberId === memberId, - ), + watching: + seed.topicWatches.find( + (watch) => watch.topicId === topic.id && watch.memberId === memberId, + )?.watching ?? + (seed.topicWatches.some( + (watch) => watch.topicId === topic.id && watch.memberId === memberId, + ) + ? true + : null), starterPostExcerpt: posts[0]?.content?.slice(0, 280) ?? null, participantsCount: participants.length, participants: participants.slice(0, 5), @@ -938,6 +968,108 @@ describe('forums notification/read integration', () => { ]); }); + it.each(['2', '6'])( + 'preserves topic overrides across forum toggles for member %s', + async (memberId) => { + defaultWatchers.add(memberId); + const topicIds: string[] = []; + for (const title of [ + 'Inherited discussion', + 'Explicit watch', + 'Explicit opt-out', + 'Inherited announcement', + ]) { + const created = await request(app.getHttpServer()) + .post('/topics') + .set('x-member-id', '6') + .send({ + challengeId: 'challenge-1', + title, + content: title, + isAnnouncement: title.includes('announcement'), + }) + .expect(201); + topicIds.push(created.body.topic.id); + } + expect( + seedData.topicWatches.filter((watch) => + topicIds.includes(watch.topicId), + ), + ).toEqual([]); + await request(app.getHttpServer()) + .put(`/topics/${topicIds[1]}/watch`) + .set('x-member-id', memberId) + .send({}) + .expect(200); + await request(app.getHttpServer()) + .delete(`/topics/${topicIds[2]}/watch`) + .set('x-member-id', memberId) + .expect(200); + + // List, detail and email recipients must agree throughout the full QA sequence. + for (const forumWatching of [true, false, true]) { + if (forumWatching) { + await request(app.getHttpServer()) + .put('/challenges/challenge-1/watch') + .set('x-member-id', memberId) + .send({}) + .expect(200); + } else { + await request(app.getHttpServer()) + .delete('/challenges/challenge-1/watch') + .set('x-member-id', memberId) + .expect(200); + const created = await request(app.getHttpServer()) + .post('/topics') + .set('x-member-id', memberId) + .send({ + challengeId: 'challenge-1', + title: 'Created while unwatched', + content: 'New topic', + }) + .expect(201); + topicIds.push(created.body.topic.id); + } + const list = await request(app.getHttpServer()) + .get('/topics/challenges/challenge-1') + .set('x-member-id', memberId) + .expect(200); + for (const [index, topicId] of topicIds.entries()) { + const expectedWatching = + index === 1 || (index !== 2 && forumWatching); + expect( + list.body.data.find((topic: { id: string }) => topic.id === topicId) + .watching, + ).toBe(expectedWatching); + const detail = await request(app.getHttpServer()) + .get(`/topics/${topicId}`) + .set('x-member-id', memberId) + .expect(200); + expect(detail.body.topic.watching).toBe(expectedWatching); + publishedEvents.length = 0; + await request(app.getHttpServer()) + .post(`/topics/${topicId}/posts`) + .set('x-member-id', '1') + .send({ content: 'Notification check' }) + .expect(201); + expect( + publishedEvents.flatMap((event) => event.payload.recipients), + ).toEqual(expectedWatching ? [emailsByMemberId.get(memberId)] : []); + } + } + await request(app.getHttpServer()) + .put(`/topics/${topicIds[2]}/watch`) + .set('x-member-id', memberId) + .send({}) + .expect(200); + const rewatched = await request(app.getHttpServer()) + .get(`/topics/${topicIds[2]}`) + .set('x-member-id', memberId) + .expect(200); + expect(rewatched.body.topic.watching).toBe(true); + }, + ); + it('rejects inaccessible challenge watch reads and mutations', async () => { await request(app.getHttpServer()) .get('/challenges/challenge-1/watch') @@ -968,7 +1100,7 @@ describe('forums notification/read integration', () => { expect(seedData.topicWatches).toEqual([ { topicId: 'parent-1', memberId: '1' }, - { topicId: 'parent-1', memberId: '2' }, + { topicId: 'parent-1', memberId: '2', watching: true }, ]); expect(publishedEvents).toHaveLength(1); expect(publishedEvents[0]).toEqual({ diff --git a/src/forums/forums-read-query.service.ts b/src/forums/forums-read-query.service.ts index a14a1a4..a1b48a2 100644 --- a/src/forums/forums-read-query.service.ts +++ b/src/forums/forums-read-query.service.ts @@ -6,7 +6,8 @@ import { DbService } from '../db/db.service'; * Database row returned by forum topic summary read queries. * * Lock fields are direct Topic projections. `lockedBy` and `lockedAt` may be - * null even when `locked` is true for imported legacy topics. + * null even when `locked` is true for imported legacy topics. `watching` is the + * explicit topic preference, or null when it inherits the challenge preference. */ export interface ForumsTopicSummaryRow { id: string; @@ -24,7 +25,7 @@ export interface ForumsTopicSummaryRow { updatedAt: Date; postsCount: number; viewsCount: number; - watching: boolean; + watching: boolean | null; starterPostExcerpt: string | null; participantsCount: number; participants: ForumsTopicParticipantRow[]; @@ -363,7 +364,7 @@ export class ForumsReadQueryService { t."updatedAt", post_stats."postsCount", view_stats."viewsCount", - watch_state."topicId" IS NOT NULL AS watching, + watch_state.watching AS watching, starter."starterPostExcerpt", participant_stats."participantsCount", participant_snapshots.participants, diff --git a/src/forums/forums-read.service.ts b/src/forums/forums-read.service.ts index 8cee791..cd00a41 100644 --- a/src/forums/forums-read.service.ts +++ b/src/forums/forums-read.service.ts @@ -6,6 +6,7 @@ import { UnauthorizedException, } from '@nestjs/common'; import { JwtUser } from '../auth/jwt.service'; +import { ChallengeForumWatchService } from './challenge-forum-watch.service'; import { PostReactionType } from '../../prisma/generated/client'; import { ForumsPostTreeNodeDto, @@ -79,6 +80,7 @@ export class ForumsReadService { * @param readQueryService Side-effect-free raw-query reader. * @param moderationService Shared runtime ban and lock gate. * @param resourceAccessService Adapter for challenge copilot assignments. + * @param challengeWatchService Effective forum preferences for inherited topic watches. * @throws Does not throw directly; dependencies are resolved by Nest. */ constructor( @@ -87,6 +89,7 @@ export class ForumsReadService { private readonly readQueryService: ForumsReadQueryService, private readonly moderationService: ForumsModerationService, private readonly resourceAccessService: ResourceAccessService, + private readonly challengeWatchService: ChallengeForumWatchService, ) {} /** @@ -139,6 +142,11 @@ export class ForumsReadService { this.resolveRootRowRestrictions(row), ); + await this.applyChallengeWatch( + visibleRows, + normalizedChallengeId, + principal, + ); return this.paginateRows(visibleRows, query); } @@ -231,6 +239,11 @@ export class ForumsReadService { (row) => this.resolveChildRowRestrictions(parentContext, row), ); + await this.applyChallengeWatch( + visibleRows, + parentContext.effectiveChallengeId, + principal, + ); return visibleRows.map((row) => this.mapTopicSummary(row)); } @@ -282,13 +295,24 @@ export class ForumsReadService { throw new NotFoundException('Topic not found.'); } + await this.applyChallengeWatch( + [detailSnapshot.summaryRow], + context.effectiveChallengeId, + principal, + ); const copilotMemberIds = await this.resolvePostAuthorCopilots( context.effectiveChallengeId, detailSnapshot.postRows, ); return { - permissions: { createPost: topicDecisions.canCreatePost.allowed, createTopic: topicDecisions.canCreateChildTopic.allowed, watch: topicDecisions.canAddWatch.allowed, update: topicDecisions.canUpdateTopic.allowed, delete: topicDecisions.canDeleteTopic.allowed }, + permissions: { + createPost: topicDecisions.canCreatePost.allowed, + createTopic: topicDecisions.canCreateChildTopic.allowed, + watch: topicDecisions.canAddWatch.allowed, + update: topicDecisions.canUpdateTopic.allowed, + delete: topicDecisions.canDeleteTopic.allowed, + }, topic: this.mapTopicSummary(detailSnapshot.summaryRow), posts: this.buildPostTree( topicId, @@ -298,6 +322,29 @@ export class ForumsReadService { }; } + /** + * Applies forum inheritance only to visible topics without an explicit choice. + * @param rows Authorized summary rows updated in place before DTO mapping. + * @param challengeId Effective challenge scope, or null for general forums. + * @param principal Current reader; guests and machines do not inherit watches. + * @returns Nothing after resolving at most one forum preference for the batch. + * @throws Propagates preference database and resource lookup errors. + */ + private async applyChallengeWatch( + rows: ForumsTopicSummaryRow[], + challengeId: string | null, + principal: ForumsPrincipal, + ): Promise { + if (!challengeId || !principal.memberId || principal.isMachine) return; + const inheritedRows = rows.filter((row) => row.watching === null); + if (!inheritedRows.length) return; + const watching = await this.challengeWatchService.isWatching( + challengeId, + principal.memberId, + ); + for (const row of inheritedRows) row.watching = watching; + } + /** * Builds a validated reader or a non-elevated anonymous principal. * @@ -306,7 +353,15 @@ export class ForumsReadService { * @throws Does not throw. */ private readPrincipal(user: JwtUser | undefined): ForumsPrincipal { - return buildForumsPrincipal(user) ?? { memberId: null, roles: [], scopes: [], isAdmin: false, isMachine: false }; + return ( + buildForumsPrincipal(user) ?? { + memberId: null, + roles: [], + scopes: [], + isAdmin: false, + isMachine: false, + } + ); } /** Requires a validated identity for challenge-specific listing. diff --git a/src/forums/forums-watch-notification.service.spec.ts b/src/forums/forums-watch-notification.service.spec.ts index 7e8cac9..781e22a 100644 --- a/src/forums/forums-watch-notification.service.spec.ts +++ b/src/forums/forums-watch-notification.service.spec.ts @@ -74,7 +74,9 @@ function createService(templateId: string | null = 'template-id') { ]), }, topicWatch: { - findMany: jest.fn().mockResolvedValue([{ memberId: '2' }]), + findMany: jest + .fn() + .mockResolvedValue([{ memberId: '2', watching: true }]), }, }; const memberDirectoryService = { @@ -157,7 +159,9 @@ describe('ForumsWatchNotificationService', () => { eventBusService, service, } = createService(); - db.topicWatch.findMany.mockResolvedValue([{ memberId: '2' }]); + db.topicWatch.findMany.mockResolvedValue([ + { memberId: '2', watching: true }, + ]); challengeWatchService.getWatcherMemberIds.mockResolvedValue([ '1', '2', @@ -239,12 +243,34 @@ describe('ForumsWatchNotificationService', () => { ); }); + it('excludes an explicit topic opt-out even when forum and ancestor watches are enabled', async () => { + const { service, db, challengeWatchService, eventBusService } = + createService(); + challengeWatchService.getWatcherMemberIds.mockResolvedValue(['2']); + db.topicWatch.findMany.mockResolvedValue([ + { topicId: 'root-1', memberId: '2', watching: true }, + { topicId: 'topic-1', memberId: '2', watching: false }, + ]); + const result = await service.publishPostNotification({ + topic: makeTopic({ challengeId: 'challenge-1' }), + post: makePost(), + restrictions: { + challengeId: 'challenge-1', + roleName: null, + hasRestrictionConflict: false, + }, + operationName: 'createPost', + }); + expect(result.published).toBe(false); + expect(eventBusService.postEvent).not.toHaveBeenCalled(); + }); + it('dedupes topic and ancestor watches into one recipient email event', async () => { const { challengeApiService, db, eventBusService, service } = createService(); db.topicWatch.findMany.mockResolvedValue([ - { memberId: '2' }, - { memberId: '2' }, + { memberId: '2', watching: true }, + { memberId: '2', watching: true }, ]); const result = await service.publishPostNotification({ @@ -264,7 +290,7 @@ describe('ForumsWatchNotificationService', () => { topicId: { in: ['topic-1', 'root-1'] }, memberId: { not: '1' }, }, - select: { memberId: true }, + select: { topicId: true, memberId: true, watching: true }, }); expect(eventBusService.postEvent).toHaveBeenCalledTimes(1); expect(challengeApiService.getChallengeTitle).not.toHaveBeenCalled(); @@ -284,7 +310,9 @@ describe('ForumsWatchNotificationService', () => { it('excludes the persisted author even when the author watches the topic', async () => { const { db, eventBusService, service } = createService(); - db.topicWatch.findMany.mockResolvedValue([{ memberId: '2' }]); + db.topicWatch.findMany.mockResolvedValue([ + { memberId: '2', watching: true }, + ]); await service.publishPostNotification({ topic: makeTopic(), @@ -356,8 +384,8 @@ describe('ForumsWatchNotificationService', () => { service, } = createService(); db.topicWatch.findMany.mockResolvedValue([ - { memberId: '2' }, - { memberId: '3' }, + { memberId: '2', watching: true }, + { memberId: '3', watching: true }, ]); memberDirectoryService.getMembersByIds.mockResolvedValue([ { memberId: '2', email: 'two@example.com', handle: 'two' }, @@ -408,9 +436,9 @@ describe('ForumsWatchNotificationService', () => { service, } = createService(); db.topicWatch.findMany.mockResolvedValue([ - { memberId: '2' }, - { memberId: '3' }, - { memberId: '4' }, + { memberId: '2', watching: true }, + { memberId: '3', watching: true }, + { memberId: '4', watching: true }, ]); memberDirectoryService.getMembersByIds.mockResolvedValue([ { memberId: '2', email: 'two@example.com', handle: 'two' }, @@ -464,9 +492,9 @@ describe('ForumsWatchNotificationService', () => { }); db.topicWatch.findMany.mockResolvedValue([ - { memberId: '2' }, - { memberId: '3' }, - { memberId: '4' }, + { memberId: '2', watching: true }, + { memberId: '3', watching: true }, + { memberId: '4', watching: true }, ]); memberDirectoryService.getMembersByIds.mockResolvedValue([ { memberId: '2', email: 'two@example.com', handle: 'two' }, @@ -599,8 +627,8 @@ describe('ForumsWatchNotificationService', () => { service, } = createService(); db.topicWatch.findMany.mockResolvedValue([ - { memberId: '2' }, - { memberId: '3' }, + { memberId: '2', watching: true }, + { memberId: '3', watching: true }, ]); memberDirectoryService.getMembersByIds.mockResolvedValue([ { memberId: '2', email: 'two@example.com', handle: 'two' }, diff --git a/src/forums/forums-watch-notification.service.ts b/src/forums/forums-watch-notification.service.ts index 2ce3c85..1fd4810 100644 --- a/src/forums/forums-watch-notification.service.ts +++ b/src/forums/forums-watch-notification.service.ts @@ -198,7 +198,8 @@ export class ForumsWatchNotificationService { } /** - * Resolves topic, ancestor, and challenge-wide watch candidates. + * Resolves topic, ancestor, and challenge-wide watches, excluding explicit + * opt-outs on the receiving topic even when the member watches the forum. * * @param topicId Topic id receiving the newly created post. * @param authorMemberId Persisted author member id to exclude. @@ -226,18 +227,27 @@ export class ForumsWatchNotificationService { topicId: { in: watchedTopicIds }, memberId: { not: authorMemberId }, }, - select: { memberId: true }, + select: { topicId: true, memberId: true, watching: true }, }); const challengeWatchers = challengeId ? await this.challengeWatchService.getWatcherMemberIds(challengeId) : []; + const topicOptOuts = new Set( + watchRows + .filter((watch) => watch.topicId === topicId && !watch.watching) + .map((watch) => watch.memberId), + ); return Array.from( new Set([ - ...watchRows.map((watch) => watch.memberId), + ...watchRows + .filter((watch) => watch.watching) + .map((watch) => watch.memberId), ...challengeWatchers, ]), - ).filter((memberId) => memberId !== authorMemberId); + ).filter( + (memberId) => memberId !== authorMemberId && !topicOptOuts.has(memberId), + ); } /** @@ -412,9 +422,8 @@ export class ForumsWatchNotificationService { const context: ForumsNotificationChallengeContext = {}; try { - context.title = await this.challengeApiService.getChallengeTitle( - challengeId, - ); + context.title = + await this.challengeApiService.getChallengeTitle(challengeId); } catch (error) { const message = error instanceof Error ? error.message : 'unknown error'; this.logger.warn( diff --git a/src/forums/public-forums-query.service.ts b/src/forums/public-forums-query.service.ts index bc551a8..26c1ebf 100644 --- a/src/forums/public-forums-query.service.ts +++ b/src/forums/public-forums-query.service.ts @@ -159,7 +159,7 @@ export class PublicForumsQueryService { ? Prisma.sql`((${this.visibleThreads(principal, categoryIds)}) OR t.id IN (${Prisma.join(categoryIds)}))` : this.visibleThreads(principal, categoryIds); const watchFilter = watching - ? Prisma.sql`AND EXISTS (SELECT 1 FROM "TopicWatch" w WHERE w."topicId" = t.id AND w."memberId" = ${principal.memberId})` + ? Prisma.sql`AND EXISTS (SELECT 1 FROM "TopicWatch" w WHERE w."topicId" = t.id AND w."memberId" = ${principal.memberId} AND w.watching = true)` : Prisma.empty; const searchFilter = search ? Prisma.sql`AND (STRPOS(LOWER(t.title), ${search}) > 0 OR EXISTS ( diff --git a/src/forums/topic-watch-schema.integration.spec.ts b/src/forums/topic-watch-schema.integration.spec.ts new file mode 100644 index 0000000..e09b135 --- /dev/null +++ b/src/forums/topic-watch-schema.integration.spec.ts @@ -0,0 +1,112 @@ +import { ConfigService } from '@nestjs/config'; +import { DbService } from '../db/db.service'; +import { ForumsReadQueryService } from './forums-read-query.service'; + +const databaseUrl = process.env.FORUMS_DATABASE_URL ?? process.env.DATABASE_URL; +const itWithDatabase = databaseUrl ? it : it.skip; +const challengeId = `watch-schema-${process.pid}-${Date.now()}`; + +/** Verifies topic preference persistence and raw SQL projections against migrated PostgreSQL. */ +describe('topic watch schema persistence', () => { + let db: DbService; + let queries: ForumsReadQueryService; + const topicIds: string[] = []; + + beforeAll(async () => { + if (!databaseUrl) return; + const url = new URL(databaseUrl); + url.searchParams.set('options', '-c search_path=forums,public'); + db = new DbService(new ConfigService({ database: { url: url.href } })); + await db.$connect(); + queries = new ForumsReadQueryService(db); + for (const title of ['Inherited', 'Watched', 'Unwatched']) { + const topic = await db.topic.create({ + data: { + challengeId, + title, + authorMemberId: 'watch-author', + authorHandle: 'watch-author', + }, + }); + topicIds.push(topic.id); + await db.topicClosure.create({ + data: { + ancestorTopicId: topic.id, + descendantTopicId: topic.id, + depth: 0, + }, + }); + } + await db.topicWatch.create({ + data: { topicId: topicIds[1], memberId: 'watch-member' }, + }); + await db.topicWatch.create({ + data: { topicId: topicIds[2], memberId: 'watch-member', watching: false }, + }); + }); + + afterAll(async () => { + if (!db) return; + await db.topic.deleteMany({ where: { challengeId } }); + await db.challengeForumWatch.deleteMany({ where: { challengeId } }); + await db.$disconnect(); + }); + + itWithDatabase( + 'distinguishes inherited, explicit watched and explicit unwatched topics in list and detail SQL', + async () => { + for (const watching of [false, true]) { + await db.challengeForumWatch.upsert({ + where: { + challengeId_memberId: { challengeId, memberId: 'watch-member' }, + }, + create: { challengeId, memberId: 'watch-member', watching }, + update: { watching }, + }); + const rows = await queries.findChallengeRootTopicSummaries( + challengeId, + 'watch-member', + ); + expect( + topicIds.map((id) => rows.find((row) => row.id === id)?.watching), + ).toEqual([null, true, false]); + const detail = await queries.findTopicDetailSnapshot( + topicIds[2], + 'watch-member', + ); + expect(detail?.summaryRow.watching).toBe(false); + } + expect( + await db.topicWatch.count({ where: { topicId: { in: topicIds } } }), + ).toBe(2); + const anonymousRows = await queries.findChallengeRootTopicSummaries( + challengeId, + null, + ); + expect(anonymousRows.every((row) => row.watching === null)).toBe(true); + }, + ); + + itWithDatabase( + 'updates the same explicit opt-out row when a topic is watched again', + async () => { + const where = { + topicId_memberId: { topicId: topicIds[2], memberId: 'watch-member' }, + }; + for (const watching of [false, false, true]) { + await db.topicWatch.upsert({ + where, + create: { ...where.topicId_memberId, watching }, + update: { watching }, + }); + } + expect(await db.topicWatch.count({ where: where.topicId_memberId })).toBe( + 1, + ); + expect( + (await queries.findTopicDetailSnapshot(topicIds[2], 'watch-member')) + ?.summaryRow.watching, + ).toBe(true); + }, + ); +}); diff --git a/src/forums/topics.controller.ts b/src/forums/topics.controller.ts index ba7a68d..c6e8c4f 100644 --- a/src/forums/topics.controller.ts +++ b/src/forums/topics.controller.ts @@ -166,7 +166,9 @@ export class TopicsController { type: ForumsTopicSummaryPageDto, }) @ApiBadRequestResponse({ description: 'Invalid pagination query.' }) - @ApiUnauthorizedResponse({ description: 'A supplied bearer token is invalid.' }) + @ApiUnauthorizedResponse({ + description: 'A supplied bearer token is invalid.', + }) @ApiForbiddenResponse({ description: 'Active forums ban.' }) listGeneralRootTopics( @Query() query: ForumsTopicListQueryDto, @@ -260,7 +262,9 @@ export class TopicsController { description: 'Visible direct child topics.', type: [ForumsTopicSummaryDto], }) - @ApiUnauthorizedResponse({ description: 'A supplied bearer token is invalid.' }) + @ApiUnauthorizedResponse({ + description: 'A supplied bearer token is invalid.', + }) @ApiForbiddenResponse({ description: 'Active forums ban or parent topic visibility denied.', }) @@ -300,7 +304,9 @@ export class TopicsController { description: 'Topic detail with embedded post tree.', type: ForumsTopicDetailDto, }) - @ApiUnauthorizedResponse({ description: 'A supplied bearer token is invalid.' }) + @ApiUnauthorizedResponse({ + description: 'A supplied bearer token is invalid.', + }) @ApiForbiddenResponse({ description: 'Active forums ban or topic visibility denied.', }) @@ -484,7 +490,7 @@ export class TopicsController { } /** - * Removes a watch on a topic for a member. + * Unwatches a topic, persisting an opt-out for challenge-scoped topics. * * @param topicId Topic id from the route. * @param dto Optional target member body; required for scoped M2M callers. @@ -501,12 +507,13 @@ export class TopicsController { @ApiOperation({ summary: 'Unwatch a forum topic', description: - 'Command route requiring an authenticated member token or `remove:forums-topic-watch`. Human tokens unwatch for themselves and active member or trusted exact-IP bans return 403. Scoped M2M callers must supply a `memberId` that resolves in external Members and Identity data; active target-member bans return 403 before context loading, and policy evaluates inherited challenge and role visibility for that target member before removing the watch row.', + 'Command route requiring an authenticated member token or `remove:forums-topic-watch`. Human tokens unwatch for themselves and active member or trusted exact-IP bans return 403. Scoped M2M callers must supply a `memberId` that resolves in external Members and Identity data; active target-member bans return 403 before context loading, and policy evaluates inherited challenge and role visibility for that target member before persisting a challenge-topic opt-out or removing a general-topic watch row.', }) @ApiParam({ name: 'topicId', description: 'Topic id.' }) @ApiResponse({ status: 200, - description: 'Topic watch removed.', + description: + 'Topic unwatched; challenge-topic opt-outs override the forum preference.', type: TopicWatchStateCommandResponseDto, }) @ApiBadRequestResponse({ description: 'Invalid member target.' })