Skip to content
This repository has been archived by the owner on Sep 18, 2023. It is now read-only.

poe.com banning accounts using this script #54

Closed
Jxells opened this issue Apr 21, 2023 · 63 comments
Closed

poe.com banning accounts using this script #54

Jxells opened this issue Apr 21, 2023 · 63 comments
Labels
bug Something isn't working help wanted Extra attention is needed

Comments

@Jxells
Copy link

Jxells commented Apr 21, 2023

As of today, it looks like poe is starting to be banned.

@TheLime1
Copy link
Contributor

still works for me
Code_MM65TNFfTx

@Jxells
Copy link
Author

Jxells commented Apr 21, 2023

23/5000
After more than one session, an error was reported and I could not log in through the browser
image

@TheLime1
Copy link
Contributor

@Jxells tried regen a new token ?
and are you using a custom bot ?

@Jxells
Copy link
Author

Jxells commented Apr 21, 2023

There is no way to generate a new token because none of the official websites can be logged in. No custom bots are used

@TheLime1
Copy link
Contributor

TheLime1 commented Apr 21, 2023

it work for me , i think you got ip blacklisted ??

image

@Jxells
Copy link
Author

Jxells commented Apr 21, 2023

image

@doevent
Copy link

doevent commented Apr 21, 2023

same

@ading2210
Copy link
Owner

Does it work fine if you use a different IP through a VPN?

@Jxells
Copy link
Author

Jxells commented Apr 21, 2023

Does it work fine if you use a different IP through a VPN?

I have tried to switch to other ip or vpn, but the problem has not been solved

@ball2004244
Copy link

I have the same problems

@de-joit
Copy link

de-joit commented Apr 21, 2023

Same problem, cleaned cookies in browser, used vpn, incognito mode. Nothing. Guess got banned

@ading2210 ading2210 added bug Something isn't working help wanted Extra attention is needed labels Apr 21, 2023
@ading2210
Copy link
Owner

Same problem, cleaned cookies in browser, used vpn, incognito mode. Nothing. Guess got banned
@de-joit

Have you tried using a different browser and OS? Perhaps they're using browser fingerprinting in order to try and stop the creation of extra accounts?

@doevent
Copy link

doevent commented Apr 21, 2023

Have you tried using a different browser and OS? Perhaps they're using browser fingerprinting in order to try and stop the creation of extra accounts?

A new account is created, but it gets banned after a few hours.

@ading2210 ading2210 changed the title Something went wrong. Please wait a moment and try again. poe.com banning accounts using this script Apr 21, 2023
@Jxells
Copy link
Author

Jxells commented Apr 21, 2023

您是否尝试过使用不同的浏览器和操作系统?也许他们正在使用浏览器指纹识别来尝试阻止额外帐户的创建?

创建了一个新帐户,但几个小时后就被禁止了。
Me too.

@ading2210
Copy link
Owner

Version 0.3.1 adds the ability to set more custom headers, which should reduce the chances of the library being detected.

@kwekewk
Copy link

kwekewk commented Apr 22, 2023

it work for me , i think you got ip blacklisted ??

image

Sorry for oot, can you delete that bot from ur list?

@Jxells
Copy link
Author

Jxells commented Apr 22, 2023

Version 0.3.1 adds the ability to set more custom headers, which should reduce the chances of the library being detected.

The account will still be banned

@TheLime1
Copy link
Contributor

@kwekewk nope , even after deleting it stay there , deleted

@aloasut
Copy link

aloasut commented Apr 23, 2023

今天升级了一下使用,30分钟以后号给ban了。

@xtekky
Copy link
Contributor

xtekky commented Apr 23, 2023

@ading2210 they are logging something, have used tls / proxy, full params and sig, throttling and they seem to detect somehow

@reinum
Copy link

reinum commented Apr 23, 2023

same problem here, account gets banned within maybe 2 minutes.. cant even create a new account now. tried a different os, proxy, different browser, and a lot more... idk if its related to this issue though lol

@DanielShemesh
Copy link

There might also be some kind of rate limit that helps their detection

@cande1gut
Copy link

I think is a combination of both, rate and browser. I just hit the same problem with 2 different accounts (one through VPN tho).

@dm-vev
Copy link

dm-vev commented Apr 24, 2023

if you send a lot of requests to bots, you can get banned. I personally do not have very many requests per minute and the account worked until I had to process more than 20 requests per minute. this led to an instant ban on my account

@doevent
Copy link

doevent commented Apr 25, 2023

Set limits:
Message counter per minute
Message counter per hour

@shayneoneill
Copy link

Yo Poe people, if your reading this, give us an official API and people wont have to sneak through the side window!

Theres money to be made in this.

@abhiprojectz
Copy link

@swarfte

it look like the Poe have some method to detect which account used this library

No, they just detects whether the request is made from a browser or not ? They uses a cloudflare based checklist cookie/token to detect, at few requests.

That's why this gets blocked , even the FreeGPT4 project by **@xtekky ** also not working.

Just simply automate it using SingularGPT , the easiest and safest mode.

@hansfzlorenzana
Copy link

I tried adding delay per request but I still got banned. Any other fix?

@abhiprojectz
Copy link

@hansfzlorenzana I mentioned , Automate browser and everything will work fine. You may write your custom automation scripts but that will consume time and often errors.

Instead SingularGPT automates quickly.

@acheong08
Copy link
Contributor

Regarding the bans, have you guys tried tls spoofing?

@acheong08
Copy link
Contributor

TLS fingerprints are a reliable way to find bots based on whether they use a browser or from code. This happened with ChatGPT a while back

@ading2210
Copy link
Owner

Regarding the bans, have you guys tried tls spoofing?
@acheong08

I actually haven't tried that, altho @xtekky has and apparently it didn't work.

@ading2210
Copy link
Owner

An alternative would be to rewrite this to use Selenium + a web browser, but that introduces a LOT of overhead which I'd prefer not tho have.

@ading2210 ading2210 pinned this issue May 27, 2023
@abhiprojectz
Copy link

@ading2210 Poe basically can detect request from selenium browser session , and you will get banned.

That's why i suggested to automate the browser itself, above there,

Automate browser and everything will work fine. You may write your custom automation scripts but that will consume time and often errors.
Instead SingularGPT automates quickly.

You could do this easily with SingularGPT - For anyone curious its a GPT based project to automate device via GPT. with just a text query as :

Prompt: Send query as "Hello chatgpt" and wait for the response, then check if there is some message below the queried text, Your task is to get the text element under it, for that double right click mouse , then select text Inspect element. Press keys ctrl + c , then close press keys Ctrl + Shift + I.

Just put it under a function with a command, Load preset "chrome/GPT".

@acheong08
Copy link
Contributor

@abhiprojectz That is way slower and not exact the point of this library.

If it can indeed detect selenium, an easier way is to write a browser extension that plugs into an actual browser. (e.g. https://github.com/acheong08/ChatGPT-API-agent for ChatGPT)

But even that is probably unnecessary. Check out https://github.com/ultrafunkamsterdam/undetected-chromedriver

@acheong08
Copy link
Contributor

Regarding @xtekky's attempt at tls spoofing, it probably failed because

  1. TLS fingerprints of >= Chrome/Firefox 110 can be detected from tls spoofing libraries. Lower versions are probably better
  2. There is no way to spoof tls for websockets in Python. I doubt he wrote a custom library for that.

If even that doesn't fix detection, perhaps it's behavioral. I'm testing if I get banned right now by running it in a loop.

@acheong08
Copy link
Contributor

sdid looks somewhat interesting

@acheong08
Copy link
Contributor

It's in local storage and I have no idea what assigned it

@acheong08
Copy link
Contributor

It stands for global_singular_id

@acheong08
Copy link
Contributor

It seems to be persistent even if I delete it from local/session storage

@acheong08
Copy link
Contributor

"use strict";
(self.webpackChunk_N_E = self.webpackChunk_N_E || []).push([[271], {
    88049: function(e, a, n) {
        n.r(a);
        let t = {
            argumentDefinitions: [],
            kind: "Fragment",
            metadata: null,
            name: "botHelpers_useDeletion_bot",
            selections: [{
                alias: null,
                args: null,
                kind: "ScalarField",
                name: "deletionState",
                storageKey: null
            }],
            type: "Bot",
            abstractKey: null
        };
        t.hash = "9055843994f978f06f4287ddd47770eb",
        a.default = t
    },
    96207: function(e, a, n) {
        n.r(a);
        let t = {
            argumentDefinitions: [],
            kind: "Fragment",
            metadata: null,
            name: "botHelpers_useViewerCanAccessPrivateBot",
            selections: [{
                alias: null,
                args: null,
                kind: "ScalarField",
                name: "isPrivateBot",
                storageKey: null
            }, {
                alias: null,
                args: null,
                kind: "ScalarField",
                name: "viewerIsCreator",
                storageKey: null
            }, {
                alias: null,
                args: null,
                kind: "ScalarField",
                name: "isSystemBot",
                storageKey: null
            }],
            type: "Bot",
            abstractKey: null
        };
        t.hash = "8f7a2f4f0e5fc28e63f634c8488c3372",
        a.default = t
    },
    3594: function(e, a, n) {
        var t, l, i, s, r, u, o, d, c;
        n.r(a);
        let g = (t = {
            defaultValue: null,
            kind: "LocalArgument",
            name: "chatId"
        },
        l = {
            defaultValue: null,
            kind: "LocalArgument",
            name: "connections"
        },
        i = [{
            kind: "Variable",
            name: "chatId",
            variableName: "chatId"
        }],
        o = [s = {
            alias: null,
            args: null,
            kind: "ScalarField",
            name: "cursor",
            storageKey: null
        }, u = {
            alias: null,
            args: null,
            concreteType: "Message",
            kind: "LinkedField",
            name: "node",
            plural: !1,
            selections: [r = {
                alias: null,
                args: null,
                kind: "ScalarField",
                name: "id",
                storageKey: null
            }, {
                alias: null,
                args: null,
                kind: "ScalarField",
                name: "messageId",
                storageKey: null
            }, {
                alias: null,
                args: null,
                kind: "ScalarField",
                name: "text",
                storageKey: null
            }, {
                alias: null,
                args: null,
                kind: "ScalarField",
                name: "author",
                storageKey: null
            }, {
                alias: null,
                args: null,
                kind: "ScalarField",
                name: "suggestedReplies",
                storageKey: null
            }, {
                alias: null,
                args: null,
                kind: "ScalarField",
                name: "creationTime",
                storageKey: null
            }, {
                alias: null,
                args: null,
                kind: "ScalarField",
                name: "state",
                storageKey: null
            }],
            storageKey: null
        }],
        c = [{
            kind: "Variable",
            name: "connections",
            variableName: "connections"
        }],
        {
            fragment: {
                argumentDefinitions: [t, l],
                kind: "Fragment",
                metadata: null,
                name: "chatHelpers_addMessageBreakEdgeMutation_Mutation",
                selections: [{
                    alias: null,
                    args: i,
                    concreteType: "MessageBreakEdgeCreate",
                    kind: "LinkedField",
                    name: "messageBreakEdgeCreate",
                    plural: !1,
                    selections: [{
                        alias: null,
                        args: null,
                        concreteType: "MessageEdge",
                        kind: "LinkedField",
                        name: "message",
                        plural: !1,
                        selections: o,
                        storageKey: null
                    }, {
                        alias: null,
                        args: null,
                        concreteType: "MessageEdge",
                        kind: "LinkedField",
                        name: "introductionMessage",
                        plural: !1,
                        selections: o,
                        storageKey: null
                    }],
                    storageKey: null
                }],
                type: "MutationRoot",
                abstractKey: null
            },
            kind: "Request",
            operation: {
                argumentDefinitions: [l, t],
                kind: "Operation",
                name: "chatHelpers_addMessageBreakEdgeMutation_Mutation",
                selections: [{
                    alias: null,
                    args: i,
                    concreteType: "MessageBreakEdgeCreate",
                    kind: "LinkedField",
                    name: "messageBreakEdgeCreate",
                    plural: !1,
                    selections: [{
                        alias: null,
                        args: null,
                        concreteType: "MessageEdge",
                        kind: "LinkedField",
                        name: "message",
                        plural: !1,
                        selections: d = [s, u, r],
                        storageKey: null
                    }, {
                        alias: null,
                        args: null,
                        filters: null,
                        handle: "appendEdge",
                        key: "",
                        kind: "LinkedHandle",
                        name: "message",
                        handleArgs: c
                    }, {
                        alias: null,
                        args: null,
                        concreteType: "MessageEdge",
                        kind: "LinkedField",
                        name: "introductionMessage",
                        plural: !1,
                        selections: d,
                        storageKey: null
                    }, {
                        alias: null,
                        args: null,
                        filters: null,
                        handle: "appendEdge",
                        key: "",
                        kind: "LinkedHandle",
                        name: "introductionMessage",
                        handleArgs: c
                    }],
                    storageKey: null
                }]
            },
            params: {
                cacheID: "91fce80345480805e7a6837527ed0fd4",
                id: null,
                metadata: {},
                name: "chatHelpers_addMessageBreakEdgeMutation_Mutation",
                operationKind: "mutation",
                text: "mutation chatHelpers_addMessageBreakEdgeMutation_Mutation(\n  $chatId: BigInt!\n) {\n  messageBreakEdgeCreate(chatId: $chatId) {\n    message {\n      cursor\n      node {\n        id\n        messageId\n        text\n        author\n        suggestedReplies\n        creationTime\n        state\n      }\n      id\n    }\n    introductionMessage {\n      cursor\n      node {\n        id\n        messageId\n        text\n        author\n        suggestedReplies\n        creationTime\n        state\n      }\n      id\n    }\n  }\n}\n"
            }
        });
        g.hash = "27417cb8b58d08f9df0071896e4509d9",
        a.default = g
    },
    91337: function(e, a, n) {
        n.r(a);
        let t = {
            kind: "InlineDataFragment",
            name: "chatHelpers_isBotMessage"
        };
        t.hash = "64b43a660c617c778ba7c985fb940384",
        a.default = t
    },
    26973: function(e, a, n) {
        n.r(a);
        let t = {
            kind: "InlineDataFragment",
            name: "chatHelpers_isChatBreak"
        };
        t.hash = "1a0d732e0f7f02a776909413142e4052",
        a.default = t
    },
    14008: function(e, a, n) {
        n.r(a);
        let t = {
            kind: "InlineDataFragment",
            name: "chatHelpers_isHumanMessage"
        };
        t.hash = "8e00e818ac5576af67c698210e1bce47",
        a.default = t
    },
    4915: function(e, a, n) {
        var t, l, i, s, r, u, o, d, c, g, m, k, h, f, p, y, b, _, F, C, S, K;
        n.r(a);
        let v = (F = {
            alias: null,
            args: null,
            kind: "ScalarField",
            name: "clientNonce",
            storageKey: null
        },
        C = {
            alias: null,
            args: null,
            kind: "ScalarField",
            name: "contentType",
            storageKey: null
        },
        S = {
            alias: null,
            args: null,
            kind: "ScalarField",
            name: "shouldShowDisclaimer",
            storageKey: null
        },
        K = {
            alias: null,
            args: null,
            kind: "ScalarField",
            name: "status",
            storageKey: null
        },
        {
            fragment: {
                argumentDefinitions: [t = {
                    defaultValue: null,
                    kind: "LocalArgument",
                    name: "bot"
                }, l = {
                    defaultValue: null,
                    kind: "LocalArgument",
                    name: "chatId"
                }, i = {
                    defaultValue: null,
                    kind: "LocalArgument",
                    name: "clientNonce"
                }, s = {
                    defaultValue: null,
                    kind: "LocalArgument",
                    name: "query"
                }, r = {
                    defaultValue: null,
                    kind: "LocalArgument",
                    name: "sdid"
                }, u = {
                    defaultValue: null,
                    kind: "LocalArgument",
                    name: "source"
                }, o = {
                    defaultValue: null,
                    kind: "LocalArgument",
                    name: "withChatBreak"
                }],
                kind: "Fragment",
                metadata: null,
                name: "chatHelpers_sendMessageMutation_Mutation",
                selections: [{
                    alias: null,
                    args: d = [{
                        kind: "Variable",
                        name: "bot",
                        variableName: "bot"
                    }, {
                        kind: "Variable",
                        name: "chatId",
                        variableName: "chatId"
                    }, {
                        kind: "Variable",
                        name: "clientNonce",
                        variableName: "clientNonce"
                    }, {
                        kind: "Variable",
                        name: "query",
                        variableName: "query"
                    }, {
                        kind: "Variable",
                        name: "sdid",
                        variableName: "sdid"
                    }, {
                        kind: "Variable",
                        name: "source",
                        variableName: "source"
                    }, {
                        kind: "Variable",
                        name: "withChatBreak",
                        variableName: "withChatBreak"
                    }],
                    concreteType: "MessageEdgeCreate",
                    kind: "LinkedField",
                    name: "messageEdgeCreate",
                    plural: !1,
                    selections: [{
                        alias: null,
                        args: null,
                        concreteType: "MessageEdge",
                        kind: "LinkedField",
                        name: "chatBreak",
                        plural: !1,
                        selections: [c = {
                            alias: null,
                            args: null,
                            kind: "ScalarField",
                            name: "cursor",
                            storageKey: null
                        }, _ = {
                            alias: null,
                            args: null,
                            concreteType: "Message",
                            kind: "LinkedField",
                            name: "node",
                            plural: !1,
                            selections: [g = {
                                alias: null,
                                args: null,
                                kind: "ScalarField",
                                name: "id",
                                storageKey: null
                            }, m = {
                                alias: null,
                                args: null,
                                kind: "ScalarField",
                                name: "messageId",
                                storageKey: null
                            }, k = {
                                alias: null,
                                args: null,
                                kind: "ScalarField",
                                name: "text",
                                storageKey: null
                            }, h = {
                                alias: null,
                                args: null,
                                kind: "ScalarField",
                                name: "author",
                                storageKey: null
                            }, f = {
                                alias: null,
                                args: null,
                                kind: "ScalarField",
                                name: "suggestedReplies",
                                storageKey: null
                            }, p = {
                                alias: null,
                                args: null,
                                kind: "ScalarField",
                                name: "creationTime",
                                storageKey: null
                            }, y = {
                                alias: null,
                                args: null,
                                kind: "ScalarField",
                                name: "state",
                                storageKey: null
                            }, b = {
                                kind: "ClientExtension",
                                selections: [{
                                    alias: null,
                                    args: null,
                                    kind: "ScalarField",
                                    name: "isOptimistic",
                                    storageKey: null
                                }]
                            }],
                            storageKey: null
                        }],
                        storageKey: null
                    }, {
                        alias: null,
                        args: null,
                        concreteType: "MessageEdge",
                        kind: "LinkedField",
                        name: "message",
                        plural: !1,
                        selections: [c, {
                            alias: null,
                            args: null,
                            concreteType: "Message",
                            kind: "LinkedField",
                            name: "node",
                            plural: !1,
                            selections: [g, m, k, h, f, p, y, F, C, {
                                alias: null,
                                args: null,
                                concreteType: "Chat",
                                kind: "LinkedField",
                                name: "chat",
                                plural: !1,
                                selections: [S],
                                storageKey: null
                            }, b],
                            storageKey: null
                        }],
                        storageKey: null
                    }, K],
                    storageKey: null
                }],
                type: "MutationRoot",
                abstractKey: null
            },
            kind: "Request",
            operation: {
                argumentDefinitions: [l, t, s, u, o, i, r],
                kind: "Operation",
                name: "chatHelpers_sendMessageMutation_Mutation",
                selections: [{
                    alias: null,
                    args: d,
                    concreteType: "MessageEdgeCreate",
                    kind: "LinkedField",
                    name: "messageEdgeCreate",
                    plural: !1,
                    selections: [{
                        alias: null,
                        args: null,
                        concreteType: "MessageEdge",
                        kind: "LinkedField",
                        name: "chatBreak",
                        plural: !1,
                        selections: [c, _, g],
                        storageKey: null
                    }, {
                        alias: null,
                        args: null,
                        concreteType: "MessageEdge",
                        kind: "LinkedField",
                        name: "message",
                        plural: !1,
                        selections: [c, {
                            alias: null,
                            args: null,
                            concreteType: "Message",
                            kind: "LinkedField",
                            name: "node",
                            plural: !1,
                            selections: [g, m, k, h, f, p, y, F, C, {
                                alias: null,
                                args: null,
                                concreteType: "Chat",
                                kind: "LinkedField",
                                name: "chat",
                                plural: !1,
                                selections: [S, g],
                                storageKey: null
                            }, b],
                            storageKey: null
                        }, g],
                        storageKey: null
                    }, K],
                    storageKey: null
                }]
            },
            params: {
                cacheID: "409b9ed8f01ff008982a9ab9b5b1bf6d",
                id: null,
                metadata: {},
                name: "chatHelpers_sendMessageMutation_Mutation",
                operationKind: "mutation",
                text: "mutation chatHelpers_sendMessageMutation_Mutation(\n  $chatId: BigInt!\n  $bot: String!\n  $query: String!\n  $source: MessageSource\n  $withChatBreak: Boolean!\n  $clientNonce: String\n  $sdid: String\n) {\n  messageEdgeCreate(chatId: $chatId, bot: $bot, query: $query, source: $source, withChatBreak: $withChatBreak, clientNonce: $clientNonce, sdid: $sdid) {\n    chatBreak {\n      cursor\n      node {\n        id\n        messageId\n        text\n        author\n        suggestedReplies\n        creationTime\n        state\n      }\n      id\n    }\n    message {\n      cursor\n      node {\n        id\n        messageId\n        text\n        author\n        suggestedReplies\n        creationTime\n        state\n        clientNonce\n        contentType\n        chat {\n          shouldShowDisclaimer\n          id\n        }\n      }\n      id\n    }\n    status\n  }\n}\n"
            }
        });
        v.hash = "86b50a0e7f4bbf10e9a883f594ea97de",
        a.default = v
    },
    69666: function(e, a, n) {
        n.r(a);
        let t = {
            argumentDefinitions: [],
            kind: "Fragment",
            metadata: null,
            name: "chatHelpers_useSendChatBreak_chat",
            selections: [{
                alias: null,
                args: null,
                kind: "ScalarField",
                name: "id",
                storageKey: null
            }, {
                alias: null,
                args: null,
                kind: "ScalarField",
                name: "chatId",
                storageKey: null
            }, {
                alias: null,
                args: null,
                concreteType: "Bot",
                kind: "LinkedField",
                name: "defaultBotObject",
                plural: !1,
                selections: [{
                    alias: null,
                    args: null,
                    kind: "ScalarField",
                    name: "nickname",
                    storageKey: null
                }, {
                    alias: null,
                    args: null,
                    kind: "ScalarField",
                    name: "introduction",
                    storageKey: null
                }, {
                    alias: null,
                    args: null,
                    kind: "ScalarField",
                    name: "model",
                    storageKey: null
                }],
                storageKey: null
            }, {
                alias: null,
                args: null,
                kind: "ScalarField",
                name: "shouldShowDisclaimer",
                storageKey: null
            }],
            type: "Chat",
            abstractKey: null
        };
        t.hash = "ff3a629879b9b9a66db0c4525cd8790f",
        a.default = t
    },
    2567: function(e, a, n) {
        var t;
        n.r(a);
        let l = {
            argumentDefinitions: [],
            kind: "Fragment",
            metadata: null,
            name: "chatHelpers_useSendMessage_chat",
            selections: [t = {
                alias: null,
                args: null,
                kind: "ScalarField",
                name: "id",
                storageKey: null
            }, {
                alias: null,
                args: null,
                kind: "ScalarField",
                name: "chatId",
                storageKey: null
            }, {
                alias: null,
                args: null,
                concreteType: "Bot",
                kind: "LinkedField",
                name: "defaultBotObject",
                plural: !1,
                selections: [t, {
                    alias: null,
                    args: null,
                    kind: "ScalarField",
                    name: "nickname",
                    storageKey: null
                }],
                storageKey: null
            }, {
                alias: null,
                args: null,
                kind: "ScalarField",
                name: "shouldShowDisclaimer",
                storageKey: null
            }],
            type: "Chat",
            abstractKey: null
        };
        l.hash = "5a7484bfa4ce31b0f149e270d2f16b81",
        a.default = l
    },
    47629: function(e, a, n) {
        n.r(a);
        let t = {
            argumentDefinitions: [],
            kind: "Fragment",
            metadata: null,
            name: "chatHelpers_useTimeoutLevel",
            selections: [{
                alias: null,
                args: null,
                kind: "ScalarField",
                name: "id",
                storageKey: null
            }, {
                alias: null,
                args: null,
                kind: "ScalarField",
                name: "state",
                storageKey: null
            }, {
                alias: null,
                args: null,
                kind: "ScalarField",
                name: "text",
                storageKey: null
            }, {
                alias: null,
                args: null,
                kind: "ScalarField",
                name: "messageId",
                storageKey: null
            }, {
                alias: null,
                args: null,
                kind: "ScalarField",
                name: "author",
                storageKey: null
            }, {
                kind: "ClientExtension",
                selections: [{
                    alias: null,
                    args: null,
                    kind: "ScalarField",
                    name: "isOptimistic",
                    storageKey: null
                }, {
                    alias: null,
                    args: null,
                    kind: "ScalarField",
                    name: "timeoutLevel",
                    storageKey: null
                }]
            }],
            type: "Message",
            abstractKey: null
        };
        t.hash = "81bf0e2e8cac1eedb8a2fbe0ea6a7c89",
        a.default = t
    },
    68825: function(e, a, n) {
        n.r(a);
        let t = {
            argumentDefinitions: [],
            kind: "Fragment",
            metadata: null,
            name: "chatHelpers_useTimeoutLevel_chat",
            selections: [{
                alias: null,
                args: null,
                kind: "ScalarField",
                name: "chatId",
                storageKey: null
            }, {
                alias: null,
                args: null,
                concreteType: "Bot",
                kind: "LinkedField",
                name: "defaultBotObject",
                plural: !1,
                selections: [{
                    alias: null,
                    args: null,
                    kind: "ScalarField",
                    name: "messageTimeoutSecs",
                    storageKey: null
                }, {
                    alias: null,
                    args: null,
                    kind: "ScalarField",
                    name: "nickname",
                    storageKey: null
                }],
                storageKey: null
            }],
            type: "Chat",
            abstractKey: null
        };
        t.hash = "b098df0dc4693484f29956c746e9f435",
        a.default = t
    },
    83042: function(e, a, n) {
        n.r(a);
        let t = {
            argumentDefinitions: [],
            kind: "Fragment",
            metadata: null,
            name: "chatHelpers_useUpdateStaleChat_chat",
            selections: [{
                alias: null,
                args: null,
                kind: "ScalarField",
                name: "chatId",
                storageKey: null
            }, {
                alias: null,
                args: null,
                concreteType: "Bot",
                kind: "LinkedField",
                name: "defaultBotObject",
                plural: !1,
                selections: [{
                    alias: null,
                    args: null,
                    kind: "ScalarField",
                    name: "contextClearWindowSecs",
                    storageKey: null
                }],
                storageKey: null
            }, {
                args: null,
                kind: "FragmentSpread",
                name: "chatHelpers_useSendChatBreak_chat"
            }],
            type: "Chat",
            abstractKey: null
        };
        t.hash = "902bf2d7792700d2f7049f6c547e9f11",
        a.default = t
    },
    1535: function(e, a, n) {
        n.r(a);
        let t = {
            argumentDefinitions: [],
            kind: "Fragment",
            metadata: null,
            name: "chatHelpers_useUpdateStaleChat_message",
            selections: [{
                alias: null,
                args: null,
                kind: "ScalarField",
                name: "creationTime",
                storageKey: null
            }, {
                kind: "InlineDataFragmentSpread",
                name: "chatHelpers_isChatBreak",
                selections: [{
                    alias: null,
                    args: null,
                    kind: "ScalarField",
                    name: "author",
                    storageKey: null
                }],
                args: null,
                argumentDefinitions: []
            }],
            type: "Message",
            abstractKey: null
        };
        t.hash = "8a3a2e4211abea996a58197c65c98fb2",
        a.default = t
    },
    76604: function(e, a, n) {
        function t(e) {
            let {src: a} = e;
            return a
        }
        n.r(a),
        n.d(a, {
            default: function() {
                return t
            }
        })
    },
    22747: function(e, a, n) {
        n.d(a, {
            As: function() {
                return i
            },
            Fo: function() {
                return r
            },
            iZ: function() {
                return o
            },
            nn: function() {
                return u
            },
            vu: function() {
                return s
            }
        });
        var t = n(22578);
        n(44311);
        var l = n(84890);
        let i = (e,a)=>{
            let n = e.getRoot().getLinkedRecord("viewer");
            if (!n)
                return;
            let t = n.getLinkedRecords("availableBots");
            if (!t)
                return;
            let l = t.findIndex(e=>e.getDataID() === a);
            if (-1 === l || l < 6)
                return;
            let i = [...t.slice(0, 5), t[l], ...t.slice(5, l), ...t.slice(l + 1)];
            n.setLinkedRecords(i, "availableBots")
        }
          , s = (e,a)=>{
            let n = e.getRoot().getLinkedRecord("viewer");
            if (!n)
                return;
            let t = n.getLinkedRecords("availableBots");
            if (!t)
                return;
            let l = t.findIndex(e=>e.getDataID() === a);
            if (-1 === l || l < 5)
                return;
            let i = [...t.slice(0, l), ...t.slice(l + 1), t[l]];
            n.setLinkedRecords(i, "availableBots")
        }
          , r = (e,a)=>{
            let n = e.get(a);
            if (!n)
                return;
            let t = e.getRoot().getLinkedRecord("viewer");
            if (!t)
                return;
            let l = t.getLinkedRecords("availableBots");
            if (!l)
                return;
            let s = l.findIndex(e=>e.getDataID() === a);
            if (-1 !== s)
                return i(e, a);
            let r = [...l.slice(0, 5), n, ...l.slice(5)];
            t.setLinkedRecords(r, "availableBots")
        }
          , u = e=>{
            let a = (0,
            t.useFragment)(n(96207), e)
              , {isPrivateBot: l, viewerIsCreator: i, isSystemBot: s} = a;
            return !l || i || s
        }
          , o = e=>{
            let {deletionState: a} = (0,
            t.useFragment)(n(88049), e);
            return {
                isDeleted: a !== l.Z.not_deleted,
                isForceDeleted: a !== l.Z.not_deleted && a !== l.Z.user_deleted,
                isHardDeleted: a === l.Z.hard_deleted,
                deletionState: a
            }
        }
    },
    21496: function(e, a, n) {
        n.d(a, {
            Ue: function() {
                return S
            },
            cq: function() {
                return K
            },
            Tt: function() {
                return s
            },
            OE: function() {
                return M
            },
            hb: function() {
                return I
            },
            Q1: function() {
                return w
            },
            WC: function() {
                return x
            },
            $3: function() {
                return D
            },
            i4: function() {
                return B
            },
            Dx: function() {
                return L
            }
        });
        var t, l, i, s, r = n(41143), u = n.n(r), o = n(67294), d = n(22578), c = n(7192), g = n(19695), m = n(22556);
        let k = e=>{
            let a = (0,
            o.useRef)(e);
            return (0,
            o.useEffect)(()=>{
                a.current = e
            }
            ),
            a.current
        }
        ;
        var h = n(83972)
          , f = n(89567)
          , p = n(22546);
        (t = i || (i = {})).success = "success",
        t.no_access = "no_access",
        t.too_many_tokens = "too_many_tokens",
        t.reached_limit = "reached_limit",
        t.bot_is_down = "bot_is_down";
        var y = i
          , b = n(36253)
          , _ = n(22747)
          , F = n(41114)
          , C = n(33213);
        let S = "ChatMessagesView_chat_messagesConnection"
          , K = (0,
        o.createContext)({
            isEmbed: !1,
            botDisplayName: "sage"
        })
          , v = ()=>Math.floor(1e9 * Math.random());
        (l = s || (s = {})).human = "human",
        l.chatBreak = "chat_break",
        l.pacarana = "pacarana";
        let M = e=>{
            if (!e)
                return !1;
            let a = (0,
            d.readInlineData)(n(91337), e);
            return !w(a) && !I(a)
        }
          , w = e=>{
            if (!e)
                return !1;
            let a = (0,
            d.readInlineData)(n(14008), e);
            return a.author === s.human
        }
          , I = e=>{
            if (!e)
                return !1;
            let a = (0,
            d.readInlineData)(n(26973), e);
            return a.author === s.chatBreak
        }
          , L = (e,a)=>{
            let t = (0,
            d.useFragment)(n(83042), e)
              , l = (0,
            d.useFragment)(n(1535), a)
              , i = k(t.chatId)
              , s = x(null != t ? t : null)
              , r = null === t.defaultBotObject.contextClearWindowSecs ? null : 1e3 * t.defaultBotObject.contextClearWindowSecs;
            (0,
            o.useEffect)(()=>{
                if (!l || i === t.chatId || !r)
                    return;
                let e = Date.now() - l.creationTime / 1e3;
                null !== r && e > r && !I(l) && s()
            }
            , [t, l, i, s, r]),
            (0,
            o.useEffect)(()=>{
                if (!l || null === r)
                    return;
                let e = Date.now() - l.creationTime / 1e3;
                e > r && !I(l) && s()
            }
            , [])
        }
          , B = (e,a)=>{
            var t, l;
            let i = (0,
            d.useFragment)(n(47629), e)
              , r = (0,
            d.useFragment)(n(68825), a)
              , c = (0,
            d.useRelayEnvironment)()
              , [g,m] = (0,
            o.useState)(null !== (t = i.timeoutLevel) && void 0 !== t ? t : 0);
            return (0,
            o.useEffect)(()=>{
                if (i.isOptimistic && i.author === s.human && g < 3) {
                    let e = window.setTimeout(()=>{
                        m(g + 1)
                    }
                    , 5e3);
                    return ()=>{
                        window.clearTimeout(e)
                    }
                }
            }
            , [i, g, m]),
            (0,
            o.useEffect)(()=>{
                var e;
                let a = Math.floor(r.defaultBotObject.messageTimeoutSecs / 5);
                if (i.state === b.Z.incomplete && (!i.isOptimistic || i.author !== s.human) && (null !== (e = i.timeoutLevel) && void 0 !== e ? e : 0) < a) {
                    let e = window.setTimeout(()=>{
                        (0,
                        d.commitLocalUpdate)(c, e=>{
                            var n;
                            let t = e.get(i.id);
                            u()(t, "node is ".concat(t));
                            let l = null !== (n = t.getValue("timeoutLevel")) && void 0 !== n ? n : 0
                              , s = l + 1;
                            t.setValue(s, "timeoutLevel"),
                            (0,
                            f.ZR)();
                            let o = {
                                message_id: i.messageId,
                                platform: "web",
                                chat_id: r.chatId,
                                default_bot_nickname: r.defaultBotObject.nickname,
                                user_agent: window.navigator.userAgent
                            };
                            s === a ? (0,
                            h.Z)("poe/statsd_event", {
                                key: "poe.message.timeout",
                                value: 1,
                                category: "count",
                                extra_data: o
                            }) : (0,
                            h.Z)("poe/statsd_event", {
                                key: "poe.message.timeout_level.".concat(s),
                                value: 1,
                                category: "count",
                                extra_data: o
                            })
                        }
                        )
                    }
                    , 5e3);
                    return ()=>{
                        window.clearTimeout(e)
                    }
                }
            }
            , [i, c, r]),
            i.isOptimistic && i.author === s.human ? g : null !== (l = i.timeoutLevel) && void 0 !== l ? l : 0
        }
          , E = "ChatMessageInputView_OptimisticHumanMessage"
          , T = "ChatMessageInputView_OptimisticChatBreakEdge"
          , R = "ChatMessageInputView_OptimisticChatBreak"
          , V = "ChatMessageInputView_OptimisticIntroductionMessage"
          , D = function(e) {
            let a = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : null
              , t = arguments.length > 2 && void 0 !== arguments[2] && arguments[2]
              , l = (0,
            d.useFragment)(n(2567), e)
              , [i] = (0,
            d.useMutation)(n(4915))
              , {addDisclaimer: r} = (0,
            m.Z)()
              , k = (0,
            d.useRelayEnvironment)()
              , h = (0,
            o.useCallback)(e=>{
                let a = e.get(l.id);
                u()(a, "chatRecord is ".concat(a));
                let n = d.ConnectionHandler.getConnection(a, S);
                u()(n, "connectionRecord is ".concat(n));
                let t = e.getRootField("messageEdgeCreate");
                u()(t, "payload is ".concat(t));
                let i = t.getLinkedRecord("chatBreak")
                  , s = t.getLinkedRecord("message")
                  , r = null == s ? void 0 : s.getLinkedRecord("node")
                  , o = null == r ? void 0 : r.getValue("clientNonce");
                if (i) {
                    let a = d.ConnectionHandler.buildConnectionEdge(e, n, i);
                    u()(a, "newChatBreakEdge is ".concat(a)),
                    d.ConnectionHandler.insertEdgeAfter(n, a)
                }
                if (o) {
                    let e = n.getLinkedRecords("edges");
                    if (e && e.some(e=>{
                        var a;
                        return (null === (a = e.getLinkedRecord("node")) || void 0 === a ? void 0 : a.getValue("clientNonce")) === o
                    }
                    ))
                        return
                }
                let c = d.ConnectionHandler.buildConnectionEdge(e, n, s);
                c && (u()(c, "newMessageEdge is ".concat(c)),
                d.ConnectionHandler.insertEdgeAfter(n, c)),
                (0,
                _.As)(e, l.defaultBotObject.id)
            }
            , [l])
              , K = (0,
            c.ZP)()
              , M = (0,
            o.useCallback)(async e=>{
                (0,
                f.Si)();
                let n = l.shouldShowDisclaimer
                  , o = (0,
                F.z)(16)
                  , m = await (0,
                C.h0)();
                i({
                    variables: {
                        chatId: l.chatId,
                        bot: l.defaultBotObject.nickname,
                        query: e,
                        source: a,
                        withChatBreak: t,
                        clientNonce: o,
                        sdid: m
                    },
                    optimisticResponse: {
                        messageEdgeCreate: {
                            chatBreak: t ? {
                                id: T,
                                cursor: R,
                                node: {
                                    id: R,
                                    messageId: R,
                                    text: "",
                                    author: s.chatBreak,
                                    isOptimistic: !0,
                                    suggestedReplies: [],
                                    creationTime: 1e3 * Date.now() - 1,
                                    state: b.Z.complete,
                                    clientNonce: null
                                }
                            } : null,
                            message: {
                                id: "ChatMessageInputView_OptimisticHumanMessageEdge",
                                cursor: E,
                                node: {
                                    id: E,
                                    messageId: E,
                                    text: e,
                                    author: s.human,
                                    isOptimistic: !0,
                                    suggestedReplies: [],
                                    creationTime: 1e3 * Date.now(),
                                    state: b.Z.complete,
                                    chat: {
                                        id: l.id,
                                        shouldShowDisclaimer: !1
                                    },
                                    clientNonce: o,
                                    contentType: "a2_100k" === l.defaultBotObject.nickname ? p.Z.text_plain : p.Z.text_markdown
                                }
                            },
                            status: y.success
                        }
                    },
                    updater: h,
                    optimisticUpdater: h,
                    onCompleted: e=>{
                        var a;
                        let t = e.messageEdgeCreate.status;
                        if (t !== y.success) {
                            let e;
                            switch (t) {
                            case y.too_many_tokens:
                                e = "This message is too long. Retry with a shorter message.";
                                break;
                            case y.no_access:
                                e = "Your access to this chat is not allowed.";
                                break;
                            case y.reached_limit:
                                e = "You have reached the limit of messages you can send in this chat.";
                                break;
                            case y.bot_is_down:
                                e = "This bot is currently down. Please try again later.";
                                break;
                            default:
                                e = "An error occurred on our end. Please try again."
                            }
                            K({
                                type: c.pC.error,
                                content: e
                            });
                            return
                        }
                        let i = null === (a = e.messageEdgeCreate.message) || void 0 === a ? void 0 : a.node.messageId;
                        u()(i, "messageId is ".concat(i)),
                        n && r(i),
                        (0,
                        g.Ot)(E, i);
                        let s = ()=>setTimeout(()=>{
                            (0,
                            d.commitLocalUpdate)(k, e=>{
                                let a = e.get(l.id);
                                u()(a, "Chat Record is ".concat(a));
                                let n = d.ConnectionHandler.getConnection(a, S);
                                u()(n, "Chat Connection is ".concat(n));
                                let t = n.getLinkedRecords("edges");
                                u()(t, "Messages is ".concat(t));
                                let i = t[t.length - 1].getLinkedRecord("node");
                                if (u()(i, "Last Message is ".concat(i)),
                                i.getValue("isOptimistic")) {
                                    s();
                                    return
                                }
                                if ("human" !== i.getValue("author"))
                                    return;
                                let r = String(v())
                                  , o = e.create(r, "Message")
                                  , c = i.getValue("creationTime");
                                u()(c, "Last Creation Time is ".concat(c)),
                                o.setValue(r, "id"),
                                o.setValue(v(), "messageId"),
                                o.setValue("...", "text"),
                                o.setValue(c + 1e6, "creationTime"),
                                o.setValue(l.defaultBotObject.nickname, "author"),
                                o.setValue(b.Z.incomplete, "state"),
                                o.setValue([], "suggestedReplies"),
                                o.setValue(!0, "isOptimistic"),
                                o.setLinkedRecord(a, "chat");
                                let g = d.ConnectionHandler.createEdge(e, n, o, "MessageEdge");
                                d.ConnectionHandler.insertEdgeAfter(n, g)
                            }
                            )
                        }
                        , 100);
                        s()
                    }
                    ,
                    onError: a=>{
                        console.error(a),
                        (0,
                        d.commitLocalUpdate)(k, a=>{
                            let n = a.get(l.id);
                            u()(n, "Chat Record is ".concat(n));
                            let t = d.ConnectionHandler.getConnection(n, S);
                            u()(t, "Chat Connection is ".concat(t));
                            let i = t.getLinkedRecords("edges");
                            u()(i, "Messages is ".concat(i));
                            let r = i[i.length - 1].getLinkedRecord("node");
                            u()(r, "Last Message is ".concat(r));
                            let o = String(v())
                              , c = a.create(o, "Message")
                              , g = r.getValue("creationTime");
                            u()(g, "Last Creation Time is ".concat(g)),
                            c.setValue(o, "id"),
                            c.setValue(v(), "messageId"),
                            c.setValue(e, "text"),
                            c.setValue(g + 1e6, "creationTime"),
                            c.setValue(s.human, "author"),
                            c.setValue(b.Z.error, "state"),
                            c.setValue([], "suggestedReplies"),
                            window.navigator.onLine || c.setValue(!0, "offlineError"),
                            c.setLinkedRecord(n, "chat");
                            let m = d.ConnectionHandler.createEdge(a, t, c, "MessageEdge");
                            d.ConnectionHandler.insertEdgeAfter(t, m)
                        }
                        )
                    }
                }),
                (0,
                g.CE)(E, l.chatId)
            }
            , [i, r, l, k, a, h, t, K]);
            return M
        }
          , x = e=>{
            var a;
            let t = (0,
            d.useFragment)(n(69666), e)
              , [l] = (0,
            d.useMutation)(n(3594))
              , i = d.ConnectionHandler.getConnectionID(null !== (a = null == t ? void 0 : t.id) && void 0 !== a ? a : "", S)
              , r = (0,
            o.useCallback)(()=>{
                t && l({
                    variables: {
                        connections: [i],
                        chatId: t.chatId
                    },
                    optimisticResponse: {
                        messageBreakEdgeCreate: {
                            message: {
                                id: T,
                                cursor: R,
                                node: {
                                    id: R,
                                    messageId: R,
                                    text: "",
                                    author: s.chatBreak,
                                    suggestedReplies: [],
                                    creationTime: 1e3 * Date.now(),
                                    state: b.Z.complete
                                }
                            },
                            introductionMessage: t.defaultBotObject.introduction ? {
                                id: "ChatMessageInputView_OptimisticIntroductionMessageEdge",
                                cursor: V,
                                node: {
                                    id: V,
                                    messageId: V,
                                    text: t.defaultBotObject.introduction,
                                    author: t.defaultBotObject.model,
                                    suggestedReplies: [],
                                    creationTime: 1e3 * Date.now(),
                                    state: b.Z.complete
                                }
                            } : null
                        }
                    }
                })
            }
            , [l, t, i]);
            return r
        }
    },
    88447: function(e, a, n) {
        n.d(a, {
            $: function() {
                return t
            }
        });
        let t = function() {
            for (var e = arguments.length, a = Array(e), n = 0; n < e; n++)
                a[n] = arguments[n];
            return a.filter(Boolean).join(" ")
        }
    },
    22556: function(e, a, n) {
        n.d(a, {
            B: function() {
                return r
            }
        });
        var t = n(85893)
          , l = n(67294);
        let i = (0,
        l.createContext)(new Set)
          , s = (0,
        l.createContext)(()=>{}
        )
          , r = e=>{
            let {children: a} = e
              , [n,r] = (0,
            l.useState)(new Set);
            return (0,
            t.jsx)(i.Provider, {
                value: n,
                children: (0,
                t.jsx)(s.Provider, {
                    value: r,
                    children: a
                })
            })
        }
          , u = ()=>{
            let e = (0,
            l.useContext)(i)
              , a = (0,
            l.useContext)(s)
              , n = (0,
            l.useCallback)(e=>{
                a(a=>a.add(e))
            }
            , [a]);
            return {
                addDisclaimer: n,
                disclaimerMessageIds: e
            }
        }
        ;
        a.Z = u
    },
    41114: function(e, a, n) {
        n.d(a, {
            _: function() {
                return l
            },
            z: function() {
                return t
            }
        });
        let t = e=>{
            let a = ""
              , n = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"
              , t = 0;
            for (; t < e; )
                a += n.charAt(Math.floor(Math.random() * n.length)),
                t += 1;
            return a
        }
          , l = ()=>t(32)
    },
    33213: function(e, a, n) {
        let t;
        n.d(a, {
            Rz: function() {
                return o
            },
            h0: function() {
                return m
            },
            hP: function() {
                return g
            }
        });
        var l = n(67294);
        let i = "quora_b_46ba1291c98480d9dde6fed2b16c7cae__90053357"
          , s = "aff4cbc69cc3fee7a3b851fb6c40fed3"
          , r = "com.poe"
          , u = async()=>{
            await d()
        }
          , o = ()=>{
            (0,
            l.useEffect)(()=>{
                u()
            }
            , [])
        }
          , d = async()=>(t || (t = c()),
        await t)
          , c = async()=>{
            let e = await n.e(8961).then(n.t.bind(n, 58961, 23))
              , {singularSdk: a, SingularConfig: t} = e;
            return await new Promise(e=>{
                if (a && t && i && s && r) {
                    let n = new t(i,s,r);
                    n.withInitFinishedCallback(()=>e()),
                    a.init(n)
                }
            }
            ),
            e
        }
          , g = async e=>{
            let a = await d();
            return a.singularSdk.event(e)
        }
          , m = async()=>{
            let e = await d();
            return e.singularSdk.getSingularDeviceId()
        }
    },
    84890: function(e, a) {
        var n, t;
        (t = n || (n = {})).not_deleted = "not_deleted",
        t.user_deleted = "user_deleted",
        t.poe_deleted = "poe_deleted",
        t.llm_deleted = "llm_deleted",
        t.hard_deleted = "hard_deleted",
        a.Z = n
    },
    22546: function(e, a) {
        var n, t;
        (t = n || (n = {})).text_markdown = "text_markdown",
        t.text_plain = "text_plain",
        a.Z = n
    }
}]);

Comes from return e.singularSdk.getSingularDeviceId()

@lazezo2
Copy link

lazezo2 commented May 27, 2023

got panned to after a few request..
any idea?

@abhiprojectz
Copy link

Hey guys, i am creating a fully automated version for Poe, It will be undetectable and fast.

It can bypass any Cloudflare or even CAPTCHA's protected site.

Till know i can't find any opensource alternative for both Cloudflare & captcha's...

If anyone want it then leave a reply so i can know how many are interested for it.

@ading2210
Copy link
Owner

This has hopefully been fixed in v0.4.0.

@ading2210 ading2210 unpinned this issue May 28, 2023
@Jxells
Copy link
Author

Jxells commented May 28, 2023

Hey guys, i am creating a fully automated version for Poe, It will be undetectable and fast.

It can bypass any Cloudflare or even CAPTCHA's protected site.

Till know i can't find any opensource alternative for both Cloudflare & captcha's...

If anyone want it then leave a reply so i can know how many are interested for it.

good

@lazezo2
Copy link

lazezo2 commented May 28, 2023

Any one can confirm fixed in v0.4.0?

@acheong08
Copy link
Contributor

No ban on my end yet after using tls spoofing and other fingerprints

@lazezo2
Copy link

lazezo2 commented May 30, 2023

No ban for me too after day of working, but as safety i am using delay time between request with random number...

@Pan-zc
Copy link

Pan-zc commented Jul 16, 2023

No ban for me too after day of working, but as safety i am using delay time between request with random number...

delay time for how long?

@lazezo2
Copy link

lazezo2 commented Jul 17, 2023

No ban for me too after day of working, but as safety i am using delay time between request with random number...

delay time for how long?

i used around 1 minute delay time

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
bug Something isn't working help wanted Extra attention is needed
Projects
None yet
Development

No branches or pull requests