├── blum ├── .dockerignore ├── readme.md ├── .gitignore ├── Dockerfile ├── package.json └── package-lock.json ├── memefi ├── .dockerignore ├── requirements.txt ├── Dockerfile ├── utils │ ├── headers.py │ └── query.py └── app_noproxy.py ├── oasis ├── request │ ├── response.go │ └── request.go ├── constant │ └── constant.go ├── readme.md ├── Dockerfile ├── go.mod ├── main.go └── go.sum ├── yescoin ├── .dockerignore ├── config.json ├── Dockerfile └── package.json ├── .gitignore ├── chickcoop ├── auto │ ├── conf.toml.example │ ├── readme.md │ ├── Dockerfile │ ├── constant │ │ └── constant.go │ ├── go.mod │ ├── request │ │ └── request.go │ ├── main.go │ └── go.sum └── docker-compose.yaml ├── nodepay ├── nodepay ├── conf.toml.example ├── readme.md ├── constant │ └── constant.go ├── Dockerfile ├── request │ ├── request.go │ └── response.go ├── go.mod ├── main.go └── go.sum ├── timefarm ├── nodepay ├── readme.md ├── constant │ └── constant.go ├── Dockerfile ├── request │ ├── request.go │ └── response.go ├── go.mod ├── main.go ├── upgrade │ └── main.go └── go.sum ├── conet-network ├── conf.toml.example ├── readme.md ├── Dockerfile ├── go.mod ├── create-wallet │ └── main.go ├── main.go └── go.sum ├── .github └── images │ └── query_id.png ├── tomarket ├── conf.toml.example ├── readme.md ├── request │ ├── request.go │ └── response.go ├── constant │ └── constant.go ├── Dockerfile ├── go.mod ├── main.go └── go.sum ├── common-proxy ├── package.json └── main.js ├── .gitmodules └── README.md /blum/.dockerignore: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /memefi/.dockerignore: -------------------------------------------------------------------------------- 1 | venv 2 | query.txt -------------------------------------------------------------------------------- /oasis/request/response.go: -------------------------------------------------------------------------------- 1 | package request 2 | -------------------------------------------------------------------------------- /yescoin/.dockerignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | query.txt -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.toml 2 | .idea 3 | .DS_Store 4 | *.txt 5 | node_modules 6 | venv -------------------------------------------------------------------------------- /blum/readme.md: -------------------------------------------------------------------------------- 1 | Link: https://t.me/BlumCryptoBot/app?startapp=ref_fve3GyUrau -------------------------------------------------------------------------------- /blum/.gitignore: -------------------------------------------------------------------------------- 1 | *.toml 2 | .idea 3 | .DS_Store 4 | *.txt 5 | node_modules 6 | venv -------------------------------------------------------------------------------- /chickcoop/auto/conf.toml.example: -------------------------------------------------------------------------------- 1 | [auth] 2 | tokens=[] 3 | 4 | [proxies] 5 | data=[] -------------------------------------------------------------------------------- /nodepay/nodepay: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ducthanh98/airdrop/HEAD/nodepay/nodepay -------------------------------------------------------------------------------- /timefarm/nodepay: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ducthanh98/airdrop/HEAD/timefarm/nodepay -------------------------------------------------------------------------------- /conet-network/conf.toml.example: -------------------------------------------------------------------------------- 1 | [data] 2 | proxies= [ 3 | ] 4 | wallets = [ 5 | ] 6 | password = "" -------------------------------------------------------------------------------- /nodepay/conf.toml.example: -------------------------------------------------------------------------------- 1 | [data] 2 | proxies= [ 3 | "http://user:pass@ip:port" 4 | ] 5 | token="" -------------------------------------------------------------------------------- /.github/images/query_id.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ducthanh98/airdrop/HEAD/.github/images/query_id.png -------------------------------------------------------------------------------- /yescoin/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "TaskEnable": true, 3 | "upgradeMultiEnable": true, 4 | "upgradeFillEnable": true, 5 | "maxLevel": 5, 6 | "maxThreads": 10 7 | } -------------------------------------------------------------------------------- /blum/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM node:20.10.0-alpine 2 | 3 | WORKDIR /app 4 | 5 | COPY package*.json ./ 6 | 7 | RUN npm install 8 | 9 | COPY main.js . 10 | 11 | CMD [ "node", "main.js" ] -------------------------------------------------------------------------------- /yescoin/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM node:20.10.0-alpine 2 | 3 | WORKDIR /app 4 | 5 | COPY package*.json ./ 6 | 7 | RUN npm install 8 | 9 | COPY . . 10 | 11 | CMD [ "node", "main.js" ] -------------------------------------------------------------------------------- /nodepay/readme.md: -------------------------------------------------------------------------------- 1 | Link: https://app.nodepay.ai/register?ref=TF2dZU9xE625uNe 2 | # How to get token ? 3 | - Enable chrome dev tool. 4 | - Getting **bearer token** from header or local storage. 5 | -------------------------------------------------------------------------------- /conet-network/readme.md: -------------------------------------------------------------------------------- 1 | Link: https://beta1.conet.network/?referral=0x4b53b6f0eb489a90b2a13b8515d63ccc6cf2b267 2 | 3 | - **Wallets**: 12 seed phrase 4 | - password: **Valid password** that can satisfy web requirements -------------------------------------------------------------------------------- /tomarket/conf.toml.example: -------------------------------------------------------------------------------- 1 | [auth] 2 | tokens=[] 3 | farm_id="53b22103-c7ff-413d-bc63-20f6fb806a07" # DO NOT CHANGE THIS 4 | game_id="59bcd12e-04e2-404c-a172-311a0084587d" # DO NOT CHANGE THIS 5 | 6 | [proxies] 7 | data=[] -------------------------------------------------------------------------------- /chickcoop/auto/readme.md: -------------------------------------------------------------------------------- 1 | Link: https://t.me/chickcoopofficial_bot/chickcoop?startapp=ref_1939627995 2 | # Config file 3 | ``` 4 | [auth] 5 | tokens=[ 6 | "xxx", 7 | "yyy" 8 | ] 9 | ``` 10 | 11 | Put query_id into tokens parameter -------------------------------------------------------------------------------- /nodepay/constant/constant.go: -------------------------------------------------------------------------------- 1 | package constant 2 | 3 | const BASE_URL = "https://api.nodepay.ai/api" 4 | const PING_URL = "https://nw2.nodepay.ai/api/network/ping" 5 | const BASE_WSS = "wss://nw.nodepay.ai:4576/websocket" 6 | const PING_INTERVAL = 60000 7 | -------------------------------------------------------------------------------- /oasis/constant/constant.go: -------------------------------------------------------------------------------- 1 | package constant 2 | 3 | const BASE_URL = "https://api.nodepay.ai/api" 4 | const PING_URL = "https://nw2.nodepay.ai/api/network/ping" 5 | const BASE_WSS = "wss://api.oasis.ai/websocket?token=%v" 6 | const PING_INTERVAL = 60000 7 | -------------------------------------------------------------------------------- /tomarket/readme.md: -------------------------------------------------------------------------------- 1 | Link Bot: https://t.me/Tomarket_ai_bot/app?startapp=000005Vu 2 | 3 | Config file 4 | ``` 5 | [auth] 6 | tokens=[ 7 | "xxx", 8 | "yyy" 9 | ] 10 | ``` 11 | 12 | **Enable Chrome Dev Tool and then getting `init_data` from Login API**: 13 | -------------------------------------------------------------------------------- /memefi/requirements.txt: -------------------------------------------------------------------------------- 1 | aiohttp==3.9.5 2 | aiosignal==1.3.1 3 | attrs==23.2.0 4 | certifi==2024.6.2 5 | charset-normalizer==3.3.2 6 | colorama==0.4.6 7 | frozenlist==1.4.1 8 | idna==3.7 9 | multidict==6.0.5 10 | requests==2.32.3 11 | urllib3==2.2.2 12 | yarl==1.9.4 13 | -------------------------------------------------------------------------------- /yescoin/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "@cosmjs/proto-signing": "^0.32.4", 4 | "@cosmjs/stargate": "^0.32.4", 5 | "axios": "^1.7.2", 6 | "colors": "^1.4.0", 7 | "https-proxy-agent": "^7.0.5", 8 | "luxon": "^3.5.0", 9 | "readline": "^1.3.0" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /timefarm/readme.md: -------------------------------------------------------------------------------- 1 | Link Bot: https://t.me/TimeFarmCryptoBot?start=1yLEmNU4ZifGlRkrg 2 | 3 | Config file 4 | ``` 5 | [auth] 6 | tokens=[ 7 | "xxx", 8 | "yyy" 9 | ] 10 | ``` 11 | 12 | **Enable Chrome Dev Tool and then getting `JWT Token`(please remove 'Bearer' by your self) from Info API**: 13 | 14 | -------------------------------------------------------------------------------- /oasis/readme.md: -------------------------------------------------------------------------------- 1 | Link: https://r.oasis.ai/d9b07d9f5f2bd4ac 2 | 3 | # How to get token? 4 | - Open extension. 5 | - Create a new device. 6 | - Open network tab. Check websocket tab. 7 | - **Important**: Create a new device for each proxy. I don't have time to find the Create Device API. If you find it, feel free to open a merge request. -------------------------------------------------------------------------------- /common-proxy/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "common-proxy", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "main.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "keywords": [], 10 | "author": "", 11 | "license": "ISC", 12 | "dependencies": { 13 | "express": "^4.21.1", 14 | "proxy-chain": "^2.5.5" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /tomarket/request/request.go: -------------------------------------------------------------------------------- 1 | package request 2 | 3 | type QueryData struct { 4 | ID int64 `json:"id"` 5 | } 6 | 7 | type LoginRequest struct { 8 | InitData string `json:"init_data"` 9 | InviteCode string `json:"invite_code"` 10 | } 11 | 12 | type PlayGameRequest struct { 13 | GameID string `json:"game_id"` 14 | } 15 | 16 | type ClaimRequest struct { 17 | GameID string `json:"game_id"` 18 | Points int `json:"points"` 19 | } 20 | -------------------------------------------------------------------------------- /chickcoop/docker-compose.yaml: -------------------------------------------------------------------------------- 1 | version: '3.8' 2 | 3 | services: 4 | chickcoop: 5 | image: thanhld08/chickcoop 6 | container_name: chickcoop 7 | restart: always 8 | volumes: 9 | - /Users/thanhld/Desktop/18/airdrop/chickcoop/auto/conf.toml:/root/conf.toml 10 | depends_on: 11 | - captcha-solver 12 | captcha-solver: 13 | image: thanhld08/captcha-resolver 14 | container_name: captcha-solver 15 | restart: always -------------------------------------------------------------------------------- /tomarket/constant/constant.go: -------------------------------------------------------------------------------- 1 | package constant 2 | 3 | const BASE_URL = "https://api-web.tomarket.ai/tomarket-game/v1" 4 | 5 | const LoginURL = BASE_URL + "/user/login" 6 | const GetBalanceURL = BASE_URL + "/user/balance" 7 | const ClaimMiningURL = BASE_URL + "/farm/claim" 8 | const StartMiningURL = BASE_URL + "/farm/start" 9 | const PlayGameURL = BASE_URL + "/game/play" 10 | const EndGameURL = BASE_URL + "/game/claim" 11 | const DailyClaimURL = BASE_URL + "/daily/claim" 12 | -------------------------------------------------------------------------------- /memefi/Dockerfile: -------------------------------------------------------------------------------- 1 | # Use the official Python image from the Docker Hub 2 | FROM python:3.12.3-alpine 3 | 4 | # Set the working directory in the container 5 | WORKDIR /app 6 | 7 | # Copy the requirements.txt file into the container at /app 8 | COPY requirements.txt /app/ 9 | 10 | # Install any needed packages specified in requirements.txt 11 | RUN pip install --no-cache-dir -r requirements.txt 12 | 13 | # Copy the rest of the application code to /app 14 | COPY . /app 15 | 16 | # Run the application 17 | CMD ["python", "app.py"] -------------------------------------------------------------------------------- /blum/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "area-games", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1", 8 | "start": "node main.js" 9 | }, 10 | "keywords": [], 11 | "author": "", 12 | "license": "ISC", 13 | "dependencies": { 14 | "axios": "^1.7.2", 15 | "colors": "^1.4.0", 16 | "https-proxy-agent": "^7.0.5", 17 | "luxon": "^3.4.4", 18 | "moment": "^2.30.1", 19 | "readline": "^1.3.0", 20 | "yargs": "^17.7.2" 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /memefi/utils/headers.py: -------------------------------------------------------------------------------- 1 | headers_set = { 2 | 'Accept': 'application/json', 3 | 'Accept-Language': 'en-US,en;q=0.9', 4 | 'Content-Type': 'application/json', 5 | 'Origin': 'https://tg-app.memefi.club', 6 | 'Referer': 'https://tg-app.memefi.club/', 7 | 'Sec-Ch-Ua': '"Google Chrome";v="123", "Not:A-Brand";v="8", "Chromium";v="123"', 8 | 'Sec-Ch-Ua-mobile': '?1', 9 | 'Sec-Ch-Ua-platform': '"Android"', 10 | 'Sec-Fetch-Dest': 'empty', 11 | 'Sec-Fetch-Mode': 'cors', 12 | 'Sec-Fetch-Site': 'same-site', 13 | 'User-Agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Mobile Safari/537.36', 14 | } -------------------------------------------------------------------------------- /timefarm/constant/constant.go: -------------------------------------------------------------------------------- 1 | package constant 2 | 3 | import "fmt" 4 | 5 | const BASE_URL = "https://tg-bot-tap.laborx.io/api/v1" 6 | 7 | var AuthAPI = fmt.Sprintf("%v/auth/validate-init/v2", BASE_URL) 8 | var FinishAPI = fmt.Sprintf("%v/farming/finish", BASE_URL) 9 | var StartAPI = fmt.Sprintf("%v/farming/start", BASE_URL) 10 | var GetTaskAPI = fmt.Sprintf("%v/tasks", BASE_URL) 11 | var DailyQuestionAPI = fmt.Sprintf("%v/daily-questions", BASE_URL) 12 | var SubmitTaskAPI = fmt.Sprintf("%v/tasks/%v/submissions", BASE_URL, "%v") 13 | var ClaimTaskAPI = fmt.Sprintf("%v/tasks/%v/claims", BASE_URL, "%v") 14 | var UpgradeTimeAPI = fmt.Sprintf("%v/me/level/upgrade", BASE_URL) 15 | 16 | const ( 17 | TaskStatusComplete = "COMPLETED" 18 | TaskStatusClaim = "CLAIMED" 19 | ) 20 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "coin-hunter"] 2 | path = coin-hunter 3 | url = https://github.com/ducthanh98/coin-hunter 4 | [submodule "banana"] 5 | path = banana 6 | url = https://github.com/ducthanh98/banana 7 | [submodule "blockmesh"] 8 | path = blockmesh 9 | url = https://github.com/ducthanh98/blockmesh 10 | [submodule "dawn-validator"] 11 | path = dawn-validator 12 | url = https://github.com/ducthanh98/dawn-validator 13 | [submodule "conet-network/musk-empire"] 14 | path = conet-network/musk-empire 15 | url = https://github.com/ducthanh98/musk-empire 16 | [submodule "musk-empire"] 17 | path = musk-empire 18 | url = https://github.com/ducthanh98/musk-empire 19 | [submodule "valiants"] 20 | path = valiants 21 | url = https://github.com/ducthanh98/valiants 22 | [submodule "cowtopia"] 23 | path = cowtopia 24 | url = https://github.com/ducthanh98/cowtopia-claimer 25 | -------------------------------------------------------------------------------- /oasis/Dockerfile: -------------------------------------------------------------------------------- 1 | # Stage 1: Build the Go application 2 | FROM golang:1.22.3 AS builder 3 | 4 | # Set the Current Working Directory inside the container 5 | WORKDIR /app 6 | ENV CGO_ENABLED=0 7 | 8 | # Copy go mod and sum files 9 | COPY go.mod go.sum ./ 10 | # Download all dependencies. Dependencies will be cached if the go.mod and go.sum files are not changed 11 | RUN go mod download 12 | 13 | # Copy the source from the current directory to the Working Directory inside the container 14 | COPY . . 15 | 16 | # Build the Go app 17 | RUN go build -o main . 18 | 19 | # Stage 2: Create a smaller image for running the application 20 | FROM alpine:latest 21 | 22 | # Set the Current Working Directory inside the container 23 | WORKDIR /root/ 24 | 25 | # Copy the Pre-built binary file from the previous stage 26 | COPY --from=builder /app/main . 27 | 28 | # Command to run the executable 29 | CMD ["./main"] -------------------------------------------------------------------------------- /nodepay/Dockerfile: -------------------------------------------------------------------------------- 1 | # Stage 1: Build the Go application 2 | FROM golang:1.22.3 AS builder 3 | 4 | # Set the Current Working Directory inside the container 5 | WORKDIR /app 6 | ENV CGO_ENABLED=0 7 | 8 | # Copy go mod and sum files 9 | COPY go.mod go.sum ./ 10 | # Download all dependencies. Dependencies will be cached if the go.mod and go.sum files are not changed 11 | RUN go mod download 12 | 13 | # Copy the source from the current directory to the Working Directory inside the container 14 | COPY . . 15 | 16 | # Build the Go app 17 | RUN go build -o main . 18 | 19 | # Stage 2: Create a smaller image for running the application 20 | FROM alpine:latest 21 | 22 | # Set the Current Working Directory inside the container 23 | WORKDIR /root/ 24 | 25 | # Copy the Pre-built binary file from the previous stage 26 | COPY --from=builder /app/main . 27 | 28 | # Command to run the executable 29 | CMD ["./main"] -------------------------------------------------------------------------------- /timefarm/Dockerfile: -------------------------------------------------------------------------------- 1 | # Stage 1: Build the Go application 2 | FROM golang:1.22.3 AS builder 3 | 4 | # Set the Current Working Directory inside the container 5 | WORKDIR /app 6 | ENV CGO_ENABLED=0 7 | 8 | # Copy go mod and sum files 9 | COPY go.mod go.sum ./ 10 | # Download all dependencies. Dependencies will be cached if the go.mod and go.sum files are not changed 11 | RUN go mod download 12 | 13 | # Copy the source from the current directory to the Working Directory inside the container 14 | COPY . . 15 | 16 | # Build the Go app 17 | RUN go build -o main . 18 | 19 | # Stage 2: Create a smaller image for running the application 20 | FROM alpine:latest 21 | 22 | # Set the Current Working Directory inside the container 23 | WORKDIR /root/ 24 | 25 | # Copy the Pre-built binary file from the previous stage 26 | COPY --from=builder /app/main . 27 | 28 | # Command to run the executable 29 | CMD ["./main"] -------------------------------------------------------------------------------- /tomarket/Dockerfile: -------------------------------------------------------------------------------- 1 | # Stage 1: Build the Go application 2 | FROM golang:1.21.4 AS builder 3 | 4 | # Set the Current Working Directory inside the container 5 | WORKDIR /app 6 | ENV CGO_ENABLED=0 7 | 8 | # Copy go mod and sum files 9 | COPY go.mod go.sum ./ 10 | # Download all dependencies. Dependencies will be cached if the go.mod and go.sum files are not changed 11 | RUN go mod download 12 | 13 | # Copy the source from the current directory to the Working Directory inside the container 14 | COPY . . 15 | 16 | # Build the Go app 17 | RUN go build -o main . 18 | 19 | # Stage 2: Create a smaller image for running the application 20 | FROM alpine:latest 21 | 22 | # Set the Current Working Directory inside the container 23 | WORKDIR /root/ 24 | 25 | # Copy the Pre-built binary file from the previous stage 26 | COPY --from=builder /app/main . 27 | 28 | # Command to run the executable 29 | CMD ["./main"] -------------------------------------------------------------------------------- /chickcoop/auto/Dockerfile: -------------------------------------------------------------------------------- 1 | # Stage 1: Build the Go application 2 | FROM golang:1.21.4 AS builder 3 | 4 | # Set the Current Working Directory inside the container 5 | WORKDIR /app 6 | ENV CGO_ENABLED=0 7 | 8 | # Copy go mod and sum files 9 | COPY go.mod go.sum ./ 10 | # Download all dependencies. Dependencies will be cached if the go.mod and go.sum files are not changed 11 | RUN go mod download 12 | 13 | # Copy the source from the current directory to the Working Directory inside the container 14 | COPY .. . 15 | 16 | # Build the Go app 17 | RUN go build -o main . 18 | 19 | # Stage 2: Create a smaller image for running the application 20 | FROM alpine:latest 21 | 22 | # Set the Current Working Directory inside the container 23 | WORKDIR /root/ 24 | 25 | # Copy the Pre-built binary file from the previous stage 26 | COPY --from=builder /app/main . 27 | 28 | # Command to run the executable 29 | CMD ["./main"] -------------------------------------------------------------------------------- /nodepay/request/request.go: -------------------------------------------------------------------------------- 1 | package request 2 | 3 | type AuthMessage struct { 4 | ID string `json:"id"` 5 | Action string `json:"action"` 6 | UserID string `json:"user_id"` 7 | BrowserID string `json:"browser_id"` 8 | UserAgent string `json:"user_agent"` 9 | Timestamp string `json:"timestamp"` 10 | DeviceType string `json:"device_type"` 11 | Version string `json:"version"` 12 | Token string `json:"token"` 13 | OriginAction string `json:"origin_action"` 14 | } 15 | 16 | type PongMessage struct { 17 | ID string `json:"id"` 18 | OriginAction string `json:"origin_action"` 19 | } 20 | 21 | type PingMessage struct { 22 | ID string `json:"id"` 23 | Action string `json:"action"` 24 | } 25 | 26 | type PingPostRequest struct { 27 | ID string `json:"id"` 28 | BrowserID string `json:"browser_id"` 29 | Timestamp int `json:"timestamp"` 30 | Version string `json:"version"` 31 | } 32 | -------------------------------------------------------------------------------- /timefarm/request/request.go: -------------------------------------------------------------------------------- 1 | package request 2 | 3 | type AuthMessage struct { 4 | ID string `json:"id"` 5 | Action string `json:"action"` 6 | UserID string `json:"user_id"` 7 | BrowserID string `json:"browser_id"` 8 | UserAgent string `json:"user_agent"` 9 | Timestamp string `json:"timestamp"` 10 | DeviceType string `json:"device_type"` 11 | Version string `json:"version"` 12 | Token string `json:"token"` 13 | OriginAction string `json:"origin_action"` 14 | } 15 | 16 | type PongMessage struct { 17 | ID string `json:"id"` 18 | OriginAction string `json:"origin_action"` 19 | } 20 | 21 | type PingMessage struct { 22 | ID string `json:"id"` 23 | Action string `json:"action"` 24 | } 25 | 26 | type ValidateInitRequest struct { 27 | InitData string `json:"initData"` 28 | Platform string `json:"platform"` 29 | } 30 | 31 | type DailyAnswer struct { 32 | Answer interface{} `json:"answer"` 33 | } 34 | -------------------------------------------------------------------------------- /conet-network/Dockerfile: -------------------------------------------------------------------------------- 1 | # Stage 1: Build the Go application 2 | FROM golang:1.22.3 AS builder 3 | 4 | # Set the Current Working Directory inside the container 5 | WORKDIR /app 6 | ENV CGO_ENABLED=0 7 | 8 | # Copy go mod and sum files 9 | COPY go.mod go.sum ./ 10 | # Download all dependencies. Dependencies will be cached if the go.mod and go.sum files are not changed 11 | RUN go mod download 12 | 13 | # Copy the source from the current directory to the Working Directory inside the container 14 | COPY . . 15 | 16 | # Build the Go app 17 | RUN go build -o main . 18 | 19 | # Stage 2: Create a smaller image for running the application 20 | FROM alpine:latest 21 | 22 | # Install necessary dependencies for Rod (like Chrome) 23 | RUN apk add chromium 24 | 25 | # Set the Current Working Directory inside the container 26 | WORKDIR /root/ 27 | 28 | # Copy the Pre-built binary file from the previous stage 29 | COPY --from=builder /app/main . 30 | 31 | # Command to run the executable 32 | CMD ["./main"] -------------------------------------------------------------------------------- /nodepay/request/response.go: -------------------------------------------------------------------------------- 1 | package request 2 | 3 | type GetIPResponse struct { 4 | IP string `json:"ip"` 5 | } 6 | 7 | type WsMessage struct { 8 | ID string `json:"id"` 9 | Action string `json:"action"` 10 | } 11 | 12 | type AuthSessionResponse struct { 13 | Success bool `json:"success"` 14 | Code int `json:"code"` 15 | Msg string `json:"msg"` 16 | Data AuthSessionData `json:"data"` 17 | } 18 | type Balance struct { 19 | CurrentAmount float64 `json:"current_amount"` 20 | TotalCollected float64 `json:"total_collected"` 21 | TotalRedeemed float64 `json:"total_redeemed"` 22 | } 23 | type AuthSessionData struct { 24 | UID string `json:"uid"` 25 | Name string `json:"name"` 26 | Email string `json:"email"` 27 | Avatar string `json:"avatar"` 28 | ReferralCode string `json:"referral_code"` 29 | State string `json:"state"` 30 | ReferralLink string `json:"referral_link"` 31 | Balance Balance `json:"balance"` 32 | } 33 | -------------------------------------------------------------------------------- /timefarm/go.mod: -------------------------------------------------------------------------------- 1 | module timefarm 2 | 3 | go 1.22.3 4 | 5 | require ( 6 | github.com/go-resty/resty/v2 v2.13.1 7 | github.com/spf13/viper v1.19.0 8 | ) 9 | 10 | require ( 11 | github.com/fsnotify/fsnotify v1.7.0 // indirect 12 | github.com/hashicorp/hcl v1.0.0 // indirect 13 | github.com/magiconair/properties v1.8.7 // indirect 14 | github.com/mitchellh/mapstructure v1.5.0 // indirect 15 | github.com/pelletier/go-toml/v2 v2.2.2 // indirect 16 | github.com/sagikazarmark/locafero v0.4.0 // indirect 17 | github.com/sagikazarmark/slog-shim v0.1.0 // indirect 18 | github.com/sourcegraph/conc v0.3.0 // indirect 19 | github.com/spf13/afero v1.11.0 // indirect 20 | github.com/spf13/cast v1.6.0 // indirect 21 | github.com/spf13/pflag v1.0.5 // indirect 22 | github.com/subosito/gotenv v1.6.0 // indirect 23 | go.uber.org/atomic v1.9.0 // indirect 24 | go.uber.org/multierr v1.9.0 // indirect 25 | golang.org/x/exp v0.0.0-20230905200255-921286631fa9 // indirect 26 | golang.org/x/net v0.25.0 // indirect 27 | golang.org/x/sys v0.20.0 // indirect 28 | golang.org/x/text v0.15.0 // indirect 29 | gopkg.in/ini.v1 v1.67.0 // indirect 30 | gopkg.in/yaml.v3 v3.0.1 // indirect 31 | ) 32 | -------------------------------------------------------------------------------- /common-proxy/main.js: -------------------------------------------------------------------------------- 1 | const path = require('path'); 2 | const fs = require('fs'); 3 | 4 | const trickProxies = []; 5 | const proxyFilePath = path.join(__dirname, 'proxy.txt'); 6 | const proxies = fs.readFileSync(proxyFilePath, 'utf8').trim().split('\n'); 7 | 8 | async function main() { 9 | for (let i =0; i< proxies.length;i++) { 10 | const proxyUrl = proxies[i]; 11 | const proxyChain = require('proxy-chain'); 12 | 13 | 14 | // Anonymize proxyUrl 15 | const anonymizedProxy = await proxyChain.anonymizeProxy(proxyUrl); 16 | 17 | // Parse anonymized proxy URL 18 | const parsedUrl = new URL(anonymizedProxy); 19 | 20 | // Extract the host and port 21 | const proxyHost = parsedUrl.hostname; 22 | const proxyPort = parsedUrl.port; 23 | 24 | // Construct the new proxy string 25 | const newProxyString = `${proxyHost}:${proxyPort}`; 26 | trickProxies.push(newProxyString) 27 | } 28 | console.log(trickProxies) 29 | 30 | } 31 | 32 | main(); 33 | 34 | const express = require('express'); 35 | const app = express(); 36 | app.get('*', (req, res)=> { 37 | return res.json({res: trickProxies}); 38 | }) 39 | 40 | app.listen(3000) 41 | -------------------------------------------------------------------------------- /nodepay/go.mod: -------------------------------------------------------------------------------- 1 | module nodepay 2 | 3 | go 1.22.3 4 | 5 | require ( 6 | github.com/go-resty/resty/v2 v2.13.1 7 | github.com/google/uuid v1.4.0 8 | github.com/gorilla/websocket v1.5.1 9 | github.com/spf13/viper v1.19.0 10 | ) 11 | 12 | require ( 13 | github.com/fsnotify/fsnotify v1.7.0 // indirect 14 | github.com/hashicorp/hcl v1.0.0 // indirect 15 | github.com/magiconair/properties v1.8.7 // indirect 16 | github.com/mitchellh/mapstructure v1.5.0 // indirect 17 | github.com/pelletier/go-toml/v2 v2.2.2 // indirect 18 | github.com/sagikazarmark/locafero v0.4.0 // indirect 19 | github.com/sagikazarmark/slog-shim v0.1.0 // indirect 20 | github.com/sourcegraph/conc v0.3.0 // indirect 21 | github.com/spf13/afero v1.11.0 // indirect 22 | github.com/spf13/cast v1.6.0 // indirect 23 | github.com/spf13/pflag v1.0.5 // indirect 24 | github.com/subosito/gotenv v1.6.0 // indirect 25 | go.uber.org/atomic v1.9.0 // indirect 26 | go.uber.org/multierr v1.9.0 // indirect 27 | golang.org/x/exp v0.0.0-20230905200255-921286631fa9 // indirect 28 | golang.org/x/net v0.25.0 // indirect 29 | golang.org/x/sys v0.20.0 // indirect 30 | golang.org/x/text v0.15.0 // indirect 31 | gopkg.in/ini.v1 v1.67.0 // indirect 32 | gopkg.in/yaml.v3 v3.0.1 // indirect 33 | ) 34 | -------------------------------------------------------------------------------- /tomarket/go.mod: -------------------------------------------------------------------------------- 1 | module tomarket 2 | 3 | go 1.21.4 4 | 5 | require ( 6 | github.com/go-resty/resty/v2 v2.11.0 7 | github.com/google/uuid v1.4.0 8 | github.com/sirupsen/logrus v1.9.3 9 | github.com/spf13/viper v1.19.0 10 | ) 11 | 12 | require ( 13 | github.com/fsnotify/fsnotify v1.7.0 // indirect 14 | github.com/hashicorp/hcl v1.0.0 // indirect 15 | github.com/magiconair/properties v1.8.7 // indirect 16 | github.com/mitchellh/mapstructure v1.5.0 // indirect 17 | github.com/pelletier/go-toml/v2 v2.2.2 // indirect 18 | github.com/sagikazarmark/locafero v0.4.0 // indirect 19 | github.com/sagikazarmark/slog-shim v0.1.0 // indirect 20 | github.com/sourcegraph/conc v0.3.0 // indirect 21 | github.com/spf13/afero v1.11.0 // indirect 22 | github.com/spf13/cast v1.6.0 // indirect 23 | github.com/spf13/pflag v1.0.5 // indirect 24 | github.com/subosito/gotenv v1.6.0 // indirect 25 | go.uber.org/atomic v1.9.0 // indirect 26 | go.uber.org/multierr v1.9.0 // indirect 27 | golang.org/x/exp v0.0.0-20230905200255-921286631fa9 // indirect 28 | golang.org/x/net v0.23.0 // indirect 29 | golang.org/x/sys v0.18.0 // indirect 30 | golang.org/x/text v0.14.0 // indirect 31 | gopkg.in/ini.v1 v1.67.0 // indirect 32 | gopkg.in/yaml.v3 v3.0.1 // indirect 33 | ) 34 | -------------------------------------------------------------------------------- /oasis/go.mod: -------------------------------------------------------------------------------- 1 | module oasis 2 | 3 | go 1.22.3 4 | 5 | require ( 6 | github.com/gorilla/websocket v1.5.1 7 | github.com/mattn/go-colorable v0.1.13 8 | github.com/spf13/viper v1.19.0 9 | go.uber.org/zap v1.21.0 10 | ) 11 | 12 | require ( 13 | github.com/fsnotify/fsnotify v1.7.0 // indirect 14 | github.com/hashicorp/hcl v1.0.0 // indirect 15 | github.com/magiconair/properties v1.8.7 // indirect 16 | github.com/mattn/go-isatty v0.0.17 // indirect 17 | github.com/mitchellh/mapstructure v1.5.0 // indirect 18 | github.com/pelletier/go-toml/v2 v2.2.2 // indirect 19 | github.com/sagikazarmark/locafero v0.4.0 // indirect 20 | github.com/sagikazarmark/slog-shim v0.1.0 // indirect 21 | github.com/sourcegraph/conc v0.3.0 // indirect 22 | github.com/spf13/afero v1.11.0 // indirect 23 | github.com/spf13/cast v1.6.0 // indirect 24 | github.com/spf13/pflag v1.0.5 // indirect 25 | github.com/subosito/gotenv v1.6.0 // indirect 26 | go.uber.org/atomic v1.9.0 // indirect 27 | go.uber.org/multierr v1.9.0 // indirect 28 | golang.org/x/exp v0.0.0-20230905200255-921286631fa9 // indirect 29 | golang.org/x/net v0.25.0 // indirect 30 | golang.org/x/sys v0.20.0 // indirect 31 | golang.org/x/text v0.15.0 // indirect 32 | gopkg.in/ini.v1 v1.67.0 // indirect 33 | gopkg.in/yaml.v3 v3.0.1 // indirect 34 | ) 35 | -------------------------------------------------------------------------------- /chickcoop/auto/constant/constant.go: -------------------------------------------------------------------------------- 1 | package constant 2 | 3 | const BASE_URL = "https://api.chickcoop.io" 4 | 5 | const HatchAPI = BASE_URL + "/hatch/manual" 6 | const GetStateAPI = BASE_URL + "/user/state" 7 | const GiftClaimAPI = BASE_URL + "/gift/claim" 8 | const UpgradelevelAPI = BASE_URL + "/discovery/upgrade-eggs" 9 | const ResearchAPI = BASE_URL + "/laboratory/research" 10 | const AutoHatchAPI = BASE_URL + "/hatch/auto" 11 | const SpinAPI = BASE_URL + "/v2/wheel/spin" 12 | const ClaimSpinAPI = BASE_URL + "/wheel/claim" 13 | const ClaimDailyAPI = BASE_URL + "/mission/task/claim" 14 | const GetChallenge = BASE_URL + "/user/challenge" 15 | const VerifyChallenge = BASE_URL + "/user/challenge/verify" 16 | const UpgradeAutoHatch = BASE_URL + "/hatch/auto/upgrade" 17 | const UpgradeNextLevelAutoHatch = BASE_URL + "/hatch/auto/nextLevel" 18 | 19 | const ResearchTypeFarmCapacity = "laboratory.regular.farmCapacity" 20 | const ResearchTypeEggValue = "laboratory.regular.eggValue" 21 | const SpinModeFree = "free" 22 | const ResearchTypeLayingRate = "laboratory.regular.layingRate" 23 | 24 | // LAND API 25 | 26 | const GetLandStateAPI = BASE_URL + "/land/state" 27 | const PurchaseSeedsAPI = BASE_URL + "/land/purchaseSeeds" 28 | const WateringAPI = BASE_URL + "/land/watering" 29 | const PutInAPI = BASE_URL + "/land/putIn" 30 | const HarvestAPI = BASE_URL + "/land/harvest" 31 | -------------------------------------------------------------------------------- /conet-network/go.mod: -------------------------------------------------------------------------------- 1 | module conet-network 2 | 3 | go 1.22.3 4 | 5 | require ( 6 | github.com/go-rod/rod v0.116.1 7 | github.com/google/uuid v1.4.0 8 | github.com/spf13/viper v1.19.0 9 | go.uber.org/zap v1.21.0 10 | ) 11 | 12 | require ( 13 | github.com/fsnotify/fsnotify v1.7.0 // indirect 14 | github.com/hashicorp/hcl v1.0.0 // indirect 15 | github.com/magiconair/properties v1.8.7 // indirect 16 | github.com/mitchellh/mapstructure v1.5.0 // indirect 17 | github.com/pelletier/go-toml/v2 v2.2.2 // indirect 18 | github.com/sagikazarmark/locafero v0.4.0 // indirect 19 | github.com/sagikazarmark/slog-shim v0.1.0 // indirect 20 | github.com/sourcegraph/conc v0.3.0 // indirect 21 | github.com/spf13/afero v1.11.0 // indirect 22 | github.com/spf13/cast v1.6.0 // indirect 23 | github.com/spf13/pflag v1.0.5 // indirect 24 | github.com/subosito/gotenv v1.6.0 // indirect 25 | github.com/ysmood/fetchup v0.2.3 // indirect 26 | github.com/ysmood/goob v0.4.0 // indirect 27 | github.com/ysmood/got v0.40.0 // indirect 28 | github.com/ysmood/gson v0.7.3 // indirect 29 | github.com/ysmood/leakless v0.8.0 // indirect 30 | go.uber.org/atomic v1.9.0 // indirect 31 | go.uber.org/multierr v1.9.0 // indirect 32 | golang.org/x/exp v0.0.0-20230905200255-921286631fa9 // indirect 33 | golang.org/x/sys v0.18.0 // indirect 34 | golang.org/x/text v0.14.0 // indirect 35 | gopkg.in/ini.v1 v1.67.0 // indirect 36 | gopkg.in/yaml.v3 v3.0.1 // indirect 37 | ) 38 | -------------------------------------------------------------------------------- /chickcoop/auto/go.mod: -------------------------------------------------------------------------------- 1 | module chickcoop 2 | 3 | go 1.21.4 4 | 5 | require ( 6 | github.com/go-resty/resty/v2 v2.11.0 7 | github.com/newrelic/go-agent/v3 v3.34.0 8 | github.com/spf13/viper v1.19.0 9 | go.uber.org/zap v1.21.0 10 | ) 11 | 12 | require ( 13 | github.com/fsnotify/fsnotify v1.7.0 // indirect 14 | github.com/golang/protobuf v1.5.3 // indirect 15 | github.com/hashicorp/hcl v1.0.0 // indirect 16 | github.com/magiconair/properties v1.8.7 // indirect 17 | github.com/mitchellh/mapstructure v1.5.0 // indirect 18 | github.com/pelletier/go-toml/v2 v2.2.2 // indirect 19 | github.com/sagikazarmark/locafero v0.4.0 // indirect 20 | github.com/sagikazarmark/slog-shim v0.1.0 // indirect 21 | github.com/sourcegraph/conc v0.3.0 // indirect 22 | github.com/spf13/afero v1.11.0 // indirect 23 | github.com/spf13/cast v1.6.0 // indirect 24 | github.com/spf13/pflag v1.0.5 // indirect 25 | github.com/subosito/gotenv v1.6.0 // indirect 26 | go.uber.org/atomic v1.9.0 // indirect 27 | go.uber.org/multierr v1.9.0 // indirect 28 | golang.org/x/exp v0.0.0-20230905200255-921286631fa9 // indirect 29 | golang.org/x/net v0.23.0 // indirect 30 | golang.org/x/sys v0.18.0 // indirect 31 | golang.org/x/text v0.14.0 // indirect 32 | google.golang.org/genproto/googleapis/rpc v0.0.0-20240314234333-6e1732d8331c // indirect 33 | google.golang.org/grpc v1.62.1 // indirect 34 | google.golang.org/protobuf v1.33.0 // indirect 35 | gopkg.in/ini.v1 v1.67.0 // indirect 36 | gopkg.in/yaml.v3 v3.0.1 // indirect 37 | ) 38 | -------------------------------------------------------------------------------- /timefarm/request/response.go: -------------------------------------------------------------------------------- 1 | package request 2 | 3 | import "time" 4 | 5 | type AuthResponse struct { 6 | Token string `json:"token"` 7 | Info Info `json:"info"` 8 | FarmingInfo FarmingInfo `json:"farmingInfo"` 9 | LevelDescriptions []LevelDescriptions `json:"levelDescriptions"` 10 | BalanceInfo BalanceInfo `json:"balanceInfo"` 11 | DailyRewardInfo interface{} `json:"dailyRewardInfo"` 12 | } 13 | type Info struct { 14 | OriginalLanguage string `json:"originalLanguage"` 15 | Language string `json:"language"` 16 | OnboardingCompleted bool `json:"onboardingCompleted"` 17 | Level int `json:"level"` 18 | } 19 | type FarmingInfo struct { 20 | FarmingDurationInSec int `json:"farmingDurationInSec"` 21 | FarmingReward int `json:"farmingReward"` 22 | } 23 | type LevelDescriptions struct { 24 | Level string `json:"level"` 25 | FarmMultiplicator int `json:"farmMultiplicator"` 26 | Price int `json:"price,omitempty"` 27 | } 28 | type Referral struct { 29 | } 30 | type BalanceInfo struct { 31 | Balance int `json:"balance"` 32 | Referral Referral `json:"referral"` 33 | } 34 | 35 | type Task []struct { 36 | Submission *Submission `json:"submission,omitempty"` 37 | ID string `json:"id"` 38 | Title string `json:"title"` 39 | URL string `json:"url"` 40 | Type string `json:"type"` 41 | Description string `json:"description"` 42 | Reward int `json:"reward"` 43 | ChatID string `json:"chatId,omitempty"` 44 | } 45 | type Submission struct { 46 | Reward int `json:"reward"` 47 | Status string `json:"status"` 48 | CreatedAt time.Time `json:"createdAt"` 49 | } 50 | -------------------------------------------------------------------------------- /oasis/request/request.go: -------------------------------------------------------------------------------- 1 | package request 2 | 3 | type WsRequest struct { 4 | Type string `json:"type"` 5 | Data interface{} `json:"data"` 6 | } 7 | type HeartbeatData struct { 8 | Status string `json:"status"` 9 | } 10 | 11 | type Schedule struct { 12 | Mode string `json:"mode"` 13 | Days []string `json:"days"` 14 | StartTime string `json:"startTime"` 15 | StopTime string `json:"stopTime"` 16 | Usage string `json:"usage"` 17 | } 18 | type UserSettings struct { 19 | Schedule Schedule `json:"schedule"` 20 | EnabledModels []interface{} `json:"enabledModels"` 21 | } 22 | type Usage struct { 23 | Idle int `json:"idle"` 24 | Kernel int `json:"kernel"` 25 | Total int `json:"total"` 26 | User int `json:"user"` 27 | } 28 | type Processors struct { 29 | Usage Usage `json:"usage"` 30 | } 31 | type CPUInfo struct { 32 | ArchName string `json:"archName"` 33 | Features []interface{} `json:"features"` 34 | ModelName string `json:"modelName"` 35 | NumOfProcessors int `json:"numOfProcessors"` 36 | Processors []Processors `json:"processors"` 37 | Temperatures []interface{} `json:"temperatures"` 38 | } 39 | type MemoryInfo struct { 40 | AvailableCapacity int64 `json:"availableCapacity"` 41 | Capacity int64 `json:"capacity"` 42 | } 43 | type GpuInfo struct { 44 | Vendor string `json:"vendor"` 45 | Renderer string `json:"renderer"` 46 | } 47 | type SystemInfo struct { 48 | CPUInfo CPUInfo `json:"cpuInfo"` 49 | MemoryInfo MemoryInfo `json:"memoryInfo"` 50 | GpuInfo GpuInfo `json:"gpuInfo"` 51 | } 52 | type SettingData struct { 53 | MostRecentModel string `json:"mostRecentModel"` 54 | UserSettings UserSettings `json:"userSettings"` 55 | SystemInfo SystemInfo `json:"systemInfo"` 56 | ExtensionVersion string `json:"extensionVersion"` 57 | ChromeVersion string `json:"chromeVersion"` 58 | } 59 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # How to Create and Fill `query.txt` with `query_id` 2 | 3 | This guide provides step-by-step instructions on how to create a `query.txt` file and fill it with the `query_id` obtained from the session storage in Web Telegram. 4 | 5 | ## Steps to Follow: 6 | 7 | ### 1. Open Web Telegram 8 | 9 | - Navigate to [Web Telegram](https://web.telegram.org/). 10 | 11 | ### 2. Open Developer Tools 12 | 13 | - Press `F12` on your keyboard or right-click on the page and select `Inspect`. 14 | - Alternatively, you can access it through your browser’s menu: `More tools > Developer tools`. 15 | 16 | ### 3. Go to the 'Application' Tab 17 | 18 | - In the Developer Tools, find and click on the `Application` tab at the top. 19 | 20 | ### 4. Start the Bot 21 | 22 | - Interact with your bot to initiate a session. This usually involves sending a command like `/start` to the bot. 23 | 24 | ### 5. Access the Session Storage 25 | 26 | - In the `Application` tab, locate the `Storage` section on the left-hand side. 27 | - Click on `Session Storage` and select the Web Telegram entry. 28 | 29 | ### 6. Locate the `query_id` 30 | 31 | - Look for an entry related to `query_id` in the session storage list. 32 | - Check for keys or values that contain `query` or similar terms. Refer to the screenshot you provided for more details. 33 | 34 | ### 7. Create and Fill `query.txt` 35 | 36 | - Open your preferred text editor. 37 | - Create a new file named `query.txt`. 38 | - Copy the `query_id` you found in step 6 and paste it into this file. 39 | - Save the file. 40 | 41 | ### Example `query.txt` File 42 | 43 | ```txt 44 | query_id=AAFp24QjBBBBBBBGnbhCMPl2ic&user=%7B%22id%22%3A595123123%2C%22first_name%22%3A%22TTest%22%2C%22last_name%22%3A%22%22%2C%22username%22%3A%22mu_user_name%22%2C%22language_code%22%3A%22en%22%2C%22allows_write_to_pm%22%3Atrue%7D&auth_date=1720004644&hash=17254717cee123123123e789cfac828062123123123fc3df090f8cc6609c3e 45 | ```` 46 | ![alt text](.github/images/query_id.png) 47 | -------------------------------------------------------------------------------- /timefarm/main.go: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | import ( 4 | "fmt" 5 | "github.com/go-resty/resty/v2" 6 | "github.com/spf13/viper" 7 | "time" 8 | "timefarm/constant" 9 | ) 10 | 11 | func main() { 12 | viper.SetConfigFile("./conf.toml") 13 | err := viper.ReadInConfig() // Find and read the config file 14 | if err != nil { // Handle errors reading the config file 15 | panic(fmt.Errorf("fatal error config file: %w", err)) 16 | } 17 | 18 | tokens := viper.GetStringSlice("data.tokens") 19 | proxies := viper.GetStringSlice("proxies.data") 20 | 21 | for i, token := range tokens { 22 | proxy := proxies[i%len(proxies)] 23 | 24 | go collect(token, proxy) 25 | } 26 | 27 | select {} 28 | 29 | } 30 | 31 | func collect(query string, proxy string) { 32 | client := resty.New() 33 | for { 34 | //var authResponse request.AuthResponse 35 | //res, err := client. 36 | // SetProxy(proxy). 37 | // R(). 38 | // SetBody(request.ValidateInitRequest{InitData: query, Platform: "android"}). 39 | // SetResult(&authResponse). 40 | // Post(constant.AuthAPI) 41 | //if err != nil { 42 | // fmt.Println("Get auth err: ", err) 43 | // time.Sleep(5 * time.Minute) 44 | // go collect(query, proxy) 45 | // return 46 | //} 47 | //fmt.Println(res) 48 | //token := authResponse.Token 49 | token := query 50 | res, err := client. 51 | SetProxy(proxy). 52 | R(). 53 | SetAuthToken(token). 54 | SetBody(`{}`). 55 | Post(constant.FinishAPI) 56 | if err != nil { 57 | fmt.Println("Finish api err: ", err) 58 | time.Sleep(5 * time.Minute) 59 | continue 60 | } 61 | fmt.Println("Finish api", res) 62 | 63 | res, err = client. 64 | SetProxy(proxy). 65 | R(). 66 | SetAuthToken(token). 67 | SetBody(`{}`). 68 | Post(constant.StartAPI) 69 | if err != nil { 70 | fmt.Println("Start api err: ", err) 71 | time.Sleep(5 * time.Minute) 72 | go collect(query, proxy) 73 | return 74 | } 75 | fmt.Println("Start api", res) 76 | time.Sleep(4*time.Hour + 10*time.Minute) 77 | } 78 | 79 | } 80 | -------------------------------------------------------------------------------- /tomarket/request/response.go: -------------------------------------------------------------------------------- 1 | package request 2 | 3 | type LoginResponse struct { 4 | Status int `json:"status"` 5 | Message string `json:"message"` 6 | Data LoginData `json:"data"` 7 | } 8 | type LoginData struct { 9 | TelID string `json:"tel_id"` 10 | ID int `json:"id"` 11 | Fn string `json:"fn"` 12 | Ln string `json:"ln"` 13 | AccessToken string `json:"access_token"` 14 | PhotoURL string `json:"photo_url"` 15 | IsKol int `json:"is_kol"` 16 | } 17 | type GetBalanceResponse struct { 18 | Status int `json:"status"` 19 | Message string `json:"message"` 20 | Data GetBalanceData `json:"data"` 21 | } 22 | type Farming struct { 23 | GameID string `json:"game_id"` 24 | RoundID string `json:"round_id"` 25 | UserID int `json:"user_id"` 26 | StartAt int `json:"start_at"` 27 | EndAt int `json:"end_at"` 28 | LastClaim int `json:"last_claim"` 29 | Points interface{} `json:"points"` 30 | } 31 | type Daily struct { 32 | RoundID string `json:"round_id"` 33 | UserID int `json:"user_id"` 34 | StartAt int `json:"start_at"` 35 | LastCheckTs int `json:"last_check_ts"` 36 | LastCheckYmd int `json:"last_check_ymd"` 37 | NextCheckTs int `json:"next_check_ts"` 38 | CheckCounter int `json:"check_counter"` 39 | TodayPoints interface{} `json:"today_points"` 40 | TodayGame int `json:"today_game"` 41 | } 42 | type GetBalanceData struct { 43 | AvailableBalance interface{} `json:"available_balance"` 44 | PlayPasses int `json:"play_passes"` 45 | Timestamp int `json:"timestamp"` 46 | Farming *Farming `json:"farming"` 47 | Daily *Daily `json:"daily"` 48 | } 49 | 50 | type PlayGameResponse struct { 51 | Status int `json:"status"` 52 | Message string `json:"message"` 53 | Data PlayGameData `json:"data"` 54 | } 55 | type PlayGameData struct { 56 | RoundID string `json:"round_id"` 57 | GameID string `json:"game_id"` 58 | UserID int `json:"user_id"` 59 | StartAt int `json:"start_at"` 60 | EndAt int `json:"end_at"` 61 | } 62 | -------------------------------------------------------------------------------- /timefarm/upgrade/main.go: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | import ( 4 | "fmt" 5 | "github.com/go-resty/resty/v2" 6 | "github.com/spf13/viper" 7 | "timefarm/constant" 8 | "timefarm/request" 9 | ) 10 | 11 | func main() { 12 | viper.SetConfigFile("../conf.toml") 13 | err := viper.ReadInConfig() // Find and read the config file 14 | if err != nil { // Handle errors reading the config file 15 | panic(fmt.Errorf("fatal error config file: %w", err)) 16 | } 17 | 18 | tokens := viper.GetStringSlice("data.tokens") 19 | proxies := viper.GetStringSlice("proxies.data") 20 | checkTask(tokens, proxies) 21 | 22 | } 23 | 24 | func checkTask(queries, proxies []string) { 25 | 26 | for i, query := range queries { 27 | proxy := proxies[i%len(proxies)] 28 | 29 | client := resty.New().SetProxy(proxy) 30 | 31 | //var authResponse request.AuthResponse 32 | //res, err := client. 33 | // SetProxy(proxy). 34 | // R(). 35 | // SetBody(query). 36 | // SetResult(&authResponse). 37 | // Post(constant.AuthAPI) 38 | //if err != nil { 39 | // fmt.Println("Account idx:", i, "Get auth err: ", err) 40 | // continue 41 | //} 42 | 43 | token := query 44 | // Daily 45 | //res, err := client. 46 | // R(). 47 | // SetAuthToken(token). 48 | // SetBody(request.DailyAnswer{Answer: "13/3/2024"}). 49 | // Post(constant.DailyQuestionAPI) 50 | //if err != nil { 51 | // fmt.Println("Account idx:", i, "Daily task err: ", err) 52 | //} 53 | //fmt.Println("Account idx:", i, "Daily res", res) 54 | // Auto job 55 | var tasks request.Task 56 | 57 | res, err := client. 58 | R(). 59 | SetAuthToken(token). 60 | SetBody(`{}`). 61 | SetResult(&tasks). 62 | Get(constant.GetTaskAPI) 63 | if err != nil { 64 | fmt.Println("Get task err: ", err) 65 | } 66 | 67 | for _, task := range tasks { 68 | if task.Submission == nil { 69 | res, err = client. 70 | R(). 71 | SetAuthToken(token). 72 | SetBody(`{}`). 73 | SetResult(&tasks). 74 | Post(fmt.Sprintf(constant.SubmitTaskAPI, task.ID)) 75 | if err != nil { 76 | fmt.Println("Get task err: ", err) 77 | } 78 | fmt.Println("Account idx", i, "finish: ", task.ID, res) 79 | } else if task.Submission.Status == constant.TaskStatusComplete { 80 | res, err = client. 81 | R(). 82 | SetAuthToken(token). 83 | SetBody(`{}`). 84 | SetResult(&tasks). 85 | Post(fmt.Sprintf(constant.ClaimTaskAPI, task.ID)) 86 | fmt.Println("Account idx", i, "claim: ", task.ID, res) 87 | 88 | } 89 | } 90 | 91 | res, err = client. 92 | R(). 93 | SetAuthToken(token). 94 | SetBody(`{}`). 95 | SetResult(&tasks). 96 | Post(fmt.Sprintf(constant.UpgradeTimeAPI)) 97 | fmt.Println("Account idx", i, "try to upgrade time: ", res) 98 | } 99 | } 100 | -------------------------------------------------------------------------------- /conet-network/create-wallet/main.go: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | import ( 4 | "encoding/json" 5 | "fmt" 6 | "github.com/go-rod/rod" 7 | "github.com/go-rod/rod/lib/launcher" 8 | "github.com/go-rod/rod/lib/proto" 9 | "github.com/google/uuid" 10 | "github.com/spf13/viper" 11 | "go.uber.org/zap" 12 | "go.uber.org/zap/zapcore" 13 | "log" 14 | "net/url" 15 | "os" 16 | "strings" 17 | "time" 18 | ) 19 | 20 | var logger *zap.Logger 21 | 22 | func main() { 23 | config := zap.NewDevelopmentConfig() 24 | config.EncoderConfig.EncodeLevel = zapcore.CapitalColorLevelEncoder 25 | logger, _ = config.Build() 26 | 27 | viper.SetConfigFile("./conf.toml") 28 | err := viper.ReadInConfig() // Find and read the config file 29 | if err != nil { // Handle errors reading the config file 30 | panic(fmt.Errorf("fatal error config file: %w", err)) 31 | } 32 | 33 | proxies := viper.GetStringSlice("data.proxies") 34 | secrets := make([]string, 0) 35 | 36 | for i := 16; i < 32; i++ { 37 | // Create a launcher with options 38 | path, _ := launcher.LookPath() 39 | logger.Info("Found path", zap.Any("path", path)) 40 | 41 | parsedUrl, _ := url.Parse(proxies[i]) 42 | launcher := launcher.New().Bin(path). 43 | Proxy(fmt.Sprintf("http://%v", parsedUrl.Host)). 44 | Headless(true) // Ensure it's set to false for visible UI 45 | 46 | // Launch a browser instance 47 | browser := rod.New().ControlURL(launcher.MustLaunch()).MustConnect() 48 | proxyPass, _ := parsedUrl.User.Password() 49 | 50 | page, _ := browser.Page(proto.TargetCreateTarget{URL: "https://ifconfig.co"}) 51 | go browser.MustHandleAuth(parsedUrl.User.Username(), proxyPass)() 52 | 53 | time.Sleep(3 * time.Second) 54 | 55 | // Navigate to the desired URL 56 | page = browser.MustPage("https://beta1.conet.network/?referral=0x4b53b6f0eb489a90b2a13b8515d63ccc6cf2b267") 57 | 58 | // Wait for the page to load completely 59 | page.MustWaitLoad() 60 | 61 | // Wait for the element to be ready and click it 62 | element := page.MustElement(".sc-gjLLEI.izZANN") // CSS selector for the element 63 | element.MustWaitLoad().MustClick() 64 | 65 | inputElements := page.MustElements("input") 66 | for _, inputElement := range inputElements { 67 | err := inputElement.Focus() 68 | if err != nil { 69 | log.Fatalf("Failed to focus on input element: %v", err) 70 | } 71 | err = inputElement.Input("14101993aA!") 72 | } 73 | 74 | btn := page.MustElement(".sc-gjLLEI.izZANN") 75 | btn.MustClick() 76 | 77 | time.Sleep(10 * time.Second) 78 | 79 | page.MustWaitLoad() 80 | 81 | secret := make([]string, 0) 82 | inputElements = page.MustElements("div.css-1s8bwid p") 83 | for _, inputElement := range inputElements { 84 | txt := inputElement.MustText() 85 | secret = append(secret, txt) 86 | } 87 | 88 | secrets = append(secrets, strings.Join(secret, " ")) 89 | // Ensure the browser is closed at the end 90 | browser.MustClose() 91 | 92 | } 93 | 94 | res, _ := json.Marshal(secrets) 95 | if err := os.WriteFile(fmt.Sprintf("%v.txt", uuid.New().String()), res, 0666); err != nil { 96 | log.Fatal(err) 97 | } 98 | 99 | } 100 | -------------------------------------------------------------------------------- /conet-network/main.go: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | import ( 4 | "fmt" 5 | "github.com/go-rod/rod" 6 | "github.com/go-rod/rod/lib/launcher" 7 | "github.com/go-rod/rod/lib/proto" 8 | "github.com/spf13/viper" 9 | "go.uber.org/zap" 10 | "go.uber.org/zap/zapcore" 11 | "log" 12 | "net/url" 13 | "strings" 14 | "time" 15 | ) 16 | 17 | var logger *zap.Logger 18 | 19 | func main() { 20 | config := zap.NewDevelopmentConfig() 21 | config.EncoderConfig.EncodeLevel = zapcore.CapitalColorLevelEncoder 22 | logger, _ = config.Build() 23 | 24 | viper.SetConfigFile("./conf.toml") 25 | err := viper.ReadInConfig() // Find and read the config file 26 | if err != nil { // Handle errors reading the config file 27 | panic(fmt.Errorf("fatal error config file: %w", err)) 28 | } 29 | 30 | wallets := viper.GetStringSlice("data.wallets") 31 | proxies := viper.GetStringSlice("data.proxies") 32 | password := viper.GetString("data.password") 33 | 34 | for i, wallet := range wallets { 35 | go mine(wallet, proxies[i%len(proxies)], password, i) 36 | } 37 | 38 | select {} 39 | } 40 | 41 | func mine(wallet, proxy, password string, idx int) { 42 | // Create a launcher with options 43 | path, _ := launcher.LookPath() 44 | logger.Info(fmt.Sprintf("Wallet %v Found path", idx), zap.Any("path", path)) 45 | 46 | parsedUrl, _ := url.Parse(proxy) 47 | launcher := launcher.New().Bin(path). 48 | Headless(false) // Ensure it's set to false for visible UI 49 | if proxy != "" { 50 | launcher = launcher.Proxy(fmt.Sprintf("http://%v", parsedUrl.Host)) 51 | 52 | } 53 | 54 | // Launch a browser instance 55 | browser := rod.New().ControlURL(launcher.MustLaunch()).MustConnect() 56 | 57 | // Ensure the browser is closed at the end 58 | defer browser.MustClose() 59 | 60 | page, err := browser.Page(proto.TargetCreateTarget{URL: "https://ifconfig.co"}) 61 | if proxy != "" { 62 | proxyPass, _ := parsedUrl.User.Password() 63 | go browser.MustHandleAuth(parsedUrl.User.Username(), proxyPass)() 64 | } 65 | 66 | time.Sleep(3 * time.Second) 67 | 68 | // Navigate to the desired URL 69 | page = browser.MustPage("https://beta1.conet.network/") 70 | 71 | // Wait for the page to load completely 72 | page.MustWaitLoad() 73 | 74 | // Wait for the element to be ready and click it 75 | element := page.MustElement(".sc-kMzELR.cTRjnV") // CSS selector for the element 76 | element.MustWaitLoad().MustClick() 77 | 78 | page.MustWaitLoad() 79 | 80 | // Find the first input element (adjust the CSS selector as needed) 81 | inputElements := page.MustElements("input") 82 | keywords := strings.Split(wallet, " ") 83 | i := 0 84 | for i = 0; i < len(keywords); i++ { 85 | inputElement := inputElements[i] 86 | // Focus on the input element 87 | err := inputElement.Focus() 88 | if err != nil { 89 | log.Fatalf("Failed to focus on input element: %v", err) 90 | } 91 | err = inputElement.Input(keywords[i]) 92 | if err != nil { 93 | log.Fatalf("Failed to paste text into input element: %v", err) 94 | } 95 | } 96 | 97 | for ; i < len(inputElements); i++ { 98 | inputElement := inputElements[i] 99 | err := inputElement.Focus() 100 | if err != nil { 101 | log.Fatalf("Failed to focus on input element: %v", err) 102 | } 103 | err = inputElement.Input(password) 104 | if err != nil { 105 | log.Fatalf("Failed to paste text into input element: %v", err) 106 | } 107 | } 108 | 109 | // Find the button element using its CSS selector 110 | button := page.MustElement(`button.sc-gjLLEI.izZANN div.sc-eAKtBH.dedKAL`) 111 | 112 | // Click the button 113 | button.MustClick() 114 | 115 | time.Sleep(5 * time.Second) 116 | // Wait for the page to load completely 117 | page.MustWaitLoad() 118 | 119 | // Confirm password 120 | inputElement := page.MustElement("input") 121 | err = inputElement.Focus() 122 | if err != nil { 123 | log.Fatalf("Failed to focus on input element: %v", err) 124 | } 125 | err = inputElement.Input(password) 126 | if err != nil { 127 | log.Fatalf("Failed to paste text into input element: %v", err) 128 | } 129 | 130 | // Find the button element using its CSS selector 131 | button = page.MustElement(`button.sc-gjLLEI.izZANN div.sc-eAKtBH.dedKAL`) 132 | 133 | // Click the button 134 | button.MustClick() 135 | 136 | time.Sleep(5 * time.Second) 137 | // Wait for the page to load completely 138 | page.MustWaitLoad() 139 | 140 | // Find the button element using its CSS selector 141 | button = page.MustElement(`input.css-1m9pwf3`) 142 | // Click the button 143 | button.MustClick() 144 | 145 | button = page.MustElement(`div.sc-dQmiwx.jyJvBb`) 146 | 147 | // Click the button 148 | button.MustClick() 149 | logger.Info(fmt.Sprintf("Wallet %v start mining", idx)) 150 | 151 | for { 152 | time.Sleep(2 * time.Minute) 153 | 154 | workerId := strings.ToLower(page.MustElement(".css-15vhhhd .css-k7gw1t").MustText()) 155 | if strings.Contains(workerId, "calculating") { 156 | logger.Info(fmt.Sprintf("Wallet %v : waits too long. Restarting", idx)) 157 | 158 | go mine(wallet, proxy, password, idx) 159 | return 160 | } 161 | logger.Info(fmt.Sprintf("Wallet %v : worker: %v ", idx, workerId)) 162 | 163 | balance := page.MustElement("div.sc-hABBmJ.kdGLpR > p:nth-of-type(2)") 164 | 165 | // Get the text content of the element 166 | cnptNumber := balance.MustText() 167 | logger.Info(fmt.Sprintf("Wallet %v : current balance %v ", idx, cnptNumber)) 168 | 169 | } 170 | } 171 | -------------------------------------------------------------------------------- /tomarket/main.go: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | import ( 4 | "encoding/json" 5 | "fmt" 6 | "github.com/go-resty/resty/v2" 7 | "github.com/sirupsen/logrus" 8 | "github.com/spf13/viper" 9 | "math/rand" 10 | "net/url" 11 | "os" 12 | "time" 13 | "tomarket/constant" 14 | "tomarket/request" 15 | ) 16 | 17 | // Create a new logger instance 18 | var log = logrus.New() 19 | 20 | func main() { 21 | 22 | // Set the output to standard output 23 | log.Out = os.Stdout 24 | 25 | // Set the log level to info 26 | log.SetLevel(logrus.InfoLevel) 27 | 28 | // Enable colored output 29 | log.SetFormatter(&logrus.TextFormatter{ 30 | ForceColors: true, 31 | FullTimestamp: true, 32 | }) 33 | 34 | viper.SetConfigFile("./conf.toml") 35 | err := viper.ReadInConfig() // Find and read the config file 36 | if err != nil { // Handle errors reading the config file 37 | panic(fmt.Errorf("fatal error config file: %w", err)) 38 | } 39 | 40 | tokens := viper.GetStringSlice("auth.tokens") 41 | proxies := viper.GetStringSlice("proxies.data") 42 | farmId := viper.GetString("auth.farm_id") 43 | gameId := viper.GetString("auth.game_id") 44 | claimId := viper.GetString("auth.check_in") 45 | 46 | isProxyMode := len(proxies) == 0 47 | for i, token := range tokens { 48 | proxy := "" 49 | if isProxyMode { 50 | proxy = proxies[i%len(proxies)] 51 | } 52 | go claim(token, proxy, farmId, gameId, claimId) 53 | 54 | } 55 | select {} 56 | } 57 | 58 | func claim(query, proxy, farmId, gameId, checkinId string) { 59 | client := resty.New() 60 | if proxy != "" { 61 | client.SetProxy(proxy) 62 | } 63 | 64 | params, err := url.ParseQuery(query) 65 | if err != nil { 66 | fmt.Println("Error parsing query:", err) 67 | return 68 | } 69 | 70 | // Get the value of the "user" parameter 71 | userParam := params.Get("user") 72 | 73 | // URL-decode the user parameter value 74 | userDecoded, err := url.QueryUnescape(userParam) 75 | if err != nil { 76 | fmt.Println("Error decoding user parameter:", err) 77 | return 78 | } 79 | 80 | // Parse the JSON string 81 | var user request.QueryData 82 | err = json.Unmarshal([]byte(userDecoded), &user) 83 | if err != nil { 84 | fmt.Println("Error parsing user JSON:", err) 85 | return 86 | } 87 | userId := user.ID 88 | //lastClaimDaily := time.Now() 89 | 90 | for { 91 | 92 | var loginResponse request.LoginResponse 93 | 94 | resp, err := client.R(). 95 | SetBody(request.LoginRequest{InitData: query}). 96 | SetResult(&loginResponse). 97 | Post(constant.LoginURL) 98 | // Check for errors 99 | if err != nil { 100 | log.Errorln("Get auth for userId: %v : %v", userId, err) 101 | log.Infoln("Retry %v after 5 min", userId) 102 | time.Sleep(5 * time.Minute) 103 | continue 104 | } 105 | token := loginResponse.Data.AccessToken 106 | 107 | var balanceResponse request.GetBalanceResponse 108 | 109 | resp, err = client.R(). 110 | SetHeader("Authorization", token). 111 | SetResult(&balanceResponse). 112 | Post(constant.GetBalanceURL) 113 | // Check for errors 114 | if err != nil { 115 | log.Errorln("Get balance error: %v : %v", userId, err) 116 | log.Infoln("Retry %v after 5 min", userId) 117 | time.Sleep(5 * time.Minute) 118 | continue 119 | } 120 | 121 | resp, err = client.R(). 122 | SetHeader("Authorization", token). 123 | SetBody(request.ClaimRequest{GameID: checkinId}). 124 | Post(constant.DailyClaimURL) 125 | // Check for errors 126 | if err != nil { 127 | log.Errorln("Claim daily %v error : %v", userId, err) 128 | time.Sleep(5 * time.Minute) 129 | continue 130 | } 131 | log.Infoln("Claim daily ", userId, "res", resp) 132 | 133 | if balanceResponse.Data.Farming != nil { 134 | resp, err = client.R(). 135 | SetHeader("Authorization", token). 136 | SetBody(request.ClaimRequest{GameID: farmId}). 137 | Post(constant.ClaimMiningURL) 138 | // Check for errors 139 | if err != nil { 140 | log.Errorln("Claim mining %v error : %v", userId, err) 141 | time.Sleep(5 * time.Minute) 142 | continue 143 | } 144 | log.Infoln("Claim mining ", userId, "res", resp) 145 | 146 | resp, err = client.R(). 147 | SetHeader("Authorization", token). 148 | SetBody(request.ClaimRequest{GameID: farmId}). 149 | Post(constant.StartMiningURL) 150 | // Check for errors 151 | if err != nil { 152 | log.Errorln("Start mining %v error : %v", userId, err) 153 | time.Sleep(5 * time.Minute) 154 | continue 155 | } 156 | log.Infoln("Start mining userId ", userId, "res", resp) 157 | } else { 158 | resp, err = client.R(). 159 | SetHeader("Authorization", token). 160 | SetBody(request.ClaimRequest{GameID: farmId}). 161 | Post(constant.StartMiningURL) 162 | // Check for errors 163 | if err != nil { 164 | log.Errorln("Start mining %v error : %v", userId, err) 165 | time.Sleep(5 * time.Minute) 166 | continue 167 | } 168 | log.Infoln("Start mining userId ", userId, "res", resp) 169 | } 170 | 171 | if balanceResponse.Data.PlayPasses > 0 { 172 | // Start game 173 | var playGameResponse request.PlayGameResponse 174 | res, err := client.R(). 175 | SetHeader("Authorization", token). 176 | SetBody(request.ClaimRequest{GameID: gameId}). 177 | SetResult(&playGameResponse). 178 | Post(constant.PlayGameURL) 179 | log.Infoln("Start game userId res", userId, " : ", res) 180 | 181 | // Check for errors 182 | if err != nil { 183 | log.Errorln("Play game %v error: %v", userId, err) 184 | time.Sleep(5 * time.Minute) 185 | continue 186 | } 187 | 188 | duration := playGameResponse.Data.EndAt - playGameResponse.Data.StartAt 189 | log.Infoln("UserId ", userId, " Wait ", time.Duration(duration)*time.Second, "seconds for finishing stupid game") 190 | time.Sleep(time.Duration(duration) * time.Second) 191 | 192 | // Convert the duration to time.Duration (in nanoseconds) 193 | rand.Seed(time.Now().UnixNano()) 194 | 195 | // Generate a random duration between 500 and 1000 milliseconds 196 | min := 550 197 | max := 650 198 | points := rand.Intn(max-min+1) + min 199 | resp, err = client.R(). 200 | SetHeader("Authorization", token). 201 | SetBody(request.ClaimRequest{GameID: gameId, Points: points}). 202 | Post(constant.EndGameURL) 203 | // Check for errors 204 | if err != nil { 205 | log.Errorln("End game userId %v error: : %v", userId, err) 206 | time.Sleep(5 * time.Minute) 207 | continue 208 | } 209 | // Print the sleep duration 210 | log.Infoln("UserId", userId, "claim game", resp) 211 | 212 | } 213 | log.Infoln("UserId ", userId, "sleep 10m") 214 | time.Sleep(10 * time.Minute) 215 | 216 | } 217 | 218 | } 219 | -------------------------------------------------------------------------------- /oasis/main.go: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | import ( 4 | "bufio" 5 | "encoding/base64" 6 | "encoding/json" 7 | "fmt" 8 | "github.com/gorilla/websocket" 9 | "github.com/mattn/go-colorable" 10 | "github.com/spf13/viper" 11 | "go.uber.org/zap" 12 | "go.uber.org/zap/zapcore" 13 | "log" 14 | "net" 15 | "net/http" 16 | "net/url" 17 | "oasis/constant" 18 | "oasis/request" 19 | "sync" 20 | "time" 21 | ) 22 | 23 | var lock struct { 24 | sync.Mutex // <-- this mutex protects 25 | } 26 | 27 | var logger *zap.Logger 28 | 29 | func main() { 30 | config := zap.NewDevelopmentEncoderConfig() 31 | config.EncodeLevel = zapcore.CapitalColorLevelEncoder 32 | logger = zap.New(zapcore.NewCore( 33 | zapcore.NewConsoleEncoder(config), 34 | zapcore.AddSync(colorable.NewColorableStdout()), 35 | zapcore.DebugLevel, 36 | )) 37 | 38 | viper.SetConfigFile("./conf.toml") 39 | err := viper.ReadInConfig() // Find and read the config file 40 | if err != nil { // Handle errors reading the config file 41 | panic(fmt.Errorf("fatal error config file: %w", err)) 42 | } 43 | 44 | token := viper.GetString("data.token") 45 | proxies := viper.GetStringSlice("data.proxies") 46 | 47 | for _, proxyURL := range proxies { 48 | //pingNetworkDevice(token, proxyURL) 49 | 50 | go connectSocket(token, proxyURL) 51 | } 52 | 53 | select {} 54 | 55 | } 56 | 57 | func connectSocket(token string, proxyURL string) { 58 | var c *websocket.Conn 59 | 60 | if proxyURL != "" { 61 | proxy, err := url.Parse(proxyURL) 62 | if err != nil { 63 | panic(err) 64 | } 65 | 66 | ws, err := url.Parse(constant.BASE_WSS) 67 | if err != nil { 68 | panic(err) 69 | } 70 | 71 | conn, err := net.Dial("tcp", proxy.Host) 72 | if err != nil { 73 | logger.Info("Dial error", zap.Error(err)) 74 | logger.Info(" Reconnecting after a minute") 75 | time.Sleep(1 * time.Minute) 76 | go connectSocket(token, proxyURL) 77 | return 78 | } 79 | defer conn.Close() 80 | 81 | connectReq := &http.Request{ 82 | Method: http.MethodConnect, 83 | URL: proxy, 84 | Host: ws.Host, 85 | Header: make(http.Header), 86 | } 87 | connectReq.Header.Set("Proxy-Connection", "keep-alive") 88 | 89 | pass, _ := proxy.User.Password() 90 | 91 | auth := proxy.User.Username() + ":" + pass 92 | basicAuth := "Basic " + base64.StdEncoding.EncodeToString([]byte(auth)) 93 | connectReq.Header.Set("Proxy-Authorization", basicAuth) 94 | 95 | err = connectReq.Write(conn) 96 | if err != nil { 97 | logger.Info("Write connect error", zap.Error(err)) 98 | logger.Info(" Reconnecting after a minute") 99 | time.Sleep(1 * time.Minute) 100 | go connectSocket(token, proxyURL) 101 | return 102 | } 103 | 104 | resp, err := http.ReadResponse(bufio.NewReader(conn), connectReq) 105 | if err != nil { 106 | logger.Info("Read response err", zap.Error(err)) 107 | logger.Info(" Reconnecting after a minute") 108 | time.Sleep(1 * time.Minute) 109 | go connectSocket(token, proxyURL) 110 | return 111 | } 112 | if resp.StatusCode != http.StatusOK { 113 | logger.Info("Proxy CONNECT failed with status:", zap.Any("status", resp.Status)) 114 | logger.Info(" Reconnecting after a minute") 115 | time.Sleep(1 * time.Minute) 116 | go connectSocket(token, proxyURL) 117 | return 118 | } 119 | 120 | // Use the resulting connection as a WebSocket connection 121 | wsCon, resp, err := websocket.NewClient(conn, ws, nil, 1024, 1024) 122 | if err != nil { 123 | log.Printf("Init ws failed with status %d", resp.StatusCode) 124 | logger.Info("dial:", zap.Error(err)) 125 | logger.Info(" Reconnecting after a minute") 126 | time.Sleep(1 * time.Minute) 127 | go connectSocket(token, proxyURL) 128 | return 129 | } 130 | c = wsCon 131 | } else { 132 | sv := fmt.Sprintf(constant.BASE_WSS, token) 133 | wsCon, resp, err := websocket.DefaultDialer.Dial(sv, nil) 134 | if err != nil { 135 | log.Printf("Init ws failed with status %d", resp.StatusCode) 136 | logger.Info("dial:", zap.Error(err)) 137 | logger.Info(" Reconnecting after a minute") 138 | time.Sleep(1 * time.Minute) 139 | go connectSocket(token, proxyURL) 140 | return 141 | } 142 | c = wsCon 143 | } 144 | 145 | defer c.Close() 146 | 147 | heartbeatTicker := time.NewTicker(time.Minute) 148 | metricsTicker := time.NewTicker(2 * time.Minute) 149 | errorChan := make(chan bool) 150 | go func() { 151 | for { 152 | select { 153 | case <-heartbeatTicker.C: 154 | err := sendHeartbeat(c) 155 | if err != nil { 156 | errorChan <- true 157 | return 158 | } 159 | case <-metricsTicker.C: 160 | 161 | err := sendMetrics(c) 162 | if err != nil { 163 | errorChan <- true 164 | return 165 | 166 | } 167 | 168 | } 169 | } 170 | }() 171 | 172 | <-errorChan 173 | logger.Info("Error. Retrying after a min") 174 | time.Sleep(1 * time.Minute) 175 | go connectSocket(token, proxyURL) 176 | } 177 | 178 | func sendMetrics(c *websocket.Conn) error { 179 | tmp := request.WsRequest{ 180 | Type: "settings", 181 | Data: `{"type":"settings","data":{"mostRecentModel":"todo","userSettings":{"schedule":{"mode":"all","days":["monday","tuesday","wednesday","thursday","friday"],"startTime":"10:00","stopTime":"16:00","usage":"maximum"},"enabledModels":[]},"systemInfo":{"cpuInfo":{"archName":"x86_64","features":["mmx","sse","sse2","sse3","ssse3","sse4_1","sse4_2","avx"],"modelName":"11th Gen Intel(R) Core(TM) i5-1135G7 @ 2.40GHz","numOfProcessors":8,"processors":[{"usage":{"idle":14164178593750,"kernel":273043437500,"total":14649615781250,"user":212393750000}},{"usage":{"idle":14236624375000,"kernel":217418593750,"total":14649614218750,"user":195571250000}},{"usage":{"idle":13845941406250,"kernel":363910937500,"total":14649614218750,"user":439761875000}},{"usage":{"idle":13938280468750,"kernel":308302031250,"total":14649614218750,"user":403031718750}},{"usage":{"idle":14032352812500,"kernel":301410468750,"total":14649614218750,"user":315850937500}},{"usage":{"idle":14094232968750,"kernel":253281250000,"total":14649614062500,"user":302099843750}},{"usage":{"idle":13931273750000,"kernel":328632187500,"total":14649614062500,"user":389708125000}},{"usage":{"idle":14005404687500,"kernel":274691718750,"total":14649614062500,"user":369517656250}}],"temperatures":[]},"memoryInfo":{"availableCapacity":873607168,"capacity":8375296000},"gpuInfo":{"vendor":"Google Inc. (Intel)","renderer":"ANGLE (Intel, Intel(R) Iris(R) Xe Graphics (0x00009A49) Direct3D11 vs_5_0 ps_5_0, D3D11)"}},"extensionVersion":"0.1.0","chromeVersion":"126"}}`, 182 | } 183 | return writeSocketMessage(c, tmp) 184 | } 185 | 186 | func sendHeartbeat(c *websocket.Conn) error { 187 | tmp := request.WsRequest{ 188 | Type: "heartbeat", 189 | Data: request.HeartbeatData{Status: "active"}, 190 | } 191 | return writeSocketMessage(c, tmp) 192 | } 193 | 194 | func writeSocketMessage(c *websocket.Conn, msg interface{}) error { 195 | lock.Lock() 196 | defer lock.Unlock() 197 | body, _ := json.Marshal(msg) 198 | logger.Info(string(body)) 199 | err := c.WriteMessage(websocket.TextMessage, body) 200 | return err 201 | } 202 | -------------------------------------------------------------------------------- /nodepay/main.go: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | import ( 4 | "bufio" 5 | "encoding/base64" 6 | "encoding/json" 7 | "fmt" 8 | "github.com/go-resty/resty/v2" 9 | "github.com/google/uuid" 10 | "github.com/gorilla/websocket" 11 | "github.com/spf13/cast" 12 | "github.com/spf13/viper" 13 | "log" 14 | "net" 15 | "net/http" 16 | "net/url" 17 | "nodepay/constant" 18 | "nodepay/request" 19 | "time" 20 | ) 21 | 22 | func main() { 23 | viper.SetConfigFile("./conf.toml") 24 | err := viper.ReadInConfig() // Find and read the config file 25 | if err != nil { // Handle errors reading the config file 26 | panic(fmt.Errorf("fatal error config file: %w", err)) 27 | } 28 | 29 | token := viper.GetString("data.token") 30 | proxies := viper.GetStringSlice("data.proxies") 31 | 32 | for _, proxyURL := range proxies { 33 | go pingNetworkDevice(token, proxyURL) 34 | 35 | //go connectSocket(token, proxyURL) 36 | } 37 | 38 | select {} 39 | 40 | } 41 | 42 | func connectSocket(token string, proxyURL string) { 43 | client := resty.New() 44 | if proxyURL != "" { 45 | client.SetProxy(proxyURL) 46 | } 47 | var authSessionResponse *request.AuthSessionResponse 48 | 49 | _, err := client.R(). 50 | SetResult(&authSessionResponse). 51 | SetAuthToken(token). 52 | Post(fmt.Sprintf("%v/auth/session", constant.BASE_URL)) 53 | if err != nil { 54 | fmt.Println("Auth session err", err) 55 | log.Println(" Reconnecting after a minute") 56 | time.Sleep(1 * time.Minute) 57 | go connectSocket(token, proxyURL) 58 | return 59 | } 60 | 61 | var c *websocket.Conn 62 | 63 | if proxyURL != "" { 64 | proxy, err := url.Parse(proxyURL) 65 | if err != nil { 66 | panic(err) 67 | } 68 | 69 | ws, err := url.Parse(constant.BASE_WSS) 70 | if err != nil { 71 | panic(err) 72 | } 73 | 74 | conn, err := net.Dial("tcp", proxy.Host) 75 | if err != nil { 76 | fmt.Println("Dial error", err) 77 | log.Println(" Reconnecting after a minute") 78 | time.Sleep(1 * time.Minute) 79 | go connectSocket(token, proxyURL) 80 | return 81 | } 82 | defer conn.Close() 83 | 84 | connectReq := &http.Request{ 85 | Method: http.MethodConnect, 86 | URL: proxy, 87 | Host: ws.Host, 88 | Header: make(http.Header), 89 | } 90 | connectReq.Header.Set("Proxy-Connection", "keep-alive") 91 | 92 | pass, _ := proxy.User.Password() 93 | 94 | auth := proxy.User.Username() + ":" + pass 95 | basicAuth := "Basic " + base64.StdEncoding.EncodeToString([]byte(auth)) 96 | connectReq.Header.Set("Proxy-Authorization", basicAuth) 97 | 98 | err = connectReq.Write(conn) 99 | if err != nil { 100 | fmt.Println("Write connect error", err) 101 | log.Println(" Reconnecting after a minute") 102 | time.Sleep(1 * time.Minute) 103 | go connectSocket(token, proxyURL) 104 | return 105 | } 106 | 107 | resp, err := http.ReadResponse(bufio.NewReader(conn), connectReq) 108 | if err != nil { 109 | fmt.Println("Read response err", err) 110 | log.Println(" Reconnecting after a minute") 111 | time.Sleep(1 * time.Minute) 112 | go connectSocket(token, proxyURL) 113 | return 114 | } 115 | if resp.StatusCode != http.StatusOK { 116 | fmt.Println("Proxy CONNECT failed with status:", resp.Status) 117 | log.Println(" Reconnecting after a minute") 118 | time.Sleep(1 * time.Minute) 119 | go connectSocket(token, proxyURL) 120 | return 121 | } 122 | 123 | // Use the resulting connection as a WebSocket connection 124 | wsCon, resp, err := websocket.NewClient(conn, ws, nil, 1024, 1024) 125 | if err != nil { 126 | log.Printf("Init ws failed with status %d", resp.StatusCode) 127 | log.Println("dial:", err) 128 | log.Println(" Reconnecting after a minute") 129 | time.Sleep(1 * time.Minute) 130 | go connectSocket(token, proxyURL) 131 | return 132 | } 133 | c = wsCon 134 | } else { 135 | wsCon, resp, err := websocket.DefaultDialer.Dial(constant.BASE_WSS, nil) 136 | if err != nil { 137 | log.Printf("Init ws failed with status %d", resp.StatusCode) 138 | log.Println("dial:", err) 139 | log.Println(" Reconnecting after a minute") 140 | time.Sleep(1 * time.Minute) 141 | go connectSocket(token, proxyURL) 142 | return 143 | } 144 | c = wsCon 145 | } 146 | 147 | defer c.Close() 148 | for { 149 | _, payload, err := c.ReadMessage() 150 | if err != nil { 151 | log.Println("Read message error:", err) 152 | time.Sleep(1 * time.Minute) 153 | log.Println("Error. Reconnecting after a minute") 154 | go connectSocket(token, proxyURL) 155 | return 156 | } 157 | var msg *request.WsMessage 158 | json.Unmarshal(payload, &msg) 159 | log.Printf("recv: %s", msg) 160 | if msg.Action == "AUTH" { 161 | sendAuth(msg, token, c, authSessionResponse) 162 | } else if msg.Action == "PONG" { 163 | SendPong(msg, c) 164 | time.Sleep(constant.PING_INTERVAL * time.Millisecond) 165 | SendPing(msg, c) 166 | } 167 | } 168 | } 169 | 170 | func SendPong(msg *request.WsMessage, c *websocket.Conn) { 171 | tmp := request.PongMessage{ 172 | ID: msg.ID, 173 | OriginAction: "PONG", 174 | } 175 | body, _ := json.Marshal(tmp) 176 | err := c.WriteMessage(websocket.TextMessage, body) 177 | if err != nil { 178 | log.Println("write:", err) 179 | return 180 | } 181 | } 182 | 183 | func SendPing(msg *request.WsMessage, c *websocket.Conn) { 184 | tmp := request.PingMessage{ 185 | ID: msg.ID, 186 | Action: "PING", 187 | } 188 | body, _ := json.Marshal(tmp) 189 | err := c.WriteMessage(websocket.TextMessage, body) 190 | if err != nil { 191 | log.Println("write:", err) 192 | return 193 | } 194 | } 195 | 196 | func sendAuth(msg *request.WsMessage, token string, c *websocket.Conn, authSessionResponse *request.AuthSessionResponse) { 197 | tmp := request.AuthMessage{ 198 | ID: msg.ID, 199 | Action: "PING", 200 | UserID: authSessionResponse.Data.UID, 201 | BrowserID: uuid.New().String(), 202 | UserAgent: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36", 203 | Timestamp: time.Now().Format("20060102150405"), 204 | DeviceType: "extension", 205 | Version: "2.1.0", 206 | Token: token, 207 | OriginAction: "AUTH", 208 | } 209 | body, _ := json.Marshal(tmp) 210 | err := c.WriteMessage(websocket.TextMessage, body) 211 | if err != nil { 212 | log.Println("write:", err) 213 | return 214 | } 215 | } 216 | 217 | func pingNetworkDevice(token, proxyURL string) { 218 | client := resty.New() 219 | if proxyURL != "" { 220 | client.SetProxy(proxyURL) 221 | } 222 | var authSessionResponse *request.AuthSessionResponse 223 | 224 | res, err := client.R(). 225 | SetResult(&authSessionResponse). 226 | SetAuthToken(token). 227 | Post(fmt.Sprintf("%v/auth/session", constant.BASE_URL)) 228 | if err != nil { 229 | fmt.Println("Proxy", proxyURL, "Authen err", err) 230 | time.Sleep(1 * time.Minute) 231 | go pingNetworkDevice(token, proxyURL) 232 | return 233 | } 234 | fmt.Println("Proxy", proxyURL, "Authen res", res) 235 | 236 | body := request.PingPostRequest{ 237 | ID: authSessionResponse.Data.UID, 238 | BrowserID: uuid.New().String(), 239 | Timestamp: cast.ToInt(time.Now().Format("20060102150405")) / 1000, 240 | Version: "2.2.3", 241 | } 242 | for { 243 | body.Timestamp = cast.ToInt(time.Now().Format("20060102150405")) / 1000 244 | res, err := client.R(). 245 | SetBody(body). 246 | SetAuthToken(token). 247 | Post(constant.PING_URL) 248 | if err != nil { 249 | log.Println("Can't check device network", err) 250 | } 251 | fmt.Println("Proxy", proxyURL, "Ping res", res) 252 | 253 | time.Sleep(constant.PING_INTERVAL * time.Millisecond) 254 | } 255 | } 256 | -------------------------------------------------------------------------------- /chickcoop/auto/request/request.go: -------------------------------------------------------------------------------- 1 | package request 2 | 3 | type ResearchAPIRequest struct { 4 | ResearchType string `json:"researchType"` 5 | } 6 | 7 | type SpinRequest struct { 8 | Mode string `json:"mode"` 9 | } 10 | 11 | type SpinResult struct { 12 | Ok bool `json:"ok"` 13 | Error interface{} `json:"error"` 14 | Data struct { 15 | WheelState struct { 16 | NextTimeFreeSpin int64 `json:"nextTimeFreeSpin"` 17 | IsAvailableFreeSpin bool `json:"isAvailableFreeSpin"` 18 | AvailablePremiumSpin int `json:"availablePremiumSpin"` 19 | NumberOfSpinsPurchased int `json:"numberOfSpinsPurchased"` 20 | AvailableReward struct { 21 | ID string `json:"id"` 22 | Text string `json:"text"` 23 | Type string `json:"type"` 24 | Amount int `json:"amount"` 25 | } `json:"availableReward"` 26 | AvailableToBuyAirdropSpins int `json:"availableToBuyAirdropSpins"` 27 | IsAvailableWithdraw bool `json:"isAvailableWithdraw"` 28 | AccumulatedMoney int `json:"accumulatedMoney"` 29 | } `json:"wheelState"` 30 | } `json:"data"` 31 | } 32 | 33 | type Response struct { 34 | Ok bool `json:"ok"` 35 | Error interface{} `json:"error"` 36 | Data struct { 37 | Profile struct { 38 | ID int `json:"id"` 39 | Username string `json:"username"` 40 | PhotoURL string `json:"photoUrl"` 41 | IsPremium bool `json:"isPremium"` 42 | InvitedBy int `json:"invitedBy"` 43 | XID string `json:"xId"` 44 | Wallets []interface{} `json:"wallets"` 45 | } `json:"profile"` 46 | StartTime int64 `json:"startTime"` 47 | Chickens struct { 48 | Quantity float64 `json:"quantity"` 49 | LayingRate struct { 50 | Base float64 `json:"base"` 51 | Bonus string `json:"bonus"` 52 | Combine float64 `json:"combine"` 53 | } `json:"layingRate"` 54 | } `json:"chickens"` 55 | Eggs struct { 56 | Quantity float64 `json:"quantity"` 57 | Value struct { 58 | Base float64 `json:"base"` 59 | Bonus string `json:"bonus"` 60 | Combine float64 `json:"combine"` 61 | } `json:"value"` 62 | HatchingRate struct { 63 | Base float64 `json:"base"` 64 | Bonus string `json:"bonus"` 65 | Combine float64 `json:"combine"` 66 | IsAuto bool `json:"isAuto"` 67 | Level int `json:"level"` 68 | LastManualHatch int64 `json:"lastManualHatch"` 69 | Color string `json:"color"` 70 | } `json:"hatchingRate"` 71 | } `json:"eggs"` 72 | Session struct { 73 | SessionStartTime int64 `json:"sessionStartTime"` 74 | LastSessionEndTime int64 `json:"lastSessionEndTime"` 75 | } `json:"session"` 76 | LoginHistory []string `json:"loginHistory"` 77 | Discovery struct { 78 | Level int `json:"level"` 79 | AvailableToUpgrade bool `json:"availableToUpgrade"` 80 | } `json:"discovery"` 81 | Shop struct { 82 | IsBoughtStarterPack bool `json:"isBoughtStarterPack"` 83 | BoughtPacks []interface{} `json:"boughtPacks"` 84 | } `json:"shop"` 85 | Laboratory struct { 86 | Regular struct { 87 | LayingRate struct { 88 | Tier int `json:"tier"` 89 | Level int `json:"level"` 90 | } `json:"layingRate"` 91 | EggValue struct { 92 | Tier int `json:"tier"` 93 | Level int `json:"level"` 94 | } `json:"eggValue"` 95 | FarmCapacity struct { 96 | Tier int `json:"tier"` 97 | Level int `json:"level"` 98 | } `json:"farmCapacity"` 99 | } `json:"regular"` 100 | Epic struct { 101 | ReduceCost struct { 102 | Tier int `json:"tier"` 103 | Level int `json:"level"` 104 | } `json:"reduceCost"` 105 | FarmValue struct { 106 | Tier int `json:"tier"` 107 | Level int `json:"level"` 108 | } `json:"farmValue"` 109 | } `json:"epic"` 110 | } `json:"laboratory"` 111 | Boost struct { 112 | Available []interface{} `json:"available"` 113 | Active []interface{} `json:"active"` 114 | Used int `json:"used"` 115 | } `json:"boost"` 116 | Activities []interface{} `json:"activities"` 117 | Cash float64 `json:"cash"` 118 | Gem int `json:"gem"` 119 | Spent int `json:"spent"` 120 | FarmValue float64 `json:"farmValue"` 121 | FarmCapacity struct { 122 | Capacity int `json:"capacity"` 123 | NeedToUpgrade bool `json:"needToUpgrade"` 124 | } `json:"farmCapacity"` 125 | ReduceCost struct { 126 | Laboratory struct { 127 | Regular string `json:"regular"` 128 | } `json:"laboratory"` 129 | } `json:"reduceCost"` 130 | Invite struct { 131 | Accepted int `json:"accepted"` 132 | Reward int `json:"reward"` 133 | } `json:"invite"` 134 | IsCompleteTutorial bool `json:"isCompleteTutorial"` 135 | RandomGift *struct { 136 | ReceiveTime int64 `json:"receiveTime"` 137 | Gift struct { 138 | Name string `json:"name"` 139 | Description string `json:"description"` 140 | Amount int `json:"amount"` 141 | Unit string `json:"unit"` 142 | } `json:"gift"` 143 | } `json:"randomGift"` 144 | Wheel struct { 145 | NextTimeFreeSpin interface{} `json:"nextTimeFreeSpin"` 146 | IsAvailableFreeSpin bool `json:"isAvailableFreeSpin"` 147 | AvailablePremiumSpin int `json:"availablePremiumSpin"` 148 | NumberOfSpinsPurchased int `json:"numberOfSpinsPurchased"` 149 | AvailableReward interface{} `json:"availableReward"` 150 | AvailableToBuyAirdropSpins int `json:"availableToBuyAirdropSpins"` 151 | IsAvailableWithdraw bool `json:"isAvailableWithdraw"` 152 | AccumulatedMoney int `json:"accumulatedMoney"` 153 | } `json:"wheel"` 154 | Chest struct { 155 | Silver struct { 156 | Available int `json:"available"` 157 | Open int `json:"open"` 158 | } `json:"silver"` 159 | Golden struct { 160 | Available int `json:"available"` 161 | Open int `json:"open"` 162 | } `json:"golden"` 163 | } `json:"chest"` 164 | Nft []interface{} `json:"nft"` 165 | IsNewUser bool `json:"isNewUser"` 166 | IsAcceptInvite bool `json:"isAcceptInvite"` 167 | UI struct { 168 | IsShowAirDrop bool `json:"isShowAirDrop"` 169 | IsUseExternalRank bool `json:"isUseExternalRank"` 170 | IsShowExternalPurchaseButton bool `json:"isShowExternalPurchaseButton"` 171 | } `json:"ui"` 172 | } `json:"data"` 173 | IsAcceptInvite bool `json:"isAcceptInvite"` 174 | } 175 | 176 | type ChallengeResponse struct { 177 | Ok bool `json:"ok"` 178 | Error interface{} `json:"error"` 179 | Data struct { 180 | IsCheckin bool `json:"isCheckin"` 181 | Challenge struct { 182 | MainImage string `json:"mainImage"` 183 | HintImages []string `json:"hintImages"` 184 | } `json:"challenge"` 185 | } `json:"data"` 186 | } 187 | 188 | type LandState struct { 189 | Ok bool `json:"ok"` 190 | Error any `json:"error"` 191 | Data struct { 192 | Gem int `json:"gem"` 193 | Cash float64 `json:"cash"` 194 | FarmValue float64 `json:"farmValue"` 195 | Land struct { 196 | Normal []struct { 197 | ID string `json:"id"` 198 | Plant *struct { 199 | ID string `json:"id"` 200 | Name string `json:"name"` 201 | FarmValue int `json:"farmValue"` 202 | UnlockLevel int `json:"unlockLevel"` 203 | HarvestTime string `json:"harvestTime"` 204 | RemainingFertilizations int `json:"remainingFertilizations"` 205 | MaxFertilizations int `json:"maxFertilizations"` 206 | Price struct { 207 | Type string `json:"type"` 208 | Value int `json:"value"` 209 | } `json:"price"` 210 | Stage string `json:"stage"` 211 | PlantedAt int64 `json:"plantedAt"` 212 | HarvestAt int64 `json:"harvestAt"` 213 | } `json:"plant"` 214 | State string `json:"state"` 215 | UnlockLevel int `json:"unlockLevel"` 216 | Type string `json:"type"` 217 | Price struct { 218 | Type string `json:"type"` 219 | Value int `json:"value"` 220 | } `json:"price"` 221 | } `json:"normal"` 222 | Premium []struct { 223 | ID string `json:"id"` 224 | Plant any `json:"plant"` 225 | State string `json:"state"` 226 | Type string `json:"type"` 227 | Price struct { 228 | Type string `json:"type"` 229 | Value int `json:"value"` 230 | } `json:"price"` 231 | } `json:"premium"` 232 | Warehouse struct { 233 | Fertilizers []struct { 234 | ID string `json:"id"` 235 | Quantity int `json:"quantity"` 236 | } `json:"fertilizers"` 237 | Seeds []struct { 238 | ID string `json:"id"` 239 | Quantity int `json:"quantity"` 240 | } `json:"seeds"` 241 | } `json:"warehouse"` 242 | } `json:"land"` 243 | } `json:"data"` 244 | } 245 | 246 | type PurchaseSeedRequest struct { 247 | PlantID string `json:"plantId"` 248 | Quantity int `json:"quantity"` 249 | } 250 | 251 | type PutInRequest struct { 252 | PlantID string `json:"plantId"` 253 | TileID string `json:"tileId"` 254 | } 255 | 256 | type WateringRequest struct { 257 | TileID string `json:"tileId"` 258 | } 259 | 260 | type NextLevelResponse struct { 261 | Ok bool `json:"ok"` 262 | Error any `json:"error"` 263 | Data struct { 264 | Level int `json:"level"` 265 | Name string `json:"name"` 266 | Price int `json:"price"` 267 | Color string `json:"color"` 268 | Speed float64 `json:"speed"` 269 | Description string `json:"description"` 270 | } `json:"data"` 271 | } 272 | -------------------------------------------------------------------------------- /memefi/utils/query.py: -------------------------------------------------------------------------------- 1 | QUERY_GAME_CONFIG = """ 2 | query QUERY_GAME_CONFIG { 3 | telegramGameGetConfig { 4 | ...FragmentBossFightConfig 5 | __typename 6 | } 7 | } 8 | 9 | fragment FragmentBossFightConfig on TelegramGameConfigOutput { 10 | _id 11 | coinsAmount 12 | currentEnergy 13 | maxEnergy 14 | weaponLevel 15 | energyLimitLevel 16 | energyRechargeLevel 17 | tapBotLevel 18 | currentBoss { 19 | _id 20 | level 21 | currentHealth 22 | maxHealth 23 | __typename 24 | } 25 | freeBoosts { 26 | _id 27 | currentTurboAmount 28 | maxTurboAmount 29 | turboLastActivatedAt 30 | turboAmountLastRechargeDate 31 | currentRefillEnergyAmount 32 | maxRefillEnergyAmount 33 | refillEnergyLastActivatedAt 34 | refillEnergyAmountLastRechargeDate 35 | __typename 36 | } 37 | bonusLeaderDamageEndAt 38 | bonusLeaderDamageStartAt 39 | bonusLeaderDamageMultiplier 40 | nonce 41 | __typename 42 | } 43 | """ 44 | 45 | # Tambahkan query-query lainnya dengan format yang sama 46 | 47 | MUTATION_GAME_PROCESS_TAPS_BATCH = """ 48 | mutation MutationGameProcessTapsBatch($payload: TelegramGameTapsBatchInput!) { 49 | telegramGameProcessTapsBatch(payload: $payload) { 50 | ...FragmentBossFightConfig 51 | __typename 52 | } 53 | } 54 | 55 | fragment FragmentBossFightConfig on TelegramGameConfigOutput { 56 | _id 57 | coinsAmount 58 | currentEnergy 59 | maxEnergy 60 | weaponLevel 61 | energyLimitLevel 62 | energyRechargeLevel 63 | tapBotLevel 64 | currentBoss { 65 | _id 66 | level 67 | currentHealth 68 | maxHealth 69 | __typename 70 | } 71 | freeBoosts { 72 | _id 73 | currentTurboAmount 74 | maxTurboAmount 75 | turboLastActivatedAt 76 | turboAmountLastRechargeDate 77 | currentRefillEnergyAmount 78 | maxRefillEnergyAmount 79 | refillEnergyLastActivatedAt 80 | refillEnergyAmountLastRechargeDate 81 | __typename 82 | } 83 | bonusLeaderDamageEndAt 84 | bonusLeaderDamageStartAt 85 | bonusLeaderDamageMultiplier 86 | nonce 87 | __typename 88 | } 89 | """ 90 | UPGRADE_QUERY = """ 91 | mutation telegramGamePurchaseUpgrade($upgradeType: UpgradeType!) { 92 | telegramGamePurchaseUpgrade(type: $upgradeType) { 93 | ...FragmentBossFightConfig 94 | __typename 95 | } 96 | } 97 | fragment FragmentBossFightConfig on TelegramGameConfigOutput { 98 | _id 99 | coinsAmount 100 | currentEnergy 101 | maxEnergy 102 | weaponLevel 103 | energyLimitLevel 104 | energyRechargeLevel 105 | tapBotLevel 106 | currentBoss { 107 | _id 108 | level 109 | currentHealth 110 | maxHealth 111 | __typename 112 | } 113 | freeBoosts { 114 | _id 115 | currentTurboAmount 116 | maxTurboAmount 117 | turboLastActivatedAt 118 | turboAmountLastRechargeDate 119 | currentRefillEnergyAmount 120 | maxRefillEnergyAmount 121 | refillEnergyLastActivatedAt 122 | refillEnergyAmountLastRechargeDate 123 | __typename 124 | } 125 | bonusLeaderDamageEndAt 126 | bonusLeaderDamageStartAt 127 | bonusLeaderDamageMultiplier 128 | nonce 129 | __typename 130 | } 131 | """ 132 | 133 | QUERY_BOOSTER = """ 134 | mutation telegramGameActivateBooster($boosterType: BoosterType!) { 135 | telegramGameActivateBooster(boosterType: $boosterType) { 136 | ...FragmentBossFightConfig 137 | __typename 138 | } 139 | } 140 | fragment FragmentBossFightConfig on TelegramGameConfigOutput { 141 | _id 142 | coinsAmount 143 | currentEnergy 144 | maxEnergy 145 | weaponLevel 146 | energyLimitLevel 147 | energyRechargeLevel 148 | tapBotLevel 149 | currentBoss { 150 | _id 151 | level 152 | currentHealth 153 | maxHealth 154 | __typename 155 | } 156 | freeBoosts { 157 | _id 158 | currentTurboAmount 159 | maxTurboAmount 160 | turboLastActivatedAt 161 | turboAmountLastRechargeDate 162 | currentRefillEnergyAmount 163 | maxRefillEnergyAmount 164 | refillEnergyLastActivatedAt 165 | refillEnergyAmountLastRechargeDate 166 | __typename 167 | } 168 | bonusLeaderDamageEndAt 169 | bonusLeaderDamageStartAt 170 | bonusLeaderDamageMultiplier 171 | nonce 172 | __typename 173 | } 174 | """ 175 | 176 | QUERY_NEXT_BOSS = """ 177 | mutation telegramGameSetNextBoss { 178 | telegramGameSetNextBoss { 179 | ...FragmentBossFightConfig 180 | __typename 181 | } 182 | } 183 | fragment FragmentBossFightConfig on TelegramGameConfigOutput { 184 | _id 185 | coinsAmount 186 | currentEnergy 187 | maxEnergy 188 | weaponLevel 189 | energyLimitLevel 190 | energyRechargeLevel 191 | tapBotLevel 192 | currentBoss { 193 | _id 194 | level 195 | currentHealth 196 | maxHealth 197 | __typename 198 | } 199 | freeBoosts { 200 | _id 201 | currentTurboAmount 202 | maxTurboAmount 203 | turboLastActivatedAt 204 | turboAmountLastRechargeDate 205 | currentRefillEnergyAmount 206 | maxRefillEnergyAmount 207 | refillEnergyLastActivatedAt 208 | refillEnergyAmountLastRechargeDate 209 | __typename 210 | } 211 | bonusLeaderDamageEndAt 212 | bonusLeaderDamageStartAt 213 | bonusLeaderDamageMultiplier 214 | nonce 215 | __typename 216 | } 217 | """ 218 | 219 | QUERY_GET_TASK = """ 220 | fragment FragmentCampaignTask on CampaignTaskOutput { 221 | id 222 | name 223 | description 224 | status 225 | type 226 | position 227 | buttonText 228 | coinsRewardAmount 229 | link 230 | userTaskId 231 | isRequired 232 | iconUrl 233 | __typename 234 | } 235 | 236 | query GetTasksList($campaignId: String!) { 237 | campaignTasks(campaignConfigId: $campaignId) { 238 | ...FragmentCampaignTask 239 | __typename 240 | } 241 | } 242 | """ 243 | 244 | QUERY_TASK_ID = """ 245 | fragment FragmentCampaignTask on CampaignTaskOutput { 246 | id 247 | name 248 | description 249 | status 250 | type 251 | position 252 | buttonText 253 | coinsRewardAmount 254 | link 255 | userTaskId 256 | isRequired 257 | iconUrl 258 | __typename 259 | } 260 | 261 | query GetTaskById($taskId: String!) { 262 | campaignTaskGetConfig(taskId: $taskId) { 263 | ...FragmentCampaignTask 264 | __typename 265 | } 266 | } 267 | """ 268 | 269 | QUERY_TASK_VERIF = """ 270 | fragment FragmentCampaignTask on CampaignTaskOutput { 271 | id 272 | name 273 | description 274 | status 275 | type 276 | position 277 | buttonText 278 | coinsRewardAmount 279 | link 280 | userTaskId 281 | isRequired 282 | iconUrl 283 | __typename 284 | } 285 | 286 | mutation CampaignTaskToVerification($userTaskId: String!) { 287 | campaignTaskMoveToVerification(userTaskId: $userTaskId) { 288 | ...FragmentCampaignTask 289 | __typename 290 | } 291 | } 292 | """ 293 | 294 | QUERY_TASK_COMPLETED = """ 295 | fragment FragmentCampaignTask on CampaignTaskOutput { 296 | id 297 | name 298 | description 299 | status 300 | type 301 | position 302 | buttonText 303 | coinsRewardAmount 304 | link 305 | userTaskId 306 | isRequired 307 | iconUrl 308 | __typename 309 | } 310 | 311 | mutation CampaignTaskCompleted($userTaskId: String!) { 312 | campaignTaskMarkAsCompleted(userTaskId: $userTaskId) { 313 | ...FragmentCampaignTask 314 | __typename 315 | } 316 | } 317 | """ 318 | QUERY_USER = """ 319 | query QueryTelegramUserMe { 320 | telegramUserMe { 321 | firstName 322 | lastName 323 | telegramId 324 | username 325 | referralCode 326 | isDailyRewardClaimed 327 | referral { 328 | username 329 | lastName 330 | firstName 331 | bossLevel 332 | coinsAmount 333 | __typename 334 | } 335 | isReferralInitialJoinBonusAvailable 336 | league 337 | leagueIsOverTop10k 338 | leaguePosition 339 | _id 340 | __typename 341 | } 342 | } 343 | """ 344 | 345 | QUERY_LOGIN = """mutation MutationTelegramUserLogin($webAppData: TelegramWebAppDataInput!) { 346 | telegramUserLogin(webAppData: $webAppData) { 347 | access_token 348 | __typename 349 | } 350 | }""" -------------------------------------------------------------------------------- /timefarm/go.sum: -------------------------------------------------------------------------------- 1 | github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= 2 | github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= 3 | github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= 4 | github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= 5 | github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8= 6 | github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= 7 | github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= 8 | github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= 9 | github.com/go-resty/resty/v2 v2.13.1 h1:x+LHXBI2nMB1vqndymf26quycC4aggYJ7DECYbiz03g= 10 | github.com/go-resty/resty/v2 v2.13.1/go.mod h1:GznXlLxkq6Nh4sU59rPmUw3VtgpO3aS96ORAI6Q7d+0= 11 | github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= 12 | github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= 13 | github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= 14 | github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= 15 | github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= 16 | github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= 17 | github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= 18 | github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= 19 | github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= 20 | github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= 21 | github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= 22 | github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= 23 | github.com/pelletier/go-toml/v2 v2.2.2 h1:aYUidT7k73Pcl9nb2gScu7NSrKCSHIDE89b3+6Wq+LM= 24 | github.com/pelletier/go-toml/v2 v2.2.2/go.mod h1:1t835xjRzz80PqgE6HHgN2JOsmgYu/h4qDAS4n929Rs= 25 | github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= 26 | github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= 27 | github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= 28 | github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8= 29 | github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= 30 | github.com/sagikazarmark/locafero v0.4.0 h1:HApY1R9zGo4DBgr7dqsTH/JJxLTTsOt7u6keLGt6kNQ= 31 | github.com/sagikazarmark/locafero v0.4.0/go.mod h1:Pe1W6UlPYUk/+wc/6KFhbORCfqzgYEpgQ3O5fPuL3H4= 32 | github.com/sagikazarmark/slog-shim v0.1.0 h1:diDBnUNK9N/354PgrxMywXnAwEr1QZcOr6gto+ugjYE= 33 | github.com/sagikazarmark/slog-shim v0.1.0/go.mod h1:SrcSrq8aKtyuqEI1uvTDTK1arOWRIczQRv+GVI1AkeQ= 34 | github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo= 35 | github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0= 36 | github.com/spf13/afero v1.11.0 h1:WJQKhtpdm3v2IzqG8VMqrr6Rf3UYpEF239Jy9wNepM8= 37 | github.com/spf13/afero v1.11.0/go.mod h1:GH9Y3pIexgf1MTIWtNGyogA5MwRIDXGUr+hbWNoBjkY= 38 | github.com/spf13/cast v1.6.0 h1:GEiTHELF+vaR5dhz3VqZfFSzZjYbgeKDpBxQVS4GYJ0= 39 | github.com/spf13/cast v1.6.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= 40 | github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= 41 | github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= 42 | github.com/spf13/viper v1.19.0 h1:RWq5SEjt8o25SROyN3z2OrDB9l7RPd3lwTWU8EcEdcI= 43 | github.com/spf13/viper v1.19.0/go.mod h1:GQUN9bilAbhU/jgc1bKs99f/suXKeUMct8Adx5+Ntkg= 44 | github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= 45 | github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= 46 | github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= 47 | github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= 48 | github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= 49 | github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= 50 | github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= 51 | github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= 52 | github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= 53 | github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= 54 | github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8= 55 | github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU= 56 | github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= 57 | go.uber.org/atomic v1.9.0 h1:ECmE8Bn/WFTYwEW/bpKD3M8VtR/zQVbavAoalC1PYyE= 58 | go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= 59 | go.uber.org/multierr v1.9.0 h1:7fIwc/ZtS0q++VgcfqFDxSBZVv/Xo49/SYnDFupUwlI= 60 | go.uber.org/multierr v1.9.0/go.mod h1:X2jQV1h+kxSjClGpnseKVIxpmcjrj7MNnI0bnlfKTVQ= 61 | golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= 62 | golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= 63 | golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= 64 | golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= 65 | golang.org/x/exp v0.0.0-20230905200255-921286631fa9 h1:GoHiUyI/Tp2nVkLI2mCxVkOjsbSXD66ic0XW0js0R9g= 66 | golang.org/x/exp v0.0.0-20230905200255-921286631fa9/go.mod h1:S2oDrQGGwySpoQPVqRShND87VCbxmc6bL1Yd2oYrm6k= 67 | golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= 68 | golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= 69 | golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= 70 | golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= 71 | golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= 72 | golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= 73 | golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= 74 | golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= 75 | golang.org/x/net v0.25.0 h1:d/OCCoBEUq33pjydKrGQhw7IlUPI2Oylr+8qLx49kac= 76 | golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= 77 | golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= 78 | golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= 79 | golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= 80 | golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= 81 | golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 82 | golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= 83 | golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= 84 | golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= 85 | golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= 86 | golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= 87 | golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= 88 | golang.org/x/sys v0.20.0 h1:Od9JTbYCk261bKm4M/mw7AklTlFYIa0bIp9BgSm1S8Y= 89 | golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= 90 | golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= 91 | golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= 92 | golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= 93 | golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= 94 | golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= 95 | golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= 96 | golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= 97 | golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= 98 | golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= 99 | golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= 100 | golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= 101 | golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= 102 | golang.org/x/text v0.15.0 h1:h1V/4gjBv8v9cjcR6+AR5+/cIYK5N/WAgiv4xlsEtAk= 103 | golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= 104 | golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk= 105 | golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= 106 | golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= 107 | golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= 108 | golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= 109 | golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= 110 | golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= 111 | gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= 112 | gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= 113 | gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= 114 | gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= 115 | gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= 116 | gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= 117 | gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= 118 | gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= 119 | -------------------------------------------------------------------------------- /nodepay/go.sum: -------------------------------------------------------------------------------- 1 | github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= 2 | github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= 3 | github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= 4 | github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= 5 | github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8= 6 | github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= 7 | github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= 8 | github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= 9 | github.com/go-resty/resty/v2 v2.13.1 h1:x+LHXBI2nMB1vqndymf26quycC4aggYJ7DECYbiz03g= 10 | github.com/go-resty/resty/v2 v2.13.1/go.mod h1:GznXlLxkq6Nh4sU59rPmUw3VtgpO3aS96ORAI6Q7d+0= 11 | github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= 12 | github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= 13 | github.com/google/uuid v1.4.0 h1:MtMxsa51/r9yyhkyLsVeVt0B+BGQZzpQiTQ4eHZ8bc4= 14 | github.com/google/uuid v1.4.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= 15 | github.com/gorilla/websocket v1.5.1 h1:gmztn0JnHVt9JZquRuzLw3g4wouNVzKL15iLr/zn/QY= 16 | github.com/gorilla/websocket v1.5.1/go.mod h1:x3kM2JMyaluk02fnUJpQuwD2dCS5NDG2ZHL0uE0tcaY= 17 | github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= 18 | github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= 19 | github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= 20 | github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= 21 | github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= 22 | github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= 23 | github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= 24 | github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= 25 | github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= 26 | github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= 27 | github.com/pelletier/go-toml/v2 v2.2.2 h1:aYUidT7k73Pcl9nb2gScu7NSrKCSHIDE89b3+6Wq+LM= 28 | github.com/pelletier/go-toml/v2 v2.2.2/go.mod h1:1t835xjRzz80PqgE6HHgN2JOsmgYu/h4qDAS4n929Rs= 29 | github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= 30 | github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= 31 | github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= 32 | github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8= 33 | github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= 34 | github.com/sagikazarmark/locafero v0.4.0 h1:HApY1R9zGo4DBgr7dqsTH/JJxLTTsOt7u6keLGt6kNQ= 35 | github.com/sagikazarmark/locafero v0.4.0/go.mod h1:Pe1W6UlPYUk/+wc/6KFhbORCfqzgYEpgQ3O5fPuL3H4= 36 | github.com/sagikazarmark/slog-shim v0.1.0 h1:diDBnUNK9N/354PgrxMywXnAwEr1QZcOr6gto+ugjYE= 37 | github.com/sagikazarmark/slog-shim v0.1.0/go.mod h1:SrcSrq8aKtyuqEI1uvTDTK1arOWRIczQRv+GVI1AkeQ= 38 | github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo= 39 | github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0= 40 | github.com/spf13/afero v1.11.0 h1:WJQKhtpdm3v2IzqG8VMqrr6Rf3UYpEF239Jy9wNepM8= 41 | github.com/spf13/afero v1.11.0/go.mod h1:GH9Y3pIexgf1MTIWtNGyogA5MwRIDXGUr+hbWNoBjkY= 42 | github.com/spf13/cast v1.6.0 h1:GEiTHELF+vaR5dhz3VqZfFSzZjYbgeKDpBxQVS4GYJ0= 43 | github.com/spf13/cast v1.6.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= 44 | github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= 45 | github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= 46 | github.com/spf13/viper v1.19.0 h1:RWq5SEjt8o25SROyN3z2OrDB9l7RPd3lwTWU8EcEdcI= 47 | github.com/spf13/viper v1.19.0/go.mod h1:GQUN9bilAbhU/jgc1bKs99f/suXKeUMct8Adx5+Ntkg= 48 | github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= 49 | github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= 50 | github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= 51 | github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= 52 | github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= 53 | github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= 54 | github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= 55 | github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= 56 | github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= 57 | github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= 58 | github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8= 59 | github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU= 60 | github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= 61 | go.uber.org/atomic v1.9.0 h1:ECmE8Bn/WFTYwEW/bpKD3M8VtR/zQVbavAoalC1PYyE= 62 | go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= 63 | go.uber.org/multierr v1.9.0 h1:7fIwc/ZtS0q++VgcfqFDxSBZVv/Xo49/SYnDFupUwlI= 64 | go.uber.org/multierr v1.9.0/go.mod h1:X2jQV1h+kxSjClGpnseKVIxpmcjrj7MNnI0bnlfKTVQ= 65 | golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= 66 | golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= 67 | golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= 68 | golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= 69 | golang.org/x/exp v0.0.0-20230905200255-921286631fa9 h1:GoHiUyI/Tp2nVkLI2mCxVkOjsbSXD66ic0XW0js0R9g= 70 | golang.org/x/exp v0.0.0-20230905200255-921286631fa9/go.mod h1:S2oDrQGGwySpoQPVqRShND87VCbxmc6bL1Yd2oYrm6k= 71 | golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= 72 | golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= 73 | golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= 74 | golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= 75 | golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= 76 | golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= 77 | golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= 78 | golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= 79 | golang.org/x/net v0.25.0 h1:d/OCCoBEUq33pjydKrGQhw7IlUPI2Oylr+8qLx49kac= 80 | golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= 81 | golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= 82 | golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= 83 | golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= 84 | golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= 85 | golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 86 | golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= 87 | golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= 88 | golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= 89 | golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= 90 | golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= 91 | golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= 92 | golang.org/x/sys v0.20.0 h1:Od9JTbYCk261bKm4M/mw7AklTlFYIa0bIp9BgSm1S8Y= 93 | golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= 94 | golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= 95 | golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= 96 | golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= 97 | golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= 98 | golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= 99 | golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= 100 | golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= 101 | golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= 102 | golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= 103 | golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= 104 | golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= 105 | golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= 106 | golang.org/x/text v0.15.0 h1:h1V/4gjBv8v9cjcR6+AR5+/cIYK5N/WAgiv4xlsEtAk= 107 | golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= 108 | golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk= 109 | golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= 110 | golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= 111 | golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= 112 | golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= 113 | golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= 114 | golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= 115 | gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= 116 | gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= 117 | gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= 118 | gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= 119 | gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= 120 | gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= 121 | gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= 122 | gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= 123 | -------------------------------------------------------------------------------- /tomarket/go.sum: -------------------------------------------------------------------------------- 1 | github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= 2 | github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= 3 | github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= 4 | github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= 5 | github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8= 6 | github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= 7 | github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= 8 | github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= 9 | github.com/go-resty/resty/v2 v2.11.0 h1:i7jMfNOJYMp69lq7qozJP+bjgzfAzeOhuGlyDrqxT/8= 10 | github.com/go-resty/resty/v2 v2.11.0/go.mod h1:iiP/OpA0CkcL3IGt1O0+/SIItFUbkkyw5BGXiVdTu+A= 11 | github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= 12 | github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= 13 | github.com/google/uuid v1.4.0 h1:MtMxsa51/r9yyhkyLsVeVt0B+BGQZzpQiTQ4eHZ8bc4= 14 | github.com/google/uuid v1.4.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= 15 | github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= 16 | github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= 17 | github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= 18 | github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= 19 | github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= 20 | github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= 21 | github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= 22 | github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= 23 | github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= 24 | github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= 25 | github.com/pelletier/go-toml/v2 v2.2.2 h1:aYUidT7k73Pcl9nb2gScu7NSrKCSHIDE89b3+6Wq+LM= 26 | github.com/pelletier/go-toml/v2 v2.2.2/go.mod h1:1t835xjRzz80PqgE6HHgN2JOsmgYu/h4qDAS4n929Rs= 27 | github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= 28 | github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= 29 | github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= 30 | github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8= 31 | github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= 32 | github.com/sagikazarmark/locafero v0.4.0 h1:HApY1R9zGo4DBgr7dqsTH/JJxLTTsOt7u6keLGt6kNQ= 33 | github.com/sagikazarmark/locafero v0.4.0/go.mod h1:Pe1W6UlPYUk/+wc/6KFhbORCfqzgYEpgQ3O5fPuL3H4= 34 | github.com/sagikazarmark/slog-shim v0.1.0 h1:diDBnUNK9N/354PgrxMywXnAwEr1QZcOr6gto+ugjYE= 35 | github.com/sagikazarmark/slog-shim v0.1.0/go.mod h1:SrcSrq8aKtyuqEI1uvTDTK1arOWRIczQRv+GVI1AkeQ= 36 | github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= 37 | github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= 38 | github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo= 39 | github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0= 40 | github.com/spf13/afero v1.11.0 h1:WJQKhtpdm3v2IzqG8VMqrr6Rf3UYpEF239Jy9wNepM8= 41 | github.com/spf13/afero v1.11.0/go.mod h1:GH9Y3pIexgf1MTIWtNGyogA5MwRIDXGUr+hbWNoBjkY= 42 | github.com/spf13/cast v1.6.0 h1:GEiTHELF+vaR5dhz3VqZfFSzZjYbgeKDpBxQVS4GYJ0= 43 | github.com/spf13/cast v1.6.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= 44 | github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= 45 | github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= 46 | github.com/spf13/viper v1.19.0 h1:RWq5SEjt8o25SROyN3z2OrDB9l7RPd3lwTWU8EcEdcI= 47 | github.com/spf13/viper v1.19.0/go.mod h1:GQUN9bilAbhU/jgc1bKs99f/suXKeUMct8Adx5+Ntkg= 48 | github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= 49 | github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= 50 | github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= 51 | github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= 52 | github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= 53 | github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= 54 | github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= 55 | github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= 56 | github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= 57 | github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= 58 | github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= 59 | github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8= 60 | github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU= 61 | github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= 62 | go.uber.org/atomic v1.9.0 h1:ECmE8Bn/WFTYwEW/bpKD3M8VtR/zQVbavAoalC1PYyE= 63 | go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= 64 | go.uber.org/multierr v1.9.0 h1:7fIwc/ZtS0q++VgcfqFDxSBZVv/Xo49/SYnDFupUwlI= 65 | go.uber.org/multierr v1.9.0/go.mod h1:X2jQV1h+kxSjClGpnseKVIxpmcjrj7MNnI0bnlfKTVQ= 66 | golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= 67 | golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= 68 | golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= 69 | golang.org/x/exp v0.0.0-20230905200255-921286631fa9 h1:GoHiUyI/Tp2nVkLI2mCxVkOjsbSXD66ic0XW0js0R9g= 70 | golang.org/x/exp v0.0.0-20230905200255-921286631fa9/go.mod h1:S2oDrQGGwySpoQPVqRShND87VCbxmc6bL1Yd2oYrm6k= 71 | golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= 72 | golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= 73 | golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= 74 | golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= 75 | golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= 76 | golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= 77 | golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= 78 | golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= 79 | golang.org/x/net v0.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs= 80 | golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= 81 | golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= 82 | golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= 83 | golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= 84 | golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= 85 | golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 86 | golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= 87 | golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= 88 | golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= 89 | golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= 90 | golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= 91 | golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= 92 | golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= 93 | golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4= 94 | golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= 95 | golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= 96 | golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= 97 | golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= 98 | golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= 99 | golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U= 100 | golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= 101 | golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= 102 | golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= 103 | golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= 104 | golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= 105 | golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= 106 | golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= 107 | golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= 108 | golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= 109 | golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk= 110 | golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= 111 | golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= 112 | golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= 113 | golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= 114 | golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= 115 | golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= 116 | gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= 117 | gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= 118 | gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= 119 | gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= 120 | gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= 121 | gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= 122 | gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= 123 | gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= 124 | -------------------------------------------------------------------------------- /oasis/go.sum: -------------------------------------------------------------------------------- 1 | github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLju8= 2 | github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= 3 | github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= 4 | github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= 5 | github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= 6 | github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= 7 | github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8= 8 | github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= 9 | github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= 10 | github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= 11 | github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= 12 | github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= 13 | github.com/gorilla/websocket v1.5.1 h1:gmztn0JnHVt9JZquRuzLw3g4wouNVzKL15iLr/zn/QY= 14 | github.com/gorilla/websocket v1.5.1/go.mod h1:x3kM2JMyaluk02fnUJpQuwD2dCS5NDG2ZHL0uE0tcaY= 15 | github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= 16 | github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= 17 | github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= 18 | github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= 19 | github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= 20 | github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= 21 | github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= 22 | github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= 23 | github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= 24 | github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= 25 | github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= 26 | github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= 27 | github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= 28 | github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= 29 | github.com/mattn/go-isatty v0.0.17 h1:BTarxUcIeDqL27Mc+vyvdWYSL28zpIhv3RoTdsLMPng= 30 | github.com/mattn/go-isatty v0.0.17/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= 31 | github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= 32 | github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= 33 | github.com/pelletier/go-toml/v2 v2.2.2 h1:aYUidT7k73Pcl9nb2gScu7NSrKCSHIDE89b3+6Wq+LM= 34 | github.com/pelletier/go-toml/v2 v2.2.2/go.mod h1:1t835xjRzz80PqgE6HHgN2JOsmgYu/h4qDAS4n929Rs= 35 | github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= 36 | github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= 37 | github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= 38 | github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= 39 | github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= 40 | github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= 41 | github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8= 42 | github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= 43 | github.com/sagikazarmark/locafero v0.4.0 h1:HApY1R9zGo4DBgr7dqsTH/JJxLTTsOt7u6keLGt6kNQ= 44 | github.com/sagikazarmark/locafero v0.4.0/go.mod h1:Pe1W6UlPYUk/+wc/6KFhbORCfqzgYEpgQ3O5fPuL3H4= 45 | github.com/sagikazarmark/slog-shim v0.1.0 h1:diDBnUNK9N/354PgrxMywXnAwEr1QZcOr6gto+ugjYE= 46 | github.com/sagikazarmark/slog-shim v0.1.0/go.mod h1:SrcSrq8aKtyuqEI1uvTDTK1arOWRIczQRv+GVI1AkeQ= 47 | github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo= 48 | github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0= 49 | github.com/spf13/afero v1.11.0 h1:WJQKhtpdm3v2IzqG8VMqrr6Rf3UYpEF239Jy9wNepM8= 50 | github.com/spf13/afero v1.11.0/go.mod h1:GH9Y3pIexgf1MTIWtNGyogA5MwRIDXGUr+hbWNoBjkY= 51 | github.com/spf13/cast v1.6.0 h1:GEiTHELF+vaR5dhz3VqZfFSzZjYbgeKDpBxQVS4GYJ0= 52 | github.com/spf13/cast v1.6.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= 53 | github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= 54 | github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= 55 | github.com/spf13/viper v1.19.0 h1:RWq5SEjt8o25SROyN3z2OrDB9l7RPd3lwTWU8EcEdcI= 56 | github.com/spf13/viper v1.19.0/go.mod h1:GQUN9bilAbhU/jgc1bKs99f/suXKeUMct8Adx5+Ntkg= 57 | github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= 58 | github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= 59 | github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= 60 | github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= 61 | github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= 62 | github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= 63 | github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= 64 | github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= 65 | github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= 66 | github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= 67 | github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= 68 | github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8= 69 | github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU= 70 | github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= 71 | go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= 72 | go.uber.org/atomic v1.9.0 h1:ECmE8Bn/WFTYwEW/bpKD3M8VtR/zQVbavAoalC1PYyE= 73 | go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= 74 | go.uber.org/goleak v1.1.11 h1:wy28qYRKZgnJTxGxvye5/wgWr1EKjmUDGYox5mGlRlI= 75 | go.uber.org/goleak v1.1.11/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= 76 | go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= 77 | go.uber.org/multierr v1.9.0 h1:7fIwc/ZtS0q++VgcfqFDxSBZVv/Xo49/SYnDFupUwlI= 78 | go.uber.org/multierr v1.9.0/go.mod h1:X2jQV1h+kxSjClGpnseKVIxpmcjrj7MNnI0bnlfKTVQ= 79 | go.uber.org/zap v1.21.0 h1:WefMeulhovoZ2sYXz7st6K0sLj7bBhpiFaud4r4zST8= 80 | go.uber.org/zap v1.21.0/go.mod h1:wjWOCqI0f2ZZrJF/UufIOkiC8ii6tm1iqIsLo76RfJw= 81 | golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= 82 | golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= 83 | golang.org/x/exp v0.0.0-20230905200255-921286631fa9 h1:GoHiUyI/Tp2nVkLI2mCxVkOjsbSXD66ic0XW0js0R9g= 84 | golang.org/x/exp v0.0.0-20230905200255-921286631fa9/go.mod h1:S2oDrQGGwySpoQPVqRShND87VCbxmc6bL1Yd2oYrm6k= 85 | golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= 86 | golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= 87 | golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= 88 | golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= 89 | golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= 90 | golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= 91 | golang.org/x/net v0.25.0 h1:d/OCCoBEUq33pjydKrGQhw7IlUPI2Oylr+8qLx49kac= 92 | golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= 93 | golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= 94 | golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= 95 | golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= 96 | golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 97 | golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 98 | golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 99 | golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= 100 | golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= 101 | golang.org/x/sys v0.20.0 h1:Od9JTbYCk261bKm4M/mw7AklTlFYIa0bIp9BgSm1S8Y= 102 | golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= 103 | golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= 104 | golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= 105 | golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= 106 | golang.org/x/text v0.15.0 h1:h1V/4gjBv8v9cjcR6+AR5+/cIYK5N/WAgiv4xlsEtAk= 107 | golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= 108 | golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= 109 | golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= 110 | golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= 111 | golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= 112 | golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= 113 | golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= 114 | golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= 115 | gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= 116 | gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= 117 | gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= 118 | gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= 119 | gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= 120 | gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= 121 | gopkg.in/yaml.v2 v2.2.8 h1:obN1ZagJSUGI0Ek/LBmuj4SNLPfIny3KsKFopxRdj10= 122 | gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= 123 | gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= 124 | gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= 125 | gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= 126 | gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= 127 | -------------------------------------------------------------------------------- /conet-network/go.sum: -------------------------------------------------------------------------------- 1 | github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLju8= 2 | github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= 3 | github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= 4 | github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= 5 | github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= 6 | github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= 7 | github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8= 8 | github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= 9 | github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= 10 | github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= 11 | github.com/go-rod/rod v0.116.1 h1:BDMZY3qm/14SmvHBV7DoFUhXeJ2MbUYgumQ88b+v2WE= 12 | github.com/go-rod/rod v0.116.1/go.mod h1:3Ash9fYwznqz9S1uLQgQRStur4fCXjoxxGW+ym6TYjU= 13 | github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= 14 | github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= 15 | github.com/google/uuid v1.4.0 h1:MtMxsa51/r9yyhkyLsVeVt0B+BGQZzpQiTQ4eHZ8bc4= 16 | github.com/google/uuid v1.4.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= 17 | github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= 18 | github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= 19 | github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= 20 | github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= 21 | github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= 22 | github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= 23 | github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= 24 | github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= 25 | github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= 26 | github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= 27 | github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= 28 | github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= 29 | github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= 30 | github.com/pelletier/go-toml/v2 v2.2.2 h1:aYUidT7k73Pcl9nb2gScu7NSrKCSHIDE89b3+6Wq+LM= 31 | github.com/pelletier/go-toml/v2 v2.2.2/go.mod h1:1t835xjRzz80PqgE6HHgN2JOsmgYu/h4qDAS4n929Rs= 32 | github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= 33 | github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= 34 | github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= 35 | github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= 36 | github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= 37 | github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= 38 | github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8= 39 | github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= 40 | github.com/sagikazarmark/locafero v0.4.0 h1:HApY1R9zGo4DBgr7dqsTH/JJxLTTsOt7u6keLGt6kNQ= 41 | github.com/sagikazarmark/locafero v0.4.0/go.mod h1:Pe1W6UlPYUk/+wc/6KFhbORCfqzgYEpgQ3O5fPuL3H4= 42 | github.com/sagikazarmark/slog-shim v0.1.0 h1:diDBnUNK9N/354PgrxMywXnAwEr1QZcOr6gto+ugjYE= 43 | github.com/sagikazarmark/slog-shim v0.1.0/go.mod h1:SrcSrq8aKtyuqEI1uvTDTK1arOWRIczQRv+GVI1AkeQ= 44 | github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo= 45 | github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0= 46 | github.com/spf13/afero v1.11.0 h1:WJQKhtpdm3v2IzqG8VMqrr6Rf3UYpEF239Jy9wNepM8= 47 | github.com/spf13/afero v1.11.0/go.mod h1:GH9Y3pIexgf1MTIWtNGyogA5MwRIDXGUr+hbWNoBjkY= 48 | github.com/spf13/cast v1.6.0 h1:GEiTHELF+vaR5dhz3VqZfFSzZjYbgeKDpBxQVS4GYJ0= 49 | github.com/spf13/cast v1.6.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= 50 | github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= 51 | github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= 52 | github.com/spf13/viper v1.19.0 h1:RWq5SEjt8o25SROyN3z2OrDB9l7RPd3lwTWU8EcEdcI= 53 | github.com/spf13/viper v1.19.0/go.mod h1:GQUN9bilAbhU/jgc1bKs99f/suXKeUMct8Adx5+Ntkg= 54 | github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= 55 | github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= 56 | github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= 57 | github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= 58 | github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= 59 | github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= 60 | github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= 61 | github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= 62 | github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= 63 | github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= 64 | github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= 65 | github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8= 66 | github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU= 67 | github.com/ysmood/fetchup v0.2.3 h1:ulX+SonA0Vma5zUFXtv52Kzip/xe7aj4vqT5AJwQ+ZQ= 68 | github.com/ysmood/fetchup v0.2.3/go.mod h1:xhibcRKziSvol0H1/pj33dnKrYyI2ebIvz5cOOkYGns= 69 | github.com/ysmood/goob v0.4.0 h1:HsxXhyLBeGzWXnqVKtmT9qM7EuVs/XOgkX7T6r1o1AQ= 70 | github.com/ysmood/goob v0.4.0/go.mod h1:u6yx7ZhS4Exf2MwciFr6nIM8knHQIE22lFpWHnfql18= 71 | github.com/ysmood/gop v0.2.0 h1:+tFrG0TWPxT6p9ZaZs+VY+opCvHU8/3Fk6BaNv6kqKg= 72 | github.com/ysmood/gop v0.2.0/go.mod h1:rr5z2z27oGEbyB787hpEcx4ab8cCiPnKxn0SUHt6xzk= 73 | github.com/ysmood/got v0.40.0 h1:ZQk1B55zIvS7zflRrkGfPDrPG3d7+JOza1ZkNxcc74Q= 74 | github.com/ysmood/got v0.40.0/go.mod h1:W7DdpuX6skL3NszLmAsC5hT7JAhuLZhByVzHTq874Qg= 75 | github.com/ysmood/gotrace v0.6.0 h1:SyI1d4jclswLhg7SWTL6os3L1WOKeNn/ZtzVQF8QmdY= 76 | github.com/ysmood/gotrace v0.6.0/go.mod h1:TzhIG7nHDry5//eYZDYcTzuJLYQIkykJzCRIo4/dzQM= 77 | github.com/ysmood/gson v0.7.3 h1:QFkWbTH8MxyUTKPkVWAENJhxqdBa4lYTQWqZCiLG6kE= 78 | github.com/ysmood/gson v0.7.3/go.mod h1:3Kzs5zDl21g5F/BlLTNcuAGAYLKt2lV5G8D1zF3RNmg= 79 | github.com/ysmood/leakless v0.8.0 h1:BzLrVoiwxikpgEQR0Lk8NyBN5Cit2b1z+u0mgL4ZJak= 80 | github.com/ysmood/leakless v0.8.0/go.mod h1:R8iAXPRaG97QJwqxs74RdwzcRHT1SWCGTNqY8q0JvMQ= 81 | github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= 82 | go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= 83 | go.uber.org/atomic v1.9.0 h1:ECmE8Bn/WFTYwEW/bpKD3M8VtR/zQVbavAoalC1PYyE= 84 | go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= 85 | go.uber.org/goleak v1.1.11 h1:wy28qYRKZgnJTxGxvye5/wgWr1EKjmUDGYox5mGlRlI= 86 | go.uber.org/goleak v1.1.11/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= 87 | go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= 88 | go.uber.org/multierr v1.9.0 h1:7fIwc/ZtS0q++VgcfqFDxSBZVv/Xo49/SYnDFupUwlI= 89 | go.uber.org/multierr v1.9.0/go.mod h1:X2jQV1h+kxSjClGpnseKVIxpmcjrj7MNnI0bnlfKTVQ= 90 | go.uber.org/zap v1.21.0 h1:WefMeulhovoZ2sYXz7st6K0sLj7bBhpiFaud4r4zST8= 91 | go.uber.org/zap v1.21.0/go.mod h1:wjWOCqI0f2ZZrJF/UufIOkiC8ii6tm1iqIsLo76RfJw= 92 | golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= 93 | golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= 94 | golang.org/x/exp v0.0.0-20230905200255-921286631fa9 h1:GoHiUyI/Tp2nVkLI2mCxVkOjsbSXD66ic0XW0js0R9g= 95 | golang.org/x/exp v0.0.0-20230905200255-921286631fa9/go.mod h1:S2oDrQGGwySpoQPVqRShND87VCbxmc6bL1Yd2oYrm6k= 96 | golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= 97 | golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= 98 | golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= 99 | golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= 100 | golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= 101 | golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= 102 | golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= 103 | golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= 104 | golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= 105 | golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 106 | golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 107 | golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 108 | golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= 109 | golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4= 110 | golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= 111 | golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= 112 | golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= 113 | golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= 114 | golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= 115 | golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= 116 | golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= 117 | golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= 118 | golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= 119 | golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= 120 | golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= 121 | golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= 122 | golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= 123 | gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= 124 | gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= 125 | gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= 126 | gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= 127 | gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= 128 | gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= 129 | gopkg.in/yaml.v2 v2.2.8 h1:obN1ZagJSUGI0Ek/LBmuj4SNLPfIny3KsKFopxRdj10= 130 | gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= 131 | gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= 132 | gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= 133 | gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= 134 | gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= 135 | -------------------------------------------------------------------------------- /chickcoop/auto/main.go: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | import ( 4 | "chickcoop/constant" 5 | "chickcoop/request" 6 | "fmt" 7 | "github.com/go-resty/resty/v2" 8 | "github.com/newrelic/go-agent/v3/newrelic" 9 | "github.com/spf13/viper" 10 | "go.uber.org/zap" 11 | "go.uber.org/zap/zapcore" 12 | "time" 13 | ) 14 | 15 | var logger *zap.Logger 16 | var app *newrelic.Application 17 | 18 | func main() { 19 | 20 | config := zap.NewDevelopmentConfig() 21 | config.EncoderConfig.EncodeLevel = zapcore.CapitalColorLevelEncoder 22 | logger, _ = config.Build() 23 | 24 | viper.SetConfigFile("./conf.toml") 25 | err := viper.ReadInConfig() // Find and read the config file 26 | if err != nil { // Handle errors reading the config file 27 | panic(fmt.Errorf("fatal error config file: %w", err)) 28 | } 29 | 30 | tokens := viper.GetStringSlice("auth.tokens") 31 | proxies := viper.GetStringSlice("proxies.data") 32 | for i, token := range tokens { 33 | proxy := proxies[i%len(proxies)] 34 | go process(token, proxy, i) 35 | 36 | } 37 | select {} 38 | } 39 | 40 | func process(query, proxy string, idx int) { 41 | client := resty.New().SetProxy(proxy). 42 | SetHeader("authorization", query). 43 | SetHeader("accept", "*/*"). 44 | SetHeader("accept-language", "en-US,en;q=0.5"). 45 | SetHeader("origin", "https://game.chickcoop.io"). 46 | SetHeader("priority", "u=1, i"). 47 | SetHeader("referer", "https://game.chickcoop.io/"). 48 | SetHeader("sec-ch-ua", `"Not)A;Brand";v="99", "Brave";v="127", "Chromium";v="127"`). 49 | SetHeader("sec-ch-ua-mobile", "?0"). 50 | SetHeader("sec-ch-ua-platform", `"macOS"`). 51 | SetHeader("sec-fetch-dest", "empty"). 52 | SetHeader("sec-fetch-mode", "cors"). 53 | SetHeader("sec-fetch-site", "same-site"). 54 | SetHeader("sec-gpc", "1"). 55 | SetHeader("user-agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36") 56 | 57 | lastUpgradeEgg := time.Now() 58 | lastSpin := time.Now() 59 | lastDailyCheckin := time.Now() 60 | captchaURL := viper.GetString("captcha.server") 61 | for { 62 | 63 | // ================ FARM ================ 64 | var state request.Response 65 | res, err := client. 66 | R(). 67 | SetResult(&state). 68 | Get(constant.GetStateAPI) 69 | if err != nil { 70 | logger.Error("Get state error", zap.Any("idx", idx), zap.Error(err)) 71 | continue 72 | } 73 | // UPGRADE EGG + AUO 74 | 75 | // ZONE FARM 76 | 77 | if time.Now().Sub(lastUpgradeEgg) > time.Hour { 78 | lastUpgradeEgg = time.Now() 79 | res, err := client. 80 | R(). 81 | SetBody(request.ResearchAPIRequest{ResearchType: constant.ResearchTypeEggValue}). 82 | SetResult(&state). 83 | Post(constant.ResearchAPI) 84 | if err != nil { 85 | logger.Error("Try to upgrade egg value error", zap.Any("idx", idx), zap.Error(err)) 86 | } else { 87 | logger.Info("Try to upgrade egg value : account ", zap.Any("idx", idx), zap.Any("state", res)) 88 | 89 | } 90 | 91 | res, err = client. 92 | R(). 93 | SetBody(request.ResearchAPIRequest{ResearchType: constant.ResearchTypeLayingRate}). 94 | SetResult(&state). 95 | Post(constant.ResearchAPI) 96 | if err != nil { 97 | logger.Error("Try to upgrade laying rate error", zap.Any("idx", idx), zap.Error(err)) 98 | } else { 99 | logger.Info("Try to upgrade laying rate : account ", zap.Any("idx", idx), zap.Any("state", res)) 100 | 101 | } 102 | // AUTO HATCH 103 | 104 | if !state.Data.Eggs.HatchingRate.IsAuto { 105 | res, err = client. 106 | R(). 107 | SetResult(&state). 108 | Post(constant.AutoHatchAPI) 109 | if err != nil { 110 | logger.Error("Try to enable auto error", zap.Any("idx", idx), zap.Error(err)) 111 | } else { 112 | logger.Info("Try to enable auto : account ", zap.Any("idx", idx), zap.Any("state", res)) 113 | 114 | } 115 | } else { 116 | var nextLevelResponse request.NextLevelResponse 117 | 118 | res, err := client. 119 | R(). 120 | SetResult(&nextLevelResponse). 121 | Get(constant.UpgradeNextLevelAutoHatch) 122 | if err != nil { 123 | logger.Error("Get cost to upgrade auto hatch error", zap.Any("idx", idx), zap.Error(err)) 124 | } else { 125 | logger.Info("Get cost to upgrade auto hatch : account ", zap.Any("idx", idx), zap.Any("state", res)) 126 | 127 | if nextLevelResponse.Ok && state.Data.Gem >= nextLevelResponse.Data.Price { 128 | res, err := client. 129 | R(). 130 | SetResult(&state). 131 | Post(constant.UpgradeAutoHatch) 132 | if err != nil { 133 | logger.Error("Try to upgrade auto hatch error", zap.Any("idx", idx), zap.Error(err)) 134 | } else { 135 | logger.Info("Try to upgrade auto hatch : account ", zap.Any("idx", idx), zap.Any("state", res)) 136 | 137 | } 138 | } 139 | 140 | } 141 | 142 | } 143 | 144 | } 145 | 146 | // DAILY 147 | if time.Now().Sub(lastDailyCheckin) > 12*time.Hour { 148 | body := struct { 149 | ID string `json:"id"` 150 | Name string `json:"name"` 151 | GemsReward int `json:"gemsReward"` 152 | Achieved bool `json:"achieved"` 153 | Rewarded bool `json:"rewarded"` 154 | }{ 155 | ID: "daily.checkin", 156 | Name: "Check in game", 157 | GemsReward: 5, 158 | Achieved: true, 159 | Rewarded: false, 160 | } 161 | 162 | lastUpgradeEgg = time.Now() 163 | res, err := client. 164 | R(). 165 | SetBody(body). 166 | Post(constant.ClaimDailyAPI) 167 | if err != nil { 168 | logger.Error("Try to check in error", zap.Any("idx", idx), zap.Error(err)) 169 | } else { 170 | logger.Info("Try to check in : account ", zap.Any("idx", idx), zap.Any("state", res)) 171 | 172 | } 173 | lastDailyCheckin = time.Now() 174 | 175 | } 176 | // =========== SPIN =============== 177 | 178 | if time.Now().Sub(lastSpin) > time.Hour { 179 | var spinResult request.SpinResult 180 | lastUpgradeEgg = time.Now() 181 | res, err := client. 182 | R(). 183 | SetBody(request.SpinRequest{Mode: constant.SpinModeFree}). 184 | SetResult(&spinResult). 185 | Post(constant.SpinAPI) 186 | if err != nil { 187 | logger.Error("Try to tak a spin error", zap.Any("idx", idx), zap.Error(err)) 188 | } else { 189 | logger.Info("Try to take a spin : account ", zap.Any("idx", idx), zap.Any("state", res)) 190 | 191 | } 192 | 193 | if spinResult.Ok { 194 | res, err = client. 195 | R(). 196 | SetBody(spinResult). 197 | Post(constant.ClaimSpinAPI) 198 | if err != nil { 199 | logger.Error("Try to claim the spin result error", zap.Any("idx", idx), zap.Error(err)) 200 | } else { 201 | logger.Info("Try to the spin result : account ", zap.Any("idx", idx), zap.Any("state", res)) 202 | 203 | } 204 | } 205 | lastSpin = time.Now() 206 | 207 | } 208 | // =========== random gift =============== 209 | 210 | if state.Data.RandomGift != nil { 211 | res, err := client. 212 | R(). 213 | SetBody(state). 214 | SetResult(&state). 215 | Post(constant.GiftClaimAPI) 216 | if err != nil { 217 | logger.Error("claim gift error", zap.Any("idx", idx), zap.Error(err)) 218 | continue 219 | } 220 | logger.Info("Claim gift: account ", zap.Any("idx", idx), zap.Any("gift", res)) 221 | } 222 | 223 | // =========== upgrade egg =============== 224 | 225 | if state.Data.Discovery.AvailableToUpgrade { 226 | state.Data.Discovery.Level++ 227 | state.Data.Discovery.AvailableToUpgrade = false 228 | 229 | res, err := client. 230 | R(). 231 | SetBody(state). 232 | SetResult(&state). 233 | Post(constant.UpgradelevelAPI) 234 | if err != nil { 235 | logger.Error("Upgrade egg error", zap.Any("idx", idx), zap.Error(err)) 236 | continue 237 | } 238 | logger.Info("Upgrade egg level: account ", zap.Any("idx", idx), zap.Any("egg", res)) 239 | 240 | } 241 | // =========== upgrade capacity =============== 242 | 243 | if state.Data.FarmCapacity.NeedToUpgrade { 244 | 245 | res, err := client. 246 | R(). 247 | SetBody(request.ResearchAPIRequest{ResearchType: constant.ResearchTypeFarmCapacity}). 248 | SetResult(&state). 249 | Post(constant.ResearchAPI) 250 | if err != nil { 251 | logger.Error("Upgrade farm capacity error", zap.Any("idx", idx), zap.Error(err)) 252 | continue 253 | } 254 | logger.Info("Upgrade farm capacity : account ", zap.Any("idx", idx), zap.Any("state", res)) 255 | 256 | } 257 | 258 | // =========== manual hatch =============== 259 | hatchTxn := app.StartTransaction("hatch-egg") 260 | state.Data.Chickens.Quantity++ 261 | 262 | res, err = client. 263 | R(). 264 | SetBody(state). 265 | SetResult(&state). 266 | Post(constant.HatchAPI) 267 | if err != nil { 268 | hatchTxn.NoticeError(err) 269 | logger.Error("Hatch error", zap.Any("idx", idx), zap.Error(err)) 270 | continue 271 | } 272 | if state.Ok { 273 | logger.Info("Hatch account ", zap.Any("idx", idx), zap.Any("status", state.Ok)) 274 | } else { 275 | logger.Error("Hatch account error", zap.Any("idx", idx), zap.Any("error", res)) 276 | captchaTxn := app.StartTransaction("verify-captcha") 277 | 278 | //========== TRY TO VERIFY CAPTCHA ================= 279 | var challenge request.ChallengeResponse 280 | _, err := client. 281 | R(). 282 | SetResult(&challenge). 283 | Get(constant.GetChallenge) 284 | if err != nil { 285 | captchaTxn.NoticeError(err) 286 | logger.Error("Get challenge error", zap.Any("idx", idx), zap.Error(err)) 287 | continue 288 | } 289 | if challenge.Ok { 290 | logger.Info("Bypass captcha - doing : ", zap.Any("idx", idx)) 291 | res, err = resty.New(). 292 | R(). 293 | SetBody(challenge.Data.Challenge). 294 | SetResult(&challenge). 295 | Post(captchaURL) 296 | logger.Info("Detect captcha - result : ", zap.Any("idx", idx), zap.Any("res", res.String())) 297 | 298 | res, err = client. 299 | R(). 300 | SetBody(res.String()). 301 | SetResult(&challenge). 302 | Post(constant.VerifyChallenge) 303 | logger.Info("Bypass captcha - result : ", zap.Any("idx", idx), zap.Any("res", res.String())) 304 | //========== TRY TO VERIFY CAPTCHA ================= 305 | } 306 | captchaTxn.End() 307 | 308 | } 309 | hatchTxn.End() 310 | 311 | // ================ END FARM ================ 312 | // ================ LAND ==================== 313 | 314 | var landState request.LandState 315 | res, err = client. 316 | R(). 317 | SetResult(&landState). 318 | Get(constant.GetLandStateAPI) 319 | if err != nil { 320 | logger.Error("Get land state error", zap.Any("idx", idx), zap.Error(err)) 321 | continue 322 | } 323 | 324 | for _, s := range landState.Data.Land.Normal { 325 | if s.State != "available" { 326 | continue 327 | } 328 | wateringBody := request.WateringRequest{ 329 | TileID: s.ID, 330 | } 331 | 332 | if s.Plant != nil && time.Now().UnixMilli() >= s.Plant.HarvestAt { 333 | res, err = client. 334 | R(). 335 | SetBody(wateringBody). 336 | SetResult(&landState). 337 | Post(constant.HarvestAPI) 338 | if err != nil { 339 | logger.Error("Get land state error", zap.Any("idx", idx), zap.Error(err)) 340 | continue 341 | } 342 | } 343 | 344 | if s.Plant == nil { 345 | body := request.PurchaseSeedRequest{ 346 | PlantID: "flower.Daisy", 347 | Quantity: 1, 348 | } 349 | res, err = client. 350 | R(). 351 | SetBody(body). 352 | SetResult(&landState). 353 | Post(constant.PurchaseSeedsAPI) 354 | if err != nil { 355 | logger.Error("PurchaseSeedsAPI error", zap.Any("idx", idx), zap.Error(err)) 356 | continue 357 | } 358 | logger.Info("PurchaseSeedsAPI success", zap.Any("idx", idx), zap.Any("res", res)) 359 | 360 | putInBody := request.PutInRequest{ 361 | PlantID: "flower.Daisy", 362 | TileID: s.ID, 363 | } 364 | res, err = client. 365 | R(). 366 | SetBody(putInBody). 367 | SetResult(&landState). 368 | Post(constant.PutInAPI) 369 | if err != nil { 370 | logger.Error("PutInAPI error", zap.Any("idx", idx), zap.Error(err)) 371 | continue 372 | } 373 | logger.Info("Putin success", zap.Any("idx", idx), zap.Any("res", res)) 374 | 375 | res, err = client. 376 | R(). 377 | SetBody(wateringBody). 378 | SetResult(&landState). 379 | Post(constant.WateringAPI) 380 | if err != nil { 381 | logger.Error("WateringAPI error", zap.Any("idx", idx), zap.Error(err)) 382 | continue 383 | } 384 | logger.Info("Watering success", zap.Any("idx", idx), zap.Any("res", res)) 385 | 386 | } 387 | 388 | } 389 | 390 | // ================ END LAND ================ 391 | 392 | time.Sleep(3 * time.Second) 393 | } 394 | } 395 | -------------------------------------------------------------------------------- /blum/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "area-games", 3 | "version": "1.0.0", 4 | "lockfileVersion": 3, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "area-games", 9 | "version": "1.0.0", 10 | "license": "ISC", 11 | "dependencies": { 12 | "axios": "^1.7.2", 13 | "colors": "^1.4.0", 14 | "https-proxy-agent": "^7.0.5", 15 | "luxon": "^3.4.4", 16 | "moment": "^2.30.1", 17 | "readline": "^1.3.0", 18 | "yargs": "^17.7.2" 19 | } 20 | }, 21 | "node_modules/agent-base": { 22 | "version": "7.1.1", 23 | "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", 24 | "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", 25 | "dependencies": { 26 | "debug": "^4.3.4" 27 | }, 28 | "engines": { 29 | "node": ">= 14" 30 | } 31 | }, 32 | "node_modules/ansi-regex": { 33 | "version": "5.0.1", 34 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 35 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 36 | "engines": { 37 | "node": ">=8" 38 | } 39 | }, 40 | "node_modules/ansi-styles": { 41 | "version": "4.3.0", 42 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 43 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 44 | "dependencies": { 45 | "color-convert": "^2.0.1" 46 | }, 47 | "engines": { 48 | "node": ">=8" 49 | }, 50 | "funding": { 51 | "url": "https://github.com/chalk/ansi-styles?sponsor=1" 52 | } 53 | }, 54 | "node_modules/asynckit": { 55 | "version": "0.4.0", 56 | "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", 57 | "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" 58 | }, 59 | "node_modules/axios": { 60 | "version": "1.7.2", 61 | "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.2.tgz", 62 | "integrity": "sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw==", 63 | "dependencies": { 64 | "follow-redirects": "^1.15.6", 65 | "form-data": "^4.0.0", 66 | "proxy-from-env": "^1.1.0" 67 | } 68 | }, 69 | "node_modules/cliui": { 70 | "version": "8.0.1", 71 | "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", 72 | "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", 73 | "dependencies": { 74 | "string-width": "^4.2.0", 75 | "strip-ansi": "^6.0.1", 76 | "wrap-ansi": "^7.0.0" 77 | }, 78 | "engines": { 79 | "node": ">=12" 80 | } 81 | }, 82 | "node_modules/color-convert": { 83 | "version": "2.0.1", 84 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 85 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 86 | "dependencies": { 87 | "color-name": "~1.1.4" 88 | }, 89 | "engines": { 90 | "node": ">=7.0.0" 91 | } 92 | }, 93 | "node_modules/color-name": { 94 | "version": "1.1.4", 95 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 96 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" 97 | }, 98 | "node_modules/colors": { 99 | "version": "1.4.0", 100 | "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", 101 | "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", 102 | "engines": { 103 | "node": ">=0.1.90" 104 | } 105 | }, 106 | "node_modules/combined-stream": { 107 | "version": "1.0.8", 108 | "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", 109 | "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", 110 | "dependencies": { 111 | "delayed-stream": "~1.0.0" 112 | }, 113 | "engines": { 114 | "node": ">= 0.8" 115 | } 116 | }, 117 | "node_modules/debug": { 118 | "version": "4.3.5", 119 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", 120 | "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", 121 | "dependencies": { 122 | "ms": "2.1.2" 123 | }, 124 | "engines": { 125 | "node": ">=6.0" 126 | }, 127 | "peerDependenciesMeta": { 128 | "supports-color": { 129 | "optional": true 130 | } 131 | } 132 | }, 133 | "node_modules/delayed-stream": { 134 | "version": "1.0.0", 135 | "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", 136 | "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", 137 | "engines": { 138 | "node": ">=0.4.0" 139 | } 140 | }, 141 | "node_modules/emoji-regex": { 142 | "version": "8.0.0", 143 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 144 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" 145 | }, 146 | "node_modules/escalade": { 147 | "version": "3.2.0", 148 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", 149 | "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", 150 | "engines": { 151 | "node": ">=6" 152 | } 153 | }, 154 | "node_modules/follow-redirects": { 155 | "version": "1.15.6", 156 | "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", 157 | "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", 158 | "funding": [ 159 | { 160 | "type": "individual", 161 | "url": "https://github.com/sponsors/RubenVerborgh" 162 | } 163 | ], 164 | "engines": { 165 | "node": ">=4.0" 166 | }, 167 | "peerDependenciesMeta": { 168 | "debug": { 169 | "optional": true 170 | } 171 | } 172 | }, 173 | "node_modules/form-data": { 174 | "version": "4.0.0", 175 | "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", 176 | "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", 177 | "dependencies": { 178 | "asynckit": "^0.4.0", 179 | "combined-stream": "^1.0.8", 180 | "mime-types": "^2.1.12" 181 | }, 182 | "engines": { 183 | "node": ">= 6" 184 | } 185 | }, 186 | "node_modules/get-caller-file": { 187 | "version": "2.0.5", 188 | "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", 189 | "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", 190 | "engines": { 191 | "node": "6.* || 8.* || >= 10.*" 192 | } 193 | }, 194 | "node_modules/https-proxy-agent": { 195 | "version": "7.0.5", 196 | "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", 197 | "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", 198 | "dependencies": { 199 | "agent-base": "^7.0.2", 200 | "debug": "4" 201 | }, 202 | "engines": { 203 | "node": ">= 14" 204 | } 205 | }, 206 | "node_modules/is-fullwidth-code-point": { 207 | "version": "3.0.0", 208 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 209 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", 210 | "engines": { 211 | "node": ">=8" 212 | } 213 | }, 214 | "node_modules/luxon": { 215 | "version": "3.4.4", 216 | "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.4.4.tgz", 217 | "integrity": "sha512-zobTr7akeGHnv7eBOXcRgMeCP6+uyYsczwmeRCauvpvaAltgNyTbLH/+VaEAPUeWBT+1GuNmz4wC/6jtQzbbVA==", 218 | "engines": { 219 | "node": ">=12" 220 | } 221 | }, 222 | "node_modules/mime-db": { 223 | "version": "1.52.0", 224 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", 225 | "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", 226 | "engines": { 227 | "node": ">= 0.6" 228 | } 229 | }, 230 | "node_modules/mime-types": { 231 | "version": "2.1.35", 232 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", 233 | "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", 234 | "dependencies": { 235 | "mime-db": "1.52.0" 236 | }, 237 | "engines": { 238 | "node": ">= 0.6" 239 | } 240 | }, 241 | "node_modules/moment": { 242 | "version": "2.30.1", 243 | "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz", 244 | "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==", 245 | "engines": { 246 | "node": "*" 247 | } 248 | }, 249 | "node_modules/ms": { 250 | "version": "2.1.2", 251 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 252 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 253 | }, 254 | "node_modules/proxy-from-env": { 255 | "version": "1.1.0", 256 | "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", 257 | "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" 258 | }, 259 | "node_modules/readline": { 260 | "version": "1.3.0", 261 | "resolved": "https://registry.npmjs.org/readline/-/readline-1.3.0.tgz", 262 | "integrity": "sha512-k2d6ACCkiNYz222Fs/iNze30rRJ1iIicW7JuX/7/cozvih6YCkFZH+J6mAFDVgv0dRBaAyr4jDqC95R2y4IADg==" 263 | }, 264 | "node_modules/require-directory": { 265 | "version": "2.1.1", 266 | "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", 267 | "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", 268 | "engines": { 269 | "node": ">=0.10.0" 270 | } 271 | }, 272 | "node_modules/string-width": { 273 | "version": "4.2.3", 274 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 275 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 276 | "dependencies": { 277 | "emoji-regex": "^8.0.0", 278 | "is-fullwidth-code-point": "^3.0.0", 279 | "strip-ansi": "^6.0.1" 280 | }, 281 | "engines": { 282 | "node": ">=8" 283 | } 284 | }, 285 | "node_modules/strip-ansi": { 286 | "version": "6.0.1", 287 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 288 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 289 | "dependencies": { 290 | "ansi-regex": "^5.0.1" 291 | }, 292 | "engines": { 293 | "node": ">=8" 294 | } 295 | }, 296 | "node_modules/wrap-ansi": { 297 | "version": "7.0.0", 298 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", 299 | "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", 300 | "dependencies": { 301 | "ansi-styles": "^4.0.0", 302 | "string-width": "^4.1.0", 303 | "strip-ansi": "^6.0.0" 304 | }, 305 | "engines": { 306 | "node": ">=10" 307 | }, 308 | "funding": { 309 | "url": "https://github.com/chalk/wrap-ansi?sponsor=1" 310 | } 311 | }, 312 | "node_modules/y18n": { 313 | "version": "5.0.8", 314 | "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", 315 | "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", 316 | "engines": { 317 | "node": ">=10" 318 | } 319 | }, 320 | "node_modules/yargs": { 321 | "version": "17.7.2", 322 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", 323 | "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", 324 | "dependencies": { 325 | "cliui": "^8.0.1", 326 | "escalade": "^3.1.1", 327 | "get-caller-file": "^2.0.5", 328 | "require-directory": "^2.1.1", 329 | "string-width": "^4.2.3", 330 | "y18n": "^5.0.5", 331 | "yargs-parser": "^21.1.1" 332 | }, 333 | "engines": { 334 | "node": ">=12" 335 | } 336 | }, 337 | "node_modules/yargs-parser": { 338 | "version": "21.1.1", 339 | "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", 340 | "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", 341 | "engines": { 342 | "node": ">=12" 343 | } 344 | } 345 | } 346 | } 347 | -------------------------------------------------------------------------------- /chickcoop/auto/go.sum: -------------------------------------------------------------------------------- 1 | github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLju8= 2 | github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= 3 | github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= 4 | github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= 5 | github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= 6 | github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= 7 | github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8= 8 | github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= 9 | github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= 10 | github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= 11 | github.com/go-resty/resty/v2 v2.11.0 h1:i7jMfNOJYMp69lq7qozJP+bjgzfAzeOhuGlyDrqxT/8= 12 | github.com/go-resty/resty/v2 v2.11.0/go.mod h1:iiP/OpA0CkcL3IGt1O0+/SIItFUbkkyw5BGXiVdTu+A= 13 | github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= 14 | github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= 15 | github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= 16 | github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= 17 | github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= 18 | github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= 19 | github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= 20 | github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= 21 | github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= 22 | github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= 23 | github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= 24 | github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= 25 | github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= 26 | github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= 27 | github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= 28 | github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= 29 | github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= 30 | github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= 31 | github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= 32 | github.com/newrelic/go-agent/v3 v3.34.0 h1:jhtX+YUrAh2ddgPGIixMYq4+nCBrEN4ETGyi2h/zWJw= 33 | github.com/newrelic/go-agent/v3 v3.34.0/go.mod h1:VNsi+XA7YsgF4fHES8l/U6OhAHhU3IdLDFkB/wpevvA= 34 | github.com/pelletier/go-toml/v2 v2.2.2 h1:aYUidT7k73Pcl9nb2gScu7NSrKCSHIDE89b3+6Wq+LM= 35 | github.com/pelletier/go-toml/v2 v2.2.2/go.mod h1:1t835xjRzz80PqgE6HHgN2JOsmgYu/h4qDAS4n929Rs= 36 | github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= 37 | github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= 38 | github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= 39 | github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= 40 | github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= 41 | github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= 42 | github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8= 43 | github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= 44 | github.com/sagikazarmark/locafero v0.4.0 h1:HApY1R9zGo4DBgr7dqsTH/JJxLTTsOt7u6keLGt6kNQ= 45 | github.com/sagikazarmark/locafero v0.4.0/go.mod h1:Pe1W6UlPYUk/+wc/6KFhbORCfqzgYEpgQ3O5fPuL3H4= 46 | github.com/sagikazarmark/slog-shim v0.1.0 h1:diDBnUNK9N/354PgrxMywXnAwEr1QZcOr6gto+ugjYE= 47 | github.com/sagikazarmark/slog-shim v0.1.0/go.mod h1:SrcSrq8aKtyuqEI1uvTDTK1arOWRIczQRv+GVI1AkeQ= 48 | github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo= 49 | github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0= 50 | github.com/spf13/afero v1.11.0 h1:WJQKhtpdm3v2IzqG8VMqrr6Rf3UYpEF239Jy9wNepM8= 51 | github.com/spf13/afero v1.11.0/go.mod h1:GH9Y3pIexgf1MTIWtNGyogA5MwRIDXGUr+hbWNoBjkY= 52 | github.com/spf13/cast v1.6.0 h1:GEiTHELF+vaR5dhz3VqZfFSzZjYbgeKDpBxQVS4GYJ0= 53 | github.com/spf13/cast v1.6.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= 54 | github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= 55 | github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= 56 | github.com/spf13/viper v1.19.0 h1:RWq5SEjt8o25SROyN3z2OrDB9l7RPd3lwTWU8EcEdcI= 57 | github.com/spf13/viper v1.19.0/go.mod h1:GQUN9bilAbhU/jgc1bKs99f/suXKeUMct8Adx5+Ntkg= 58 | github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= 59 | github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= 60 | github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= 61 | github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= 62 | github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= 63 | github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= 64 | github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= 65 | github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= 66 | github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= 67 | github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= 68 | github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= 69 | github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8= 70 | github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU= 71 | github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= 72 | github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= 73 | go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= 74 | go.uber.org/atomic v1.9.0 h1:ECmE8Bn/WFTYwEW/bpKD3M8VtR/zQVbavAoalC1PYyE= 75 | go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= 76 | go.uber.org/goleak v1.1.11 h1:wy28qYRKZgnJTxGxvye5/wgWr1EKjmUDGYox5mGlRlI= 77 | go.uber.org/goleak v1.1.11/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= 78 | go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= 79 | go.uber.org/multierr v1.9.0 h1:7fIwc/ZtS0q++VgcfqFDxSBZVv/Xo49/SYnDFupUwlI= 80 | go.uber.org/multierr v1.9.0/go.mod h1:X2jQV1h+kxSjClGpnseKVIxpmcjrj7MNnI0bnlfKTVQ= 81 | go.uber.org/zap v1.21.0 h1:WefMeulhovoZ2sYXz7st6K0sLj7bBhpiFaud4r4zST8= 82 | go.uber.org/zap v1.21.0/go.mod h1:wjWOCqI0f2ZZrJF/UufIOkiC8ii6tm1iqIsLo76RfJw= 83 | golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= 84 | golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= 85 | golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= 86 | golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= 87 | golang.org/x/exp v0.0.0-20230905200255-921286631fa9 h1:GoHiUyI/Tp2nVkLI2mCxVkOjsbSXD66ic0XW0js0R9g= 88 | golang.org/x/exp v0.0.0-20230905200255-921286631fa9/go.mod h1:S2oDrQGGwySpoQPVqRShND87VCbxmc6bL1Yd2oYrm6k= 89 | golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= 90 | golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= 91 | golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= 92 | golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= 93 | golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= 94 | golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= 95 | golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= 96 | golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= 97 | golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= 98 | golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= 99 | golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= 100 | golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= 101 | golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= 102 | golang.org/x/net v0.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs= 103 | golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= 104 | golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= 105 | golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= 106 | golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= 107 | golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= 108 | golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= 109 | golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 110 | golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 111 | golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 112 | golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= 113 | golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= 114 | golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= 115 | golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= 116 | golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= 117 | golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= 118 | golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= 119 | golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4= 120 | golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= 121 | golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= 122 | golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= 123 | golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= 124 | golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= 125 | golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U= 126 | golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= 127 | golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= 128 | golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= 129 | golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= 130 | golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= 131 | golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= 132 | golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= 133 | golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= 134 | golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= 135 | golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk= 136 | golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= 137 | golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= 138 | golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= 139 | golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= 140 | golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= 141 | golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= 142 | golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= 143 | golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= 144 | golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= 145 | golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= 146 | golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= 147 | google.golang.org/genproto/googleapis/rpc v0.0.0-20240314234333-6e1732d8331c h1:lfpJ/2rWPa/kJgxyyXM8PrNnfCzcmxJ265mADgwmvLI= 148 | google.golang.org/genproto/googleapis/rpc v0.0.0-20240314234333-6e1732d8331c/go.mod h1:WtryC6hu0hhx87FDGxWCDptyssuo68sk10vYjF+T9fY= 149 | google.golang.org/grpc v1.62.1 h1:B4n+nfKzOICUXMgyrNd19h/I9oH0L1pizfk1d4zSgTk= 150 | google.golang.org/grpc v1.62.1/go.mod h1:IWTG0VlJLCh1SkC58F7np9ka9mx/WNkjl4PGJaiq+QE= 151 | google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= 152 | google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= 153 | google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= 154 | google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= 155 | gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= 156 | gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= 157 | gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= 158 | gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= 159 | gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= 160 | gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= 161 | gopkg.in/yaml.v2 v2.2.8 h1:obN1ZagJSUGI0Ek/LBmuj4SNLPfIny3KsKFopxRdj10= 162 | gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= 163 | gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= 164 | gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= 165 | gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= 166 | gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= 167 | -------------------------------------------------------------------------------- /memefi/app_noproxy.py: -------------------------------------------------------------------------------- 1 | import aiohttp 2 | import asyncio 3 | import json 4 | import random 5 | import string 6 | import time 7 | from datetime import datetime 8 | from urllib.parse import unquote 9 | from utils.headers import headers_set 10 | from utils.query import QUERY_USER, QUERY_LOGIN, MUTATION_GAME_PROCESS_TAPS_BATCH, QUERY_BOOSTER, QUERY_NEXT_BOSS 11 | from utils.query import QUERY_TASK_VERIF, QUERY_TASK_COMPLETED, QUERY_GET_TASK, QUERY_TASK_ID, QUERY_GAME_CONFIG 12 | 13 | url = "https://api-gw-tg.memefi.club/graphql" 14 | 15 | def generate_random_nonce(length=52): 16 | characters = string.ascii_letters + string.digits 17 | return ''.join(random.choice(characters) for _ in range(length)) 18 | 19 | async def fetch(account_line, proxy, proxy_check_results): 20 | with open('query_id.txt', 'r') as file: 21 | lines = file.readlines() 22 | raw_data = lines[account_line - 1].strip() 23 | 24 | tg_web_data = unquote(unquote(raw_data)) 25 | query_id = tg_web_data.split('query_id=', maxsplit=1)[1].split('&user', maxsplit=1)[0] 26 | user_data = tg_web_data.split('user=', maxsplit=1)[1].split('&auth_date', maxsplit=1)[0] 27 | auth_date = tg_web_data.split('auth_date=', maxsplit=1)[1].split('&hash', maxsplit=1)[0] 28 | hash_ = tg_web_data.split('hash=', maxsplit=1)[1].split('&', maxsplit=1)[0] 29 | 30 | user_data_dict = json.loads(unquote(user_data)) 31 | 32 | url = 'https://api-gw-tg.memefi.club/graphql' 33 | headers = headers_set.copy() 34 | data = { 35 | "operationName": "MutationTelegramUserLogin", 36 | "variables": { 37 | "webAppData": { 38 | "auth_date": int(auth_date), 39 | "hash": hash_, 40 | "query_id": query_id, 41 | "checkDataString": f"auth_date={auth_date}\nquery_id={query_id}\nuser={unquote(user_data)}", 42 | "user": { 43 | "id": user_data_dict["id"], 44 | "allows_write_to_pm": user_data_dict["allows_write_to_pm"], 45 | "first_name": user_data_dict["first_name"], 46 | "last_name": user_data_dict["last_name"], 47 | "username": user_data_dict.get("username", "Username không được đặt"), 48 | "language_code": user_data_dict["language_code"], 49 | "version": "7.2", 50 | "platform": "ios" 51 | } 52 | } 53 | }, 54 | "query": QUERY_LOGIN 55 | } 56 | 57 | async with aiohttp.ClientSession() as session: 58 | async with session.post(url, headers=headers, json=data, proxy=proxy) as response: 59 | try: 60 | json_response = await response.json() 61 | if 'errors' in json_response: 62 | return None 63 | else: 64 | access_token = json_response['data']['telegramUserLogin']['access_token'] 65 | return access_token 66 | except aiohttp.ContentTypeError: 67 | print("Không thể giải mã JSON") 68 | return None, None 69 | 70 | async def check_user(index, proxy, proxy_check_results): 71 | result = await fetch(index + 1, proxy, proxy_check_results) 72 | if not result: 73 | return None, None 74 | 75 | access_token = result 76 | 77 | url = "https://api-gw-tg.memefi.club/graphql" 78 | 79 | headers = headers_set.copy() 80 | headers['Authorization'] = f'Bearer {access_token}' 81 | 82 | json_payload = { 83 | "operationName": "QueryTelegramUserMe", 84 | "variables": {}, 85 | "query": QUERY_USER 86 | } 87 | 88 | async with aiohttp.ClientSession() as session: 89 | async with session.post(url, headers=headers, json=json_payload, proxy=proxy) as response: 90 | if response.status == 200: 91 | response_data = await response.json() 92 | if 'errors' in response_data: 93 | print(f"❌ Lỗi Query ID Sai") 94 | return None, None 95 | else: 96 | user_data = response_data['data']['telegramUserMe'] 97 | return user_data 98 | else: 99 | print(response) 100 | print(f"❌ Lỗi với trạng thái {response.status}, thử lại...") 101 | return None, None 102 | 103 | async def activate_energy_recharge_booster(index, headers, proxy, proxy_check_results): 104 | result = await fetch(index + 1, proxy, proxy_check_results) 105 | if not result: 106 | return None 107 | 108 | access_token = result 109 | 110 | url = "https://api-gw-tg.memefi.club/graphql" 111 | 112 | headers = headers_set.copy() 113 | headers['Authorization'] = f'Bearer {access_token}' 114 | 115 | recharge_booster_payload = { 116 | "operationName": "telegramGameActivateBooster", 117 | "variables": {"boosterType": "Recharge"}, 118 | "query": QUERY_BOOSTER 119 | } 120 | 121 | async with aiohttp.ClientSession() as session: 122 | async with session.post(url, headers=headers, json=recharge_booster_payload, proxy=proxy) as response: 123 | if response.status == 200: 124 | response_data = await response.json() 125 | if response_data and 'data' in response_data and response_data['data'] and 'telegramGameActivateBooster' in response_data['data']: 126 | new_energy = response_data['data']['telegramGameActivateBooster']['currentEnergy'] 127 | print(f"\nNạp năng lượng thành công. Năng lượng hiện tại: {new_energy}") 128 | else: 129 | print("❌ Không thể kích hoạt Recharge Booster: Dữ liệu không đầy đủ hoặc không có.") 130 | else: 131 | print(f"❌ Gặp sự cố với mã trạng thái {response.status}, thử lại...") 132 | return None 133 | 134 | async def activate_booster(index, headers, proxy, proxy_check_results): 135 | result = await fetch(index + 1, proxy, proxy_check_results) 136 | if not result: 137 | return None 138 | 139 | access_token = result 140 | 141 | url = "https://api-gw-tg.memefi.club/graphql" 142 | print("\r🚀 Kích hoạt Turbo Boost... ", end="", flush=True) 143 | 144 | headers = headers_set.copy() 145 | headers['Authorization'] = f'Bearer {access_token}' 146 | 147 | recharge_booster_payload = { 148 | "operationName": "telegramGameActivateBooster", 149 | "variables": {"boosterType": "Turbo"}, 150 | "query": QUERY_BOOSTER 151 | } 152 | async with aiohttp.ClientSession() as session: 153 | async with session.post(url, headers=headers, json=recharge_booster_payload, proxy=proxy) as response: 154 | if response.status == 200: 155 | response_data = await response.json() 156 | current_health = response_data['data']['telegramGameActivateBooster']['currentBoss']['currentHealth'] 157 | if current_health == 0: 158 | print("\nBoss đã bị hạ gục, chuyển boss tiếp theo...") 159 | await set_next_boss(index, headers, proxy, proxy_check_results) 160 | else: 161 | total_hit = 3000 162 | tap_payload = { 163 | "operationName": "MutationGameProcessTapsBatch", 164 | "variables": { 165 | "payload": { 166 | "nonce": generate_random_nonce(), 167 | "tapsCount": total_hit 168 | } 169 | }, 170 | "query": MUTATION_GAME_PROCESS_TAPS_BATCH 171 | } 172 | for _ in range(25): 173 | tap_result = await submit_taps(index, tap_payload, proxy, proxy_check_results) 174 | if tap_result is not None: 175 | if 'data' in tap_result and 'telegramGameProcessTapsBatch' in tap_result['data']: 176 | tap_data = tap_result['data']['telegramGameProcessTapsBatch'] 177 | if tap_data['currentBoss']['currentHealth'] == 0: 178 | print("\nBoss đã bị hạ gục, chuyển boss tiếp theo...") 179 | await set_next_boss(index, headers, proxy, proxy_check_results) 180 | print(f"\rĐang tap memefi: {tap_data['coinsAmount']}, Boss ⚔️: {tap_data['currentBoss']['currentHealth']} - {tap_data['currentBoss']['maxHealth']} ") 181 | else: 182 | print(f"❌ Gặp sự cố với mã trạng thái {tap_result}, thử lại...") 183 | print(f"URL: {url}") 184 | print(f"Headers: {headers}") 185 | response_text = await response.text() 186 | print(f"Response: {response_text}") 187 | 188 | else: 189 | print(f"❌ Gặp sự cố với mã trạng thái {response.status}, thử lại...") 190 | print(f"URL: {url}") 191 | print(f"Headers: {headers}") 192 | print(f"Payload: {json_payload}") 193 | 194 | response_text = await response.text() 195 | print(f"Response: {response_text}") 196 | return None 197 | 198 | async def submit_taps(index, json_payload, proxy, proxy_check_results): 199 | result = await fetch(index + 1, proxy, proxy_check_results) 200 | if not result: 201 | return None 202 | 203 | access_token = result 204 | 205 | url = "https://api-gw-tg.memefi.club/graphql" 206 | 207 | headers = headers_set.copy() 208 | headers['Authorization'] = f'Bearer {access_token}' 209 | 210 | async with aiohttp.ClientSession() as session: 211 | while True: 212 | async with session.post(url, headers=headers, json=json_payload, proxy=proxy) as response: 213 | if response.status == 200: 214 | response_data = await response.json() 215 | if response_data.get("data") and response_data["data"].get("telegramGameProcessTapsBatch"): 216 | json_payload["variables"]["payload"]["nonce"] = generate_random_nonce() 217 | return response_data 218 | else: 219 | return response_data 220 | else: 221 | return response 222 | 223 | 224 | async def set_next_boss(index, headers, proxy, proxy_check_results): 225 | result = await fetch(index + 1, proxy, proxy_check_results) 226 | if not result: 227 | return None 228 | 229 | access_token = result 230 | 231 | url = "https://api-gw-tg.memefi.club/graphql" 232 | 233 | headers = headers_set.copy() 234 | headers['Authorization'] = f'Bearer {access_token}' 235 | 236 | json_payload = { 237 | "operationName": "telegramGameSetNextBoss", 238 | "variables": {}, 239 | "query": QUERY_NEXT_BOSS 240 | } 241 | 242 | async with aiohttp.ClientSession() as session: 243 | async with session.post(url, headers=headers, json=json_payload, proxy=proxy) as response: 244 | if response.status == 200: 245 | response_data = await response.json() 246 | if response_data and 'data' in response_data: 247 | print("Boss tiếp theo đã được đặt thành công!") 248 | return response_data 249 | else: 250 | print("❌ Không thể đặt Boss tiếp theo: Dữ liệu không đầy đủ hoặc không có.") 251 | return None 252 | else: 253 | print(f"❌ Gặp sự cố với mã trạng thái {response.status}, thử lại...") 254 | print(f"URL: {url}") 255 | print(f"Headers: {headers}") 256 | print(f"Payload: {json_payload}") 257 | 258 | response_text = await response.text() 259 | print(f"Response: {response_text}") 260 | return None 261 | 262 | 263 | 264 | async def check_stat(index, headers, proxy, proxy_check_results): 265 | result = await fetch(index + 1, proxy, proxy_check_results) 266 | if not result: 267 | return None 268 | 269 | access_token = result 270 | 271 | url = "https://api-gw-tg.memefi.club/graphql" 272 | 273 | headers = headers_set.copy() 274 | headers['Authorization'] = f'Bearer {access_token}' 275 | 276 | json_payload = { 277 | "operationName": "QUERY_GAME_CONFIG", 278 | "variables": {}, 279 | "query": QUERY_GAME_CONFIG 280 | } 281 | 282 | async with aiohttp.ClientSession() as session: 283 | async with session.post(url, headers=headers, json=json_payload, proxy=proxy) as response: 284 | if response.status == 200: 285 | response_data = await response.json() 286 | if 'errors' in response_data: 287 | return None 288 | else: 289 | user_data = response_data['data']['telegramGameGetConfig'] 290 | return user_data 291 | else: 292 | print(response) 293 | print(f"❌ Lỗi với trạng thái {response.status}, thử lại...") 294 | return None 295 | 296 | async def main(): 297 | print("Bắt đầu Memefi bot...") 298 | 299 | while True: 300 | with open('query_id.txt', 'r') as file: 301 | lines = file.readlines() 302 | 303 | accounts = [] 304 | for index, line in enumerate(lines): 305 | result = await check_user(index, None, None) 306 | if result is not None: 307 | first_name = result.get('firstName', 'Unknown') 308 | last_name = result.get('lastName', 'Unknown') 309 | accounts.append((index, result, first_name, last_name)) 310 | else: 311 | print(f"❌ Tài khoản {index + 1}: Token không hợp lệ hoặc có lỗi xảy ra") 312 | 313 | print("\rDanh sách tài khoản:", flush=True) 314 | for index, _, first_name, last_name in accounts: 315 | print(f"✅ [ Tài khoản {first_name} {last_name} ] ") 316 | 317 | for index, result, first_name, last_name in accounts: 318 | headers = {'Authorization': f'Bearer {result}'} 319 | stat_result = await check_stat(index, headers, None, None) 320 | 321 | if stat_result is not None: 322 | user_data = stat_result 323 | output = ( 324 | f"[ Tài khoản {index + 1} - {first_name} {last_name} ]\n" 325 | f"Balance 💎 {user_data['coinsAmount']} Năng lượng : {user_data['currentEnergy']} / {user_data['maxEnergy']}\n" 326 | f"Boss LV {user_data['currentBoss']['level']} ❤️ {user_data['currentBoss']['currentHealth']} - {user_data['currentBoss']['maxHealth']}\n" 327 | f"Turbo {user_data['freeBoosts']['currentTurboAmount']} Recharge {user_data['freeBoosts']['currentRefillEnergyAmount']}\n" 328 | ) 329 | print(output, end="", flush=True) 330 | lv_boss = user_data['currentBoss']['level'] 331 | mau_boss = user_data['currentBoss']['currentHealth'] 332 | 333 | if lv_boss == 11 and mau_boss == 0: 334 | print(f"\n=================== {first_name} {last_name} KẾT THÚC ====================") 335 | continue 336 | if mau_boss == 0: 337 | print("\nBoss đã bị hạ gục, chuyển boss tiếp theo...", flush=True) 338 | await set_next_boss(index, headers, None, None) 339 | print("\rBắt đầu tap\n", end="", flush=True) 340 | 341 | energy_now = user_data['currentEnergy'] 342 | recharge_available = user_data['freeBoosts']['currentRefillEnergyAmount'] 343 | while energy_now > 500 or recharge_available > 0: 344 | total_tap = random.randint(100, 200) 345 | tap_payload = { 346 | "operationName": "MutationGameProcessTapsBatch", 347 | "variables": { 348 | "payload": { 349 | "nonce": generate_random_nonce(), 350 | "tapsCount": total_tap 351 | } 352 | }, 353 | "query": MUTATION_GAME_PROCESS_TAPS_BATCH 354 | } 355 | 356 | tap_result = await submit_taps(index, tap_payload, None, None) 357 | if tap_result is not None: 358 | user_data = await check_stat(index, headers, None, None) 359 | energy_now = user_data['currentEnergy'] 360 | recharge_available = user_data['freeBoosts']['currentRefillEnergyAmount'] 361 | print(f"\rĐang tap Memefi : Balance 💎 {user_data['coinsAmount']} Năng lượng : {energy_now} / {user_data['maxEnergy']}\n") 362 | else: 363 | print(f"❌ Lỗi với trạng thái {tap_result}, thử lại...") 364 | 365 | if energy_now < 500: 366 | if recharge_available > 0: 367 | print("\rHết năng lượng, kích hoạt Recharge... \n", end="", flush=True) 368 | await activate_energy_recharge_booster(index, headers, None, None) 369 | user_data = await check_stat(index, headers, None, None) 370 | energy_now = user_data['currentEnergy'] 371 | recharge_available = user_data['freeBoosts']['currentRefillEnergyAmount'] 372 | else: 373 | print("Năng lượng dưới 500 và không còn Recharge, chuyển sang tài khoản tiếp theo.") 374 | break 375 | 376 | if user_data['freeBoosts']['currentTurboAmount'] > 0: 377 | await activate_booster(index, headers, None, None) 378 | print("=== [ TẤT CẢ TÀI KHOẢN ĐÃ ĐƯỢC XỬ LÝ ] ===") 379 | 380 | animate_energy_recharge(600) 381 | 382 | def animate_energy_recharge(duration): 383 | frames = ["|", "/", "-", "\\"] 384 | end_time = time.time() + duration 385 | while time.time() < end_time: 386 | remaining_time = int(end_time - time.time()) 387 | for frame in frames: 388 | print(f"\rĐang nạp lại năng lượng {frame} - Còn lại {remaining_time} giây", end="", flush=True) 389 | time.sleep(0.25) 390 | print("\rNạp năng lượng hoàn thành.\n", flush=True) 391 | 392 | asyncio.run(main()) 393 | --------------------------------------------------------------------------------