{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":389527884,"defaultBranch":"master","name":"kop","ownerLogin":"Demogorgon314","currentUserCanPush":false,"isFork":true,"isEmpty":false,"createdAt":"2021-07-26T06:15:34.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/22697570?v=4","public":true,"private":false,"isOrgOwned":false},"refInfo":{"name":"","listCacheKey":"v0:1701183484.0","currentOid":""},"activityList":{"items":[{"before":null,"after":"8c96e88675d6a72ca92f28223fdcd07f66b5feed","ref":"refs/heads/Demogorgon314/fix-branch-2.10-list-offset-long-overflow","pushedAt":"2023-11-28T14:58:04.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"Demogorgon314","name":"Kai Wang","path":"/Demogorgon314","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/22697570?s=80&v=4"},"commit":{"message":"Fix list offset convert long to int caused overflow","shortMessageHtmlLink":"Fix list offset convert long to int caused overflow"}},{"before":"88c169bf2294b0b38c183701bea76aca34a639b8","after":null,"ref":"refs/heads/Demogorgon314/Make-list-offset-request-support-read-committed","pushedAt":"2023-10-30T08:33:03.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"Demogorgon314","name":"Kai Wang","path":"/Demogorgon314","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/22697570?s=80&v=4"}},{"before":null,"after":"88c169bf2294b0b38c183701bea76aca34a639b8","ref":"refs/heads/Demogorgon314/Make-list-offset-request-support-read-committed","pushedAt":"2023-10-30T08:28:19.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"Demogorgon314","name":"Kai Wang","path":"/Demogorgon314","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/22697570?s=80&v=4"},"commit":{"message":"Make list offset request support read-committed isolation level","shortMessageHtmlLink":"Make list offset request support read-committed isolation level"}},{"before":"b44c3e6605994b8923b5c2d3f8a91002526ff542","after":null,"ref":"refs/heads/s4k/Use_Pooled_Netty_Direct_ByteBufs","pushedAt":"2023-10-17T08:12:43.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"Demogorgon314","name":"Kai Wang","path":"/Demogorgon314","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/22697570?s=80&v=4"}},{"before":null,"after":"f2fc7fa776b4c3ba48f64b0df035e82b16087da2","ref":"refs/heads/Demogorgon314/change-producer-state-snapshot-topic-name","pushedAt":"2023-08-15T07:50:05.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"Demogorgon314","name":"Kai Wang","path":"/Demogorgon314","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/22697570?s=80&v=4"},"commit":{"message":"Change transaction producer state snapshot topic name","shortMessageHtmlLink":"Change transaction producer state snapshot topic name"}},{"before":"8ad47f04df4ccb8ca142c2fcb8549a20cad4a396","after":"844adb426dbf5ba78ecfc934a90db7c20300d021","ref":"refs/heads/Demogorgon314/Enable-transaction-in-test-by-default","pushedAt":"2023-08-14T06:48:44.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"Demogorgon314","name":"Kai Wang","path":"/Demogorgon314","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/22697570?s=80&v=4"},"commit":{"message":"Fix topic lookup failed exceptionally with ServiceUnitNotReady (#1995)\n\n### Motivation\r\n\r\n`testMultiBrokerUnloadReload` is flaky with the Pulsar dependency\r\nupgraded to 3.1.0-SNAPSHOT. Here are the related logs:\r\n\r\n```\r\n02:37:33.275 [pulsar-ph-kafka-644-3:io.streamnative.pulsar.handlers.kop.KafkaTopicLookupService@105] ERROR io.streamnative.pulsar.handlers.kop.KafkaTopicLookupService - [io.streamnative.pulsar.handlers.kop.storage.PartitionLog@131e450c] Failed t\r\no getTopic persistent://public/default/kopMultiBrokerUnloadReload10-partition-3. exception:\r\njava.util.concurrent.CompletionException: org.apache.pulsar.broker.service.BrokerServiceException$ServiceUnitNotReadyException:\r\n```\r\n\r\nIt's because the exception passed from `BrokerService#getTopic` is\r\n`CompletionException`, not `ServiceUnitNotReadyException`, while KoP\r\ndoes not get the cause of a `CompletionException` in\r\n`handleGetTopicException`. And then an `UNKNOWN_SERVER_ERROR` is\r\nreturned to the client.\r\n\r\n```\r\n02:37:33.277 [pulsar-ph-kafka-644-3:io.streamnative.pulsar.handlers.kop.storage.ReplicaManager$PendingProduceCallback@121] DEBUG io.streamnative.pulsar.handlers.kop.storage.ReplicaManager - Complete handle appendRecords. {kopMultiBrokerUnloadReload10-3={error: UNKNOWN_SERVER_ERROR,offset: -1,logAppendTime: -1, logStartOffset: -1, recordErrors: [], errorMessage: null}}\r\n```\r\n\r\n### Modifications\r\n\r\nUnwrap the `CompletionException` in `handleGetTopicException`.","shortMessageHtmlLink":"Fix topic lookup failed exceptionally with ServiceUnitNotReady (strea…"}},{"before":null,"after":"8ad47f04df4ccb8ca142c2fcb8549a20cad4a396","ref":"refs/heads/Demogorgon314/Enable-transaction-in-test-by-default","pushedAt":"2023-08-14T06:46:03.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"Demogorgon314","name":"Kai Wang","path":"/Demogorgon314","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/22697570?s=80&v=4"},"commit":{"message":"Enable transaction by default in test","shortMessageHtmlLink":"Enable transaction by default in test"}},{"before":"5c5e0fcb1fc83c7292ecd542f7b268e1c48b7d89","after":"a09be4be1f9d8f7caca3aaf2654aca32cce82836","ref":"refs/heads/Demogorgon314/use-pulsar-format-when-write-marker-to-consumer-offset-topic","pushedAt":"2023-08-10T03:13:52.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"Demogorgon314","name":"Kai Wang","path":"/Demogorgon314","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/22697570?s=80&v=4"},"commit":{"message":"Make Non-partitioned system topic use pulsar format","shortMessageHtmlLink":"Make Non-partitioned system topic use pulsar format"}},{"before":"f96061b380bbee0bdb9129ca4ac4dc0286b5de52","after":"5c5e0fcb1fc83c7292ecd542f7b268e1c48b7d89","ref":"refs/heads/Demogorgon314/use-pulsar-format-when-write-marker-to-consumer-offset-topic","pushedAt":"2023-08-09T13:10:09.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"Demogorgon314","name":"Kai Wang","path":"/Demogorgon314","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/22697570?s=80&v=4"},"commit":{"message":"Fix test","shortMessageHtmlLink":"Fix test"}},{"before":null,"after":"f96061b380bbee0bdb9129ca4ac4dc0286b5de52","ref":"refs/heads/Demogorgon314/use-pulsar-format-when-write-marker-to-consumer-offset-topic","pushedAt":"2023-08-09T12:42:19.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"Demogorgon314","name":"Kai Wang","path":"/Demogorgon314","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/22697570?s=80&v=4"},"commit":{"message":"Use pulsar format when write marker to __consumer_offsets topic","shortMessageHtmlLink":"Use pulsar format when write marker to __consumer_offsets topic"}},{"before":null,"after":"e4de5a68723b0a9c75d726b68d5dbb2883d00b68","ref":"refs/heads/Demogorgon314/Contains-UUID-when-auto-topic-creation","pushedAt":"2023-08-08T09:53:33.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"Demogorgon314","name":"Kai Wang","path":"/Demogorgon314","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/22697570?s=80&v=4"},"commit":{"message":"Contains UUID when auto topic creation","shortMessageHtmlLink":"Contains UUID when auto topic creation"}},{"before":null,"after":"82b462338dfb183684b4f0bb73e0406846b97928","ref":"refs/heads/Demogorgon314/Support-base64-format-credentials-url","pushedAt":"2023-08-01T08:05:16.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"Demogorgon314","name":"Kai Wang","path":"/Demogorgon314","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/22697570?s=80&v=4"},"commit":{"message":"Support base64 format credentials url","shortMessageHtmlLink":"Support base64 format credentials url"}},{"before":"58f067537694e14bed9869d92d5651af5158f872","after":null,"ref":"refs/heads/s4k/Create_a_zero-dependencies_jar","pushedAt":"2023-07-31T05:54:54.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"Demogorgon314","name":"Kai Wang","path":"/Demogorgon314","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/22697570?s=80&v=4"}},{"before":"444b1dc236a27bbfba35b398ba91cd983796db66","after":"58f067537694e14bed9869d92d5651af5158f872","ref":"refs/heads/s4k/Create_a_zero-dependencies_jar","pushedAt":"2023-07-31T05:21:28.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"Demogorgon314","name":"Kai Wang","path":"/Demogorgon314","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/22697570?s=80&v=4"},"commit":{"message":"Move all oauth test to shared module","shortMessageHtmlLink":"Move all oauth test to shared module"}},{"before":"52de651ea62d87ecdf61b1366c6c851b5897ae8b","after":"444b1dc236a27bbfba35b398ba91cd983796db66","ref":"refs/heads/s4k/Create_a_zero-dependencies_jar","pushedAt":"2023-07-31T01:50:59.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"Demogorgon314","name":"Kai Wang","path":"/Demogorgon314","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/22697570?s=80&v=4"},"commit":{"message":"Add shaded test","shortMessageHtmlLink":"Add shaded test"}},{"before":"ca8367cc5be48b615c1c0a7b6d42c29b507e6d11","after":"9dbe38926a35b9affa83bdffb828e7ea71fb9e84","ref":"refs/heads/s4k/broker_to_broker_hostname_verification","pushedAt":"2023-07-28T08:40:40.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"Demogorgon314","name":"Kai Wang","path":"/Demogorgon314","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/22697570?s=80&v=4"},"commit":{"message":"Fix code style","shortMessageHtmlLink":"Fix code style"}},{"before":null,"after":"ca8367cc5be48b615c1c0a7b6d42c29b507e6d11","ref":"refs/heads/s4k/broker_to_broker_hostname_verification","pushedAt":"2023-07-28T08:22:05.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"Demogorgon314","name":"Kai Wang","path":"/Demogorgon314","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/22697570?s=80&v=4"},"commit":{"message":"[security] Proxy to broker and broker to broker hostname verification","shortMessageHtmlLink":"[security] Proxy to broker and broker to broker hostname verification"}},{"before":"b98c0abb4c3626279e935d41575b9e02f7b8efc9","after":"52de651ea62d87ecdf61b1366c6c851b5897ae8b","ref":"refs/heads/s4k/Create_a_zero-dependencies_jar","pushedAt":"2023-07-28T07:59:38.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"Demogorgon314","name":"Kai Wang","path":"/Demogorgon314","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/22697570?s=80&v=4"},"commit":{"message":"Remove unused change","shortMessageHtmlLink":"Remove unused change"}},{"before":"1abb2a7e91e67f6037059ca5109476d6a82fcfec","after":"b98c0abb4c3626279e935d41575b9e02f7b8efc9","ref":"refs/heads/s4k/Create_a_zero-dependencies_jar","pushedAt":"2023-07-28T07:10:57.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"Demogorgon314","name":"Kai Wang","path":"/Demogorgon314","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/22697570?s=80&v=4"},"commit":{"message":"Add new module","shortMessageHtmlLink":"Add new module"}},{"before":"adee42d30d4abe88473c8014dd3e0f831172c56c","after":"1abb2a7e91e67f6037059ca5109476d6a82fcfec","ref":"refs/heads/s4k/Create_a_zero-dependencies_jar","pushedAt":"2023-07-27T14:51:37.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"Demogorgon314","name":"Kai Wang","path":"/Demogorgon314","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/22697570?s=80&v=4"},"commit":{"message":"test","shortMessageHtmlLink":"test"}},{"before":"6b9b11a588e609ebf3968b67279a606a081403ef","after":"218a78786d6043529c72886dd7c5690701dbfc9b","ref":"refs/heads/Demogorgon314/Fix-disable-MultiTenantMetadata-with-state-manager-snapshot","pushedAt":"2023-07-27T11:42:49.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"Demogorgon314","name":"Kai Wang","path":"/Demogorgon314","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/22697570?s=80&v=4"},"commit":{"message":"Use config's metadata tenant when disable multi tenant metadata","shortMessageHtmlLink":"Use config's metadata tenant when disable multi tenant metadata"}},{"before":null,"after":"6b9b11a588e609ebf3968b67279a606a081403ef","ref":"refs/heads/Demogorgon314/Fix-disable-MultiTenantMetadata-with-state-manager-snapshot","pushedAt":"2023-07-27T11:41:59.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"Demogorgon314","name":"Kai Wang","path":"/Demogorgon314","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/22697570?s=80&v=4"},"commit":{"message":"Use config's metadata tenant when disable multi tenant metadata","shortMessageHtmlLink":"Use config's metadata tenant when disable multi tenant metadata"}},{"before":"55418415080dd15118cdfc648b69965d06b4624e","after":"adee42d30d4abe88473c8014dd3e0f831172c56c","ref":"refs/heads/s4k/Create_a_zero-dependencies_jar","pushedAt":"2023-07-27T03:05:16.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"Demogorgon314","name":"Kai Wang","path":"/Demogorgon314","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/22697570?s=80&v=4"},"commit":{"message":"Fix test","shortMessageHtmlLink":"Fix test"}},{"before":null,"after":"55418415080dd15118cdfc648b69965d06b4624e","ref":"refs/heads/s4k/Create_a_zero-dependencies_jar","pushedAt":"2023-07-26T10:52:51.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"Demogorgon314","name":"Kai Wang","path":"/Demogorgon314","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/22697570?s=80&v=4"},"commit":{"message":"[tests] Use WireMock for OAuth2 tenant tests","shortMessageHtmlLink":"[tests] Use WireMock for OAuth2 tenant tests"}},{"before":null,"after":"5427099ebaa6344878a01a506da350602d1783f4","ref":"refs/heads/Demogorgon314/add-docs-for-auth","pushedAt":"2023-07-17T10:20:22.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"Demogorgon314","name":"Kai Wang","path":"/Demogorgon314","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/22697570?s=80&v=4"},"commit":{"message":"Add docs","shortMessageHtmlLink":"Add docs"}},{"before":"8644059e1453d054664d19dc913130034c8631f5","after":"4badcdbf26102097161a4f0f2f31284e5aa7ace4","ref":"refs/heads/branch-2.10.4-cherry-pick-1926","pushedAt":"2023-07-06T00:53:47.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"Demogorgon314","name":"Kai Wang","path":"/Demogorgon314","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/22697570?s=80&v=4"},"commit":{"message":"Fix test","shortMessageHtmlLink":"Fix test"}},{"before":"f204a1206e10bb7a185f6f10db13d7a01cd7ea1d","after":"8644059e1453d054664d19dc913130034c8631f5","ref":"refs/heads/branch-2.10.4-cherry-pick-1926","pushedAt":"2023-07-05T13:53:08.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"Demogorgon314","name":"Kai Wang","path":"/Demogorgon314","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/22697570?s=80&v=4"},"commit":{"message":"[improve] Pass group ID to authorizer when using OAuth (#1926)\n\n### Motivation\nCurrently, the KoP only supports checking the topic permission when\ndoing the consume authorization, but Kafka support checking the topic\nand group ID permission.\n\nBefore introducing this change, let's understand why KoP can't check\ngroup ID permission.\n\nWhen Kafka does the consume authorization check, it will first check the\ngroup ID permission in `handleJoinGroupRequest` method, then it will\ncheck the topic permission in the `handleFetchRequest` method.\n\nHowever, Pulsar is using another way to check consume permission. See\nthe\n`org.apache.pulsar.broker.authorization.AuthorizationService#canConsumeAsync`\nmethod, it requires passing the topic name and subscription to check\nboth permissions in the same place, and the topic name is required\nparam.\n```\npublic CompletableFuture canConsumeAsync(TopicName topicName, String role, AuthenticationDataSource authenticationData,String subscription)\n```\n\nIf we follow the Kafka way to check the consumer permission, we can't\nget the topic name when joining a group since the join group request\ndoes not contain the topic name. So we have to authorize permission in\nthe fetch request.\n\nHowever, to authorization consume permission in the fetch request, we\ncan only get the topic name in this request. In this case, we can't\nauthorize the group ID.\n\n### Modifications\nSince we can't get group ID when handling fetch requests, we need to\nfind a way to pass through group ID when doing the authentication.\n\nIn OAuth, we have a `credentials_file.json` file that needs to be\nconfig, for example:\n```\n{\n\t\"client_id\": \"my-id\",\n\t\"client_secret\": \"my-secret\",\n\t\"tenant\": \"my-tenant\"\n}\n```\nHere we can add a new parameter into the config:\n```\n{\n\t\"client_id\": \"my-id\",\n\t\"client_secret\": \"my-secret\",\n\t\"tenant\": \"my-tenant\",\n \"group_id\": \"my-group-id\"\n}\n```\nThen we can add these parameters to `SaslExtensions`, and send it to the\nbroker.\n\n(cherry picked from commit e108e44621decef8221b44f37322c59f8b674be5)","shortMessageHtmlLink":"[improve] Pass group ID to authorizer when using OAuth (streamnative#…"}},{"before":null,"after":"f204a1206e10bb7a185f6f10db13d7a01cd7ea1d","ref":"refs/heads/branch-2.10.4-cherry-pick-1926","pushedAt":"2023-07-05T13:43:19.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"Demogorgon314","name":"Kai Wang","path":"/Demogorgon314","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/22697570?s=80&v=4"},"commit":{"message":"[improve] Pass group ID to authorizer when using OAuth (#1926)\n\n### Motivation\nCurrently, the KoP only supports checking the topic permission when\ndoing the consume authorization, but Kafka support checking the topic\nand group ID permission.\n\nBefore introducing this change, let's understand why KoP can't check\ngroup ID permission.\n\nWhen Kafka does the consume authorization check, it will first check the\ngroup ID permission in `handleJoinGroupRequest` method, then it will\ncheck the topic permission in the `handleFetchRequest` method.\n\nHowever, Pulsar is using another way to check consume permission. See\nthe\n`org.apache.pulsar.broker.authorization.AuthorizationService#canConsumeAsync`\nmethod, it requires passing the topic name and subscription to check\nboth permissions in the same place, and the topic name is required\nparam.\n```\npublic CompletableFuture canConsumeAsync(TopicName topicName, String role, AuthenticationDataSource authenticationData,String subscription)\n```\n\nIf we follow the Kafka way to check the consumer permission, we can't\nget the topic name when joining a group since the join group request\ndoes not contain the topic name. So we have to authorize permission in\nthe fetch request.\n\nHowever, to authorization consume permission in the fetch request, we\ncan only get the topic name in this request. In this case, we can't\nauthorize the group ID.\n\n### Modifications\nSince we can't get group ID when handling fetch requests, we need to\nfind a way to pass through group ID when doing the authentication.\n\nIn OAuth, we have a `credentials_file.json` file that needs to be\nconfig, for example:\n```\n{\n\t\"client_id\": \"my-id\",\n\t\"client_secret\": \"my-secret\",\n\t\"tenant\": \"my-tenant\"\n}\n```\nHere we can add a new parameter into the config:\n```\n{\n\t\"client_id\": \"my-id\",\n\t\"client_secret\": \"my-secret\",\n\t\"tenant\": \"my-tenant\",\n \"group_id\": \"my-group-id\"\n}\n```\nThen we can add these parameters to `SaslExtensions`, and send it to the\nbroker.\n\n(cherry picked from commit e108e44621decef8221b44f37322c59f8b674be5)","shortMessageHtmlLink":"[improve] Pass group ID to authorizer when using OAuth (streamnative#…"}},{"before":"17312a75fb38d38130e0ce3005cbff1a31fe8f10","after":"054ab5c316916d8b343c90ecbeb1871ad280b65f","ref":"refs/heads/Demogorgon314/upgrade-kafka-clients-version-to-2.1","pushedAt":"2023-07-05T09:50:05.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"Demogorgon314","name":"Kai Wang","path":"/Demogorgon314","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/22697570?s=80&v=4"},"commit":{"message":"Fix test","shortMessageHtmlLink":"Fix test"}},{"before":"a0566e899231b310c8bcd89c1c49964368598d83","after":null,"ref":"refs/heads/Demogorgon314/pass-groupid-when-use-oauth","pushedAt":"2023-07-05T09:39:15.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"Demogorgon314","name":"Kai Wang","path":"/Demogorgon314","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/22697570?s=80&v=4"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"Y3Vyc29yOnYyOpK7MjAyMy0xMS0yOFQxNDo1ODowNC4wMDAwMDBazwAAAAO57r7_","startCursor":"Y3Vyc29yOnYyOpK7MjAyMy0xMS0yOFQxNDo1ODowNC4wMDAwMDBazwAAAAO57r7_","endCursor":"Y3Vyc29yOnYyOpK7MjAyMy0wNy0wNVQwOTozOToxNS4wMDAwMDBazwAAAANPEcPp"}},"title":"Activity · Demogorgon314/kop"}